Обновление

This commit is contained in:
cfif 2026-04-07 12:24:00 +03:00
parent ba0e47edb7
commit 6477434625
2 changed files with 16 additions and 10 deletions

View File

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

View File

@ -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;
// 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) {