HVAC_DEV_V2_ArbiterCommand/ArbiterCommand.h

176 lines
4.0 KiB
C

//
// Created by cfif on 13.03.2026.
//
#ifndef HVAC_DEV_ARBITERCOMMAND_H
#define HVAC_DEV_ARBITERCOMMAND_H
#include <cmsis_os.h>
#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