RgbCctPacketFormatter.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include <PacketFormatter.h>
  2. #define RGB_CCT_COMMAND_INDEX 4
  3. #define RGB_CCT_ARGUMENT_INDEX 5
  4. #define RGB_CCT_NUM_MODES 9
  5. #define RGB_CCT_PACKET_LEN 9
  6. #define RGB_CCT_COLOR_OFFSET 0x5F
  7. #define RGB_CCT_BRIGHTNESS_OFFSET 0x8F
  8. #define RGB_CCT_SATURATION_OFFSET 0xD
  9. #define RGB_CCT_KELVIN_OFFSET 0x94
  10. // Remotes have a larger range
  11. #define RGB_CCT_KELVIN_REMOTE_OFFSET 0x4C
  12. #define RGB_CCT_KELVIN_REMOTE_START 0xE8
  13. #ifndef _RGB_CCT_PACKET_FORMATTER_H
  14. #define _RGB_CCT_PACKET_FORMATTER_H
  15. enum MiLightRgbCctCommand {
  16. RGB_CCT_ON = 0x01,
  17. RGB_CCT_OFF = 0x01,
  18. RGB_CCT_COLOR = 0x02,
  19. RGB_CCT_KELVIN = 0x03,
  20. RGB_CCT_BRIGHTNESS = 0x04,
  21. RGB_CCT_SATURATION = 0x04,
  22. RGB_CCT_MODE = 0x05
  23. };
  24. enum MiLightRgbCctArguments {
  25. RGB_CCT_MODE_SPEED_UP = 0x0A,
  26. RGB_CCT_MODE_SPEED_DOWN = 0x0B
  27. };
  28. class RgbCctPacketFormatter : public PacketFormatter {
  29. public:
  30. RgbCctPacketFormatter()
  31. : PacketFormatter(RGB_CCT_PACKET_LEN),
  32. lastMode(0)
  33. { }
  34. virtual void initializePacket(uint8_t* packet);
  35. virtual void updateStatus(MiLightStatus status, uint8_t group);
  36. virtual void updateBrightness(uint8_t value);
  37. virtual void command(uint8_t command, uint8_t arg);
  38. virtual void updateHue(uint16_t value);
  39. virtual void updateColorRaw(uint8_t value);
  40. virtual void updateColorWhite();
  41. virtual void updateTemperature(uint8_t value);
  42. virtual void updateSaturation(uint8_t value);
  43. virtual void format(uint8_t const* packet, char* buffer);
  44. virtual void unpair();
  45. virtual void enableNightMode();
  46. virtual void modeSpeedDown();
  47. virtual void modeSpeedUp();
  48. virtual void updateMode(uint8_t mode);
  49. virtual void nextMode();
  50. virtual void previousMode();
  51. virtual void finalizePacket(uint8_t* packet);
  52. virtual void parsePacket(const uint8_t* packet, JsonObject& result);
  53. protected:
  54. uint8_t lastMode;
  55. };
  56. #endif