OpenOCD
libusb_helper.c File Reference
Include dependency graph for libusb_helper.c:

Go to the source code of this file.

Macros

#define MAX_USB_PORTS   7
 

Functions

int jtag_libusb_bulk_read (struct libusb_device_handle *dev, int ep, char *bytes, int size, int timeout, int *transferred)
 
int jtag_libusb_bulk_write (struct libusb_device_handle *dev, int ep, char *bytes, int size, int timeout, int *transferred)
 
int jtag_libusb_choose_interface (struct libusb_device_handle *devh, unsigned int *usb_read_ep, unsigned int *usb_write_ep, int bclass, int subclass, int protocol, int trans_type)
 Find the first interface optionally matching class, subclass and protocol and claim it. More...
 
void jtag_libusb_close (struct libusb_device_handle *dev)
 
int jtag_libusb_control_transfer (struct libusb_device_handle *dev, uint8_t request_type, uint8_t request, uint16_t value, uint16_t index, char *bytes, uint16_t size, unsigned int timeout)
 
static int jtag_libusb_error (int err)
 
int jtag_libusb_get_pid (struct libusb_device *dev, uint16_t *pid)
 
int jtag_libusb_handle_events_completed (int *completed)
 
static bool jtag_libusb_location_equal (struct libusb_device *device)
 
static bool jtag_libusb_match_ids (struct libusb_device_descriptor *dev_desc, const uint16_t vids[], const uint16_t pids[])
 
static bool jtag_libusb_match_serial (struct libusb_device_handle *device, struct libusb_device_descriptor *dev_desc, const char *serial, adapter_get_alternate_serial_fn adapter_get_alternate_serial)
 
int jtag_libusb_open (const uint16_t vids[], const uint16_t pids[], struct libusb_device_handle **out, adapter_get_alternate_serial_fn adapter_get_alternate_serial)
 
int jtag_libusb_set_configuration (struct libusb_device_handle *devh, int configuration)
 
static bool string_descriptor_equal (struct libusb_device_handle *device, uint8_t str_index, const char *string)
 

Variables

static struct libusb_device ** devs
 The usb device list. More...
 
static struct libusb_context * jtag_libusb_context
 Libusb context. More...
 

Macro Definition Documentation

◆ MAX_USB_PORTS

#define MAX_USB_PORTS   7

Definition at line 23 of file libusb_helper.c.

Function Documentation

◆ jtag_libusb_bulk_read()

◆ jtag_libusb_bulk_write()

◆ jtag_libusb_choose_interface()

int jtag_libusb_choose_interface ( struct libusb_device_handle *  devh,
unsigned int *  usb_read_ep,
unsigned int *  usb_write_ep,
int  bclass,
int  subclass,
int  protocol,
int  trans_type 
)

Find the first interface optionally matching class, subclass and protocol and claim it.

Parameters
devhlibusb device handle.
usb_read_epA pointer to a variable where the IN endpoint number will be stored.
usb_write_epA pointer to a variable where the OUT endpoint number will be stored.
bclassbInterfaceClass to match, or -1 to ignore this field.
subclassbInterfaceSubClass to match, or -1 to ignore this field.
protocolbInterfaceProtocol to match, or -1 to ignore this field.
trans_typebmAttributes Bits 0..1 Transfer type to match, or -1 to ignore this field.
Returns
Returns ERROR_OK on success, ERROR_FAIL otherwise.

Definition at line 294 of file libusb_helper.c.

References config, devh, ERROR_FAIL, ERROR_OK, and LOG_DEBUG.

Referenced by aice_usb_open(), esp_usb_jtag_init(), openjtag_init_cy7c65215(), and ulink_init().

◆ jtag_libusb_close()

◆ jtag_libusb_control_transfer()

◆ jtag_libusb_error()

static int jtag_libusb_error ( int  err)
static

Definition at line 28 of file libusb_helper.c.

References ERROR_FAIL, ERROR_OK, and ERROR_TIMEOUT_REACHED.

Referenced by jtag_libusb_bulk_read(), and jtag_libusb_bulk_write().

◆ jtag_libusb_get_pid()

int jtag_libusb_get_pid ( struct libusb_device *  dev,
uint16_t *  pid 
)

Definition at line 346 of file libusb_helper.c.

References ERROR_FAIL, and ERROR_OK.

Referenced by stlink_usb_usb_open().

◆ jtag_libusb_handle_events_completed()

int jtag_libusb_handle_events_completed ( int *  completed)

Definition at line 359 of file libusb_helper.c.

References jtag_libusb_context.

◆ jtag_libusb_location_equal()

static bool jtag_libusb_location_equal ( struct libusb_device *  device)
static

Definition at line 83 of file libusb_helper.c.

Referenced by jtag_libusb_open().

◆ jtag_libusb_match_ids()

static bool jtag_libusb_match_ids ( struct libusb_device_descriptor *  dev_desc,
const uint16_t  vids[],
const uint16_t  pids[] 
)
static

Definition at line 53 of file libusb_helper.c.

Referenced by jtag_libusb_open().

◆ jtag_libusb_match_serial()

static bool jtag_libusb_match_serial ( struct libusb_device_handle *  device,
struct libusb_device_descriptor *  dev_desc,
const char *  serial,
adapter_get_alternate_serial_fn  adapter_get_alternate_serial 
)
static

Definition at line 118 of file libusb_helper.c.

References device, LOG_DEBUG, serial, and string_descriptor_equal().

Referenced by jtag_libusb_open().

◆ jtag_libusb_open()

◆ jtag_libusb_set_configuration()

int jtag_libusb_set_configuration ( struct libusb_device_handle *  devh,
int  configuration 
)

Definition at line 266 of file libusb_helper.c.

References config, devh, and NULL.

Referenced by esp_usb_jtag_init(), opendous_usb_open(), and stlink_usb_usb_open().

◆ string_descriptor_equal()

static bool string_descriptor_equal ( struct libusb_device_handle *  device,
uint8_t  str_index,
const char *  string 
)
static

Definition at line 91 of file libusb_helper.c.

References device, LOG_DEBUG, and LOG_ERROR.

Referenced by jtag_libusb_match_serial().

Variable Documentation

◆ devs

struct libusb_device** devs
static

The usb device list.

Definition at line 26 of file libusb_helper.c.

Referenced by cmsis_dap_hid_open(), jlink_open_device(), and jtag_libusb_open().

◆ jtag_libusb_context

struct libusb_context* jtag_libusb_context
static

Libusb context.

Definition at line 25 of file libusb_helper.c.

Referenced by jtag_libusb_close(), jtag_libusb_handle_events_completed(), and jtag_libusb_open().