mirror of
https://github.com/esphome/esphome.git
synced 2025-11-20 08:46:01 +00:00
wip
This commit is contained in:
@@ -139,11 +139,8 @@ const char *Fan::find_preset_mode_(const char *preset_mode) { return this->get_t
|
|||||||
|
|
||||||
bool Fan::set_preset_mode_(const char *preset_mode) {
|
bool Fan::set_preset_mode_(const char *preset_mode) {
|
||||||
const char *validated = this->find_preset_mode_(preset_mode);
|
const char *validated = this->find_preset_mode_(preset_mode);
|
||||||
if (validated == nullptr) {
|
if (validated == nullptr || this->preset_mode_ == validated) {
|
||||||
return false; // Preset mode not supported
|
return false; // Preset mode not supported or no change
|
||||||
}
|
|
||||||
if (this->preset_mode_ == validated) {
|
|
||||||
return false; // No change
|
|
||||||
}
|
}
|
||||||
this->preset_mode_ = validated;
|
this->preset_mode_ = validated;
|
||||||
// Keep deprecated member in sync during deprecation period
|
// Keep deprecated member in sync during deprecation period
|
||||||
@@ -235,16 +232,14 @@ void Fan::save_state_() {
|
|||||||
state.direction = this->direction;
|
state.direction = this->direction;
|
||||||
|
|
||||||
const char *preset = this->get_preset_mode();
|
const char *preset = this->get_preset_mode();
|
||||||
if (traits.supports_preset_modes() && preset != nullptr) {
|
if (preset != nullptr) {
|
||||||
const auto &preset_modes = traits.supported_preset_modes();
|
const auto &preset_modes = traits.supported_preset_modes();
|
||||||
// Store index of current preset mode
|
// Find index of current preset mode (pointer comparison is safe since preset is from traits)
|
||||||
size_t i = 0;
|
for (size_t i = 0; i < preset_modes.size(); i++) {
|
||||||
for (const auto &mode : preset_modes) {
|
if (preset_modes[i] == preset) {
|
||||||
if (strcmp(mode, preset) == 0) {
|
|
||||||
state.preset_mode = i;
|
state.preset_mode = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user