toshiba_ir.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #ifndef __TOSHIBA_IR__
  2. #define __TOSHIBA_IR__
  3. #include <stdbool.h>
  4. #include <stdint.h>
  5. // Toshiba A/C
  6. /*
  7. #define kToshibaAcHdrMark ((uint32_t)4420)
  8. #define kToshibaAcHdrSpace ((uint32_t)4450)
  9. #define kToshibaAcBitMark ((uint32_t)570)
  10. #define kToshibaAcOneSpace ((uint32_t)1600)
  11. #define kToshibaAcZeroSpace ((uint32_t)510)
  12. #define kToshibaAcUsualGap ((uint32_t)7960)
  13. */
  14. /*
  15. Between two Panasonic IR Resends:
  16. I (8094) D: 410
  17. I (8094) D: 460
  18. I (8094) D: 9900
  19. I (8104) D: 3580
  20. I (8104) D: 1630
  21. I (8104) D: 500
  22. I (8104) D: 410
  23. I (8114) D: 460*/
  24. // Panasonic LZ35 A/C
  25. #define kPanasonicAcHdrMark ((uint32_t)3456)
  26. #define kPanasonicAcHdrSpace ((uint32_t)1728)
  27. #define kPanasonicAcBitMark ((uint32_t)432) // T0
  28. #define kPanasonicAcOneSpace ((uint32_t)1296) // T1
  29. #define kPanasonicAcZeroSpace ((uint32_t)432) // T1
  30. #define kPanasonicAcUsualGap ((uint32_t)9940) // (T1)
  31. #define kPanasonicNumberOfBits 152
  32. #define kPanasonicNumberOfBytes (kPanasonicNumberOfBits/8) // 19 Bytes
  33. void Toshiba_ir_ResetDecoder ();
  34. uint8_t* nextPulseToshiba_ir(uint32_t width);
  35. //#define kToshibaNumberOfBits 72
  36. //#define kToshibaNumberOfBytes (kToshibaNumberOfBits/8)
  37. struct toshibaDataBits {
  38. // Byte[0] - 0xF2
  39. uint8_t :8;
  40. // Byte[1] - 0x0D (inverted previous byte's value)
  41. uint8_t :8;
  42. // Byte[2] - The expected payload length (in bytes) past the Byte[4].
  43. ///< Known lengths are:
  44. ///< 1 (56 bit message)
  45. ///< 3 (72 bit message)
  46. ///< 4 (80 bit message)
  47. uint8_t Length :8;
  48. // Byte[3] - The bit-inverted value of the "length" byte.
  49. uint8_t :8;
  50. // Byte[4]
  51. uint8_t :3;
  52. uint8_t LongMsg :1;
  53. uint8_t :1;
  54. uint8_t ShortMsg :1;
  55. uint8_t :2;
  56. // Byte[5]
  57. uint8_t Swing :3;
  58. uint8_t :1;
  59. uint8_t Temp :4;
  60. // Byte[6]
  61. uint8_t Mode :3;
  62. uint8_t :2;
  63. uint8_t Fan :3;
  64. // Byte[7]
  65. uint8_t :4;
  66. uint8_t Filter :1;
  67. uint8_t :3;
  68. // Byte[8]
  69. // (Checksum for 72 bit messages, Eco/Turbo for long 80 bit messages)
  70. uint8_t EcoTurbo :8;
  71. };
  72. union ToshibaProtocolU {
  73. uint8_t raw[kPanasonicNumberOfBytes]; ///< The state in code form.
  74. struct toshibaDataBits data;
  75. };
  76. #endif