1 typedef
struct USBH_HOST_DRIVER_INST {
2 U32 Magic;
3 USBH_DLIST HostControllerList;
4 U32 HostControllerCount;
5 USBH_DLIST NotificationList;
// Registered PNP notifications
6 U32 NotificationCount;
// *** USBH_RegisterPnPNotification()
7 USBH_DLIST DelayedPnPNotificationList;
// Delayed Pnp notifications
8 U32 DelayedPnPNotificationCount;
// called in an timer routine
9 USBH_TIMER_HANDLE DelayedPnPNotifyTimer;
// call Delayed Pnp notifications
10 USBH_DLIST EnumErrorNotificationList;
// *** USBH_RegisterEnumErrorNotification()
11 U32 EnumErrorNotificationCount;
// *** USBH_RegisterEnumErrorNotification()
12 USBH_INTERFACE_ID
NextInterfaceId;
// Next free ID's for a new enumerated device
13 USBH_DEVICE_ID
NextDeviceId;
// Next free ID's for a new enumerated device
14 } USBH_HOST_DRIVER_INST;
15
16 typedef
struct USBH_GLOBAL {
17 U8 ConfigCompleted;
18 U8 InitCompleted;
19 USBH_HC_HANDLE hHC;
// Context for the host controller driver
20 USBH_HC_BD_HANDLE hHCBD;
// Handle of the bus driver of a host controller
21 USBH_HOST_DRIVER_INST DriverInst;
//
22 USBH_HOST_DRIVER * pDriver;
// USBH_HOST_INIT_FUNC, USBH_HOST_EXIT_FUNC, etc.
23 USBH_ON_SETCONFIGURATION_FUNC * pfOnSetConfiguration;
// USBH_SetOnSetConfiguration()
24 void * pOnSetConfigContext;
// USBH_SetOnSetConfiguration()
25 struct {
// Config **************
26 U32 TransferBufferSize;
// USBH_AssignMemory() USBH_AssignTransferMemory()
27 U8 NumRootHubs;
28 U8 RootHubPortsAlwaysPowered;
29 U8 RootHubPerPortPowered;
30 U8 RootHubSupportOvercurrent;
31 U8 NumUSBDevices;
// USBH_ConfigMaxUSBDevices()
32 U8 NumBulkEndpoints;
// USBH_ConfigMaxNumEndpoints()
33 U8 NumIntEndpoints;
// USBH_ConfigMaxNumEndpoints()
34 U8 NumIsoEndpoints;
// USBH_ConfigMaxNumEndpoints()
35 U8 SupportExternalHubs;
// USBH_ConfigSupportExternalHubs()
36 U8 SetHighIsPowerOn;
37 U32 DefaultPowerGoodTime;
38 } Config;
// Config **************
39 U8 IsRunning;
// USBH_Task()
40 U8 TimerTaskIsRunning;
41 U8 ISRTaskIsRunning;
// USBH_ISRTask()
42 USBH_DRIVER_REMOVE_FUNC *
pfDriverRemove;
43 } USBH_GLOBAL; // void USBH_ON_PNP_EVENT_FUNC(USBH_INTERFACE_ID InterfaceId);
44 // USBH_GetInterfaceInfo( InterfaceId, &InterfaceInfo )
45 struct USB_DEVICE {
// USBH_BD_GetDeviceById( DeviceId ) = InterfaceInfo.DeviceId
46 U32 Magic;
47 USBH_DLIST ListEntry;
// To store this object in the host controller object
48 USBH_DLIST TempEntry;
// To store this object in an temporary list
49 USBH_BOOL TempFlag;
50 long RefCount;
// deleted when ( RefCount == 0 ) ?
51 USBH_HOST_CONTROLLER * pHostController;
// Pointer to the owning host controller
52
53 USBH_DLIST
UsbInterfaceList;
// List for interfaces
54 unsigned
int InterfaceCount;
// USB_X_INTERFACE_ARRAY[ *** InterfaceCount *** ]
55
56 USBH_HUB_PORT * pParentPort;
// This is the hub port where this device is connected to
57 U8 UsbAddress;
// This is the USB address of the device
58 USBH_SPEED DeviceSpeed;
// pSpeed of the device connection
59 U8 MaxFifoSize;
// The FIFO size <--- Host Controller --->
60 U8 ConfigurationIndex;
// The index of the current configuration
61 U8 NumConfigurations;
// The index of the current configuration
62 USBH_DEVICE_DESCRIPTOR DeviceDescriptor;
// Device Descriptor
63 U8 ** ppConfigDesc;
// Points to the All configuration descriptors
64 U16 * paConfigSize;
// paConfigSize[ index ]
65 U8 * pConfigDescriptor; // Points to the current configuration descriptor
66 U16 ConfigDescriptorSize;
// Size of the current configuration descriptor
67 U16 LanguageId;
// First language ID
68 U8 * pSerialNumber;
// Serial number without header, UNICODE
69 unsigned
int SerialNumberSize;
70 U16 DevStatus;
// Device status returned from USB GetStatus
71 USBH_DEFAULT_EP DefaultEp;
// Embedded default endpoint
72 USB_HUB * pUsbHub;
// This pointer is valid if the device is a hub
73 USB_DEV_STATE State;
// Current device state
74 USBH_URB EnumUrb;
// Embedded URB
75 void * pCtrlTransferBuffer;
// Used from USBH_BD_ProcessEnum and ProcessEnumHub()
76 unsigned
int CtrlTransferBufferSize;
77 URB_SUB_STATE SubState;
78 DEV_ENUM_STATE EnumState;
79 USBH_BOOL EnumSubmitFlag;
// Used during enumeration if the device is as an hub
80 POST_ENUM_FUNC *
pfPostEnumFunction;
81 void *
pPostEnumerationContext;
82 USBH_DEVICE_ID
DeviceId;
// Device ID for this device
83 };
84
85 struct USB_INTERFACE {
// USBH_GetInterfaceByInterfaceId( InterfaceId )
86 U32 Magic;
87 USBH_DLIST ListEntry;
// To store this object in the device object
88 USB_DEVICE *
pDevice;
// Backward pointer
89
90 USBH_DLIST
UsbEndpointList;
// List for endpoints
91 unsigned
int EndpointCount;
// USB_X_ENDPOINT_ARRAY[ *** USB_X_ENDPOINT *** ]
92
93 U8 CurrentAlternateSetting;
//
94 U8 * pInterfaceDescriptor; // Interface Descriptor
95 U8 *
pAlternateSettingDescriptor;
96 U8 NewAlternateSetting;
//
97 U8 *
pNewAlternateSettingDescriptor;
98 unsigned
int OpenCount;
//
99 U8 ExclusiveUsed;
// EndpointCount <= USB_MAX_ENDPOINTS
100 USB_ENDPOINT * pEpMap[USB_MAX_ENDPOINTS];
// A map for fast access to endpoint structures
101 USBH_INTERFACE_ID
InterfaceId;
// ID of this interface
102 };
103
104 typedef
struct USB_ENDPOINT {
105 USBH_DLIST ListEntry;
// to store this object in the interface object
106 U32 Magic;
107 USB_INTERFACE *
pUsbInterface;
// Backward pointer
108 U8 * pEndpointDescriptor; // Endpoint Descriptor
109 USBH_HC_EP_HANDLE hEP;
// Endpoint handle must be used to submit an URB
110 U32 UrbCount;
111 } USB_ENDPOINT;
转载于:https://www.cnblogs.com/shangdawei/archive/2012/09/26/2704558.html
相关资源:Segger systemview 2.52a