From e0179c57fa03bf743f8031d457cbb86ccc482360 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Thu, 4 Dec 2014 08:08:49 +1100 Subject: [PATCH] Partially complete work to bring SerialUSB to Arduino 1.0 API. Still need to write code for SerialUSB.flash and SerialUSB.peek --- STM32F1XX/cores/maple/HardwareSerial.cpp | 2 +- STM32F1XX/cores/maple/HardwareSerial.h | 2 +- STM32F1XX/cores/maple/usb_serial.cpp | 16 ++++++++++++++-- STM32F1XX/cores/maple/usb_serial.h | 19 +++++++++++++------ 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/STM32F1XX/cores/maple/HardwareSerial.cpp b/STM32F1XX/cores/maple/HardwareSerial.cpp index f58abdf..2d01379 100644 --- a/STM32F1XX/cores/maple/HardwareSerial.cpp +++ b/STM32F1XX/cores/maple/HardwareSerial.cpp @@ -152,7 +152,7 @@ int HardwareSerial::available(void) { int HardwareSerial::peek(void) { - return usart_getc(this->usart_device); + return usart_peek(this->usart_device); } int HardwareSerial::availableForWrite(void) diff --git a/STM32F1XX/cores/maple/HardwareSerial.h b/STM32F1XX/cores/maple/HardwareSerial.h index 4b0f2ac..1dcfc06 100644 --- a/STM32F1XX/cores/maple/HardwareSerial.h +++ b/STM32F1XX/cores/maple/HardwareSerial.h @@ -89,7 +89,7 @@ public: /* Set up/tear down */ void begin(uint32 baud); - void end(); + void end(); virtual int available(void); virtual int peek(void); virtual int read(void); diff --git a/STM32F1XX/cores/maple/usb_serial.cpp b/STM32F1XX/cores/maple/usb_serial.cpp index 3b5fbb6..a116b22 100644 --- a/STM32F1XX/cores/maple/usb_serial.cpp +++ b/STM32F1XX/cores/maple/usb_serial.cpp @@ -127,10 +127,22 @@ size_t n = 0; return n; } -uint32 USBSerial::available(void) { +int USBSerial::available(void) { return usb_cdcacm_data_available(); } +int USBSerial::peek(void) +{ +#warning "TO DO!" + uint8 b; + return usb_cdcacm_peek(&b,1); +} + +void USBSerial::flush(void) +{ +#warning "TO DO!" +} + uint32 USBSerial::read(void *buf, uint32 len) { if (!buf) { return 0; @@ -145,7 +157,7 @@ uint32 USBSerial::read(void *buf, uint32 len) { } /* Blocks forever until 1 byte is received */ -uint8 USBSerial::read(void) { +int USBSerial::read(void) { uint8 b; this->read(&b, 1); return b; diff --git a/STM32F1XX/cores/maple/usb_serial.h b/STM32F1XX/cores/maple/usb_serial.h index 8b59ec3..706da07 100644 --- a/STM32F1XX/cores/maple/usb_serial.h +++ b/STM32F1XX/cores/maple/usb_serial.h @@ -31,13 +31,14 @@ #ifndef _WIRISH_USB_SERIAL_H_ #define _WIRISH_USB_SERIAL_H_ -#include -#include +#include "Print.h" +#include "boards.h" +#include "stream.h" /** * @brief Virtual serial terminal. */ -class USBSerial : public Print { +class USBSerial : public Stream { public: USBSerial(void); @@ -46,14 +47,20 @@ public: // Roger Clark. Added dummy function so that existing Arduino sketches which specify baud rate will compile. void begin(unsigned long); void begin(unsigned long, uint8_t); - void end(void); - uint32 available(void); + virtual int available(void);// Changed to virtual uint32 read(void *buf, uint32 len); - uint8 read(void); + // uint8 read(void); + // Roger Clark. added functions to support Arduino 1.0 API + virtual int peek(void); + virtual int read(void); + int availableForWrite(void); + virtual void flush(void); + + size_t write(uint8); size_t write(const char *str); size_t write(const void*, uint32);