|
|
|
@ -262,6 +262,16 @@ DriverResult JoyconDriver::SetPollingMode() { |
|
|
|
irs_protocol->DisableIrs(); |
|
|
|
} |
|
|
|
|
|
|
|
if (nfc_protocol->IsEnabled()) { |
|
|
|
amiibo_detected = false; |
|
|
|
nfc_protocol->DisableNfc(); |
|
|
|
} |
|
|
|
|
|
|
|
if (ring_protocol->IsEnabled()) { |
|
|
|
ring_connected = false; |
|
|
|
ring_protocol->DisableRingCon(); |
|
|
|
} |
|
|
|
|
|
|
|
if (irs_enabled && supported_features.irs) { |
|
|
|
auto result = irs_protocol->EnableIrs(); |
|
|
|
if (result == DriverResult::Success) { |
|
|
|
@ -272,11 +282,6 @@ DriverResult JoyconDriver::SetPollingMode() { |
|
|
|
LOG_ERROR(Input, "Error enabling IRS"); |
|
|
|
} |
|
|
|
|
|
|
|
if (nfc_protocol->IsEnabled()) { |
|
|
|
amiibo_detected = false; |
|
|
|
nfc_protocol->DisableNfc(); |
|
|
|
} |
|
|
|
|
|
|
|
if (nfc_enabled && supported_features.nfc) { |
|
|
|
auto result = nfc_protocol->EnableNfc(); |
|
|
|
if (result == DriverResult::Success) { |
|
|
|
@ -290,11 +295,6 @@ DriverResult JoyconDriver::SetPollingMode() { |
|
|
|
LOG_ERROR(Input, "Error enabling NFC"); |
|
|
|
} |
|
|
|
|
|
|
|
if (ring_protocol->IsEnabled()) { |
|
|
|
ring_connected = false; |
|
|
|
ring_protocol->DisableRingCon(); |
|
|
|
} |
|
|
|
|
|
|
|
if (hidbus_enabled && supported_features.hidbus) { |
|
|
|
auto result = ring_protocol->EnableRingCon(); |
|
|
|
if (result == DriverResult::Success) { |
|
|
|
@ -418,6 +418,12 @@ DriverResult JoyconDriver::SetPasiveMode() { |
|
|
|
} |
|
|
|
|
|
|
|
DriverResult JoyconDriver::SetActiveMode() { |
|
|
|
if (is_ring_disabled_by_irs) { |
|
|
|
is_ring_disabled_by_irs = false; |
|
|
|
SetActiveMode(); |
|
|
|
return SetRingConMode(); |
|
|
|
} |
|
|
|
|
|
|
|
std::scoped_lock lock{mutex}; |
|
|
|
motion_enabled = true; |
|
|
|
hidbus_enabled = false; |
|
|
|
@ -434,6 +440,10 @@ DriverResult JoyconDriver::SetIrMode() { |
|
|
|
return DriverResult::NotSupported; |
|
|
|
} |
|
|
|
|
|
|
|
if (ring_connected) { |
|
|
|
is_ring_disabled_by_irs = true; |
|
|
|
} |
|
|
|
|
|
|
|
motion_enabled = false; |
|
|
|
hidbus_enabled = false; |
|
|
|
nfc_enabled = false; |
|
|
|
|