Modules/USB - Working on driver support, little headache
[tpg/acess2.git] / Modules / USB / Core / include / usb_core.h
index d8d1636..2a8ce9d 100644 (file)
@@ -8,7 +8,7 @@
 #ifndef _USB_CORE_H_
 #define _USB_CORE_H_
 
-typedef struct sUSBDevice      tUSBDevice;
+typedef struct sUSBInterface   tUSBInterface;
 typedef struct sUSBDriver      tUSBDriver;
 
 /**
@@ -18,29 +18,39 @@ struct sUSBDriver
        tUSBDriver      *Next;
        
        const char      *Name;
-       
-       // 23:16 - Interface Class
-       // 15:8  - Interface Sub Class
-       // 7:0   - Interface Protocol
-       Uint32  ClassMask;
-       Uint32  ClassCode;
 
-       void    (*Connected)(tUSBDevice *Dev);
-       void    (*Disconnected)(tUSBDevice *Dev);
+        int    MatchType;      // 0: Interface, 1: Device, 2: Vendor
+       union { 
+               struct {
+                       // 23:16 - Interface Class
+                       // 15:8  - Interface Sub Class
+                       // 7:0   - Interface Protocol
+                       Uint32  ClassMask;
+                       Uint32  ClassCode;
+               } Class;
+               struct {
+                       Uint16  VendorID;
+                       Uint16  DeviceID;
+               } VendorDev;
+       } Match;
+
+       void    (*Connected)(tUSBInterface *Dev);
+       void    (*Disconnected)(tUSBInterface *Dev);
 
         int    MaxEndpoints;   
        struct {
-               // 0: Bulk, 1: Control, 2: Interrupt
-                int    Type;
+               // USB Attrbute byte
+               // NOTE: Top bit indicates the direction (1=Input)
+               Uint8   Attributes;
                // Data availiable Callback
-               void    (*Interrupt)(tUSBDevice *Dev, int Length, void *Data);
+               void    (*DataAvail)(tUSBInterface *Dev, int Length, void *Data);
        } Endpoints[];
 };
 
-extern void    *USB_GetDeviceDataPtr(tUSBDevice *Dev);
-extern void    USB_SetDeviceDataPtr(tUSBDevice *Dev, void *Ptr);
+extern void    *USB_GetDeviceDataPtr(tUSBInterface *Dev);
+extern void    USB_SetDeviceDataPtr(tUSBInterface *Dev, void *Ptr);
 
-extern void    USB_SendData(tUSBDevice *Dev, int Endpoint, int Length, void *Data);
+extern void    USB_SendData(tUSBInterface *Dev, int Endpoint, int Length, void *Data);
 
 #endif
 

UCC git Repository :: git.ucc.asn.au