Reactos
at master 347 lines 7.8 kB view raw
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);