53 const auto &traits = parent->traits;
60 float target_value = NAN;
61 float min_value = traits.get_min_value();
62 float max_value = traits.get_max_value();
65 ESP_LOGD(TAG,
"'%s': Setting value", name);
72 if (std::isnan(min_value)) {
75 target_value = min_value;
78 if (std::isnan(max_value)) {
81 target_value = max_value;
84 ESP_LOGD(TAG,
"'%s': Increment with%s cycling", name, this->
cycle_ ?
"" :
"out");
85 if (!parent->has_state()) {
89 auto step = traits.get_step();
90 target_value = parent->state + (std::isnan(step) ? 1 : step);
91 if (target_value > max_value) {
92 if (this->
cycle_ && !std::isnan(min_value)) {
93 target_value = min_value;
95 target_value = max_value;
99 ESP_LOGD(TAG,
"'%s': Decrement with%s cycling", name, this->
cycle_ ?
"" :
"out");
100 if (!parent->has_state()) {
104 auto step = traits.get_step();
105 target_value = parent->state - (std::isnan(step) ? 1 : step);
106 if (target_value < min_value) {
107 if (this->
cycle_ && !std::isnan(max_value)) {
108 target_value = max_value;
110 target_value = min_value;
115 if (target_value < min_value) {
119 if (target_value > max_value) {
124 ESP_LOGD(TAG,
" New value: %f", target_value);