MiLightClient.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 DEBUG_PRINTF
  10. #define MILIGHT_DEFAULT_RESEND_COUNT 10
  11. class MiLightClient {
  12. public:
  13. MiLightClient(uint8_t cePin, uint8_t csnPin)
  14. : rf(RF24(cePin, csnPin)),
  15. resendCount(MILIGHT_DEFAULT_RESEND_COUNT),
  16. currentRadio(NULL),
  17. numRadios(MiLightRadioConfig::NUM_CONFIGS)
  18. {
  19. radios = new RadioStack*[numRadios];
  20. for (size_t i = 0; i < numRadios; i++) {
  21. radios[i] = new RadioStack(rf, *MiLightRadioConfig::ALL_CONFIGS[i]);
  22. }
  23. currentRadio = radios[0];
  24. currentRadio->getRadio()->configure();
  25. }
  26. ~MiLightClient() {
  27. delete[] radios;
  28. }
  29. void begin() {
  30. for (size_t i = 0; i < numRadios; i++) {
  31. radios[i]->getRadio()->begin();
  32. }
  33. }
  34. void prepare(MiLightRadioConfig& config, const uint16_t deviceId = -1, const uint8_t groupId = -1);
  35. void setResendCount(const unsigned int resendCount);
  36. bool available();
  37. void read(uint8_t packet[]);
  38. void write(uint8_t packet[]);
  39. // Common methods
  40. void updateStatus(MiLightStatus status);
  41. void updateStatus(MiLightStatus status, uint8_t groupId);
  42. void pair();
  43. void unpair();
  44. void command(uint8_t command, uint8_t arg);
  45. void updateMode(uint8_t mode);
  46. void nextMode();
  47. void previousMode();
  48. void modeSpeedDown();
  49. void modeSpeedUp();
  50. // RGBW methods
  51. void updateHue(const uint16_t hue);
  52. void updateBrightness(const uint8_t brightness);
  53. void updateColorWhite();
  54. void updateColorRaw(const uint8_t color);
  55. // CCT methods
  56. void updateTemperature(const uint8_t colorTemperature);
  57. void decreaseTemperature();
  58. void increaseTemperature();
  59. void increaseBrightness();
  60. void decreaseBrightness();
  61. void updateSaturation(const uint8_t saturation);
  62. void formatPacket(uint8_t* packet, char* buffer);
  63. protected:
  64. RF24 rf;
  65. RadioStack** radios;
  66. RadioStack* currentRadio;
  67. PacketFormatter* formatter;
  68. const size_t numRadios;
  69. unsigned int resendCount;
  70. MiLightRadio* switchRadio(const MiLightRadioType type);
  71. void flushPacket();
  72. };
  73. #endif