17c478bd9Sstevel@tonic-gate# 27c478bd9Sstevel@tonic-gate# CDDL HEADER START 37c478bd9Sstevel@tonic-gate# 47c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the 5*77e51571Sgongtian zhao - Sun Microsystems - Beijing China# Common Development and Distribution License (the "License"). 6*77e51571Sgongtian zhao - Sun Microsystems - Beijing China# You may not use this file except in compliance with the License. 77c478bd9Sstevel@tonic-gate# 87c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing. 107c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions 117c478bd9Sstevel@tonic-gate# and limitations under the License. 127c478bd9Sstevel@tonic-gate# 137c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each 147c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the 167c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying 177c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner] 187c478bd9Sstevel@tonic-gate# 197c478bd9Sstevel@tonic-gate# CDDL HEADER END 207c478bd9Sstevel@tonic-gate# 217c478bd9Sstevel@tonic-gate/* 22*77e51571Sgongtian zhao - Sun Microsystems - Beijing China * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 237c478bd9Sstevel@tonic-gate * Use is subject to license terms. 247c478bd9Sstevel@tonic-gate */ 257c478bd9Sstevel@tonic-gate 267c478bd9Sstevel@tonic-gate 277c478bd9Sstevel@tonic-gate 287c478bd9Sstevel@tonic-gate 297c478bd9Sstevel@tonic-gate 307c478bd9Sstevel@tonic-gate Hidparser: Solaris implementation 317c478bd9Sstevel@tonic-gate _________________________________ 327c478bd9Sstevel@tonic-gate 337c478bd9Sstevel@tonic-gate 347c478bd9Sstevel@tonic-gateReport descriptors are basically made of items. Items can be 'Main' 357c478bd9Sstevel@tonic-gateitems, 'Local' Items and 'Global' Items. Local and Global items differ 367c478bd9Sstevel@tonic-gatein their scope. Local items hold their value only within the main item 377c478bd9Sstevel@tonic-gatein which they are defined while global items retain their values through 387c478bd9Sstevel@tonic-gateout all main items unless *redefined*. 397c478bd9Sstevel@tonic-gate 407c478bd9Sstevel@tonic-gateMain Items are collection, input, output and feature and end collection 417c478bd9Sstevel@tonic-gateitems. Each of the main items are represented by an 'entity_item' struc- 427c478bd9Sstevel@tonic-gateture. Solaris maintains global and local items as a linked list of 437c478bd9Sstevel@tonic-gateentity_attribute structures in the 'entity_item' structure. Since local 447c478bd9Sstevel@tonic-gateitems are specific to a main item it makes sense to keep local items 457c478bd9Sstevel@tonic-gatewith in the main item. List of global items can't be kept as a single 467c478bd9Sstevel@tonic-gateglobal list because they can get redefined in any subsequent main item 477c478bd9Sstevel@tonic-gateand Solaris won't be able to know what will be the value for each main 487c478bd9Sstevel@tonic-gateitem. Hence they also figure in the list maintained by the entity_item 497c478bd9Sstevel@tonic-gatestructure. 507c478bd9Sstevel@tonic-gate 517c478bd9Sstevel@tonic-gateSo how do we construct the tree ? 527c478bd9Sstevel@tonic-gate 537c478bd9Sstevel@tonic-gateEach main item forms a sibling or child of another main item except for the 547c478bd9Sstevel@tonic-gateroot main item which will always be a Collection main item. Each collect- 557c478bd9Sstevel@tonic-gateion item should be closed by an end collection. So root collection's 567c478bd9Sstevel@tonic-gatesibling will be an end collection. Whatever input, output and feature 577c478bd9Sstevel@tonic-gateitems which fall inside a collection (please see a collection as '{' and 587c478bd9Sstevel@tonic-gateend collection as '}' in 'C' language) will form a child of the parent 597c478bd9Sstevel@tonic-gatecollection with each of them forming a sibling of each other. i.e if 607c478bd9Sstevel@tonic-gatean Input main item comes first within a collection then it'll form the 617c478bd9Sstevel@tonic-gatechild of the collection with the subsequent main items being linked as 627c478bd9Sstevel@tonic-gatesiblings of each other. When we reach an end collection, it must form the 637c478bd9Sstevel@tonic-gatesibling of the collection. This applies for nested collections also. i.e 647c478bd9Sstevel@tonic-gateif a collection falls within another collection, it'll form a child of 657c478bd9Sstevel@tonic-gatethe parent collection with the 'input','output' and 'feature' main items 667c478bd9Sstevel@tonic-gatefalling within the child collection forming a child of child collection. 677c478bd9Sstevel@tonic-gateWhatever falls outside the child collection,but inside a parent collection 687c478bd9Sstevel@tonic-gatewill form a sibling of the child collection. 697c478bd9Sstevel@tonic-gate 707c478bd9Sstevel@tonic-gateWhen hidparser starts, it'll get the raw descriptor in a structure called 717c478bd9Sstevel@tonic-gate'hidparser_tok' structure. Solaris will proceed by taking one byte first 727c478bd9Sstevel@tonic-gate(which sort of forms a header and indicates how many to follow for each 737c478bd9Sstevel@tonic-gateitem for the 'item data') and then proceeds to take the value for the item 747c478bd9Sstevel@tonic-gate(which is the item data). This 'hidparser_tok' structure contains a list 757c478bd9Sstevel@tonic-gateof global and local items. As and when the parser encounters a global item 767c478bd9Sstevel@tonic-gateit'll add it to the global item list. The same applies for local items also. 777c478bd9Sstevel@tonic-gateThe only difference is that if a global item is getting redefined (i.e the 787c478bd9Sstevel@tonic-gateglobal item is already present in the gitem list), then "the global item" 797c478bd9Sstevel@tonic-gate(i.e one of the global item) is freed and the new one is put instead. Local 807c478bd9Sstevel@tonic-gateitems can get redefined without disturbing the earlier values. This goes 817c478bd9Sstevel@tonic-gateon till a main item is encountered. When a main item is encountered the 827c478bd9Sstevel@tonic-gateglobal item list is copied over to the entity_item structure and the local 837c478bd9Sstevel@tonic-gateitem list will start where the global item list stops ( in the 'entity_ 847c478bd9Sstevel@tonic-gateattribute' list). Before we start on the next item the local item list will 857c478bd9Sstevel@tonic-gatebe freed (in the hidparser_tok structure) but the global item list will be 867c478bd9Sstevel@tonic-gatemaintained since their scope is through out the report descriptor. 877c478bd9Sstevel@tonic-gate 887c478bd9Sstevel@tonic-gateThe two additions which has happened in this round of changes are the 897c478bd9Sstevel@tonic-gatesupport for push|pop and delimiter items. 'push' basically asks the parser 907c478bd9Sstevel@tonic-gateto copy over the list of global items, while 'pop' takes the last pushed 917c478bd9Sstevel@tonic-gatelist as the current one. The entity_attribute_stack forms a stack of global 927c478bd9Sstevel@tonic-gateitem list pointers from which they can be pop-ed on the gitem list.'delimit- 937c478bd9Sstevel@tonic-gateer'items basically allows you to interpret the data that is being received 947c478bd9Sstevel@tonic-gatedifferently depending on the way you use it and requires the parser to reco- 957c478bd9Sstevel@tonic-gategnize only the first 'usage' (which is what Solaris does with my changes). 967c478bd9Sstevel@tonic-gate 977c478bd9Sstevel@tonic-gate 987c478bd9Sstevel@tonic-gate___________________________________________________________________________ 997c478bd9Sstevel@tonic-gate 1007c478bd9Sstevel@tonic-gateExample: 1017c478bd9Sstevel@tonic-gate 1027c478bd9Sstevel@tonic-gate 1037c478bd9Sstevel@tonic-gateFollowing is the report descriptor dump for Labtec Spaceball (you can call 1047c478bd9Sstevel@tonic-gateit a mouse). 1057c478bd9Sstevel@tonic-gate 1067c478bd9Sstevel@tonic-gatehid1: Index = 0 value =0x5 1077c478bd9Sstevel@tonic-gatehid1: Index = 1 value =0x1 1087c478bd9Sstevel@tonic-gatehid1: Index = 2 value =0x9 1097c478bd9Sstevel@tonic-gatehid1: Index = 3 value =0x8 1107c478bd9Sstevel@tonic-gatehid1: Index = 4 value =0xa1 1117c478bd9Sstevel@tonic-gatehid1: Index = 5 value =0x1 1127c478bd9Sstevel@tonic-gatehid1: Index = 6 value =0xa1 1137c478bd9Sstevel@tonic-gatehid1: Index = 7 value =0x0 1147c478bd9Sstevel@tonic-gatehid1: Index = 8 value =0x85 1157c478bd9Sstevel@tonic-gatehid1: Index = 9 value =0x1 1167c478bd9Sstevel@tonic-gatehid1: Index = 10 value =0x16 1177c478bd9Sstevel@tonic-gatehid1: Index = 11 value =0x0 1187c478bd9Sstevel@tonic-gatehid1: Index = 12 value =0x80 1197c478bd9Sstevel@tonic-gatehid1: Index = 13 value =0x26 1207c478bd9Sstevel@tonic-gatehid1: Index = 14 value =0xff 1217c478bd9Sstevel@tonic-gatehid1: Index = 15 value =0x7f 1227c478bd9Sstevel@tonic-gatehid1: Index = 16 value =0x9 1237c478bd9Sstevel@tonic-gatehid1: Index = 17 value =0x30 1247c478bd9Sstevel@tonic-gatehid1: Index = 18 value =0x9 1257c478bd9Sstevel@tonic-gatehid1: Index = 19 value =0x31 1267c478bd9Sstevel@tonic-gatehid1: Index = 20 value =0x9 1277c478bd9Sstevel@tonic-gatehid1: Index = 21 value =0x32 1287c478bd9Sstevel@tonic-gatehid1: Index = 22 value =0x75 1297c478bd9Sstevel@tonic-gatehid1: Index = 23 value =0x10 1307c478bd9Sstevel@tonic-gatehid1: Index = 24 value =0x95 1317c478bd9Sstevel@tonic-gatehid1: Index = 25 value =0x3 1327c478bd9Sstevel@tonic-gatehid1: Index = 26 value =0x81 1337c478bd9Sstevel@tonic-gatehid1: Index = 27 value =0x2 1347c478bd9Sstevel@tonic-gatehid1: Index = 28 value =0xc0 1357c478bd9Sstevel@tonic-gatehid1: Index = 29 value =0xa1 1367c478bd9Sstevel@tonic-gatehid1: Index = 30 value =0x0 1377c478bd9Sstevel@tonic-gatehid1: Index = 31 value =0x85 1387c478bd9Sstevel@tonic-gatehid1: Index = 32 value =0x2 1397c478bd9Sstevel@tonic-gatehid1: Index = 33 value =0x9 1407c478bd9Sstevel@tonic-gatehid1: Index = 34 value =0x33 1417c478bd9Sstevel@tonic-gatehid1: Index = 35 value =0x9 1427c478bd9Sstevel@tonic-gatehid1: Index = 36 value =0x34 1437c478bd9Sstevel@tonic-gatehid1: Index = 37 value =0x9 1447c478bd9Sstevel@tonic-gatehid1: Index = 38 value =0x35 1457c478bd9Sstevel@tonic-gatehid1: Index = 39 value =0x75 1467c478bd9Sstevel@tonic-gatehid1: Index = 40 value =0x10 1477c478bd9Sstevel@tonic-gatehid1: Index = 41 value =0x95 1487c478bd9Sstevel@tonic-gatehid1: Index = 42 value =0x3 1497c478bd9Sstevel@tonic-gatehid1: Index = 43 value =0x81 1507c478bd9Sstevel@tonic-gatehid1: Index = 44 value =0x2 1517c478bd9Sstevel@tonic-gatehid1: Index = 45 value =0xc0 1527c478bd9Sstevel@tonic-gatehid1: Index = 46 value =0xa1 1537c478bd9Sstevel@tonic-gatehid1: Index = 47 value =0x2 1547c478bd9Sstevel@tonic-gatehid1: Index = 48 value =0x85 1557c478bd9Sstevel@tonic-gatehid1: Index = 49 value =0x3 1567c478bd9Sstevel@tonic-gatehid1: Index = 50 value =0x5 1577c478bd9Sstevel@tonic-gatehid1: Index = 51 value =0x1 1587c478bd9Sstevel@tonic-gatehid1: Index = 52 value =0x9 1597c478bd9Sstevel@tonic-gatehid1: Index = 53 value =0x3a 1607c478bd9Sstevel@tonic-gatehid1: Index = 54 value =0x75 1617c478bd9Sstevel@tonic-gatehid1: Index = 55 value =0x10 1627c478bd9Sstevel@tonic-gatehid1: Index = 56 value =0x95 1637c478bd9Sstevel@tonic-gatehid1: Index = 57 value =0x1 1647c478bd9Sstevel@tonic-gatehid1: Index = 58 value =0x81 1657c478bd9Sstevel@tonic-gatehid1: Index = 59 value =0x2 1667c478bd9Sstevel@tonic-gatehid1: Index = 60 value =0x5 1677c478bd9Sstevel@tonic-gatehid1: Index = 61 value =0x9 1687c478bd9Sstevel@tonic-gatehid1: Index = 62 value =0x19 1697c478bd9Sstevel@tonic-gatehid1: Index = 63 value =0x1 1707c478bd9Sstevel@tonic-gatehid1: Index = 64 value =0x29 1717c478bd9Sstevel@tonic-gatehid1: Index = 65 value =0xd 1727c478bd9Sstevel@tonic-gatehid1: Index = 66 value =0x15 1737c478bd9Sstevel@tonic-gatehid1: Index = 67 value =0x0 1747c478bd9Sstevel@tonic-gatehid1: Index = 68 value =0x25 1757c478bd9Sstevel@tonic-gatehid1: Index = 69 value =0x1 1767c478bd9Sstevel@tonic-gatehid1: Index = 70 value =0x35 1777c478bd9Sstevel@tonic-gatehid1: Index = 71 value =0x0 1787c478bd9Sstevel@tonic-gatehid1: Index = 72 value =0x45 1797c478bd9Sstevel@tonic-gatehid1: Index = 73 value =0x1 1807c478bd9Sstevel@tonic-gatehid1: Index = 74 value =0x75 1817c478bd9Sstevel@tonic-gatehid1: Index = 75 value =0x1 1827c478bd9Sstevel@tonic-gatehid1: Index = 76 value =0x95 1837c478bd9Sstevel@tonic-gatehid1: Index = 77 value =0xd 1847c478bd9Sstevel@tonic-gatehid1: Index = 78 value =0x81 1857c478bd9Sstevel@tonic-gatehid1: Index = 79 value =0x2 1867c478bd9Sstevel@tonic-gatehid1: Index = 80 value =0x95 1877c478bd9Sstevel@tonic-gatehid1: Index = 81 value =0x3 1887c478bd9Sstevel@tonic-gatehid1: Index = 82 value =0x81 1897c478bd9Sstevel@tonic-gatehid1: Index = 83 value =0x1 1907c478bd9Sstevel@tonic-gatehid1: Index = 84 value =0xc0 1917c478bd9Sstevel@tonic-gatehid1: Index = 85 value =0x5 1927c478bd9Sstevel@tonic-gatehid1: Index = 86 value =0x1 1937c478bd9Sstevel@tonic-gatehid1: Index = 87 value =0x9 1947c478bd9Sstevel@tonic-gatehid1: Index = 88 value =0x3a 1957c478bd9Sstevel@tonic-gatehid1: Index = 89 value =0xa1 1967c478bd9Sstevel@tonic-gatehid1: Index = 90 value =0x2 1977c478bd9Sstevel@tonic-gatehid1: Index = 91 value =0x15 1987c478bd9Sstevel@tonic-gatehid1: Index = 92 value =0x80 1997c478bd9Sstevel@tonic-gatehid1: Index = 93 value =0x25 2007c478bd9Sstevel@tonic-gatehid1: Index = 94 value =0x7f 2017c478bd9Sstevel@tonic-gatehid1: Index = 95 value =0x75 2027c478bd9Sstevel@tonic-gatehid1: Index = 96 value =0x8 2037c478bd9Sstevel@tonic-gatehid1: Index = 97 value =0x9 2047c478bd9Sstevel@tonic-gatehid1: Index = 98 value =0x3a 2057c478bd9Sstevel@tonic-gatehid1: Index = 99 value =0xa1 2067c478bd9Sstevel@tonic-gatehid1: Index = 100 value =0x2 2077c478bd9Sstevel@tonic-gatehid1: Index = 101 value =0x85 2087c478bd9Sstevel@tonic-gatehid1: Index = 102 value =0x4 2097c478bd9Sstevel@tonic-gatehid1: Index = 103 value =0x9 2107c478bd9Sstevel@tonic-gatehid1: Index = 104 value =0x3a 2117c478bd9Sstevel@tonic-gatehid1: Index = 105 value =0x95 2127c478bd9Sstevel@tonic-gatehid1: Index = 106 value =0x4 2137c478bd9Sstevel@tonic-gatehid1: Index = 107 value =0xb1 2147c478bd9Sstevel@tonic-gatehid1: Index = 108 value =0x2 2157c478bd9Sstevel@tonic-gatehid1: Index = 109 value =0xc0 2167c478bd9Sstevel@tonic-gatehid1: Index = 110 value =0xa1 2177c478bd9Sstevel@tonic-gatehid1: Index = 111 value =0x2 2187c478bd9Sstevel@tonic-gatehid1: Index = 112 value =0x85 2197c478bd9Sstevel@tonic-gatehid1: Index = 113 value =0x5 2207c478bd9Sstevel@tonic-gatehid1: Index = 114 value =0x9 2217c478bd9Sstevel@tonic-gatehid1: Index = 115 value =0x3a 2227c478bd9Sstevel@tonic-gatehid1: Index = 116 value =0x95 2237c478bd9Sstevel@tonic-gatehid1: Index = 117 value =0x1 2247c478bd9Sstevel@tonic-gatehid1: Index = 118 value =0xb1 2257c478bd9Sstevel@tonic-gatehid1: Index = 119 value =0x2 2267c478bd9Sstevel@tonic-gatehid1: Index = 120 value =0xc0 2277c478bd9Sstevel@tonic-gatehid1: Index = 121 value =0xa1 2287c478bd9Sstevel@tonic-gatehid1: Index = 122 value =0x2 2297c478bd9Sstevel@tonic-gatehid1: Index = 123 value =0x85 2307c478bd9Sstevel@tonic-gatehid1: Index = 124 value =0x6 2317c478bd9Sstevel@tonic-gatehid1: Index = 125 value =0x9 2327c478bd9Sstevel@tonic-gatehid1: Index = 126 value =0x3a 2337c478bd9Sstevel@tonic-gatehid1: Index = 127 value =0x95 2347c478bd9Sstevel@tonic-gatehid1: Index = 128 value =0x1 2357c478bd9Sstevel@tonic-gatehid1: Index = 129 value =0xb1 2367c478bd9Sstevel@tonic-gatehid1: Index = 130 value =0x2 2377c478bd9Sstevel@tonic-gatehid1: Index = 131 value =0xc0 2387c478bd9Sstevel@tonic-gatehid1: Index = 132 value =0xa1 2397c478bd9Sstevel@tonic-gatehid1: Index = 133 value =0x2 2407c478bd9Sstevel@tonic-gatehid1: Index = 134 value =0x85 2417c478bd9Sstevel@tonic-gatehid1: Index = 135 value =0x7 2427c478bd9Sstevel@tonic-gatehid1: Index = 136 value =0x9 2437c478bd9Sstevel@tonic-gatehid1: Index = 137 value =0x3a 2447c478bd9Sstevel@tonic-gatehid1: Index = 138 value =0x95 2457c478bd9Sstevel@tonic-gatehid1: Index = 139 value =0x10 2467c478bd9Sstevel@tonic-gatehid1: Index = 140 value =0xb1 2477c478bd9Sstevel@tonic-gatehid1: Index = 141 value =0x2 2487c478bd9Sstevel@tonic-gatehid1: Index = 142 value =0xc0 2497c478bd9Sstevel@tonic-gatehid1: Index = 143 value =0xa1 2507c478bd9Sstevel@tonic-gatehid1: Index = 144 value =0x2 2517c478bd9Sstevel@tonic-gatehid1: Index = 145 value =0x85 2527c478bd9Sstevel@tonic-gatehid1: Index = 146 value =0x8 2537c478bd9Sstevel@tonic-gatehid1: Index = 147 value =0x9 2547c478bd9Sstevel@tonic-gatehid1: Index = 148 value =0x3a 2557c478bd9Sstevel@tonic-gatehid1: Index = 149 value =0x95 2567c478bd9Sstevel@tonic-gatehid1: Index = 150 value =0x10 2577c478bd9Sstevel@tonic-gatehid1: Index = 151 value =0xb1 2587c478bd9Sstevel@tonic-gatehid1: Index = 152 value =0x2 2597c478bd9Sstevel@tonic-gatehid1: Index = 153 value =0xc0 2607c478bd9Sstevel@tonic-gatehid1: Index = 154 value =0xa1 2617c478bd9Sstevel@tonic-gatehid1: Index = 155 value =0x2 2627c478bd9Sstevel@tonic-gatehid1: Index = 156 value =0x85 2637c478bd9Sstevel@tonic-gatehid1: Index = 157 value =0x9 2647c478bd9Sstevel@tonic-gatehid1: Index = 158 value =0x9 2657c478bd9Sstevel@tonic-gatehid1: Index = 159 value =0x3a 2667c478bd9Sstevel@tonic-gatehid1: Index = 160 value =0x95 2677c478bd9Sstevel@tonic-gatehid1: Index = 161 value =0xc 2687c478bd9Sstevel@tonic-gatehid1: Index = 162 value =0xb1 2697c478bd9Sstevel@tonic-gatehid1: Index = 163 value =0x2 2707c478bd9Sstevel@tonic-gatehid1: Index = 164 value =0xc0 2717c478bd9Sstevel@tonic-gatehid1: Index = 165 value =0xa1 2727c478bd9Sstevel@tonic-gatehid1: Index = 166 value =0x2 2737c478bd9Sstevel@tonic-gatehid1: Index = 167 value =0x85 2747c478bd9Sstevel@tonic-gatehid1: Index = 168 value =0xa 2757c478bd9Sstevel@tonic-gatehid1: Index = 169 value =0x9 2767c478bd9Sstevel@tonic-gatehid1: Index = 170 value =0x3a 2777c478bd9Sstevel@tonic-gatehid1: Index = 171 value =0x95 2787c478bd9Sstevel@tonic-gatehid1: Index = 172 value =0x1 2797c478bd9Sstevel@tonic-gatehid1: Index = 173 value =0xb1 2807c478bd9Sstevel@tonic-gatehid1: Index = 174 value =0x2 2817c478bd9Sstevel@tonic-gatehid1: Index = 175 value =0xc0 2827c478bd9Sstevel@tonic-gatehid1: Index = 176 value =0xa1 2837c478bd9Sstevel@tonic-gatehid1: Index = 177 value =0x2 2847c478bd9Sstevel@tonic-gatehid1: Index = 178 value =0x85 2857c478bd9Sstevel@tonic-gatehid1: Index = 179 value =0xb 2867c478bd9Sstevel@tonic-gatehid1: Index = 180 value =0x9 2877c478bd9Sstevel@tonic-gatehid1: Index = 181 value =0x3a 2887c478bd9Sstevel@tonic-gatehid1: Index = 182 value =0x95 2897c478bd9Sstevel@tonic-gatehid1: Index = 183 value =0x1 2907c478bd9Sstevel@tonic-gatehid1: Index = 184 value =0xb1 2917c478bd9Sstevel@tonic-gatehid1: Index = 185 value =0x2 2927c478bd9Sstevel@tonic-gatehid1: Index = 186 value =0xc0 2937c478bd9Sstevel@tonic-gatehid1: Index = 187 value =0xa1 2947c478bd9Sstevel@tonic-gatehid1: Index = 188 value =0x2 2957c478bd9Sstevel@tonic-gatehid1: Index = 189 value =0x85 2967c478bd9Sstevel@tonic-gatehid1: Index = 190 value =0xc 2977c478bd9Sstevel@tonic-gatehid1: Index = 191 value =0x9 2987c478bd9Sstevel@tonic-gatehid1: Index = 192 value =0x3a 2997c478bd9Sstevel@tonic-gatehid1: Index = 193 value =0x95 3007c478bd9Sstevel@tonic-gatehid1: Index = 194 value =0x1 3017c478bd9Sstevel@tonic-gatehid1: Index = 195 value =0xb1 3027c478bd9Sstevel@tonic-gatehid1: Index = 196 value =0x2 3037c478bd9Sstevel@tonic-gatehid1: Index = 197 value =0xc0 3047c478bd9Sstevel@tonic-gatehid1: Index = 198 value =0xa1 3057c478bd9Sstevel@tonic-gatehid1: Index = 199 value =0x2 3067c478bd9Sstevel@tonic-gatehid1: Index = 200 value =0x85 3077c478bd9Sstevel@tonic-gatehid1: Index = 201 value =0xd 3087c478bd9Sstevel@tonic-gatehid1: Index = 202 value =0x9 3097c478bd9Sstevel@tonic-gatehid1: Index = 203 value =0x3a 3107c478bd9Sstevel@tonic-gatehid1: Index = 204 value =0x95 3117c478bd9Sstevel@tonic-gatehid1: Index = 205 value =0x2 3127c478bd9Sstevel@tonic-gatehid1: Index = 206 value =0xb1 3137c478bd9Sstevel@tonic-gatehid1: Index = 207 value =0x2 3147c478bd9Sstevel@tonic-gatehid1: Index = 208 value =0xc0 3157c478bd9Sstevel@tonic-gatehid1: Index = 209 value =0xc0 3167c478bd9Sstevel@tonic-gatehid1: Index = 210 value =0xc0 3177c478bd9Sstevel@tonic-gate 3187c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3197c478bd9Sstevel@tonic-gate 3207c478bd9Sstevel@tonic-gateItem format: 3217c478bd9Sstevel@tonic-gate 3227c478bd9Sstevel@tonic-gate ------------------------------------ 3237c478bd9Sstevel@tonic-gate |data|data(8)|tag(4),type(2),size(2)| 3247c478bd9Sstevel@tonic-gate ------------------------------------ 3257c478bd9Sstevel@tonic-gate |<------'ch'---------->| 3267c478bd9Sstevel@tonic-gate 3277c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3287c478bd9Sstevel@tonic-gate 3297c478bd9Sstevel@tonic-gate'hidparser_ReportDescriptor()' will call 'hidparser_scan()' first. Hence 3307c478bd9Sstevel@tonic-gateyou will see the 'scanner' output first. The scanner will go through the 3317c478bd9Sstevel@tonic-gatefirst byte and set hidparser_tok_token to the tag|type value. hidparser_tok 3327c478bd9Sstevel@tonic-gate_leng will be set to size and the 'data' part will be copied to tok_ text. 3337c478bd9Sstevel@tonic-gate'hidparser_ReportDescriptor' will call 'hidparser_ItemList()' to take 3347c478bd9Sstevel@tonic-gatecharge of the rest of the parsing. 3357c478bd9Sstevel@tonic-gate 3367c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3377c478bd9Sstevel@tonic-gate 3387c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x0 ch = 0x5 [ = 0x00000101 = tag[0], 3397c478bd9Sstevel@tonic-gate type[1], size[1] ] 3407c478bd9Sstevel@tonic-gate 3417c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 <========size[1] [Type 1 = Global 3427c478bd9Sstevel@tonic-gate Tag[0] = Usage Page ] 3437c478bd9Sstevel@tonic-gate 3447c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3457c478bd9Sstevel@tonic-gate 3467c478bd9Sstevel@tonic-gateHere the length of 1 indicates that the parameter or value associated with 3477c478bd9Sstevel@tonic-gatethe usage page is contained in the next character/byte. 3487c478bd9Sstevel@tonic-gate 3497c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3507c478bd9Sstevel@tonic-gate 3517c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x1 3527c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3537c478bd9Sstevel@tonic-gate 3547c478bd9Sstevel@tonic-gateThe next byte contains a value of 0x1. If you look at the usage table spec 3557c478bd9Sstevel@tonic-gateyou can see that value of 1 stands for Generic Desktop. 3567c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3577c478bd9Sstevel@tonic-gate 3587c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x5 before translation 3597c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x2 3607c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3617c478bd9Sstevel@tonic-gate 3627c478bd9Sstevel@tonic-gateHere 'hidparser_ItemList()' would have been called, which again calls 3637c478bd9Sstevel@tonic-gate'hidparser_Items()'. The purpose of 'hidparser_Items()' is to get through 3647c478bd9Sstevel@tonic-gateall the Items and break when it encounters a main item. 'hidparser_Items() 3657c478bd9Sstevel@tonic-gatewill again call 'hidparser_GlobalItem()' and 'hidparser_LocalItem()' to 3667c478bd9Sstevel@tonic-gatemake a list of entity attributes in the hidparser_tok structure. 3677c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3687c478bd9Sstevel@tonic-gate 3697c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x0 token = 0x4 3707c478bd9Sstevel@tonic-gate 3717c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3727c478bd9Sstevel@tonic-gate 3737c478bd9Sstevel@tonic-gateThe above goes to gitem list. 3747c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3757c478bd9Sstevel@tonic-gate 3767c478bd9Sstevel@tonic-gate 3777c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x2 ch = 0x9 [ = 0x00001001 = tag[0], 3787c478bd9Sstevel@tonic-gate type[2], size[1]] 3797c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 3807c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x8,index = 0x3 3817c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 3827c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x4 3837c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x2 token = 0x8 3847c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3857c478bd9Sstevel@tonic-gate 3867c478bd9Sstevel@tonic-gateThe above goes to local item list in hidparser_tok_structure. 3877c478bd9Sstevel@tonic-gate___________________________________________________________________________ 3887c478bd9Sstevel@tonic-gate 3897c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x4 ch = 0xa1 [= 0x10100001 = tag[a], 3907c478bd9Sstevel@tonic-gate type[0], size[1]] 3917c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 [ This is a main item ] 3927c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x5 3937c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 3947c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x6 3957c478bd9Sstevel@tonic-gate 3967c478bd9Sstevel@tonic-gate____________________________________________________________________________ 3977c478bd9Sstevel@tonic-gate 3987c478bd9Sstevel@tonic-gateHere 'hidparser_Items()' will break and pass the control back to 'hidparser_ 3997c478bd9Sstevel@tonic-gateItemList()' which will call 'hidparser_MainItem()' to do things specific to 4007c478bd9Sstevel@tonic-gatea main item (like allocating an entity_item structure and returning it in 4017c478bd9Sstevel@tonic-gatecurr_ei). 'hidparser_MainItem()' will allocate an entity_item structure and 4027c478bd9Sstevel@tonic-gatecopy the gitem list from hidparser tok structure and add the local item list 4037c478bd9Sstevel@tonic-gateto the end of global item list (in the entity_item_attributes member of 4047c478bd9Sstevel@tonic-gateentity_item structure). 4057c478bd9Sstevel@tonic-gate 4067c478bd9Sstevel@tonic-gate____________________________________________________________________________ 4077c478bd9Sstevel@tonic-gate 4087c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x4 token = 0xa0 4097c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x6 ch = 0xa1 4107c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 4117c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x0,index = 0x7 4127c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 4137c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x8 4147c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab8d220, curr_ei = 0xcab8d220 4157c478bd9Sstevel@tonic-gate 4167c478bd9Sstevel@tonic-gate____________________________________________________________________________ 4177c478bd9Sstevel@tonic-gate 4187c478bd9Sstevel@tonic-gateThis forms the root collection. 'cache_ei' or the cached entity_item will 4197c478bd9Sstevel@tonic-gatealways point to the last collection encountered. Each entity_item structure 4207c478bd9Sstevel@tonic-gatewill have a pointer to the previous collection. This is basically to remove 4217c478bd9Sstevel@tonic-gaterecursion when we support nested collections. So if I have something like 4227c478bd9Sstevel@tonic-gate 4237c478bd9Sstevel@tonic-gateCollection 4247c478bd9Sstevel@tonic-gate .... 4257c478bd9Sstevel@tonic-gate Collection 4267c478bd9Sstevel@tonic-gate .... 4277c478bd9Sstevel@tonic-gate Collection 4287c478bd9Sstevel@tonic-gate .... 4297c478bd9Sstevel@tonic-gate End Collection 4307c478bd9Sstevel@tonic-gate .... 4317c478bd9Sstevel@tonic-gate End collection 4327c478bd9Sstevel@tonic-gate .... 4337c478bd9Sstevel@tonic-gateEnd Collection 4347c478bd9Sstevel@tonic-gate 4357c478bd9Sstevel@tonic-gateand if we assume that the parser is currently @ the third Collection item, 4367c478bd9Sstevel@tonic-gatethen cache_ei will point to the third collection, it's prev_ei will point to 4377c478bd9Sstevel@tonic-gatethe second collection and it's prev_ei will point to the root collection. As 4387c478bd9Sstevel@tonic-gatewe move down the first end collection, cache_ei would have changed to second 4397c478bd9Sstevel@tonic-gatecollection and so on. 4407c478bd9Sstevel@tonic-gate____________________________________________________________________________ 4417c478bd9Sstevel@tonic-gate 4427c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x6 token = 0xa0 4437c478bd9Sstevel@tonic-gate 4447c478bd9Sstevel@tonic-gate____________________________________________________________________________ 4457c478bd9Sstevel@tonic-gate 4467c478bd9Sstevel@tonic-gateWe encounter another collection here [ so a nested collection ]. This 'ei' 4477c478bd9Sstevel@tonic-gatewill have a global item list (only, as there are no local items. Remember 4487c478bd9Sstevel@tonic-gatethat we preserve global item list in the hidparser_tok_structure while 4497c478bd9Sstevel@tonic-gateblanking out the local item list as we encounter a main item). 4507c478bd9Sstevel@tonic-gate____________________________________________________________________________ 4517c478bd9Sstevel@tonic-gate 4527c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x8 ch = 0x85 4537c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 4547c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x9 4557c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 4567c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xa 4577c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab84db0, curr_ei = 0xcab84db0 4587c478bd9Sstevel@tonic-gate 4597c478bd9Sstevel@tonic-gate 4607c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x8 token = 0x84 4617c478bd9Sstevel@tonic-gate_____________________________________________________________________________ 4627c478bd9Sstevel@tonic-gate 4637c478bd9Sstevel@tonic-gateThis is a global item. Will get added to already existent Usage page GI in the 4647c478bd9Sstevel@tonic-gate'hidparser_tok' structure. 4657c478bd9Sstevel@tonic-gate 4667c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xa ch = 0x16 4677c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 2 4687c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x0,index = 0xb 4697c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[1] = 0x80,index = 0xc 4707c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x16 before translation 4717c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xd 4727c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xa token = 0x14 4737c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xd ch = 0x26 4747c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 2 4757c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0xff,index = 0xe 4767c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[1] = 0x7f,index = 0xf 4777c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x26 before translation 4787c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x10 4797c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xd token = 0x24 4807c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x10 ch = 0x9 4817c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 4827c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x30,index = 0x11 4837c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 4847c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x12 4857c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x10 token = 0x8 4867c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x12 ch = 0x9 4877c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 4887c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x31,index = 0x13 4897c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 4907c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x14 4917c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x12 token = 0x8 4927c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x14 ch = 0x9 4937c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 4947c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x32,index = 0x15 4957c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 4967c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x16 4977c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x14 token = 0x8 4987c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x16 ch = 0x75 4997c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 5007c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x10,index = 0x17 5017c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x75 before translation 5027c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x18 5037c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x16 token = 0x74 5047c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x18 ch = 0x95 5057c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 5067c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3,index = 0x19 5077c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 5087c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x1a 5097c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x18 token = 0x94 5107c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x1a ch = 0x81 5117c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 5127c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x1b 5137c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x81 before translation 5147c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x1c 5157c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x1a token = 0x80 5167c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x1c ch = 0xc0 5177c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 5187c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 5197c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x1d 5207c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0x80, curr_ei = 0xcab7ecf8 will be the 5217c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab84db0, cache_ei being 0xcab84db0 5227c478bd9Sstevel@tonic-gate 5237c478bd9Sstevel@tonic-gate___________________________________________________________________________ 5247c478bd9Sstevel@tonic-gate 5257c478bd9Sstevel@tonic-gateThis is the Input main item and will form the child of collection @ 0xcab84- 5267c478bd9Sstevel@tonic-gatedb0. 5277c478bd9Sstevel@tonic-gate___________________________________________________________________________ 5287c478bd9Sstevel@tonic-gate 5297c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x1c token = 0xc0 5307c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x1d ch = 0xa1 5317c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 5327c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x0,index = 0x1e 5337c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 5347c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x1f 5357c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab84db0, curr_ei = 0xcab84630 5367c478bd9Sstevel@tonic-gate____________________________________________________________________________ 5377c478bd9Sstevel@tonic-gate 5387c478bd9Sstevel@tonic-gateThis End collection and will for the right sibling of 0xcab84db0 which will 5397c478bd9Sstevel@tonic-gatemake cache_ei point to root collection. 5407c478bd9Sstevel@tonic-gate____________________________________________________________________________ 5417c478bd9Sstevel@tonic-gate 5427c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x1d token = 0xa0 5437c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x1f ch = 0x85 5447c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 5457c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x20 5467c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 5477c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x21 5487c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab84750, curr_ei = 0xcab84750 5497c478bd9Sstevel@tonic-gate____________________________________________________________________________ 5507c478bd9Sstevel@tonic-gate 5517c478bd9Sstevel@tonic-gateAgain a Collection Item. 5527c478bd9Sstevel@tonic-gate 5537c478bd9Sstevel@tonic-gateThe tree corresponding to the above list will be 5547c478bd9Sstevel@tonic-gate 5557c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) <---------------------- GI 5567c478bd9Sstevel@tonic-gatehidparser: Usage(0x8) <--------------------------- LI 5577c478bd9Sstevel@tonic-gatehidparser: Collection(0x1)<----------------------- MI 5587c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1)<------------------ Carried over GI 5597c478bd9Sstevel@tonic-gatehidparser: Collection(0x0)<------------------ MI 5607c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1)<------------- Carried over GI 5617c478bd9Sstevel@tonic-gatehidparser: Report Id(0x1)<-------------- GI [ New ] 5627c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x8000)<----- GI 5637c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7FFF)<----- GI 5647c478bd9Sstevel@tonic-gatehidparser: Report Size(0x10)<----------- GI 5657c478bd9Sstevel@tonic-gatehidparser: Report Count(0x3)<----------- GI 5667c478bd9Sstevel@tonic-gatehidparser: Usage(0x30)<----------------- LI 5677c478bd9Sstevel@tonic-gatehidparser: Usage(0x31)<----------------- LI 5687c478bd9Sstevel@tonic-gatehidparser: Usage(0x32)<----------------- LI 5697c478bd9Sstevel@tonic-gatehidparser: Input(0x2)<------------------ MI 5707c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0)<-------------- MI 5717c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1)<------------------ Carried over GI 5727c478bd9Sstevel@tonic-gatehidparser: Report Id(0x1)<------------------- Carried over GI 5737c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x8000)<---------- " " 5747c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7FFF)<---------- " " 5757c478bd9Sstevel@tonic-gatehidparser: Report Size(0x10)<---------------- " " 5767c478bd9Sstevel@tonic-gatehidparser: Report Count(0x3)<---------------- " " 5777c478bd9Sstevel@tonic-gatehidparser: Collection(0x0)<------------------ MI 5787c478bd9Sstevel@tonic-gate 5797c478bd9Sstevel@tonic-gateThe actual tree corresponding to a descriptor dump will be 5807c478bd9Sstevel@tonic-gate 5817c478bd9Sstevel@tonic-gate 5827c478bd9Sstevel@tonic-gate 0x5, 0x1, /* Usage Page (Generic Desktop) */ 5837c478bd9Sstevel@tonic-gate 0x9, 0x8, /* Usage (0x8:Multi-axis controller) */ 5847c478bd9Sstevel@tonic-gate 0xa1, 0x1, /* Collection (Application) */ 5857c478bd9Sstevel@tonic-gate 0xa1, 0, /* Collection (Physical) */ 5867c478bd9Sstevel@tonic-gate 0x85, 0x1, /* Report ID (0x1) */ 5877c478bd9Sstevel@tonic-gate 0x16, 0, 0x80, /* Logical Minimum (0x8000) */ 5887c478bd9Sstevel@tonic-gate 0x26, 0xff, 0x7f, /* Logical Maximum (0x7fff) */ 5897c478bd9Sstevel@tonic-gate 0x9, 0x30, /* Usage (0x30:X) */ 5907c478bd9Sstevel@tonic-gate 0x9, 0x31, /* Usage (0x31:Y) */ 5917c478bd9Sstevel@tonic-gate 0x9, 0x32, /* Usage (0x32:Z) */ 5927c478bd9Sstevel@tonic-gate 0x75, 0x10, /* Report Size (0x10) */ 5937c478bd9Sstevel@tonic-gate 0x95, 0x3, /* Report Count (0x3) */ 5947c478bd9Sstevel@tonic-gate 0x81, 0x2, /* Input (Data, Variable, Absolute) */ 5957c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 5967c478bd9Sstevel@tonic-gate 0xa1, 0, /* Collection (Physical) */ 5977c478bd9Sstevel@tonic-gate 5987c478bd9Sstevel@tonic-gateAs can be seen, the tree that Solaris constructs have carried over GI extra 5997c478bd9Sstevel@tonic-gatewhich is the only difference. But that doesn't make a difference in the way 6007c478bd9Sstevel@tonic-gatewe handle data. 6017c478bd9Sstevel@tonic-gate 6027c478bd9Sstevel@tonic-gateThere are somethings to be noted at this point. If subsequently we encount- 6037c478bd9Sstevel@tonic-gateer another global item which has already been defined (say report size), 6047c478bd9Sstevel@tonic-gatethen we will go to the global list maintained in the 'hidparser_tok' st- 6057c478bd9Sstevel@tonic-gateructure and replace the already existant one (i.e report size(0x10) with 6067c478bd9Sstevel@tonic-gatethe new one ). 6077c478bd9Sstevel@tonic-gate 6087c478bd9Sstevel@tonic-gateFor end collection main item, we don't attach the global item list to the 6097c478bd9Sstevel@tonic-gateentity item structure. 6107c478bd9Sstevel@tonic-gate 6117c478bd9Sstevel@tonic-gateThe rest of the document is a continuation of where we left off the parsing. 6127c478bd9Sstevel@tonic-gateThe theory of operation is the same. 6137c478bd9Sstevel@tonic-gate 6147c478bd9Sstevel@tonic-gate___________________________________________________________________________ 6157c478bd9Sstevel@tonic-gate 6167c478bd9Sstevel@tonic-gate 6177c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x1f token = 0x84 6187c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x21 ch = 0x9 6197c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6207c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x33,index = 0x22 6217c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 6227c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x23 6237c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x21 token = 0x8 6247c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x23 ch = 0x9 6257c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6267c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x34,index = 0x24 6277c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 6287c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x25 6297c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x23 token = 0x8 6307c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x25 ch = 0x9 6317c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6327c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x35,index = 0x26 6337c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 6347c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x27 6357c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x25 token = 0x8 6367c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x27 ch = 0x75 6377c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6387c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x10,index = 0x28 6397c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x75 before translation 6407c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x29 6417c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x27 token = 0x74 6427c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x29 ch = 0x95 6437c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6447c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3,index = 0x2a 6457c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 6467c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x2b 6477c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x29 token = 0x94 6487c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x2b ch = 0x81 6497c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6507c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x2c 6517c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x81 before translation 6527c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x2d 6537c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x2b token = 0x80 6547c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x2d ch = 0xc0 6557c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 6567c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 6577c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x2e 6587c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0x80, curr_ei = 0xcab7e098 will be the 6597c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab84750, cache_ei being 0xcab84750 6607c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x2d token = 0xc0 6617c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x2e ch = 0xa1 6627c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6637c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x2f 6647c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 6657c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x30 6667c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab84750, curr_ei = 0xcab7af40 6677c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x2e token = 0xa0 6687c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x30 ch = 0x85 6697c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6707c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3,index = 0x31 6717c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 6727c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x32 6737c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7ad30, curr_ei = 0xcab7ad30 6747c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x30 token = 0x84 6757c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x32 ch = 0x5 6767c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6777c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x33 6787c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x5 before translation 6797c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x34 6807c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x32 token = 0x4 6817c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x34 ch = 0x9 6827c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6837c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0x35 6847c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 6857c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x36 6867c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x34 token = 0x8 6877c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x36 ch = 0x75 6887c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6897c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x10,index = 0x37 6907c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x75 before translation 6917c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x38 6927c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x36 token = 0x74 6937c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x38 ch = 0x95 6947c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 6957c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x39 6967c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 6977c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x3a 6987c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x38 token = 0x94 6997c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x3a ch = 0x81 7007c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7017c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x3b 7027c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x81 before translation 7037c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x3c 7047c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x3a token = 0x80 7057c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x3c ch = 0x5 7067c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7077c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x9,index = 0x3d 7087c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x5 before translation 7097c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x3e 7107c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0x80, curr_ei = 0xcab7ad60 will be the 7117c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7ad30, cache_ei being 0xcab7ad30 7127c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x3c token = 0x4 7137c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x3e ch = 0x19 7147c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7157c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x3f 7167c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x19 before translation 7177c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x40 7187c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x3e token = 0x18 7197c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x40 ch = 0x29 7207c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7217c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0xd,index = 0x41 7227c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x29 before translation 7237c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x42 7247c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x40 token = 0x28 7257c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x42 ch = 0x15 7267c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7277c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x0,index = 0x43 7287c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x15 before translation 7297c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x44 7307c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x42 token = 0x14 7317c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x44 ch = 0x25 7327c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7337c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x45 7347c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x25 before translation 7357c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x46 7367c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x44 token = 0x24 7377c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x46 ch = 0x35 7387c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7397c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x0,index = 0x47 7407c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x35 before translation 7417c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x48 7427c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x46 token = 0x34 7437c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x48 ch = 0x45 7447c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7457c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x49 7467c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x45 before translation 7477c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x4a 7487c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x48 token = 0x44 7497c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x4a ch = 0x75 7507c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7517c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x4b 7527c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x75 before translation 7537c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x4c 7547c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x4a token = 0x74 7557c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x4c ch = 0x95 7567c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7577c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0xd,index = 0x4d 7587c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 7597c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x4e 7607c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x4c token = 0x94 7617c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x4e ch = 0x81 7627c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7637c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x4f 7647c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x81 before translation 7657c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x50 7667c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x4e token = 0x80 7677c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x50 ch = 0x95 7687c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7697c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3,index = 0x51 7707c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 7717c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x52 7727c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0x80, curr_ei = 0xcab7ecc8 will be the 7737c478bd9Sstevel@tonic-gate right sibling of prev_ei = 0xcab7ad60, cache_ei being 0xc 7747c478bd9Sstevel@tonic-gateab7ad30 7757c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x50 token = 0x94 7767c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x52 ch = 0x81 7777c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7787c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x53 7797c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x81 before translation 7807c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x54 7817c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x52 token = 0x80 7827c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x54 ch = 0xc0 7837c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 7847c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 7857c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x55 7867c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0x80, curr_ei = 0xcab7ec98 will be the 7877c478bd9Sstevel@tonic-gate right sibling of prev_ei = 0xcab7ecc8, cache_ei being 0xc 7887c478bd9Sstevel@tonic-gateab7ad30 7897c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x54 token = 0xc0 7907c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x55 ch = 0x5 7917c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7927c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x56 7937c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x5 before translation 7947c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x57 7957c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7ad30, curr_ei = 0xcab7ad00 7967c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x55 token = 0x4 7977c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x57 ch = 0x9 7987c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 7997c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0x58 8007c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 8017c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x59 8027c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x57 token = 0x8 8037c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x59 ch = 0xa1 8047c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8057c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x5a 8067c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 8077c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x5b 8087c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x59 token = 0xa0 8097c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x5b ch = 0x15 8107c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8117c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x80,index = 0x5c 8127c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x15 before translation 8137c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x5d 8147c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7ea58, curr_ei = 0xcab7ea58 8157c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x5b token = 0x14 8167c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x5d ch = 0x25 8177c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8187c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x7f,index = 0x5e 8197c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x25 before translation 8207c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x5f 8217c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x5d token = 0x24 8227c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x5f ch = 0x75 8237c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8247c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x8,index = 0x60 8257c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x75 before translation 8267c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x61 8277c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x5f token = 0x74 8287c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x61 ch = 0x9 8297c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8307c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0x62 8317c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 8327c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x63 8337c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x61 token = 0x8 8347c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x63 ch = 0xa1 8357c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8367c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x64 8377c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 8387c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x65 8397c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x63 token = 0xa0 8407c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x65 ch = 0x85 8417c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8427c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x4,index = 0x66 8437c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 8447c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x67 8457c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7ea88, curr_ei = 0xcab7ea88 8467c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x65 token = 0x84 8477c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x67 ch = 0x9 8487c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8497c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0x68 8507c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 8517c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x69 8527c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x67 token = 0x8 8537c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x69 ch = 0x95 8547c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8557c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x4,index = 0x6a 8567c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 8577c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x6b 8587c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x69 token = 0x94 8597c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x6b ch = 0xb1 8607c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8617c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x6c 8627c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xb1 before translation 8637c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x6d 8647c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x6b token = 0xb0 8657c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x6d ch = 0xc0 8667c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 8677c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 8687c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x6e 8697c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0xb0, curr_ei = 0xcab7acd0 will be the 8707c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7ea88, cache_ei being 0xcab7ea88 8717c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x6d token = 0xc0 8727c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x6e ch = 0xa1 8737c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8747c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x6f 8757c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 8767c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x70 8777c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7ea88, curr_ei = 0xcab7ab20 8787c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x6e token = 0xa0 8797c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x70 ch = 0x85 8807c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8817c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x5,index = 0x71 8827c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 8837c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x72 8847c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7aaf0, curr_ei = 0xcab7aaf0 8857c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x70 token = 0x84 8867c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x72 ch = 0x9 8877c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8887c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0x73 8897c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 8907c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x74 8917c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x72 token = 0x8 8927c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x74 ch = 0x95 8937c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 8947c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x75 8957c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 8967c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x76 8977c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x74 token = 0x94 8987c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x76 ch = 0xb1 8997c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9007c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x77 9017c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xb1 before translation 9027c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x78 9037c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x76 token = 0xb0 9047c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x78 ch = 0xc0 9057c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 9067c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 9077c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x79 9087c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0xb0, curr_ei = 0xcab7aac0 will be the 9097c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7aaf0, cache_ei being 0xcab7aaf0 9107c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x78 token = 0xc0 9117c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x79 ch = 0xa1 9127c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9137c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x7a 9147c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 9157c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x7b 9167c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7aaf0, curr_ei = 0xcab7e548 9177c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x79 token = 0xa0 9187c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x7b ch = 0x85 9197c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9207c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x6,index = 0x7c 9217c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 9227c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x7d 9237c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7ea28, curr_ei = 0xcab7ea28 9247c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x7b token = 0x84 9257c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x7d ch = 0x9 9267c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9277c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0x7e 9287c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 9297c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x7f 9307c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x7d token = 0x8 9317c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x7f ch = 0x95 9327c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9337c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0x80 9347c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 9357c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x81 9367c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x7f token = 0x94 9377c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x81 ch = 0xb1 9387c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9397c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x82 9407c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xb1 before translation 9417c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x83 9427c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x81 token = 0xb0 9437c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x83 ch = 0xc0 9447c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 9457c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 9467c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x84 9477c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0xb0, curr_ei = 0xcab7e608 will be the 9487c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7ea28, cache_ei being 0xcab7ea28 9497c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x83 token = 0xc0 9507c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x84 ch = 0xa1 9517c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9527c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x85 9537c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 9547c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x86 9557c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7ea28, curr_ei = 0xcab7e5d8 9567c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x84 token = 0xa0 9577c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x86 ch = 0x85 9587c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9597c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x7,index = 0x87 9607c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 9617c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x88 9627c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7e5a8, curr_ei = 0xcab7e5a8 9637c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x86 token = 0x84 9647c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x88 ch = 0x9 9657c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9667c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0x89 9677c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 9687c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x8a 9697c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x88 token = 0x8 9707c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x8a ch = 0x95 9717c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9727c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x10,index = 0x8b 9737c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 9747c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x8c 9757c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x8a token = 0x94 9767c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x8c ch = 0xb1 9777c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9787c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x8d 9797c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xb1 before translation 9807c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x8e 9817c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x8c token = 0xb0 9827c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x8e ch = 0xc0 9837c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 9847c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 9857c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x8f 9867c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0xb0, curr_ei = 0xcab7e578 will be the 9877c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7e5a8, cache_ei being 0xcab7e5a8 9887c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x8e token = 0xc0 9897c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x8f ch = 0xa1 9907c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9917c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x90 9927c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 9937c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x91 9947c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7e5a8, curr_ei = 0xcab7af10 9957c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x8f token = 0xa0 9967c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x91 ch = 0x85 9977c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 9987c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x8,index = 0x92 9997c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 10007c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x93 10017c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7aa60, curr_ei = 0xcab7aa60 10027c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x91 token = 0x84 10037c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x93 ch = 0x9 10047c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10057c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0x94 10067c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 10077c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x95 10087c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x93 token = 0x8 10097c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x95 ch = 0x95 10107c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10117c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x10,index = 0x96 10127c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 10137c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x97 10147c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x95 token = 0x94 10157c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x97 ch = 0xb1 10167c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10177c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x98 10187c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xb1 before translation 10197c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x99 10207c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x97 token = 0xb0 10217c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x99 ch = 0xc0 10227c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 10237c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 10247c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x9a 10257c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0xb0, curr_ei = 0xcab7aa30 will be the 10267c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7aa60, cache_ei being 0xcab7aa60 10277c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x99 token = 0xc0 10287c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x9a ch = 0xa1 10297c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10307c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0x9b 10317c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 10327c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x9c 10337c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7aa60, curr_ei = 0xcab7aa00 10347c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0x9a token = 0xa0 10357c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x9c ch = 0x85 10367c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10377c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x9,index = 0x9d 10387c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 10397c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0x9e 10407c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7a9d0, curr_ei = 0xcab7a9d0 10417c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0x9c token = 0x84 10427c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0x9e ch = 0x9 10437c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10447c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0x9f 10457c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 10467c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xa0 10477c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0x9e token = 0x8 10487c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xa0 ch = 0x95 10497c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10507c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0xc,index = 0xa1 10517c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 10527c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xa2 10537c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xa0 token = 0x94 10547c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xa2 ch = 0xb1 10557c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10567c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0xa3 10577c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xb1 before translation 10587c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xa4 10597c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xa2 token = 0xb0 10607c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xa4 ch = 0xc0 10617c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 10627c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 10637c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xa5 10647c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0xb0, curr_ei = 0xcab7a9a0 will be the 10657c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7a9d0, cache_ei being 0xcab7a9d0 10667c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xa4 token = 0xc0 10677c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xa5 ch = 0xa1 10687c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10697c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0xa6 10707c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 10717c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xa7 10727c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7a9d0, curr_ei = 0xcab7a970 10737c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xa5 token = 0xa0 10747c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xa7 ch = 0x85 10757c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10767c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0xa,index = 0xa8 10777c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 10787c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xa9 10797c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7a940, curr_ei = 0xcab7a940 10807c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xa7 token = 0x84 10817c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xa9 ch = 0x9 10827c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10837c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0xaa 10847c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 10857c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xab 10867c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0xa9 token = 0x8 10877c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xab ch = 0x95 10887c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10897c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0xac 10907c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 10917c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xad 10927c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xab token = 0x94 10937c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xad ch = 0xb1 10947c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 10957c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0xae 10967c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xb1 before translation 10977c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xaf 10987c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xad token = 0xb0 10997c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xaf ch = 0xc0 11007c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 11017c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 11027c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xb0 11037c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0xb0, curr_ei = 0xcab7a910 will be the 11047c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7a940, cache_ei being 0xcab7a940 11057c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xaf token = 0xc0 11067c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xb0 ch = 0xa1 11077c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11087c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0xb1 11097c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 11107c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xb2 11117c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7a940, curr_ei = 0xcab7a8e0 11127c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xb0 token = 0xa0 11137c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xb2 ch = 0x85 11147c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11157c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0xb,index = 0xb3 11167c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 11177c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xb4 11187c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7a8b0, curr_ei = 0xcab7a8b0 11197c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xb2 token = 0x84 11207c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xb4 ch = 0x9 11217c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11227c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0xb5 11237c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 11247c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xb6 11257c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0xb4 token = 0x8 11267c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xb6 ch = 0x95 11277c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11287c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0xb7 11297c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 11307c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xb8 11317c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xb6 token = 0x94 11327c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xb8 ch = 0xb1 11337c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11347c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0xb9 11357c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xb1 before translation 11367c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xba 11377c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xb8 token = 0xb0 11387c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xba ch = 0xc0 11397c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 11407c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 11417c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xbb 11427c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0xb0, curr_ei = 0xcab7a880 will be the 11437c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7a8b0, cache_ei being 0xcab7a8b0 11447c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xba token = 0xc0 11457c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xbb ch = 0xa1 11467c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11477c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0xbc 11487c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 11497c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xbd 11507c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7a8b0, curr_ei = 0xcab7a850 11517c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xbb token = 0xa0 11527c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xbd ch = 0x85 11537c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11547c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0xc,index = 0xbe 11557c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 11567c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xbf 11577c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7a820, curr_ei = 0xcab7a820 11587c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xbd token = 0x84 11597c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xbf ch = 0x9 11607c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11617c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0xc0 11627c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 11637c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xc1 11647c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0xbf token = 0x8 11657c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xc1 ch = 0x95 11667c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11677c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x1,index = 0xc2 11687c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 11697c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xc3 11707c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xc1 token = 0x94 11717c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xc3 ch = 0xb1 11727c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11737c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0xc4 11747c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xb1 before translation 11757c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xc5 11767c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xc3 token = 0xb0 11777c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xc5 ch = 0xc0 11787c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 11797c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 11807c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xc6 11817c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0xb0, curr_ei = 0xcab7a7f0 will be the 11827c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7a820, cache_ei being 0xcab7a820 11837c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xc5 token = 0xc0 11847c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xc6 ch = 0xa1 11857c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11867c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0xc7 11877c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xa1 before translation 11887c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xc8 11897c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7a820, curr_ei = 0xcab7a7c0 11907c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xc6 token = 0xa0 11917c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xc8 ch = 0x85 11927c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 11937c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0xd,index = 0xc9 11947c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x85 before translation 11957c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xca 11967c478bd9Sstevel@tonic-gatehidparser: Start Collection:cache_ei = 0xcab7a790, curr_ei = 0xcab7a790 11977c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xc8 token = 0x84 11987c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xca ch = 0x9 11997c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 12007c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x3a,index = 0xcb 12017c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x9 before translation 12027c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xcc 12037c478bd9Sstevel@tonic-gatehidparser: hidparser_LocalItem:index = 0xca token = 0x8 12047c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xcc ch = 0x95 12057c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 12067c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0xcd 12077c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0x95 before translation 12087c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xce 12097c478bd9Sstevel@tonic-gatehidparser: hidparser_GlobalItem:index = 0xcc token = 0x94 12107c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xce ch = 0xb1 12117c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 1 12127c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_text[0] = 0x2,index = 0xcf 12137c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xb1 before translation 12147c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xd0 12157c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xce token = 0xb0 12167c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xd0 ch = 0xc0 12177c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 12187c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 12197c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xd1 12207c478bd9Sstevel@tonic-gatehidparser: Main Item: token = 0xb0, curr_ei = 0xcab7a760 will be the 12217c478bd9Sstevel@tonic-gate child of prev_ei = 0xcab7a790, cache_ei being 0xcab7a790 12227c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xd0 token = 0xc0 12237c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xd1 ch = 0xc0 12247c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 12257c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 12267c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xd2 12277c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7a790, curr_ei = 0xcab7a730 12287c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xd1 token = 0xc0 12297c478bd9Sstevel@tonic-gatehidparser: scanner: index = 0xd2 ch = 0xc0 12307c478bd9Sstevel@tonic-gatehidparser: scanner: parsed_length = 0 12317c478bd9Sstevel@tonic-gatehidparser: scanner: lexical analyzer found 0xc0 before translation 12327c478bd9Sstevel@tonic-gatehidparser: scanner: aindex = 0xd3 12337c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab7ea58, curr_ei = 0xcab7a700 12347c478bd9Sstevel@tonic-gatehidparser: hidparser_MainItem:index = 0xd2 token = 0xc0 12357c478bd9Sstevel@tonic-gatehidparser: scanner: eindex = 0xd3 12367c478bd9Sstevel@tonic-gatehidparser: End Collection: cache_ei = 0xcab8d220, curr_ei = 0xcab7a6d0 12377c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 12387c478bd9Sstevel@tonic-gatehidparser: Usage(0x8) 12397c478bd9Sstevel@tonic-gatehidparser: Collection(0x1) 12407c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 12417c478bd9Sstevel@tonic-gatehidparser: Collection(0x0) 12427c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 12437c478bd9Sstevel@tonic-gatehidparser: Report Id(0x1) 12447c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x8000) 12457c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7FFF) 12467c478bd9Sstevel@tonic-gatehidparser: Report Size(0x10) 12477c478bd9Sstevel@tonic-gatehidparser: Report Count(0x3) 12487c478bd9Sstevel@tonic-gatehidparser: Usage(0x30) 12497c478bd9Sstevel@tonic-gatehidparser: Usage(0x31) 12507c478bd9Sstevel@tonic-gatehidparser: Usage(0x32) 12517c478bd9Sstevel@tonic-gatehidparser: Input(0x2) 12527c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 12537c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 12547c478bd9Sstevel@tonic-gatehidparser: Report Id(0x1) 12557c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x8000) 12567c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7FFF) 12577c478bd9Sstevel@tonic-gatehidparser: Report Size(0x10) 12587c478bd9Sstevel@tonic-gatehidparser: Report Count(0x3) 12597c478bd9Sstevel@tonic-gatehidparser: Collection(0x0) 12607c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 12617c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x8000) 12627c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7FFF) 12637c478bd9Sstevel@tonic-gatehidparser: Report Id(0x2) 12647c478bd9Sstevel@tonic-gatehidparser: Report Size(0x10) 12657c478bd9Sstevel@tonic-gatehidparser: Report Count(0x3) 12667c478bd9Sstevel@tonic-gatehidparser: Usage(0x33) 12677c478bd9Sstevel@tonic-gatehidparser: Usage(0x34) 12687c478bd9Sstevel@tonic-gatehidparser: Usage(0x35) 12697c478bd9Sstevel@tonic-gatehidparser: Input(0x2) 12707c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 12717c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 12727c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x8000) 12737c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7FFF) 12747c478bd9Sstevel@tonic-gatehidparser: Report Id(0x2) 12757c478bd9Sstevel@tonic-gatehidparser: Report Size(0x10) 12767c478bd9Sstevel@tonic-gatehidparser: Report Count(0x3) 12777c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 12787c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x8000) 12797c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7FFF) 12807c478bd9Sstevel@tonic-gatehidparser: Report Id(0x3) 12817c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 12827c478bd9Sstevel@tonic-gatehidparser: Report Size(0x10) 12837c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 12847c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 12857c478bd9Sstevel@tonic-gatehidparser: Input(0x2) 12867c478bd9Sstevel@tonic-gatehidparser: Report Id(0x3) 12877c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x9) 12887c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x0) 12897c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x1) 12907c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 12917c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 12927c478bd9Sstevel@tonic-gatehidparser: Report Size(0x1) 12937c478bd9Sstevel@tonic-gatehidparser: Report Count(0xD) 12947c478bd9Sstevel@tonic-gatehidparser: Usage Minimum(0x1) 12957c478bd9Sstevel@tonic-gatehidparser: Usage Maximum(0xD) 12967c478bd9Sstevel@tonic-gatehidparser: Input(0x2) 12977c478bd9Sstevel@tonic-gatehidparser: Report Id(0x3) 12987c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x9) 12997c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x0) 13007c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x1) 13017c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13027c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 13037c478bd9Sstevel@tonic-gatehidparser: Report Size(0x1) 13047c478bd9Sstevel@tonic-gatehidparser: Report Count(0x3) 13057c478bd9Sstevel@tonic-gatehidparser: Input(0x1) 13067c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 13077c478bd9Sstevel@tonic-gatehidparser: Report Id(0x3) 13087c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x0) 13097c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x1) 13107c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13117c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 13127c478bd9Sstevel@tonic-gatehidparser: Report Size(0x1) 13137c478bd9Sstevel@tonic-gatehidparser: Report Count(0x3) 13147c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 13157c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 13167c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 13177c478bd9Sstevel@tonic-gatehidparser: Report Id(0x3) 13187c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13197c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 13207c478bd9Sstevel@tonic-gatehidparser: Report Count(0x3) 13217c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 13227c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 13237c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 13247c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 13257c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 13267c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 13277c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13287c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 13297c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 13307c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 13317c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 13327c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 13337c478bd9Sstevel@tonic-gatehidparser: Report Id(0x4) 13347c478bd9Sstevel@tonic-gatehidparser: Report Count(0x4) 13357c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 13367c478bd9Sstevel@tonic-gatehidparser: Feature(0x2) 13377c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 13387c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13397c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 13407c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 13417c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 13427c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 13437c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 13447c478bd9Sstevel@tonic-gatehidparser: Report Id(0x4) 13457c478bd9Sstevel@tonic-gatehidparser: Report Count(0x4) 13467c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 13477c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13487c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 13497c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 13507c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 13517c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 13527c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 13537c478bd9Sstevel@tonic-gatehidparser: Report Id(0x5) 13547c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 13557c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 13567c478bd9Sstevel@tonic-gatehidparser: Feature(0x2) 13577c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 13587c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13597c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 13607c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 13617c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 13627c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 13637c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 13647c478bd9Sstevel@tonic-gatehidparser: Report Id(0x5) 13657c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 13667c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 13677c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13687c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 13697c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 13707c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 13717c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 13727c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 13737c478bd9Sstevel@tonic-gatehidparser: Report Id(0x6) 13747c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 13757c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 13767c478bd9Sstevel@tonic-gatehidparser: Feature(0x2) 13777c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 13787c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13797c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 13807c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 13817c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 13827c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 13837c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 13847c478bd9Sstevel@tonic-gatehidparser: Report Id(0x6) 13857c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 13867c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 13877c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13887c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 13897c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 13907c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 13917c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 13927c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 13937c478bd9Sstevel@tonic-gatehidparser: Report Id(0x7) 13947c478bd9Sstevel@tonic-gatehidparser: Report Count(0x10) 13957c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 13967c478bd9Sstevel@tonic-gatehidparser: Feature(0x2) 13977c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 13987c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 13997c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 14007c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 14017c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 14027c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 14037c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 14047c478bd9Sstevel@tonic-gatehidparser: Report Id(0x7) 14057c478bd9Sstevel@tonic-gatehidparser: Report Count(0x10) 14067c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 14077c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 14087c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 14097c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 14107c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 14117c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 14127c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 14137c478bd9Sstevel@tonic-gatehidparser: Report Id(0x8) 14147c478bd9Sstevel@tonic-gatehidparser: Report Count(0x10) 14157c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 14167c478bd9Sstevel@tonic-gatehidparser: Feature(0x2) 14177c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 14187c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 14197c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 14207c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 14217c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 14227c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 14237c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 14247c478bd9Sstevel@tonic-gatehidparser: Report Id(0x8) 14257c478bd9Sstevel@tonic-gatehidparser: Report Count(0x10) 14267c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 14277c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 14287c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 14297c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 14307c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 14317c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 14327c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 14337c478bd9Sstevel@tonic-gatehidparser: Report Id(0x9) 14347c478bd9Sstevel@tonic-gatehidparser: Report Count(0xC) 14357c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 14367c478bd9Sstevel@tonic-gatehidparser: Feature(0x2) 14377c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 14387c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 14397c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 14407c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 14417c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 14427c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 14437c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 14447c478bd9Sstevel@tonic-gatehidparser: Report Id(0x9) 14457c478bd9Sstevel@tonic-gatehidparser: Report Count(0xC) 14467c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 14477c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 14487c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 14497c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 14507c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 14517c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 14527c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 14537c478bd9Sstevel@tonic-gatehidparser: Report Id(0xA) 14547c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 14557c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 14567c478bd9Sstevel@tonic-gatehidparser: Feature(0x2) 14577c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 14587c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 14597c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 14607c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 14617c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 14627c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 14637c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 14647c478bd9Sstevel@tonic-gatehidparser: Report Id(0xA) 14657c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 14667c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 14677c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 14687c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 14697c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 14707c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 14717c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 14727c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 14737c478bd9Sstevel@tonic-gatehidparser: Report Id(0xB) 14747c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 14757c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 14767c478bd9Sstevel@tonic-gatehidparser: Feature(0x2) 14777c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 14787c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 14797c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 14807c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 14817c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 14827c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 14837c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 14847c478bd9Sstevel@tonic-gatehidparser: Report Id(0xB) 14857c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 14867c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 14877c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 14887c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 14897c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 14907c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 14917c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 14927c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 14937c478bd9Sstevel@tonic-gatehidparser: Report Id(0xC) 14947c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 14957c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 14967c478bd9Sstevel@tonic-gatehidparser: Feature(0x2) 14977c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 14987c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 14997c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 15007c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 15017c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 15027c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 15037c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 15047c478bd9Sstevel@tonic-gatehidparser: Report Id(0xC) 15057c478bd9Sstevel@tonic-gatehidparser: Report Count(0x1) 15067c478bd9Sstevel@tonic-gatehidparser: Collection(0x2) 15077c478bd9Sstevel@tonic-gatehidparser: Physical Minimum(0x0) 15087c478bd9Sstevel@tonic-gatehidparser: Physical Maximum(0x1) 15097c478bd9Sstevel@tonic-gatehidparser: Usage Page(0x1) 15107c478bd9Sstevel@tonic-gatehidparser: Logical Minimum(0x80) 15117c478bd9Sstevel@tonic-gatehidparser: Logical Maximum(0x7F) 15127c478bd9Sstevel@tonic-gatehidparser: Report Size(0x8) 15137c478bd9Sstevel@tonic-gatehidparser: Report Id(0xD) 15147c478bd9Sstevel@tonic-gatehidparser: Report Count(0x2) 15157c478bd9Sstevel@tonic-gatehidparser: Usage(0x3A) 15167c478bd9Sstevel@tonic-gatehidparser: Feature(0x2) 15177c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 15187c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 15197c478bd9Sstevel@tonic-gatehidparser: End Collection(0x0) 15207c478bd9Sstevel@tonic-gate 15217c478bd9Sstevel@tonic-gateThe actual tree is 15227c478bd9Sstevel@tonic-gate 15237c478bd9Sstevel@tonic-gate 15247c478bd9Sstevel@tonic-gateunsigned char hid_report_desc[] = { 15257c478bd9Sstevel@tonic-gate 0x5, 0x1, /* Usage Page (Generic Desktop) */ 15267c478bd9Sstevel@tonic-gate 0x9, 0x8, /* Usage (0x8:Multi-axis controller) */ 15277c478bd9Sstevel@tonic-gate 0xa1, 0x1, /* Collection (Application) */ 15287c478bd9Sstevel@tonic-gate 0xa1, 0, /* Collection (Physical) */ 15297c478bd9Sstevel@tonic-gate 0x85, 0x1, /* Report ID (0x1) */ 15307c478bd9Sstevel@tonic-gate 0x16, 0, 0x80, /* Logical Minimum (0x8000) */ 15317c478bd9Sstevel@tonic-gate 0x26, 0xff, 0x7f, /* Logical Maximum (0x7fff) */ 15327c478bd9Sstevel@tonic-gate 0x9, 0x30, /* Usage (0x30:X) */ 15337c478bd9Sstevel@tonic-gate 0x9, 0x31, /* Usage (0x31:Y) */ 15347c478bd9Sstevel@tonic-gate 0x9, 0x32, /* Usage (0x32:Z) */ 15357c478bd9Sstevel@tonic-gate 0x75, 0x10, /* Report Size (0x10) */ 15367c478bd9Sstevel@tonic-gate 0x95, 0x3, /* Report Count (0x3) */ 15377c478bd9Sstevel@tonic-gate 0x81, 0x2, /* Input (Data, Variable, Absolute) */ 15387c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 15397c478bd9Sstevel@tonic-gate 0xa1, 0, /* Collection (Physical) */ 15407c478bd9Sstevel@tonic-gate 0x85, 0x2, /* Report ID (0x2) */ 15417c478bd9Sstevel@tonic-gate 0x9, 0x33, /* Usage (0x33:Rx) */ 15427c478bd9Sstevel@tonic-gate 0x9, 0x34, /* Usage (0x34:Ry) */ 15437c478bd9Sstevel@tonic-gate 0x9, 0x35, /* Usage (0x35:Rz) */ 15447c478bd9Sstevel@tonic-gate 0x75, 0x10, /* Report Size (0x10) */ 15457c478bd9Sstevel@tonic-gate 0x95, 0x3, /* Report Count (0x3) */ 15467c478bd9Sstevel@tonic-gate 0x81, 0x2, /* Input (Data, Variable, Absolute) */ 15477c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 15487c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 15497c478bd9Sstevel@tonic-gate 0x85, 0x3, /* Report ID (0x3) */ 15507c478bd9Sstevel@tonic-gate 0x5, 0x1, /* Usage Page (Generic Desktop) */ 15517c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 15527c478bd9Sstevel@tonic-gate 0x75, 0x10, /* Report Size (0x10) */ 15537c478bd9Sstevel@tonic-gate 0x95, 0x1, /* Report Count (0x1) */ 15547c478bd9Sstevel@tonic-gate 0x81, 0x2, /* Input (Data, Variable, Absolute) */ 15557c478bd9Sstevel@tonic-gate 0x5, 0x9, /* Usage Page (Button) */ 15567c478bd9Sstevel@tonic-gate 0x19, 0x1, /* Usage Minimum (0x1) */ 15577c478bd9Sstevel@tonic-gate 0x29, 0xd, /* Usage Maximum (0xd) */ 15587c478bd9Sstevel@tonic-gate 0x15, 0, /* Logical Minimum (0) */ 15597c478bd9Sstevel@tonic-gate 0x25, 0x1, /* Logical Maximum (0x1) */ 15607c478bd9Sstevel@tonic-gate 0x35, 0, /* Physical Minimum (0) */ 15617c478bd9Sstevel@tonic-gate 0x45, 0x1, /* Physical Maximum (0x1) */ 15627c478bd9Sstevel@tonic-gate 0x75, 0x1, /* Report Size (0x1) */ 15637c478bd9Sstevel@tonic-gate 0x95, 0xd, /* Report Count (0xd) */ 15647c478bd9Sstevel@tonic-gate 0x81, 0x2, /* Input (Data, Variable, Absolute) */ 15657c478bd9Sstevel@tonic-gate 0x95, 0x3, /* Report Count (0x3) */ 15667c478bd9Sstevel@tonic-gate 0x81, 0x1, /* Input (Constant, Array, Absolute) */ 15677c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 15687c478bd9Sstevel@tonic-gate 0x5, 0x1, /* Usage Page (Generic Desktop) */ 15697c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 15707c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 15717c478bd9Sstevel@tonic-gate 0x15, 0x80, /* Logical Minimum (0x80) */ 15727c478bd9Sstevel@tonic-gate 0x25, 0x7f, /* Logical Maximum (0x7f) */ 15737c478bd9Sstevel@tonic-gate 0x75, 0x8, /* Report Size (0x8) */ 15747c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 15757c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 15767c478bd9Sstevel@tonic-gate 0x85, 0x4, /* Report ID (0x4) */ 15777c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 15787c478bd9Sstevel@tonic-gate 0x95, 0x4, /* Report Count (0x4) */ 15797c478bd9Sstevel@tonic-gate 0xb1, 0x2, /* Feature (Data, Variable, Absolute) */ 15807c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 15817c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 15827c478bd9Sstevel@tonic-gate 0x85, 0x5, /* Report ID (0x5) */ 15837c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a:Counted Buffer) */ 15847c478bd9Sstevel@tonic-gate 0x95, 0x1, /* Report Count (0x1) */ 15857c478bd9Sstevel@tonic-gate 0xb1, 0x2, /* Feature (Data, Variable, Absolute) */ 15867c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 15877c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 15887c478bd9Sstevel@tonic-gate 0x85, 0x6, /* Report ID (0x6) */ 15897c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 15907c478bd9Sstevel@tonic-gate 0x95, 0x1, /* Report Count (0x1) */ 15917c478bd9Sstevel@tonic-gate 0xb1, 0x2, /* Feature (Data, Variable, Absolute) */ 15927c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 15937c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 15947c478bd9Sstevel@tonic-gate 0x85, 0x7, /* Report ID (0x7) */ 15957c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 15967c478bd9Sstevel@tonic-gate 0x95, 0x10, /* Report Count (0x10) */ 15977c478bd9Sstevel@tonic-gate 0xb1, 0x2, /* Feature (Data, Variable, Absolute) */ 15987c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 15997c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 16007c478bd9Sstevel@tonic-gate 0x85, 0x8, /* Report ID (0x8) */ 16017c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 16027c478bd9Sstevel@tonic-gate 0x95, 0x10, /* Report Count (0x10) */ 16037c478bd9Sstevel@tonic-gate 0xb1, 0x2, /* Feature (Data, Variable, Absolute) */ 16047c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 16057c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 16067c478bd9Sstevel@tonic-gate 0x85, 0x9, /* Report ID (0x9) */ 16077c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 16087c478bd9Sstevel@tonic-gate 0x95, 0xc, /* Report Count (0xc) */ 16097c478bd9Sstevel@tonic-gate 0xb1, 0x2, /* Feature (Data, Variable, Absolute) */ 16107c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 16117c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 16127c478bd9Sstevel@tonic-gate 0x85, 0xa, /* Report ID (0xa) */ 16137c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 16147c478bd9Sstevel@tonic-gate 0x95, 0x1, /* Report Count (0x1) */ 16157c478bd9Sstevel@tonic-gate 0xb1, 0x2, /* Feature (Data, Variable, Absolute) */ 16167c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 16177c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 16187c478bd9Sstevel@tonic-gate 0x85, 0xb, /* Report ID (0xb) */ 16197c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 16207c478bd9Sstevel@tonic-gate 0x95, 0x1, /* Report Count (0x1) */ 16217c478bd9Sstevel@tonic-gate 0xb1, 0x2, /* Feature (Data, Variable, Absolute) */ 16227c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 16237c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 16247c478bd9Sstevel@tonic-gate 0x85, 0xc, /* Report ID (0xc) */ 16257c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 16267c478bd9Sstevel@tonic-gate 0x95, 0x1, /* Report Count (0x1) */ 16277c478bd9Sstevel@tonic-gate 0xb1, 0x2, /* Feature (Data, Variable, Absolute) */ 16287c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 16297c478bd9Sstevel@tonic-gate 0xa1, 0x2, /* Collection (Logical) */ 16307c478bd9Sstevel@tonic-gate 0x85, 0xd, /* Report ID (0xd) */ 16317c478bd9Sstevel@tonic-gate 0x9, 0x3a, /* Usage (0x3a: Counted Buffer) */ 16327c478bd9Sstevel@tonic-gate 0x95, 0x2, /* Report Count (0x2) */ 16337c478bd9Sstevel@tonic-gate 0xb1, 0x2, /* Feature (Data, Variable, Absolute) */ 16347c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 16357c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 16367c478bd9Sstevel@tonic-gate 0xc0, /* End Collection */ 16377c478bd9Sstevel@tonic-gate}; 16387c478bd9Sstevel@tonic-gate 16397c478bd9Sstevel@tonic-gate______________________________________________________________________________ 1640