[HIDPARSER]
[reactos.git] / lib / drivers / hidparser / hidparser.h
index 2e38557..71eb157 100644 (file)
@@ -13,7 +13,6 @@
 #define _HIDPI_
 #define _HIDPI_NO_FUNCTION_MACROS_
 #include <ntddk.h>
-#include <ntddkbd.h>
 #include <hidpddi.h>
 #include <hidpi.h>
 #include <debug.h>
@@ -80,23 +79,8 @@ typedef struct
     // debug function
     //
     PHIDPARSER_DEBUG_FUNCTION Debug;
-
-    //
-    // parser context
-    //
-    void * ParserContext;
-
 }HID_PARSER, *PHID_PARSER;
 
-HIDPARSER_STATUS
-HidParser_AllocateParser(
-    IN PHIDPARSER_ALLOC_FUNCTION AllocFunction,
-    IN PHIDPARSER_FREE_FUNCTION FreeFunction,
-    IN PHIDPARSER_ZERO_FUNCTION ZeroFunction,
-    IN PHIDPARSER_COPY_FUNCTION CopyFunction,
-    IN PHIDPARSER_DEBUG_FUNCTION DebugFunction,
-    OUT PHID_PARSER *OutParser);
-
 VOID
 HidParser_InitParser(
     IN PHIDPARSER_ALLOC_FUNCTION AllocFunction,
@@ -104,7 +88,6 @@ HidParser_InitParser(
     IN PHIDPARSER_ZERO_FUNCTION ZeroFunction,
     IN PHIDPARSER_COPY_FUNCTION CopyFunction,
     IN PHIDPARSER_DEBUG_FUNCTION DebugFunction,
-    IN PVOID ParserContext,
     OUT PHID_PARSER Parser);
 
 NTSTATUS
@@ -120,13 +103,14 @@ VOID
 NTAPI
 HidParser_FreeCollectionDescription(
     IN PHID_PARSER Parser,
-    IN PHIDP_DEVICE_DESC   DeviceDescription);
+    IN PHIDP_DEVICE_DESC DeviceDescription);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_GetCaps(
     IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     OUT PHIDP_CAPS  Capabilities);
 
 HIDAPI
@@ -134,6 +118,7 @@ NTSTATUS
 NTAPI
 HidParser_GetSpecificValueCaps(
     IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     IN HIDP_REPORT_TYPE  ReportType,
     IN USAGE  UsagePage,
     IN USHORT  LinkCollection,
@@ -147,6 +132,7 @@ NTSTATUS
 NTAPI
 HidParser_GetButtonCaps(
     IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     HIDP_REPORT_TYPE ReportType,
     PHIDP_BUTTON_CAPS ButtonCaps,
     PUSHORT ButtonCapsLength);
@@ -156,6 +142,7 @@ NTSTATUS
 NTAPI
 HidParser_GetSpecificButtonCaps(
     IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     IN HIDP_REPORT_TYPE  ReportType,
     IN USAGE  UsagePage,
     IN USHORT  LinkCollection,
@@ -168,6 +155,7 @@ NTSTATUS
 NTAPI
 HidParser_GetScaledUsageValue(
     IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     IN HIDP_REPORT_TYPE  ReportType,
     IN USAGE  UsagePage,
     IN USHORT  LinkCollection  OPTIONAL,
@@ -181,53 +169,57 @@ HIDAPI
 NTSTATUS
 NTAPI
 HidParser_GetData(
-  IN HIDP_REPORT_TYPE  ReportType,
-  OUT PHIDP_DATA  DataList,
-  IN OUT PULONG  DataLength,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  IN PCHAR  Report,
-  IN ULONG  ReportLength);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    OUT PHIDP_DATA  DataList,
+    IN OUT PULONG  DataLength,
+    IN PCHAR  Report,
+    IN ULONG  ReportLength);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_GetExtendedAttributes(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN USHORT  DataIndex,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  OUT PHIDP_EXTENDED_ATTRIBUTES  Attributes,
-  IN OUT PULONG  LengthAttributes);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    IN USHORT  DataIndex,
+    OUT PHIDP_EXTENDED_ATTRIBUTES  Attributes,
+    IN OUT PULONG  LengthAttributes);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_GetLinkCollectionNodes(
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     OUT PHIDP_LINK_COLLECTION_NODE  LinkCollectionNodes,
-    IN OUT PULONG  LinkCollectionNodesLength,
-    IN PHIDP_PREPARSED_DATA  PreparsedData);
+    IN OUT PULONG  LinkCollectionNodesLength);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_GetUsageValue(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN USAGE  UsagePage,
-  IN USHORT  LinkCollection,
-  IN USAGE  Usage,
-  OUT PULONG  UsageValue,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  IN PCHAR  Report,
-  IN ULONG  ReportLength);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    IN USAGE  UsagePage,
+    IN USHORT  LinkCollection,
+    IN USAGE  Usage,
+    OUT PULONG  UsageValue,
+    IN PCHAR  Report,
+    IN ULONG  ReportLength);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_UsageListDifference(
-  IN PUSAGE  PreviousUsageList,
-  IN PUSAGE  CurrentUsageList,
-  OUT PUSAGE  BreakUsageList,
-  OUT PUSAGE  MakeUsageList,
-  IN ULONG  UsageListLength);
+    IN PUSAGE  PreviousUsageList,
+    IN PUSAGE  CurrentUsageList,
+    OUT PUSAGE  BreakUsageList,
+    OUT PUSAGE  MakeUsageList,
+    IN ULONG  UsageListLength);
 
 
 HIDAPI
@@ -235,6 +227,7 @@ ULONG
 NTAPI
 HidParser_MaxUsageListLength(
     IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     IN HIDP_REPORT_TYPE  ReportType,
     IN USAGE  UsagePage  OPTIONAL);
 
@@ -243,6 +236,7 @@ NTSTATUS
 NTAPI
 HidParser_GetUsages(
     IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     IN HIDP_REPORT_TYPE  ReportType,
     IN USAGE  UsagePage,
     IN USHORT  LinkCollection  OPTIONAL,
@@ -256,6 +250,7 @@ NTSTATUS
 NTAPI
 HidParser_GetUsagesEx(
     IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     IN HIDP_REPORT_TYPE  ReportType,
     IN USHORT  LinkCollection,
     OUT PUSAGE_AND_PAGE  ButtonList,
@@ -267,30 +262,33 @@ HidParser_GetUsagesEx(
 NTSTATUS
 NTAPI
 HidParser_SysPowerEvent (
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     IN PCHAR HidPacket,
     IN USHORT HidPacketLength,
-    IN PHIDP_PREPARSED_DATA Ppd,
     OUT PULONG OutputBuffer);
 
 NTSTATUS
 NTAPI
 HidParser_SysPowerCaps (
-    IN PHIDP_PREPARSED_DATA Ppd,
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
     OUT PULONG OutputBuffer);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_GetUsageValueArray(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN USAGE  UsagePage,
-  IN USHORT  LinkCollection  OPTIONAL,
-  IN USAGE  Usage,
-  OUT PCHAR  UsageValue,
-  IN USHORT  UsageValueByteLength,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  IN PCHAR  Report,
-  IN ULONG  ReportLength);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    IN USAGE  UsagePage,
+    IN USHORT  LinkCollection  OPTIONAL,
+    IN USAGE  Usage,
+    OUT PCHAR  UsageValue,
+    IN USHORT  UsageValueByteLength,
+    IN PCHAR  Report,
+    IN ULONG  ReportLength);
 
 
 HIDAPI
@@ -307,14 +305,15 @@ HIDAPI
 NTSTATUS
 NTAPI
 HidParser_UnsetUsages(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN USAGE  UsagePage,
-  IN USHORT  LinkCollection,
-  IN PUSAGE  UsageList,
-  IN OUT PULONG  UsageLength,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  IN OUT PCHAR  Report,
-  IN ULONG  ReportLength);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    IN USAGE  UsagePage,
+    IN USHORT  LinkCollection,
+    IN PUSAGE  UsageList,
+    IN OUT PULONG  UsageLength,
+    IN OUT PCHAR  Report,
+    IN ULONG  ReportLength);
 
 HIDAPI
 NTSTATUS
@@ -343,88 +342,105 @@ HIDAPI
 NTSTATUS
 NTAPI
 HidParser_SetUsages(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN USAGE  UsagePage,
-  IN USHORT  LinkCollection,
-  IN PUSAGE  UsageList,
-  IN OUT PULONG  UsageLength,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  IN OUT PCHAR  Report,
-  IN ULONG  ReportLength);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    IN USAGE  UsagePage,
+    IN USHORT  LinkCollection,
+    IN PUSAGE  UsageList,
+    IN OUT PULONG  UsageLength,
+    IN OUT PCHAR  Report,
+    IN ULONG  ReportLength);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_SetUsageValueArray(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN USAGE  UsagePage,
-  IN USHORT  LinkCollection  OPTIONAL,
-  IN USAGE  Usage,
-  IN PCHAR  UsageValue,
-  IN USHORT  UsageValueByteLength,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  OUT PCHAR  Report,
-  IN ULONG  ReportLength);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    IN USAGE  UsagePage,
+    IN USHORT  LinkCollection  OPTIONAL,
+    IN USAGE  Usage,
+    IN PCHAR  UsageValue,
+    IN USHORT  UsageValueByteLength,
+    OUT PCHAR  Report,
+    IN ULONG  ReportLength);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_SetUsageValue(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN USAGE  UsagePage,
-  IN USHORT  LinkCollection,
-  IN USAGE  Usage,
-  IN ULONG  UsageValue,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  IN OUT PCHAR  Report,
-  IN ULONG  ReportLength);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    IN USAGE  UsagePage,
+    IN USHORT  LinkCollection,
+    IN USAGE  Usage,
+    IN ULONG  UsageValue,
+    IN OUT PCHAR  Report,
+    IN ULONG  ReportLength);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_SetScaledUsageValue(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN USAGE  UsagePage,
-  IN USHORT  LinkCollection  OPTIONAL,
-  IN USAGE  Usage,
-  IN LONG  UsageValue,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  IN OUT PCHAR  Report,
-  IN ULONG  ReportLength);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    IN USAGE  UsagePage,
+    IN USHORT  LinkCollection  OPTIONAL,
+    IN USAGE  Usage,
+    IN LONG  UsageValue,
+    IN OUT PCHAR  Report,
+    IN ULONG  ReportLength);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_SetData(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN PHIDP_DATA  DataList,
-  IN OUT PULONG  DataLength,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  IN OUT PCHAR  Report,
-  IN ULONG  ReportLength);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    IN PHIDP_DATA  DataList,
+    IN OUT PULONG  DataLength,
+    IN OUT PCHAR  Report,
+    IN ULONG  ReportLength);
 
 HIDAPI
 ULONG
 NTAPI
 HidParser_MaxDataListLength(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN PHIDP_PREPARSED_DATA  PreparsedData);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_InitializeReportForID(
-  IN HIDP_REPORT_TYPE  ReportType,
-  IN UCHAR  ReportID,
-  IN PHIDP_PREPARSED_DATA  PreparsedData,
-  IN OUT PCHAR  Report,
-  IN ULONG  ReportLength);
+    IN PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    IN HIDP_REPORT_TYPE  ReportType,
+    IN UCHAR  ReportID,
+    IN OUT PCHAR  Report,
+    IN ULONG  ReportLength);
+
+HIDPARSER_STATUS
+HidParser_TranslateUsage(
+    IN PHID_PARSER Parser,
+    IN USAGE Usage,
+    IN HIDP_KEYBOARD_DIRECTION  KeyAction,
+    IN OUT PHIDP_KEYBOARD_MODIFIER_STATE  ModifierState,
+    IN PHIDP_INSERT_SCANCODES  InsertCodesProcedure,
+    IN PVOID  InsertCodesContext);
 
 HIDAPI
 NTSTATUS
 NTAPI
 HidParser_GetValueCaps(
-  HIDP_REPORT_TYPE ReportType,
-  PHIDP_VALUE_CAPS ValueCaps,
-  PULONG ValueCapsLength,
-  PHIDP_PREPARSED_DATA PreparsedData);
+    PHID_PARSER Parser,
+    IN PVOID CollectionContext,
+    HIDP_REPORT_TYPE ReportType,
+    PHIDP_VALUE_CAPS ValueCaps,
+    PULONG ValueCapsLength);