|
|
|
@ -66,10 +66,6 @@ NfcDevice::~NfcDevice() { |
|
|
|
}; |
|
|
|
|
|
|
|
void NfcDevice::NpadUpdate(Core::HID::ControllerTriggerType type) { |
|
|
|
if (!is_initalized) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (type == Core::HID::ControllerTriggerType::Connected) { |
|
|
|
Initialize(); |
|
|
|
availability_change_event->Signal(); |
|
|
|
@ -77,12 +73,12 @@ void NfcDevice::NpadUpdate(Core::HID::ControllerTriggerType type) { |
|
|
|
} |
|
|
|
|
|
|
|
if (type == Core::HID::ControllerTriggerType::Disconnected) { |
|
|
|
device_state = DeviceState::Unavailable; |
|
|
|
Finalize(); |
|
|
|
availability_change_event->Signal(); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (type != Core::HID::ControllerTriggerType::Nfc) { |
|
|
|
if (!is_initalized) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
@ -90,6 +86,17 @@ void NfcDevice::NpadUpdate(Core::HID::ControllerTriggerType type) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// Ensure nfc mode is always active
|
|
|
|
if (npad_device->GetPollingMode(Core::HID::EmulatedDeviceIndex::RightIndex) == |
|
|
|
Common::Input::PollingMode::Active) { |
|
|
|
npad_device->SetPollingMode(Core::HID::EmulatedDeviceIndex::RightIndex, |
|
|
|
Common::Input::PollingMode::NFC); |
|
|
|
} |
|
|
|
|
|
|
|
if (type != Core::HID::ControllerTriggerType::Nfc) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
const auto nfc_status = npad_device->GetNfc(); |
|
|
|
switch (nfc_status.state) { |
|
|
|
case Common::Input::NfcState::NewAmiibo: |
|
|
|
@ -207,12 +214,15 @@ void NfcDevice::Initialize() { |
|
|
|
} |
|
|
|
|
|
|
|
void NfcDevice::Finalize() { |
|
|
|
if (npad_device->IsConnected()) { |
|
|
|
if (device_state == DeviceState::TagMounted) { |
|
|
|
Unmount(); |
|
|
|
} |
|
|
|
if (device_state == DeviceState::SearchingForTag || device_state == DeviceState::TagRemoved) { |
|
|
|
if (device_state == DeviceState::SearchingForTag || |
|
|
|
device_state == DeviceState::TagRemoved) { |
|
|
|
StopDetection(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (device_state != DeviceState::Unavailable) { |
|
|
|
npad_device->RemoveNfcHandle(); |
|
|
|
|