Charles Lepple wrote:>
> would you mind forwarding (to either me, or the list) the .txt file
> showing the hidparser bug? I am trying to revamp libhid's hidparser,
> and it would be helpful to have the descriptor.
The text file is contained in the tarball on the patch tracker, at
https://alioth.debian.org/tracker/index.php?func=detail&aid=302101&group_id=30602&atid=411544
("Download" at the bottom of the page).
The patch that fixes the parser bug is also contained there - it might
save you some work.
I am appending the textfile below for your ease of access.
> Also useful would be a hex dump of the descriptor itself (available
> with libhid's test program), but if you don't have time to get
libhid
> up and running, I understand.
I am not sure I still have the hexdump, I kept it in the /tmp
directory of my laptop at home. I will look for it later. The UPS is
currently disconnected and waiting to be installed in my wife's
office, so I don't have access to it at the moment.
However, I still have a dump of a tokenized version of the descriptor
(one line for each main, local, or global item). It won't be useful to
you for testing, but at least you might be able to read it to see what
the source of the bug was. Namely, the "usage" for feature 35 is given
twice. It is a strange report descriptor, but not technically wrong,
and apparently several APC models send a descriptor like this.
=====================================================================This
example shows the effect of the HIDParser bug (before and after
fixing it). Note that after the places marked ###, the parser shifts
all Usages by one, which mangles the tree. This bug is fixed in
nut-cvs-patch-PARSER-2005-08-24.
----------------------------------------------------------------------
Before fixing the HIDParser bug:
HIDDumpTree...
Path: UPS.PowerSummary.iSerialNumber
Path: UPS.PowerSummary.iDeviceChemistry
Path: UPS.PowerSummary.iOEMInformation
Path: UPS.PowerSummary.Rechargeable
Path: UPS.PowerSummary.APCStatusFlag
Path: UPS.PowerSummary.APCStatusFlag
Path: UPS.PowerSummary.ManufacturerDate
Path: UPS.PowerSummary.ConfigVoltage
Path: UPS.PowerSummary.Voltage
Path: UPS.PowerSummary.iManufacturer
Path: UPS.PowerSummary.CapacityMode
Path: UPS.PowerSummary.RemainingCapacity
Path: UPS.PowerSummary.RemainingCapacity
Path: UPS.PowerSummary.RunTimeToEmpty
Path: UPS.PowerSummary.RunTimeToEmpty
Path: UPS.PowerSummary.DesignCapacity
Path: UPS.PowerSummary.FullChargeCapacity
Path: UPS.PowerSummary.WarningCapacityLimit
Path: UPS.PowerSummary.CapacityGranularity2
Path: UPS.PowerSummary.RemainingCapacityLimit
Path: UPS.PowerSummary.CapacityGranularity1
Path: UPS.PowerSummary.PresentStatus.Charging
Path: UPS.PowerSummary.PresentStatus.Charging
Path: UPS.PowerSummary.PresentStatus.Discharging
Path: UPS.PowerSummary.PresentStatus.Discharging
Path: UPS.PowerSummary.PresentStatus.ACPresent
Path: UPS.PowerSummary.PresentStatus.ACPresent
Path: UPS.PowerSummary.PresentStatus.BatteryPresent
Path: UPS.PowerSummary.PresentStatus.BatteryPresent
Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit
Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit
Path: UPS.PowerSummary.PresentStatus.ShutdownImminent
Path: UPS.PowerSummary.PresentStatus.ShutdownImminent
Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired
Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired
Path: UPS.PowerSummary.PresentStatus.NeedReplacement
Path: UPS.PowerSummary.PresentStatus.NeedReplacement
Path: UPS.PowerSummary.PresentStatus.OverLoad
Path: UPS.PowerSummary.PresentStatus.OverLoad
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.RemainingTimeLimit
Path: UPS.PowerSummary.AudibleAlarmControl
Path: UPS.Battery.APCBattReplaceDate
Path: UPS.Battery.ManufacturerDate
Path: UPS.Battery.RemainingCapacity
Path: UPS.Battery.RunTimeToEmpty
Path: UPS.Battery.RunTimeToEmpty (NOTE: ### HERE)
Path: UPS.Battery.RemainingTimeLimit
Path: UPS.Battery.ConfigVoltage
Path: UPS.Battery.Voltage
Path: UPS.Battery.ff860024
Path: UPS.ff860018.Input
Path: UPS.ff860018.ConfigVoltage
Path: UPS.ff860018.Voltage
Path: UPS.ff860018.LowVoltageTransfer
Path: UPS.ff860018.HighVoltageTransfer
Path: UPS.ff860018.ff860024
Path: UPS.ff860018.ff860061
Path: UPS.APC860052.APCGeneralCollection
Path: UPS.APC860052.APCForceShutdown
Path: UPS.APCDelayBeforeShutdown.PowerConverter
Path: UPS.APCDelayBeforeShutdown.PercentLoad
Path: UPS.ff860024.ff860001
Path: UPS.ff860024.ff860023
Path: UPS.ff860024.ff860026
Path: UPS.ff860025
Path: UPS.iProduct
Path: UPS.APC_UPS_FirmwareRevision
Path: UPS.iSerialNumber
Path: UPS.iManufacturer
Path: UPS.ManufacturerDate.PresentStatus
Path: UPS.ManufacturerDate.Charging
Path: UPS.ManufacturerDate.Discharging
Path: UPS.ManufacturerDate.ACPresent
Path: UPS.ManufacturerDate.BatteryPresent
Path: UPS.ManufacturerDate.BelowRemainingCapacityLimit
Path: UPS.ManufacturerDate.ShutdownImminent
Path: UPS.ManufacturerDate.RemainingTimeLimitExpired
Path: UPS.ManufacturerDate.NeedReplacement
Path: UPS.ManufacturerDate.OverLoad
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.ManufacturerDate.00000000
Path: UPS.APCPanelTest
Path: UPS.AudibleAlarmControl
Path: UPS.ff860029
Path: UPS.ff86002a
----------------------------------------------------------------------
After fixing the HIDParser bug:
HIDDumpTree...
Path: UPS.PowerSummary.iProduct
Path: UPS.PowerSummary.iSerialNumber
Path: UPS.PowerSummary.iDeviceChemistry
Path: UPS.PowerSummary.iOEMInformation
Path: UPS.PowerSummary.Rechargeable
Path: UPS.PowerSummary.APCStatusFlag
Path: UPS.PowerSummary.APCStatusFlag
Path: UPS.PowerSummary.ManufacturerDate
Path: UPS.PowerSummary.ConfigVoltage
Path: UPS.PowerSummary.Voltage
Path: UPS.PowerSummary.iManufacturer
Path: UPS.PowerSummary.CapacityMode
Path: UPS.PowerSummary.RemainingCapacity
Path: UPS.PowerSummary.RemainingCapacity
Path: UPS.PowerSummary.RunTimeToEmpty
Path: UPS.PowerSummary.RunTimeToEmpty
Path: UPS.PowerSummary.DesignCapacity
Path: UPS.PowerSummary.FullChargeCapacity
Path: UPS.PowerSummary.WarningCapacityLimit
Path: UPS.PowerSummary.CapacityGranularity2
Path: UPS.PowerSummary.RemainingCapacityLimit
Path: UPS.PowerSummary.CapacityGranularity1
Path: UPS.PowerSummary.PresentStatus.Charging
Path: UPS.PowerSummary.PresentStatus.Charging
Path: UPS.PowerSummary.PresentStatus.Discharging
Path: UPS.PowerSummary.PresentStatus.Discharging
Path: UPS.PowerSummary.PresentStatus.ACPresent
Path: UPS.PowerSummary.PresentStatus.ACPresent
Path: UPS.PowerSummary.PresentStatus.BatteryPresent
Path: UPS.PowerSummary.PresentStatus.BatteryPresent
Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit
Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit
Path: UPS.PowerSummary.PresentStatus.ShutdownImminent
Path: UPS.PowerSummary.PresentStatus.ShutdownImminent
Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired
Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired
Path: UPS.PowerSummary.PresentStatus.NeedReplacement
Path: UPS.PowerSummary.PresentStatus.NeedReplacement
Path: UPS.PowerSummary.PresentStatus.OverLoad
Path: UPS.PowerSummary.PresentStatus.OverLoad
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.PresentStatus.00000000
Path: UPS.PowerSummary.RemainingTimeLimit
Path: UPS.PowerSummary.AudibleAlarmControl
Path: UPS.Battery.APCBattReplaceDate
Path: UPS.Battery.ManufacturerDate
Path: UPS.Battery.RemainingCapacity
Path: UPS.Battery.RunTimeToEmpty (NOTE: ### HERE)
Path: UPS.Battery.RemainingTimeLimit
Path: UPS.Battery.ConfigVoltage
Path: UPS.Battery.Voltage
Path: UPS.Battery.ff860024
Path: UPS.Battery.ff860018
Path: UPS.Input.ConfigVoltage
Path: UPS.Input.Voltage
Path: UPS.Input.LowVoltageTransfer
Path: UPS.Input.HighVoltageTransfer
Path: UPS.Input.ff860024
Path: UPS.Input.ff860061
Path: UPS.Input.ff860052
Path: UPS.APCGeneralCollection.APCForceShutdown
Path: UPS.APCGeneralCollection.APCDelayBeforeShutdown
Path: UPS.PowerConverter.PercentLoad
Path: UPS.PowerConverter.ff860024
Path: UPS.ff860001.ff860023
Path: UPS.ff860001.ff860026
Path: UPS.ff860001.ff860025
Path: UPS.iProduct
Path: UPS.APC_UPS_FirmwareRevision
Path: UPS.iSerialNumber
Path: UPS.iManufacturer
Path: UPS.ManufacturerDate
Path: UPS.PresentStatus.Charging
Path: UPS.PresentStatus.Discharging
Path: UPS.PresentStatus.ACPresent
Path: UPS.PresentStatus.BatteryPresent
Path: UPS.PresentStatus.BelowRemainingCapacityLimit
Path: UPS.PresentStatus.ShutdownImminent
Path: UPS.PresentStatus.RemainingTimeLimitExpired
Path: UPS.PresentStatus.NeedReplacement
Path: UPS.PresentStatus.OverLoad
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.PresentStatus.00000000
Path: UPS.APCPanelTest
Path: UPS.AudibleAlarmControl
Path: UPS.ff860029
Path: UPS.ff86002a
=====================================================================Custom
tokenized report descriptor:
Global Usage Page(0x0084)
Local Usage(0x0004)
Collection 0x01=Application
Local Usage(0x0024)
Collection 0x00=Physical
Global Report ID(0x0001)
Local Usage(0x00fe)
Local String Index(0x0001)
Global Report Size(0x0008)
Global Report Count(0x0001)
Global Logical Minimum(0x0000)
Global Logical Maximum(0x00ff)
Feature/1
Global Report ID(0x0002)
Local Usage(0x00ff)
Local String Index(0x0002)
Feature/2
Global Report ID(0x0003)
Global Usage Page(0x0085)
Local Usage(0x0089)
Local String Index(0x0004)
Feature/3
Global Report ID(0x0004)
Local Usage(0x008f)
Local String Index(0x0003)
Feature/4
Global Report ID(0x0005)
Local Usage(0x008b)
Feature/5
Global Report ID(0x0006)
Global Usage Page(0xff86)
Local Usage(0x0060)
Input/6
Local Usage(0x0060)
Feature/6
Global Report ID(0x0007)
Global Usage Page(0x0085)
Local Usage(0x0085)
Global Report Size(0x0010)
Global Logical Maximum(0xffff)
Feature/7
Global Report ID(0x0008)
Global Usage Page(0x0084)
Local Usage(0x0040)
Global Unit(0xf0d121)
Global Unit Exponent(0x0005)
Feature/8
Global Report ID(0x0009)
Local Usage(0x0030)
Feature/9
Global Report ID(0x000a)
Local Usage(0x00fd)
Global Report Size(0x0008)
Global Logical Maximum(0x00ff)
Global Unit(0x0000)
Global Unit Exponent(0x0000)
Local String Index(0x0003)
Feature/10
Global Report ID(0x000b)
Global Usage Page(0x0085)
Local Usage(0x002c)
Feature/11
Global Report ID(0x000c)
Local Usage(0x0066)
Global Logical Maximum(0x0064)
Input/12
Local Usage(0x0066)
Feature/12
Local Usage(0x0068)
Global Report Size(0x0010)
Global Logical Maximum(0xffff)
Global Unit(0x1001)
Input/12
Local Usage(0x0068)
Feature/12
Global Report ID(0x000d)
Local Usage(0x0083)
Global Report Size(0x0008)
Global Logical Maximum(0x0064)
Global Unit(0x0000)
Feature/13
Global Report ID(0x000e)
Local Usage(0x0067)
Feature/14
Global Report ID(0x000f)
Local Usage(0x008c)
Feature/15
Global Report ID(0x0010)
Local Usage(0x008e)
Feature/16
Global Report ID(0x0011)
Local Usage(0x0029)
Global Logical Minimum(0x0001)
Feature/17
Global Report ID(0x0012)
Local Usage(0x008d)
Global Logical Minimum(0x0000)
Feature/18
Global Usage Page(0x0084)
Local Usage(0x0002)
Collection 0x02=Logical
Global Report ID(0x0016)
Global Usage Page(0x0085)
Global Report Size(0x0001)
Global Logical Maximum(0x0001)
Local Usage(0x0044)
Input/22
Local Usage(0x0044)
Feature/22
Local Usage(0x0045)
Input/22
Local Usage(0x0045)
Feature/22
Local Usage(0x00d0)
Input/22
Local Usage(0x00d0)
Feature/22
Local Usage(0x00d1)
Input/22
Local Usage(0x00d1)
Feature/22
Local Usage(0x0042)
Input/22
Local Usage(0x0042)
Feature/22
Global Usage Page(0x0084)
Local Usage(0x0069)
Input/22
Local Usage(0x0069)
Feature/22
Global Usage Page(0x0085)
Local Usage(0x0043)
Input/22
Local Usage(0x0043)
Feature/22
Local Usage(0x004b)
Input/22
Local Usage(0x004b)
Feature/22
Global Usage Page(0x0084)
Local Usage(0x0065)
Input/22
Local Usage(0x0065)
Feature/22
Global Report Count(0x0017)
Input/22
Feature/22
EndCollection
Global Report ID(0x0017)
Global Usage Page(0x0085)
Local Usage(0x002a)
Global Report Count(0x0001)
Global Report Size(0x0010)
Global Logical Maximum(0xffff)
Global Unit(0x1001)
Feature/23
Global Report ID(0x0018)
Global Usage Page(0x0084)
Local Usage(0x005a)
Global Report Size(0x0008)
Global Logical Minimum(0x0001)
Global Logical Maximum(0x0003)
Global Unit(0x0000)
Feature/24
EndCollection
Local Usage(0x0012)
Collection 0x00=Physical
Global Report ID(0x001c)
Global Usage Page(0xff86)
Local Usage(0x0016)
Global Report Size(0x0018)
Global Logical Minimum(0x0000)
Global Logical Maximum(0xffffff)
Feature/28
Global Report ID(0x0020)
Global Usage Page(0x0085)
Local Usage(0x0085)
Global Report Size(0x0010)
Global Logical Maximum(0xffff)
Feature/32
Global Report ID(0x0022)
Local Usage(0x0066)
Global Report Size(0x0008)
Global Logical Maximum(0x0064)
Feature/34
Global Report ID(0x0023)
Local Usage(0x0068)
Global Report Size(0x0010)
Global Logical Maximum(0xffff)
Global Unit(0x1001)
Local Usage(0x0068)
Feature/35
Global Report ID(0x0024)
Local Usage(0x002a)
Feature/36
Global Report ID(0x0025)
Global Usage Page(0x0084)
Local Usage(0x0040)
Global Unit(0xf0d121)
Global Unit Exponent(0x0005)
Feature/37
Global Report ID(0x0026)
Local Usage(0x0030)
Feature/38
Global Report ID(0x0027)
Global Usage Page(0xff86)
Local Usage(0x0024)
Global Report Size(0x0008)
Global Logical Minimum(0x00e8)
Global Logical Maximum(0x00fe)
Global Unit(0x0000)
Global Unit Exponent(0x0000)
Feature/39
Global Report ID(0x0028)
Local Usage(0x0018)
Global Report Size(0x0020)
Global Logical Minimum(0x80000001)
Global Logical Maximum(0x7fffffff)
Feature/40
EndCollection
Global Usage Page(0x0084)
Local Usage(0x001a)
Collection 0x00=Physical
Global Report ID(0x0030)
Global Usage Page(0x0084)
Local Usage(0x0040)
Global Report Size(0x0008)
Global Logical Minimum(0x0000)
Global Logical Maximum(0x00ff)
Global Unit(0xf0d121)
Global Unit Exponent(0x0007)
Feature/48
Global Report ID(0x0031)
Local Usage(0x0030)
Feature/49
Global Report ID(0x0032)
Local Usage(0x0053)
Global Logical Minimum(0x0057)
Global Logical Maximum(0x0061)
Feature/50
Global Report ID(0x0033)
Local Usage(0x0054)
Global Logical Minimum(0x007f)
Global Logical Maximum(0x008b)
Feature/51
Global Report ID(0x0034)
Global Usage Page(0xff86)
Local Usage(0x0024)
Global Logical Minimum(0x00aa)
Global Logical Maximum(0x00fe)
Global Unit(0x0000)
Global Unit Exponent(0x0000)
Feature/52
Global Report ID(0x0035)
Local Usage(0x0061)
Global Logical Minimum(0x0000)
Global Logical Maximum(0x0002)
Feature/53
Global Report ID(0x0036)
Local Usage(0x0052)
Global Logical Maximum(0x000d)
Feature/54
EndCollection
Local Usage(0x0005)
Collection 0x00=Physical
Global Report ID(0x0040)
Local Usage(0x007c)
Global Logical Maximum(0x0001)
Feature/64
Global Report ID(0x0041)
Local Usage(0x007d)
Global Report Size(0x0010)
Global Logical Minimum(0xffff)
Global Logical Maximum(0x7fff)
Global Unit(0x1001)
Feature/65
EndCollection
Global Usage Page(0x0084)
Local Usage(0x0016)
Collection 0x00=Physical
Global Report ID(0x0050)
Local Usage(0x0035)
Global Report Size(0x0008)
Global Logical Minimum(0x0000)
Global Logical Maximum(0x0064)
Global Unit(0x0000)
Feature/80
Global Report ID(0x0051)
Global Usage Page(0xff86)
Local Usage(0x0024)
Global Logical Minimum(0x006d)
Global Logical Maximum(0x00b8)
Feature/81
EndCollection
Global Usage Page(0xff86)
Local Usage(0x0001)
Collection 0x00=Physical
Global Report ID(0x0060)
Local Usage(0x0023)
Global Report Size(0x0010)
Global Logical Minimum(0x0000)
Global Logical Maximum(0xffff)
Feature/96
Global Report ID(0x0061)
Local Usage(0x0026)
Global Report Size(0x0008)
Global Logical Minimum(0x0084)
Global Logical Maximum(0x008c)
Feature/97
Global Report ID(0x0062)
Local Usage(0x0025)
Global Report Size(0x0020)
Global Logical Minimum(0x80000001)
Global Logical Maximum(0x7fffffff)
Feature/98
EndCollection
Global Report ID(0x007f)
Global Usage Page(0x0084)
Local Usage(0x00fe)
Local String Index(0x0005)
Global Report Size(0x0008)
Global Report Count(0x0001)
Global Logical Minimum(0x0000)
Global Logical Maximum(0x00ff)
Feature/127
Global Report ID(0x007e)
Global Usage Page(0xff86)
Local Usage(0x0042)
Local String Index(0x0006)
Feature/126
Global Report ID(0x007d)
Global Usage Page(0x0084)
Local Usage(0x00ff)
Local String Index(0x0002)
Feature/125
Global Report ID(0x007c)
Local Usage(0x00fd)
Local String Index(0x0003)
Feature/124
Global Report ID(0x007b)
Global Usage Page(0x0085)
Local Usage(0x0085)
Global Report Size(0x0010)
Global Logical Maximum(0xffff)
Feature/123
Global Usage Page(0x0084)
Local Usage(0x0002)
Collection 0x02=Logical
Global Report ID(0x007a)
Global Usage Page(0x0085)
Local Usage(0x0044)
Global Report Size(0x0001)
Global Logical Maximum(0x0001)
Feature/122
Local Usage(0x0045)
Feature/122
Local Usage(0x00d0)
Feature/122
Local Usage(0x00d1)
Feature/122
Local Usage(0x0042)
Feature/122
Global Usage Page(0x0084)
Local Usage(0x0069)
Feature/122
Global Usage Page(0x0085)
Local Usage(0x0043)
Feature/122
Local Usage(0x004b)
Feature/122
Global Usage Page(0x0084)
Local Usage(0x0065)
Feature/122
Global Report Count(0x0017)
Feature/122
EndCollection
Global Report ID(0x0079)
Global Usage Page(0xff86)
Local Usage(0x0072)
Global Report Size(0x0008)
Global Report Count(0x0001)
Feature/121
Global Report ID(0x0078)
Global Usage Page(0x0084)
Local Usage(0x005a)
Global Logical Minimum(0x0001)
Global Logical Maximum(0x0003)
Feature/120
Global Report ID(0x0075)
Global Usage Page(0xff86)
Local Usage(0x0029)
Global Logical Maximum(0x00ff)
Feature/117
Global Report ID(0x0074)
Local Usage(0x002a)
Global Report Size(0x0020)
Global Logical Minimum(0x80000001)
Global Logical Maximum(0x7fffffff)
Feature/116
EndCollection