From ceb3f05c7e85934a39e49e39a9be1a7dcfbde971 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Fri, 18 Aug 2023 17:21:01 +0300 Subject: [PATCH] NFC::StopCommunication --- include/services/nfc.hpp | 1 + src/core/services/nfc.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/services/nfc.hpp b/include/services/nfc.hpp index dabee9a9..f56a9ba8 100644 --- a/include/services/nfc.hpp +++ b/include/services/nfc.hpp @@ -30,6 +30,7 @@ class NFCService { void initialize(u32 messagePointer); void getTagInRangeEvent(u32 messagePointer); void getTagOutOfRangeEvent(u32 messagePointer); + void stopCommunication(u32 messagePointer); public: NFCService(Memory& mem, Kernel& kernel) : mem(mem), kernel(kernel) {} diff --git a/src/core/services/nfc.cpp b/src/core/services/nfc.cpp index 31f0ff7f..fba917f0 100644 --- a/src/core/services/nfc.cpp +++ b/src/core/services/nfc.cpp @@ -5,6 +5,7 @@ namespace NFCCommands { enum : u32 { Initialize = 0x00010040, + StopCommunication = 0x00040000, GetTagInRangeEvent = 0x000B0000, GetTagOutOfRangeEvent = 0x000C0000, CommunicationGetStatus = 0x000F0000, @@ -25,6 +26,7 @@ void NFCService::handleSyncRequest(u32 messagePointer) { case NFCCommands::Initialize: initialize(messagePointer); break; case NFCCommands::GetTagInRangeEvent: getTagInRangeEvent(messagePointer); break; case NFCCommands::GetTagOutOfRangeEvent: getTagOutOfRangeEvent(messagePointer); break; + case NFCCommands::StopCommunication: stopCommunication(messagePointer); break; default: Helpers::panic("NFC service requested. Command: %08X\n", command); } } @@ -84,4 +86,12 @@ void NFCService::communicationGetStatus(u32 messagePointer) { mem.write32(messagePointer, IPC::responseHeader(0xF, 2, 0)); mem.write32(messagePointer + 4, Result::Success); mem.write8(messagePointer + 8, static_cast(adapterStatus)); +} + +void NFCService::stopCommunication(u32 messagePointer) { + log("NFC::StopCommunication\n"); + // TODO: Actually stop communication when we emulate amiibo + + mem.write32(messagePointer, IPC::responseHeader(0x4, 1, 0)); + mem.write32(messagePointer + 4, Result::Success); } \ No newline at end of file