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