File tree Expand file tree Collapse file tree 3 files changed +17
-0
lines changed
hardware/arduino/avr/cores/arduino Expand file tree Collapse file tree 3 files changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -177,6 +177,7 @@ read KEYWORD2 Serial_Read
177177print KEYWORD2 Serial_Print
178178println KEYWORD2 Serial_Println
179179available KEYWORD2 Serial_Available
180+ availableForWrite KEYWORD2
180181flush KEYWORD2 Serial_Flush
181182setTimeout KEYWORD2
182183find KEYWORD2
Original file line number Diff line number Diff 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+
179194void HardwareSerial::flush ()
180195{
181196 // If we have never written a byte, no need to flush. This special
Original file line number Diff line number Diff 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); }
You can’t perform that action at this time.
0 commit comments