#ifndef __TOSHIBA_IR__ #define __TOSHIBA_IR__ #include #include // Toshiba A/C /* #define kToshibaAcHdrMark ((uint32_t)4420) #define kToshibaAcHdrSpace ((uint32_t)4450) #define kToshibaAcBitMark ((uint32_t)570) #define kToshibaAcOneSpace ((uint32_t)1600) #define kToshibaAcZeroSpace ((uint32_t)510) #define kToshibaAcUsualGap ((uint32_t)7960) */ /* Between two Panasonic IR Resends: I (8094) D: 410 I (8094) D: 460 I (8094) D: 9900 I (8104) D: 3580 I (8104) D: 1630 I (8104) D: 500 I (8104) D: 410 I (8114) D: 460*/ // Panasonic LZ35 A/C #define kPanasonicAcHdrMark ((uint32_t)3456) #define kPanasonicAcHdrSpace ((uint32_t)1728) #define kPanasonicAcBitMark ((uint32_t)432) // T0 #define kPanasonicAcOneSpace ((uint32_t)1296) // T1 #define kPanasonicAcZeroSpace ((uint32_t)432) // T1 #define kPanasonicAcUsualGap ((uint32_t)9940) // (T1) #define kPanasonicNumberOfBits 152 #define kPanasonicNumberOfBytes (kPanasonicNumberOfBits/8) // 19 Bytes void Toshiba_ir_ResetDecoder (); uint8_t* nextPulseToshiba_ir(uint32_t width); //#define kToshibaNumberOfBits 72 //#define kToshibaNumberOfBytes (kToshibaNumberOfBits/8) struct toshibaDataBits { // Byte[0] - 0xF2 uint8_t :8; // Byte[1] - 0x0D (inverted previous byte's value) uint8_t :8; // Byte[2] - The expected payload length (in bytes) past the Byte[4]. ///< Known lengths are: ///< 1 (56 bit message) ///< 3 (72 bit message) ///< 4 (80 bit message) uint8_t Length :8; // Byte[3] - The bit-inverted value of the "length" byte. uint8_t :8; // Byte[4] uint8_t :3; uint8_t LongMsg :1; uint8_t :1; uint8_t ShortMsg :1; uint8_t :2; // Byte[5] uint8_t Swing :3; uint8_t :1; uint8_t Temp :4; // Byte[6] uint8_t Mode :3; uint8_t :2; uint8_t Fan :3; // Byte[7] uint8_t :4; uint8_t Filter :1; uint8_t :3; // Byte[8] // (Checksum for 72 bit messages, Eco/Turbo for long 80 bit messages) uint8_t EcoTurbo :8; }; union ToshibaProtocolU { uint8_t raw[kPanasonicNumberOfBytes]; ///< The state in code form. struct toshibaDataBits data; }; #endif