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