1
0

toshiba_ir.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef __TOSHIBA_IR__
  2. #define __TOSHIBA_IR__
  3. #include <stdbool.h>
  4. #include <stdint.h>
  5. void Toshiba_ir_ResetDecoder ();
  6. uint8_t* nextPulseToshiba_ir(uint32_t width);
  7. #define kToshibaNumberOfBits 72
  8. #define kToshibaNumberOfBytes (kToshibaNumberOfBits/8)
  9. struct toshibaDataBits {
  10. // Byte[0] - 0xF2
  11. uint8_t :8;
  12. // Byte[1] - 0x0D (inverted previous byte's value)
  13. uint8_t :8;
  14. // Byte[2] - The expected payload length (in bytes) past the Byte[4].
  15. ///< Known lengths are:
  16. ///< 1 (56 bit message)
  17. ///< 3 (72 bit message)
  18. ///< 4 (80 bit message)
  19. uint8_t Length :8;
  20. // Byte[3] - The bit-inverted value of the "length" byte.
  21. uint8_t :8;
  22. // Byte[4]
  23. uint8_t :3;
  24. uint8_t LongMsg :1;
  25. uint8_t :1;
  26. uint8_t ShortMsg :1;
  27. uint8_t :2;
  28. // Byte[5]
  29. uint8_t Swing :3;
  30. uint8_t :1;
  31. uint8_t Temp :4;
  32. // Byte[6]
  33. uint8_t Mode :3;
  34. uint8_t :2;
  35. uint8_t Fan :3;
  36. // Byte[7]
  37. uint8_t :4;
  38. uint8_t Filter :1;
  39. uint8_t :3;
  40. // Byte[8]
  41. // (Checksum for 72 bit messages, Eco/Turbo for long 80 bit messages)
  42. uint8_t EcoTurbo :8;
  43. };
  44. union ToshibaProtocolU {
  45. uint8_t raw[kToshibaNumberOfBytes]; ///< The state in code form.
  46. struct toshibaDataBits data;
  47. };
  48. #endif