192 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Groff
		
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Groff
		
	
	
	
| .\"	$NetBSD: usb.3,v 1.9 1999/11/08 22:33:40 augustss Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
 | |
| .\" All rights reserved.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
| .\" SUCH DAMAGE.
 | |
| .\"
 | |
| .\" $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb.3,v 1.1 2000/02/11 18:06:50 dawes Exp $ 
 | |
| .\"
 | |
| .Dd May 11, 1999
 | |
| .Dt USB 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm usb ,
 | |
| .Nm hid_get_report_desc ,
 | |
| .Nm hid_dispose_report_desc ,
 | |
| .Nm hid_start_parse ,
 | |
| .Nm hid_end_parse ,
 | |
| .Nm hid_get_item ,
 | |
| .Nm hid_report_size ,
 | |
| .Nm hid_locate ,
 | |
| .Nm hid_usage_page ,
 | |
| .Nm hid_usage_in_page ,
 | |
| .Nm hid_init ,
 | |
| .Nm hid_get_data ,
 | |
| .Nm hid_set_data
 | |
| .Nd USB HID access routines
 | |
| .Sh LIBRARY
 | |
| .Lb libusb
 | |
| .Sh SYNOPSIS
 | |
| .Fd #include <usb.h>
 | |
| .Ft report_desc_t
 | |
| .Fn hid_get_report_desc "int file"
 | |
| .Ft void
 | |
| .Fn hid_dispose_report_desc "report_desc_t d"
 | |
| .Ft hid_data_t
 | |
| .Fn hid_start_parse "report_desc_t d" "int kindset"
 | |
| .Ft void
 | |
| .Fn hid_end_parse "hid_data_t s"
 | |
| .Ft int
 | |
| .Fn hid_get_item "hid_data_t s" "hid_item_t *h"
 | |
| .Ft int
 | |
| .Fn hid_report_size "report_desc_t d" "hid_kind_t k" "int *idp"
 | |
| .Ft int
 | |
| .Fn hid_locate "report_desc_t d" "u_int usage" "hid_kind_t k" "hid_item_t *h"
 | |
| .Ft char *
 | |
| .Fn hid_usage_page "int i"
 | |
| .Ft char *
 | |
| .Fn hid_usage_in_page "u_int u"
 | |
| .Ft void
 | |
| .Fn hid_init "char *file"
 | |
| .Ft int
 | |
| .Fn hid_get_data "void *data" "hid_item_t *h"
 | |
| .Ft void
 | |
| .Fn hid_set_data "void *data" "hid_item_t *h" "u_int data"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Nm
 | |
| library provides routines to extract data from USB Human Interface Devices.
 | |
| .Ss INTRODUCTION
 | |
| USB HID devices send and receive data layed out a device dependent
 | |
| way.  The
 | |
| .Nm
 | |
| library contains routines to extract the
 | |
| .Em report descriptor
 | |
| which contains the data layout information and then use this information.
 | |
| .Pp
 | |
| The routines can be divided into four parts: extraction of the descriptor,
 | |
| parsing of the descriptor, translating to/from symbolic names, and
 | |
| data manipulation.
 | |
| .Ss DESCRIPTOR FUNCTIONS
 | |
| A report descriptor can be obtained by calling
 | |
| .Fn hid_get_report_desc
 | |
| with a file descriptor obtained by opening a
 | |
| .Xr uhid 4
 | |
| device.
 | |
| When the report descriptor is no longer needed it should be freed
 | |
| by calling
 | |
| .Fn hid_dispose_report_desc .
 | |
| The type
 | |
| .Fa report_desc_t
 | |
| is opaque and should be used when calling the parsing functions.
 | |
| .Ss DESCRIPTOR PARSING FUNCTIONS
 | |
| To parse the report descriptor the
 | |
| .Fn 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 oring together values
 | |
| .Fa "(1 << k)"
 | |
| where
 | |
| .Fa k
 | |
| is an item of type
 | |
| .Fa hid_kind_t .
 | |
| The function returns
 | |
| .Fa NULL
 | |
| if the initialization fails, otherwise an opaque value to be used
 | |
| in subsequent calls.
 | |
| After parsing the
 | |
| .Fn hid_end_parse
 | |
| function should be called to free internal data structures.
 | |
| .Pp
 | |
| To iterate through all the items in the report descriptor
 | |
| .Fn 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
 | |
| .Fa h
 | |
| will be filled with the relevant data for the item.
 | |
| The definition of
 | |
| .Fa hid_item_t
 | |
| can be found in
 | |
| .Pa <usb.h>
 | |
| and the meaning of the components in the USB HID documentation.
 | |
| .Pp
 | |
| 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
 | |
| .Fn hid_report_size
 | |
| function.  If the report is prefixed by an ID byte it is
 | |
| stored at
 | |
| .Fa idp ,
 | |
| otherwise it will contain 0.
 | |
| .Pp
 | |
| To locate a single item the
 | |
| .Fn 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.
 | |
| .Pp
 | |
| .Ss NAME TRANSLATION FUNCTIONS
 | |
| The function
 | |
| .Fn hid_usage_page
 | |
| will return the symbolic name of a usage page, and the function
 | |
| .Fn 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.
 | |
| Before either of these functions can be called the usage table
 | |
| must be parsed, this is done by calling
 | |
| .Fn hid_init
 | |
| with the name of the table.  Passing
 | |
| .Fa NULL
 | |
| to this function will cause it to use the default table.
 | |
| .Ss DATA EXTRACTION FUNCTIONS
 | |
| Given the data obtained from a HID device and an item in the
 | |
| report descriptor the
 | |
| .Fn hid_get_data
 | |
| function extracts the value of the item.
 | |
| Conversely
 | |
| .Fn hid_set_data
 | |
| can be used to put data into a report (which must be zeroed first).
 | |
| .Sh EXAMPLE
 | |
| Not yet.
 | |
| .Sh FILES
 | |
| .Pa /usr/share/misc/usb_hid_usages
 | |
| The default HID usage table.
 | |
| .Sh BUGS
 | |
| This man page is woefully incomplete.
 | |
| .Sh SEE ALSO
 | |
| The
 | |
| .Tn USB
 | |
| specifications can be found at
 | |
| .Dv http://www.usb.org/developers/docs.htm .
 | |
| .Pp
 | |
| .Xr hid 4 ,
 | |
| .Xr usb 4 .
 | |
| .Sh HISTORY
 | |
| The
 | |
| .Nm
 | |
| library first appeared in
 | |
| .Nx 1.5 .
 |