tdse-tp2_01-model_integration

Index Commits Files Refs README
commit 3d0c1ba115b1f809258ef6dac9c50ae7b918d319
parent d19858f5b4392609970e1538f6ed4889b2ba61ed
Author: Martin Klöckner <mjkloeckner@gmail.com>
Date:   Fri, 26 Sep 2025 17:49:58 -0300

implement `task_sensor_statechart`

Diffstat:
Mapp/src/task_sensor.c | 59++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 54 insertions(+), 5 deletions(-)
diff --git a/app/src/task_sensor.c b/app/src/task_sensor.c
@@ -170,7 +170,8 @@ void task_sensor_statechart(void)
         p_task_sensor_cfg = &task_sensor_cfg_list[index];
         p_task_sensor_dta = &task_sensor_dta_list[index];
 
-        if (p_task_sensor_cfg->pressed == HAL_GPIO_ReadPin(p_task_sensor_cfg->gpio_port, p_task_sensor_cfg->pin))
+        if (p_task_sensor_cfg->pressed 
+                == HAL_GPIO_ReadPin(p_task_sensor_cfg->gpio_port, p_task_sensor_cfg->pin))
         {
             p_task_sensor_dta->event =    EV_BTN_XX_DOWN;
         }
@@ -185,28 +186,76 @@ void task_sensor_statechart(void)
 
                 if (EV_BTN_XX_DOWN == p_task_sensor_dta->event)
                 {
-                    put_event_task_system(p_task_sensor_cfg->signal_down);
-                    p_task_sensor_dta->state = ST_BTN_XX_DOWN;
+                    // put_event_task_system(p_task_sensor_cfg->signal_down);
+                    p_task_sensor_dta->state = ST_BTN_XX_FALLING;
+                    p_task_sensor_dta->tick  = DEL_BTN_XX_MAX;
                 }
 
                 break;
 
             case ST_BTN_XX_FALLING:
 
+                if (EV_BTN_XX_UP == p_task_sensor_dta->event)
+                {
+                    if (0 == p_task_sensor_dta->tick) {
+                        p_task_sensor_dta->state = ST_BTN_XX_UP;
+                    }
+
+                    if (p_task_sensor_dta->tick > 0) {
+                        p_task_sensor_dta->state = ST_BTN_XX_FALLING;
+                        p_task_sensor_dta->tick--;
+                    }
+                }
+
+                if (EV_BTN_XX_DOWN == p_task_sensor_dta->event)
+                {
+                    if (0 == p_task_sensor_dta->tick) {
+                        p_task_sensor_dta->state = ST_BTN_XX_DOWN;
+                        put_event_task_system(p_task_sensor_cfg->signal_down);
+                    }
+
+                    if (p_task_sensor_dta->tick > 0) {
+                        p_task_sensor_dta->tick--;
+                    }
+                }
+
                 break;
 
             case ST_BTN_XX_DOWN:
 
                 if (EV_BTN_XX_UP == p_task_sensor_dta->event)
                 {
-                    put_event_task_system(p_task_sensor_cfg->signal_up);
-                    p_task_sensor_dta->state = ST_BTN_XX_UP;
+                    p_task_sensor_dta->state = ST_BTN_XX_RISING;
+                    p_task_sensor_dta->tick  = DEL_BTN_XX_MAX;
                 }
 
                 break;
 
             case ST_BTN_XX_RISING:
 
+                if (EV_BTN_XX_UP == p_task_sensor_dta->event)
+                {
+                    if (0 == p_task_sensor_dta->tick) {
+                        put_event_task_system(p_task_sensor_cfg->signal_up);
+                        p_task_sensor_dta->state = ST_BTN_XX_UP;
+                    }
+
+                    if (p_task_sensor_dta->tick > 0) {
+                        p_task_sensor_dta->tick--;
+                    }
+                }
+
+                if (EV_BTN_XX_DOWN == p_task_sensor_dta->event)
+                {
+                    if (0 == p_task_sensor_dta->tick) {
+                        p_task_sensor_dta->state = ST_BTN_XX_DOWN;
+                    }
+
+                    if (p_task_sensor_dta->tick > 0) {
+                        p_task_sensor_dta->tick--;
+                    }
+                }
+
                 break;
 
             default: