source: mainline/uspace/lib/usbhid/include/usb/hid/hidpath.h@ 74b1e40

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 74b1e40 was 74b1e40, checked in by Matej Klonfar <maklf@…>, 14 years ago

hid parser header's doxygen doc

  • Property mode set to 100644
File size: 4.5 KB
Line 
1/*
2 * Copyright (c) 2011 Matej Klonfar
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup libusb
30 * @{
31 */
32/** @file
33 * USB HID report descriptor and report data parser
34 */
35#ifndef LIBUSB_HIDPATH_H_
36#define LIBUSB_HIDPATH_H_
37
38#include <usb/hid/hidparser.h>
39#include <stdint.h>
40#include <adt/list.h>
41
42
43/*---------------------------------------------------------------------------*/
44/**
45 * Flags of usage paths comparison modes.
46 *
47 */
48/** Wanted usage path must be exactly the same as the searched one.
49 * This option cannot be combined with the others.
50 */
51#define USB_HID_PATH_COMPARE_STRICT 0
52
53/**
54 * Wanted usage path must be the suffix in the searched one.
55 */
56#define USB_HID_PATH_COMPARE_END 1
57
58/**
59 * Only usage page are compared along the usage path.
60 * This option can be combined with others.
61 */
62#define USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY 2
63
64/**
65 * Searched usage page must be prefix of the other one.
66 */
67#define USB_HID_PATH_COMPARE_BEGIN 4
68
69/**
70 * Searched couple of usage page and usage can be anywhere in usage path.
71 * This option is deprecated.
72 */
73#define USB_HID_PATH_COMPARE_ANYWHERE 8
74
75/*----------------------------------------------------------------------------*/
76/**
77 * Item of usage path structure. Last item of linked list describes one item
78 * in report, the others describe superior Collection tags. Usage and Usage
79 * page of report item can be changed due to data in report.
80 */
81typedef struct {
82 /** Usage page of report item. Zero when usage page can be changed. */
83 uint32_t usage_page;
84 /** Usage of report item. Zero when usage can be changed. */
85 uint32_t usage;
86
87 /** Attribute of Collection tag in report descriptor*/
88 uint8_t flags;
89
90 /** Linked list structure*/
91 link_t link;
92} usb_hid_report_usage_path_t;
93
94
95/*---------------------------------------------------------------------------*/
96/**
97 * USB HID usage path structure.
98 * */
99typedef struct {
100 /** Length of usage path */
101 int depth;
102
103 /** Report id. Zero is reserved and means that report id is not used. */
104 uint8_t report_id;
105
106 /** Linked list structure. */
107 link_t link; /* list */
108
109 /** Head of the list of usage path items. */
110 link_t head;
111
112} usb_hid_report_path_t;
113
114/*---------------------------------------------------------------------------*/
115usb_hid_report_path_t *usb_hid_report_path(void);
116
117void usb_hid_report_path_free(usb_hid_report_path_t *path);
118
119int usb_hid_report_path_set_report_id(usb_hid_report_path_t *usage_path,
120 uint8_t report_id);
121
122int usb_hid_report_path_append_item(usb_hid_report_path_t *usage_path,
123 int32_t usage_page, int32_t usage);
124
125void usb_hid_report_remove_last_item(usb_hid_report_path_t *usage_path);
126
127void usb_hid_report_null_last_item(usb_hid_report_path_t *usage_path);
128
129void usb_hid_report_set_last_item(usb_hid_report_path_t *usage_path,
130 int32_t tag, int32_t data);
131
132int usb_hid_report_compare_usage_path(usb_hid_report_path_t *report_path,
133 usb_hid_report_path_t *path, int flags);
134
135usb_hid_report_path_t *usb_hid_report_path_clone(usb_hid_report_path_t *usage_path);
136
137void usb_hid_print_usage_path(usb_hid_report_path_t *path);
138
139#endif
140/**
141 * @}
142 */
Note: See TracBrowser for help on using the repository browser.