HVAC_DEV_ArbiterCommand/ArbiterCommand.h

133 lines
3.3 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 {
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