Skip to content

Commit 856095c

Browse files
committed
Add string descriptor retrieval to libusbemu.
This is a prerequisite for adding open-by-serial-number functionality. Signed-off-by: Drew Fisher <[email protected]>
1 parent ad0ec0b commit 856095c

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

platform/windows/libusb10emu/libusb-1.0/libusb.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ typedef struct libusb_device_handle_t libusb_device_handle;
7171
int libusb_open(libusb_device* dev, libusb_device_handle** handle);
7272
void libusb_close(libusb_device_handle* dev_handle);
7373

74+
int libusb_get_string_descriptor(libusb_device_handle *dev_handle, uint8_t desc_index, uint16_t langid, unsigned char *data, int length);
75+
int libusb_get_string_descriptor_ascii(libusb_device_handle *dev_handle, uint8_t desc_index, unsigned char *data, int length);
76+
7477
int libusb_set_configuration(libusb_device_handle *dev, int configuration);
7578
int libusb_claim_interface(libusb_device_handle* dev, int interface_number);
7679
int libusb_release_interface(libusb_device_handle* dev, int interface_number);

platform/windows/libusb10emu/libusb-1.0/libusbemu.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,25 @@ void libusb_close(libusb_device_handle* dev_handle)
264264
libusbemu_unregister_device(device);
265265
}
266266

267+
int libusb_get_string_descriptor(libusb_device_handle *dev_handle, uint8_t desc_index, uint16_t langid, unsigned char *data, int length)
268+
{
269+
RAIIMutex lock (dev_handle->dev->ctx->mutex);
270+
int bytes = usb_get_string(dev_handle->handle, (int)desc_index, (int)langid, (char*)data, (size_t)length);
271+
if (bytes < 0) {
272+
LIBUSBEMU_ERROR_LIBUSBWIN32();
273+
}
274+
return bytes;
275+
}
276+
int libusb_get_string_descriptor_ascii(libusb_device_handle *dev_handle, uint8_t desc_index, unsigned char *data, int length)
277+
{
278+
RAIIMutex lock (dev_handle->dev->ctx->mutex);
279+
int bytes = usb_get_string_simple(dev_handle->handle, (int)desc_index, (char*)data, (size_t)length);
280+
if (bytes < 0) {
281+
LIBUSBEMU_ERROR_LIBUSBWIN32();
282+
}
283+
return bytes;
284+
}
285+
267286
int libusb_set_configuration(libusb_device_handle *dev, int configuration)
268287
{
269288
RAIIMutex lock (dev->dev->ctx->mutex);

0 commit comments

Comments
 (0)