52 const auto &traits = parent->traits;
59 float target_value = NAN;
60 float min_value = traits.get_min_value();
61 float max_value = traits.get_max_value();
64 ESP_LOGD(TAG,
"'%s': Setting value", name);
71 if (std::isnan(min_value)) {
74 target_value = min_value;
77 if (std::isnan(max_value)) {
80 target_value = max_value;
83 ESP_LOGD(TAG,
"'%s': Increment with%s cycling", name, this->
cycle_ ?
"" :
"out");
84 if (!parent->has_state()) {
88 auto step = traits.get_step();
89 target_value = parent->state + (std::isnan(step) ? 1 : step);
90 if (target_value > max_value) {
91 if (this->
cycle_ && !std::isnan(min_value)) {
92 target_value = min_value;
94 target_value = max_value;
98 ESP_LOGD(TAG,
"'%s': Decrement with%s cycling", name, this->
cycle_ ?
"" :
"out");
99 if (!parent->has_state()) {
103 auto step = traits.get_step();
104 target_value = parent->state - (std::isnan(step) ? 1 : step);
105 if (target_value < min_value) {
106 if (this->
cycle_ && !std::isnan(max_value)) {
107 target_value = max_value;
109 target_value = min_value;
114 if (target_value < min_value) {
118 if (target_value > max_value) {
123 ESP_LOGD(TAG,
" New value: %f", target_value);