NFC::StopCommunication

This commit is contained in:
wheremyfoodat 2023-08-18 17:21:01 +03:00
parent 59649b27a0
commit ceb3f05c7e
2 changed files with 11 additions and 0 deletions

View file

@ -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) {}

View file

@ -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<u32>(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);
}