summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2022-07-22 02:00:13 +0200
committerGitHub <noreply@github.com>2022-07-22 02:00:13 +0200
commitdf399b0995febe451ecf231c9bfb68b73d51e3bb (patch)
tree309f6e1f9ce8589a8c9c45c64c2c83d92ad95c27 /Source
parent57f106d521e1ec65cc0b10fc6f68dcd56fcbc0d8 (diff)
parenta23a7f7b10db50693e2ebbeff21e6cdde64c347e (diff)
Merge pull request #10878 from Pokechu22/btreal-allow-libusb-descriptor-errors
BTReal: Treat libusb_get_string_descriptor_ascii failure as non-fatal warning
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp39
1 files changed, 31 insertions, 8 deletions
diff --git a/Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp b/Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp
index 36ad1ed82c..b093add42d 100644
--- a/Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp
+++ b/Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp
@@ -106,19 +106,42 @@ std::optional<IPCReply> BluetoothRealDevice::Open(const OpenRequest& request)
unsigned char manufacturer[50] = {}, product[50] = {}, serial_number[50] = {};
const int manufacturer_ret = libusb_get_string_descriptor_ascii(
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(
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(
m_handle, device_descriptor.iSerialNumber, serial_number, sizeof(serial_number));
- if (manufacturer_ret < LIBUSB_SUCCESS || product_ret < LIBUSB_SUCCESS ||
- serial_ret < LIBUSB_SUCCESS)
+ if (serial_ret < LIBUSB_SUCCESS)
{
- ERROR_LOG_FMT(IOS_WIIMOTE,
- "Failed to get descriptor for device {:04x}:{:04x} (rev {:x}): {}/{}/{}",
- device_descriptor.idVendor, device_descriptor.idProduct,
- device_descriptor.bcdDevice, LibusbUtils::ErrorWrap(manufacturer_ret),
- LibusbUtils::ErrorWrap(product_ret), LibusbUtils::ErrorWrap(serial_ret));
- return true;
+ WARN_LOG_FMT(IOS_WIIMOTE,
+ "Failed to get string for serial number descriptor {:02x} for device "
+ "{:04x}:{:04x} (rev {:x}): {}",
+ device_descriptor.iSerialNumber, device_descriptor.idVendor,
+ device_descriptor.idProduct, device_descriptor.bcdDevice,
+ LibusbUtils::ErrorWrap(serial_ret));
+ serial_number[0] = '?';
+ serial_number[1] = '\0';
}
NOTICE_LOG_FMT(IOS_WIIMOTE, "Using device {:04x}:{:04x} (rev {:x}) for Bluetooth: {} {} {}",
device_descriptor.idVendor, device_descriptor.idProduct,