|
@@ -5,6 +5,29 @@
|
|
|
#include "rxTimer.h"
|
|
|
#include <string.h>
|
|
|
|
|
|
+/**
|
|
|
+ * @Analys of Toshiba IR Rx:
|
|
|
+ * 0 1 2 3 4 5 6 7 8
|
|
|
+ * F2 0D 03 FC 01 D0 A3 00 72 30 Grader
|
|
|
+ * F2 0D 03 FC 01 90 A3 00 32 26 Grader
|
|
|
+ * F2 0D 03 FC 01 40 A3 00 E2 21 Grader
|
|
|
+ * F2 0D 03 FC 01 30 A3 00 92 20 Grader
|
|
|
+ * F2 0D 03 FC 01 20 A3 00 82 19 Grader
|
|
|
+ * F2 0D 03 FC 01 10 A3 00 B2 18
|
|
|
+ * F2 0D 03 FC 01 00 A3 00 A2 17
|
|
|
+ *
|
|
|
+ * F2 0D 03 FC 01 D0 03 00 D2 Auto Fan 0000 0 (0 is Auto, 2-6 is the speed, 6 is Max)
|
|
|
+ * F2 0D 03 FC 01 D0 43 00 92 1 0100 2
|
|
|
+ * 2 0110 3
|
|
|
+ * F2 0D 03 FC 01 D0 83 00 52 3 1000 4
|
|
|
+ * 4 1010 5
|
|
|
+ * F2 0D 03 FC 01 D0 C3 00 12 5 1100 6
|
|
|
+ *
|
|
|
+ * F2 0D 03 FC 01 60 83 00 E2 ON 1000 0011 (3 is ON, 7 is OFF)
|
|
|
+ * F2 0D 03 FC 01 60 87 00 E6 OFF 1000 0111
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
// Toshiba A/C
|
|
|
const uint16_t kToshibaAcHdrMark = 4400;
|
|
|
const uint16_t kToshibaAcHdrSpace = 4480;
|
|
@@ -16,10 +39,9 @@ const uint16_t kToshibaAcZeroSpace = 530;
|
|
|
const uint16_t kToshibaAcMinGap = 4600; // WH-UB03NJ remote
|
|
|
const uint16_t kToshibaAcUsualGap = 7400; // Others
|
|
|
|
|
|
-#define kToshibaNumberOfBits 72
|
|
|
-#define kToshibaNumberOfBytes (kToshibaNumberOfBits/8)
|
|
|
|
|
|
-uint8_t data[kToshibaNumberOfBytes];
|
|
|
+uint8_t data[kToshibaNumberOfBytes]; // Temp data during rx
|
|
|
+uint8_t dataTransfer[kToshibaNumberOfBytes]; // Send as pointer to receiver
|
|
|
|
|
|
enum
|
|
|
{
|
|
@@ -37,7 +59,7 @@ static uint32_t rx_numBits;
|
|
|
|
|
|
void Toshiba_ir_ResetDecoder()
|
|
|
{
|
|
|
- ESP_LOGI("T", "Reset decoder");
|
|
|
+ //ESP_LOGI("T", "Reset decoder");
|
|
|
rx_numBits = kToshibaNumberOfBits;
|
|
|
rx_state = UNKNOWN;
|
|
|
memset(data,0,kToshibaNumberOfBytes);
|
|
@@ -105,12 +127,12 @@ static int32_t rx_decode(uint32_t width)
|
|
|
|
|
|
if(rx_numBits == 0)
|
|
|
{ // end of frame
|
|
|
- ESP_LOGI("T", "END OF FRAME");
|
|
|
+ //ESP_LOGI("T", "END OF FRAME");
|
|
|
rx_state = DONE;
|
|
|
|
|
|
- for(uint8_t i=9; i>0 ;i--) {
|
|
|
+ /*for(uint8_t i=9; i>0 ;i--) {
|
|
|
ESP_LOGI("DATA","Byte %u : %02x", i-1, data[i-1]);
|
|
|
- }
|
|
|
+ }*/
|
|
|
return 1;
|
|
|
}
|
|
|
else if( T0_PULSE_MIN <= width && width <= T0_PULSE_MAX )
|
|
@@ -145,9 +167,11 @@ static int32_t rx_decode(uint32_t width)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int64_t nextPulseToshiba_ir(uint32_t width)
|
|
|
+
|
|
|
+
|
|
|
+uint8_t* nextPulseToshiba_ir(uint32_t width)
|
|
|
{
|
|
|
- int64_t retVal = -1;
|
|
|
+ uint8_t* retVal = NULL;
|
|
|
|
|
|
if (width > 0)
|
|
|
{
|
|
@@ -160,14 +184,13 @@ int64_t nextPulseToshiba_ir(uint32_t width)
|
|
|
break;
|
|
|
case 1:
|
|
|
rx_state = DONE;
|
|
|
+ memcpy(dataTransfer,data,kToshibaNumberOfBytes);
|
|
|
+ Toshiba_ir_ResetDecoder();
|
|
|
+ retVal = dataTransfer;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (rx_state == DONE) {
|
|
|
-
|
|
|
- Toshiba_ir_ResetDecoder();
|
|
|
- }
|
|
|
|
|
|
return retVal;
|
|
|
}
|