// // 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_USB1, FROM_USB2 } tFrom_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_usb from_usb; } can_rx_message_Spontany; typedef struct { tSerialPortFrameIO *ioCAN; // osMutexId_t access; osMessageQueueId_t txDataQueue; tSerialPortIO *ioUSB1; tSerialPortIO *ioUSB2; 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_usb from_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; typedef struct { tSerialPortFrameIO *ioCAN; tSerialPortIO *ioUSB; tFrom_usb from_usb; // osMutexId_t access; can_rx_message_type canFrame; char text[32]; char buf[32]; char bufWithPrefix[32]; struct { osThreadId_t id; uint32_t stack[1024]; StaticTask_t controlBlock; osThreadAttr_t attr; } thread; } tTaskReceivedSerial; void TaskSerialUSB1_Init(tTaskSerial *env, tFrom_usb from_usb, tSerialPortIO *ioUSB1, tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, tTaskSerialToCanSpontany *TaskSerialToCanSpontany ); void TaskSerialUSB1_StartThread(tTaskSerial *env); void TaskSerialUSB2_Init(tTaskSerial *env, tFrom_usb from_usb, tSerialPortIO *ioUSB2, 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); void Task_RECEIVED_SerialUSB1_Init(tTaskReceivedSerial *env, tSerialPortFrameIO *ioCAN, tFrom_usb from_usb1, tSerialPortIO *ioUSB1); void Task_RECEIVED_SerialUSB1_StartThread(tTaskReceivedSerial *env); void Task_RECEIVED_SerialUSB2_Init(tTaskReceivedSerial *env, tSerialPortFrameIO *ioCAN, tFrom_usb from_usb2, tSerialPortIO *ioUSB2); void Task_RECEIVED_SerialUSB2_StartThread(tTaskReceivedSerial *env); #endif //HVAC_DEV_ARBITERCOMMAND_H