From 0b3acaea210b82ed8cb32762add38aa4e87a7865 Mon Sep 17 00:00:00 2001 From: Zach Eveland Date: Tue, 30 Aug 2011 11:04:34 -0400 Subject: [PATCH] CDC and HID write() routines now return non-void - brought in line with new write behavior --- hardware/arduino/cores/arduino/CDC.cpp | 7 +++++-- hardware/arduino/cores/arduino/HID.cpp | 7 ++++--- hardware/arduino/cores/arduino/USBAPI.h | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/hardware/arduino/cores/arduino/CDC.cpp b/hardware/arduino/cores/arduino/CDC.cpp index b04c79be1..1f1fcb5e1 100644 --- a/hardware/arduino/cores/arduino/CDC.cpp +++ b/hardware/arduino/cores/arduino/CDC.cpp @@ -153,7 +153,7 @@ void Serial_::flush(void) USB_Flush(CDC_TX); } -void Serial_::write(uint8_t c) +size_t Serial_::write(uint8_t c) { /* 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 @@ -164,8 +164,11 @@ void Serial_::write(uint8_t c) // TODO - ZE - check behavior on different OSes and test what happens if an // 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) + if (_usbLineInfo.lineState > 0) { USB_Send(CDC_TX,&c,1); + return 1; + } + return 0; } Serial_ Serial; diff --git a/hardware/arduino/cores/arduino/HID.cpp b/hardware/arduino/cores/arduino/HID.cpp index b04289509..36e9b670f 100644 --- a/hardware/arduino/cores/arduino/HID.cpp +++ b/hardware/arduino/cores/arduino/HID.cpp @@ -388,7 +388,7 @@ const uint8_t _asciimap[128] = }; uint8_t USBPutChar(uint8_t c); -void Keyboard_::write(uint8_t c) +size_t Keyboard_::write(uint8_t c) { // Keydown { @@ -398,10 +398,10 @@ void Keyboard_::write(uint8_t c) else { if (c >= 128) - return; + return 0; c = pgm_read_byte(_asciimap + c); if (!c) - return; + return 0; if (c & 0x80) { keys.modifiers |= KEY_MODIFIER_LEFT_SHIFT; @@ -416,6 +416,7 @@ void Keyboard_::write(uint8_t c) KeyReport keys = {0}; sendReport(&keys); } + return 1; } #endif \ No newline at end of file diff --git a/hardware/arduino/cores/arduino/USBAPI.h b/hardware/arduino/cores/arduino/USBAPI.h index 4d26d23ea..b8330091c 100644 --- a/hardware/arduino/cores/arduino/USBAPI.h +++ b/hardware/arduino/cores/arduino/USBAPI.h @@ -33,7 +33,7 @@ public: virtual int peek(void); virtual int read(void); virtual void flush(void); - virtual void write(uint8_t); + virtual size_t write(uint8_t); }; extern Serial_ Serial; @@ -93,7 +93,7 @@ public: Keyboard_(); void sendReport(KeyReport* keys); void setKeyMap(KeyMap* keyMap); - virtual void write(uint8_t); + virtual size_t write(uint8_t); }; extern Keyboard_ Keyboard;