hle: Eliminate need to specify command headers for IPC. (#6678)

This commit is contained in:
Steveice10 2023-07-14 17:32:59 -07:00 committed by GitHub
parent 0bedb28bdc
commit e043caac27
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
96 changed files with 2691 additions and 2707 deletions

View file

@ -24,7 +24,7 @@ void Module::serialize(Archive& ar, const unsigned int) {
SERIALIZE_IMPL(Module)
void Module::Interface::Initialize(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x01, 1, 0);
IPC::RequestParser rp(ctx);
const auto communication_mode = rp.PopEnum<CommunicationMode>();
LOG_INFO(Service_NFC, "called, communication_mode={}", communication_mode);
@ -58,7 +58,7 @@ void Module::Interface::Initialize(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::Finalize(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x02, 1, 0);
IPC::RequestParser rp(ctx);
const auto communication_mode = rp.PopEnum<CommunicationMode>();
LOG_INFO(Service_NFC, "called, communication_mode={}", communication_mode);
@ -92,7 +92,7 @@ void Module::Interface::Finalize(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::Connect(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x03, 0, 0);
IPC::RequestParser rp(ctx);
LOG_WARNING(Service_NFC, "(STUBBED) called");
@ -109,7 +109,7 @@ void Module::Interface::Connect(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::Disconnect(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x04, 0, 0);
IPC::RequestParser rp(ctx);
LOG_WARNING(Service_NFC, "(STUBBED) called");
@ -126,7 +126,7 @@ void Module::Interface::Disconnect(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::StartDetection(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x05, 1, 0);
IPC::RequestParser rp(ctx);
u16 in_val = rp.Pop<u16>();
LOG_INFO(Service_NFC, "called, in_val={:04x}", in_val);
@ -148,7 +148,7 @@ void Module::Interface::StartDetection(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::StopDetection(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x06, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -171,7 +171,7 @@ void Module::Interface::StopDetection(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::Mount(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x07, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -195,7 +195,7 @@ void Module::Interface::Mount(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::Unmount(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x08, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -215,7 +215,7 @@ void Module::Interface::Unmount(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::Flush(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x09, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -237,7 +237,7 @@ void Module::Interface::Flush(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetActivateEvent(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0B, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -254,7 +254,7 @@ void Module::Interface::GetActivateEvent(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetDeactivateEvent(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0C, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -271,7 +271,7 @@ void Module::Interface::GetDeactivateEvent(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetStatus(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0D, 0, 0);
IPC::RequestParser rp(ctx);
DeviceState state = DeviceState::NotInitialized;
LOG_DEBUG(Service_NFC, "called");
@ -288,7 +288,7 @@ void Module::Interface::GetStatus(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetTargetConnectionStatus(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0F, 0, 0);
IPC::RequestParser rp(ctx);
LOG_DEBUG(Service_NFC, "called");
@ -308,7 +308,7 @@ void Module::Interface::GetTargetConnectionStatus(Kernel::HLERequestContext& ctx
}
void Module::Interface::GetTagInfo2(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x10, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -330,7 +330,7 @@ void Module::Interface::GetTagInfo2(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetTagInfo(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x11, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -352,7 +352,7 @@ void Module::Interface::GetTagInfo(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetConnectResult(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x12, 0, 0);
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
rb.Push(RESULT_SUCCESS);
@ -361,7 +361,7 @@ void Module::Interface::GetConnectResult(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::OpenApplicationArea(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x13, 1, 0);
IPC::RequestParser rp(ctx);
u32 access_id = rp.Pop<u32>();
LOG_INFO(Service_NFC, "called, access_id={}", access_id);
@ -381,7 +381,7 @@ void Module::Interface::OpenApplicationArea(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::CreateApplicationArea(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x14, 18, 2);
IPC::RequestParser rp(ctx);
u32 access_id = rp.Pop<u32>();
[[maybe_unused]] u32 size = rp.Pop<u32>();
std::vector<u8> buffer = rp.PopStaticBuffer();
@ -401,7 +401,7 @@ void Module::Interface::CreateApplicationArea(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::ReadApplicationArea(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x15, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -422,7 +422,7 @@ void Module::Interface::ReadApplicationArea(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::WriteApplicationArea(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x16, 12, 2);
IPC::RequestParser rp(ctx);
[[maybe_unused]] u32 size = rp.Pop<u32>();
std::vector<u8> tag_uuid_info = rp.PopStaticBuffer();
std::vector<u8> buffer = rp.PopStaticBuffer();
@ -442,7 +442,7 @@ void Module::Interface::WriteApplicationArea(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetNfpRegisterInfo(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x17, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -463,7 +463,7 @@ void Module::Interface::GetNfpRegisterInfo(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetNfpCommonInfo(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x18, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -484,7 +484,7 @@ void Module::Interface::GetNfpCommonInfo(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::InitializeCreateInfo(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x19, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -503,7 +503,7 @@ void Module::Interface::InitializeCreateInfo(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::MountRom(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1A, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -525,7 +525,7 @@ void Module::Interface::MountRom(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetIdentificationBlock(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x1B, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -546,7 +546,7 @@ void Module::Interface::GetIdentificationBlock(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::Format(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x401, 3, 2);
IPC::RequestParser rp(ctx);
[[maybe_unused]] u32 unknown1 = rp.Pop<u32>();
[[maybe_unused]] u32 unknown2 = rp.Pop<u32>();
[[maybe_unused]] u32 unknown3 = rp.Pop<u32>();
@ -560,7 +560,7 @@ void Module::Interface::Format(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetAdminInfo(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x402, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -581,7 +581,7 @@ void Module::Interface::GetAdminInfo(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::GetEmptyRegisterInfo(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x403, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -597,7 +597,7 @@ void Module::Interface::GetEmptyRegisterInfo(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::SetRegisterInfo(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x404, 41, 0);
IPC::RequestParser rp(ctx);
const auto register_info = rp.PopRaw<RegisterInfoPrivate>();
LOG_INFO(Service_NFC, "called");
@ -615,7 +615,7 @@ void Module::Interface::SetRegisterInfo(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::DeleteRegisterInfo(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x405, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -632,7 +632,7 @@ void Module::Interface::DeleteRegisterInfo(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::DeleteApplicationArea(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x406, 0, 0);
IPC::RequestParser rp(ctx);
LOG_INFO(Service_NFC, "called");
@ -649,7 +649,7 @@ void Module::Interface::DeleteApplicationArea(Kernel::HLERequestContext& ctx) {
}
void Module::Interface::ExistsApplicationArea(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x407, 0, 0);
IPC::RequestParser rp(ctx);
if (nfc->nfc_mode != CommunicationMode::Amiibo) {
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);

View file

@ -13,41 +13,41 @@ NFC_M::NFC_M(std::shared_ptr<Module> nfc) : Module::Interface(std::move(nfc), "n
static const FunctionInfo functions[] = {
// nfc:u shared commands
// clang-format off
{IPC::MakeHeader(0x0001, 1, 0), &NFC_M::Initialize, "Initialize"},
{IPC::MakeHeader(0x0002, 1, 0), &NFC_M::Finalize, "Finalize"},
{IPC::MakeHeader(0x0003, 0, 0), &NFC_M::Connect, "Connect"},
{IPC::MakeHeader(0x0004, 0, 0), &NFC_M::Disconnect, "Disconnect"},
{IPC::MakeHeader(0x0005, 1, 0), &NFC_M::StartDetection, "StartDetection"},
{IPC::MakeHeader(0x0006, 0, 0), &NFC_M::StopDetection, "StopDetection"},
{IPC::MakeHeader(0x0007, 0, 0), &NFC_M::Mount, "Mount"},
{IPC::MakeHeader(0x0008, 0, 0), &NFC_M::Unmount, "Unmount"},
{IPC::MakeHeader(0x0009, 0, 2), &NFC_M::Flush, "Flush"},
{IPC::MakeHeader(0x000A, 0, 0), nullptr, "Restore"},
{IPC::MakeHeader(0x000B, 0, 0), &NFC_M::GetActivateEvent, "GetActivateEvent"},
{IPC::MakeHeader(0x000C, 0, 0), &NFC_M::GetDeactivateEvent, "GetDeactivateEvent"},
{IPC::MakeHeader(0x000D, 0, 0), &NFC_M::GetStatus, "GetStatus"},
{IPC::MakeHeader(0x000E, 0, 0), nullptr, "Unknown0x0E"},
{IPC::MakeHeader(0x000F, 0, 0), &NFC_M::GetTargetConnectionStatus, "GetTargetConnectionStatus"},
{IPC::MakeHeader(0x0010, 0, 0), &NFC_M::GetTagInfo2, "GetTagInfo2"},
{IPC::MakeHeader(0x0011, 0, 0), &NFC_M::GetTagInfo, "GetTagInfo"},
{IPC::MakeHeader(0x0012, 0, 0), &NFC_M::GetConnectResult, "GetConnectResult"},
{IPC::MakeHeader(0x0013, 1, 0), &NFC_M::OpenApplicationArea, "OpenApplicationArea"},
{IPC::MakeHeader(0x0014, 14, 4), &NFC_M::CreateApplicationArea, "CreateApplicationArea"},
{IPC::MakeHeader(0x0015, 1, 0), &NFC_M::ReadApplicationArea, "ReadApplicationArea"},
{IPC::MakeHeader(0x0016, 9, 2), &NFC_M::WriteApplicationArea, "WriteApplicationArea"},
{IPC::MakeHeader(0x0017, 0, 0), &NFC_M::GetNfpRegisterInfo, "GetNfpRegisterInfo"},
{IPC::MakeHeader(0x0018, 0, 0), &NFC_M::GetNfpCommonInfo, "GetNfpCommonInfo"},
{IPC::MakeHeader(0x0019, 0, 0), &NFC_M::InitializeCreateInfo, "InitializeCreateInfo"},
{IPC::MakeHeader(0x001A, 0, 0), &NFC_M::MountRom, "MountRom"},
{IPC::MakeHeader(0x001B, 0, 0), &NFC_M::GetIdentificationBlock, "GetIdentificationBlock"},
{0x0001, &NFC_M::Initialize, "Initialize"},
{0x0002, &NFC_M::Finalize, "Finalize"},
{0x0003, &NFC_M::Connect, "Connect"},
{0x0004, &NFC_M::Disconnect, "Disconnect"},
{0x0005, &NFC_M::StartDetection, "StartDetection"},
{0x0006, &NFC_M::StopDetection, "StopDetection"},
{0x0007, &NFC_M::Mount, "Mount"},
{0x0008, &NFC_M::Unmount, "Unmount"},
{0x0009, &NFC_M::Flush, "Flush"},
{0x000A, nullptr, "Restore"},
{0x000B, &NFC_M::GetActivateEvent, "GetActivateEvent"},
{0x000C, &NFC_M::GetDeactivateEvent, "GetDeactivateEvent"},
{0x000D, &NFC_M::GetStatus, "GetStatus"},
{0x000E, nullptr, "Unknown0x0E"},
{0x000F, &NFC_M::GetTargetConnectionStatus, "GetTargetConnectionStatus"},
{0x0010, &NFC_M::GetTagInfo2, "GetTagInfo2"},
{0x0011, &NFC_M::GetTagInfo, "GetTagInfo"},
{0x0012, &NFC_M::GetConnectResult, "GetConnectResult"},
{0x0013, &NFC_M::OpenApplicationArea, "OpenApplicationArea"},
{0x0014, &NFC_M::CreateApplicationArea, "CreateApplicationArea"},
{0x0015, &NFC_M::ReadApplicationArea, "ReadApplicationArea"},
{0x0016, &NFC_M::WriteApplicationArea, "WriteApplicationArea"},
{0x0017, &NFC_M::GetNfpRegisterInfo, "GetNfpRegisterInfo"},
{0x0018, &NFC_M::GetNfpCommonInfo, "GetNfpCommonInfo"},
{0x0019, &NFC_M::InitializeCreateInfo, "InitializeCreateInfo"},
{0x001A, &NFC_M::MountRom, "MountRom"},
{0x001B, &NFC_M::GetIdentificationBlock, "GetIdentificationBlock"},
// nfc:m
{IPC::MakeHeader(0x0401, 3, 2), &NFC_M::Format, "Format"},
{IPC::MakeHeader(0x0402, 0, 0), &NFC_M::GetAdminInfo, "GetAdminInfo"},
{IPC::MakeHeader(0x0403, 0, 0), &NFC_M::GetEmptyRegisterInfo, "GetEmptyRegisterInfo"},
{IPC::MakeHeader(0x0404, 41, 0), &NFC_M::SetRegisterInfo, "SetRegisterInfo"},
{IPC::MakeHeader(0x0405, 0, 0), &NFC_M::DeleteRegisterInfo, "DeleteRegisterInfo"},
{IPC::MakeHeader(0x0406, 0, 0), &NFC_M::DeleteApplicationArea, "DeleteApplicationArea"},
{IPC::MakeHeader(0x0407, 0, 0), &NFC_M::ExistsApplicationArea, "ExistsApplicationArea"}
{0x0401, &NFC_M::Format, "Format"},
{0x0402, &NFC_M::GetAdminInfo, "GetAdminInfo"},
{0x0403, &NFC_M::GetEmptyRegisterInfo, "GetEmptyRegisterInfo"},
{0x0404, &NFC_M::SetRegisterInfo, "SetRegisterInfo"},
{0x0405, &NFC_M::DeleteRegisterInfo, "DeleteRegisterInfo"},
{0x0406, &NFC_M::DeleteApplicationArea, "DeleteApplicationArea"},
{0x0407, &NFC_M::ExistsApplicationArea, "ExistsApplicationArea"}
// clang-format on
};
RegisterHandlers(functions);

View file

@ -12,40 +12,40 @@ namespace Service::NFC {
NFC_U::NFC_U(std::shared_ptr<Module> nfc) : Module::Interface(std::move(nfc), "nfc:u", 1) {
static const FunctionInfo functions[] = {
// clang-format off
{IPC::MakeHeader(0x0001, 1, 0), &NFC_U::Initialize, "Initialize"},
{IPC::MakeHeader(0x0002, 1, 0), &NFC_U::Finalize, "Finalize"},
{IPC::MakeHeader(0x0003, 0, 0), &NFC_U::Connect, "Connect"},
{IPC::MakeHeader(0x0004, 0, 0), &NFC_U::Disconnect, "Disconnect"},
{IPC::MakeHeader(0x0005, 1, 0), &NFC_U::StartDetection, "StartDetection"},
{IPC::MakeHeader(0x0006, 0, 0), &NFC_U::StopDetection, "StopDetection"},
{IPC::MakeHeader(0x0007, 0, 0), &NFC_U::Mount, "Mount"},
{IPC::MakeHeader(0x0008, 0, 0), &NFC_U::Unmount, "Unmount"},
{IPC::MakeHeader(0x0009, 0, 2), &NFC_U::Flush, "Flush"},
{IPC::MakeHeader(0x000A, 0, 0), nullptr, "Restore"},
{IPC::MakeHeader(0x000B, 0, 0), &NFC_U::GetActivateEvent, "GetActivateEvent"},
{IPC::MakeHeader(0x000C, 0, 0), &NFC_U::GetDeactivateEvent, "GetDeactivateEvent"},
{IPC::MakeHeader(0x000D, 0, 0), &NFC_U::GetStatus, "GetStatus"},
{IPC::MakeHeader(0x000E, 0, 0), nullptr, "Unknown0x0E"},
{IPC::MakeHeader(0x000F, 0, 0), &NFC_U::GetTargetConnectionStatus, "GetTargetConnectionStatus"},
{IPC::MakeHeader(0x0010, 0, 0), &NFC_U::GetTagInfo2, "GetTagInfo2"},
{IPC::MakeHeader(0x0011, 0, 0), &NFC_U::GetTagInfo, "GetTagInfo"},
{IPC::MakeHeader(0x0012, 0, 0), &NFC_U::GetConnectResult, "GetConnectResult"},
{IPC::MakeHeader(0x0013, 1, 0), &NFC_U::OpenApplicationArea, "OpenApplicationArea"},
{IPC::MakeHeader(0x0014, 14, 4), &NFC_U::CreateApplicationArea, "CreateApplicationArea"},
{IPC::MakeHeader(0x0015, 1, 0), &NFC_U::ReadApplicationArea, "ReadApplicationArea"},
{IPC::MakeHeader(0x0016, 9, 2), &NFC_U::WriteApplicationArea, "WriteApplicationArea"},
{IPC::MakeHeader(0x0017, 0, 0), &NFC_U::GetNfpRegisterInfo, "GetNfpRegisterInfo"},
{IPC::MakeHeader(0x0018, 0, 0), &NFC_U::GetNfpCommonInfo, "GetNfpCommonInfo"},
{IPC::MakeHeader(0x0019, 0, 0), &NFC_U::InitializeCreateInfo, "InitializeCreateInfo"},
{IPC::MakeHeader(0x001A, 0, 0), &NFC_U::MountRom, "MountRom"},
{IPC::MakeHeader(0x001B, 0, 0), &NFC_U::GetIdentificationBlock, "GetIdentificationBlock"},
{IPC::MakeHeader(0x001C, 0, 0), nullptr, "Unknown0x1C"},
{IPC::MakeHeader(0x001D, 0, 0), nullptr, "Unknown0x1D"},
{IPC::MakeHeader(0x001E, 0, 0), nullptr, "Unknown0x1E"},
{IPC::MakeHeader(0x001F, 0, 0), nullptr, "Unknown0x1F"},
{IPC::MakeHeader(0x0020, 0, 0), nullptr, "Unknown0x20"},
{IPC::MakeHeader(0x0021, 0, 0), nullptr, "Unknown0x21"},
{IPC::MakeHeader(0x0022, 0, 0), nullptr, "Unknown0x22"},
{0x0001, &NFC_U::Initialize, "Initialize"},
{0x0002, &NFC_U::Finalize, "Finalize"},
{0x0003, &NFC_U::Connect, "Connect"},
{0x0004, &NFC_U::Disconnect, "Disconnect"},
{0x0005, &NFC_U::StartDetection, "StartDetection"},
{0x0006, &NFC_U::StopDetection, "StopDetection"},
{0x0007, &NFC_U::Mount, "Mount"},
{0x0008, &NFC_U::Unmount, "Unmount"},
{0x0009, &NFC_U::Flush, "Flush"},
{0x000A, nullptr, "Restore"},
{0x000B, &NFC_U::GetActivateEvent, "GetActivateEvent"},
{0x000C, &NFC_U::GetDeactivateEvent, "GetDeactivateEvent"},
{0x000D, &NFC_U::GetStatus, "GetStatus"},
{0x000E, nullptr, "Unknown0x0E"},
{0x000F, &NFC_U::GetTargetConnectionStatus, "GetTargetConnectionStatus"},
{0x0010, &NFC_U::GetTagInfo2, "GetTagInfo2"},
{0x0011, &NFC_U::GetTagInfo, "GetTagInfo"},
{0x0012, &NFC_U::GetConnectResult, "GetConnectResult"},
{0x0013, &NFC_U::OpenApplicationArea, "OpenApplicationArea"},
{0x0014, &NFC_U::CreateApplicationArea, "CreateApplicationArea"},
{0x0015, &NFC_U::ReadApplicationArea, "ReadApplicationArea"},
{0x0016, &NFC_U::WriteApplicationArea, "WriteApplicationArea"},
{0x0017, &NFC_U::GetNfpRegisterInfo, "GetNfpRegisterInfo"},
{0x0018, &NFC_U::GetNfpCommonInfo, "GetNfpCommonInfo"},
{0x0019, &NFC_U::InitializeCreateInfo, "InitializeCreateInfo"},
{0x001A, &NFC_U::MountRom, "MountRom"},
{0x001B, &NFC_U::GetIdentificationBlock, "GetIdentificationBlock"},
{0x001C, nullptr, "Unknown0x1C"},
{0x001D, nullptr, "Unknown0x1D"},
{0x001E, nullptr, "Unknown0x1E"},
{0x001F, nullptr, "Unknown0x1F"},
{0x0020, nullptr, "Unknown0x20"},
{0x0021, nullptr, "Unknown0x21"},
{0x0022, nullptr, "Unknown0x22"},
// clang-format on
};
RegisterHandlers(functions);