X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FUSB%2FCore%2Fusb.h;h=5a133630f5bbd5938a908d6b6b484eccb4cbf665;hb=17993abdd6e2662878dbd8dffe1517b0bf579e6e;hp=9bc45c8e08df1149e3489dc1f3c60f4a9600387d;hpb=1474ce5c1ba164bbccfefa411883805d12a0dc62;p=tpg%2Facess2.git diff --git a/Modules/USB/Core/usb.h b/Modules/USB/Core/usb.h index 9bc45c8e..5a133630 100644 --- a/Modules/USB/Core/usb.h +++ b/Modules/USB/Core/usb.h @@ -1,43 +1,61 @@ /* - * AcessOS Version 1 - * USB Stack + * Acess2 USB Stack + * - By John Hodge (thePowersGang) + * + * usb.h + * - USB Internal definitions */ #ifndef _USB_H_ #define _USB_H_ -// === TYPES === +#include +#include +#include + typedef struct sUSBHost tUSBHost; -typedef struct sUSBHub tUSBHub; typedef struct sUSBDevice tUSBDevice; +typedef struct sUSBEndpoint tUSBEndpoint; // === STRUCTURES === /** - * \brief Defines a USB Host Controller type + * \brief USB Hub data */ -struct sUSBHost +struct sUSBHub { - tUSBHost *Next; - - void (*CheckPorts)(void *Ptr); + tUSBInterface *Interface; + + int nPorts; + tUSBDevice *Devices[]; +}; - void *(*SendIN)(void *Ptr, int Fcn, int Endpt, int DataTgl, int bIOC, void *Data, size_t Length); - void *(*SendOUT)(void *Ptr, int Fcn, int Endpt, int DataTgl, int bIOC, void *Data, size_t Length); - void *(*SendSETUP)(void *Ptr, int Fcn, int Endpt, int DataTgl, int bIOC, void *Data, size_t Length); +struct sUSBEndpoint +{ + tUSBEndpoint *Next; // (usb_poll.c) Clock list + tUSBInterface *Interface; + int EndpointIdx; // Interface endpoint index + int EndpointNum; // Device endpoint num + + int PollingPeriod; // In 1ms intervals + int MaxPacketSize; // In bytes + Uint8 Type; // Same as sUSBDriver.Endpoints.Type + + int PollingAtoms; // (usb_poll.c) Period in clock list + void *InputData; }; /** - * \brief USB Hub data + * \brief Structure for a device's interface */ -struct sUSBHub +struct sUSBInterface { - /** - * \brief Host controller used - */ - tUSBHost *HostDef; - void *Controller; +// tUSBInterface *Next; + tUSBDevice *Dev; - int nPorts; - tUSBDevice *Devices[]; + tUSBDriver *Driver; + void *Data; + + int nEndpoints; + tUSBEndpoint Endpoints[]; }; /** @@ -45,20 +63,32 @@ struct sUSBHub */ struct sUSBDevice { - tUSBDevice *Next; - tUSBDevice *Hub; + tUSBHub *ParentHub; + /** + * \brief Host controller used + */ + tUSBHost *Host; int Address; + + int nInterfaces; + tUSBInterface *Interfaces[]; +}; + +struct sUSBHost +{ + struct sUSBHost *Next; + + tUSBHostDef *HostDef; + void *Ptr; - int Type; + Uint8 AddressBitmap[128/8]; - union { - tUSBHub Hub; - char Impl[0]; - } Data; + tUSBDevice RootHubDev; + tUSBInterface RootHubIf; + tUSBHub RootHub; }; -extern void USB_RegisterHost(tUSBHost *HostDef, void *ControllerPtr); -extern void USB_NewDevice(tUSBHub *Hub); +extern tUSBDriver *USB_int_FindDriverByClass(Uint32 ClassCode); #endif