@@ -130,10 +130,10 @@ static void ARDUINO_ISR_ATTR _uart_isr(void *arg)
130
130
}
131
131
}
132
132
133
- void uartEnableInterrupt (uart_t * uart )
133
+ static void uartEnableInterrupt (uart_t * uart , uint8_t rxfifo_full_thrhd )
134
134
{
135
135
UART_MUTEX_LOCK ();
136
- uart -> dev -> conf1 .rxfifo_full_thrhd = 112 ;
136
+ uart -> dev -> conf1 .rxfifo_full_thrhd = rxfifo_full_thrhd ;
137
137
#if CONFIG_IDF_TARGET_ESP32
138
138
uart -> dev -> conf1 .rx_tout_thrhd = 2 ;
139
139
#else
@@ -149,7 +149,7 @@ void uartEnableInterrupt(uart_t* uart)
149
149
UART_MUTEX_UNLOCK ();
150
150
}
151
151
152
- void uartDisableInterrupt (uart_t * uart )
152
+ static void uartDisableInterrupt (uart_t * uart )
153
153
{
154
154
UART_MUTEX_LOCK ();
155
155
uart -> dev -> conf1 .val = 0 ;
@@ -162,7 +162,7 @@ void uartDisableInterrupt(uart_t* uart)
162
162
UART_MUTEX_UNLOCK ();
163
163
}
164
164
165
- void uartDetachRx (uart_t * uart , uint8_t rxPin )
165
+ static void uartDetachRx (uart_t * uart , uint8_t rxPin )
166
166
{
167
167
if (uart == NULL ) {
168
168
return ;
@@ -171,25 +171,25 @@ void uartDetachRx(uart_t* uart, uint8_t rxPin)
171
171
uartDisableInterrupt (uart );
172
172
}
173
173
174
- void uartDetachTx (uart_t * uart , uint8_t txPin )
174
+ static void uartDetachTx (uart_t * uart , uint8_t txPin )
175
175
{
176
176
if (uart == NULL ) {
177
177
return ;
178
178
}
179
179
pinMatrixOutDetach (txPin , false, false);
180
180
}
181
181
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 )
183
183
{
184
184
if (uart == NULL || rxPin >= GPIO_PIN_COUNT ) {
185
185
return ;
186
186
}
187
187
pinMode (rxPin , INPUT );
188
- uartEnableInterrupt (uart );
188
+ uartEnableInterrupt (uart , rxfifo_full_thrhd );
189
189
pinMatrixInAttach (rxPin , UART_RXD_IDX (uart -> num ), inverted );
190
190
}
191
191
192
- void uartAttachTx (uart_t * uart , uint8_t txPin , bool inverted )
192
+ static void uartAttachTx (uart_t * uart , uint8_t txPin , bool inverted )
193
193
{
194
194
if (uart == NULL || txPin >= GPIO_PIN_COUNT ) {
195
195
return ;
@@ -198,7 +198,7 @@ void uartAttachTx(uart_t* uart, uint8_t txPin, bool inverted)
198
198
pinMatrixOutAttach (txPin , UART_TXD_IDX (uart -> num ), inverted , false);
199
199
}
200
200
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 )
202
202
{
203
203
if (uart_nr >= UART_PORTS_NUM ) {
204
204
return NULL ;
@@ -256,7 +256,7 @@ uart_t* uartBegin(uint8_t uart_nr, uint32_t baudrate, uint32_t config, int8_t rx
256
256
UART_MUTEX_UNLOCK ();
257
257
258
258
if (rxPin != -1 ) {
259
- uartAttachRx (uart , rxPin , inverted );
259
+ uartAttachRx (uart , rxPin , inverted , rxfifo_full_thrhd );
260
260
}
261
261
262
262
if (txPin != -1 ) {
@@ -322,7 +322,11 @@ uint32_t uartAvailable(uart_t* uart)
322
322
if (uart == NULL || uart -> queue == NULL ) {
323
323
return 0 ;
324
324
}
325
+ #ifdef UART_READ_RX_FIFO
325
326
return (uxQueueMessagesWaiting (uart -> queue ) + uart -> dev -> status .rxfifo_cnt ) ;
327
+ #else
328
+ return uxQueueMessagesWaiting (uart -> queue );
329
+ #endif
326
330
}
327
331
328
332
uint32_t uartAvailableForWrite (uart_t * uart )
@@ -333,6 +337,7 @@ uint32_t uartAvailableForWrite(uart_t* uart)
333
337
return 0x7f - uart -> dev -> status .txfifo_cnt ;
334
338
}
335
339
340
+ #ifdef UART_READ_RX_FIFO
336
341
void uartRxFifoToQueue (uart_t * uart )
337
342
{
338
343
uint8_t c ;
@@ -357,17 +362,20 @@ void uartRxFifoToQueue(uart_t* uart)
357
362
uart -> dev -> int_clr .val = 0xffffffff ;
358
363
UART_MUTEX_UNLOCK ();
359
364
}
365
+ #endif
360
366
361
367
uint8_t uartRead (uart_t * uart )
362
368
{
363
369
if (uart == NULL || uart -> queue == NULL ) {
364
370
return 0 ;
365
371
}
366
372
uint8_t c ;
373
+ #ifdef UART_READ_RX_FIFO
367
374
if ((uxQueueMessagesWaiting (uart -> queue ) == 0 ) && (uart -> dev -> status .rxfifo_cnt > 0 ))
368
375
{
369
376
uartRxFifoToQueue (uart );
370
377
}
378
+ #endif
371
379
if (xQueueReceive (uart -> queue , & c , 0 )) {
372
380
return c ;
373
381
}
@@ -380,10 +388,12 @@ uint8_t uartPeek(uart_t* uart)
380
388
return 0 ;
381
389
}
382
390
uint8_t c ;
391
+ #ifdef UART_READ_RX_FIFO
383
392
if ((uxQueueMessagesWaiting (uart -> queue ) == 0 ) && (uart -> dev -> status .rxfifo_cnt > 0 ))
384
393
{
385
394
uartRxFifoToQueue (uart );
386
395
}
396
+ #endif
387
397
if (xQueuePeek (uart -> queue , & c , 0 )) {
388
398
return c ;
389
399
}
0 commit comments