btdrv-mitm: remove IsJoycon function and always check all official controller names instead

This commit is contained in:
ndeadly 2020-09-08 01:24:52 +02:00
parent 9f44f747f4
commit 41861b9d29
2 changed files with 5 additions and 11 deletions

View file

@ -39,6 +39,7 @@ namespace ams::controller {
} }
ControllerType Identify(const BluetoothDevicesSettings *device) { ControllerType Identify(const BluetoothDevicesSettings *device) {
for (auto hwId : SwitchController::hardware_ids) { for (auto hwId : SwitchController::hardware_ids) {
if ( (device->vid == hwId.vid) && (device->pid == hwId.pid) ) { if ( (device->vid == hwId.vid) && (device->pid == hwId.pid) ) {
return ControllerType_Switch; return ControllerType_Switch;
@ -92,11 +93,10 @@ namespace ams::controller {
return ControllerType_Xiaomi; return ControllerType_Xiaomi;
} }
} }
// Handle the case where joycons have been assigned random hardware ids when paired via rails // Check for third party switch controllers or official switch controllers that have been assigned garbage IDs
if (IsJoyCon(device->name)) { if (IsOfficialSwitchControllerName(device->name))
return ControllerType_Switch;; return ControllerType_Switch;
}
return ControllerType_Unknown; return ControllerType_Unknown;
} }
@ -106,11 +106,6 @@ namespace ams::controller {
(((cod->cod[2] & 0x0f) == cod_minor_gamepad) || ((cod->cod[2] & 0x0f) == cod_minor_joystick)); (((cod->cod[2] & 0x0f) == cod_minor_gamepad) || ((cod->cod[2] & 0x0f) == cod_minor_joystick));
} }
bool IsJoyCon(const char *name) {
return std::strncmp(name, "Joy-Con (L)", sizeof(BluetoothName)) == 0 ||
std::strncmp(name, "Joy-Con (R)", sizeof(BluetoothName)) == 0;
}
bool IsOfficialSwitchControllerName(const char *name) { bool IsOfficialSwitchControllerName(const char *name) {
return std::strncmp(name, "Joy-Con (L)", sizeof(BluetoothName)) == 0 || return std::strncmp(name, "Joy-Con (L)", sizeof(BluetoothName)) == 0 ||
std::strncmp(name, "Joy-Con (R)", sizeof(BluetoothName)) == 0 || std::strncmp(name, "Joy-Con (R)", sizeof(BluetoothName)) == 0 ||

View file

@ -46,7 +46,6 @@ namespace ams::controller {
ControllerType Identify(const BluetoothDevicesSettings *device); ControllerType Identify(const BluetoothDevicesSettings *device);
bool IsGamepad(const bluetooth::DeviceClass *cod); bool IsGamepad(const bluetooth::DeviceClass *cod);
bool IsJoyCon(const char *name);
bool IsOfficialSwitchControllerName(const char *name); bool IsOfficialSwitchControllerName(const char *name);
void AttachHandler(const bluetooth::Address *address); void AttachHandler(const bluetooth::Address *address);