tdse-tf_3-02

Controlador PID para derretidor de miel con control local via botones y remoto via WiFi
Index Commits Files Refs Submodules README
firmware-nucleo/App/Inc/task_buttons_attribute.h (4497B)
   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_BUTTONS_ATTRIBUTE_H_
   9 #define TASK_INC_TASK_BUTTONS_ATTRIBUTE_H_
  10 
  11 #ifdef __cplusplus
  12 extern "C" {
  13 #endif
  14 
  15 // TODO: Move every button related code to a separate generic button module 
  16 
  17 /* 
  18  * Sensor Statechart - State Transition Table
  19  *
  20  * +-------------------+----------------+-------------+-------------------+-----------------------+
  21  * | Current           | Event          |             | Next              |                       |
  22  * | State             | (Parameters)   | [Guard]     | State             | Actions               |
  23  * |===================+================+=============+===================+=======================|
  24  * | INICIAL           |                |             | ST_BTN_XX_UP      |                       |
  25  * |-------------------+----------------+-------------+-------------------+-----------------------|
  26  * | ST_BTN_XX_UP      | EV_BTN_XX_UP   |             | ST_BTN_XX_UP      |                       |
  27  * |                   +----------------+-------------+-------------------+-----------------------|
  28  * |                   | EV_BTN_XX_DOWN |             | ST_BTN_XX_FALLING | tick = TICK_MAX       |
  29  * |-------------------+----------------+-------------+-------------------+-----------------------|
  30  * | ST_BTN_XX_FALLING | EV_BTN_XX_UP   | [tick == 0] | ST_BTN_XX_UP      |                       |
  31  * |                   |                +-------------+-------------------+-----------------------|
  32  * |                   |                | [tick >  0] | ST_BTN_XX_FALLING | tick--                |
  33  * |                   +----------------+-------------+-------------------+-----------------------|
  34  * |                   | EV_BTN_XX_DOWN | [tick == 0] | ST_BTN_XX_DOWN    | put_event_task_system |
  35  * |                   |                |             |                   |  (event)              |
  36  * |                   |                +-------------+-------------------+-----------------------|
  37  * |                   |                | [tick >  0] | ST_BTN_XX_FALLING | tick--                |
  38  * |-------------------+----------------+-------------+-------------------+-----------------------|
  39  * | ST_BTN_XX_DOWN    | EV_BTN_XX_UP   |             | ST_BTN_XX_RISING  | tick = TICK_MAX       |
  40  * |                   +----------------+-------------+-------------------+-----------------------|
  41  * |                   | EV_BTN_XX_DOWN |             | ST_BTN_XX_DOWN    |                       |
  42  * |-------------------+----------------+-------------+-------------------+-----------------------|
  43  * | ST_BTN_XX_RISING  | EV_BTN_XX_UP   | [tick == 0] | ST_BTN_XX_UP      | put_event_task_system |
  44  * |                   |                |             |                   |  (event)              |
  45  * |                   |                +-------------+-------------------+-----------------------|
  46  * |                   |                | [tick >  0] | ST_BTN_XX_RISING  | tick--                |
  47  * |                   +----------------+-------------+-------------------+-----------------------|
  48  * |                   | EV_BTN_XX_DOWN | [tick == 0] | ST_BTN_XX_DOWN    |                       |
  49  * |                   |                +-------------+-------------------+-----------------------|
  50  * |                   |                | [tick >  0] | ST_BTN_XX_RISING  | tick--                |
  51  * +-------------------+----------------+-------------+-------------------+-----------------------+
  52  *
  53  */
  54 
  55 /* Events to excite Task Sensor */
  56 typedef enum {
  57     EV_BTN_XX_UP,
  58     EV_BTN_XX_DOWN
  59 } task_buttons_ev_t;
  60 
  61 /* States of Task Sensor */
  62 typedef enum {
  63     ST_BTN_XX_UP,
  64     ST_BTN_XX_FALLING,
  65     ST_BTN_XX_DOWN,
  66     ST_BTN_XX_RISING,
  67     ST_SEN_READY
  68 } task_buttons_st_t;
  69 
  70 /* Identifier of Task Sensor */
  71 typedef enum {
  72     ID_BTN_A,
  73     ID_BTN_B,
  74     ID_BTN_C,
  75     ID_BTN_D,
  76 } task_buttons_id_t;
  77 
  78 typedef struct {
  79     task_buttons_id_t identifier;
  80     GPIO_TypeDef *gpio_port;
  81     uint16_t pin;
  82     GPIO_PinState pressed;
  83     uint32_t tick_max;
  84     task_buttons_ev_t signal_up;
  85     task_buttons_ev_t signal_down;
  86 } task_buttons_cfg_t;
  87 
  88 typedef struct {
  89     uint32_t tick;
  90     task_buttons_st_t state;
  91     task_buttons_ev_t event;
  92 } task_buttons_dta_t;
  93 
  94 #ifdef __cplusplus
  95 }
  96 #endif
  97 
  98 #endif /* TASK_INC_TASK_SENSOR_ATTRIBUTE_H_ */