mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	nfc: Initialize device when controller is connected
This commit is contained in:
		@@ -42,8 +42,18 @@ NfcDevice::~NfcDevice() {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void NfcDevice::NpadUpdate(Core::HID::ControllerTriggerType type) {
 | 
			
		||||
    if (type == Core::HID::ControllerTriggerType::Connected ||
 | 
			
		||||
        type == Core::HID::ControllerTriggerType::Disconnected) {
 | 
			
		||||
    if (!is_initalized) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (type == Core::HID::ControllerTriggerType::Connected) {
 | 
			
		||||
        Initialize();
 | 
			
		||||
        availability_change_event->Signal();
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (type == Core::HID::ControllerTriggerType::Disconnected) {
 | 
			
		||||
        device_state = NFP::DeviceState::Unavailable;
 | 
			
		||||
        availability_change_event->Signal();
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
@@ -113,6 +123,7 @@ void NfcDevice::Initialize() {
 | 
			
		||||
    device_state =
 | 
			
		||||
        npad_device->HasNfc() ? NFP::DeviceState::Initialized : NFP::DeviceState::Unavailable;
 | 
			
		||||
    encrypted_tag_data = {};
 | 
			
		||||
    is_initalized = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void NfcDevice::Finalize() {
 | 
			
		||||
@@ -121,6 +132,7 @@ void NfcDevice::Finalize() {
 | 
			
		||||
        StopDetection();
 | 
			
		||||
    }
 | 
			
		||||
    device_state = NFP::DeviceState::Unavailable;
 | 
			
		||||
    is_initalized = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Result NfcDevice::StartDetection(NFP::TagProtocol allowed_protocol) {
 | 
			
		||||
 
 | 
			
		||||
@@ -67,6 +67,7 @@ private:
 | 
			
		||||
    Kernel::KEvent* deactivate_event = nullptr;
 | 
			
		||||
    Kernel::KEvent* availability_change_event = nullptr;
 | 
			
		||||
 | 
			
		||||
    bool is_initalized{};
 | 
			
		||||
    NFP::TagProtocol allowed_protocols{};
 | 
			
		||||
    NFP::DeviceState device_state{NFP::DeviceState::Unavailable};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -66,8 +66,18 @@ NfpDevice::~NfpDevice() {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void NfpDevice::NpadUpdate(Core::HID::ControllerTriggerType type) {
 | 
			
		||||
    if (type == Core::HID::ControllerTriggerType::Connected ||
 | 
			
		||||
        type == Core::HID::ControllerTriggerType::Disconnected) {
 | 
			
		||||
    if (!is_initalized) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (type == Core::HID::ControllerTriggerType::Connected) {
 | 
			
		||||
        Initialize();
 | 
			
		||||
        availability_change_event->Signal();
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (type == Core::HID::ControllerTriggerType::Disconnected) {
 | 
			
		||||
        device_state = DeviceState::Unavailable;
 | 
			
		||||
        availability_change_event->Signal();
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
@@ -145,6 +155,7 @@ void NfpDevice::Initialize() {
 | 
			
		||||
    device_state = npad_device->HasNfc() ? DeviceState::Initialized : DeviceState::Unavailable;
 | 
			
		||||
    encrypted_tag_data = {};
 | 
			
		||||
    tag_data = {};
 | 
			
		||||
    is_initalized = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void NfpDevice::Finalize() {
 | 
			
		||||
@@ -155,6 +166,7 @@ void NfpDevice::Finalize() {
 | 
			
		||||
        StopDetection();
 | 
			
		||||
    }
 | 
			
		||||
    device_state = DeviceState::Unavailable;
 | 
			
		||||
    is_initalized = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Result NfpDevice::StartDetection(TagProtocol allowed_protocol) {
 | 
			
		||||
 
 | 
			
		||||
@@ -92,6 +92,7 @@ private:
 | 
			
		||||
    Kernel::KEvent* deactivate_event = nullptr;
 | 
			
		||||
    Kernel::KEvent* availability_change_event = nullptr;
 | 
			
		||||
 | 
			
		||||
    bool is_initalized{};
 | 
			
		||||
    bool is_data_moddified{};
 | 
			
		||||
    bool is_app_area_open{};
 | 
			
		||||
    TagProtocol allowed_protocols{};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user