11#include "common/phal/gpio.h"
14static constexpr uint32_t PREFLIGHT_DURATION_MS = 1500;
15static constexpr uint32_t HEARTBEAT_PERIOD_MS = 100;
16static constexpr uint32_t CONN_LED_TIMEOUT_MS = 1000;
18typedef enum : uint8_t {
19 HEARTBEAT_STATE_PREFLIGHT,
20 HEARTBEAT_STATE_NORMAL
24 GPIO_TypeDef *heartbeat_port;
25 uint32_t heartbeat_pin;
26 GPIO_TypeDef *connection_port;
27 uint32_t connection_pin;
28 GPIO_TypeDef *error_port;
30 void (*preflight_callback)(void);
31 heartbeat_state_t state;
47#define DEFINE_HEARTBEAT_TASK(PREFLIGHT_CALLBACK) \
48 status_leds_t status_leds = { \
49 .heartbeat_port = HEARTBEAT_LED_PORT, \
50 .heartbeat_pin = HEARTBEAT_LED_PIN, \
51 .connection_port = CONNECTION_LED_PORT, \
52 .connection_pin = CONNECTION_LED_PIN, \
53 .error_port = ERROR_LED_PORT, \
54 .error_pin = ERROR_LED_PIN, \
55 .preflight_callback = (PREFLIGHT_CALLBACK), \
56 .state = HEARTBEAT_STATE_PREFLIGHT \
58 void heartbeat_wrapper(void) { heartbeat_task(&status_leds); }; \
59 DEFINE_TASK(heartbeat_wrapper, HEARTBEAT_PERIOD_MS, osPriorityLow, STACK_512)
61#define START_HEARTBEAT_TASK() START_TASK(heartbeat_wrapper)
Wrapper macros for FreeRTOS constructs (tasks, queues, semaphores) to simplify static memory allocati...
Definition heartbeat.h:23