RgbCctPacketFormatter.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include <PacketFormatter.h>
  2. #define RGB_CCT_COMMAND_INDEX 4
  3. #define RGB_CCT_ARGUMENT_INDEX 5
  4. #define V2_OFFSET_JUMP_START 0x54
  5. #ifndef _RGB_CCT_PACKET_FORMATTER_H
  6. #define _RGB_CCT_PACKET_FORMATTER_H
  7. class RgbCctPacketFormatter : public PacketFormatter {
  8. public:
  9. static uint8_t const V2_OFFSETS[][4];
  10. RgbCctPacketFormatter()
  11. : PacketFormatter(9)
  12. { }
  13. virtual void initializePacket(uint8_t* packet);
  14. virtual void updateStatus(MiLightStatus status, uint8_t group);
  15. virtual void updateBrightness(uint8_t value);
  16. virtual void command(uint8_t command, uint8_t arg);
  17. virtual void updateHue(uint16_t value);
  18. virtual void updateColorRaw(uint8_t value);
  19. virtual void updateColorWhite();
  20. virtual void updateTemperature(uint8_t value);
  21. virtual void updateSaturation(uint8_t value);
  22. virtual void format(uint8_t const* packet, char* buffer);
  23. virtual void finalizePacket(uint8_t* packet);
  24. static void encodeV2Packet(uint8_t* packet);
  25. static void decodeV2Packet(uint8_t* packet);
  26. static uint8_t xorKey(uint8_t key);
  27. static uint8_t encodeByte(uint8_t byte, uint8_t s1, uint8_t xorKey, uint8_t s2);
  28. static uint8_t decodeByte(uint8_t byte, uint8_t s1, uint8_t xorKey, uint8_t s2);
  29. };
  30. #endif