hid_init(3)
NAME
usbhid, hid_get_report_desc, hid_use_report_desc,
hid_dispose_report_desc, hid_start_parse, hid_end_parse, hid_get_item,
hid_report_size, hid_locate, hid_usage_page, hid_usage_in_page, hid_init,
hid_get_data, hid_set_data -- USB HID access routines
LIBRARY
USB Human Interface Devices Library (libusbhid, -lusbhid)
SYNOPSIS
#include <usbhid.h>
report_desc_t
hid_get_report_desc(int file);
report_desc_t
hid_use_report_desc(unsigned char *data, unsigned int size);
void
hid_dispose_report_desc(report_desc_t d);
hid_data_t
hid_start_parse(report_desc_t d, int kindset, int id);
void
hid_end_parse(hid_data_t s);
int
hid_get_item(hid_data_t s, hid_item_t *h);
int
hid_report_size(report_desc_t d, hid_kind_t k, int id);
int
hid_locate(report_desc_t d, u_int usage, hid_kind_t k, hid_item_t *h,
int id);
char *
hid_usage_page(int i);
char *
hid_usage_in_page(u_int u);
int
hid_parse_usage_page(const char *);
char *
hid_parse_usage_in_page(const char *);
void
hid_init(char *file);
int
hid_get_data(void *data, hid_item_t *h);
void
hid_set_data(void *data, hid_item_t *h, u_int data);
descriptor which contains the data layout information and then use this
information.
The routines can be divided into four parts: extraction of the descrip-
tor, parsing of the descriptor, translating to/from symbolic names, and
data manipulation.
Descriptor Functions
A report descriptor can be obtained by calling hid_get_report_desc() with
a file descriptor obtained by opening a uhid(4) device. Alternatively a
data buffer containing the report descriptor can be passed into
hid_use_report_desc(). The data is copied into an internal structure.
When the report descriptor is no longer needed it should be freed by
calling hid_dispose_report_desc(). The type report_desc_t is opaque and
should be used when calling the parsing functions. If
hid_dispose_report_desc() fails it will return NULL.
Descriptor Parsing Functions
To parse the report descriptor the hid_start_parse() function should be
called with a report descriptor and a set that describes which items that
are interesting. The set is obtained by OR-ing together values (1 << k)
where k is an item of type hid_kind_t. The report ID (if present) is
given by id. The function returns NULL if the initialization fails, oth-
erwise an opaque value to be used in subsequent calls. After parsing the
hid_end_parse() function should be called to free internal data struc-
tures.
To iterate through all the items in the report descriptor hid_get_item()
should be called while it returns a value greater than 0. When the
report descriptor ends it will returns 0; a syntax error within the
report descriptor will cause a return value less than 0. The struct
pointed to by h will be filled with the relevant data for the item. The
definition of hid_item_t can be found in <usbhid.h> and the meaning of
the components in the USB HID documentation.
Data should be read/written to the device in the size of the report. The
size of a report (of a certain kind) can be computed by the
hid_report_size() function. If the report is prefixed by an ID byte it
is given by id.
To locate a single item the hid_locate() function can be used. It should
be given the usage code of the item and its kind and it will fill the
item and return non-zero if the item was found.
Name Translation Functions
The function hid_usage_page() will return the symbolic name of a usage
page, and the function hid_usage_in_page() will return the symbolic name
of the usage within the page. Both these functions may return a pointer
to static data.
The functions hid_parse_usage_page() and hid_parse_usage_in_page() are
the inverses of hid_usage_page() and hid_usage_in_page(). They take a
usage string and return the number of the usage, or -1 if it cannot be
found.
Before any of these functions can be called the usage table must be
parsed, this is done by calling hid_init() with the name of the table.
Passing NULL to this function will cause it to use the default table.
Not yet.
FILES
/usr/share/misc/usb_hid_usages The default HID usage table.
BUGS
This man page is woefully incomplete.
SEE ALSO
The USB specifications can be found at
http://www.usb.org/developers/docs/.
uhid(4), usb(4)
HISTORY
The usbhid library first appeared in NetBSD 1.5.
FreeBSD 5.4 December 29, 2001 FreeBSD 5.4
SPONSORED LINKS
Man(1) output converted with man2html , sed , awk
FreeBSD Man Pages