RgbCctPacketFormatter.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include <V2PacketFormatter.h>
  2. #ifndef _RGB_CCT_PACKET_FORMATTER_H
  3. #define _RGB_CCT_PACKET_FORMATTER_H
  4. #define RGB_CCT_NUM_MODES 9
  5. #define RGB_CCT_COLOR_OFFSET 0x5F
  6. #define RGB_CCT_BRIGHTNESS_OFFSET 0x8F
  7. #define RGB_CCT_SATURATION_OFFSET 0xD
  8. #define RGB_CCT_KELVIN_OFFSET 0x94
  9. // Remotes have a larger range
  10. #define RGB_CCT_KELVIN_REMOTE_START 0x94
  11. #define RGB_CCT_KELVIN_REMOTE_END 0xCC
  12. enum MiLightRgbCctCommand {
  13. RGB_CCT_ON = 0x01,
  14. RGB_CCT_OFF = 0x01,
  15. RGB_CCT_COLOR = 0x02,
  16. RGB_CCT_KELVIN = 0x03,
  17. RGB_CCT_BRIGHTNESS = 0x04,
  18. RGB_CCT_SATURATION = 0x04,
  19. RGB_CCT_MODE = 0x05
  20. };
  21. enum MiLightRgbCctArguments {
  22. RGB_CCT_MODE_SPEED_UP = 0x0A,
  23. RGB_CCT_MODE_SPEED_DOWN = 0x0B
  24. };
  25. class RgbCctPacketFormatter : public V2PacketFormatter {
  26. public:
  27. RgbCctPacketFormatter()
  28. : V2PacketFormatter(REMOTE_TYPE_RGB_CCT, 0x20, 4),
  29. lastMode(0)
  30. { }
  31. virtual void updateBrightness(uint8_t value);
  32. virtual void updateHue(uint16_t value);
  33. virtual void updateColorRaw(uint8_t value);
  34. virtual void updateColorWhite();
  35. virtual void updateTemperature(uint8_t value);
  36. virtual void updateSaturation(uint8_t value);
  37. virtual void enableNightMode();
  38. virtual void modeSpeedDown();
  39. virtual void modeSpeedUp();
  40. virtual void updateMode(uint8_t mode);
  41. virtual void nextMode();
  42. virtual void previousMode();
  43. virtual BulbId parsePacket(const uint8_t* packet, JsonObject& result);
  44. protected:
  45. uint8_t lastMode;
  46. };
  47. #endif