@@ -130,10 +130,10 @@ static void ARDUINO_ISR_ATTR _uart_isr(void *arg)
130130 }
131131}
132132
133- void uartEnableInterrupt (uart_t * uart )
133+ static void uartEnableInterrupt (uart_t * uart , uint8_t rxfifo_full_thrhd )
134134{
135135UART_MUTEX_LOCK ();
136- uart -> dev -> conf1 .rxfifo_full_thrhd = 112 ;
136+ uart -> dev -> conf1 .rxfifo_full_thrhd = rxfifo_full_thrhd ;
137137#if CONFIG_IDF_TARGET_ESP32
138138uart -> dev -> conf1 .rx_tout_thrhd = 2 ;
139139#else
@@ -149,7 +149,7 @@ void uartEnableInterrupt(uart_t* uart)
149149UART_MUTEX_UNLOCK ();
150150}
151151
152- void uartDisableInterrupt (uart_t * uart )
152+ static void uartDisableInterrupt (uart_t * uart )
153153{
154154UART_MUTEX_LOCK ();
155155uart -> dev -> conf1 .val = 0 ;
@@ -162,7 +162,7 @@ void uartDisableInterrupt(uart_t* uart)
162162UART_MUTEX_UNLOCK ();
163163}
164164
165- void uartDetachRx (uart_t * uart , uint8_t rxPin )
165+ static void uartDetachRx (uart_t * uart , uint8_t rxPin )
166166{
167167if (uart == NULL ){
168168return ;
@@ -171,25 +171,25 @@ void uartDetachRx(uart_t* uart, uint8_t rxPin)
171171uartDisableInterrupt (uart );
172172}
173173
174- void uartDetachTx (uart_t * uart , uint8_t txPin )
174+ static void uartDetachTx (uart_t * uart , uint8_t txPin )
175175{
176176if (uart == NULL ){
177177return ;
178178 }
179179pinMatrixOutDetach (txPin , false, false);
180180}
181181
182- void uartAttachRx (uart_t * uart , uint8_t rxPin , bool inverted )
182+ static void uartAttachRx (uart_t * uart , uint8_t rxPin , bool inverted , uint8_t rxfifo_full_thrhd )
183183{
184184if (uart == NULL || rxPin >= GPIO_PIN_COUNT ){
185185return ;
186186 }
187187pinMode (rxPin , INPUT );
188- uartEnableInterrupt (uart );
188+ uartEnableInterrupt (uart , rxfifo_full_thrhd );
189189pinMatrixInAttach (rxPin , UART_RXD_IDX (uart -> num ), inverted );
190190}
191191
192- void uartAttachTx (uart_t * uart , uint8_t txPin , bool inverted )
192+ static void uartAttachTx (uart_t * uart , uint8_t txPin , bool inverted )
193193{
194194if (uart == NULL || txPin >= GPIO_PIN_COUNT ){
195195return ;
@@ -198,7 +198,7 @@ void uartAttachTx(uart_t* uart, uint8_t txPin, bool inverted)
198198pinMatrixOutAttach (txPin , UART_TXD_IDX (uart -> num ), inverted , false);
199199}
200200
201- uart_t * uartBegin (uint8_t uart_nr , uint32_t baudrate , uint32_t config , int8_t rxPin , int8_t txPin , uint16_t queueLen , bool inverted )
201+ uart_t * uartBegin (uint8_t uart_nr , uint32_t baudrate , uint32_t config , int8_t rxPin , int8_t txPin , uint16_t queueLen , bool inverted , uint8_t rxfifo_full_thrhd )
202202{
203203if (uart_nr >= UART_PORTS_NUM ){
204204return NULL ;
@@ -256,7 +256,7 @@ uart_t* uartBegin(uint8_t uart_nr, uint32_t baudrate, uint32_t config, int8_t rx
256256UART_MUTEX_UNLOCK ();
257257
258258if (rxPin != -1 ){
259- uartAttachRx (uart , rxPin , inverted );
259+ uartAttachRx (uart , rxPin , inverted , rxfifo_full_thrhd );
260260 }
261261
262262if (txPin != -1 ){
@@ -322,7 +322,11 @@ uint32_t uartAvailable(uart_t* uart)
322322if (uart == NULL || uart -> queue == NULL ){
323323return 0 ;
324324 }
325+ #ifdef UART_READ_RX_FIFO
325326return (uxQueueMessagesWaiting (uart -> queue ) + uart -> dev -> status .rxfifo_cnt ) ;
327+ #else
328+ return uxQueueMessagesWaiting (uart -> queue );
329+ #endif
326330}
327331
328332uint32_t uartAvailableForWrite (uart_t * uart )
@@ -333,6 +337,7 @@ uint32_t uartAvailableForWrite(uart_t* uart)
333337return 0x7f - uart -> dev -> status .txfifo_cnt ;
334338}
335339
340+ #ifdef UART_READ_RX_FIFO
336341void uartRxFifoToQueue (uart_t * uart )
337342{
338343uint8_t c ;
@@ -357,17 +362,20 @@ void uartRxFifoToQueue(uart_t* uart)
357362uart -> dev -> int_clr .val = 0xffffffff ;
358363UART_MUTEX_UNLOCK ();
359364}
365+ #endif
360366
361367uint8_t uartRead (uart_t * uart )
362368{
363369if (uart == NULL || uart -> queue == NULL ){
364370return 0 ;
365371 }
366372uint8_t c ;
373+ #ifdef UART_READ_RX_FIFO
367374if ((uxQueueMessagesWaiting (uart -> queue ) == 0 ) && (uart -> dev -> status .rxfifo_cnt > 0 ))
368375{
369376uartRxFifoToQueue (uart );
370377 }
378+ #endif
371379if (xQueueReceive (uart -> queue , & c , 0 )){
372380return c ;
373381 }
@@ -380,10 +388,12 @@ uint8_t uartPeek(uart_t* uart)
380388return 0 ;
381389 }
382390uint8_t c ;
391+ #ifdef UART_READ_RX_FIFO
383392if ((uxQueueMessagesWaiting (uart -> queue ) == 0 ) && (uart -> dev -> status .rxfifo_cnt > 0 ))
384393{
385394uartRxFifoToQueue (uart );
386395 }
396+ #endif
387397if (xQueuePeek (uart -> queue , & c , 0 )){
388398return c ;
389399 }
0 commit comments