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

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since d1582b50 was d1582b50, checked in by Jiri Svoboda <jiri@…>, 5 years ago

Fix spacing in single-line comments using latest ccheck

This found incorrectly formatted section comments (with blocks of
asterisks or dashes). I strongly believe against using section comments
but I am not simply removing them since that would probably be
controversial.

  • Property mode set to 100644
File size: 4.2 KB
RevLine 
[9d05599]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
[74b1e40]29/** @addtogroup libusb
[9d05599]30 * @{
31 */
32/** @file
33 * USB HID report descriptor and report data parser
34 */
[74b1e40]35#ifndef LIBUSB_HIDPATH_H_
36#define LIBUSB_HIDPATH_H_
[9d05599]37
[36f0738]38#include <errno.h>
[faa44e58]39#include <usb/hid/hidparser.h>
[9d05599]40#include <stdint.h>
41#include <adt/list.h>
42
[f3b39b4]43/*
[74b1e40]44 * Flags of usage paths comparison modes.
45 *
46 */
[f3b39b4]47/** Wanted usage path must be exactly the same as the searched one. This
[1b20da0]48 * option cannot be combined with the others.
[9d05599]49 */
[5f7b75a]50#define USB_HID_PATH_COMPARE_STRICT 0
[74b1e40]51
52/**
53 * Wanted usage path must be the suffix in the searched one.
54 */
[5f7b75a]55#define USB_HID_PATH_COMPARE_END 1
[74b1e40]56
[1b20da0]57/**
[f3b39b4]58 * Only usage page are compared along the usage path. This option can be
[1b20da0]59 * combined with others.
[74b1e40]60 */
[5f7b75a]61#define USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY 2
[74b1e40]62
[1b20da0]63/**
[74b1e40]64 * Searched usage page must be prefix of the other one.
65 */
[5f7b75a]66#define USB_HID_PATH_COMPARE_BEGIN 4
[9d05599]67
[1b20da0]68/**
[74b1e40]69 * Searched couple of usage page and usage can be anywhere in usage path.
70 * This option is deprecated.
71 */
72#define USB_HID_PATH_COMPARE_ANYWHERE 8
[9d05599]73
[1b20da0]74/**
[74b1e40]75 * Item of usage path structure. Last item of linked list describes one item
76 * in report, the others describe superior Collection tags. Usage and Usage
[1b20da0]77 * page of report item can be changed due to data in report.
[74b1e40]78 */
[9d05599]79typedef struct {
[74b1e40]80 /** Usage page of report item. Zero when usage page can be changed. */
[9d05599]81 uint32_t usage_page;
[5b0cf63]82 /** Usage of report item. Zero when usage can be changed. */
[9d05599]83 uint32_t usage;
84
[d1582b50]85 /** Attribute of Collection tag in report descriptor */
[9d05599]86 uint8_t flags;
[74b1e40]87
[b72efe8]88 /** Link to usb_hid_report_path_t.items list */
89 link_t rpath_items_link;
[9d05599]90} usb_hid_report_usage_path_t;
91
[1b20da0]92/**
[74b1e40]93 * USB HID usage path structure.
[7c3fb9b]94 */
[9d05599]95typedef struct {
[b72efe8]96 /** Length of usage path */
97 int depth;
[74b1e40]98
[f3b39b4]99 /** Report id. Zero is reserved and means that report id is not used.
[7c3fb9b]100 */
[9d05599]101 uint8_t report_id;
102
[b72efe8]103 /** Link to usb_hid_report_path_t.collection_paths list. */
104 link_t cpath_link;
[9d05599]105
[b72efe8]106 /** List of usage path items. */
107 list_t items; /* of usb_hid_report_usage_path_t */
[9d05599]108} usb_hid_report_path_t;
109
110usb_hid_report_path_t *usb_hid_report_path(void);
111
112void usb_hid_report_path_free(usb_hid_report_path_t *path);
113
[b7fd2a0]114errno_t usb_hid_report_path_set_report_id(usb_hid_report_path_t *usage_path,
[5b0cf63]115 uint8_t report_id);
[9d05599]116
[5b0cf63]117errno_t usb_hid_report_path_append_item(usb_hid_report_path_t *usage_path,
118 int32_t usage_page, int32_t usage);
[9d05599]119
120void usb_hid_report_remove_last_item(usb_hid_report_path_t *usage_path);
121
122void usb_hid_report_null_last_item(usb_hid_report_path_t *usage_path);
123
[5b0cf63]124void usb_hid_report_set_last_item(usb_hid_report_path_t *usage_path,
125 int32_t tag, int32_t data);
[9d05599]126
[f3b39b4]127int usb_hid_report_compare_usage_path(usb_hid_report_path_t *report_path,
[5b0cf63]128 usb_hid_report_path_t *path, int flags);
[9d05599]129
[f3b39b4]130usb_hid_report_path_t *usb_hid_report_path_clone(
[5b0cf63]131 usb_hid_report_path_t *usage_path);
[9d05599]132
133void usb_hid_print_usage_path(usb_hid_report_path_t *path);
134
135#endif
136/**
137 * @}
138 */
Note: See TracBrowser for help on using the repository browser.