mirror of
https://github.com/yuzu-mirror/yuzu.git
synced 2024-09-07 11:59:10 +01:00
service: Add nfc services
3dbrew was used for the command information.
This commit is contained in:
parent
43558dc40a
commit
e8a960f6a1
8 changed files with 199 additions and 30 deletions
|
@ -107,6 +107,9 @@ set(SRCS
|
||||||
hle/service/mic_u.cpp
|
hle/service/mic_u.cpp
|
||||||
hle/service/ndm/ndm.cpp
|
hle/service/ndm/ndm.cpp
|
||||||
hle/service/ndm/ndm_u.cpp
|
hle/service/ndm/ndm_u.cpp
|
||||||
|
hle/service/nfc/nfc.cpp
|
||||||
|
hle/service/nfc/nfc_m.cpp
|
||||||
|
hle/service/nfc/nfc_u.cpp
|
||||||
hle/service/news/news.cpp
|
hle/service/news/news.cpp
|
||||||
hle/service/news/news_s.cpp
|
hle/service/news/news_s.cpp
|
||||||
hle/service/news/news_u.cpp
|
hle/service/news/news_u.cpp
|
||||||
|
@ -258,6 +261,9 @@ set(HEADERS
|
||||||
hle/service/mic_u.h
|
hle/service/mic_u.h
|
||||||
hle/service/ndm/ndm.h
|
hle/service/ndm/ndm.h
|
||||||
hle/service/ndm/ndm_u.h
|
hle/service/ndm/ndm_u.h
|
||||||
|
hle/service/nfc/nfc.h
|
||||||
|
hle/service/nfc/nfc_m.h
|
||||||
|
hle/service/nfc/nfc_u.h
|
||||||
hle/service/news/news.h
|
hle/service/news/news.h
|
||||||
hle/service/news/news_s.h
|
hle/service/news/news_s.h
|
||||||
hle/service/news/news_u.h
|
hle/service/news/news_u.h
|
||||||
|
|
18
src/core/hle/service/nfc/nfc.cpp
Normal file
18
src/core/hle/service/nfc/nfc.cpp
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
// Copyright 2016 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "core/hle/service/nfc/nfc.h"
|
||||||
|
#include "core/hle/service/nfc/nfc_m.h"
|
||||||
|
#include "core/hle/service/nfc/nfc_u.h"
|
||||||
|
|
||||||
|
namespace Service {
|
||||||
|
namespace NFC {
|
||||||
|
|
||||||
|
void Init() {
|
||||||
|
AddService(new NFC_M());
|
||||||
|
AddService(new NFC_U());
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace NFC
|
||||||
|
} // namespace Service
|
14
src/core/hle/service/nfc/nfc.h
Normal file
14
src/core/hle/service/nfc/nfc.h
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
// Copyright 2016 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace Service {
|
||||||
|
namespace NFC {
|
||||||
|
|
||||||
|
/// Initialize all NFC services.
|
||||||
|
void Init();
|
||||||
|
|
||||||
|
} // namespace NFC
|
||||||
|
} // namespace Service
|
44
src/core/hle/service/nfc/nfc_m.cpp
Normal file
44
src/core/hle/service/nfc/nfc_m.cpp
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
// Copyright 2016 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "core/hle/service/nfc/nfc_m.h"
|
||||||
|
|
||||||
|
namespace Service {
|
||||||
|
namespace NFC {
|
||||||
|
|
||||||
|
const Interface::FunctionInfo FunctionTable[] = {
|
||||||
|
// clang-format off
|
||||||
|
// nfc:u shared commands
|
||||||
|
{0x00010040, nullptr, "Initialize"},
|
||||||
|
{0x00020040, nullptr, "Shutdown"},
|
||||||
|
{0x00030000, nullptr, "StartCommunication"},
|
||||||
|
{0x00040000, nullptr, "StopCommunication"},
|
||||||
|
{0x00050040, nullptr, "StartTagScanning"},
|
||||||
|
{0x00060000, nullptr, "StopTagScanning"},
|
||||||
|
{0x00070000, nullptr, "LoadAmiiboData"},
|
||||||
|
{0x00080000, nullptr, "ResetTagScanState"},
|
||||||
|
{0x00090002, nullptr, "UpdateStoredAmiiboData"},
|
||||||
|
{0x000D0000, nullptr, "GetTagState"},
|
||||||
|
{0x000F0000, nullptr, "CommunicationGetStatus"},
|
||||||
|
{0x00100000, nullptr, "GetTagInfo2"},
|
||||||
|
{0x00110000, nullptr, "GetTagInfo"},
|
||||||
|
{0x00120000, nullptr, "CommunicationGetResult"},
|
||||||
|
{0x00130040, nullptr, "OpenAppData"},
|
||||||
|
{0x00140384, nullptr, "InitializeWriteAppData"},
|
||||||
|
{0x00150040, nullptr, "ReadAppData"},
|
||||||
|
{0x00160242, nullptr, "WriteAppData"},
|
||||||
|
{0x00170000, nullptr, "GetAmiiboSettings"},
|
||||||
|
{0x00180000, nullptr, "GetAmiiboConfig"},
|
||||||
|
{0x00190000, nullptr, "GetAppDataInitStruct"},
|
||||||
|
// nfc:m
|
||||||
|
{0x04040A40, nullptr, "SetAmiiboSettings"}
|
||||||
|
// clang-format on
|
||||||
|
};
|
||||||
|
|
||||||
|
NFC_M::NFC_M() {
|
||||||
|
Register(FunctionTable);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace NFC
|
||||||
|
} // namespace Service
|
22
src/core/hle/service/nfc/nfc_m.h
Normal file
22
src/core/hle/service/nfc/nfc_m.h
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
// Copyright 2016 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
|
namespace Service {
|
||||||
|
namespace NFC {
|
||||||
|
|
||||||
|
class NFC_M final : public Interface {
|
||||||
|
public:
|
||||||
|
NFC_M();
|
||||||
|
|
||||||
|
std::string GetPortName() const override {
|
||||||
|
return "nfc:m";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace NFC
|
||||||
|
} // namespace Service
|
41
src/core/hle/service/nfc/nfc_u.cpp
Normal file
41
src/core/hle/service/nfc/nfc_u.cpp
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
// Copyright 2016 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "core/hle/service/nfc/nfc_u.h"
|
||||||
|
|
||||||
|
namespace Service {
|
||||||
|
namespace NFC {
|
||||||
|
|
||||||
|
const Interface::FunctionInfo FunctionTable[] = {
|
||||||
|
// clang-format off
|
||||||
|
{0x00010040, nullptr, "Initialize"},
|
||||||
|
{0x00020040, nullptr, "Shutdown"},
|
||||||
|
{0x00030000, nullptr, "StartCommunication"},
|
||||||
|
{0x00040000, nullptr, "StopCommunication"},
|
||||||
|
{0x00050040, nullptr, "StartTagScanning"},
|
||||||
|
{0x00060000, nullptr, "StopTagScanning"},
|
||||||
|
{0x00070000, nullptr, "LoadAmiiboData"},
|
||||||
|
{0x00080000, nullptr, "ResetTagScanState"},
|
||||||
|
{0x00090002, nullptr, "UpdateStoredAmiiboData"},
|
||||||
|
{0x000D0000, nullptr, "GetTagState"},
|
||||||
|
{0x000F0000, nullptr, "CommunicationGetStatus"},
|
||||||
|
{0x00100000, nullptr, "GetTagInfo2"},
|
||||||
|
{0x00110000, nullptr, "GetTagInfo"},
|
||||||
|
{0x00120000, nullptr, "CommunicationGetResult"},
|
||||||
|
{0x00130040, nullptr, "OpenAppData"},
|
||||||
|
{0x00140384, nullptr, "InitializeWriteAppData"},
|
||||||
|
{0x00150040, nullptr, "ReadAppData"},
|
||||||
|
{0x00160242, nullptr, "WriteAppData"},
|
||||||
|
{0x00170000, nullptr, "GetAmiiboSettings"},
|
||||||
|
{0x00180000, nullptr, "GetAmiiboConfig"},
|
||||||
|
{0x00190000, nullptr, "GetAppDataInitStruct"},
|
||||||
|
// clang-format on
|
||||||
|
};
|
||||||
|
|
||||||
|
NFC_U::NFC_U() {
|
||||||
|
Register(FunctionTable);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace NFC
|
||||||
|
} // namespace Service
|
22
src/core/hle/service/nfc/nfc_u.h
Normal file
22
src/core/hle/service/nfc/nfc_u.h
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
// Copyright 2016 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
|
namespace Service {
|
||||||
|
namespace NFC {
|
||||||
|
|
||||||
|
class NFC_U final : public Interface {
|
||||||
|
public:
|
||||||
|
NFC_U();
|
||||||
|
|
||||||
|
std::string GetPortName() const override {
|
||||||
|
return "nfc:u";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace NFC
|
||||||
|
} // namespace Service
|
|
@ -28,6 +28,7 @@
|
||||||
#include "core/hle/service/mic_u.h"
|
#include "core/hle/service/mic_u.h"
|
||||||
#include "core/hle/service/ndm/ndm.h"
|
#include "core/hle/service/ndm/ndm.h"
|
||||||
#include "core/hle/service/news/news.h"
|
#include "core/hle/service/news/news.h"
|
||||||
|
#include "core/hle/service/nfc/nfc.h"
|
||||||
#include "core/hle/service/nim/nim.h"
|
#include "core/hle/service/nim/nim.h"
|
||||||
#include "core/hle/service/ns_s.h"
|
#include "core/hle/service/ns_s.h"
|
||||||
#include "core/hle/service/nwm_uds.h"
|
#include "core/hle/service/nwm_uds.h"
|
||||||
|
@ -109,21 +110,22 @@ void Init() {
|
||||||
AddNamedPort(new SRV::Interface);
|
AddNamedPort(new SRV::Interface);
|
||||||
AddNamedPort(new ERR_F::Interface);
|
AddNamedPort(new ERR_F::Interface);
|
||||||
|
|
||||||
Service::FS::ArchiveInit();
|
FS::ArchiveInit();
|
||||||
Service::AM::Init();
|
AM::Init();
|
||||||
Service::APT::Init();
|
APT::Init();
|
||||||
Service::BOSS::Init();
|
BOSS::Init();
|
||||||
Service::CAM::Init();
|
CAM::Init();
|
||||||
Service::CECD::Init();
|
CECD::Init();
|
||||||
Service::CFG::Init();
|
CFG::Init();
|
||||||
Service::DLP::Init();
|
DLP::Init();
|
||||||
Service::FRD::Init();
|
FRD::Init();
|
||||||
Service::HID::Init();
|
HID::Init();
|
||||||
Service::IR::Init();
|
IR::Init();
|
||||||
Service::NEWS::Init();
|
NDM::Init();
|
||||||
Service::NDM::Init();
|
NEWS::Init();
|
||||||
Service::NIM::Init();
|
NFC::Init();
|
||||||
Service::PTM::Init();
|
NIM::Init();
|
||||||
|
PTM::Init();
|
||||||
|
|
||||||
AddService(new AC_U::Interface);
|
AddService(new AC_U::Interface);
|
||||||
AddService(new ACT_A::Interface);
|
AddService(new ACT_A::Interface);
|
||||||
|
@ -148,21 +150,21 @@ void Init() {
|
||||||
/// Shutdown ServiceManager
|
/// Shutdown ServiceManager
|
||||||
void Shutdown() {
|
void Shutdown() {
|
||||||
|
|
||||||
Service::PTM::Shutdown();
|
PTM::Shutdown();
|
||||||
Service::NDM::Shutdown();
|
NIM::Shutdown();
|
||||||
Service::NIM::Shutdown();
|
NEWS::Shutdown();
|
||||||
Service::NEWS::Shutdown();
|
NDM::Shutdown();
|
||||||
Service::IR::Shutdown();
|
IR::Shutdown();
|
||||||
Service::HID::Shutdown();
|
HID::Shutdown();
|
||||||
Service::FRD::Shutdown();
|
FRD::Shutdown();
|
||||||
Service::DLP::Shutdown();
|
DLP::Shutdown();
|
||||||
Service::CFG::Shutdown();
|
CFG::Shutdown();
|
||||||
Service::CECD::Shutdown();
|
CECD::Shutdown();
|
||||||
Service::CAM::Shutdown();
|
CAM::Shutdown();
|
||||||
Service::BOSS::Shutdown();
|
BOSS::Shutdown();
|
||||||
Service::APT::Shutdown();
|
APT::Shutdown();
|
||||||
Service::AM::Shutdown();
|
AM::Shutdown();
|
||||||
Service::FS::ArchiveShutdown();
|
FS::ArchiveShutdown();
|
||||||
|
|
||||||
g_srv_services.clear();
|
g_srv_services.clear();
|
||||||
g_kernel_named_ports.clear();
|
g_kernel_named_ports.clear();
|
||||||
|
|
Loading…
Reference in a new issue