summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorShawn Rast <shawn@rast.dev>2025-06-24 00:19:52 -0500
committerShawn Rast <shawn@rast.dev>2025-06-24 15:39:46 -0500
commit71fa08813a25d152ffe7bfe0e82b3330dad3a23f (patch)
tree07a3c0babc56219bc54e3fbc10175cad1a829c0c /Source/Core
parentfa9f71e48232e054605e721266c90cb106ca6924 (diff)
BT passthrough uses selected device rather than first alphabetical compatible device
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp12
-rw-r--r--Source/Core/Core/IOS/USB/Bluetooth/BTReal.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp b/Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp
index fae0c6e662..7940c37fc0 100644
--- a/Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp
+++ b/Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp
@@ -73,6 +73,13 @@ BluetoothRealDevice::~BluetoothRealDevice()
SaveLinkKeys();
}
+bool BluetoothRealDevice::HasConfiguredBluetoothDevice()
+{
+ const int configured_vid = Config::Get(Config::MAIN_BLUETOOTH_PASSTHROUGH_VID);
+ const int configured_pid = Config::Get(Config::MAIN_BLUETOOTH_PASSTHROUGH_PID);
+ return configured_vid != -1 && configured_pid != -1;
+}
+
bool BluetoothRealDevice::IsConfiguredBluetoothDevice(u16 vid, u16 pid)
{
const int configured_vid = Config::Get(Config::MAIN_BLUETOOTH_PASSTHROUGH_VID);
@@ -99,6 +106,11 @@ std::optional<IPCReply> BluetoothRealDevice::Open(const OpenRequest& request)
return true;
}
+ if (HasConfiguredBluetoothDevice() &&
+ !IsConfiguredBluetoothDevice(device_descriptor.idVendor, device_descriptor.idProduct))
+ {
+ return true;
+ }
if (IsBluetoothDevice(device_descriptor) && OpenDevice(device_descriptor, device))
{
unsigned char manufacturer[50] = {}, product[50] = {}, serial_number[50] = {};
diff --git a/Source/Core/Core/IOS/USB/Bluetooth/BTReal.h b/Source/Core/Core/IOS/USB/Bluetooth/BTReal.h
index 96a18c0617..b40ace416e 100644
--- a/Source/Core/Core/IOS/USB/Bluetooth/BTReal.h
+++ b/Source/Core/Core/IOS/USB/Bluetooth/BTReal.h
@@ -59,6 +59,7 @@ public:
void HandleBulkOrIntrTransfer(libusb_transfer* finished_transfer);
static bool IsConfiguredBluetoothDevice(u16 vid, u16 pid);
+ static bool HasConfiguredBluetoothDevice();
struct BluetoothDeviceInfo
{