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