aboutsummaryrefslogtreecommitdiff
path: root/cores/arduino
diff options
context:
space:
mode:
authorJustin Rajewski <justin@embeddedmicro.com>2014-03-18 14:15:41 -0700
committerCristian Maglie <c.maglie@bug.st>2014-05-24 00:34:56 +0200
commit872c88bb5f643702edcc8d0ebfc1f6cd13bcf414 (patch)
treeb97deeadaf9b67085cc2eca85ebbe090d65e4f73 /cores/arduino
parentf3e78a4a2920665b45b964049db3ebed9b8f1dc7 (diff)
improved USB write speeds
Diffstat (limited to 'cores/arduino')
-rw-r--r--cores/arduino/CDC.cpp7
-rw-r--r--cores/arduino/USBAPI.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/cores/arduino/CDC.cpp b/cores/arduino/CDC.cpp
index e1e859d..fb0c0e0 100644
--- a/cores/arduino/CDC.cpp
+++ b/cores/arduino/CDC.cpp
@@ -200,6 +200,11 @@ void Serial_::flush(void)
size_t Serial_::write(uint8_t c)
{
+ return write(&c, 1);
+}
+
+size_t Serial_::write(const uint8_t *buffer, size_t size)
+{
/* only try to send bytes if the high-level CDC connection itself
is open (not just the pipe) - the OS should set lineState when the port
is opened and clear lineState when the port is closed.
@@ -210,7 +215,7 @@ size_t Serial_::write(uint8_t c)
// open connection isn't broken cleanly (cable is yanked out, host dies
// or locks up, or host virtual serial port hangs)
if (_usbLineInfo.lineState > 0) {
- int r = USB_Send(CDC_TX,&c,1);
+ int r = USB_Send(CDC_TX,buffer,size);
if (r > 0) {
return r;
} else {
diff --git a/cores/arduino/USBAPI.h b/cores/arduino/USBAPI.h
index 7a14285..1c5ecf0 100644
--- a/cores/arduino/USBAPI.h
+++ b/cores/arduino/USBAPI.h
@@ -40,6 +40,7 @@ public:
virtual int read(void);
virtual void flush(void);
virtual size_t write(uint8_t);
+ virtual size_t write(const uint8_t*, size_t);
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool();
};