#ifndef _USB_CORE_H_
#define _USB_CORE_H_
+#include <acess.h>
+
typedef struct sUSBInterface tUSBInterface;
typedef struct sUSBDriver tUSBDriver;
+typedef void (*tUSB_DataCallback)(tUSBInterface *Dev, int EndPt, int Length, void *Data);
+
/**
*/
struct sUSBDriver
// 23:16 - Interface Class
// 15:8 - Interface Sub Class
// 7:0 - Interface Protocol
- Uint32 ClassMask;
Uint32 ClassCode;
+ Uint32 ClassMask;
} Class;
struct {
Uint16 VendorID;
// NOTE: Top bit indicates the direction (1=Input)
Uint8 Attributes;
// Data availiable Callback
- void (*DataAvail)(tUSBInterface *Dev, int Length, void *Data);
+ tUSB_DataCallback DataAvail;
} Endpoints[];
};
extern void USB_StartPollingEndpoint(tUSBInterface *Dev, int Endpoint);
extern void USB_ReadDescriptor(tUSBInterface *Dev, int Type, int Index, int Length, void *Data);
+extern void USB_Request(tUSBInterface *Dev, int Endpoint, int Type, int Req, int Value, int Index, int Len, void *Data);
// TODO: Async
extern void USB_SendData(tUSBInterface *Dev, int Endpoint, int Length, void *Data);
extern void USB_RecvData(tUSBInterface *Dev, int Endpoint, int Length, void *Data);
+extern void USB_RecvDataA(tUSBInterface *Dev, int Endpoint, int Length, void *DataBuf, tUSB_DataCallback Callback);
#endif