From 6477434625bc18aa06755ab411206c382b7b5ba4 Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 7 Apr 2026 12:24:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inc/SerialPortVirt.h | 2 +- Src/SerialPortVirt.c | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Inc/SerialPortVirt.h b/Inc/SerialPortVirt.h index 33d803f..cf40c00 100644 --- a/Inc/SerialPortVirt.h +++ b/Inc/SerialPortVirt.h @@ -11,7 +11,7 @@ typedef struct { osMessageQueueId_t queue; - osMutexId_t access; +// osMutexId_t access; } tSerialPortVirt; void SerialPortVirt_Init(tSerialPortVirt *env, uint16_t queueBufferLen); diff --git a/Src/SerialPortVirt.c b/Src/SerialPortVirt.c index b9e735e..3e03e44 100644 --- a/Src/SerialPortVirt.c +++ b/Src/SerialPortVirt.c @@ -5,7 +5,7 @@ void SerialPortVirt_Init(tSerialPortVirt *env, uint16_t queueBufferLen) { env->queue = osMessageQueueNew(queueBufferLen, 1, NULL); - env->access = osMutexNew(NULL); +// env->access = osMutexNew(NULL); } static uint16_t vSerialPortReceiveQueue(uint8_t *data, uint16_t size, uint32_t timeout, osMessageQueueId_t queueId) { @@ -42,12 +42,11 @@ static uint16_t vSerialPortReceiveQueue(uint8_t *data, uint16_t size, uint32_t t static uint16_t vSerialPortReceive(tSerialPortVirt *env, uint8_t *data, uint16_t size, uint32_t timeout) { - uint16_t result = 0; + uint16_t result; + + + result = vSerialPortReceiveQueue(data, size, timeout, env->queue); -// if (osMutexAcquire(env->access, 1000) == osOK) { - result = vSerialPortReceiveQueue(data, size, timeout, env->queue); -// osMutexRelease(env->access); -// } return result; @@ -87,14 +86,21 @@ static uint16_t vSerialPortTransmitQueue(uint8_t *data, uint16_t size, uint32_t static uint16_t vSerialPortTransmit(tSerialPortVirt *env, uint8_t *data, uint16_t size, uint32_t timeout) { - uint16_t result = 0; + // if (osMutexAcquire(env->access, 1000) == osOK) { - result = vSerialPortTransmitQueue(data, size, timeout, env->queue); +// result = vSerialPortTransmitQueue(data, size, timeout, env->queue); // osMutexRelease(env->access); // } - return result; + uint16_t sent = 0; + for (uint16_t i = 0; i < size; ++i) { + if (osMessageQueuePut(env->queue, &data[i], 0x00, 0) == osOK) { + ++sent; + } + } + + return sent; } tSerialPortIO SerialPortVirt_GetIo(tSerialPortVirt *env) {