xref: /freebsd/lib/libusb/libusb20_be_device_foreach.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_be_device_foreach
11*caf23c8eSRick Parrish.Nd iterate connected USB devices
12*caf23c8eSRick Parrish.Sh SYNOPSIS
13*caf23c8eSRick Parrish.Lb libusb
14*caf23c8eSRick Parrish.In libusb20.h
15*caf23c8eSRick Parrish.Ft struct libusb20_device *
16*caf23c8eSRick Parrish.Fn libusb20_be_device_foreach "struct libusb20_backend *pbe" "struct libusb20_device *pdev"
17*caf23c8eSRick Parrish.Sh DESCRIPTION
18*caf23c8eSRick ParrishThe
19*caf23c8eSRick Parrish.Nm
20*caf23c8eSRick Parrishfunction iterates connected USB devices, one device at a time.
21*caf23c8eSRick ParrishA backend pointer for
22*caf23c8eSRick Parrish.Fa pbe
23*caf23c8eSRick Parrishmay be obtained by calling
24*caf23c8eSRick Parrish.Xr libusb20_be_alloc_default 3 .
25*caf23c8eSRick ParrishThe starting value of
26*caf23c8eSRick Parrish.Fa pdev
27*caf23c8eSRick Parrishis NULL.
28*caf23c8eSRick ParrishCalling
29*caf23c8eSRick Parrish.Nm libusb20_be_device_foreach
30*caf23c8eSRick Parrishagain with
31*caf23c8eSRick Parrish.Fa pdev
32*caf23c8eSRick Parrishset to the return value of the previous call yields the next device.
33*caf23c8eSRick ParrishTo begin interacting with a USB device, pass the pointer in a call to
34*caf23c8eSRick Parrish.Xr libusb20_dev_open 3 .
35*caf23c8eSRick Parrish.Sh RETURN VALUES
36*caf23c8eSRick Parrish.Nm
37*caf23c8eSRick Parrishreturns NULL for end of list.
38*caf23c8eSRick ParrishOtherwise this is a pointer to the next device.
39*caf23c8eSRick Parrish.Sh EXAMPLES
40*caf23c8eSRick Parrish.Bd -literal
41*caf23c8eSRick Parrish    #include <libusb20.h>
42*caf23c8eSRick Parrish    struct libusb20_backend *be = libusb20_be_alloc_default();
43*caf23c8eSRick Parrish    struct libusb20_device *device = NULL;
44*caf23c8eSRick Parrish    while ( (device = libusb20_be_device_foreach(be, device)) != NULL ) {
45*caf23c8eSRick Parrish        if (libusb20_dev_open(device, 0) == LIBUSB20_SUCCESS) {
46*caf23c8eSRick Parrish            /* do something */
47*caf23c8eSRick Parrish            libusb20_dev_close(device);
48*caf23c8eSRick Parrish        }
49*caf23c8eSRick Parrish    }
50*caf23c8eSRick Parrish    libusb20_be_free(be);
51*caf23c8eSRick Parrish.Ed
52*caf23c8eSRick Parrish.Sh SEE ALSO
53*caf23c8eSRick Parrish.Xr libusb20 3 ,
54*caf23c8eSRick Parrish.Xr libusb20_be_alloc_default 3 ,
55*caf23c8eSRick Parrish.Xr libusb20_be_free 3 ,
56*caf23c8eSRick Parrish.Xr libusb20_dev_open 3
57