Line No. | Rev | Author | Line |
---|---|---|---|
1 | 32 | kaklik | /****************************************************************************** |
2 | |||
3 | USB Host Human Interface Device Parser Header File |
||
4 | |||
5 | Summary: |
||
6 | This is the header file for a USB Embedded Host that is Human Interface |
||
7 | Device Class . This header file contains HID parser related informaton. |
||
8 | |||
9 | Description: |
||
10 | This is the header file for a USB Embedded Host that is Human Interface |
||
11 | Device Class . |
||
12 | |||
13 | This file should be included with usb_host.h to provide the USB hardware |
||
14 | interface. It must be included after the application-specific usb_config.h |
||
15 | file and after the USB Embedded Host header file usb_host.h, as definitions |
||
16 | in those files are required for proper compilation. This file contains HID |
||
17 | parser related definitions. |
||
18 | |||
19 | Acronyms/abbreviations used by this class: |
||
20 | * HID - Human Interface Device |
||
21 | |||
22 | Every HID class device identifies itself with a report descriptor. A Report |
||
23 | descriptor describes each piece of data that the device generates and |
||
24 | what the data is actually measuring. A parser is needed to decode the |
||
25 | content of report descriptor. |
||
26 | |||
27 | Report descriptors are composed of pieces of information. Each piece of |
||
28 | information is called an Item. |
||
29 | HID Item Header |
||
30 | |||
31 | --------------------------------------------------------- |
||
32 | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
||
33 | | Tag | Type | Size | |
||
34 | --------------------------------------------------------- |
||
35 | |||
36 | The HID class driver contains a parser used to analyze items found in the Report |
||
37 | descriptor. The parser extracts information from the descriptor in a linear fashion. |
||
38 | The parser collects the state of each known item as it walks through the |
||
39 | descriptor, and stores them in an item state table. |
||
40 | |||
41 | Any HID device to be compliant must have a valid report descriptor. |
||
42 | Micochip HID host stack comes with a HID parser that does basic sanity check |
||
43 | and provides interface functions to understand the reports transmitted |
||
44 | from the device. Refer HID firmware specifications to understand parser. |
||
45 | This file contains data structures that stores parsed information in more |
||
46 | accessible format. |
||
47 | |||
48 | |||
49 | *******************************************************************************/ |
||
50 | //DOM-IGNORE-BEGIN |
||
51 | /******************************************************************************* |
||
52 | |||
53 | * FileName: usb_host_hid_parser.h |
||
54 | * Dependencies: None |
||
55 | * Processor: PIC24/dsPIC30/dsPIC33/PIC32MX |
||
56 | * Compiler: C30 v2.01/C32 v0.00.18 |
||
57 | * Company: Microchip Technology, Inc. |
||
58 | |||
59 | Software License Agreement |
||
60 | |||
61 | The software supplied herewith by Microchip Technology Incorporated |
||
62 | (the Company) for its PICmicro® Microcontroller is intended and |
||
63 | supplied to you, the Companys customer, for use solely and |
||
64 | exclusively on Microchip PICmicro Microcontroller products. The |
||
65 | software is owned by the Company and/or its supplier, and is |
||
66 | protected under applicable copyright laws. All rights are reserved. |
||
67 | Any use in violation of the foregoing restrictions may subject the |
||
68 | user to criminal sanctions under applicable laws, as well as to |
||
69 | civil liability for the breach of the terms and conditions of this |
||
70 | license. |
||
71 | |||
72 | THIS SOFTWARE IS PROVIDED IN AN AS IS CONDITION. NO WARRANTIES, |
||
73 | WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED |
||
74 | TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
||
75 | PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, |
||
76 | IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR |
||
77 | CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. |
||
78 | |||
79 | Change History: |
||
80 | Rev Description |
||
81 | ----- -------------------------------- |
||
82 | 2.6a- No change |
||
83 | 2.7a |
||
84 | *******************************************************************************/ |
||
85 | //DOM-IGNORE-END |
||
86 | |||
87 | //DOM-IGNORE-BEGIN |
||
88 | #ifndef _USB_HOST_HID_PARSER_H_ /* usb_host_hid_parser.h */ |
||
89 | #define _USB_HOST_HID_PARSER_H_ |
||
90 | //DOM-IGNORE-END |
||
91 | |||
92 | |||
93 | #define HIDItem_SizeMask 0x03 // Mask for Size bitfield in Item header |
||
94 | #define HIDItem_TagMask 0xF0 // Mask for Tag bitfield in Item header |
||
95 | #define HIDItem_TagShift 0x04 // Shift Value for Tag bitfield in Item header |
||
96 | #define HIDItem_TypeMask 0xC // Mask for Type bitfield in Item header |
||
97 | #define HIDItem_TypeShift 0x02 // Shift Value for Tag bitfield |
||
98 | |||
99 | //------------------------------------------------------------------------------ |
||
100 | // |
||
101 | // HID Item Type Definitions |
||
102 | // |
||
103 | //------------------------------------------------------------------------------ |
||
104 | |||
105 | #define HIDType_Main 0 // Main Item value |
||
106 | #define HIDType_Global 1 // Global Item value |
||
107 | #define HIDType_Local 2 // Local Item value |
||
108 | #define HIDType_Long 3 // Long Item value |
||
109 | |||
110 | //------------------------------------------------------------------------------ |
||
111 | // |
||
112 | // HID Item Tag Definitions - Main Items |
||
113 | // |
||
114 | //------------------------------------------------------------------------------ |
||
115 | |||
116 | #define HIDTag_Input 0x08 // Input Tag value |
||
117 | #define HIDTag_Output 0x09 // Output Tag value |
||
118 | #define HIDTag_Collection 0x0A // Collection Tag value |
||
119 | #define HIDTag_Feature 0x0B // Feature Tag value |
||
120 | #define HIDTag_EndCollection 0x0C // End of Collection Tag value |
||
121 | |||
122 | //------------------------------------------------------------------------------ |
||
123 | // |
||
124 | // HID Item Tag Definitions - Globals |
||
125 | // |
||
126 | //------------------------------------------------------------------------------ |
||
127 | #define HIDTag_UsagePage 0x00 // UsagePage Tag value |
||
128 | #define HIDTag_LogicalMinimum 0x01 // Logical Minimum Tag value |
||
129 | #define HIDTag_LogicalMaximum 0x02 // Logical Maximum Tag value |
||
130 | #define HIDTag_PhysicalMinimum 0x03 // Physical Minimum Tag value |
||
131 | #define HIDTag_PhysicalMaximum 0x04 // Physical Maximum Tag value |
||
132 | #define HIDTag_UnitExponent 0x05 // Unit Exponent Tag value |
||
133 | #define HIDTag_Unit 0x06 // Unit Tag value |
||
134 | #define HIDTag_ReportSize 0x07 // Report Size Tag value |
||
135 | #define HIDTag_ReportID 0x08 // Report ID Tag value |
||
136 | #define HIDTag_ReportCount 0x09 // ReportCount Tag value |
||
137 | #define HIDTag_Push 0x0A // Push Tag value |
||
138 | #define HIDTag_Pop 0x0B // Pop Tag value |
||
139 | |||
140 | //------------------------------------------------------------------------------ |
||
141 | // |
||
142 | // HID Item Tag Definitions - Locals |
||
143 | // |
||
144 | //------------------------------------------------------------------------------ |
||
145 | |||
146 | #define HIDTag_Usage 0x00 // Usage Tag value |
||
147 | #define HIDTag_UsageMinimum 0x01 // Usage Minimum Tag value |
||
148 | #define HIDTag_UsageMaximum 0x02 // Usage Maximum Tag value |
||
149 | #define HIDTag_DesignatorIndex 0x03 // Designator Index Tag value |
||
150 | #define HIDTag_DesignatorMinimum 0x04 // Designator Minimum Tag value |
||
151 | #define HIDTag_DesignatorMaximum 0x05 // Designator Maximum Tag value |
||
152 | #define HIDTag_StringIndex 0x07 // String Index Tag value |
||
153 | #define HIDTag_StringMinimum 0x08 // String Minimum Tag value |
||
154 | #define HIDTag_StringMaximum 0x09 // String Maximum Tag value |
||
155 | #define HIDTag_SetDelimiter 0x0A // Set Delimiter Tag value |
||
156 | |||
157 | //------------------------------------------------------------------------------ |
||
158 | // |
||
159 | // HID Main Item Header Bit Definitions |
||
160 | // |
||
161 | //------------------------------------------------------------------------------ |
||
162 | |||
163 | #define HIDData_BufferedBytes 0x100 // HID data bytes are bufferred |
||
164 | #define HIDData_VolatileBit 0x80 // Volatile bit position |
||
165 | #define HIDData_Volatile 0x80 // HID data is voaltile |
||
166 | #define HIDData_NullStateBit 0x40 // NULL state bit position |
||
167 | #define HIDData_NullState 0x40 // NULL state defined |
||
168 | #define HIDData_NoPreferredBit 0x20 // No Preferred bt position |
||
169 | #define HIDData_NoPreferred 0x20 // HID data type No Preferred |
||
170 | #define HIDData_NonlinearBit 0x10 // NonLinear bit position |
||
171 | #define HIDData_Nonlinear 0x10 // HID data type NonLinear |
||
172 | #define HIDData_WrapBit 0x08 // Wrap bit position |
||
173 | #define HIDData_Wrap 0x08 // HID data type Wrap |
||
174 | #define HIDData_RelativeBit 0x04 // Relative bit position |
||
175 | #define HIDData_Relative 0x04 // HID data type relative |
||
176 | #define HIDData_Absolute 0x00 // HID data type absolute |
||
177 | #define HIDData_VariableBit 0x02 // Variable bit position |
||
178 | #define HIDData_Variable 0x02 // HID data type variable |
||
179 | #define HIDData_ArrayBit 0x02 // Array Bit position |
||
180 | #define HIDData_Array 0x00 // Array indentifier value |
||
181 | #define HIDData_ConstantBit 0x01 // Constant Bit position |
||
182 | #define HIDData_Constant 0x01 // Constant data type indentifier value |
||
183 | |||
184 | //------------------------------------------------------------------------------ |
||
185 | // |
||
186 | // HID Collection Data Definitions |
||
187 | // |
||
188 | //------------------------------------------------------------------------------ |
||
189 | #define HIDCollection_Physical 0x00 |
||
190 | #define HIDCollection_Application 0x01 |
||
191 | |||
192 | |||
193 | typedef enum { |
||
194 | hidReportInput, |
||
195 | hidReportOutput, |
||
196 | hidReportFeature, |
||
197 | hidReportUnknown |
||
198 | } HIDReportTypeEnum; |
||
199 | |||
200 | |||
201 | |||
202 | // ***************************************************************************** |
||
203 | /* HID Item Information |
||
204 | |||
205 | This structure contains information about each Item of the report descriptor. |
||
206 | */ |
||
207 | typedef struct _HID_ITEM_INFO |
||
208 | { |
||
209 | union |
||
210 | { |
||
211 | struct |
||
212 | { |
||
213 | BYTE ItemSize :2; // Numeric expression specifying size of data |
||
214 | BYTE ItemType :2; // This field identifies type of item(Main, Global or Local) |
||
215 | BYTE ItemTag :4; // This field specifies the function of the item |
||
216 | }; |
||
217 | BYTE val; // to access the data in byte format |
||
218 | } ItemDetails; |
||
219 | |||
220 | union |
||
221 | { |
||
222 | LONG sItemData; // Item Data is stored in signed format |
||
223 | DWORD uItemData; // Item Data is stored in unsigned format |
||
224 | BYTE bItemData[4]; |
||
225 | } Data; |
||
226 | } HID_ITEM_INFO; |
||
227 | |||
228 | |||
229 | // ***************************************************************************** |
||
230 | /* HID Global Item Information |
||
231 | |||
232 | This structure contains information about each Global Item of the report descriptor. |
||
233 | */ |
||
234 | typedef struct _HID_GLOBALS |
||
235 | { |
||
236 | WORD usagePage; // Specifies current Usage Page |
||
237 | LONG logicalMinimum; // This is the minimum value that a variable or array item will report |
||
238 | LONG logicalMaximum; // This is the maximum value that a variable or array item will report |
||
239 | LONG physicalMinimum; // Minimum value for the physical extent of a variable item |
||
240 | LONG physicalMaximum; // Maximum value for the physical extent of a variable item |
||
241 | LONG unitExponent; // Value of the unit exponent in base 10 |
||
242 | LONG unit; // Unit values |
||
243 | WORD reportIndex; // Conter to keep track of report being processed in the parser |
||
244 | BYTE reportID; // Report ID. All the reports are preceded by a single byte report ID |
||
245 | BYTE reportsize; // Size of current report in bytes |
||
246 | BYTE reportCount; // This field determines number of fields in the report |
||
247 | |||
248 | } HID_GLOBALS; |
||
249 | |||
250 | // ***************************************************************************** |
||
251 | /* HID Report details |
||
252 | |||
253 | This structure contains information about each report exchanged with the device. |
||
254 | */ |
||
255 | typedef struct _HID_REPORT |
||
256 | { |
||
257 | WORD reportID; // Report ID of the associated report |
||
258 | WORD inputBits; // If input report then length of report in bits |
||
259 | WORD outputBits; // If output report then length of report in bits |
||
260 | WORD featureBits; // If feature report then length of report in bits |
||
261 | } HID_REPORT; |
||
262 | |||
263 | |||
264 | // ***************************************************************************** |
||
265 | /* HID Collection Details |
||
266 | |||
267 | This structure contains information about each collection encountered in the report descriptor. |
||
268 | */ |
||
269 | typedef struct _HID_COLLECTION |
||
270 | { |
||
271 | DWORD data; // Collection raw data |
||
272 | WORD usagePage; // Usage page associated with current level of collection |
||
273 | BYTE firstUsageItem; // Index of First Usage Item in the current collection |
||
274 | BYTE usageItems; // Number of Usage Items in the current collection |
||
275 | BYTE firstReportItem; // Index of First report Item in the current collection |
||
276 | BYTE reportItems; // Number of report Items in the current collection |
||
277 | BYTE parent; // Index to Parent collection |
||
278 | BYTE firstChild; // Index to next child collection in the report descriptor |
||
279 | BYTE nextSibling; // Index to next child collection in the report descriptor |
||
280 | } HID_COLLECTION; |
||
281 | |||
282 | // ***************************************************************************** |
||
283 | /* HID Report Details |
||
284 | |||
285 | This structure contains information about each Report encountered in the report descriptor. |
||
286 | */ |
||
287 | typedef struct _HID_REPORTITEM |
||
288 | { |
||
289 | HIDReportTypeEnum reportType; // Type of Report Input/Output/Feature |
||
290 | HID_GLOBALS globals; // Stores all the global items associated with the current report |
||
291 | BYTE startBit; // Starting Bit Position of the report |
||
292 | BYTE parent; // Index of parent collection |
||
293 | DWORD dataModes; // this tells the data mode is array or not |
||
294 | BYTE firstUsageItem; // Index to first usage item related to the report |
||
295 | BYTE usageItems; // Number of usage items in the current report |
||
296 | BYTE firstStringItem; // Index to first srting item in the list |
||
297 | BYTE stringItems; // Number of string items in the current report |
||
298 | BYTE firstDesignatorItem; // Index to first designator item |
||
299 | BYTE designatorItems; // Number of designator items in the current report |
||
300 | } HID_REPORTITEM; |
||
301 | |||
302 | // ***************************************************************************** |
||
303 | /* HID Report Details |
||
304 | |||
305 | This structure contains information about each Usage Item encountered in the report descriptor. |
||
306 | */ |
||
307 | typedef struct _HID_USAGEITEM |
||
308 | { |
||
309 | BOOL isRange; // True if Usage item has a valid MAX and MIN range |
||
310 | WORD usagePage; // Usage page ID asscociated with the Item |
||
311 | WORD usage; // Usage ID asscociated with the Item |
||
312 | WORD usageMinimum; // Defines the starting usage associated with an array or bitmap |
||
313 | WORD usageMaximum; // Defines the ending usage associated with an array or bitmap |
||
314 | } HID_USAGEITEM; |
||
315 | |||
316 | // ***************************************************************************** |
||
317 | /* HID String Item Details |
||
318 | |||
319 | This structure contains information about each Report encountered in the report descriptor. |
||
320 | */ |
||
321 | typedef struct _HID_STRINGITEM |
||
322 | { |
||
323 | BOOL isRange; // If range of String Item is valid |
||
324 | WORD index; // String index for a String descriptor; allows a string to be associated with a particular item or control |
||
325 | WORD minimum; // Specifies the first string index when assigning a group of sequential strings to controls in an array or bitmap |
||
326 | WORD maximum; // Specifies the last string index when assigning a group of sequential strings to controls in an array or bitmap |
||
327 | } HID_STRINGITEM, HID_DESIGITEM; |
||
328 | |||
329 | |||
330 | // ***************************************************************************** |
||
331 | /* Report Descriptor Information |
||
332 | |||
333 | This structure contains top level information of the report descriptor. This information |
||
334 | is important and is used to understand the information during th ecourse of parsing. |
||
335 | This structure also stores temporary data needed during parsing the report descriptor. |
||
336 | All of this information may not be of much inportance to the application. |
||
337 | */ |
||
338 | typedef struct _USB_HID_DEVICE_RPT_INFO |
||
339 | { |
||
340 | WORD reportPollingRate; // This stores the pollrate for the input report. Application can use this to decide the rate of transfer |
||
341 | BYTE interfaceNumber; // This stores the interface number for the current report descriptor |
||
342 | |||
343 | // This set of members are used during parsing of Report descriptor , application does not normally need these details |
||
344 | BOOL haveDesignatorMax; // True if report descriptor has a valid Designator Max |
||
345 | BOOL haveDesignatorMin; // True if report descriptor has a valid Designator Min |
||
346 | BOOL haveStringMax; // True if report descriptor has a valid String Max |
||
347 | BOOL haveStringMin; // True if report descriptor has a valid String Min |
||
348 | BOOL haveUsageMax; // True if report descriptor has a valid Usage Max |
||
349 | BOOL haveUsageMin; // True if report descriptor has a valid Usage Min |
||
350 | WORD designatorMaximum; // Last designator max value |
||
351 | WORD designatorMinimum; // Last designator min value |
||
352 | WORD designatorRanges; // Last designator range |
||
353 | WORD designators; // This tells toatal number of designator items |
||
354 | WORD rangeUsagePage; // current usage page during parsing |
||
355 | WORD stringMaximum; // current string maximum |
||
356 | WORD stringMinimum; // current string minimum |
||
357 | WORD stringRanges; // current string ranges |
||
358 | WORD usageMaximum; // current usage maximum |
||
359 | WORD usageMinimum; // current usage minimum |
||
360 | WORD usageRanges; // current usage ranges |
||
361 | BYTE collectionNesting; // this number tells depth of collection nesting |
||
362 | BYTE collections; // total number of collections |
||
363 | BYTE designatorItems; // total number of designator items |
||
364 | BYTE firstUsageItem; // index of first usage item for the current collection |
||
365 | BYTE firstDesignatorItem; // index of first designator item for the current collection |
||
366 | BYTE firstStringItem; // index of first string item for the current collection |
||
367 | BYTE globalsNesting; // On encountering every PUSH item , this is incremented , keep track of current depth of Globals |
||
368 | BYTE maxCollectionNesting; // Maximum depth of collections |
||
369 | BYTE maxGlobalsNesting; // Maximum depth of Globals |
||
370 | BYTE parent; // Parent collection |
||
371 | BYTE reportItems; // total number of report items |
||
372 | BYTE reports; // total number of reports |
||
373 | BYTE sibling; // current sibling collection |
||
374 | BYTE stringItems; // total number of string items , used to index the array of strings |
||
375 | BYTE strings; // total sumber of strings |
||
376 | BYTE usageItems; // total number of usage items , used to index the array of usage |
||
377 | BYTE usages; // total sumber of usages |
||
378 | HID_GLOBALS globals; // holds cuurent globals items |
||
379 | |||
380 | } USB_HID_DEVICE_RPT_INFO; |
||
381 | |||
382 | |||
383 | // ***************************************************************************** |
||
384 | /* List of Items |
||
385 | |||
386 | This structure contains array of pointers to all the Items in the report descriptor. |
||
387 | HID parser will populate the lists while parsing the report descriptor. This data is |
||
388 | used by interface functions provided in file usb_host_hid_interface.c to retrive data |
||
389 | from the report received from the device. Application can also access these details |
||
390 | to retreive the intended information incase provided interface function fail to do so. |
||
391 | */ |
||
392 | typedef struct _USB_HID_ITEM_LIST |
||
393 | { |
||
394 | HID_COLLECTION *collectionList; // List of collections, see HID_COLLECTION for details in the structure |
||
395 | HID_DESIGITEM *designatorItemList; // List of designator Items, see HID_DESIGITEM for details in the structure |
||
396 | HID_GLOBALS *globalsStack; // List of global Items, see HID_GLOBALS for details in the structure |
||
397 | HID_REPORTITEM *reportItemList; // List of report Items, see HID_REPORTITEM for details in the structure |
||
398 | HID_REPORT *reportList; // List of reports , see HID_REPORT for details in the structure |
||
399 | HID_STRINGITEM *stringItemList; // List of string item , see HID_STRINGITEM for details in the structure |
||
400 | HID_USAGEITEM *usageItemList; // List of Usage item , see HID_USAGEITEM for details in the structure |
||
401 | BYTE *collectionStack; // stores the array of parents ids for the collection |
||
402 | } USB_HID_ITEM_LIST; |
||
403 | |||
404 | // ***************************************************************************** |
||
405 | /* HID parser error codes |
||
406 | |||
407 | This enumerates the error encountered during the parsing of report descriptor. In case of any error |
||
408 | parsing is sttopped and the error is flagged. Device is not attched successfully. |
||
409 | */ |
||
410 | typedef enum { |
||
411 | HID_ERR = 0, // No error |
||
412 | HID_ERR_NotEnoughMemory, // If not enough Heap can be allocated, make sure sufficient dynamic memory is aloocated for the parser |
||
413 | HID_ERR_NullPointer, // Pointer to report descriptor is NULL |
||
414 | HID_ERR_UnexpectedEndCollection, // End of collection not expected |
||
415 | HID_ERR_UnexpectedPop, // POP not expected |
||
416 | HID_ERR_MissingEndCollection, // No end of collection found |
||
417 | HID_ERR_MissingTopLevelCollection, // Atleast one collection must be present |
||
418 | HID_ERR_NoReports, // atlest one report must be present |
||
419 | HID_ERR_UnmatchedUsageRange, // Either Minimum or Maximum for usage range missing |
||
420 | HID_ERR_UnmatchedStringRange, // Either Minimum or Maximum for string range missing |
||
421 | HID_ERR_UnmatchedDesignatorRange, // Either Minimum or Maximum for designator range missing |
||
422 | HID_ERR_UnexpectedEndOfDescriptor, // Report descriptor not formatted properly |
||
423 | HID_ERR_BadLogicalMin, // Logical Min greater than report size |
||
424 | HID_ERR_BadLogicalMax, // Logical Max greater than report size |
||
425 | HID_ERR_BadLogical, // If logical Min is greater than Max |
||
426 | HID_ERR_ZeroReportSize, // Report size is zero |
||
427 | HID_ERR_ZeroReportID, // report ID is zero |
||
428 | HID_ERR_ZeroReportCount, // Number of reports is zero |
||
429 | HID_ERR_BadUsageRangePage, // Bad Usage page range |
||
430 | HID_ERR_BadUsageRange // Bad Usage range |
||
431 | } USB_HID_RPT_DESC_ERROR; |
||
432 | |||
433 | /**************************************************************************** |
||
434 | Function: |
||
435 | BOOL USBHostHID_HasUsage(HID_REPORTITEM *reportItem,WORD usagePage, |
||
436 | WORD usage,WORD *pindex) |
||
437 | |||
438 | Description: |
||
439 | This function is used to locate the usage in a report descriptor. |
||
440 | Function will look into the data structures created by the HID parser |
||
441 | and return the appropriate location. |
||
442 | |||
443 | Precondition: |
||
444 | None |
||
445 | |||
446 | Parameters: |
||
447 | HID_REPORTITEM *reportItem - Report item index to be searched |
||
448 | WORD usagePage - Application needs to pass the usagePage as |
||
449 | the search criteria for the usage |
||
450 | WORD usage - Application needs to pass the usageto be |
||
451 | searched |
||
452 | WORD *pindex - returns index to the usage item requested. |
||
453 | |||
454 | Return Values: |
||
455 | BOOL - FALSE - If requested usage is not found |
||
456 | TRUE - if requested usage is found |
||
457 | Remarks: |
||
458 | None |
||
459 | ***************************************************************************/ |
||
460 | BOOL USBHostHID_HasUsage(HID_REPORTITEM *reportItem,WORD usagePage, WORD usage,WORD *pindex,BYTE* count); |
||
461 | |||
462 | |||
463 | //****************************************************************************** |
||
464 | //****************************************************************************** |
||
465 | // Section: External Variables |
||
466 | //****************************************************************************** |
||
467 | //****************************************************************************** |
||
468 | |||
469 | extern USB_HID_DEVICE_RPT_INFO deviceRptInfo; |
||
470 | extern USB_HID_ITEM_LIST itemListPtrs; |
||
471 | |||
472 | #endif /* usb_host_hid_parser.h */ |
Powered by WebSVN v2.8.3