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/Src/task_menu_interface.c (1783B)
   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  * All rights reserved
   6  *
   7  * See file `LICENSE` for full details
   8  */
   9 
  10 /* Project includes */
  11 #include "main.h"
  12 
  13 /* Demo includes */
  14 #include "logger.h"
  15 #include "dwt.h"
  16 
  17 /* Application & Tasks includes */
  18 #include "app.h"
  19 #include "task_menu_attribute.h"
  20 
  21 #define EVENT_UNDEFINED (255)
  22 #define MAX_EVENTS      (16)
  23 
  24 static struct {
  25     uint32_t head;
  26     uint32_t tail;
  27     uint32_t count;
  28     task_menu_ev_t queue[MAX_EVENTS];
  29 } task_menu_event_queue;
  30 
  31 // External functions definition
  32 void task_menu_interface_init_event_queue(void)
  33 {
  34     uint32_t i;
  35 
  36     task_menu_event_queue.head = 0;
  37     task_menu_event_queue.tail = 0;
  38     task_menu_event_queue.count = 0;
  39 
  40     for (i = 0; i < MAX_EVENTS; i++)
  41     {
  42         task_menu_event_queue.queue[i] = EVENT_UNDEFINED;
  43     }
  44 }
  45 
  46 void task_menu_interface_put_event(task_menu_ev_t event)
  47 {
  48     task_menu_event_queue.count++;
  49     task_menu_event_queue.queue[task_menu_event_queue.head++] = event;
  50 
  51     if (MAX_EVENTS == task_menu_event_queue.head)
  52     {
  53         task_menu_event_queue.head = 0;
  54     }
  55 }
  56 
  57 task_menu_ev_t task_menu_interface_get_event(void)
  58 {
  59     task_menu_ev_t event;
  60 
  61     task_menu_event_queue.count--;
  62     event = task_menu_event_queue.queue[task_menu_event_queue.tail];
  63     task_menu_event_queue.queue[task_menu_event_queue.tail++] = EVENT_UNDEFINED;
  64 
  65     if (MAX_EVENTS == task_menu_event_queue.tail)
  66     {
  67         task_menu_event_queue.tail = 0;
  68     }
  69 
  70     return event;
  71 }
  72 
  73 bool task_menu_interface_any_event(void)
  74 {
  75     return (task_menu_event_queue.head != task_menu_event_queue.tail);
  76 }