[USBCCGP]
[reactos.git] / drivers / usb / usbccgp / usbccgp.h
1 #ifndef USBEHCI_H__
2 #define USBEHCI_H__
3
4 #include <ntddk.h>
5 #define YDEBUG
6 #include <debug.h>
7 #include <initguid.h>
8 #include <hubbusif.h>
9 #include <usbbusif.h>
10 #include <usbioctl.h>
11 #include <usbdlib.h>
12
13 //
14 // FIXME:
15 // #include <usbprotocoldefs.h>
16 //
17 #include <usb.h>
18 #include <stdio.h>
19 #include <wdmguid.h>
20
21 typedef struct
22 {
23 BOOLEAN IsFDO; // is device a FDO or PDO
24 }COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
25
26 typedef struct
27 {
28 COMMON_DEVICE_EXTENSION Common; // shared with PDO
29 PDRIVER_OBJECT DriverObject; // driver object
30 PDEVICE_OBJECT PhysicalDeviceObject; // physical device object
31 PDEVICE_OBJECT NextDeviceObject; // lower device object
32 PUSB_DEVICE_DESCRIPTOR DeviceDescriptor; // usb device descriptor
33 PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor; // usb configuration descriptor
34 DEVICE_CAPABILITIES Capabilities; // device capabilities
35 PUSBD_INTERFACE_LIST_ENTRY InterfaceList; // interface list
36 ULONG InterfaceListCount; // interface list count
37 USBD_CONFIGURATION_HANDLE ConfigurationHandle; // configuration handle
38 USBC_DEVICE_CONFIGURATION_INTERFACE_V1 BusInterface; // bus custom enumeration interface
39 PUSBC_FUNCTION_DESCRIPTOR FunctionDescriptor; // usb function descriptor
40 ULONG FunctionDescriptorCount; // number of function descriptor
41 PDEVICE_OBJECT * ChildPDO; // child pdos
42 }FDO_DEVICE_EXTENSION, *PFDO_DEVICE_EXTENSION;
43
44 #define USBCCPG_TAG 'cbsu'
45
46 typedef struct
47 {
48 COMMON_DEVICE_EXTENSION Common; // shared with FDO
49 PUSBC_FUNCTION_DESCRIPTOR FunctionDescriptor; // function descriptor
50 PDEVICE_OBJECT NextDeviceObject; // next device object
51 DEVICE_CAPABILITIES Capabilities; // device capabilities
52 ULONG FunctionIndex; // function index
53 USB_DEVICE_DESCRIPTOR DeviceDescriptor; // usb device descriptor
54 PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor; // usb configuration descriptor
55 USBD_CONFIGURATION_HANDLE ConfigurationHandle; // configuration handle
56 PUSBD_INTERFACE_LIST_ENTRY InterfaceList; // interface list
57 ULONG InterfaceListCount; // interface list count
58 }PDO_DEVICE_EXTENSION, *PPDO_DEVICE_EXTENSION;
59
60 /* descriptor.c */
61
62 NTSTATUS
63 USBCCGP_GetDescriptors(
64 IN PDEVICE_OBJECT DeviceObject);
65
66 NTSTATUS
67 USBCCGP_SelectConfiguration(
68 IN PDEVICE_OBJECT DeviceObject,
69 IN PFDO_DEVICE_EXTENSION DeviceExtension);
70
71 NTSTATUS
72 NTAPI
73 USBCCGP_GetDescriptor(
74 IN PDEVICE_OBJECT DeviceObject,
75 IN UCHAR DescriptorType,
76 IN ULONG DescriptorLength,
77 IN UCHAR DescriptorIndex,
78 IN LANGID LanguageId,
79 OUT PVOID *OutDescriptor);
80
81 ULONG
82 CountInterfaceDescriptors(
83 IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor);
84
85 NTSTATUS
86 AllocateInterfaceDescriptorsArray(
87 IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
88 OUT PUSB_INTERFACE_DESCRIPTOR **OutArray);
89
90 /* misc.c */
91
92 NTSTATUS
93 NTAPI
94 USBCCGP_SyncForwardIrp(
95 PDEVICE_OBJECT DeviceObject,
96 PIRP Irp);
97
98 NTSTATUS
99 USBCCGP_SyncUrbRequest(
100 IN PDEVICE_OBJECT DeviceObject,
101 OUT PURB UrbRequest);
102
103 PVOID
104 AllocateItem(
105 IN POOL_TYPE PoolType,
106 IN ULONG ItemSize);
107
108 VOID
109 FreeItem(
110 IN PVOID Item);
111
112 VOID
113 DumpFunctionDescriptor(
114 IN PUSBC_FUNCTION_DESCRIPTOR FunctionDescriptor,
115 IN ULONG FunctionDescriptorCount);
116
117 /* fdo.c */
118
119 NTSTATUS
120 FDO_Dispatch(
121 PDEVICE_OBJECT DeviceObject,
122 PIRP Irp);
123
124 /* pdo.c */
125
126 NTSTATUS
127 PDO_Dispatch(
128 PDEVICE_OBJECT DeviceObject,
129 PIRP Irp);
130
131 /* function.c */
132
133 NTSTATUS
134 USBCCGP_QueryInterface(
135 IN PDEVICE_OBJECT DeviceObject,
136 OUT PUSBC_DEVICE_CONFIGURATION_INTERFACE_V1 BusInterface);
137
138 NTSTATUS
139 USBCCGP_EnumerateFunctions(
140 IN PDEVICE_OBJECT DeviceObject);
141
142 #endif