#ifndef _USB_H_
#define _USB_H_
-// === TYPES ===
+#include <usb_core.h>
+#include <usb_hub.h>
+#include <usb_host.h>
+
typedef struct sUSBHost tUSBHost;
-typedef struct sUSBDevice tUSBDevice;
// === STRUCTURES ===
/**
- * \brief Defines a USB Host Controller
+ * \brief USB Hub data
*/
-struct sUSBHost
+struct sUSBHub
{
- 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);
+ tUSBDevice *Device;
+
+ tUSB_HubPoll CheckPorts;
+
+ int nPorts;
+ tUSBDevice *Devices[];
};
/**
*/
struct sUSBDevice
{
- tUSBHost *HostDef;
- void *Controller;
+ tUSBDevice *Next;
+ tUSBHub *ParentHub;
+ /**
+ * \brief Host controller used
+ */
+ tUSBHost *Host;
int Address;
+
+ tUSBDriver *Driver;
+ void *Data;
+};
- int MaxControl;
- int MaxBulk;
- int MaxISync;
+struct sUSBHost
+{
+ struct sUSBHost *Next;
+
+ tUSBHostDef *HostDef;
+ void *Ptr;
+
+ Uint8 AddressBitmap[128/8];
+
+ tUSBDevice RootHubDev;
+ tUSBHub RootHub;
};
-extern void USB_RegisterHost(tUSBHost *HostDef, void *ControllerPtr);
+extern void USB_NewDevice(tUSBHub *Hub);
#endif