#ifndef _USB_CORE_H_
#define _USB_CORE_H_
-typedef struct sUSBDevice tUSBDevice;
+typedef struct sUSBInterface tUSBInterface;
typedef struct sUSBDriver tUSBDriver;
/**
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