Browse Source

pull out pair/unpair branching

Chris Mullins 8 years ago
parent
commit
1e5c7faf7f

+ 1 - 1
lib/MiLight/CctPacketFormatter.h

@@ -22,8 +22,8 @@ public:
   virtual void updateBrightness(uint8_t value);
   virtual void increaseBrightness();
   virtual void decreaseBrightness();
-  virtual void format(uint8_t const* packet, char* buffer);
   
+  virtual void format(uint8_t const* packet, char* buffer);
   virtual void initializePacket(uint8_t* packet);
   
   static uint8_t getCctStatusButton(uint8_t groupId, MiLightStatus status);

+ 4 - 26
lib/MiLight/MiLightClient.cpp

@@ -116,35 +116,13 @@ void MiLightClient::updateColorWhite() {
 }
 
 void MiLightClient::pair() {
-  for (size_t i = 0; i < 5; i++) {
-    formatter->updateStatus(ON);
-    flushPacket();
-    delay(1);
-  }
+  formatter->pair();
+  flushPacket();
 }
 
 void MiLightClient::unpair() {
-  const MiLightRadioType type = currentRadio->config.type;
-  
-  if (type == RGBW) {
-    formatter->updateStatus(ON);
-    flushPacket();
-    yield();
-    formatter->updateColorWhite();
-    flushPacket();
-  } else if (type == CCT) {
-    for (int i = 0; i < 5; i++) {
-      formatter->updateStatus(ON);
-      flushPacket();
-      delay(1);
-    }
-  } else if (type == RGB_CCT) {
-    for (int i = 0; i < 5; i++) {
-      formatter->updateStatus(ON, 0);
-      flushPacket();
-      delay(1);
-    }
-  }
+  formatter->unpair();
+  flushPacket();
 }
     
 void MiLightClient::increaseBrightness() {

+ 9 - 2
lib/MiLight/PacketFormatter.cpp

@@ -52,8 +52,15 @@ void PacketFormatter::decreaseBrightness() { }
 void PacketFormatter::updateTemperature(uint8_t value) { }
 void PacketFormatter::updateSaturation(uint8_t value) { }
   
-void PacketFormatter::pair() { }
-void PacketFormatter::unpair() { }
+void PacketFormatter::pair() { 
+  for (size_t i = 0; i < 5; i++) {
+    updateStatus(ON);
+  }
+}
+
+void PacketFormatter::unpair() { 
+  pair();
+}
   
 PacketStream& PacketFormatter::buildPackets() {
   if (numPackets > 0) {

+ 6 - 0
lib/MiLight/RgbCctPacketFormatter.cpp

@@ -32,6 +32,12 @@ void RgbCctPacketFormatter::initializePacket(uint8_t* packet) {
   packet[packetPtr++] = groupId;
   packet[packetPtr++] = 0;
 }
+
+void RgbCctPacketFormatter::unpair() { 
+  for (size_t i = 0; i < 5; i++) {
+    updateStatus(ON, 0);
+  }
+}
   
 void RgbCctPacketFormatter::command(uint8_t command, uint8_t arg) {
   pushPacket();

+ 1 - 0
lib/MiLight/RgbCctPacketFormatter.h

@@ -26,6 +26,7 @@ public:
   virtual void updateTemperature(uint8_t value);
   virtual void updateSaturation(uint8_t value);
   virtual void format(uint8_t const* packet, char* buffer);
+  virtual void unpair();
   
   virtual void finalizePacket(uint8_t* packet);
     

+ 12 - 0
lib/MiLight/RgbPacketFormatter.cpp

@@ -11,6 +11,18 @@ void RgbPacketFormatter::initializePacket(uint8_t *packet) {
   packet[packetPtr++] = sequenceNum++;
 }
 
+void RgbPacketFormatter::pair() { 
+  for (size_t i = 0; i < 5; i++) {
+    command(RGB_SPEED_UP, 0);
+  }
+}
+
+void RgbPacketFormatter::unpair() { 
+  for (size_t i = 0; i < 5; i++) {
+    command(RGB_SPEED_UP | 0x10, 0);
+  }
+}
+
 void RgbPacketFormatter::updateStatus(MiLightStatus status, uint8_t groupId) {
   command(status == ON ? RGB_ON : RGB_OFF, 0);
 }

+ 2 - 0
lib/MiLight/RgbPacketFormatter.h

@@ -33,6 +33,8 @@ public:
   virtual void updateHue(uint16_t value);
   virtual void updateColorRaw(uint8_t value);
   virtual void format(uint8_t const* packet, char* buffer);
+  virtual void pair();
+  virtual void unpair();
   
   virtual void initializePacket(uint8_t* packet);
 };

+ 5 - 0
lib/MiLight/RgbwPacketFormatter.cpp

@@ -13,6 +13,11 @@ void RgbwPacketFormatter::initializePacket(uint8_t* packet) {
   packet[packetPtr++] = sequenceNum++;
 }
 
+void RgbwPacketFormatter::unpair() { 
+  PacketFormatter::updateStatus(ON);
+  updateColorWhite();
+}
+
 void RgbwPacketFormatter::updateStatus(MiLightStatus status, uint8_t groupId) {
   uint8_t button = RGBW_GROUP_1_ON + ((groupId - 1)*2) + status;
   command(button, 0);

+ 1 - 0
lib/MiLight/RgbwPacketFormatter.h

@@ -20,6 +20,7 @@ public:
   virtual void updateColorRaw(uint8_t value);
   virtual void updateColorWhite();
   virtual void format(uint8_t const* packet, char* buffer);
+  virtual void unpair();
   
   virtual void initializePacket(uint8_t* packet);
 };