Reactos
1/*
2 * PROJECT: ReactOS Universal Serial Bus Bulk Enhanced Host Controller Interface
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: lib/drivers/hidparser/hidparser.c
5 * PURPOSE: HID Parser
6 * PROGRAMMERS:
7 * Michael Martin (michael.martin@reactos.org)
8 * Johannes Anderwald (johannes.anderwald@reactos.org)
9 */
10
11#pragma once
12
13NTSTATUS
14NTAPI
15HidParser_GetCollectionDescription(
16 IN PHIDP_REPORT_DESCRIPTOR ReportDesc,
17 IN ULONG DescLength,
18 IN POOL_TYPE PoolType,
19 OUT PHIDP_DEVICE_DESC DeviceDescription);
20
21VOID
22NTAPI
23HidParser_FreeCollectionDescription(
24 IN PHIDP_DEVICE_DESC DeviceDescription);
25
26HIDAPI
27NTSTATUS
28NTAPI
29HidParser_GetCaps(
30 IN PVOID CollectionContext,
31 OUT PHIDP_CAPS Capabilities);
32
33HIDAPI
34NTSTATUS
35NTAPI
36HidParser_GetSpecificValueCaps(
37 IN PVOID CollectionContext,
38 IN HIDP_REPORT_TYPE ReportType,
39 IN USAGE UsagePage,
40 IN USHORT LinkCollection,
41 IN USAGE Usage,
42 OUT PHIDP_VALUE_CAPS ValueCaps,
43 IN OUT PUSHORT ValueCapsLength);
44
45
46HIDAPI
47NTSTATUS
48NTAPI
49HidParser_GetButtonCaps(
50 IN PVOID CollectionContext,
51 HIDP_REPORT_TYPE ReportType,
52 PHIDP_BUTTON_CAPS ButtonCaps,
53 PUSHORT ButtonCapsLength);
54
55HIDAPI
56NTSTATUS
57NTAPI
58HidParser_GetSpecificButtonCaps(
59 IN PVOID CollectionContext,
60 IN HIDP_REPORT_TYPE ReportType,
61 IN USAGE UsagePage,
62 IN USHORT LinkCollection,
63 IN USAGE Usage,
64 OUT PHIDP_BUTTON_CAPS ButtonCaps,
65 IN OUT PULONG ButtonCapsLength);
66
67HIDAPI
68NTSTATUS
69NTAPI
70HidParser_GetScaledUsageValue(
71 IN PVOID CollectionContext,
72 IN HIDP_REPORT_TYPE ReportType,
73 IN USAGE UsagePage,
74 IN USHORT LinkCollection OPTIONAL,
75 IN USAGE Usage,
76 OUT PLONG UsageValue,
77 IN PCHAR Report,
78 IN ULONG ReportLength);
79
80
81HIDAPI
82NTSTATUS
83NTAPI
84HidParser_GetData(
85 IN PVOID CollectionContext,
86 IN HIDP_REPORT_TYPE ReportType,
87 OUT PHIDP_DATA DataList,
88 IN OUT PULONG DataLength,
89 IN PCHAR Report,
90 IN ULONG ReportLength);
91
92HIDAPI
93NTSTATUS
94NTAPI
95HidParser_GetExtendedAttributes(
96 IN PVOID CollectionContext,
97 IN HIDP_REPORT_TYPE ReportType,
98 IN USHORT DataIndex,
99 OUT PHIDP_EXTENDED_ATTRIBUTES Attributes,
100 IN OUT PULONG LengthAttributes);
101
102HIDAPI
103NTSTATUS
104NTAPI
105HidParser_GetLinkCollectionNodes(
106 IN PVOID CollectionContext,
107 OUT PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes,
108 IN OUT PULONG LinkCollectionNodesLength);
109
110
111HIDAPI
112NTSTATUS
113NTAPI
114HidParser_GetUsageValue(
115 IN PVOID CollectionContext,
116 IN HIDP_REPORT_TYPE ReportType,
117 IN USAGE UsagePage,
118 IN USHORT LinkCollection,
119 IN USAGE Usage,
120 OUT PULONG UsageValue,
121 IN PCHAR Report,
122 IN ULONG ReportLength);
123
124HIDAPI
125NTSTATUS
126NTAPI
127HidParser_UsageListDifference(
128 IN PUSAGE PreviousUsageList,
129 IN PUSAGE CurrentUsageList,
130 OUT PUSAGE BreakUsageList,
131 OUT PUSAGE MakeUsageList,
132 IN ULONG UsageListLength);
133
134
135HIDAPI
136ULONG
137NTAPI
138HidParser_MaxUsageListLength(
139 IN PVOID CollectionContext,
140 IN HIDP_REPORT_TYPE ReportType,
141 IN USAGE UsagePage OPTIONAL);
142
143HIDAPI
144NTSTATUS
145NTAPI
146HidParser_GetUsages(
147 IN PVOID CollectionContext,
148 IN HIDP_REPORT_TYPE ReportType,
149 IN USAGE UsagePage,
150 IN USHORT LinkCollection OPTIONAL,
151 OUT USAGE *UsageList,
152 IN OUT ULONG *UsageLength,
153 IN PCHAR Report,
154 IN ULONG ReportLength);
155
156HIDAPI
157NTSTATUS
158NTAPI
159HidParser_GetUsagesEx(
160 IN PVOID CollectionContext,
161 IN HIDP_REPORT_TYPE ReportType,
162 IN USHORT LinkCollection,
163 OUT PUSAGE_AND_PAGE ButtonList,
164 IN OUT ULONG *UsageLength,
165 IN PCHAR Report,
166 IN ULONG ReportLength);
167
168
169NTSTATUS
170NTAPI
171HidParser_SysPowerEvent (
172 IN PVOID CollectionContext,
173 IN PCHAR HidPacket,
174 IN USHORT HidPacketLength,
175 OUT PULONG OutputBuffer);
176
177NTSTATUS
178NTAPI
179HidParser_SysPowerCaps (
180 IN PVOID CollectionContext,
181 OUT PULONG OutputBuffer);
182
183HIDAPI
184NTSTATUS
185NTAPI
186HidParser_GetUsageValueArray(
187 IN PVOID CollectionContext,
188 IN HIDP_REPORT_TYPE ReportType,
189 IN USAGE UsagePage,
190 IN USHORT LinkCollection OPTIONAL,
191 IN USAGE Usage,
192 OUT PCHAR UsageValue,
193 IN USHORT UsageValueByteLength,
194 IN PCHAR Report,
195 IN ULONG ReportLength);
196
197
198HIDAPI
199NTSTATUS
200NTAPI
201HidParser_UsageAndPageListDifference(
202 IN PUSAGE_AND_PAGE PreviousUsageList,
203 IN PUSAGE_AND_PAGE CurrentUsageList,
204 OUT PUSAGE_AND_PAGE BreakUsageList,
205 OUT PUSAGE_AND_PAGE MakeUsageList,
206 IN ULONG UsageListLength);
207
208HIDAPI
209NTSTATUS
210NTAPI
211HidParser_UnsetUsages(
212 IN PVOID CollectionContext,
213 IN HIDP_REPORT_TYPE ReportType,
214 IN USAGE UsagePage,
215 IN USHORT LinkCollection,
216 IN PUSAGE UsageList,
217 IN OUT PULONG UsageLength,
218 IN OUT PCHAR Report,
219 IN ULONG ReportLength);
220
221HIDAPI
222NTSTATUS
223NTAPI
224HidParser_TranslateUsagesToI8042ScanCodes(
225 IN PUSAGE ChangedUsageList,
226 IN ULONG UsageListLength,
227 IN HIDP_KEYBOARD_DIRECTION KeyAction,
228 IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
229 IN PHIDP_INSERT_SCANCODES InsertCodesProcedure,
230 IN PVOID InsertCodesContext);
231
232HIDAPI
233NTSTATUS
234NTAPI
235HidParser_TranslateUsageAndPagesToI8042ScanCodes(
236 IN PUSAGE_AND_PAGE ChangedUsageList,
237 IN ULONG UsageListLength,
238 IN HIDP_KEYBOARD_DIRECTION KeyAction,
239 IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
240 IN PHIDP_INSERT_SCANCODES InsertCodesProcedure,
241 IN PVOID InsertCodesContext);
242
243HIDAPI
244NTSTATUS
245NTAPI
246HidParser_SetUsages(
247 IN PVOID CollectionContext,
248 IN HIDP_REPORT_TYPE ReportType,
249 IN USAGE UsagePage,
250 IN USHORT LinkCollection,
251 IN PUSAGE UsageList,
252 IN OUT PULONG UsageLength,
253 IN OUT PCHAR Report,
254 IN ULONG ReportLength);
255
256HIDAPI
257NTSTATUS
258NTAPI
259HidParser_SetUsageValueArray(
260 IN PVOID CollectionContext,
261 IN HIDP_REPORT_TYPE ReportType,
262 IN USAGE UsagePage,
263 IN USHORT LinkCollection OPTIONAL,
264 IN USAGE Usage,
265 IN PCHAR UsageValue,
266 IN USHORT UsageValueByteLength,
267 OUT PCHAR Report,
268 IN ULONG ReportLength);
269
270HIDAPI
271NTSTATUS
272NTAPI
273HidParser_SetUsageValue(
274 IN PVOID CollectionContext,
275 IN HIDP_REPORT_TYPE ReportType,
276 IN USAGE UsagePage,
277 IN USHORT LinkCollection,
278 IN USAGE Usage,
279 IN ULONG UsageValue,
280 IN OUT PCHAR Report,
281 IN ULONG ReportLength);
282
283HIDAPI
284NTSTATUS
285NTAPI
286HidParser_SetScaledUsageValue(
287 IN PVOID CollectionContext,
288 IN HIDP_REPORT_TYPE ReportType,
289 IN USAGE UsagePage,
290 IN USHORT LinkCollection OPTIONAL,
291 IN USAGE Usage,
292 IN LONG UsageValue,
293 IN OUT PCHAR Report,
294 IN ULONG ReportLength);
295
296HIDAPI
297NTSTATUS
298NTAPI
299HidParser_SetData(
300 IN PVOID CollectionContext,
301 IN HIDP_REPORT_TYPE ReportType,
302 IN PHIDP_DATA DataList,
303 IN OUT PULONG DataLength,
304 IN OUT PCHAR Report,
305 IN ULONG ReportLength);
306
307HIDAPI
308ULONG
309NTAPI
310HidParser_MaxDataListLength(
311 IN PVOID CollectionContext,
312 IN HIDP_REPORT_TYPE ReportType);
313
314HIDAPI
315NTSTATUS
316NTAPI
317HidParser_InitializeReportForID(
318 IN PVOID CollectionContext,
319 IN HIDP_REPORT_TYPE ReportType,
320 IN UCHAR ReportID,
321 IN OUT PCHAR Report,
322 IN ULONG ReportLength);
323
324NTSTATUS
325HidParser_TranslateKbdUsage(
326 IN USAGE Usage,
327 IN HIDP_KEYBOARD_DIRECTION KeyAction,
328 IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
329 IN PHIDP_INSERT_SCANCODES InsertCodesProcedure,
330 IN PVOID InsertCodesContext);
331
332NTSTATUS
333HidParser_TranslateCustUsage(
334 IN USAGE Usage,
335 IN HIDP_KEYBOARD_DIRECTION KeyAction,
336 IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
337 IN PHIDP_INSERT_SCANCODES InsertCodesProcedure,
338 IN PVOID InsertCodesContext);
339
340HIDAPI
341NTSTATUS
342NTAPI
343HidParser_GetValueCaps(
344 IN PVOID CollectionContext,
345 HIDP_REPORT_TYPE ReportType,
346 PHIDP_VALUE_CAPS ValueCaps,
347 PULONG ValueCapsLength);