Обновление

This commit is contained in:
cfif 2026-04-06 12:59:38 +03:00
parent 1a282b63a4
commit 72d6add914
2 changed files with 21 additions and 2 deletions

View File

@ -11,6 +11,7 @@
typedef struct { typedef struct {
osMessageQueueId_t queue; osMessageQueueId_t queue;
osMutexId_t access;
} tSerialPortVirt; } tSerialPortVirt;
void SerialPortVirt_Init(tSerialPortVirt *env, uint16_t queueBufferLen); void SerialPortVirt_Init(tSerialPortVirt *env, uint16_t queueBufferLen);

View File

@ -5,6 +5,7 @@
void SerialPortVirt_Init(tSerialPortVirt *env, uint16_t queueBufferLen) { void SerialPortVirt_Init(tSerialPortVirt *env, uint16_t queueBufferLen) {
env->queue = osMessageQueueNew(queueBufferLen, 1, NULL); env->queue = osMessageQueueNew(queueBufferLen, 1, NULL);
env->access = osMutexNew(NULL);
} }
static uint16_t vSerialPortReceiveQueue(uint8_t *data, uint16_t size, uint32_t timeout, osMessageQueueId_t queueId) { static uint16_t vSerialPortReceiveQueue(uint8_t *data, uint16_t size, uint32_t timeout, osMessageQueueId_t queueId) {
@ -34,7 +35,16 @@ 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) { static uint16_t vSerialPortReceive(tSerialPortVirt *env, uint8_t *data, uint16_t size, uint32_t timeout) {
return vSerialPortReceiveQueue(data, size, timeout, env->queue);
uint16_t result = 0;
// if (osMutexAcquire(env->access, 1000) == osOK) {
result = vSerialPortReceiveQueue(data, size, timeout, env->queue);
// osMutexRelease(env->access);
// }
return result;
} }
static uint16_t vSerialPortTransmitQueue(uint8_t *data, uint16_t size, uint32_t timeout, osMessageQueueId_t queueId) { static uint16_t vSerialPortTransmitQueue(uint8_t *data, uint16_t size, uint32_t timeout, osMessageQueueId_t queueId) {
@ -70,7 +80,15 @@ 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) { static uint16_t vSerialPortTransmit(tSerialPortVirt *env, uint8_t *data, uint16_t size, uint32_t timeout) {
return vSerialPortTransmitQueue(data, size, timeout, env->queue);
uint16_t result = 0;
// if (osMutexAcquire(env->access, 1000) == osOK) {
result = vSerialPortTransmitQueue(data, size, timeout, env->queue);
// osMutexRelease(env->access);
// }
return result;
} }
tSerialPortIO SerialPortVirt_GetIo(tSerialPortVirt *env) { tSerialPortIO SerialPortVirt_GetIo(tSerialPortVirt *env) {