mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 00:59:44 -06:00
USBUtils: Refactor USB device handling
This commit is contained in:
@ -28,6 +28,7 @@
|
||||
#include "Core/IOS/USB/Bluetooth/LibUSBBluetoothAdapter.h"
|
||||
#include "Core/NetPlayProto.h"
|
||||
#include "Core/System.h"
|
||||
#include "Core/USBUtils.h"
|
||||
#include "Core/WiiUtils.h"
|
||||
|
||||
#include "DolphinQt/Config/Mapping/MappingWindow.h"
|
||||
@ -64,6 +65,7 @@ void WiimoteControllersWidget::UpdateBluetoothAvailableStatus()
|
||||
|
||||
void WiimoteControllersWidget::StartBluetoothAdapterRefresh()
|
||||
{
|
||||
#ifdef __LIBUSB__
|
||||
if (m_bluetooth_adapter_scan_in_progress)
|
||||
return;
|
||||
|
||||
@ -75,7 +77,7 @@ void WiimoteControllersWidget::StartBluetoothAdapterRefresh()
|
||||
|
||||
const auto scan_func = [this]() {
|
||||
INFO_LOG_FMT(COMMON, "Refreshing Bluetooth adapter list...");
|
||||
auto device_list = LibUSBBluetoothAdapter::ListDevices();
|
||||
auto device_list = USBUtils::ListDevices(LibUSBBluetoothAdapter::IsBluetoothDevice);
|
||||
INFO_LOG_FMT(COMMON, "{} Bluetooth adapters available.", device_list.size());
|
||||
const auto refresh_complete_func = [this, devices = std::move(device_list)]() {
|
||||
OnBluetoothAdapterRefreshComplete(devices);
|
||||
@ -84,10 +86,11 @@ void WiimoteControllersWidget::StartBluetoothAdapterRefresh()
|
||||
};
|
||||
|
||||
m_bluetooth_adapter_refresh_thread.Push(scan_func);
|
||||
#endif
|
||||
}
|
||||
|
||||
void WiimoteControllersWidget::OnBluetoothAdapterRefreshComplete(
|
||||
const std::vector<LibUSBBluetoothAdapter::BluetoothDeviceInfo>& devices)
|
||||
const std::vector<USBUtils::DeviceInfo>& devices)
|
||||
{
|
||||
const int configured_vid = Config::Get(Config::MAIN_BLUETOOTH_PASSTHROUGH_VID);
|
||||
const int configured_pid = Config::Get(Config::MAIN_BLUETOOTH_PASSTHROUGH_PID);
|
||||
@ -103,10 +106,8 @@ void WiimoteControllersWidget::OnBluetoothAdapterRefreshComplete(
|
||||
|
||||
for (auto& device : devices)
|
||||
{
|
||||
std::string name = device.name.empty() ? tr("Unknown Device").toStdString() : device.name;
|
||||
QString device_info =
|
||||
QString::fromStdString(fmt::format("{} ({:04x}:{:04x})", name, device.vid, device.pid));
|
||||
m_bluetooth_adapters->addItem(device_info, QVariant::fromValue(device));
|
||||
m_bluetooth_adapters->addItem(QString::fromStdString(device.ToDisplayString()),
|
||||
QVariant::fromValue(device));
|
||||
|
||||
if (!found_configured_device &&
|
||||
LibUSBBluetoothAdapter::IsConfiguredBluetoothDevice(device.vid, device.pid))
|
||||
@ -121,13 +122,12 @@ void WiimoteControllersWidget::OnBluetoothAdapterRefreshComplete(
|
||||
const QString name = QLatin1Char{'['} + tr("disconnected") + QLatin1Char(']');
|
||||
const std::string name_str = name.toStdString();
|
||||
|
||||
LibUSBBluetoothAdapter::BluetoothDeviceInfo disconnected_device;
|
||||
USBUtils::DeviceInfo disconnected_device;
|
||||
disconnected_device.vid = configured_vid;
|
||||
disconnected_device.pid = configured_pid;
|
||||
disconnected_device.name = name_str;
|
||||
|
||||
QString device_info = QString::fromStdString(
|
||||
fmt::format("{} ({:04x}:{:04x})", name_str, configured_vid, configured_pid));
|
||||
const QString device_info =
|
||||
QString::fromStdString(disconnected_device.ToDisplayString(name_str));
|
||||
|
||||
m_bluetooth_adapters->insertSeparator(m_bluetooth_adapters->count());
|
||||
m_bluetooth_adapters->addItem(device_info, QVariant::fromValue(disconnected_device));
|
||||
@ -311,13 +311,13 @@ void WiimoteControllersWidget::OnBluetoothPassthroughDeviceChanged(int index)
|
||||
|
||||
const QVariant item_data = m_bluetooth_adapters->itemData(index);
|
||||
|
||||
if (!item_data.isValid() || !item_data.canConvert<LibUSBBluetoothAdapter::BluetoothDeviceInfo>())
|
||||
if (!item_data.isValid() || !item_data.canConvert<USBUtils::DeviceInfo>())
|
||||
{
|
||||
ERROR_LOG_FMT(COMMON, "Invalid Bluetooth device info selected in WiimoteControllersWidget");
|
||||
return;
|
||||
}
|
||||
|
||||
const auto& device_info = item_data.value<LibUSBBluetoothAdapter::BluetoothDeviceInfo>();
|
||||
const auto& device_info = item_data.value<USBUtils::DeviceInfo>();
|
||||
|
||||
Config::SetBaseOrCurrent(Config::MAIN_BLUETOOTH_PASSTHROUGH_PID, device_info.pid);
|
||||
Config::SetBaseOrCurrent(Config::MAIN_BLUETOOTH_PASSTHROUGH_VID, device_info.vid);
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include <QWidget>
|
||||
|
||||
#include "Common/WorkQueueThread.h"
|
||||
#include "Core/IOS/USB/Bluetooth/LibUSBBluetoothAdapter.h"
|
||||
#include "Core/USBUtils.h"
|
||||
|
||||
class QCheckBox;
|
||||
class QComboBox;
|
||||
@ -38,8 +38,7 @@ private:
|
||||
void OnBluetoothPassthroughDeviceChanged(int index);
|
||||
void OnBluetoothPassthroughSyncPressed();
|
||||
void OnBluetoothPassthroughResetPressed();
|
||||
void OnBluetoothAdapterRefreshComplete(
|
||||
const std::vector<LibUSBBluetoothAdapter::BluetoothDeviceInfo>& devices);
|
||||
void OnBluetoothAdapterRefreshComplete(const std::vector<USBUtils::DeviceInfo>& devices);
|
||||
void OnWiimoteRefreshPressed();
|
||||
void OnWiimoteConfigure(size_t index);
|
||||
void StartBluetoothAdapterRefresh();
|
||||
|
Reference in New Issue
Block a user