openusb_get_raw_desc, openusb_free_raw_desc, openusb_parse_device_desc, openusb_parse_config_desc, openusb_parse_interface_desc, openusb_parse_endpoint_desc

Name

openusb_get_raw_desc, openusb_free_raw_desc, openusb_parse_device_desc, openusb_parse_config_desc, openusb_parse_interface_desc, openusb_parse_endpoint_desc  -- Get/Free raw device descriptors; Get cooked Device, Configuration, Interface, Endpoint descriptors

Synopsis

int32_t openusb_get_raw_desc(openusb_handle_t handle, openusb_devid_t devid, uint8_t type, uint8_t descidx, uint16_t langid, uint8_t **buffer, uint16_t *buflen);

int32_t openusb_parse_device_desc(openusb_handle_t handle, openusb_devid_t devid, uint8_t *buffer, uint16_t buflen, usb_device_desc_t *devdesc);

int32_t openusb_parse_config_desc(openusb_handle_t handle, openusb_devid_t devid, uint8_t *buffer, uint16_t buflen, uint8_t cfgidx, usb_config_desc_t *cfgdesc);

int32_t openusb_parse_interface_desc(openusb_handle_t handle, openusb_devid_t devid, uint8_t *buffer, uint16_t buflen, uint8_t cfgidx, uint8_t ifcidx, uint8_t alt, usb_interface_desc_t *ifcdesc);

int32_t openusb_parse_endpoint_desc(openusb_handle_t handle, openusb_devid_t devid, uint8_t *buffer, uint16_t buflen, uint8_t cfgidx, uint8_t ifcidx, uint8_t alt, uint8_t eptidx, usb_endpoint_desc_t *eptdesc);

void openusb_free_raw_desc(uint8_t *buffer);

Parameters

handle Libusb handle.

devid Device's devid.

type Descriptor type.

descidx Index for config/string descriptor, zero for others

langid Language ID for string descriptor, zero for others

buffer Data buffer of raw descriptors data.

buflen Length of raw descriptors.

devdesc Pointer to device descriptor.

cfgidx Configuration descriptor index.

cfgdesc Pointer to configuration descriptor.

ifcidx Interface index.

alt Alternate setting number.

ifcdesc Pointer to interface descriptor.

eptidx Endpoint index.

eptdesc Pointer to endpoint descriptor.

Description

openusb_get_raw_desc() will return raw descriptors of type, descidx and langid which an application specifies on calling this function. The raw descriptor is returned in buffer and length of it is in buflen.

Application should call openusb_free_raw_desc() to free descriptor memory if it has called openusb_get_raw_desc().

openusb_parse_device_desc() returns the cooked device descriptors of the specified devid.

openusb_parse_config_desc() returns the cooked configuration descriptor of specified devid and cfgidx.

openusb_parse_interface_desc() returns the cooked interface descriptor of number alt alternate setting of interface ifcidx in configuration cfgidx.

openusb_parse_endpoint_desc() returns an endpoint's descriptor of which is in alternate setting alt of interface ifcidx in configuration cfgidx.

For openusb_parse_device_desc(), openusb_parse_config_desc(), openusb_parse_interface_desc() and openusb_parse_endpoint_desc(), application can use the raw descriptor buffer got through openusb_get_raw_desc(). If application pass a NULL buffer pointer, these four openusb functions will call openusb_get_raw_desc() internally and return the cooked descriptors.

Return Values

OPENUSB_SUCCESS Success.

OPENUSB_UNKNOWN_DEVICE Can't find the device specified by devid.

OPENUSB_INVALID_HANDLE Invalid openusb handle.

OPENUSB_NO_RESOURCES Memory allocation failure.

OPENUSB_PARSE_ERROR Fail to parse descriptors.

OPENUSB_PLATFORM_FAILURE Kernel/driver failure.

OPENUSB_BADARG Invalid arguments. devdesc, cfgdesc, ifcdesc or eptdesc is NULL. buflen is invalid if buffer is not NULL.

See Also