// // Created by cfif on 13.03.2026. // #ifndef HVAC_DEV_ARBITERCOMMAND_H #define HVAC_DEV_ARBITERCOMMAND_H #include #include "SerialPortIO.h" #include "AtCmdCommon.h" #include "CanSerialPortFrame.h" typedef enum { SPONTANY_FROM_UART, SPONTANY_FROM_UART_USB } spontany_from_uart; typedef struct { tAtCmd At; uint8_t AtRx[255]; uint8_t AtTx[255]; tSerialPortIO *ioUART; tSerialPortFrameIO *ioCAN; spontany_from_uart from_uart; osMutexId_t access; osMessageQueueId_t txDataQueue_Spontany; osMessageQueueId_t txDataQueue_Cyclic0; osMessageQueueId_t txDataQueue_Cyclic1; struct { osThreadId_t id; uint32_t stack[1024]; StaticTask_t controlBlock; osThreadAttr_t attr; } thread; } tTaskSerial; typedef struct { tSerialPortFrameIO *ioCAN; osMutexId_t access; osMessageQueueId_t txDataQueue; struct { osThreadId_t id; uint32_t stack[1024]; StaticTask_t controlBlock; osThreadAttr_t attr; } thread; } tTaskSerialToCanCyclic; typedef struct { can_rx_message_type can_rx_message; spontany_from_uart from_uart; } can_rx_message_Spontany; typedef struct { tSerialPortFrameIO *ioCAN; osMutexId_t access; osMessageQueueId_t txDataQueue; tAtCmd *At_UART; tAtCmd *At_UART_USB; struct { osThreadId_t id; uint32_t stack[1024]; StaticTask_t controlBlock; osThreadAttr_t attr; } thread; } tTaskSerialToCanSpontany; void TaskSerialUART_Init(tTaskSerial *env, spontany_from_uart from_uart, tSerialPortIO *ioUART, tSerialPortFrameIO *ioCAN, osMessageQueueId_t txDataQueue_Spontany, osMessageQueueId_t txDataQueue_Cyclic0, osMessageQueueId_t txDataQueue_Cyclic1 ); void TaskSerialUART_StartThread(tTaskSerial *env); void TaskSerialUSB_Init(tTaskSerial *env, spontany_from_uart from_uart, tSerialPortIO *ioUART, tSerialPortFrameIO *ioCAN, osMessageQueueId_t txDataQueue_Spontany, osMessageQueueId_t txDataQueue_Cyclic0, osMessageQueueId_t txDataQueue_Cyclic1 ); void TaskSerialUSB_StartThread(tTaskSerial *env); void TaskSerialToCanCyclic0_Init(tTaskSerialToCanCyclic *env, tSerialPortFrameIO *ioCAN, osMessageQueueId_t txDataQueue ); void TaskSerialToCanCyclic0_StartThread(tTaskSerialToCanCyclic *env); void TaskSerialToCanCyclic1_Init(tTaskSerialToCanCyclic *env, tSerialPortFrameIO *ioCAN, osMessageQueueId_t txDataQueue); void TaskSerialToCanCyclic1_StartThread(tTaskSerialToCanCyclic *env); void TaskSerialToCanSpontany_Init(tTaskSerialToCanSpontany *env, tSerialPortFrameIO *ioCAN, osMessageQueueId_t txDataQueue, tAtCmd *At_UART, tAtCmd *At_UART_USB ); void TaskSerialToCanSpontany_StartThread(tTaskSerialToCanSpontany *env); #endif //HVAC_DEV_ARBITERCOMMAND_H