1 /* 2 * Copyright (c) 2023 Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>. 3 * Copyright (c) 2026 Martin Javier Klöckner <mklockner@fi.uba.ar> 4 * 5 * See file `LICENSE` for full details 6 */ 7 8 #ifndef TASK_INC_TASK_SENSOR_ATTRIBUTE_H_ 9 #define TASK_INC_TASK_SENSOR_ATTRIBUTE_H_ 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 /* Sensor Statechart - State Transition Table 16 * 17 * +---------------+----------------------+-------------+--------------+--------------------------+ 18 * | Current state | Event | [Guard] | Next state | Actions | 19 * +===============+======================+=============+==============+==========================+ 20 * | | | [tick == 0] | ST_SEN_BUSY | DS18B20_Read_temp() | 21 * + ST_SEN_READY +----------------------+-------------+--------------+--------------------------+ 22 * | | | | ST_SEN_READY | tick-- | 23 * +---------------+----------------------+-------------+--------------+--------------------------+ 24 * | ST_SEN_BUSY | EV_DS18B20_CONV_DONE | | ST_SEN_READY | tick = TEMP_READ_PERIOD | 25 * +---------------+----------------------+-------------+--------------+--------------------------+ 26 * 27 */ 28 29 /* Events to excite Task Sensor */ 30 typedef enum { 31 EV_DS18B20_CONV_DONE 32 } task_sensor_ev_t; 33 34 /* States of Task Sensor */ 35 typedef enum { 36 ST_SEN_READY, 37 ST_SEN_BUSY_WAITING_CONV, 38 ST_SEN_BUSY_WAITING_DMA, 39 } task_sensor_st_t; 40 41 /* Identifier of Task Sensor */ 42 typedef enum { 43 ID_DS18B20 44 } task_sensor_id_t; 45 46 typedef struct { 47 task_sensor_id_t identifier; 48 } task_sensor_cfg_t; 49 50 typedef struct { 51 uint32_t tick; 52 task_sensor_st_t state; 53 task_sensor_ev_t event; 54 } task_sensor_dta_t; 55 56 extern task_sensor_dta_t task_sensor_dta_list[]; 57 58 #ifdef __cplusplus 59 } 60 #endif 61 62 #endif /* TASK_INC_TASK_SENSOR_ATTRIBUTE_H_ */
