FUT089PacketFormatter.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. updateColorWhite();
  25. command(FUT089_KELVIN, 100 - value);
  26. }
  27. void FUT089PacketFormatter::updateSaturation(uint8_t value) {
  28. command(FUT089_SATURATION, value);
  29. }
  30. void FUT089PacketFormatter::updateColorWhite() {
  31. command(FUT089_ON, FUT089_WHITE_MODE);
  32. }
  33. void FUT089PacketFormatter::enableNightMode() {
  34. uint8_t arg = groupCommandArg(OFF, groupId);
  35. command(FUT089_ON | 0x80, arg);
  36. }
  37. void FUT089PacketFormatter::parsePacket(const uint8_t *packet, JsonObject& result) {
  38. uint8_t packetCopy[V2_PACKET_LEN];
  39. memcpy(packetCopy, packet, V2_PACKET_LEN);
  40. V2RFEncoding::decodeV2Packet(packetCopy);
  41. result["device_id"] = (packetCopy[2] << 8) | packetCopy[3];
  42. result["group_id"] = packetCopy[7];
  43. result["device_type"] = "rgb_cct";
  44. if (! result.containsKey("state")) {
  45. result["state"] = "ON";
  46. }
  47. }