USB device stack

Dependents:   mbed-mX-USB-TEST1 USBMSD_SD_HID_HelloWorld HidTest MIDI_usb_bridge ... more

Legacy Warning

This is an mbed 2 library. To learn more about mbed OS 5, visit the docs.

Pull requests against this repository are no longer supported. Please raise against mbed OS 5 as documented above.

Files at this revision

API Documentation at this revision

Comitter:
mbed_official
Date:
Thu Apr 23 08:45:28 2015 +0100
Parent:
50:a3c50882f2c5
Child:
52:fb344268a308
Commit message:
Synchronized with git revision 7c4831f300daf357b21e4301785771d48f00e3a6

Full URL: https://github.com/mbedmicro/mbed/commit/7c4831f300daf357b21e4301785771d48f00e3a6/

Changed CircBuffer to take its size as a template parameters for efficientcy.

Changed in this revision

USBMSD/USBMSD.cpp Show annotated file Show diff for this revision Revisions of this file
USBSerial/CircBuffer.h Show annotated file Show diff for this revision Revisions of this file
USBSerial/USBSerial.h Show annotated file Show diff for this revision Revisions of this file
--- a/USBMSD/USBMSD.cpp	Mon Apr 20 10:45:54 2015 +0100
+++ b/USBMSD/USBMSD.cpp	Thu Apr 23 08:45:28 2015 +0100
@@ -135,10 +135,10 @@
 }
 
 void USBMSD::disconnect() {
+    USBDevice::disconnect();
     //De-allocate MSD page size:
     free(page);
     page = NULL;
-    USBDevice::disconnect();
 }
 
 void USBMSD::reset() {
--- a/USBSerial/CircBuffer.h	Mon Apr 20 10:45:54 2015 +0100
+++ b/USBSerial/CircBuffer.h	Thu Apr 23 08:45:28 2015 +0100
@@ -19,20 +19,10 @@
 #ifndef CIRCBUFFER_H
 #define CIRCBUFFER_H
 
-template <class T>
+template <class T, int Size>
 class CircBuffer {
 public:
-    CircBuffer(int length) {
-        write = 0;
-        read = 0;
-        size = length + 1;
-        buf = (T *)malloc(size * sizeof(T));
-    };
-
-    ~CircBuffer() {
-        free(buf);
-     }
-
+    CircBuffer():write(0), read(0){}
     bool isFull() {
         return ((write + 1) % size == read);
     };
@@ -66,8 +56,8 @@
 private:
     volatile uint16_t write;
     volatile uint16_t read;
-    uint16_t size;
-    T * buf;
+    static const int size = Size+1;  //a modern optimizer should be able to remove this so it uses no ram.
+    T buf[Size];
 };
 
 #endif
--- a/USBSerial/USBSerial.h	Mon Apr 20 10:45:54 2015 +0100
+++ b/USBSerial/USBSerial.h	Thu Apr 23 08:45:28 2015 +0100
@@ -56,7 +56,7 @@
     * @param connect_blocking define if the connection must be blocked if USB not plugged in
     *
     */
-    USBSerial(uint16_t vendor_id = 0x1f00, uint16_t product_id = 0x2012, uint16_t product_release = 0x0001, bool connect_blocking = true): USBCDC(vendor_id, product_id, product_release, connect_blocking), buf(128){
+    USBSerial(uint16_t vendor_id = 0x1f00, uint16_t product_id = 0x2012, uint16_t product_release = 0x0001, bool connect_blocking = true): USBCDC(vendor_id, product_id, product_release, connect_blocking){
         settingsChangedCallback = 0;
     };
 
@@ -154,7 +154,7 @@
 
 private:
     FunctionPointer rx;
-    CircBuffer<uint8_t> buf;
+    CircBuffer<uint8_t,128> buf;
     void (*settingsChangedCallback)(int baud, int bits, int parity, int stop);
 };