Init
This commit is contained in:
parent
00cad94ce9
commit
88c1a4cf57
170
ArbiterCommand.c
170
ArbiterCommand.c
|
|
@ -8,6 +8,7 @@
|
|||
#include "AtCmdCommonProtected.h"
|
||||
#include "AsciiStringParsingUtils.h"
|
||||
#include "memory.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
/*
|
||||
void sendOk(tAtCmd *AtCmd) {
|
||||
|
|
@ -445,7 +446,7 @@ static _Noreturn void Serial_UART_Thread(tTaskSerial *env) {
|
|||
|
||||
// if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||
|
||||
SerialCommand_Scheduler(env);
|
||||
SerialCommand_Scheduler(env);
|
||||
|
||||
// osMutexRelease(env->access);
|
||||
// }
|
||||
|
|
@ -504,7 +505,7 @@ static _Noreturn void Serial_USB_Thread(tTaskSerial *env) {
|
|||
|
||||
// if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||
|
||||
SerialCommand_Scheduler(env);
|
||||
SerialCommand_Scheduler(env);
|
||||
|
||||
// osMutexRelease(env->access);
|
||||
// }
|
||||
|
|
@ -521,4 +522,167 @@ void TaskSerialUSB_StartThread(tTaskSerial *env) {
|
|||
|
||||
//конец ------------------------------Обработчик UART USB команд-------------------------------------------------------
|
||||
//конец ------------------------------Обработчик UART USB команд-------------------------------------------------------
|
||||
//конец ------------------------------Обработчик UART USB команд-------------------------------------------------------
|
||||
//конец ------------------------------Обработчик UART USB команд-------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
void toAddPrefixStr(char *out, char *in, size_t len) {
|
||||
|
||||
if (len <= strlen(in)) {
|
||||
out[0] = '\0';
|
||||
strcat(out, in);
|
||||
return;
|
||||
}
|
||||
|
||||
size_t countPrefix = len - strlen(in);
|
||||
|
||||
for (size_t i = 0; i < countPrefix; ++i)
|
||||
out[i] = '0';
|
||||
|
||||
out[countPrefix] = '\0';
|
||||
|
||||
strcat(out, in);
|
||||
}
|
||||
|
||||
|
||||
void SerialReceivedCommand_Scheduler(tTaskReceivedSerial *env) {
|
||||
uint16_t recv;
|
||||
|
||||
if (env->from_uart == FROM_UART) {
|
||||
recv = env->ioCAN->receive0(env->ioCAN->env, (uint8_t *) &env->canFrame, 1, 1000);
|
||||
|
||||
} else {
|
||||
recv = env->ioCAN->receive1(env->ioCAN->env, (uint8_t *) &env->canFrame, 1, 1000);
|
||||
}
|
||||
|
||||
env->text[0] = '\0';
|
||||
|
||||
if (env->canFrame.id_type == CAN_ID_STANDARD) {
|
||||
strcat(env->text, "T"); // команда
|
||||
|
||||
strcat(env->text, "00"); // Без ожидания OK
|
||||
strcat(env->text, "00"); // признак команда (00)
|
||||
utoa(env->canFrame.standard_id, env->buf, 16);
|
||||
toAddPrefixStr(env->bufWithPrefix, env->buf, 4);
|
||||
strcat(env->text, env->bufWithPrefix); // Адрес
|
||||
|
||||
for (uint8_t i = 0; i < env->canFrame.dlc; ++i) {
|
||||
utoa(env->canFrame.data[i], env->buf, 16);
|
||||
toAddPrefixStr(env->bufWithPrefix, env->buf, 2);
|
||||
strcat(env->text, env->bufWithPrefix); // Адрес
|
||||
}
|
||||
|
||||
strcat(env->text, "\r\n"); // CR
|
||||
} else {
|
||||
strcat(env->text, "t"); // команда
|
||||
|
||||
strcat(env->text, "00"); // Без ожидания OK
|
||||
strcat(env->text, "00"); // признак команда (00)
|
||||
utoa(env->canFrame.extended_id, env->buf, 16);
|
||||
toAddPrefixStr(env->bufWithPrefix, env->buf, 8);
|
||||
strcat(env->text, env->bufWithPrefix); // Адрес
|
||||
|
||||
for (uint8_t i = 0; i < env->canFrame.dlc; ++i) {
|
||||
utoa(env->canFrame.data[i], env->buf, 16);
|
||||
toAddPrefixStr(env->bufWithPrefix, env->buf, 2);
|
||||
strcat(env->text, env->bufWithPrefix); // Адрес
|
||||
}
|
||||
|
||||
strcat(env->text, "\r\n"); // CR
|
||||
}
|
||||
|
||||
env->ioUART->transmit(env->ioUART->env, (uint8_t *)env->text, strlen(env->text), 1000);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//начало ------------------------------Обработчик очереди ВХОДЯЩИХ UART команд-----------------------------------------------------------
|
||||
//начало ------------------------------Обработчик очереди ВХОДЯЩИХ UART команд-----------------------------------------------------------
|
||||
//начало ------------------------------Обработчик очереди ВХОДЯЩИХ UART команд-----------------------------------------------------------
|
||||
|
||||
void Task_RECEIVED_SerialUART_Init(tTaskReceivedSerial *env,
|
||||
tSerialPortFrameIO *ioCAN,
|
||||
tFrom_uart from_uart,
|
||||
tSerialPortIO *ioUART) {
|
||||
|
||||
// env->access = osMutexNew(NULL);
|
||||
env->from_uart = from_uart;
|
||||
env->ioUART = ioUART;
|
||||
env->ioCAN = ioCAN;
|
||||
|
||||
SerialPortClearRxBuffer(env->ioUART);
|
||||
|
||||
InitThreadAtrStatic(&env->thread.attr, "SerialReceivedCanUART", env->thread.controlBlock, env->thread.stack,
|
||||
osPriorityNormal);
|
||||
}
|
||||
|
||||
|
||||
static _Noreturn void Serial_RECEIVED_UART_Thread(tTaskReceivedSerial *env) {
|
||||
for (;;) {
|
||||
|
||||
// if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||
|
||||
SerialReceivedCommand_Scheduler(env);
|
||||
|
||||
// osMutexRelease(env->access);
|
||||
// }
|
||||
|
||||
SystemDelayMs(1);
|
||||
}
|
||||
}
|
||||
|
||||
void Task_RECEIVED_SerialUART_StartThread(tTaskReceivedSerial *env) {
|
||||
if (!env->thread.id) {
|
||||
env->thread.id = osThreadNew((osThreadFunc_t) (Serial_RECEIVED_UART_Thread), (void *) (env), &env->thread.attr);
|
||||
}
|
||||
}
|
||||
|
||||
//конец ------------------------------Обработчик очереди ВХОДЯЩИХ UART команд-----------------------------------------------------------
|
||||
//конец ------------------------------Обработчик очереди ВХОДЯЩИХ UART команд-----------------------------------------------------------
|
||||
//конец ------------------------------Обработчик очереди ВХОДЯЩИХ UART команд-----------------------------------------------------------
|
||||
|
||||
|
||||
//начало ------------------------------Обработчик очереди ВХОДЯЩИХ UART USB команд-------------------------------------------------------
|
||||
//начало ------------------------------Обработчик очереди ВХОДЯЩИХ UART USB команд-------------------------------------------------------
|
||||
//начало ------------------------------Обработчик очереди ВХОДЯЩИХ UART USB команд-------------------------------------------------------
|
||||
|
||||
void Task_RECEIVED_SerialUSB_Init(tTaskReceivedSerial *env,
|
||||
tSerialPortFrameIO *ioCAN,
|
||||
tFrom_uart from_uart,
|
||||
tSerialPortIO *ioUART) {
|
||||
|
||||
// env->access = osMutexNew(NULL);
|
||||
env->from_uart = from_uart;
|
||||
env->ioUART = ioUART;
|
||||
env->ioCAN = ioCAN;
|
||||
|
||||
SerialPortClearRxBuffer(env->ioUART);
|
||||
|
||||
InitThreadAtrStatic(&env->thread.attr, "SerialReceivedCanUSB", env->thread.controlBlock, env->thread.stack,
|
||||
osPriorityNormal);
|
||||
}
|
||||
|
||||
|
||||
static _Noreturn void Serial_RECEIVED_USB_Thread(tTaskReceivedSerial *env) {
|
||||
for (;;) {
|
||||
|
||||
// if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||
|
||||
SerialReceivedCommand_Scheduler(env);
|
||||
|
||||
// osMutexRelease(env->access);
|
||||
// }
|
||||
|
||||
SystemDelayMs(1);
|
||||
}
|
||||
}
|
||||
|
||||
void Task_RECEIVED_SerialUSB_StartThread(tTaskReceivedSerial *env) {
|
||||
if (!env->thread.id) {
|
||||
env->thread.id = osThreadNew((osThreadFunc_t) (Serial_RECEIVED_USB_Thread), (void *) (env), &env->thread.attr);
|
||||
}
|
||||
}
|
||||
|
||||
//конец ------------------------------Обработчик очереди ВХОДЯЩИХ UART USB команд-------------------------------------------------------
|
||||
//конец ------------------------------Обработчик очереди ВХОДЯЩИХ UART USB команд-------------------------------------------------------
|
||||
//конец ------------------------------Обработчик очереди ВХОДЯЩИХ UART USB команд-------------------------------------------------------
|
||||
|
|
@ -81,6 +81,29 @@ typedef struct {
|
|||
} tTaskSerial;
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
tSerialPortFrameIO *ioCAN;
|
||||
tSerialPortIO *ioUART;
|
||||
tFrom_uart from_uart;
|
||||
// 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 TaskSerialUART_Init(tTaskSerial *env,
|
||||
tFrom_uart from_uart,
|
||||
tSerialPortIO *ioUART,
|
||||
|
|
@ -124,4 +147,29 @@ void TaskSerialToCanSpontany_Init(tTaskSerialToCanSpontany *env,
|
|||
|
||||
void TaskSerialToCanSpontany_StartThread(tTaskSerialToCanSpontany *env);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void Task_RECEIVED_SerialUART_Init(tTaskReceivedSerial *env,
|
||||
tSerialPortFrameIO *ioCAN,
|
||||
tFrom_uart from_uart,
|
||||
tSerialPortIO *ioUART);
|
||||
|
||||
void Task_RECEIVED_SerialUART_StartThread(tTaskReceivedSerial *env);
|
||||
|
||||
|
||||
|
||||
void Task_RECEIVED_SerialUSB_Init(tTaskReceivedSerial *env,
|
||||
tSerialPortFrameIO *ioCAN,
|
||||
tFrom_uart from_uart,
|
||||
tSerialPortIO *ioUART);
|
||||
|
||||
void Task_RECEIVED_SerialUSB_StartThread(tTaskReceivedSerial *env);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif //HVAC_DEV_ARBITERCOMMAND_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue