MiLightClient.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include <functional>
  2. #include <Arduino.h>
  3. #include <MiLightRadio.h>
  4. #include <MiLightRadioFactory.h>
  5. #include <MiLightButtons.h>
  6. #include <Settings.h>
  7. #ifndef _MILIGHTCLIENT_H
  8. #define _MILIGHTCLIENT_H
  9. //#define DEBUG_PRINTF
  10. #define MILIGHT_DEFAULT_RESEND_COUNT 10
  11. //Used to determine close to white
  12. #define RGB_WHITE_BOUNDARY 40
  13. class MiLightClient {
  14. public:
  15. MiLightClient(MiLightRadioFactory* radioFactory);
  16. ~MiLightClient() {
  17. delete[] radios;
  18. }
  19. typedef std::function<void(uint8_t* packet, const MiLightRadioConfig& config)> PacketSentHandler;
  20. void begin();
  21. void prepare(MiLightRadioConfig& config, const uint16_t deviceId = -1, const uint8_t groupId = -1);
  22. void prepare(MiLightRadioType config, const uint16_t deviceId = -1, const uint8_t groupId = -1);
  23. void setResendCount(const unsigned int resendCount);
  24. bool available();
  25. void read(uint8_t packet[]);
  26. void write(uint8_t packet[]);
  27. void setHeld(bool held);
  28. // Common methods
  29. void updateStatus(MiLightStatus status);
  30. void updateStatus(MiLightStatus status, uint8_t groupId);
  31. void pair();
  32. void unpair();
  33. void command(uint8_t command, uint8_t arg);
  34. void updateMode(uint8_t mode);
  35. void nextMode();
  36. void previousMode();
  37. void modeSpeedDown();
  38. void modeSpeedUp();
  39. // RGBW methods
  40. void updateHue(const uint16_t hue);
  41. void updateBrightness(const uint8_t brightness);
  42. void updateColorWhite();
  43. void updateColorRaw(const uint8_t color);
  44. void enableNightMode();
  45. // CCT methods
  46. void updateTemperature(const uint8_t colorTemperature);
  47. void decreaseTemperature();
  48. void increaseTemperature();
  49. void increaseBrightness();
  50. void decreaseBrightness();
  51. void updateSaturation(const uint8_t saturation);
  52. void formatPacket(uint8_t* packet, char* buffer);
  53. void update(const JsonObject& object);
  54. void handleCommand(const String& command);
  55. void handleEffect(const String& effect);
  56. void onPacketSent(PacketSentHandler handler);
  57. protected:
  58. MiLightRadio** radios;
  59. MiLightRadio* currentRadio;
  60. PacketFormatter* formatter;
  61. const size_t numRadios;
  62. unsigned int resendCount;
  63. PacketSentHandler packetSentHandler;
  64. MiLightRadio* switchRadio(const MiLightRadioType type);
  65. uint8_t parseStatus(const JsonObject& object);
  66. void flushPacket();
  67. };
  68. #endif