Author: janderwald
Date: Sun Feb  5 20:28:26 2012
New Revision: 55440

URL: http://svn.reactos.org/svn/reactos?rev=55440&view=rev
Log:
[HIDPARSE]
- Check if the report uses a report id
- Fix arrows in USB 2 PS/2 conversion table (Needs more fixing)

Modified:
    branches/usb-bringup-trunk/lib/drivers/hidparser/api.c
    branches/usb-bringup-trunk/lib/drivers/hidparser/hidparser.c
    branches/usb-bringup-trunk/lib/drivers/hidparser/parser.h

Modified: branches/usb-bringup-trunk/lib/drivers/hidparser/api.c
URL: 
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/lib/drivers/hidparser/api.c?rev=55440&r1=55439&r2=55440&view=diff
==============================================================================
--- branches/usb-bringup-trunk/lib/drivers/hidparser/api.c [iso-8859-1] 
(original)
+++ branches/usb-bringup-trunk/lib/drivers/hidparser/api.c [iso-8859-1] Sun Feb 
 5 20:28:26 2012
@@ -13,23 +13,24 @@
 
 static ULONG KeyboardScanCodes[256] =
 {
-    0,  0,  0,  0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38,
-    50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44,  2,  3,
-    4,  5,  6,  7,  8,  9, 10, 11, 28,  1, 14, 15, 57, 12, 13, 26,
-    27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64,
-    65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106,
-    105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71,
-    72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190,
-    191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113,
-    115,114,  0,  0,  0,121,  0, 89, 93,124, 92, 94, 95,  0,  0,  0,
-    122,123, 90, 91, 85,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,
-    150,158,159,128,136,177,178,176,142,152,173,140
+    0x0000, 0x0000, 0x0000, 0x0000, 0x001e, 0x0030, 0x002e, 0x0020, 0x0012, 
0x0021, 0x0022, 0x0023, 0x0017, 0x0024, 0x0025, 0x0026,
+    0x0032, 0x0031, 0x0018, 0x0019, 0x0010, 0x0013, 0x001f, 0x0014, 0x0016, 
0x002f, 0x0011, 0x002d, 0x0015, 0x002c, 0x0002, 0x0003,
+    0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x001c, 
0x0001, 0x000e, 0x000f, 0x0039, 0x000c, 0x000d, 0x001a,
+    0x001b, 0x002b, 0x002b, 0x0027, 0x0028, 0x0029, 0x0033, 0x0034, 0x0035, 
0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040,
+    0x0041, 0x0042, 0x0043, 0x0044, 0x0057, 0x0058, 0x0063, 0x0046, 0x0077, 
0xE052, 0xE047, 0xE049, 0xE053, 0xE04F, 0xE051, 0xE04D,
+    0xE04B, 0xE050, 0xE048, 0x0045, 0xE035, 0x0037, 0x004a, 0x004e, 0xE01C, 
0x004f, 0x0050, 0x0051, 0x004b, 0x004c, 0x004d, 0x0047,
+    0x0048, 0x0049, 0x0052, 0x0053, 0x0056, 0xE05D, 0xE05E, 0x0075, 0x00b7, 
0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be,
+    0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x0086, 0x008a, 0x0082, 0x0084, 0x0080, 
0x0081, 0x0083, 0x0089, 0x0085, 0x0087, 0x0088, 0x0071,
+    0x0073, 0x0072, 0x0000, 0x0000, 0x0000, 0x0079, 0x0000, 0x0059, 0x005d, 
0x007c, 0x005c, 0x005e, 0x005f, 0x0000, 0x0000, 0x0000,
+    0x007a, 0x007b, 0x005a, 0x005b, 0x0055, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x001d, 0x002a, 0x0038, 0x007d, 0x0061, 0x0036, 0x0064, 0x007e, 0x00a4, 
0x00a6, 0x00a5, 0x00a3, 0x00a1, 0x0073, 0x0072, 0x0071,
+    0x0096, 0x009e, 0x009f, 0x0080, 0x0088, 0x00b1, 0x00b2, 0x00b0, 0x008e, 
0x0098, 0x00ad, 0x008c, 0x0000, 0x0000, 0x0000, 0x0000,
 };
+
 
 HIDPARSER_STATUS
 HidParser_GetCollectionUsagePage(
@@ -509,6 +510,33 @@
     return HIDPARSER_STATUS_SUCCESS;
 }
 
+ULONG
+HidParser_UsesReportId(
+    IN PVOID CollectionContext,
+    IN UCHAR  ReportType)
+{
+    PHID_REPORT Report;
+
+    //
+    // get report
+    //
+    Report = HidParser_GetReportInCollection(CollectionContext, ReportType);
+    if (!Report)
+    {
+        //
+        // no such report
+        //
+        return 0;
+    }
+
+    //
+    // returns true when report id != 0
+    //
+    return (Report->ReportID != 0);
+
+}
+
+
 HIDPARSER_STATUS
 HidParser_GetScaledUsageValueWithReport(
     IN PHID_PARSER Parser,

Modified: branches/usb-bringup-trunk/lib/drivers/hidparser/hidparser.c
URL: 
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/lib/drivers/hidparser/hidparser.c?rev=55440&r1=55439&r2=55440&view=diff
==============================================================================
--- branches/usb-bringup-trunk/lib/drivers/hidparser/hidparser.c [iso-8859-1] 
(original)
+++ branches/usb-bringup-trunk/lib/drivers/hidparser/hidparser.c [iso-8859-1] 
Sun Feb  5 20:28:26 2012
@@ -133,6 +133,12 @@
         DeviceDescription->ReportIDs[Index].OutputLength = 
HidParser_GetReportLength((PVOID)DeviceDescription->CollectionDesc[Index].PreparsedData,
 HID_REPORT_TYPE_OUTPUT);
         DeviceDescription->ReportIDs[Index].FeatureLength = 
HidParser_GetReportLength((PVOID)DeviceDescription->CollectionDesc[Index].PreparsedData,
 HID_REPORT_TYPE_FEATURE);
 
+
+        DeviceDescription->ReportIDs[Index].InputLength += 
(HidParser_UsesReportId((PVOID)DeviceDescription->CollectionDesc[Index].PreparsedData,
 HID_REPORT_TYPE_INPUT) == TRUE ? 1 : 0);
+        DeviceDescription->ReportIDs[Index].OutputLength += 
(HidParser_UsesReportId((PVOID)DeviceDescription->CollectionDesc[Index].PreparsedData,
 HID_REPORT_TYPE_OUTPUT) == TRUE ? 1 : 0);
+        DeviceDescription->ReportIDs[Index].FeatureLength += 
(HidParser_UsesReportId((PVOID)DeviceDescription->CollectionDesc[Index].PreparsedData,
 HID_REPORT_TYPE_FEATURE) == TRUE ? 1 : 0);
+
+
         //
         // init collection description
         //
@@ -146,9 +152,16 @@
         //
         // windows seems to prepend the report id, regardless if it is required
         //
-        DeviceDescription->CollectionDesc[Index].InputLength = 
(DeviceDescription->ReportIDs[Index].InputLength > 0 ? 
DeviceDescription->ReportIDs[Index].InputLength + 1 : 0);
-        DeviceDescription->CollectionDesc[Index].OutputLength = 
(DeviceDescription->ReportIDs[Index].OutputLength > 0 ? 
DeviceDescription->ReportIDs[Index].OutputLength + 1 : 0);
-        DeviceDescription->CollectionDesc[Index].FeatureLength = 
(DeviceDescription->ReportIDs[Index].FeatureLength > 0 ? 
DeviceDescription->ReportIDs[Index].FeatureLength + 1 : 0);
+        DeviceDescription->CollectionDesc[Index].CollectionNumber = Index + 1;
+        DeviceDescription->CollectionDesc[Index].InputLength = 
DeviceDescription->ReportIDs[Index].InputLength;
+        DeviceDescription->CollectionDesc[Index].OutputLength = 
DeviceDescription->ReportIDs[Index].OutputLength;
+        DeviceDescription->CollectionDesc[Index].FeatureLength = 
DeviceDescription->ReportIDs[Index].FeatureLength;
+
+        DeviceDescription->CollectionDesc[Index].InputLength += 
(HidParser_UsesReportId((PVOID)DeviceDescription->CollectionDesc[Index].PreparsedData,
 HID_REPORT_TYPE_INPUT) == FALSE ? 1 : 0);
+        DeviceDescription->CollectionDesc[Index].OutputLength += 
(HidParser_UsesReportId((PVOID)DeviceDescription->CollectionDesc[Index].PreparsedData,
 HID_REPORT_TYPE_OUTPUT) == FALSE ? 1 : 0);
+        DeviceDescription->CollectionDesc[Index].FeatureLength += 
(HidParser_UsesReportId((PVOID)DeviceDescription->CollectionDesc[Index].PreparsedData,
 HID_REPORT_TYPE_FEATURE) == FALSE ? 1 : 0);
+
+
     }
 
     //

Modified: branches/usb-bringup-trunk/lib/drivers/hidparser/parser.h
URL: 
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/lib/drivers/hidparser/parser.h?rev=55440&r1=55439&r2=55440&view=diff
==============================================================================
--- branches/usb-bringup-trunk/lib/drivers/hidparser/parser.h [iso-8859-1] 
(original)
+++ branches/usb-bringup-trunk/lib/drivers/hidparser/parser.h [iso-8859-1] Sun 
Feb  5 20:28:26 2012
@@ -257,6 +257,11 @@
 #define HID_REPORT_TYPE_OUTPUT         0x02
 #define HID_REPORT_TYPE_FEATURE                0x04
 
+ULONG
+HidParser_UsesReportId(
+    IN PVOID CollectionContext,
+    IN UCHAR  ReportType);
+
 HIDPARSER_STATUS
 HidParser_GetCollectionUsagePage(
     IN PVOID CollectionContext,


Reply via email to