USBHost custom library.

Dependents:   GR-PEACH_HVC-P2_sample_client mbed-os-storage-access GR-PEACH_Digital_Signage GR-PEACH_Audio_Playback_Sample ... more

Fork of USBHost by mbed official

Revision:
38:dd168a3e4194
Parent:
36:f8c0979c2814
Child:
40:cdc0d2ab4678
--- a/USBHostSerial/USBHostSerial.cpp	Tue Feb 28 02:51:39 2017 +0000
+++ b/USBHostSerial/USBHostSerial.cpp	Tue Mar 14 05:38:25 2017 +0000
@@ -194,11 +194,16 @@
 
 #define SET_LINE_CODING 0x20
 
-USBHostSerialPort::USBHostSerialPort(): circ_buf()
+USBHostSerialPort::USBHostSerialPort()
 {
+    p_circ_buf = new CircBufferHostSerial<uint8_t, (1024 * 32)>;
     init();
 }
 
+USBHostSerialPort::~USBHostSerialPort() {
+    delete p_circ_buf;
+}
+
 void USBHostSerialPort::init(void)
 {
     dev_connected = false;
@@ -213,7 +218,7 @@
     line_coding.data_bits = 8;
     line_coding.parity = None;
     line_coding.stop_bits = 1;
-    circ_buf.flush();
+    p_circ_buf->flush();
 }
 
 void USBHostSerialPort::connect(USBHost* _host, USBDeviceConnected * _dev,
@@ -246,10 +251,10 @@
         int len = bulk_in->getLengthTransferred();
         if (bulk_in->getState() == USB_TYPE_IDLE) {
             for (int i = 0; i < len; i++) {
-                while (circ_buf.isFull()) {
+                while (p_circ_buf->isFull()) {
                     Thread::wait(1);
                 }
-                circ_buf.queue(buf[i]);
+                p_circ_buf->queue(buf[i]);
             }
             rx.call();
             host->bulkRead(dev, bulk_in, buf, size_bulk_in, false);
@@ -297,13 +302,13 @@
         init();
         return -1;
     }
-    while (circ_buf.isEmpty()) {
+    while (p_circ_buf->isEmpty()) {
         if (dev_connected == false) {
             return -1;
         }
         Thread::wait(1);
     }
-    circ_buf.dequeue(&c);
+    p_circ_buf->dequeue(&c);
     return c;
 }
 
@@ -327,9 +332,9 @@
 int USBHostSerialPort::readBuf(char* b, int s, int timeout) {
     int i = 0;
 
-    if (bulk_out) {
+    if (bulk_in) {
         for (i = 0; i < s; i++) {
-            while ((circ_buf.isEmpty()) && (dev_connected)) {
+            while ((p_circ_buf->isEmpty()) && (dev_connected)) {
                 if (timeout == 0) {
                     break;
                 } else {
@@ -339,7 +344,7 @@
                     Thread::wait(1);
                 }
             }
-            if (!circ_buf.dequeue((uint8_t *)&b[i])) {
+            if (!p_circ_buf->dequeue((uint8_t *)&b[i])) {
                 break;
             }
         }
@@ -348,8 +353,9 @@
 }
 
 uint32_t USBHostSerialPort::available() {
-    return circ_buf.available();
+    return p_circ_buf->available();
 }
 
 #endif
 
+