Modules/USB - Fiddling with USB
[tpg/acess2.git] / Modules / USB / Core / usb.h
index 207c156..9bc45c8 100644 (file)
@@ -7,79 +7,37 @@
 
 // === TYPES ===
 typedef struct sUSBHost        tUSBHost;
+typedef struct sUSBHub tUSBHub;
 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);
+// === STRUCTURES ===
 /**
- * \note X^16 + X15 + X^2 + 1
+ * \brief Defines a USB Host Controller type
  */
-extern Uint16  USB_DataCRC(void *Data, int len);
+struct sUSBHost
+{
+       tUSBHost        *Next;
+
+       void    (*CheckPorts)(void *Ptr);
+
+       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);
+};
 
-// === STRUCTURES ===
 /**
- * \brief Defines a USB Host Controller
+ * \brief USB Hub data
  */
-struct sUSBHost
+struct sUSBHub
 {
-       Uint16  IOBase;
-       
-        int    (*SendPacket)(int ID, int Length, void *Data);
+       /**
+        * \brief Host controller used
+        */
+       tUSBHost        *HostDef;
+       void    *Controller;
+
+        int    nPorts;
+       tUSBDevice      *Devices[];
 };
 
 /**
@@ -87,10 +45,20 @@ struct sUSBHost
  */
 struct sUSBDevice
 {
-       tUSBHost        *Host;
-        int    MaxControl;
-        int    MaxBulk;
-        int    MaxISync;
+       tUSBDevice      *Next;
+       tUSBDevice      *Hub;
+
+        int    Address;
+       
+        int    Type;
+       
+       union {
+               tUSBHub Hub;
+               char    Impl[0];
+       }       Data;
 };
 
+extern void    USB_RegisterHost(tUSBHost *HostDef, void *ControllerPtr);
+extern void    USB_NewDevice(tUSBHub *Hub);
+
 #endif

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