1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-06 13:22:19 +01:00

fix: refactor available_outputs handling in DynamicLamp to use add_available_output method

This commit is contained in:
Oliver Kleinecke
2025-02-15 11:08:14 +01:00
parent 4d469bd668
commit c952aa914a
3 changed files with 12 additions and 32 deletions

View File

@@ -18,5 +18,6 @@ CONFIG_SCHEMA = cv.Schema({
async def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
await cg.register_component(var, config)
cg.add(var.set_available_outputs(config[CONF_AVAILABLE_OUTPUTS]))
for outputPointer in config.get(CONF_AVAILABLE_OUTPUTS):
cg.add(var.add_available_output(outputPointer))
cg.add(var.set_save_mode(config[CONF_SAVE_MODE]))

View File

@@ -93,38 +93,17 @@ void DynamicLamp::set_save_mode(uint8_t save_mode) {
this->save_mode_ = save_mode;
}
void DynamicLamp::set_available_outputs(std::list<*FloatOutput> output_list) {
void DynamicLamp::add_available_output(FloatOutput &output) {
uint8_t counter = 0;
/*
std::vector<std::string> v;
char * token = strtok (&output_list[0],",");
while (token != NULL)
{
v.push_back(token);
token = strtok (NULL, ",");
}
for ( std::string s : v )
{
this->available_outputs_[counter] = LinkedOutput{
true,
static_cast<std::string>(this->trim_(s)),
counter,
0, 0, 1.0, false
};
while (this->available_outputs_[counter].active) {
counter++;
}
*/
std::list<*FloatOutput>::iterator output_it;
for (output_it = data.begin(); output_it != data.end(); ++output_it){
this->available_outputs_[counter] = LinkedOutput{
true,
static_cast<std::string>(this->trim_(output_it.id)),
output,
counter,
0, 0, 1.0, false
};
counter++;
}
}
uint8_t DynamicLamp::add_lamp() {

View File

@@ -20,7 +20,7 @@ enum LinkedOutputModeIdx : uint8_t {
struct LinkedOutput {
bool active = false;
std::string output_id;
FloatOutput &output;
uint8_t output_index;
uint8_t mode = 0;
optional<float> min_value;
@@ -38,7 +38,7 @@ class DynamicLamp : public Component {
void setup() override;
void loop() override;
void dump_config() override;
void set_available_outputs(std::list<*FloatOutput> output_list);
void add_available_output(FloatOutput &output);
void set_save_mode(uint8_t save_mode);
protected: