Skip to content
This repository has been archived by the owner on Sep 27, 2023. It is now read-only.

Fix light flashes #578

Merged
merged 1 commit into from
Mar 31, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 5 additions & 2 deletions src/esphome/light/light_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ void LightState::loop() {
this->active_effect_->apply();
}

if (this->next_write_ || (this->transformer_ != nullptr && this->transformer_->is_continuous())) {
if (this->next_write_ || this->transformer_ != nullptr) {
this->output_->write_state(this);
this->next_write_ = false;
}
Expand Down Expand Up @@ -477,7 +477,10 @@ void LightState::StateCall::perform() const {
saved.white = v.get_white();
saved.color_temp = v.get_color_temperature();
saved.effect = *this->state_->active_effect_index_;
this->state_->rtc_.save(&saved);
if (!this->flash_length_.has_value()) {
// Do not save RTC state for flashes.
this->state_->rtc_.save(&saved);
}
this->state_->send_values();
}
LightState::StateCall::StateCall(LightState *state) : state_(state) {}
Expand Down
3 changes: 0 additions & 3 deletions src/esphome/light/light_transformer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,13 @@ LightTransitionTransformer::LightTransitionTransformer(uint32_t start_time, uint
this->start_values_.set_color_temperature(target_values.get_color_temperature());
}
}
bool LightTransitionTransformer::is_continuous() { return true; }

LightColorValues LightFlashTransformer::get_values() { return this->get_target_values_(); }

LightColorValues LightFlashTransformer::get_end_values() { return this->get_start_values_(); }

LightFlashTransformer::LightFlashTransformer(uint32_t start_time, uint32_t length, const LightColorValues &start_values,
const LightColorValues &target_values)
: LightTransformer(start_time, length, start_values, target_values) {}
bool LightFlashTransformer::is_continuous() { return false; }

} // namespace light

Expand Down
7 changes: 0 additions & 7 deletions src/esphome/light/light_transformer.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ class LightTransformer {
/// Whether this transformation is finished
virtual bool is_finished();

/// Whether the output needs to be written in every loop cycle.
virtual bool is_continuous() = 0;

/// This will be called to get the current values for output.
virtual LightColorValues get_values() = 0;

Expand Down Expand Up @@ -54,8 +51,6 @@ class LightTransitionTransformer : public LightTransformer {
const LightColorValues &target_values);

LightColorValues get_values() override;

bool is_continuous() override;
};

class LightFlashTransformer : public LightTransformer {
Expand All @@ -66,8 +61,6 @@ class LightFlashTransformer : public LightTransformer {
LightColorValues get_values() override;

LightColorValues get_end_values() override;

bool is_continuous() override;
};

} // namespace light
Expand Down