From e1d23f5f3e4bbdb81ecf8a773b82f7b31dc40708 Mon Sep 17 00:00:00 2001 From: cfif Date: Fri, 3 Apr 2026 16:16:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ArbiterCommand.c | 89 ++++++++++++++++++++++++------------------------ ArbiterCommand.h | 36 ++++++++++---------- 2 files changed, 62 insertions(+), 63 deletions(-) diff --git a/ArbiterCommand.c b/ArbiterCommand.c index a8d801d..69b74c1 100644 --- a/ArbiterCommand.c +++ b/ArbiterCommand.c @@ -187,16 +187,16 @@ void TaskSerialToCanCyclic1_StartThread(tTaskSerialToCanCyclic *env) { void TaskSerialToCanSpontany_Init(tTaskSerialToCanSpontany *env, tSerialPortFrameIO *ioCAN, - tSerialPortIO *ioUART, - tSerialPortIO *ioUSB + tSerialPortIO *ioUSB1, + tSerialPortIO *ioUSB2 ) { // env->access = osMutexNew(NULL); env->ioCAN = ioCAN; - env->ioUART = ioUART; - env->ioUSB = ioUSB; + env->ioUSB1 = ioUSB1; + env->ioUSB2 = ioUSB2; env->txDataQueue = osMessageQueueNew(20, sizeof(can_rx_message_Spontany), NULL); @@ -218,16 +218,16 @@ static _Noreturn void Serial_ToCanSpontany_Thread(tTaskSerialToCanSpontany *env) data.can_rx_message.dlc, data.can_rx_message.standard_id, 0, 2, 1000); if (sent) { - if (data.from_uart == FROM_UART) { - env->ioUART->transmit(env->ioUART->env, (uint8_t *) "OK\r\n", sizeof("OK\r\n") - 1, 1000); + if (data.from_num_usb == FROM_UART_USB1) { + env->ioUSB1->transmit(env->ioUSB1->env, (uint8_t *) "OK\r\n", sizeof("OK\r\n") - 1, 1000); } else { - env->ioUSB->transmit(env->ioUSB->env, (uint8_t *) "OK\r\n", sizeof("OK\r\n") - 1, 1000); + env->ioUSB2->transmit(env->ioUSB2->env, (uint8_t *) "OK\r\n", sizeof("OK\r\n") - 1, 1000); } } else { - if (data.from_uart == FROM_UART) { - env->ioUART->transmit(env->ioUART->env, (uint8_t *) "ERROR\r\n", sizeof("ERROR\r\n") - 1, 1000); + if (data.from_num_usb == FROM_UART_USB1) { + env->ioUSB1->transmit(env->ioUSB1->env, (uint8_t *) "ERROR\r\n", sizeof("ERROR\r\n") - 1, 1000); } else { - env->ioUSB->transmit(env->ioUSB->env, (uint8_t *) "ERROR\r\n", sizeof("ERROR\r\n") - 1, 1000); + env->ioUSB2->transmit(env->ioUSB2->env, (uint8_t *) "ERROR\r\n", sizeof("ERROR\r\n") - 1, 1000); } } @@ -237,16 +237,16 @@ static _Noreturn void Serial_ToCanSpontany_Thread(tTaskSerialToCanSpontany *env) 1000); if (sent) { - if (data.from_uart == FROM_UART) { - env->ioUART->transmit(env->ioUART->env, (uint8_t *) "OK\r\n", sizeof("OK\r\n") - 1, 1000); + if (data.from_num_usb == FROM_UART_USB1) { + env->ioUSB1->transmit(env->ioUSB1->env, (uint8_t *) "OK\r\n", sizeof("OK\r\n") - 1, 1000); } else { - env->ioUSB->transmit(env->ioUSB->env, (uint8_t *) "OK\r\n", sizeof("OK\r\n") - 1, 1000); + env->ioUSB2->transmit(env->ioUSB2->env, (uint8_t *) "OK\r\n", sizeof("OK\r\n") - 1, 1000); } } else { - if (data.from_uart == FROM_UART) { - env->ioUART->transmit(env->ioUART->env, (uint8_t *) "ERROR\r\n", sizeof("ERROR\r\n") - 1, 1000); + if (data.from_num_usb == FROM_UART_USB1) { + env->ioUSB1->transmit(env->ioUSB1->env, (uint8_t *) "ERROR\r\n", sizeof("ERROR\r\n") - 1, 1000); } else { - env->ioUSB->transmit(env->ioUSB->env, (uint8_t *) "ERROR\r\n", sizeof("ERROR\r\n") - 1, 1000); + env->ioUSB2->transmit(env->ioUSB2->env, (uint8_t *) "ERROR\r\n", sizeof("ERROR\r\n") - 1, 1000); } } @@ -315,7 +315,7 @@ void SerialCommand_Scheduler(tTaskSerial *env) { can_rx_message_Spontany dataCan; - dataCan.from_uart = env->from_uart; + dataCan.from_num_usb = env->from_num_usb; dataCan.can_rx_message.dlc = size; dataCan.can_rx_message.id_type = CAN_ID_STANDARD; dataCan.can_rx_message.standard_id = adr; @@ -365,7 +365,7 @@ void SerialCommand_Scheduler(tTaskSerial *env) { size = iAsciiStringParseHexBytes(data, &env->At.rxBuffer.data[9], len); can_rx_message_Spontany dataCan; - dataCan.from_uart = env->from_uart; + dataCan.from_num_usb = env->from_num_usb; dataCan.can_rx_message.dlc = size; dataCan.can_rx_message.id_type = CAN_ID_EXTENDED; dataCan.can_rx_message.extended_id = adr; @@ -392,8 +392,8 @@ void SerialCommand_Scheduler(tTaskSerial *env) { } if (AtCmdRxBeginWithStatic(&env->At, "V")) { - env->ioUART->transmit(env->ioUART->env, (uint8_t *) "v001\r\n", sizeof("v001\r\n") - 1, 1000); - env->ioUART->transmit(env->ioUART->env, (uint8_t *) "OK\r\n", sizeof("OK\r\n") - 1, 1000); + env->ioUSB->transmit(env->ioUSB->env, (uint8_t *) "v001\r\n", sizeof("v001\r\n") - 1, 1000); + env->ioUSB->transmit(env->ioUSB->env, (uint8_t *) "OK\r\n", sizeof("OK\r\n") - 1, 1000); } } @@ -409,9 +409,9 @@ void SerialCommand_Scheduler(tTaskSerial *env) { //начало ------------------------------Обработчик UART команд----------------------------------------------------------- //начало ------------------------------Обработчик UART команд----------------------------------------------------------- -void TaskSerialUART_Init(tTaskSerial *env, - tFrom_uart from_uart, - tSerialPortIO *ioUART, +void TaskSerialUSB1_Init(tTaskSerial *env, + tFrom_num_usb from_num_usb, + tSerialPortIO *ioUSB, tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, tTaskSerialToCanSpontany *TaskSerialToCanSpontany @@ -419,18 +419,18 @@ void TaskSerialUART_Init(tTaskSerial *env, ) { // env->access = osMutexNew(NULL); - env->from_uart = from_uart; + env->from_num_usb = from_num_usb; - env->ioUART = ioUART; + env->ioUSB = ioUSB; env->TaskSerialToCanCyclic0 = TaskSerialToCanCyclic0; env->TaskSerialToCanCyclic1 = TaskSerialToCanCyclic1; env->TaskSerialToCanSpontany = TaskSerialToCanSpontany; - SerialPortClearRxBuffer(env->ioUART); + SerialPortClearRxBuffer(env->ioUSB); AtCmdInit( - &env->At, env->ioUART, + &env->At, env->ioUSB, env->AtRx, sizeof(env->AtRx), env->AtTx, sizeof(env->AtTx), 2000, 2000 @@ -440,7 +440,7 @@ void TaskSerialUART_Init(tTaskSerial *env, } -static _Noreturn void Serial_UART_Thread(tTaskSerial *env) { +static _Noreturn void Serial_USB1_Thread(tTaskSerial *env) { for (;;) { // if (osMutexAcquire(env->access, 1000) == osOK) { @@ -450,13 +450,12 @@ static _Noreturn void Serial_UART_Thread(tTaskSerial *env) { // osMutexRelease(env->access); // } - SystemDelayMs(1); } } -void TaskSerialUART_StartThread(tTaskSerial *env) { +void TaskSerialUSB1_StartThread(tTaskSerial *env) { if (!env->thread.id) { - env->thread.id = osThreadNew((osThreadFunc_t) (Serial_UART_Thread), (void *) (env), &env->thread.attr); + env->thread.id = osThreadNew((osThreadFunc_t) (Serial_USB1_Thread), (void *) (env), &env->thread.attr); } } @@ -469,27 +468,28 @@ void TaskSerialUART_StartThread(tTaskSerial *env) { //начало ------------------------------Обработчик UART USB команд------------------------------------------------------- //начало ------------------------------Обработчик UART USB команд------------------------------------------------------- -void TaskSerialUSB_Init(tTaskSerial *env, - tFrom_uart from_uart, - tSerialPortIO *ioUART, - tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, - tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, - tTaskSerialToCanSpontany *TaskSerialToCanSpontany +void TaskSerialUSB2_Init(tTaskSerial *env, + tFrom_num_usb from_num_usb, + tSerialPortIO *ioUSB, + tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, + tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, + tTaskSerialToCanSpontany *TaskSerialToCanSpontany + ) { // env->access = osMutexNew(NULL); - env->from_uart = from_uart; + env->from_num_usb = from_num_usb; - env->ioUART = ioUART; + env->ioUSB = ioUSB; env->TaskSerialToCanCyclic0 = TaskSerialToCanCyclic0; env->TaskSerialToCanCyclic1 = TaskSerialToCanCyclic1; env->TaskSerialToCanSpontany = TaskSerialToCanSpontany; - SerialPortClearRxBuffer(env->ioUART); + SerialPortClearRxBuffer(env->ioUSB); AtCmdInit( - &env->At, env->ioUART, + &env->At, env->ioUSB, env->AtRx, sizeof(env->AtRx), env->AtTx, sizeof(env->AtTx), 2000, 2000 @@ -499,7 +499,7 @@ void TaskSerialUSB_Init(tTaskSerial *env, } -static _Noreturn void Serial_USB_Thread(tTaskSerial *env) { +static _Noreturn void Serial_USB2_Thread(tTaskSerial *env) { for (;;) { // if (osMutexAcquire(env->access, 1000) == osOK) { @@ -509,13 +509,12 @@ static _Noreturn void Serial_USB_Thread(tTaskSerial *env) { // osMutexRelease(env->access); // } - SystemDelayMs(1); } } -void TaskSerialUSB_StartThread(tTaskSerial *env) { +void TaskSerialUSB2_StartThread(tTaskSerial *env) { if (!env->thread.id) { - env->thread.id = osThreadNew((osThreadFunc_t) (Serial_USB_Thread), (void *) (env), &env->thread.attr); + env->thread.id = osThreadNew((osThreadFunc_t) (Serial_USB2_Thread), (void *) (env), &env->thread.attr); } } diff --git a/ArbiterCommand.h b/ArbiterCommand.h index cc78893..fe529b7 100644 --- a/ArbiterCommand.h +++ b/ArbiterCommand.h @@ -12,9 +12,9 @@ typedef enum { - FROM_UART, - FROM_UART_USB -} tFrom_uart; + FROM_UART_USB1, + FROM_UART_USB2 +} tFrom_num_usb; typedef struct { @@ -34,7 +34,7 @@ typedef struct { typedef struct { can_rx_message_type can_rx_message; - tFrom_uart from_uart; + tFrom_num_usb from_num_usb; } can_rx_message_Spontany; typedef struct { @@ -43,8 +43,8 @@ typedef struct { // osMutexId_t access; osMessageQueueId_t txDataQueue; - tSerialPortIO *ioUART; - tSerialPortIO *ioUSB; + tSerialPortIO *ioUSB2; + tSerialPortIO *ioUSB1; struct { osThreadId_t id; @@ -62,8 +62,8 @@ typedef struct { uint8_t AtRx[255]; uint8_t AtTx[255]; - tSerialPortIO *ioUART; - tFrom_uart from_uart; + tSerialPortIO *ioUSB; + tFrom_num_usb from_num_usb; // osMutexId_t access; tTaskSerialToCanCyclic *TaskSerialToCanCyclic0; @@ -81,26 +81,26 @@ typedef struct { } tTaskSerial; -void TaskSerialUART_Init(tTaskSerial *env, - tFrom_uart from_uart, - tSerialPortIO *ioUART, +void TaskSerialUSB1_Init(tTaskSerial *env, + tFrom_num_usb from_num_usb, + tSerialPortIO *ioUSB, tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, tTaskSerialToCanSpontany *TaskSerialToCanSpontany ); -void TaskSerialUART_StartThread(tTaskSerial *env); +void TaskSerialUSB1_StartThread(tTaskSerial *env); -void TaskSerialUSB_Init(tTaskSerial *env, - tFrom_uart from_uart, - tSerialPortIO *ioUART, +void TaskSerialUSB2_Init(tTaskSerial *env, + tFrom_num_usb from_num_usb, + tSerialPortIO *ioUSB, tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, tTaskSerialToCanSpontany *TaskSerialToCanSpontany ); -void TaskSerialUSB_StartThread(tTaskSerial *env); +void TaskSerialUSB2_StartThread(tTaskSerial *env); void TaskSerialToCanCyclic0_Init(tTaskSerialToCanCyclic *env, @@ -117,8 +117,8 @@ void TaskSerialToCanCyclic1_StartThread(tTaskSerialToCanCyclic *env); void TaskSerialToCanSpontany_Init(tTaskSerialToCanSpontany *env, tSerialPortFrameIO *ioCAN, - tSerialPortIO *ioUART, - tSerialPortIO *ioUSB + tSerialPortIO *ioUSB1, + tSerialPortIO *ioUSB2 );