typedef struct sUSBHost tUSBHost;
typedef struct sUSBDevice tUSBDevice;
-// === CONSTANTS ===
-enum eUSB_PIDs
-{
- /**
- * \name Token
- * \{
- */
- PID_OUT = 0xE1,
- PID_IN = 0x69,
- PID_SOF = 0xA5,
- PID_SETUP = 0x2D,
- /**
- * \}
- */
-
- /**
- * \name Data
- * \{
- */
- PID_DATA0 = 0xC3,
- PID_DATA1 = 0x4B,
- PID_DATA2 = 0x87, // USB2 only
- PID_MDATA = 0x0F, // USB2 only
- /**
- * \}
- */
-
- /**
- * \name Handshake
- * \{
- */
- PID_ACK = 0xD2,
- PID_NAK = 0x5A,
- PID_STALL = 0x1E,
- PID_NYET = 0x96,
- /**
- * \}
- */
-
- /**
- * \name Special
- * \{
- */
- PID_PRE = 0x3C, PID_ERR = 0x3C,
- PID_SPLIT = 0x78,
- PID_PING = 0xB4,
- PID_RESVD = 0xF0,
- /**
- * \}
- */
-};
-
-// === FUNCTIONS ===
-/**
- * \note 00101 - X^5+X^2+1
- */
-extern Uint8 USB_TokenCRC(void *Data, int len);
-/**
- * \note X^16 + X15 + X^2 + 1
- */
-extern Uint16 USB_DataCRC(void *Data, int len);
-
// === STRUCTURES ===
/**
* \brief Defines a USB Host Controller
*/
struct sUSBHost
{
- Uint16 IOBase;
-
- int (*SendPacket)(int ID, int Length, void *Data);
+ int (*SendIN)(void *Ptr, int Fcn, int Endpt, int DataTgl, void *Data, size_t Length);
+ int (*SendOUT)(void *Ptr, int Fcn, int Endpt, int DataTgl, void *Data, size_t Length);
+ int (*SendSETUP)(void *Ptr, int Fcn, int Endpt, int DataTgl, void *Data, size_t Length);
};
/**
*/
struct sUSBDevice
{
- tUSBHost *Host;
+ tUSBHost *HostDef;
+ void *Controller;
+
+ int Address;
+
int MaxControl;
int MaxBulk;
int MaxISync;
};
+extern void USB_RegisterHost(tUSBHost *HostDef, void *ControllerPtr);
+
#endif