diff options
author | Zach Eveland <zeveland@blacklabel-development.com> | 2012-04-01 12:54:35 -0400 |
---|---|---|
committer | Zach Eveland <zeveland@blacklabel-development.com> | 2012-04-01 12:54:35 -0400 |
commit | a984b581a8ad093b55ec9f2d4677afdd77bf4705 (patch) | |
tree | c3f4c2119b2c2129d8948b872920a235286dbb40 | |
parent | 1534b2b730af952d836ecaf79563fa54f689720b (diff) |
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.
-rw-r--r-- | cores/arduino/CDC.cpp | 6 | ||||
-rw-r--r-- | cores/arduino/HardwareSerial.cpp | 4 | ||||
-rw-r--r-- | cores/arduino/HardwareSerial.h | 1 | ||||
-rw-r--r-- | cores/arduino/USBAPI.h | 1 |
4 files changed, 12 insertions, 0 deletions
diff --git a/cores/arduino/CDC.cpp b/cores/arduino/CDC.cpp index 7206aa6..1275304 100644 --- a/cores/arduino/CDC.cpp +++ b/cores/arduino/CDC.cpp @@ -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 diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index 9985b78..f40ddee 100644 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -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) diff --git a/cores/arduino/HardwareSerial.h b/cores/arduino/HardwareSerial.h index 176abe1..bf4924c 100644 --- a/cores/arduino/HardwareSerial.h +++ b/cores/arduino/HardwareSerial.h @@ -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) diff --git a/cores/arduino/USBAPI.h b/cores/arduino/USBAPI.h index 5169e65..f66cb16 100644 --- a/cores/arduino/USBAPI.h +++ b/cores/arduino/USBAPI.h @@ -39,6 +39,7 @@ public: virtual int read(void); virtual void flush(void); virtual size_t write(uint8_t); + operator bool(); }; extern Serial_ Serial; |