// // 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 { FROM_UART, FROM_UART_USB } tFrom_uart; 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; tFrom_uart from_uart; } can_rx_message_Spontany; typedef struct { tSerialPortFrameIO *ioCAN; // osMutexId_t access; osMessageQueueId_t txDataQueue; tSerialPortIO *ioUART; tSerialPortIO *ioUSB; struct { osThreadId_t id; uint32_t stack[1024]; StaticTask_t controlBlock; osThreadAttr_t attr; } thread; } tTaskSerialToCanSpontany; typedef struct { tAtCmd At; uint8_t AtRx[255]; uint8_t AtTx[255]; tSerialPortIO *ioUART; tFrom_uart from_uart; // osMutexId_t access; tTaskSerialToCanCyclic *TaskSerialToCanCyclic0; tTaskSerialToCanCyclic *TaskSerialToCanCyclic1; tTaskSerialToCanSpontany *TaskSerialToCanSpontany; struct { osThreadId_t id; uint32_t stack[1024]; StaticTask_t controlBlock; osThreadAttr_t attr; } thread; } tTaskSerial; void TaskSerialUART_Init(tTaskSerial *env, tFrom_uart from_uart, tSerialPortIO *ioUART, tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, tTaskSerialToCanSpontany *TaskSerialToCanSpontany ); void TaskSerialUART_StartThread(tTaskSerial *env); void TaskSerialUSB_Init(tTaskSerial *env, tFrom_uart from_uart, tSerialPortIO *ioUART, tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, tTaskSerialToCanSpontany *TaskSerialToCanSpontany ); void TaskSerialUSB_StartThread(tTaskSerial *env); void TaskSerialToCanCyclic0_Init(tTaskSerialToCanCyclic *env, tSerialPortFrameIO *ioCAN ); void TaskSerialToCanCyclic0_StartThread(tTaskSerialToCanCyclic *env); void TaskSerialToCanCyclic1_Init(tTaskSerialToCanCyclic *env, tSerialPortFrameIO *ioCAN); void TaskSerialToCanCyclic1_StartThread(tTaskSerialToCanCyclic *env); void TaskSerialToCanSpontany_Init(tTaskSerialToCanSpontany *env, tSerialPortFrameIO *ioCAN, tSerialPortIO *ioUART, tSerialPortIO *ioUSB ); void TaskSerialToCanSpontany_StartThread(tTaskSerialToCanSpontany *env); #endif //HVAC_DEV_ARBITERCOMMAND_H