@@ -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