commit cf121b2246f0af4d4016c44d24ab682a2dc5a426
parent 55c191d2cbd2a50d62ab1395c157cd8c7ca179b9
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Mon, 30 Mar 2026 13:29:14 -0300
En estado `ST_MEN_IDLE` solo actualizar el display si algún parámetro cambia
Diffstat:
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/firmware/app/src/task_menu.c b/firmware/app/src/task_menu.c
@@ -31,6 +31,7 @@ void task_menu_statechart(void *parameters);
// Private variables
bool g_display_update = false;
task_menu_st_t g_menu_prev_state;
+static int16_t temp_sensor_prev;
// Public variables
volatile uint32_t g_task_menu_tick_cnt;
@@ -44,6 +45,7 @@ extern uint16_t g_ds18b20_dma_error_count;
void task_menu_init(void *parameters)
{
task_menu_dta_t *p_task_menu_dta;
+ shared_data_type *p_shared_data = (shared_data_type *)parameters;
LOGGER_INFO("Initializing `task_menu`...");
@@ -54,6 +56,7 @@ void task_menu_init(void *parameters)
p_task_menu_dta->state = ST_MEN_IDLE;
p_task_menu_dta->event = EV_MEN_ST_IDLE;
p_task_menu_dta->event_flag = false;
+ temp_sensor_prev = p_shared_data->temp_sensor;
display_i2c_init();
display_i2c_set_cursor_pos(0, 0);
@@ -174,7 +177,11 @@ void task_menu_statechart(void *parameters)
if (0 == p_task_menu_dta->tick)
{
- g_display_update = true;
+ if (p_shared_data->temp_sensor != temp_sensor_prev)
+ {
+ g_display_update = true;
+ }
+ temp_sensor_prev = p_shared_data->temp_sensor;
p_task_menu_dta->tick = G_TASK_MEN_DISPLAY_UPDATE_RATE_MS;
}
else