Hi,
Improvements to the uhid(4) manual:

* Include the relevant header in the synopsis
* Document all supported ioctl commands
* Emphasis that a pointer is required to all ioctl commands
* Make the write(2) semantics a bit clearer
* Add files section
* Document errors

Comments? OK?

Index: uhid.4
===================================================================
RCS file: /cvs/src/share/man/man4/uhid.4,v
retrieving revision 1.19
diff -u -p -r1.19 uhid.4
--- uhid.4      30 Dec 2020 12:49:58 -0000      1.19
+++ uhid.4      14 Sep 2021 17:07:21 -0000
@@ -36,6 +36,8 @@
 .Nd USB generic HID support
 .Sh SYNOPSIS
 .Cd "uhid* at uhidev?"
+.Pp
+.In dev/usb/usb.h
 .Sh DESCRIPTION
 The
 .Nm
@@ -46,9 +48,11 @@ The device handles the following
 .Xr ioctl 2
 calls:
 .Bl -tag -width indent
-.It Dv USB_GET_REPORT_ID Fa int
+.It Dv USB_GET_DEVICEINFO Fa struct usb_device_info *devinfo
+Get summarized information about the device.
+.It Dv USB_GET_REPORT_ID Fa int *repid
 Get the report identifier used by this HID report.
-.It Dv USB_GET_REPORT_DESC Fa "struct usb_ctl_report_desc"
+.It Dv USB_GET_REPORT_DESC Fa struct usb_ctl_report_desc *repdesc
 Get the HID report descriptor.
 Using this descriptor the exact layout and meaning of data to/from
 the device can be found.
@@ -59,25 +63,24 @@ struct usb_ctl_report_desc {
     u_char  ucrd_data[1024];   /* filled data size will vary */
 };
 .Ed
-.It Dv USB_GET_REPORT Fa "struct usb_ctl_report"
+.It Dv USB_GET_REPORT Fa struct usb_ctl_report *rep
 Get a report from the device without waiting for data on
 the interrupt pipe.
 The
-.Fa report
+.Fa ucr_report
 field indicates which report is requested.
 It should be
 .Dv UHID_INPUT_REPORT ,
 .Dv UHID_OUTPUT_REPORT ,
 or
 .Dv UHID_FEATURE_REPORT .
-This call may fail if the device does not support this feature.
 .Bd -literal
 struct usb_ctl_report {
        int     ucr_report;
-       u_char  ucr_data[1024]; /* used data size will vary */
+       u_char  ucr_data[1024]; /* filled data size will vary */
 };
 .Ed
-.It Dv USB_SET_REPORT Fa "struct usb_ctl_report"
+.It Dv USB_SET_REPORT Fa struct usb_ctl_report *rep
 Set a report in the device.
 The
 .Dv report
@@ -87,9 +90,15 @@ It should be
 .Dv UHID_OUTPUT_REPORT ,
 or
 .Dv UHID_FEATURE_REPORT .
-This call may fail if the device does not support this feature.
 .El
 .Pp
+The generic ioctls
+.Dv FIONBIO
+and
+.Dv FIOASYNC
+are supported by
+.Nm .
+.Pp
 Use
 .Xr read 2
 to get data from the device.
@@ -98,8 +107,66 @@ Data should be read in chunks of the siz
 Use
 .Xr write 2
 to send data to the device.
+Equivalent to issuing an
+.Xr ioctl 2
+.Dv USB_SET_REPORT
+request with the report set to
+.Dv UHID_OUTPUT_REPORT .
 Data should be written in chunks of the size prescribed by the report
 descriptor.
+.Sh FILES
+.Bl -tag -width /dev/tun* -compact
+.It Pa /dev/uhid*
+.El
+.Sh ERRORS
+If
+.Xr ioctl 2
+fails,
+.Xr errno 2
+is set to one of the following:
+.Bl -tag -width Er
+.It Bq Er EIO
+The device could not fulfill a
+.Dv USB_GET_REPORT
+or
+.Dv USB_SET_REPORT
+request.
+.It Bq Er EINVAL
+The report specified by the
+.Fa ucr_report
+field in a
+.Dv USB_GET_REPORT
+or
+.Dv USB_SET_REPORT
+request was invalid.
+.It Bq Er ENOTTY
+Unrecognized command.
+.El
+.Pp
+If
+.Xr read 2
+fails,
+.Xr errno 2
+is set to one of the following:
+.Bl -tag -width Er
+.It Bq Er EIO
+The device has already been detached.
+.It Bq Er EWOULDBLOCK
+Non-blocking I/O was selected and no data were available.
+.El
+.Pp
+If
+.Xr write 2
+fails,
+.Xr errno 2
+is set to one of the following:
+.Bl -tag -width Er
+.It Bq Er EIO
+The device has already been detached or the same device does not have a
+corresponding output report.
+.It Bq Er EMSGSIZE
+The size of the supplied data exceeds the size of the output report.
+.El
 .Sh SEE ALSO
 .Xr usbhidctl 1 ,
 .Xr usbhid 3 ,

Reply via email to