// // 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_USB1, FROM_UART_USB2 } tFrom_num_usb; 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_num_usb from_num_usb; } can_rx_message_Spontany; typedef struct { tSerialPortFrameIO *ioCAN; // osMutexId_t access; osMessageQueueId_t txDataQueue; tSerialPortIO *ioUSB2; tSerialPortIO *ioUSB1; 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 *ioUSB; tFrom_num_usb from_num_usb; // 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 TaskSerialUSB1_Init(tTaskSerial *env, tFrom_num_usb from_num_usb, tSerialPortIO *ioUSB, tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, tTaskSerialToCanSpontany *TaskSerialToCanSpontany ); void TaskSerialUSB1_StartThread(tTaskSerial *env); void TaskSerialUSB2_Init(tTaskSerial *env, tFrom_num_usb from_num_usb, tSerialPortIO *ioUSB, tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, tTaskSerialToCanSpontany *TaskSerialToCanSpontany ); void TaskSerialUSB2_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 *ioUSB1, tSerialPortIO *ioUSB2 ); void TaskSerialToCanSpontany_StartThread(tTaskSerialToCanSpontany *env); #endif //HVAC_DEV_ARBITERCOMMAND_H