#ifndef SHARED_DATA_H #define SHARED_DATA_H #include "FreeRTOS.h" #include "queue.h" #include "event_groups.h" #include "cmsis_os.h" #include #define CMD_TURN_ON_RELAY 0x01 #define CMD_TURN_OFF_RELAY 0x02 #define CMD_TURN_ON_MOSFET 0x03 #define CMD_TURN_OFF_MOSFET 0x04 #define CMD_UPDATE_TEMP 0x05 #define CMD_UPDATE_HUMID 0x06 #define CMD_SYNC_RELAY 0x07 #define CMD_SYNC_MOSFET 0x08 #define CMD_SMOKE_ALERT 0x09 #define CMD_MQ2_ANALOG 0x0A #define SMOKE_ALERT_BIT (1 << 0) extern osMessageQId CommandQueueHandle; extern osMessageQId TelemetryQueueHandle; extern EventGroupHandle_t AlertEvent; #define PACK_MSG(cmd, id, payload) (((uint32_t)(cmd) << 24) | ((uint32_t)(id) << 16) | ((uint16_t)(payload))) #define UNPACK_CMD(msg) ((uint8_t)((msg) >> 24)) #define UNPACK_ID(msg) ((uint8_t)(((msg) >> 16) & 0xFF)) #define UNPACK_PAYLOAD(msg) ((uint16_t)((msg) & 0xFFFF)) #endif /* SHARED_DATA_H */