Modules/USB - A little work on HID code
[tpg/acess2.git] / Modules / USB / Core / usb.h
index 65bba9d..5a13363 100644 (file)
@@ -1,6 +1,9 @@
 /*
- * AcessOS Version 1
- * USB Stack
+ * Acess2 USB Stack
+ * - By John Hodge (thePowersGang)
+ * 
+ * usb.h
+ * - USB Internal definitions
  */
 #ifndef _USB_H_
 #define _USB_H_
@@ -10,6 +13,8 @@
 #include <usb_host.h>
 
 typedef struct sUSBHost        tUSBHost;
+typedef struct sUSBDevice      tUSBDevice;
+typedef struct sUSBEndpoint    tUSBEndpoint;
 
 // === STRUCTURES ===
 /**
@@ -17,31 +22,57 @@ typedef struct sUSBHost     tUSBHost;
  */
 struct sUSBHub
 {
-       tUSBHub *Next;
-       tUSBDevice      *Device;
-       
-       tUSB_HubPoll    CheckPorts;
+       tUSBInterface   *Interface;
        
         int    nPorts;
        tUSBDevice      *Devices[];
 };
 
+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 Structure for a device's interface
+ */
+struct sUSBInterface
+{
+//     tUSBInterface   *Next;
+       tUSBDevice      *Dev;
+
+       tUSBDriver      *Driver;
+       void    *Data;
+       
+        int    nEndpoints;
+       tUSBEndpoint    Endpoints[];
+};
+
 /**
  * \brief Defines a single device on the USB Bus
  */
 struct sUSBDevice
 {
-       tUSBDevice      *Next;
-       tUSBDevice      *ParentHub;
+       tUSBHub *ParentHub;
 
        /**
         * \brief Host controller used
         */
        tUSBHost        *Host;
         int    Address;
-       
-       tUSBDriver      *Driver;
-       void    *Data;
+
+        int    nInterfaces;
+       tUSBInterface   *Interfaces[];
 };
 
 struct sUSBHost
@@ -52,8 +83,12 @@ struct sUSBHost
        void    *Ptr;
        
        Uint8   AddressBitmap[128/8];
+       
+       tUSBDevice      RootHubDev;
+       tUSBInterface   RootHubIf;
+       tUSBHub RootHub;
 };
 
-extern void    USB_NewDevice(tUSBHub *Hub);
+extern tUSBDriver      *USB_int_FindDriverByClass(Uint32 ClassCode);
 
 #endif

UCC git Repository :: git.ucc.asn.au