RgbwPacketFormatter.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. };
  34. #define RGBW_COMMAND_INDEX 5
  35. #define RGBW_BRIGHTNESS_GROUP_INDEX 4
  36. #define RGBW_COLOR_INDEX 3
  37. #define RGBW_NUM_MODES 9
  38. class RgbwPacketFormatter : public PacketFormatter {
  39. public:
  40. RgbwPacketFormatter()
  41. : PacketFormatter(7),
  42. lastMode(0)
  43. { }
  44. virtual void updateStatus(MiLightStatus status, uint8_t groupId);
  45. virtual void updateBrightness(uint8_t value);
  46. virtual void command(uint8_t command, uint8_t arg);
  47. virtual void updateHue(uint16_t value);
  48. virtual void updateColorRaw(uint8_t value);
  49. virtual void updateColorWhite();
  50. virtual void format(uint8_t const* packet, char* buffer);
  51. virtual void unpair();
  52. virtual void modeSpeedDown();
  53. virtual void modeSpeedUp();
  54. virtual void nextMode();
  55. virtual void previousMode();
  56. virtual void updateMode(uint8_t mode);
  57. virtual void enableNightMode();
  58. virtual void parsePacket(const uint8_t* packet, JsonObject& result, GroupStateStore* stateStore);
  59. virtual void initializePacket(uint8_t* packet);
  60. protected:
  61. uint8_t lastMode;
  62. static bool isStatusCommand(const uint8_t command);
  63. };
  64. #endif