Skip to content

Commit aa1288a

Browse files
mtabume-no-dev
authored andcommitted
HardwareSerial - availableForWrite() support (espressif#1226)
* HardwareSerial - availableForWrite() support * fix indentation errors (tab vs space)
1 parent 149190f commit aa1288a

File tree

4 files changed

+14
-0
lines changed

4 files changed

+14
-0
lines changed

cores/esp32/HardwareSerial.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ int HardwareSerial::available(void)
6262
{
6363
return uartAvailable(_uart);
6464
}
65+
int HardwareSerial::availableForWrite(void)
66+
{
67+
return uartAvailableForWrite(_uart);
68+
}
6569

6670
int HardwareSerial::peek(void)
6771
{

cores/esp32/HardwareSerial.h

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class HardwareSerial: public Stream
4040
void begin(unsigned long baud, uint32_t config=SERIAL_8N1, int8_t rxPin=-1, int8_t txPin=-1, bool invert=false);
4141
void end();
4242
int available(void);
43+
int availableForWrite(void);
4344
int peek(void);
4445
int read(void);
4546
void flush(void);

cores/esp32/esp32-hal-uart.c

+8
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,14 @@ uint32_t uartAvailable(uart_t* uart)
248248
return uxQueueMessagesWaiting(uart->queue);
249249
}
250250

251+
uint32_t uartAvailableForWrite(uart_t* uart)
252+
{
253+
if(uart == NULL) {
254+
return 0;
255+
}
256+
return 0x7f - uart->dev->status.txfifo_cnt;
257+
}
258+
251259
uint8_t uartRead(uart_t* uart)
252260
{
253261
if(uart == NULL || uart->queue == NULL) {

cores/esp32/esp32-hal-uart.h

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ uart_t* uartBegin(uint8_t uart_nr, uint32_t baudrate, uint32_t config, int8_t rx
5555
void uartEnd(uart_t* uart);
5656

5757
uint32_t uartAvailable(uart_t* uart);
58+
uint32_t uartAvailableForWrite(uart_t* uart);
5859
uint8_t uartRead(uart_t* uart);
5960
uint8_t uartPeek(uart_t* uart);
6061

0 commit comments

Comments
 (0)