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/h…
==============================================================================
--- 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/h…
==============================================================================
--- 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/h…
==============================================================================
--- 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,