FUT089PacketFormatter.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <FUT089PacketFormatter.h>
  2. #include <V2RFEncoding.h>
  3. #include <Units.h>
  4. void FUT089PacketFormatter::modeSpeedDown() {
  5. command(FUT089_ON, FUT089_MODE_SPEED_DOWN);
  6. }
  7. void FUT089PacketFormatter::modeSpeedUp() {
  8. command(FUT089_ON, FUT089_MODE_SPEED_UP);
  9. }
  10. void FUT089PacketFormatter::updateMode(uint8_t mode) {
  11. command(FUT089_MODE, mode);
  12. }
  13. void FUT089PacketFormatter::updateBrightness(uint8_t brightness) {
  14. command(FUT089_BRIGHTNESS, brightness);
  15. }
  16. void FUT089PacketFormatter::updateHue(uint16_t value) {
  17. uint8_t remapped = Units::rescale(value, 255, 360);
  18. updateColorRaw(remapped);
  19. }
  20. void FUT089PacketFormatter::updateColorRaw(uint8_t value) {
  21. command(FUT089_COLOR, FUT089_COLOR_OFFSET + value);
  22. }
  23. void FUT089PacketFormatter::updateTemperature(uint8_t value) {
  24. command(FUT089_KELVIN, value);
  25. }
  26. void FUT089PacketFormatter::updateSaturation(uint8_t value) {
  27. command(FUT089_SATURATION, value);
  28. }
  29. void FUT089PacketFormatter::updateColorWhite() {
  30. command(FUT089_ON, FUT089_WHITE_MODE);
  31. }
  32. void FUT089PacketFormatter::enableNightMode() {
  33. uint8_t arg = groupCommandArg(OFF, groupId);
  34. command(FUT089_ON | 0x80, arg);
  35. }
  36. void FUT089PacketFormatter::parsePacket(const uint8_t *packet, JsonObject& result) {
  37. uint8_t packetCopy[V2_PACKET_LEN];
  38. memcpy(packetCopy, packet, V2_PACKET_LEN);
  39. V2RFEncoding::decodeV2Packet(packetCopy);
  40. result["device_id"] = (packetCopy[2] << 8) | packetCopy[3];
  41. result["group_id"] = packetCopy[7];
  42. result["device_type"] = "rgb_cct";
  43. if (! result.containsKey("state")) {
  44. result["state"] = "ON";
  45. }
  46. }