Skip to content

Commit 2fa18cb

Browse files
Add availableForWrite() to HardwareSerial
1 parent 16cded4 commit 2fa18cb

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

avr/cores/arduino/HardwareSerial.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,21 @@ int HardwareSerial::read(void)
176176
}
177177
}
178178

179+
int HardwareSerial::availableForWrite(void)
180+
{
181+
#if (SERIAL_TX_BUFFER_SIZE>256)
182+
uint8_t oldSREG = SREG;
183+
cli();
184+
#endif
185+
tx_buffer_index_t head = _tx_buffer_head;
186+
tx_buffer_index_t tail = _tx_buffer_tail;
187+
#if (SERIAL_TX_BUFFER_SIZE>256)
188+
SREG = oldSREG;
189+
#endif
190+
if (head >= tail) return SERIAL_TX_BUFFER_SIZE - 1 - head + tail;
191+
return tail - head - 1;
192+
}
193+
179194
void HardwareSerial::flush()
180195
{
181196
// If we have never written a byte, no need to flush. This special

avr/cores/arduino/HardwareSerial.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ class HardwareSerial : public Stream
112112
virtual int available(void);
113113
virtual int peek(void);
114114
virtual int read(void);
115+
int availableForWrite(void);
115116
virtual void flush(void);
116117
virtual size_t write(uint8_t);
117118
inline size_t write(unsigned long n) { return write((uint8_t)n); }

0 commit comments

Comments
 (0)