MiLightClient.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include <Arduino.h>
  2. #include <MiLightRadio.h>
  3. #include <PL1167_nRF24.h>
  4. #include <RF24.h>
  5. #include <MiLightButtons.h>
  6. #include <RadioStack.h>
  7. #ifndef _MILIGHTCLIENT_H
  8. #define _MILIGHTCLIENT_H
  9. #define MILIGHT_CCT_INTERVALS 10
  10. #define MILIGHT_DEFAULT_RESEND_COUNT 10
  11. #define NUM_RADIOS 3
  12. class MiLightClient {
  13. public:
  14. MiLightClient(uint8_t cePin, uint8_t csnPin)
  15. : rf(RF24(cePin, csnPin)),
  16. resendCount(MILIGHT_DEFAULT_RESEND_COUNT),
  17. currentRadio(NULL)
  18. {
  19. size_t ix = 0;
  20. radios = new RadioStack*[NUM_RADIOS];
  21. radios[ix++] = new RadioStack(rf, MilightRgbwConfig);
  22. radios[ix++] = new RadioStack(rf, MilightCctConfig);
  23. radios[ix++] = new RadioStack(rf, MilightRgbCctConfig);
  24. currentRadio = radios[0];
  25. currentRadio->getRadio()->configure();
  26. }
  27. ~MiLightClient() {
  28. delete[] radios;
  29. }
  30. void begin() {
  31. for (size_t i = 0; i < NUM_RADIOS; i++) {
  32. radios[i]->getRadio()->begin();
  33. }
  34. }
  35. void prepare(MiLightRadioConfig& config, const uint16_t deviceId = -1, const uint8_t groupId = -1);
  36. void setResendCount(const unsigned int resendCount);
  37. bool available();
  38. void read(uint8_t packet[]);
  39. void write(uint8_t packet[]);
  40. // Common methods
  41. void updateStatus(MiLightStatus status);
  42. void updateStatus(MiLightStatus status, uint8_t groupId);
  43. void pair();
  44. void unpair();
  45. void command(uint8_t command, uint8_t arg);
  46. // RGBW methods
  47. void updateHue(const uint16_t hue);
  48. void updateBrightness(const uint8_t brightness);
  49. void updateColorWhite();
  50. void updateColorRaw(const uint8_t color);
  51. // CCT methods
  52. void updateTemperature(const uint8_t colorTemperature);
  53. void decreaseTemperature();
  54. void increaseTemperature();
  55. void increaseBrightness();
  56. void decreaseBrightness();
  57. void updateSaturation(const uint8_t saturation);
  58. void formatPacket(uint8_t* packet, char* buffer);
  59. protected:
  60. RF24 rf;
  61. RadioStack** radios;
  62. RadioStack* currentRadio;
  63. PacketFormatter* formatter;
  64. unsigned int resendCount;
  65. MiLightRadio* switchRadio(const MiLightRadioType type);
  66. void flushPacket();
  67. };
  68. #endif