MiLightClient.h 2.1 KB

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