@@ -130,16 +130,13 @@ uint8_t sUartTxQueueBuffer[UART_MAX_QUEUE_SIZE * sizeof(UartTxStruct_t)];
130
130
static StaticQueue_t sUartTxQueueStruct ;
131
131
static QueueHandle_t sUartTxQueue ;
132
132
133
- static EventGroupHandle_t sUartEventGroup ;
134
- static StaticEventGroup_t sUartEventGroupStruct ;
135
-
136
133
// Rx buffer for the receive Fifo
137
134
static uint8_t sRxFifoBuffer [MAX_BUFFER_SIZE];
138
135
static Fifo_t sReceiveFifo ;
139
136
140
137
static void UART_rx_callback (UARTDRV_Handle_t handle, Ecode_t transferStatus, uint8_t * data, UARTDRV_Count_t transferCount);
141
- // static void UART_tx_callback(struct UARTDRV_HandleData * handle, Ecode_t transferStatus, uint8_t * data,
142
- // UARTDRV_Count_t transferCount);
138
+ static void UART_tx_callback (struct UARTDRV_HandleData * handle, Ecode_t transferStatus, uint8_t * data,
139
+ UARTDRV_Count_t transferCount);
143
140
static void uartSendBytes (uint8_t * buffer, uint16_t nbOfBytes);
144
141
145
142
static bool InitFifo (Fifo_t * fifo, uint8_t * pDataBuffer, uint16_t bufferSize)
@@ -266,17 +263,10 @@ void uartConsoleInit(void)
266
263
UARTDRV_Receive (vcom_handle, sRxDmaBuffer , MAX_DMA_BUFFER_SIZE, UART_rx_callback);
267
264
UARTDRV_Receive (vcom_handle, sRxDmaBuffer2 , MAX_DMA_BUFFER_SIZE, UART_rx_callback);
268
265
269
- uint32_t struct_size = sizeof (UartTxStruct_t);
270
-
271
- sUartTxQueue = xQueueCreateStatic (UART_MAX_QUEUE_SIZE, struct_size, sUartTxQueueBuffer , &sUartTxQueueStruct );
272
-
273
- sUartEventGroup = xEventGroupCreateStatic (&sUartEventGroupStruct );
274
-
275
- // Start App task.
266
+ sUartTxQueue = xQueueCreateStatic (UART_MAX_QUEUE_SIZE, sizeof (UartTxStruct_t), sUartTxQueueBuffer , &sUartTxQueueStruct );
276
267
sUartTaskHandle = xTaskCreateStatic (uartMainLoop, UART_TASK_NAME, UART_TASK_SIZE, nullptr , 30 , uartStack, &uartTaskStruct);
277
268
278
269
assert (sUartTaskHandle );
279
- assert (sUartEventGroup );
280
270
assert (sUartTxQueue );
281
271
282
272
// Enable USART0/EUSART0 interrupt to wake OT task when data arrives
@@ -322,10 +312,7 @@ void UART_tx_callback(struct UARTDRV_HandleData * handle, Ecode_t transferStatus
322
312
{
323
313
BaseType_t xHigherPriorityTaskWoken;
324
314
325
- if (xEventGroupSetBitsFromISR (sUartEventGroup , UART_TX_COMPLETE_BIT, &xHigherPriorityTaskWoken) == pdPASS)
326
- {
327
- portYIELD_FROM_ISR (xHigherPriorityTaskWoken);
328
- }
315
+ vTaskNotifyGiveFromISR (sUartTaskHandle , &xHigherPriorityTaskWoken) portYIELD_FROM_ISR (xHigherPriorityTaskWoken);
329
316
}
330
317
331
318
/*
@@ -485,9 +472,8 @@ void uartSendBytes(uint8_t * buffer, uint16_t nbOfBytes)
485
472
pre_uart_transfer ();
486
473
#endif /* EFR32MG24 && WF200_WIFI */
487
474
488
- // TODO FIXME Swap to iostream driver since UARTDRV is deprecated.
489
- // TODO Do no use blocking transmit (hotfix).
490
- UARTDRV_TransmitB (vcom_handle, (uint8_t *) buffer, nbOfBytes);
475
+ UARTDRV_Transmit (vcom_handle, (uint8_t *) buffer, nbOfBytes, UART_tx_callback);
476
+ ulTaskNotifyTake (pdTRUE, portMAX_DELAY);
491
477
492
478
#if (defined(EFR32MG24) && defined(WF200_WIFI))
493
479
post_uart_transfer ();
0 commit comments