firmware-nucleo/App/Inc/task_system_attribute.h (2124B)
1 /* 2 * Copyright (c) 2026 Martin Javier Klöckner <mklockner@fi.uba.ar> 3 * 4 * See file `LICENSE` for full details 5 */ 6 7 #ifndef TASK_INC_TASK_SYSTEM_ATTRIBUTE_H_ 8 #define TASK_INC_TASK_SYSTEM_ATTRIBUTE_H_ 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 /* System Statechart - State Transition Table 15 * 16 * +----------------+-------+---------------------------+----------------+-----------------------------+ 17 * | Current state | Event | [Guard] | Next state | Actions | 18 * | | | | | | 19 * +================+=======+===========================+================+=============================+ 20 * | ST_SYS_LED_ON | | [tick < LED_PERIOD_MS* | ST_SYS_LED_OFF | put_event_actuator(LED_OFF) | 21 * | | | LED_PERCENT_ON] | | | 22 * +----------------+-------+---------------------------+----------------+-----------------------------+ 23 * | ST_SYS_LED_OFF | | [tick > 0] | ST_SYS_LED_ON | tick = TICK_MAX | 24 * | | | | | put_event_actuator(LED_ON) | 25 * +----------------+-------+---------------------------+----------------+-----------------------------+ 26 * 27 */ 28 29 typedef enum task_system_ev { 30 EV_SYS_IDLE, 31 EV_SYS_BTN_A_IDLE, 32 EV_SYS_BTN_A_ACTIVE, 33 EV_SYS_BTN_B_IDLE, 34 EV_SYS_BTN_B_ACTIVE, 35 EV_SYS_BTN_C_IDLE, 36 EV_SYS_BTN_C_ACTIVE, 37 EV_SYS_BTN_D_IDLE, 38 EV_SYS_BTN_D_ACTIVE, 39 40 EV_SYS_REM_TEMP_CTRL_ENABLED, 41 EV_SYS_REM_TIMER_TOGGLE, 42 EV_SYS_REM_TEMP_SET, 43 } task_system_ev_t; 44 45 typedef enum task_system_st { 46 ST_SYS_IDLE, 47 ST_SYS_CLOCK_SET, 48 ST_SYS_TEMP_SET, 49 ST_SYS_TIMER_SET_STATUS, 50 ST_SYS_TIMER_SET_START, 51 ST_SYS_TIMER_SET_END, 52 } task_system_st_t; 53 54 typedef struct { 55 uint32_t tick; 56 task_system_st_t state; 57 task_system_ev_t event; 58 bool event_flag; 59 } task_system_dta_t; 60 61 #ifdef __cplusplus 62 } 63 #endif 64 65 #endif /* TASK_INC_TASK_SYSTEM_ATTRIBUTE_H_ */
