USBMSD SD card Hello World for Mbed platforms

Dependencies:   mbed USBMSD_SD USBDevice

Revision:
2:27a7e7f8d399
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/USBDevice/USBSERIAL/USBSerial.cpp	Fri Nov 11 15:22:53 2011 +0000
@@ -0,0 +1,55 @@
+// USBSerial.c
+// USB device example: virtual serial port
+// Copyright (c) 2011 ARM Limited. All rights reserved
+
+#include "stdint.h"
+#include "USBSerial.h"
+#include "USBBusInterface.h"
+
+
+int USBSerial::_putc(int c) {
+    send(EPBULK_IN, (uint8_t *)&c, 1);
+    return 1;
+}
+
+int USBSerial::_getc() {
+    uint8_t c;
+    while (buf.isEmpty());
+    buf.dequeue(&c);
+    return c;
+}
+
+void USBSerial::attach(void (*ptr)(void)) {
+    handler = true;
+    proc = true;
+    fn = ptr;
+}
+
+
+bool USBSerial::EP2_OUT_callback() {
+    uint8_t c[65];
+    uint16_t size = 0;
+
+    //we read the packet received and put it on the circular buffer
+    USBCDC::read(EPBULK_OUT, c, &size, MAX_PACKET_SIZE_EPBULK);
+    for (int i = 0; i < size; i++) {
+        buf.queue(c[i]);
+    }
+
+    //call a potential handler
+    if (handler) {
+        if (proc) {
+            (*fn)();
+        } else {
+            rx.call();
+        }
+    }
+
+    // We reactivate the endpoint to receive next characters
+    readStart(EPBULK_OUT, MAX_PACKET_SIZE_EPBULK);
+    return true;
+}
+
+uint8_t USBSerial::available() {
+    return buf.available();
+}