xref: /freebsd/lib/libusb/libusb20_dev_open.3 (revision caf23c8e0b7981dd022c52feaf6edfef232f7e27)
1*caf23c8eSRick Parrish.\"
2*caf23c8eSRick Parrish.\" Copyright (c) 2025 Rick Parrish <unitrunker@unitrunker.net>
3*caf23c8eSRick Parrish.\"
4*caf23c8eSRick Parrish.\" SPDX-License-Identifier: BSD-2-Clause
5*caf23c8eSRick Parrish.\"
6*caf23c8eSRick Parrish.Dd December 14, 2025
7*caf23c8eSRick Parrish.Dt LIBUSB20 3
8*caf23c8eSRick Parrish.Os
9*caf23c8eSRick Parrish.Sh NAME
10*caf23c8eSRick Parrish.Nm libusb20_dev_open
11*caf23c8eSRick Parrish.Nd open a USB device to retrieve descriptors and initiate transfers
12*caf23c8eSRick Parrish.Sh SYNOPSIS
13*caf23c8eSRick Parrish.Lb libusb
14*caf23c8eSRick Parrish.In libusb20.h
15*caf23c8eSRick Parrish.Ft int
16*caf23c8eSRick Parrish.Fn libusb20_dev_open "struct libusb20_device *pdev" "uin16_t transfer_max"
17*caf23c8eSRick Parrish.Sh DESCRIPTION
18*caf23c8eSRick ParrishThe
19*caf23c8eSRick Parrish.Nm
20*caf23c8eSRick Parrishfunction opens a USB device to retrieve descriptors and initiate transfers.
21*caf23c8eSRick Parrish.Nm
22*caf23c8eSRick Parrishaccepts a pointer as
23*caf23c8eSRick Parrish.Fa pdev
24*caf23c8eSRick Parrishto a libusb20_device obtained from
25*caf23c8eSRick Parrish.Nm libusb20_be_device_foreach .
26*caf23c8eSRick ParrishA zero for
27*caf23c8eSRick Parrish.Fa transfer_max
28*caf23c8eSRick Parrishlimits the device to only control transfers.
29*caf23c8eSRick ParrishCall
30*caf23c8eSRick Parrish.Xr libusb20_dev_close 3
31*caf23c8eSRick Parrishto free resources taken by the open device handle.
32*caf23c8eSRick Parrish.Sh RETURN VALUES
33*caf23c8eSRick Parrish.Nm
34*caf23c8eSRick Parrishreturns one of the following to report success or failure:
35*caf23c8eSRick Parrish.Pp
36*caf23c8eSRick Parrish.Bl -tag -width "LIBUSB20_ERROR_NO_DEVICE," -compact
37*caf23c8eSRick Parrish.It Er LIBUSB20_SUCCESS ,
38*caf23c8eSRick ParrishThe operation succeeds.
39*caf23c8eSRick Parrish.It Er LIBUSB20_ERROR_BUSY ,
40*caf23c8eSRick ParrishThe device is in use elsewhere.
41*caf23c8eSRick Parrish.It Er LIBUSB20_ERROR_ACCESS ,
42*caf23c8eSRick ParrishA permissions issue.
43*caf23c8eSRick Parrish.It Er LIBUSB20_ERROR_NO_DEVICE ,
44*caf23c8eSRick ParrishThe device detached.
45*caf23c8eSRick Parrish.It Er LIBUSB20_ERROR_NO_MEM
46*caf23c8eSRick ParrishThe library couldn't allocate memory.
47*caf23c8eSRick Parrish.El
48*caf23c8eSRick Parrish.Pp
49*caf23c8eSRick ParrishErrors not listed here may be found in
50*caf23c8eSRick Parrish.Xr libusb20 3
51*caf23c8eSRick Parrishand
52*caf23c8eSRick Parrish.In libusb20.h .
53*caf23c8eSRick Parrish.Sh EXAMPLES
54*caf23c8eSRick Parrish.Bd -literal
55*caf23c8eSRick Parrish    #include <libusb20.h>
56*caf23c8eSRick Parrish    struct libusb20_backend *be = libusb20_be_alloc_default();
57*caf23c8eSRick Parrish    struct libusb20_device *device = NULL;
58*caf23c8eSRick Parrish    while ( (device = libusb20_be_device_foreach(be, device)) != NULL ) {
59*caf23c8eSRick Parrish        if (libusb20_dev_open(device, 0) == LIBUSB20_SUCCESS) {
60*caf23c8eSRick Parrish            /* do something */
61*caf23c8eSRick Parrish            libusb20_dev_close(device);
62*caf23c8eSRick Parrish        }
63*caf23c8eSRick Parrish    }
64*caf23c8eSRick Parrish    libusb20_be_free(be);
65*caf23c8eSRick Parrish.Ed
66*caf23c8eSRick Parrish.Sh SEE ALSO
67*caf23c8eSRick Parrish.Xr libusb20 3 ,
68*caf23c8eSRick Parrish.Xr libusb20_be_device_foreach 3 ,
69*caf23c8eSRick Parrish.Xr libusb20_dev_close 3
70