tdse-tp2_04-model_integration

Index Commits Files Refs README
commit bef7199a8f50523866ac3ea7b15b4c80f63cfe8b
parent 290e04d0f2166043fefb6632c202d01c02b08a0a
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Fri,  3 Oct 2025 14:31:40 -0300

implement `task_actuator_statechart`

Diffstat:
Mapp/inc/task_actuator_attribute.h | 102++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mapp/src/task_actuator.c | 379+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
2 files changed, 297 insertions(+), 184 deletions(-)
diff --git a/app/inc/task_actuator_attribute.h b/app/inc/task_actuator_attribute.h
@@ -49,57 +49,57 @@ extern "C" {
 
 /********************** typedef **********************************************/
 /* Actuator Statechart - State Transition Table */
-/* +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+
- * | Current               | Event                 |                       | Next                  |                       |
- * | State                 | (Parameters)          | [Guard]               | State                 | Actions               |
- * |=======================+=======================+=======================+=======================+=======================|
- * | INICIAL               |                       |                       | ST_LED_XX_OFF         | led = LED_OFF         |
- * |                       |                       |                       |                       | op_led(led)           |
- * |-----------------------+-----------------------+-----------------------+-----------------------+-----------------------|
- * | ST_LED_XX_OFF         | EV_LED_XX_ON          |                       | ST_LED_XX_ON          | led = LED_ON          |
- * |                       |                       |                       |                       | op_led(led)           |
- * |                       |-----------------------+-----------------------+-----------------------+-----------------------|
- * |                       | EV_LED_XX_BLINK       |                       | ST_LED_XX_BLINK_ON    | tick = tick_max       |
- * |                       |                       |                       |                       | led = LED_ON          |
- * |                       |                       |                       |                       | op_led(led)           |
- * |                       |-----------------------+-----------------------+-----------------------+-----------------------|
- * |                       | EV_LED_XX_PULSE       |                       | ST_LED_XX_PULSE       | tick = tick_max       |
- * |                       |                       |                       |                       | led = LED_ON          |
- * |                       |                       |                       |                       | op_led(led)           |
- * |-----------------------+-----------------------+-----------------------+-----------------------+-----------------------|
- * | ST_LED_XX_ON          | EV_LED_XX_OFF         |                       | ST_LED_XX_OFF            | led = LED_OFF        |
- * |                       |                       |                       |                       | op_led(led)           |
- * |-----------------------+-----------------------+-----------------------+-----------------------+-----------------------|
- * | ST_LED_XX_BLINK_ON    | EV_LED_XX_OFF         |                       | ST_LED_XX_OFF         | led = LED_OFF         |
- * |                       |                       |                       |                       | op_led(led)           |
- * |                       +-----------------------+-----------------------+-----------------------+-----------------------|
- * |                       | EV_LED_XX_ON          |                       | ST_LED_XX_ON          | led = LED_ON          |
- * |                       |                       |                       |                       | op_led(led)           |
- * |                       +-----------------------+-----------------------+-----------------------+-----------------------|
- * |                       |                       | [tick == 0]           | ST_LED_XX_BLINK_OFF   | tick = tick_max       |
- * |                       |                       |                       |                       | led = LED_OFF         |
- * |                       |                       |                       |                       | op_led(led)           |
- * |                       +-----------------------+-----------------------+-----------------------+-----------------------|
- * |                       |                       | [tick >  0]           | ST_LED_XX_BLINK_ON    | tick--                |
- * |-----------------------+-----------------------+-----------------------+-----------------------+-----------------------|
- * | ST_LED_XX_BLINK_OFF   | EV_LED_XX_OFF         |                       | ST_LED_XX_OFF         | led = LED_OFF         |
- * |                       |                       |                       |                       | op_led(led)           |
- * |                       +-----------------------+-----------------------+-----------------------+-----------------------|
- * |                       | EV_LED_XX_ON          |                       | ST_LED_XX_ON          | led = LED_ON          |
- * |                       |                       |                       |                       | op_led(led)           |
- * |                       +-----------------------+-----------------------+-----------------------+-----------------------|
- * |                       |                       | [tick >  0]           | ST_LED_XX_BLINK_OFF   | tick--                |
- * |                       +-----------------------+-----------------------+-----------------------+-----------------------|
- * |                       |                       | [tick == 0]           | ST_LED_XX_BLINK_ON    | tick = tick_max       |
- * |                       |                       |                       |                       | led = LED_ON          |
- * |                       |                       |                       |                       | op_led(led)           |
- * |-----------------------+-----------------------+-----------------------+-----------------------+-----------------------|
- * | ST_LED_XX_PULSE       |                       | [tick == 0]           | ST_LED_XX_OFF         | tick = tick_max       |
- * |                       |                       |                       |                       | led = LED_OFF         |
- * |                       |                       |                       |                       | op_led(led)           |
- * |-----------------------+-----------------------+-----------------------+-----------------------+-----------------------|
- * |                       |                       | [tick >  0]           | ST_LED_XX_PULSE       | tick--                |
- * +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ */
+/* +-----------------------+-----------------------+-------------+-----------------------+-----------------------+
+ * | Current               | Event                 |             | Next                  |                       |
+ * | State                 | (Parameters)          | [Guard]     | State                 | Actions               |
+ * |=======================+=======================+=============+=======================+=======================|
+ * | INICIAL               |                       |             | ST_LED_XX_OFF         | led = LED_OFF         |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |-----------------------+-----------------------+-------------+-----------------------+-----------------------|
+ * | ST_LED_XX_OFF         | EV_LED_XX_ON          |             | ST_LED_XX_ON          | led = LED_ON          |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |                       |-----------------------+-------------+-----------------------+-----------------------|
+ * |                       | EV_LED_XX_BLINK       |             | ST_LED_XX_BLINK_ON    | tick = tick_max       |
+ * |                       |                       |             |                       | led = LED_ON          |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |                       |-----------------------+-------------+-----------------------+-----------------------|
+ * |                       | EV_LED_XX_PULSE       |             | ST_LED_XX_PULSE       | tick = tick_max       |
+ * |                       |                       |             |                       | led = LED_ON          |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |-----------------------+-----------------------+-------------+-----------------------+-----------------------|
+ * | ST_LED_XX_ON          | EV_LED_XX_OFF         |             | ST_LED_XX_OFF         |  led = LED_OFF        |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |-----------------------+-----------------------+-------------+-----------------------+-----------------------|
+ * | ST_LED_XX_BLINK_ON    | EV_LED_XX_OFF         |             | ST_LED_XX_OFF         | led = LED_OFF         |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |                       +-----------------------+-------------+-----------------------+-----------------------|
+ * |                       | EV_LED_XX_ON          |             | ST_LED_XX_ON          | led = LED_ON          |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |                       +-----------------------+-------------+-----------------------+-----------------------|
+ * |                       |                       | [tick == 0] | ST_LED_XX_BLINK_OFF   | tick = tick_max       |
+ * |                       |                       |             |                       | led = LED_OFF         |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |                       +-----------------------+-------------+-----------------------+-----------------------|
+ * |                       |                       | [tick >  0] | ST_LED_XX_BLINK_ON    | tick--                |
+ * |-----------------------+-----------------------+-------------+-----------------------+-----------------------|
+ * | ST_LED_XX_BLINK_OFF   | EV_LED_XX_OFF         |             | ST_LED_XX_OFF         | led = LED_OFF         |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |                       +-----------------------+-------------+-----------------------+-----------------------|
+ * |                       | EV_LED_XX_ON          |             | ST_LED_XX_ON          | led = LED_ON          |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |                       +-----------------------+-------------+-----------------------+-----------------------|
+ * |                       |                       | [tick >  0] | ST_LED_XX_BLINK_OFF   | tick--                |
+ * |                       +-----------------------+-------------+-----------------------+-----------------------|
+ * |                       |                       | [tick == 0] | ST_LED_XX_BLINK_ON    | tick = tick_max       |
+ * |                       |                       |             |                       | led = LED_ON          |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |-----------------------+-----------------------+-------------+-----------------------+-----------------------|
+ * | ST_LED_XX_PULSE       |                       | [tick == 0] | ST_LED_XX_OFF         | tick = tick_max       |
+ * |                       |                       |             |                       | led = LED_OFF         |
+ * |                       |                       |             |                       | op_led(led)           |
+ * |-----------------------+-----------------------+-------------+-----------------------+-----------------------|
+ * |                       |                       | [tick >  0] | ST_LED_XX_PULSE       | tick--                |
+ * +-----------------------+-----------------------+-------------+-----------------------+-----------------------+ */
 
 /* Events to excite Task Actuator */
 typedef enum {
diff --git a/app/src/task_actuator.c b/app/src/task_actuator.c
@@ -50,33 +50,32 @@
 #include "task_actuator_interface.h"
 
 /********************** macros and definitions *******************************/
-#define G_TASK_ACT_CNT_INIT            0ul
-#define G_TASK_ACT_TICK_CNT_INI        0ul
+#define G_TASK_ACT_CNT_INIT     0ul
+#define G_TASK_ACT_TICK_CNT_INI 0ul
 
-#define DEL_LED_XX_PUL                250ul
-#define DEL_LED_XX_BLI                500ul
-#define DEL_LED_XX_MIN                0ul
+#define DEL_LED_XX_PUL      250ul
+#define DEL_LED_XX_BLI      500ul
+#define DEL_LED_XX_MIN      0ul
 
 /********************** internal data declaration ****************************/
 const task_actuator_cfg_t task_actuator_cfg_list[] = {
-    {ID_LED_A,  LED_A_PORT,  LED_A_PIN, LED_A_ON,  LED_A_OFF,
-     DEL_LED_XX_BLI, DEL_LED_XX_PUL}
+    {ID_LED_A, LED_A_PORT, LED_A_PIN, LED_A_ON, LED_A_OFF, DEL_LED_XX_BLI, DEL_LED_XX_PUL}
 };
 
-#define ACTUATOR_CFG_QTY    (sizeof(task_actuator_cfg_list)/sizeof(task_actuator_cfg_t))
+#define ACTUATOR_CFG_QTY (sizeof(task_actuator_cfg_list)/sizeof(task_actuator_cfg_t))
 
 task_actuator_dta_t task_actuator_dta_list[] = {
-    {DEL_LED_XX_MIN, ST_LED_XX_OFF, EV_LED_XX_NOT_BLINK, false}
+    {DEL_LED_XX_MIN, ST_LED_XX_OFF, EV_LED_XX_NOT_BLINK, false}
 };
 
-#define ACTUATOR_DTA_QTY    (sizeof(task_actuator_dta_list)/sizeof(task_actuator_dta_t))
+#define ACTUATOR_DTA_QTY (sizeof(task_actuator_dta_list)/sizeof(task_actuator_dta_t))
 
 /********************** internal functions declaration ***********************/
 void task_actuator_statechart(void);
 
 /********************** internal data definition *****************************/
-const char *p_task_actuator         = "Task Actuator (Actuator Statechart)";
-const char *p_task_actuator_         = "Non-Blocking & Update By Time Code";
+const char *p_task_actuator = "Task Actuator (Actuator Statechart)";
+const char *p_task_actuator_ = "Non-Blocking & Update By Time Code";
 
 /********************** external data declaration ****************************/
 uint32_t g_task_actuator_cnt;
@@ -85,145 +84,259 @@ volatile uint32_t g_task_actuator_tick_cnt;
 /********************** external functions definition ************************/
 void task_actuator_init(void *parameters)
 {
-    uint32_t index;
-    const task_actuator_cfg_t *p_task_actuator_cfg;
-    task_actuator_dta_t *p_task_actuator_dta;
-    task_actuator_st_t state;
-    task_actuator_ev_t event;
-    bool b_event;
-
-    /* Print out: Task Initialized */
-    LOGGER_INFO(" ");
-    LOGGER_INFO("  %s is running - %s", GET_NAME(task_actuator_init), p_task_actuator);
-    LOGGER_INFO("  %s is a %s", GET_NAME(task_actuator), p_task_actuator_);
-
-    /* Init & Print out: Task execution counter */
-    g_task_actuator_cnt = G_TASK_ACT_CNT_INIT;
-    LOGGER_INFO("   %s = %lu", GET_NAME(g_task_actuator_cnt), g_task_actuator_cnt);
-
-    for (index = 0; ACTUATOR_DTA_QTY > index; index++)
-    {
-        /* Update Task Actuator Configuration & Data Pointer */
-        p_task_actuator_cfg = &task_actuator_cfg_list[index];
-        p_task_actuator_dta = &task_actuator_dta_list[index];
-
-        /* Init & Print out: Index & Task execution FSM */
-        state = ST_LED_XX_OFF;
-        p_task_actuator_dta->state = state;
-
-        event = EV_LED_XX_OFF;
-        p_task_actuator_dta->event = event;
-
-        b_event = false;
-        p_task_actuator_dta->flag = b_event;
-
-        LOGGER_INFO(" ");
-        LOGGER_INFO("   %s = %lu   %s = %lu   %s = %lu   %s = %s",
-                     GET_NAME(index), index,
-                     GET_NAME(state), (uint32_t)state,
-                     GET_NAME(event), (uint32_t)event,
-                     GET_NAME(b_event), (b_event ? "true" : "false"));
-
-        HAL_GPIO_WritePin(p_task_actuator_cfg->gpio_port, p_task_actuator_cfg->pin, p_task_actuator_cfg->led_off);
-    }
+    uint32_t index;
+    const task_actuator_cfg_t *p_task_actuator_cfg;
+    task_actuator_dta_t *p_task_actuator_dta;
+    task_actuator_st_t state;
+    task_actuator_ev_t event;
+    bool b_event;
+
+    /* Print out: Task Initialized */
+    LOGGER_INFO(" ");
+    LOGGER_INFO("  %s is running - %s", GET_NAME(task_actuator_init), p_task_actuator);
+    LOGGER_INFO("  %s is a %s", GET_NAME(task_actuator), p_task_actuator_);
+
+    /* Init & Print out: Task execution counter */
+    g_task_actuator_cnt = G_TASK_ACT_CNT_INIT;
+    LOGGER_INFO("   %s = %lu", GET_NAME(g_task_actuator_cnt), g_task_actuator_cnt);
+
+    for (index = 0; ACTUATOR_DTA_QTY > index; index++)
+    {
+        /* Update Task Actuator Configuration & Data Pointer */
+        p_task_actuator_cfg = &task_actuator_cfg_list[index];
+        p_task_actuator_dta = &task_actuator_dta_list[index];
+
+        /* Init & Print out: Index & Task execution FSM */
+        state = ST_LED_XX_OFF;
+        p_task_actuator_dta->state = state;
+
+        event = EV_LED_XX_OFF;
+        p_task_actuator_dta->event = event;
+
+        b_event = false;
+        p_task_actuator_dta->flag = b_event;
+
+        LOGGER_INFO(" ");
+        LOGGER_INFO("   %s = %lu   %s = %lu   %s = %lu   %s = %s",
+                GET_NAME(index), index,
+                GET_NAME(state), (uint32_t)state,
+                GET_NAME(event), (uint32_t)event,
+                GET_NAME(b_event), (b_event ? "true" : "false"));
+
+        HAL_GPIO_WritePin(p_task_actuator_cfg->gpio_port,
+                p_task_actuator_cfg->pin,
+                p_task_actuator_cfg->led_off);
+    }
 }
 
 void task_actuator_update(void *parameters)
 {
-    bool b_time_update_required = false;
+    bool b_time_update_required = false;
 
-    /* Protect shared resource */
-    __asm("CPSID i");    /* disable interrupts*/
+    /* Protect shared resource */
+    __asm("CPSID i");    /* disable interrupts*/
     if (G_TASK_ACT_TICK_CNT_INI < g_task_actuator_tick_cnt)
     {
-        /* Update Tick Counter */
-        g_task_actuator_tick_cnt--;
-        b_time_update_required = true;
+        /* Update Tick Counter */
+        g_task_actuator_tick_cnt--;
+        b_time_update_required = true;
     }
     __asm("CPSIE i");    /* enable interrupts */
 
     while (b_time_update_required)
     {
-        /* Update Task Counter */
-        g_task_actuator_cnt++;
-
-        /* Run Task Statechart */
-        task_actuator_statechart();
-
-        /* Protect shared resource */
-        __asm("CPSID i");    /* disable interrupts */
-        if (G_TASK_ACT_TICK_CNT_INI < g_task_actuator_tick_cnt)
-        {
-            /* Update Tick Counter */
-            g_task_actuator_tick_cnt--;
-            b_time_update_required = true;
-        }
-        else
-        {
-            b_time_update_required = false;
-        }
-        __asm("CPSIE i");    /* enable interrupts */
+        /* Update Task Counter */
+        g_task_actuator_cnt++;
+
+        /* Run Task Statechart */
+        task_actuator_statechart();
+
+        /* Protect shared resource */
+        __asm("CPSID i"); /* disable interrupts */
+        if (G_TASK_ACT_TICK_CNT_INI < g_task_actuator_tick_cnt)
+        {
+            /* Update Tick Counter */
+            g_task_actuator_tick_cnt--;
+            b_time_update_required = true;
+        }
+        else
+        {
+            b_time_update_required = false;
+        }
+        __asm("CPSIE i");    /* enable interrupts */
     }
 }
 
 void task_actuator_statechart(void)
 {
-    uint32_t index;
-    const task_actuator_cfg_t *p_task_actuator_cfg;
-    task_actuator_dta_t *p_task_actuator_dta;
-
-    for (index = 0; ACTUATOR_DTA_QTY > index; index++)
-    {
-        /* Update Task Actuator Configuration & Data Pointer */
-        p_task_actuator_cfg = &task_actuator_cfg_list[index];
-        p_task_actuator_dta = &task_actuator_dta_list[index];
-
-        switch (p_task_actuator_dta->state)
-        {
-            case ST_LED_XX_OFF:
-
-                if ((true == p_task_actuator_dta->flag) && (EV_LED_XX_ON == p_task_actuator_dta->event))
-                {
-                    p_task_actuator_dta->flag = false;
-                    HAL_GPIO_WritePin(p_task_actuator_cfg->gpio_port, p_task_actuator_cfg->pin, p_task_actuator_cfg->led_on);
-                    p_task_actuator_dta->state = ST_LED_XX_ON;
-                }
-
-                break;
-
-            case ST_LED_XX_ON:
-
-                if ((true == p_task_actuator_dta->flag) && (EV_LED_XX_OFF == p_task_actuator_dta->event))
-                {
-                    p_task_actuator_dta->flag = false;
-                    HAL_GPIO_WritePin(p_task_actuator_cfg->gpio_port, p_task_actuator_cfg->pin, p_task_actuator_cfg->led_off);
-                    p_task_actuator_dta->state = ST_LED_XX_OFF;
-                }
-
-                break;
-
-            case ST_LED_XX_BLINK_ON:
+    uint32_t index;
+    const task_actuator_cfg_t *p_task_actuator_cfg;
+    task_actuator_dta_t *p_task_actuator_dta;
 
-                break;
-
-            case ST_LED_XX_BLINK_OFF:
-
-                break;
-
-            case ST_LED_XX_PULSE:
-
-                break;
-
-            default:
-
-                p_task_actuator_dta->tick  = DEL_LED_XX_MIN;
-                p_task_actuator_dta->state = ST_LED_XX_OFF;
-                p_task_actuator_dta->event = EV_LED_XX_OFF;
-                p_task_actuator_dta->flag = false;
-
-                break;
-        }
-    }
+    for (index = 0; ACTUATOR_DTA_QTY > index; index++)
+    {
+        /* Update Task Actuator Configuration & Data Pointer */
+        p_task_actuator_cfg = &task_actuator_cfg_list[index];
+        p_task_actuator_dta = &task_actuator_dta_list[index];
+
+        switch (p_task_actuator_dta->state)
+        {
+            case ST_LED_XX_OFF:
+                if (true == p_task_actuator_dta->flag)
+                {
+                    p_task_actuator_dta->flag = false;
+                    switch(p_task_actuator_dta->event)
+                    {
+                        case EV_LED_XX_ON:
+                            p_task_actuator_dta->state = ST_LED_XX_ON;
+                            HAL_GPIO_WritePin(
+                                    p_task_actuator_cfg->gpio_port,
+                                    p_task_actuator_cfg->pin,
+                                    p_task_actuator_cfg->led_on);
+                        break;
+
+                        case EV_LED_XX_BLINK:
+                            p_task_actuator_dta->tick  = DEL_LED_XX_BLI;
+                            p_task_actuator_dta->state = ST_LED_XX_BLINK_ON;
+                            HAL_GPIO_WritePin(
+                                    p_task_actuator_cfg->gpio_port,
+                                    p_task_actuator_cfg->pin,
+                                    p_task_actuator_cfg->led_on);
+                        break;
+
+                        case EV_LED_XX_PULSE:
+                            p_task_actuator_dta->tick  = DEL_LED_XX_PUL;
+                            p_task_actuator_dta->state = ST_LED_XX_PULSE;
+                            HAL_GPIO_WritePin(
+                                    p_task_actuator_cfg->gpio_port,
+                                    p_task_actuator_cfg->pin,
+                                    p_task_actuator_cfg->led_on);
+                        default:
+                        break;
+                    }
+                }
+            break;
+
+            case ST_LED_XX_ON:
+                if ((true == p_task_actuator_dta->flag)
+                        && (EV_LED_XX_OFF == p_task_actuator_dta->event))
+                {
+                    p_task_actuator_dta->flag = false;
+                    p_task_actuator_dta->state = ST_LED_XX_OFF;
+                    HAL_GPIO_WritePin(
+                            p_task_actuator_cfg->gpio_port,
+                            p_task_actuator_cfg->pin,
+                            p_task_actuator_cfg->led_off);
+                }
+
+            break;
+
+            case ST_LED_XX_BLINK_ON:
+                if (true == p_task_actuator_dta->flag)
+                {
+                    p_task_actuator_dta->flag = false;
+                    switch(p_task_actuator_dta->event)
+                    {
+                        case EV_LED_XX_OFF:
+                            p_task_actuator_dta->state = ST_LED_XX_OFF;
+                            HAL_GPIO_WritePin(
+                                    p_task_actuator_cfg->gpio_port,
+                                    p_task_actuator_cfg->pin,
+                                    p_task_actuator_cfg->led_off);
+                        break;
+                        case EV_LED_XX_ON:
+                            p_task_actuator_dta->state = ST_LED_XX_ON;
+                            HAL_GPIO_WritePin(
+                                    p_task_actuator_cfg->gpio_port,
+                                    p_task_actuator_cfg->pin,
+                                    p_task_actuator_cfg->led_on);
+                        default:
+                        break;
+                    }
+                }
+
+                if (DEL_LED_XX_MIN == p_task_actuator_dta->tick)
+                {
+                    p_task_actuator_dta->state = ST_LED_XX_BLINK_OFF;
+                    p_task_actuator_dta->tick = DEL_LED_XX_BLI;
+                    HAL_GPIO_WritePin(
+                            p_task_actuator_cfg->gpio_port,
+                            p_task_actuator_cfg->pin,
+                            p_task_actuator_cfg->led_off);
+                }
+
+                if (DEL_LED_XX_MIN < p_task_actuator_dta->tick)
+                {
+                    p_task_actuator_dta->state = ST_LED_XX_BLINK_ON;
+                    p_task_actuator_dta->tick--;
+                }
+            break;
+
+            case ST_LED_XX_BLINK_OFF:
+                if (true == p_task_actuator_dta->flag)
+                {
+                    p_task_actuator_dta->flag = false;
+                    switch(p_task_actuator_dta->event)
+                    {
+                        case EV_LED_XX_OFF:
+                            p_task_actuator_dta->state = ST_LED_XX_OFF;
+                            HAL_GPIO_WritePin(
+                                    p_task_actuator_cfg->gpio_port,
+                                    p_task_actuator_cfg->pin,
+                                    p_task_actuator_cfg->led_off);
+                        break;
+                        case EV_LED_XX_ON:
+                            p_task_actuator_dta->state = ST_LED_XX_ON;
+                            HAL_GPIO_WritePin(
+                                    p_task_actuator_cfg->gpio_port,
+                                    p_task_actuator_cfg->pin,
+                                    p_task_actuator_cfg->led_on);
+                        default:
+                        break;
+                    }
+                }
+
+                if (DEL_LED_XX_MIN == p_task_actuator_dta->tick)
+                {
+                    p_task_actuator_dta->state = ST_LED_XX_BLINK_ON;
+                    p_task_actuator_dta->tick = DEL_LED_XX_BLI;
+                    HAL_GPIO_WritePin(
+                            p_task_actuator_cfg->gpio_port,
+                            p_task_actuator_cfg->pin,
+                            p_task_actuator_cfg->led_on);
+                }
+
+                if (DEL_LED_XX_MIN < p_task_actuator_dta->tick)
+                {
+                    p_task_actuator_dta->state = ST_LED_XX_BLINK_OFF;
+                    p_task_actuator_dta->tick--;
+                }
+            break;
+
+            case ST_LED_XX_PULSE:
+                if (DEL_LED_XX_MIN == p_task_actuator_dta->tick)
+                {
+                    p_task_actuator_dta->state = ST_LED_XX_OFF;
+                    HAL_GPIO_WritePin(
+                            p_task_actuator_cfg->gpio_port,
+                            p_task_actuator_cfg->pin,
+                            p_task_actuator_cfg->led_off);
+                }
+
+                if (DEL_LED_XX_MIN < p_task_actuator_dta->tick)
+                {
+                    p_task_actuator_dta->tick--;
+                }
+            break;
+
+            default:
+                p_task_actuator_dta->tick  = DEL_LED_XX_MIN;
+                p_task_actuator_dta->state = ST_LED_XX_OFF;
+                p_task_actuator_dta->event = EV_LED_XX_OFF;
+                p_task_actuator_dta->flag = false;
+            break;
+        }
+    }
 }
 
 /********************** end of file ******************************************/