Fixed issue in F1 and F3 with HardwareSerial read(), which should return -1 if no data in the input buffer, (be non-blocking)

This commit is contained in:
Roger Clark 2016-07-18 16:20:24 +10:00
parent 8c6f302e9c
commit 388e8efeb6
3 changed files with 12 additions and 10 deletions

View File

@ -159,10 +159,11 @@ void HardwareSerial::end(void) {
*/ */
int HardwareSerial::read(void) { int HardwareSerial::read(void) {
// Block until a byte becomes available, to save user confusion. if(usart_data_available(usart_device) > 0) {
while (!this->available()) return usart_getc(usart_device);
; } else {
return usart_getc(this->usart_device); return -1;
}
} }
int HardwareSerial::available(void) { int HardwareSerial::available(void) {

View File

@ -118,11 +118,12 @@ void HardwareSerial::end(void) {
* I/O * I/O
*/ */
uint8 HardwareSerial::read(void) { int HardwareSerial::read(void) {
// Block until a byte becomes available, to save user confusion. if(usart_data_available(usart_device) > 0) {
while (!this->available()) return usart_getc(usart_device);
; } else {
return usart_getc(this->usart_device); return -1;
}
} }
uint32 HardwareSerial::available(void) { uint32 HardwareSerial::available(void) {

View File

@ -62,7 +62,7 @@ public:
/* I/O */ /* I/O */
uint32 available(void); uint32 available(void);
uint8 read(void); int read(void);
void flush(void); void flush(void);
virtual void write(unsigned char); virtual void write(unsigned char);
using Print::write; using Print::write;