commit e129b91dd1913565da8231b4b34ae811d26c4ad9
parent c14f491f54477dedf18f3087e22d9315a5caf027
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Fri, 3 Oct 2025 13:48:41 -0300
Follow Michael Barr C standard
Also change file format to unix
Diffstat:
3 files changed, 199 insertions(+), 190 deletions(-)
diff --git a/app/inc/task_actuator_attribute.h b/app/inc/task_actuator_attribute.h
@@ -49,92 +49,98 @@ 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 task_actuator_ev {EV_LED_XX_OFF,
- EV_LED_XX_ON,
- EV_LED_XX_NOT_BLINK,
- EV_LED_XX_BLINK,
- EV_LED_XX_PULSE} task_actuator_ev_t;
+typedef enum {
+ EV_LED_XX_OFF,
+ EV_LED_XX_ON,
+ EV_LED_XX_NOT_BLINK,
+ EV_LED_XX_BLINK,
+ EV_LED_XX_PULSE
+} task_actuator_ev_t;
/* States of Task Actuator */
-typedef enum task_actuator_st {ST_LED_XX_OFF,
- ST_LED_XX_ON,
- ST_LED_XX_BLINK_ON,
- ST_LED_XX_BLINK_OFF,
- ST_LED_XX_PULSE} task_actuator_st_t;
+typedef enum {
+ ST_LED_XX_OFF,
+ ST_LED_XX_ON,
+ ST_LED_XX_BLINK_ON,
+ ST_LED_XX_BLINK_OFF,
+ ST_LED_XX_PULSE
+} task_actuator_st_t;
/* Identifier of Task Actuator */
-typedef enum task_actuator_id {ID_LED_A} task_actuator_id_t;
+typedef enum {
+ ID_LED_A
+} task_actuator_id_t;
typedef struct
{
- task_actuator_id_t identifier;
- GPIO_TypeDef * gpio_port;
- uint16_t pin;
- GPIO_PinState led_on;
- GPIO_PinState led_off;
- uint32_t tick_blink;
- uint32_t tick_pulse;
+ task_actuator_id_t identifier;
+ GPIO_TypeDef *gpio_port;
+ uint16_t pin;
+ GPIO_PinState led_on;
+ GPIO_PinState led_off;
+ uint32_t tick_blink;
+ uint32_t tick_pulse;
} task_actuator_cfg_t;
typedef struct
{
- uint32_t tick;
- task_actuator_st_t state;
- task_actuator_ev_t event;
- bool flag;
+ uint32_t tick;
+ task_actuator_st_t state;
+ task_actuator_ev_t event;
+ bool flag;
} task_actuator_dta_t;
/********************** external data declaration ****************************/
diff --git a/app/inc/task_sensor_attribute.h b/app/inc/task_sensor_attribute.h
@@ -111,17 +111,17 @@ typedef enum
typedef struct
{
task_sensor_id_t identifier;
- GPIO_TypeDef * gpio_port;
- uint16_t pin;
- GPIO_PinState pressed;
- uint32_t tick_max;
+ GPIO_TypeDef *gpio_port;
+ uint16_t pin;
+ GPIO_PinState pressed;
+ uint32_t tick_max;
task_sensor_ev_t signal_up;
task_sensor_ev_t signal_down;
} task_sensor_cfg_t;
typedef struct
{
- uint32_t tick;
+ uint32_t tick;
task_sensor_st_t state;
task_sensor_ev_t event;
} task_sensor_dta_t;
diff --git a/app/src/task_system_interface.c b/app/src/task_system_interface.c
@@ -1,112 +1,115 @@
-/*
- * Copyright (c) 2023 Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- *
- * @file : task_system_interface.c
- * @date : Set 26, 2023
- * @author : Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>
- * @version v1.0.0
- */
-
-/********************** inclusions *******************************************/
-/* Project includes */
-#include "main.h"
-
-/* Demo includes */
-#include "logger.h"
-#include "dwt.h"
-
-/* Application & Tasks includes */
-#include "board.h"
-#include "app.h"
-#include "task_system_attribute.h"
-
-/********************** macros and definitions *******************************/
-#define EVENT_UNDEFINED (255)
-#define MAX_EVENTS (16)
-
-/********************** internal data declaration ****************************/
-
-/********************** internal functions declaration ***********************/
-
-/********************** internal data definition *****************************/
-struct
-{
- uint32_t head;
- uint32_t tail;
- uint32_t count;
- task_system_ev_t queue[MAX_EVENTS];
-} queue_task_a;
-
-/********************** external data declaration ****************************/
-
-/********************** external functions definition ************************/
-void init_queue_event_task_system(void)
-{
- uint32_t i;
-
- queue_task_a.head = 0;
- queue_task_a.tail = 0;
- queue_task_a.count = 0;
-
- for (i = 0; i < MAX_EVENTS; i++)
- queue_task_a.queue[i] = EVENT_UNDEFINED;
-}
-
-void put_event_task_system(task_system_ev_t event)
-{
- queue_task_a.count++;
- queue_task_a.queue[queue_task_a.head++] = event;
-
- if (MAX_EVENTS == queue_task_a.head)
- queue_task_a.head = 0;
-}
-
-task_system_ev_t get_event_task_system(void)
-{
- task_system_ev_t event;
-
- queue_task_a.count--;
- event = queue_task_a.queue[queue_task_a.tail];
- queue_task_a.queue[queue_task_a.tail++] = EVENT_UNDEFINED;
-
- if (MAX_EVENTS == queue_task_a.tail)
- queue_task_a.tail = 0;
-
- return event;
-}
-
-bool any_event_task_system(void)
-{
- return (queue_task_a.head != queue_task_a.tail);
-}
-
-/********************** end of file ******************************************/
+/*
+ * Copyright (c) 2023 Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ *
+ * @file : task_system_interface.c
+ * @date : Set 26, 2023
+ * @author : Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>
+ * @version v1.0.0
+ */
+
+/********************** inclusions *******************************************/
+/* Project includes */
+#include "main.h"
+
+/* Demo includes */
+#include "logger.h"
+#include "dwt.h"
+
+/* Application & Tasks includes */
+#include "board.h"
+#include "app.h"
+#include "task_system_attribute.h"
+
+/********************** macros and definitions *******************************/
+#define EVENT_UNDEFINED (255)
+#define MAX_EVENTS (16)
+
+/********************** internal data declaration ****************************/
+
+/********************** internal functions declaration ***********************/
+
+/********************** internal data definition *****************************/
+struct
+{
+ uint32_t head;
+ uint32_t tail;
+ uint32_t count;
+ task_system_ev_t queue[MAX_EVENTS];
+} queue_task_a;
+
+/********************** external data declaration ****************************/
+
+/********************** external functions definition ************************/
+void init_queue_event_task_system(void)
+{
+ uint32_t i;
+
+ queue_task_a.head = 0;
+ queue_task_a.tail = 0;
+ queue_task_a.count = 0;
+
+ for (i = 0; i < MAX_EVENTS; i++) {
+ queue_task_a.queue[i] = EVENT_UNDEFINED;
+ }
+}
+
+void put_event_task_system(task_system_ev_t event)
+{
+ queue_task_a.count++;
+ queue_task_a.queue[queue_task_a.head++] = event;
+
+ if (MAX_EVENTS == queue_task_a.head) {
+ queue_task_a.head = 0;
+ }
+}
+
+task_system_ev_t get_event_task_system(void)
+{
+ task_system_ev_t event;
+
+ queue_task_a.count--;
+ event = queue_task_a.queue[queue_task_a.tail];
+ queue_task_a.queue[queue_task_a.tail++] = EVENT_UNDEFINED;
+
+ if (MAX_EVENTS == queue_task_a.tail) {
+ queue_task_a.tail = 0;
+ }
+
+ return event;
+}
+
+bool any_event_task_system(void)
+{
+ return (queue_task_a.head != queue_task_a.tail);
+}
+
+/********************** end of file ******************************************/