supported GR-PEACH original: http://developer.mbed.org/users/va009039/code/USBHostC270_example/ The function of Isochronous has moved to USBHost_AddIso library.
Dependencies: USBHost_custom_Addiso
Fork of USBHostC270_example_GR-PEACH by
Diff: USBHostC270/BaseUvc.h
- 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);
