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:
36:f8c0979c2814
Parent:
24:868cbfe611a7
--- a/USBHostSerial/MtxCircBuffer.h	Fri Apr 29 01:16:38 2016 +0100
+++ b/USBHostSerial/MtxCircBuffer.h	Mon Jan 23 06:05:50 2017 +0000
@@ -18,7 +18,6 @@
 #define MTXCIRCBUFFER_H
 
 #include "stdint.h"
-#include "rtos.h"
 
 //Mutex protected circular buffer
 template<typename T, int size>
@@ -31,17 +30,11 @@
     }
 
     bool isFull() {
-        mtx.lock();
-        bool r = (((write + 1) % size) == read);
-        mtx.unlock();
-        return r;
+        return (((write + 1) % size) == read);
     }
 
     bool isEmpty() {
-        mtx.lock();
-        bool r = (read == write);
-        mtx.unlock();
-        return r;
+        return (read == write);
     }
 
     void flush() {
@@ -49,41 +42,34 @@
         read = 0;
     }
 
-    void queue(T k) {
-        mtx.lock();
-        while (((write + 1) % size) == read) {
-            mtx.unlock();
-            Thread::wait(10);
-            mtx.lock();
+    bool queue(T k) {
+        if (isFull()) {
+            return false;
         }
-        buf[write++] = k;
-        write %= size;
-        mtx.unlock();
+        buf[write] = k;
+        write = (write + 1) % size;
+        return true;
     }
 
-    uint16_t available() {
-        mtx.lock();
-        uint16_t a = (write >= read) ? (write - read) : (size - read + write);
-        mtx.unlock();
+    uint32_t available() {
+        uint32_t a = (write >= read) ? (write - read) : (size - read + write);
         return a;
     }
 
     bool dequeue(T * c) {
-        mtx.lock();
-        bool empty = (read == write);
-        if (!empty) {
-            *c = buf[read++];
-            read %= size;
+        if (isEmpty()) {
+            return false;
         }
-        mtx.unlock();
-        return (!empty);
+        *c = buf[read];
+        read = (read + 1) % size;
+        return true;
     }
 
 private:
-    volatile uint16_t write;
-    volatile uint16_t read;
+    volatile uint32_t write;
+    volatile uint32_t read;
     volatile T buf[size];
-    Mutex mtx;
 };
 
 #endif
+