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:
parent
8c6f302e9c
commit
388e8efeb6
|
@ -159,10 +159,11 @@ void HardwareSerial::end(void) {
|
|||
*/
|
||||
|
||||
int HardwareSerial::read(void) {
|
||||
// Block until a byte becomes available, to save user confusion.
|
||||
while (!this->available())
|
||||
;
|
||||
return usart_getc(this->usart_device);
|
||||
if(usart_data_available(usart_device) > 0) {
|
||||
return usart_getc(usart_device);
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int HardwareSerial::available(void) {
|
||||
|
|
|
@ -118,11 +118,12 @@ void HardwareSerial::end(void) {
|
|||
* I/O
|
||||
*/
|
||||
|
||||
uint8 HardwareSerial::read(void) {
|
||||
// Block until a byte becomes available, to save user confusion.
|
||||
while (!this->available())
|
||||
;
|
||||
return usart_getc(this->usart_device);
|
||||
int HardwareSerial::read(void) {
|
||||
if(usart_data_available(usart_device) > 0) {
|
||||
return usart_getc(usart_device);
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 HardwareSerial::available(void) {
|
||||
|
|
|
@ -62,7 +62,7 @@ public:
|
|||
|
||||
/* I/O */
|
||||
uint32 available(void);
|
||||
uint8 read(void);
|
||||
int read(void);
|
||||
void flush(void);
|
||||
virtual void write(unsigned char);
|
||||
using Print::write;
|
||||
|
|
Loading…
Reference in New Issue