RgbwPacketFormatter.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include <PacketFormatter.h>
  2. #ifndef _RGBW_PACKET_FORMATTER_H
  3. #define _RGBW_PACKET_FORMATTER_H
  4. #define RGBW_PROTOCOL_ID_BYTE 0xB0
  5. enum MiLightRgbwButton {
  6. RGBW_ALL_ON = 0x01,
  7. RGBW_ALL_OFF = 0x02,
  8. RGBW_GROUP_1_ON = 0x03,
  9. RGBW_GROUP_1_OFF = 0x04,
  10. RGBW_GROUP_2_ON = 0x05,
  11. RGBW_GROUP_2_OFF = 0x06,
  12. RGBW_GROUP_3_ON = 0x07,
  13. RGBW_GROUP_3_OFF = 0x08,
  14. RGBW_GROUP_4_ON = 0x09,
  15. RGBW_GROUP_4_OFF = 0x0A,
  16. RGBW_SPEED_UP = 0x0B,
  17. RGBW_SPEED_DOWN = 0x0C,
  18. RGBW_DISCO_MODE = 0x0D,
  19. RGBW_BRIGHTNESS = 0x0E,
  20. RGBW_COLOR = 0x0F,
  21. RGBW_ALL_MAX_LEVEL = 0x11,
  22. RGBW_ALL_MIN_LEVEL = 0x12,
  23. // These are the only mechanism (that I know of) to disable RGB and set the
  24. // color to white.
  25. RGBW_GROUP_1_MAX_LEVEL = 0x13,
  26. RGBW_GROUP_1_MIN_LEVEL = 0x14,
  27. RGBW_GROUP_2_MAX_LEVEL = 0x15,
  28. RGBW_GROUP_2_MIN_LEVEL = 0x16,
  29. RGBW_GROUP_3_MAX_LEVEL = 0x17,
  30. RGBW_GROUP_3_MIN_LEVEL = 0x18,
  31. RGBW_GROUP_4_MAX_LEVEL = 0x19,
  32. RGBW_GROUP_4_MIN_LEVEL = 0x1A,
  33. RGBW_GROUP_ALL_NIGHT = 0x12,
  34. RGBW_GROUP_1_NIGHT = 0x14,
  35. RGBW_GROUP_2_NIGHT = 0x16,
  36. RGBW_GROUP_3_NIGHT = 0x18,
  37. RGBW_GROUP_4_NIGHT = 0x1A,
  38. };
  39. #define RGBW_COMMAND_INDEX 5
  40. #define RGBW_BRIGHTNESS_GROUP_INDEX 4
  41. #define RGBW_COLOR_INDEX 3
  42. #define RGBW_NUM_MODES 9
  43. class RgbwPacketFormatter : public PacketFormatter {
  44. public:
  45. RgbwPacketFormatter()
  46. : PacketFormatter(7),
  47. lastMode(0)
  48. { }
  49. virtual void updateStatus(MiLightStatus status, uint8_t groupId);
  50. virtual void updateBrightness(uint8_t value);
  51. virtual void command(uint8_t command, uint8_t arg);
  52. virtual void updateHue(uint16_t value);
  53. virtual void updateColorRaw(uint8_t value);
  54. virtual void updateColorWhite();
  55. virtual void format(uint8_t const* packet, char* buffer);
  56. virtual void unpair();
  57. virtual void modeSpeedDown();
  58. virtual void modeSpeedUp();
  59. virtual void nextMode();
  60. virtual void previousMode();
  61. virtual void updateMode(uint8_t mode);
  62. virtual void enableNightMode();
  63. virtual void parsePacket(const uint8_t* packet, JsonObject& result);
  64. virtual void initializePacket(uint8_t* packet);
  65. protected:
  66. uint8_t lastMode;
  67. };
  68. #endif