Chris Mullins 8 lat temu
rodzic
commit
2c39df4f9b

+ 0 - 31
lib/MiLight/MiLightButtons.h

@@ -14,37 +14,6 @@ enum MiLightStatus {
   OFF = 1 
 };
 
-enum MiLightRgbwButton {
-  RGBW_ALL_ON            = 0x01,
-  RGBW_ALL_OFF           = 0x02,
-  RGBW_GROUP_1_ON        = 0x03,
-  RGBW_GROUP_1_OFF       = 0x04,
-  RGBW_GROUP_2_ON        = 0x05,
-  RGBW_GROUP_2_OFF       = 0x06,
-  RGBW_GROUP_3_ON        = 0x07,
-  RGBW_GROUP_3_OFF       = 0x08,
-  RGBW_GROUP_4_ON        = 0x09,
-  RGBW_GROUP_4_OFF       = 0x0A,
-  RGBW_SPEED_UP          = 0x0B, 
-  RGBW_SPEED_DOWN        = 0x0C, 
-  RGBW_DISCO_MODE        = 0x0D,
-  RGBW_BRIGHTNESS        = 0x0E,
-  RGBW_COLOR             = 0x0F,
-  RGBW_ALL_MAX_LEVEL     = 0x11,
-  RGBW_ALL_MIN_LEVEL     = 0x12,
-  
-  // These are the only mechanism (that I know of) to disable RGB and set the
-  // color to white.
-  RGBW_GROUP_1_MAX_LEVEL = 0x13,
-  RGBW_GROUP_1_MIN_LEVEL = 0x14,
-  RGBW_GROUP_2_MAX_LEVEL = 0x15,
-  RGBW_GROUP_2_MIN_LEVEL = 0x16,
-  RGBW_GROUP_3_MAX_LEVEL = 0x17,
-  RGBW_GROUP_3_MIN_LEVEL = 0x18,
-  RGBW_GROUP_4_MAX_LEVEL = 0x19,
-  RGBW_GROUP_4_MIN_LEVEL = 0x1A,
-};
-
 enum MiLightCctButton {
   CCT_ALL_ON            = 0x05,
   CCT_ALL_OFF           = 0x09,

+ 12 - 0
lib/MiLight/RgbwPacketFormatter.cpp

@@ -17,6 +17,18 @@ void RgbwPacketFormatter::unpair() {
   PacketFormatter::updateStatus(ON);
   updateColorWhite();
 }
+  
+void RgbwPacketFormatter::modeSpeedDown() {
+  command(RGBW_SPEED_DOWN, 0);
+}
+
+void RgbwPacketFormatter::modeSpeedUp() {
+  command(RGBW_SPEED_UP, 0);
+}
+
+void RgbwPacketFormatter::nextMode() {
+  command(RGBW_DISCO_MODE, 0);
+}
 
 void RgbwPacketFormatter::updateStatus(MiLightStatus status, uint8_t groupId) {
   uint8_t button = RGBW_GROUP_1_ON + ((groupId - 1)*2) + status;

+ 34 - 0
lib/MiLight/RgbwPacketFormatter.h

@@ -3,6 +3,37 @@
 #ifndef _RGBW_PACKET_FORMATTER_H
 #define _RGBW_PACKET_FORMATTER_H 
 
+enum MiLightRgbwButton {
+  RGBW_ALL_ON            = 0x01,
+  RGBW_ALL_OFF           = 0x02,
+  RGBW_GROUP_1_ON        = 0x03,
+  RGBW_GROUP_1_OFF       = 0x04,
+  RGBW_GROUP_2_ON        = 0x05,
+  RGBW_GROUP_2_OFF       = 0x06,
+  RGBW_GROUP_3_ON        = 0x07,
+  RGBW_GROUP_3_OFF       = 0x08,
+  RGBW_GROUP_4_ON        = 0x09,
+  RGBW_GROUP_4_OFF       = 0x0A,
+  RGBW_SPEED_UP          = 0x0B, 
+  RGBW_SPEED_DOWN        = 0x0C, 
+  RGBW_DISCO_MODE        = 0x0D,
+  RGBW_BRIGHTNESS        = 0x0E,
+  RGBW_COLOR             = 0x0F,
+  RGBW_ALL_MAX_LEVEL     = 0x11,
+  RGBW_ALL_MIN_LEVEL     = 0x12,
+  
+  // These are the only mechanism (that I know of) to disable RGB and set the
+  // color to white.
+  RGBW_GROUP_1_MAX_LEVEL = 0x13,
+  RGBW_GROUP_1_MIN_LEVEL = 0x14,
+  RGBW_GROUP_2_MAX_LEVEL = 0x15,
+  RGBW_GROUP_2_MIN_LEVEL = 0x16,
+  RGBW_GROUP_3_MAX_LEVEL = 0x17,
+  RGBW_GROUP_3_MIN_LEVEL = 0x18,
+  RGBW_GROUP_4_MAX_LEVEL = 0x19,
+  RGBW_GROUP_4_MIN_LEVEL = 0x1A,
+};
+
 #define RGBW_COMMAND_INDEX 5
 #define RGBW_BRIGHTNESS_GROUP_INDEX 4
 #define RGBW_COLOR_INDEX 3
@@ -21,6 +52,9 @@ public:
   virtual void updateColorWhite();
   virtual void format(uint8_t const* packet, char* buffer);
   virtual void unpair();
+  virtual void modeSpeedDown();
+  virtual void modeSpeedUp();
+  virtual void nextMode();
   
   virtual void initializePacket(uint8_t* packet);
 };