Merge pull request #10878 from Pokechu22/btreal-allow-libusb-descriptor-errors

BTReal: Treat libusb_get_string_descriptor_ascii failure as non-fatal warning
This commit is contained in:
Admiral H. Curtiss 2022-07-22 02:00:13 +02:00 committed by GitHub
commit df399b0995
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -106,19 +106,42 @@ std::optional<IPCReply> BluetoothRealDevice::Open(const OpenRequest& request)
unsigned char manufacturer[50] = {}, product[50] = {}, serial_number[50] = {}; unsigned char manufacturer[50] = {}, product[50] = {}, serial_number[50] = {};
const int manufacturer_ret = libusb_get_string_descriptor_ascii( const int manufacturer_ret = libusb_get_string_descriptor_ascii(
m_handle, device_descriptor.iManufacturer, manufacturer, sizeof(manufacturer)); m_handle, device_descriptor.iManufacturer, manufacturer, sizeof(manufacturer));
if (manufacturer_ret < LIBUSB_SUCCESS)
{
WARN_LOG_FMT(IOS_WIIMOTE,
"Failed to get string for manufacturer descriptor {:02x} for device "
"{:04x}:{:04x} (rev {:x}): {}",
device_descriptor.iManufacturer, device_descriptor.idVendor,
device_descriptor.idProduct, device_descriptor.bcdDevice,
LibusbUtils::ErrorWrap(manufacturer_ret));
manufacturer[0] = '?';
manufacturer[1] = '\0';
}
const int product_ret = libusb_get_string_descriptor_ascii( const int product_ret = libusb_get_string_descriptor_ascii(
m_handle, device_descriptor.iProduct, product, sizeof(product)); m_handle, device_descriptor.iProduct, product, sizeof(product));
if (product_ret < LIBUSB_SUCCESS)
{
WARN_LOG_FMT(IOS_WIIMOTE,
"Failed to get string for product descriptor {:02x} for device "
"{:04x}:{:04x} (rev {:x}): {}",
device_descriptor.iProduct, device_descriptor.idVendor,
device_descriptor.idProduct, device_descriptor.bcdDevice,
LibusbUtils::ErrorWrap(product_ret));
product[0] = '?';
product[1] = '\0';
}
const int serial_ret = libusb_get_string_descriptor_ascii( const int serial_ret = libusb_get_string_descriptor_ascii(
m_handle, device_descriptor.iSerialNumber, serial_number, sizeof(serial_number)); m_handle, device_descriptor.iSerialNumber, serial_number, sizeof(serial_number));
if (manufacturer_ret < LIBUSB_SUCCESS || product_ret < LIBUSB_SUCCESS || if (serial_ret < LIBUSB_SUCCESS)
serial_ret < LIBUSB_SUCCESS)
{ {
ERROR_LOG_FMT(IOS_WIIMOTE, WARN_LOG_FMT(IOS_WIIMOTE,
"Failed to get descriptor for device {:04x}:{:04x} (rev {:x}): {}/{}/{}", "Failed to get string for serial number descriptor {:02x} for device "
device_descriptor.idVendor, device_descriptor.idProduct, "{:04x}:{:04x} (rev {:x}): {}",
device_descriptor.bcdDevice, LibusbUtils::ErrorWrap(manufacturer_ret), device_descriptor.iSerialNumber, device_descriptor.idVendor,
LibusbUtils::ErrorWrap(product_ret), LibusbUtils::ErrorWrap(serial_ret)); device_descriptor.idProduct, device_descriptor.bcdDevice,
return true; LibusbUtils::ErrorWrap(serial_ret));
serial_number[0] = '?';
serial_number[1] = '\0';
} }
NOTICE_LOG_FMT(IOS_WIIMOTE, "Using device {:04x}:{:04x} (rev {:x}) for Bluetooth: {} {} {}", NOTICE_LOG_FMT(IOS_WIIMOTE, "Using device {:04x}:{:04x} (rev {:x}) for Bluetooth: {} {} {}",
device_descriptor.idVendor, device_descriptor.idProduct, device_descriptor.idVendor, device_descriptor.idProduct,