@@ -96,10 +96,10 @@ static void IRAM_ATTR _uart_isr(void *arg)
96
96
}
97
97
}
98
98
99
- void uartEnableInterrupt (uart_t * uart )
99
+ static void uartEnableInterrupt (uart_t * uart , uint8_t rxfifo_full_thrhd )
100
100
{
101
101
UART_MUTEX_LOCK ();
102
- uart -> dev -> conf1 .rxfifo_full_thrhd = 112 ;
102
+ uart -> dev -> conf1 .rxfifo_full_thrhd = rxfifo_full_thrhd ;
103
103
uart -> dev -> conf1 .rx_tout_thrhd = 2 ;
104
104
uart -> dev -> conf1 .rx_tout_en = 1 ;
105
105
uart -> dev -> int_ena .rxfifo_full = 1 ;
@@ -111,7 +111,7 @@ void uartEnableInterrupt(uart_t* uart)
111
111
UART_MUTEX_UNLOCK ();
112
112
}
113
113
114
- void uartDisableInterrupt (uart_t * uart )
114
+ static void uartDisableInterrupt (uart_t * uart )
115
115
{
116
116
UART_MUTEX_LOCK ();
117
117
uart -> dev -> conf1 .val = 0 ;
@@ -124,7 +124,7 @@ void uartDisableInterrupt(uart_t* uart)
124
124
UART_MUTEX_UNLOCK ();
125
125
}
126
126
127
- void uartDetachRx (uart_t * uart , uint8_t rxPin )
127
+ static void uartDetachRx (uart_t * uart , uint8_t rxPin )
128
128
{
129
129
if (uart == NULL ) {
130
130
return ;
@@ -133,25 +133,25 @@ void uartDetachRx(uart_t* uart, uint8_t rxPin)
133
133
uartDisableInterrupt (uart );
134
134
}
135
135
136
- void uartDetachTx (uart_t * uart , uint8_t txPin )
136
+ static void uartDetachTx (uart_t * uart , uint8_t txPin )
137
137
{
138
138
if (uart == NULL ) {
139
139
return ;
140
140
}
141
141
pinMatrixOutDetach (txPin , false, false);
142
142
}
143
143
144
- void uartAttachRx (uart_t * uart , uint8_t rxPin , bool inverted )
144
+ static void uartAttachRx (uart_t * uart , uint8_t rxPin , bool inverted , uint8_t rxfifo_full_thrhd )
145
145
{
146
146
if (uart == NULL || rxPin > 39 ) {
147
147
return ;
148
148
}
149
149
pinMode (rxPin , INPUT );
150
+ uartEnableInterrupt (uart , rxfifo_full_thrhd );
150
151
pinMatrixInAttach (rxPin , UART_RXD_IDX (uart -> num ), inverted );
151
- uartEnableInterrupt (uart );
152
152
}
153
153
154
- void uartAttachTx (uart_t * uart , uint8_t txPin , bool inverted )
154
+ static void uartAttachTx (uart_t * uart , uint8_t txPin , bool inverted )
155
155
{
156
156
if (uart == NULL || txPin > 39 ) {
157
157
return ;
@@ -160,7 +160,7 @@ void uartAttachTx(uart_t* uart, uint8_t txPin, bool inverted)
160
160
pinMatrixOutAttach (txPin , UART_TXD_IDX (uart -> num ), inverted , false);
161
161
}
162
162
163
- uart_t * uartBegin (uint8_t uart_nr , uint32_t baudrate , uint32_t config , int8_t rxPin , int8_t txPin , uint16_t queueLen , bool inverted )
163
+ 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 )
164
164
{
165
165
if (uart_nr > 2 ) {
166
166
return NULL ;
@@ -216,7 +216,7 @@ uart_t* uartBegin(uint8_t uart_nr, uint32_t baudrate, uint32_t config, int8_t rx
216
216
UART_MUTEX_UNLOCK ();
217
217
218
218
if (rxPin != -1 ) {
219
- uartAttachRx (uart , rxPin , inverted );
219
+ uartAttachRx (uart , rxPin , inverted , rxfifo_full_thrhd );
220
220
}
221
221
222
222
if (txPin != -1 ) {
@@ -282,7 +282,11 @@ uint32_t uartAvailable(uart_t* uart)
282
282
if (uart == NULL || uart -> queue == NULL ) {
283
283
return 0 ;
284
284
}
285
+ #ifdef UART_READ_RX_FIFO
285
286
return (uxQueueMessagesWaiting (uart -> queue ) + uart -> dev -> status .rxfifo_cnt ) ;
287
+ #else
288
+ return uxQueueMessagesWaiting (uart -> queue );
289
+ #endif
286
290
}
287
291
288
292
uint32_t uartAvailableForWrite (uart_t * uart )
@@ -293,6 +297,7 @@ uint32_t uartAvailableForWrite(uart_t* uart)
293
297
return 0x7f - uart -> dev -> status .txfifo_cnt ;
294
298
}
295
299
300
+ #ifdef UART_READ_RX_FIFO
296
301
void uartRxFifoToQueue (uart_t * uart )
297
302
{
298
303
uint8_t c ;
@@ -311,17 +316,20 @@ void uartRxFifoToQueue(uart_t* uart)
311
316
uart -> dev -> int_clr .val = 0xffffffff ;
312
317
UART_MUTEX_UNLOCK ();
313
318
}
319
+ #endif
314
320
315
321
uint8_t uartRead (uart_t * uart )
316
322
{
317
323
if (uart == NULL || uart -> queue == NULL ) {
318
324
return 0 ;
319
325
}
320
326
uint8_t c ;
327
+ #ifdef UART_READ_RX_FIFO
321
328
if ((uxQueueMessagesWaiting (uart -> queue ) == 0 ) && (uart -> dev -> status .rxfifo_cnt > 0 ))
322
329
{
323
330
uartRxFifoToQueue (uart );
324
331
}
332
+ #endif
325
333
if (xQueueReceive (uart -> queue , & c , 0 )) {
326
334
return c ;
327
335
}
@@ -334,10 +342,12 @@ uint8_t uartPeek(uart_t* uart)
334
342
return 0 ;
335
343
}
336
344
uint8_t c ;
345
+ #ifdef UART_READ_RX_FIFO
337
346
if ((uxQueueMessagesWaiting (uart -> queue ) == 0 ) && (uart -> dev -> status .rxfifo_cnt > 0 ))
338
347
{
339
348
uartRxFifoToQueue (uart );
340
349
}
350
+ #endif
341
351
if (xQueuePeek (uart -> queue , & c , 0 )) {
342
352
return c ;
343
353
}
0 commit comments