added Boolean operators to HardwareSerial and CDC to test whether the port is ready to send data.
Mostly useful for Leonardo - simple way to test whether the port is actually opened by an application and ready to receive data. For Serial objects attached to real UARTs always returns true.
This commit is contained in:
parent
1534b2b730
commit
a984b581a8
|
@ -213,6 +213,12 @@ size_t Serial_::write(uint8_t c)
|
|||
return 0;
|
||||
}
|
||||
|
||||
Serial_::operator bool() {
|
||||
if (_usbLineInfo.lineState > 0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
Serial_ Serial;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -398,6 +398,10 @@ size_t HardwareSerial::write(uint8_t c)
|
|||
return 1;
|
||||
}
|
||||
|
||||
HardwareSerial::operator bool() {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Preinstantiate Objects //////////////////////////////////////////////////////
|
||||
|
||||
#if defined(UBRRH) && defined(UBRRL)
|
||||
|
|
|
@ -57,6 +57,7 @@ class HardwareSerial : public Stream
|
|||
virtual void flush(void);
|
||||
virtual size_t write(uint8_t);
|
||||
using Print::write; // pull in write(str) and write(buf, size) from Print
|
||||
operator bool();
|
||||
};
|
||||
|
||||
#if defined(UBRRH) || defined(UBRR0H)
|
||||
|
|
|
@ -39,6 +39,7 @@ public:
|
|||
virtual int read(void);
|
||||
virtual void flush(void);
|
||||
virtual size_t write(uint8_t);
|
||||
operator bool();
|
||||
};
|
||||
extern Serial_ Serial;
|
||||
|
||||
|
|
Loading…
Reference in New Issue