diff --git a/esphome/components/dynamic_lamp/__init__.py b/esphome/components/dynamic_lamp/__init__.py index 9a785bc59d..0af7e635b1 100644 --- a/esphome/components/dynamic_lamp/__init__.py +++ b/esphome/components/dynamic_lamp/__init__.py @@ -5,10 +5,14 @@ from esphome.const import CONF_ID dynamic_lamp_ns = cg.esphome_ns.namespace('dynamic_lamp') DynamicLamp = dynamic_lamp_ns.class_('DynamicLamp', cg.Component) +CONF_SAVE_MODE = 'save_mode' CONFIG_SCHEMA = cv.Schema({ - cv.GenerateID(): cv.declare_id(DynamicLamp) + cv.GenerateID(): cv.declare_id(DynamicLamp), + cv.Optional(CONF_SAVE_MODE, default=0): cv.int_range(0, 1), }).extend(cv.COMPONENT_SCHEMA) -def to_code(config): + +async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) - yield cg.register_component(var, config) + await cg.register_component(var, config) + cg.add(var.set_save_mode(config[CONF_SAVE_MODE])) diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.cpp b/esphome/components/dynamic_lamp/dynamic_lamp.cpp index be752deb32..365b86ac6e 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.cpp +++ b/esphome/components/dynamic_lamp/dynamic_lamp.cpp @@ -9,8 +9,6 @@ static const char *TAG = "dynamic_lamp"; void DynamicLamp::setup() { uint8_t i = 0; bool valid = true; - this->save_mode_ = SAVE_MODE_NONE; //Currently only none & fram supported - if(this->save_mode_ == 0) { for (i=0; i < 16; i++) { this->active_lamps_[i].active = false; @@ -40,6 +38,10 @@ void DynamicLamp::dump_config(){ } } +void DynamicLamp::set_save_mode(uint8_t save_mode) { + this->save_mode_ = save_mode; +} + void DynamicLamp::set_lamp_count(uint8_t lamp_count) { } diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.cpp.save b/esphome/components/dynamic_lamp/dynamic_lamp.cpp.save deleted file mode 100644 index 8be85cf3f4..0000000000 --- a/esphome/components/dynamic_lamp/dynamic_lamp.cpp.save +++ /dev/null @@ -1,57 +0,0 @@ -#include "esphome/core/log.h" -#include "dynamic_lamp.h" - -namespace esphome { -namespace dynamic_lamp { - -static const char *TAG = "dynamic_lamp"; - -void DynamicLamp::setup() { - uint8_t i = 0; - bool valid = true; - this->save_mode_ = SAVE_MODE_NONE; //Currently only none & fram supported - - if(this->save_mode_ == 0) { - for (i=0; i < 16; i++) { - this->active_lamps_[i].active = false; - } - } else { - while(i < 16) { - this->restore_lamp_values_(i); - } - } -} - -void DynamicLamp::loop() { - -} - -void DynamicLamp::dump_config(){ - ESP_LOGCONFIG(TAG, "Dynamic Lamp feature loaded"); - switch(this->save_mode_) { - case SAVE_MODE_NONE: - ESP_LOGCONFIG(TAG, "Save mode set to NONE"); - case SAVE_MODE_FRAM: - ESP_LOGCONFIG(TAG, "Save mode set to FRAM"); - break; - default: - ESP_LOGCONFIG(TAG, "Currently only NONE(0) && FRAM(1) save modes supported, ignoring value %" PRIu8 " and defaulting to NONE!", this->save_mode_); - this->save_mode_ = 0; - } -} - -void DynamicLamp::set_lamp_count(uint8_t lamp_count) { - -} - -void DynamicLamp::set_lamp_values_(uint8_t lamp_number, bool active, uint16_t selected_outputs, uint8_t mode, uint8_t mode_value) { - -} - -void DynamicLamp::restore_lamp_values_(uint8_t lamp_number) { - switch(this->save_mode_) - this->active_lamps_[lamp_number].active = false; -} - -} // namespace dynamic_lamp -} // namespace esphome diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.h b/esphome/components/dynamic_lamp/dynamic_lamp.h index 31186323a1..bd88b841d7 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.h +++ b/esphome/components/dynamic_lamp/dynamic_lamp.h @@ -36,6 +36,7 @@ class DynamicLamp : public Component { void loop() override; void dump_config() override; void set_lamp_count(uint8_t lamp_count); + void set_save_mode(uint8_t save_mode); protected: void restore_lamp_values_(uint8_t lamp_number);