fix(valve): Start movement timer only if timeout is greater than 0

Ensures that the k_timer for valve movement timeouts is only started if
the configured max_opening_time_s or max_closing_time_s is greater than 0.
This prevents unnecessary timer activations when timeouts are disabled or zero.
This commit is contained in:
Eduard Iten 2025-07-10 23:45:21 +02:00
parent 92bb171e85
commit 5fd904de9e
1 changed files with 6 additions and 2 deletions

View File

@ -123,7 +123,9 @@ void valve_open(void)
current_state = VALVE_STATE_OPEN; current_state = VALVE_STATE_OPEN;
current_movement = VALVE_MOVEMENT_OPENING; /* Security: assume valve open as current_movement = VALVE_MOVEMENT_OPENING; /* Security: assume valve open as
soons as it starts opening */ soons as it starts opening */
if (max_opening_time_s > 0) {
k_timer_start(&movement_timer, K_SECONDS(max_opening_time_s), K_NO_WAIT); k_timer_start(&movement_timer, K_SECONDS(max_opening_time_s), K_NO_WAIT);
}
k_work_schedule(&valve_work, K_MSEC(100)); k_work_schedule(&valve_work, K_MSEC(100));
} }
@ -132,7 +134,9 @@ void valve_close(void)
vnd7050aj_reset_fault(vnd7050aj_dev); vnd7050aj_reset_fault(vnd7050aj_dev);
vnd7050aj_set_output_state(vnd7050aj_dev, VALVE_CHANNEL_OPEN, false); vnd7050aj_set_output_state(vnd7050aj_dev, VALVE_CHANNEL_OPEN, false);
vnd7050aj_set_output_state(vnd7050aj_dev, VALVE_CHANNEL_CLOSE, true); vnd7050aj_set_output_state(vnd7050aj_dev, VALVE_CHANNEL_CLOSE, true);
if (max_closing_time_s > 0) {
k_timer_start(&movement_timer, K_SECONDS(max_closing_time_s), K_NO_WAIT); k_timer_start(&movement_timer, K_SECONDS(max_closing_time_s), K_NO_WAIT);
}
current_movement = VALVE_MOVEMENT_CLOSING; current_movement = VALVE_MOVEMENT_CLOSING;
k_work_schedule(&valve_work, VALVE_ENDPOSITION_CHECK_INTERVAL); k_work_schedule(&valve_work, VALVE_ENDPOSITION_CHECK_INTERVAL);
} }