diff --git a/Controllers/ENESMBusController/ENESMBusController.cpp b/Controllers/ENESMBusController/ENESMBusController.cpp index c1d24633..9f111004 100644 --- a/Controllers/ENESMBusController/ENESMBusController.cpp +++ b/Controllers/ENESMBusController/ENESMBusController.cpp @@ -197,6 +197,11 @@ unsigned char ENESMBusController::GetLEDBlue(unsigned int led) return(ENERegisterRead(direct_reg + ( 3 * led ) + 1)); } +void ENESMBusController::SaveMode() +{ + ENERegisterWrite(ENE_REG_APPLY, ENE_SAVE_VAL); +} + void ENESMBusController::SetAllColorsDirect(unsigned char red, unsigned char green, unsigned char blue) { unsigned char* colors = new unsigned char[led_count * 3]; diff --git a/Controllers/ENESMBusController/ENESMBusController.h b/Controllers/ENESMBusController/ENESMBusController.h index cb7baec8..7c324425 100644 --- a/Controllers/ENESMBusController/ENESMBusController.h +++ b/Controllers/ENESMBusController/ENESMBusController.h @@ -18,7 +18,8 @@ typedef unsigned char ene_dev_id; typedef unsigned short ene_register; -#define ENE_APPLY_VAL 0x01 /* Value for Apply Changes Register */ +#define ENE_APPLY_VAL 0x01 /* Value for Apply Changes Register */ +#define ENE_SAVE_VAL 0xAA /* Value for Save Changes */ enum { @@ -108,6 +109,7 @@ public: unsigned char GetLEDRed(unsigned int led); unsigned char GetLEDGreen(unsigned int led); unsigned char GetLEDBlue(unsigned int led); + void SaveMode(); void SetAllColorsDirect(unsigned char red, unsigned char green, unsigned char blue); void SetAllColorsEffect(unsigned char red, unsigned char green, unsigned char blue); void SetDirect(unsigned char direct); diff --git a/Controllers/ENESMBusController/RGBController_ENESMBus.cpp b/Controllers/ENESMBusController/RGBController_ENESMBus.cpp index 8886ce04..d108d15d 100644 --- a/Controllers/ENESMBusController/RGBController_ENESMBus.cpp +++ b/Controllers/ENESMBusController/RGBController_ENESMBus.cpp @@ -44,21 +44,21 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p mode Off; Off.name = "Off"; Off.value = ENE_MODE_OFF; - Off.flags = 0; + Off.flags = MODE_FLAG_MANUAL_SAVE; Off.color_mode = MODE_COLORS_NONE; modes.push_back(Off); mode Static; Static.name = "Static"; Static.value = ENE_MODE_STATIC; - Static.flags = MODE_FLAG_HAS_PER_LED_COLOR; + Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Static.color_mode = MODE_COLORS_PER_LED; modes.push_back(Static); mode Breathing; Breathing.name = "Breathing"; Breathing.value = ENE_MODE_BREATHING; - Breathing.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED; + Breathing.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; Breathing.color_mode = MODE_COLORS_PER_LED; Breathing.speed_min = ENE_SPEED_SLOWEST; Breathing.speed_max = ENE_SPEED_FASTEST; @@ -68,7 +68,7 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p mode Flashing; Flashing.name = "Flashing"; Flashing.value = ENE_MODE_FLASHING; - Flashing.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED; + Flashing.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; Flashing.color_mode = MODE_COLORS_PER_LED; Flashing.speed_min = ENE_SPEED_SLOWEST; Flashing.speed_max = ENE_SPEED_FASTEST; @@ -78,7 +78,7 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p mode SpectrumCycle; SpectrumCycle.name = "Spectrum Cycle"; SpectrumCycle.value = ENE_MODE_SPECTRUM_CYCLE; - SpectrumCycle.flags = MODE_FLAG_HAS_SPEED; + SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; SpectrumCycle.color_mode = MODE_COLORS_NONE; SpectrumCycle.speed_min = ENE_SPEED_SLOWEST; SpectrumCycle.speed_max = ENE_SPEED_FASTEST; @@ -88,7 +88,7 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p mode Rainbow; Rainbow.name = "Rainbow"; Rainbow.value = ENE_MODE_RAINBOW; - Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR; + Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_MANUAL_SAVE; Rainbow.color_mode = MODE_COLORS_NONE; Rainbow.speed_min = ENE_SPEED_SLOWEST; Rainbow.speed_max = ENE_SPEED_FASTEST; @@ -99,7 +99,7 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p mode ChaseFade; ChaseFade.name = "Chase Fade"; ChaseFade.value = ENE_MODE_CHASE_FADE; - ChaseFade.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR; + ChaseFade.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_MANUAL_SAVE; ChaseFade.color_mode = MODE_COLORS_PER_LED; ChaseFade.speed_min = ENE_SPEED_SLOWEST; ChaseFade.speed_max = ENE_SPEED_FASTEST; @@ -110,7 +110,7 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p mode Chase; Chase.name = "Chase"; Chase.value = ENE_MODE_CHASE; - Chase.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR; + Chase.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_MANUAL_SAVE; Chase.color_mode = MODE_COLORS_PER_LED; Chase.speed_min = ENE_SPEED_SLOWEST; Chase.speed_max = ENE_SPEED_FASTEST; @@ -121,7 +121,7 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p mode RandomFlicker; RandomFlicker.name = "Random Flicker"; RandomFlicker.value = ENE_MODE_RANDOM_FLICKER; - RandomFlicker.flags = MODE_FLAG_HAS_SPEED; + RandomFlicker.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; RandomFlicker.color_mode = MODE_COLORS_NONE; RandomFlicker.speed_min = ENE_SPEED_SLOWEST; RandomFlicker.speed_max = ENE_SPEED_FASTEST; @@ -436,3 +436,9 @@ void RGBController_ENESMBus::DeviceUpdateMode() controller->SetDirect(false); } } + +void RGBController_ENESMBus::DeviceSaveMode() +{ + DeviceUpdateMode(); + controller->SaveMode(); +} diff --git a/Controllers/ENESMBusController/RGBController_ENESMBus.h b/Controllers/ENESMBusController/RGBController_ENESMBus.h index e65edf21..e13779d0 100644 --- a/Controllers/ENESMBusController/RGBController_ENESMBus.h +++ b/Controllers/ENESMBusController/RGBController_ENESMBus.h @@ -27,6 +27,7 @@ public: void SetCustomMode(); void DeviceUpdateMode(); + void DeviceSaveMode(); private: ENESMBusController* controller;