aboutsummaryrefslogtreecommitdiff
path: root/cores/arduino/CDC.cpp
diff options
context:
space:
mode:
authorZach Eveland <zeveland@blacklabel-development.com>2012-04-06 21:23:17 -0400
committerZach Eveland <zeveland@blacklabel-development.com>2012-04-06 21:23:17 -0400
commitee611dc194fad72d2db9a901208577857365778f (patch)
treefafdbb0759ad23598ff48d9423fc940c2170760c /cores/arduino/CDC.cpp
parent02c5849501294f2965051c41e1236899a55f7bfc (diff)
Revert "Revert "added a short delay and comment to boolean operator in CDC""
This reverts commit 200eefb4e2ac7796c5c901e8fd9369c85ec544c5.
Diffstat (limited to 'cores/arduino/CDC.cpp')
-rw-r--r--cores/arduino/CDC.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/cores/arduino/CDC.cpp b/cores/arduino/CDC.cpp
index 1275304..c1e646d 100644
--- a/cores/arduino/CDC.cpp
+++ b/cores/arduino/CDC.cpp
@@ -213,10 +213,19 @@ size_t Serial_::write(uint8_t c)
return 0;
}
+// This operator is a convenient way for a sketch to check whether the
+// port has actually been configured and opened by the host (as opposed
+// to just being connected to the host). It can be used, for example, in
+// setup() before printing to ensure that an application on the host is
+// actually ready to receive and display the data.
+// We add a short delay before returning to fix a bug observed by Federico
+// where the port is configured (lineState != 0) but not quite opened.
Serial_::operator bool() {
- if (_usbLineInfo.lineState > 0)
- return true;
- return false;
+ bool result = false;
+ if (_usbLineInfo.lineState > 0)
+ result = true;
+ delay(10);
+ return result;
}
Serial_ Serial;