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) {