MiLightClient.h 1.7 KB

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