Modules/USB - Cleanup and sorting, added hub code to build
[tpg/acess2.git] / Modules / USB / Core / usb.h
1 /*
2  * Acess2 USB Stack
3  * - By John Hodge (thePowersGang)
4  * 
5  * usb.h
6  * - USB Internal definitions
7  */
8 #ifndef _USB_H_
9 #define _USB_H_
10
11 #include <usb_core.h>
12 #include <usb_hub.h>
13 #include <usb_host.h>
14
15 typedef struct sUSBHost tUSBHost;
16 typedef struct sUSBDevice       tUSBDevice;
17 typedef struct sUSBEndpoint     tUSBEndpoint;
18
19 // === STRUCTURES ===
20 /**
21  * \brief USB Hub data
22  */
23 struct sUSBHub
24 {
25         tUSBInterface   *Interface;
26         
27          int    nPorts;
28         tUSBDevice      *Devices[];
29 };
30
31 struct sUSBEndpoint
32 {
33         tUSBEndpoint    *Next;  // In the segmented list
34         tUSBInterface   *Interface;
35          int    EndpointNum;
36         
37          int    PollingPeriod;  // In 1ms intervals
38          int    PollingAtoms;   // *INTERNAL* usb_poll.c
39          int    MaxPacketSize;  // In bytes
40
41         Uint8   Type;   // Same as sUSBDriver.Endpoints.Type
42 };
43
44 /**
45  * \brief Structure for a device's interface
46  */
47 struct sUSBInterface
48 {
49         tUSBInterface   *Next;
50         tUSBDevice      *Dev;
51
52         tUSBDriver      *Driver;
53         void    *Data;
54         
55          int    nEndpoints;
56         tUSBEndpoint    Endpoints[];
57 };
58
59 /**
60  * \brief Defines a single device on the USB Bus
61  */
62 struct sUSBDevice
63 {
64         tUSBHub *ParentHub;
65
66         /**
67          * \brief Host controller used
68          */
69         tUSBHost        *Host;
70          int    Address;
71
72          int    nInterfaces;
73         tUSBInterface   *Interfaces[];
74 };
75
76 struct sUSBHost
77 {
78         struct sUSBHost *Next;
79         
80         tUSBHostDef     *HostDef;
81         void    *Ptr;
82         
83         Uint8   AddressBitmap[128/8];
84         
85         tUSBDevice      RootHubDev;
86         tUSBInterface   RootHubIf;
87         tUSBHub RootHub;
88 };
89
90 extern void     USB_NewDevice(tUSBHub *Hub);
91
92 #endif

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