Переглянути джерело

add ability to configure resend account outside of a constant

Chris Mullins 8 роки тому
батько
коміт
7547ca1990
2 змінених файлів з 22 додано та 27 видалено
  1. 14 13
      lib/MiLight/MiLightClient.cpp
  2. 8 14
      lib/MiLight/MiLightClient.h

+ 14 - 13
lib/MiLight/MiLightClient.cpp

@@ -26,6 +26,10 @@ MiLightRadio* MiLightClient::getRadio(const MiLightRadioType type) {
   return NULL;
 }
 
+void MiLightClient::setResendCount(const unsigned int resendCount) {
+  this->resendCount = resendCount;
+}
+
 uint8_t MiLightClient::nextSequenceNum() {
   return sequenceNum++;
 }
@@ -53,8 +57,7 @@ void MiLightClient::read(const MiLightRadioType radioType, uint8_t packet[]) {
 }
 
 void MiLightClient::write(const MiLightRadioType radioType, 
-  uint8_t packet[],
-  const unsigned int resendCount) {
+  uint8_t packet[]) {
     
   MiLightRadio* radio = getRadio(radioType);
   
@@ -62,7 +65,7 @@ void MiLightClient::write(const MiLightRadioType radioType,
     return;
   }
   
-  for (int i = 0; i < resendCount; i++) {
+  for (int i = 0; i < this->resendCount; i++) {
     radio->write(packet, MILIGHT_PACKET_LENGTH);
   }
 }
@@ -72,8 +75,7 @@ void MiLightClient::writeRgbw(
   const uint8_t color,
   const uint8_t brightness,
   const uint8_t groupId,
-  const uint8_t button,
-  const unsigned int resendCount) {
+  const uint8_t button) {
   
   uint8_t packet[MilightRgbwConfig.packetLength];
   size_t packetPtr = 0;
@@ -86,13 +88,12 @@ void MiLightClient::writeRgbw(
   packet[packetPtr++] = button;
   packet[packetPtr++] = nextSequenceNum();
   
-  write(RGBW, packet, resendCount);
+  write(RGBW, packet);
 }
 
 void MiLightClient::writeCct(const uint16_t deviceId,
   const uint8_t groupId,
-  const uint8_t button,
-  const unsigned int resendCount) {
+  const uint8_t button) {
     
   uint8_t packet[MilightRgbwConfig.packetLength];
   uint8_t sequenceNum = nextSequenceNum();
@@ -106,7 +107,7 @@ void MiLightClient::writeCct(const uint16_t deviceId,
   packet[packetPtr++] = sequenceNum;
   packet[packetPtr++] = sequenceNum;
   
-  write(CCT, packet, resendCount);
+  write(CCT, packet);
 }
     
 void MiLightClient::updateColorRaw(const uint16_t deviceId, const uint8_t groupId, const uint16_t color) {
@@ -191,11 +192,11 @@ void MiLightClient::allOff(const MiLightRadioType type, const uint16_t deviceId)
 }
 
 void MiLightClient::increaseCctBrightness(const uint16_t deviceId, const uint8_t groupId) {
-  writeCct(deviceId, groupId, CCT_BRIGHTNESS_UP, 10);
+  writeCct(deviceId, groupId, CCT_BRIGHTNESS_UP);
 }
 
 void MiLightClient::decreaseCctBrightness(const uint16_t deviceId, const uint8_t groupId) {
-  writeCct(deviceId, groupId, CCT_BRIGHTNESS_DOWN, 10);
+  writeCct(deviceId, groupId, CCT_BRIGHTNESS_DOWN);
 }
 
 void MiLightClient::updateCctBrightness(const uint16_t deviceId, const uint8_t groupId, const uint8_t brightness) {
@@ -208,11 +209,11 @@ void MiLightClient::updateCctBrightness(const uint16_t deviceId, const uint8_t g
 }
 
 void MiLightClient::increaseTemperature(const uint16_t deviceId, const uint8_t groupId) {
-  writeCct(deviceId, groupId, CCT_TEMPERATURE_UP, 10);
+  writeCct(deviceId, groupId, CCT_TEMPERATURE_UP);
 }
 
 void MiLightClient::decreaseTemperature(const uint16_t deviceId, const uint8_t groupId) {
-  writeCct(deviceId, groupId, CCT_TEMPERATURE_DOWN, 10);
+  writeCct(deviceId, groupId, CCT_TEMPERATURE_DOWN);
 }
 
 void MiLightClient::updateTemperature(const uint16_t deviceId, const uint8_t groupId, const uint8_t temperature) {

+ 8 - 14
lib/MiLight/MiLightClient.h

@@ -9,14 +9,7 @@
 
 #define MILIGHT_PACKET_LENGTH 7
 #define MILIGHT_CCT_INTERVALS 10
-#define MILIGHT_DEFAULT_RESEND_COUNT 50
-
-enum MiLightRadioType {
-  UNKNOWN = 0,
-  RGBW  = 0xB8,
-  CCT   = 0x5A,
-  RGBW_CCT = 0x99
-};
+#define MILIGHT_DEFAULT_RESEND_COUNT 10
 
 enum MiLightStatus { ON = 0, OFF = 1 };
 
@@ -49,7 +42,8 @@ class MiLightClient {
   public:
     MiLightClient(uint8_t cePin, uint8_t csnPin)
     : sequenceNum(0),
-      rf(RF24(cePin, csnPin))
+      rf(RF24(cePin, csnPin)),
+      resendCount(MILIGHT_DEFAULT_RESEND_COUNT)
     {
       rgbwRadio = new MiLightRadioStack(rf, MilightRgbwConfig);
       cctRadio = new MiLightRadioStack(rf, MilightCctConfig);
@@ -68,24 +62,24 @@ class MiLightClient {
       rgbwCctRadio->getRadio()->begin();
     }
     
+    void setResendCount(const unsigned int resendCount);
+    
     bool available(const MiLightRadioType radioType);
     void read(const MiLightRadioType radioType, uint8_t packet[]);
-    void write(const MiLightRadioType radioType, uint8_t packet[], const unsigned int resendCount = MILIGHT_DEFAULT_RESEND_COUNT);
+    void write(const MiLightRadioType radioType, uint8_t packet[]);
     
     void writeRgbw(
       const uint16_t deviceId,
       const uint8_t color,
       const uint8_t brightness,
       const uint8_t groupId,
-      const uint8_t button,
-      const unsigned int resendCount = MILIGHT_DEFAULT_RESEND_COUNT
+      const uint8_t button
     );
     
     void writeCct(
       const uint16_t deviceId,
       const uint8_t groupId,
-      const uint8_t button,
-      const unsigned int resendCount = MILIGHT_DEFAULT_RESEND_COUNT
+      const uint8_t button
     );
     
     // Common methods