testing n-Bed with a Logitech C270 camera

Dependencies:   USBHost mbed

Fork of USBHostC270_example by Norimasa Okamoto

Revision:
11:6a8eef89eb22
Parent:
10:387c49b2fc7e
Child:
12:ea4badc78215
--- a/USBHostC270/BaseUvc.h	Sun Mar 17 13:22:13 2013 +0000
+++ b/USBHostC270/BaseUvc.h	Mon Mar 18 12:34:47 2013 +0000
@@ -104,8 +104,45 @@
         Control |= size<<16;
     }
 
-    inline void setSkip() {
-        Control |= 1<<14;
+    int Skip() {
+        return (Control>>14) & 1;
+    }
+
+    void setSkip() {
+        Control |= (1<<14);
+    }
+
+    void setFormat() {
+        Control |= (1<<15);
+    }
+
+    template<typename T>
+    inline bool enqueue(T* td) {
+        if (td) {
+            T* tail = reinterpret_cast<T*>(TailTd);
+            if (tail) {
+                tail->Next = td;
+                TailTd = reinterpret_cast<HCTD*>(td);
+                return true;
+            }
+        }
+        return false;
+    }
+
+    template<typename T>
+    inline T* dequeue() {
+        T* head = reinterpret_cast<T*>(reinterpret_cast<uint32_t>(HeadTd)&~3); // delete Halted and Toggle Carry bit
+        T* tail = reinterpret_cast<T*>(TailTd);
+        if (head == NULL || tail == NULL || head == tail) {
+            return NULL;
+        }
+        HeadTd = reinterpret_cast<HCTD*>(head->Next);
+        return head;
+    }
+    template<typename T>
+    void init_queue(T* td) {
+        TailTd = reinterpret_cast<HCTD*>(td);
+        HeadTd = reinterpret_cast<HCTD*>(td); 
     }
 };
 
@@ -165,7 +202,7 @@
 
 class BaseEp { // endpoint
 public:
-    BaseEp(int addr, uint8_t ep = 0, uint16_t size = 8, int lowSpeed = 0);
+    void init(int addr, uint8_t ep = 0, uint16_t size = 8, int lowSpeed = 0);
     int GetAddr();
     int GetLowSpeed();
     void update_FunctionAddress(int addr);
@@ -189,7 +226,7 @@
 
 class IsochronousEp : public BaseEp {
 public:
-    IsochronousEp(int addr, uint8_t ep, uint16_t size);
+    void init(int addr, uint8_t ep, uint16_t size);
     void reset(int delay_ms = 100);
     HCITD* isochronousReceive(int millisec=osWaitForever);
     int isochronousSend(uint8_t* buf, int len, int millisec=osWaitForever);