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