mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-23 07:12:46 +01:00
Deglobalize System: NFP
This commit is contained in:
parent
482a03f8a5
commit
8df2a98f75
4 changed files with 16 additions and 14 deletions
|
@ -23,9 +23,9 @@ constexpr ResultCode ERR_TAG_FAILED(ErrorModule::NFP,
|
||||||
constexpr ResultCode ERR_NO_APPLICATION_AREA(ErrorModule::NFP, 152);
|
constexpr ResultCode ERR_NO_APPLICATION_AREA(ErrorModule::NFP, 152);
|
||||||
} // namespace ErrCodes
|
} // namespace ErrCodes
|
||||||
|
|
||||||
Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
|
Module::Interface::Interface(std::shared_ptr<Module> module, Core::System& system, const char* name)
|
||||||
: ServiceFramework(name), module(std::move(module)) {
|
: ServiceFramework(name), module(std::move(module)), system(system) {
|
||||||
auto& kernel = Core::System::GetInstance().Kernel();
|
auto& kernel = system.Kernel();
|
||||||
nfc_tag_load = Kernel::WritableEvent::CreateEventPair(kernel, Kernel::ResetType::Automatic,
|
nfc_tag_load = Kernel::WritableEvent::CreateEventPair(kernel, Kernel::ResetType::Automatic,
|
||||||
"IUser:NFCTagDetected");
|
"IUser:NFCTagDetected");
|
||||||
}
|
}
|
||||||
|
@ -34,8 +34,8 @@ Module::Interface::~Interface() = default;
|
||||||
|
|
||||||
class IUser final : public ServiceFramework<IUser> {
|
class IUser final : public ServiceFramework<IUser> {
|
||||||
public:
|
public:
|
||||||
IUser(Module::Interface& nfp_interface)
|
IUser(Module::Interface& nfp_interface, Core::System& system)
|
||||||
: ServiceFramework("NFP::IUser"), nfp_interface(nfp_interface) {
|
: ServiceFramework("NFP::IUser"), nfp_interface(nfp_interface), system(system) {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &IUser::Initialize, "Initialize"},
|
{0, &IUser::Initialize, "Initialize"},
|
||||||
{1, &IUser::Finalize, "Finalize"},
|
{1, &IUser::Finalize, "Finalize"},
|
||||||
|
@ -65,7 +65,7 @@ public:
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
|
|
||||||
auto& kernel = Core::System::GetInstance().Kernel();
|
auto& kernel = system.Kernel();
|
||||||
deactivate_event = Kernel::WritableEvent::CreateEventPair(
|
deactivate_event = Kernel::WritableEvent::CreateEventPair(
|
||||||
kernel, Kernel::ResetType::Automatic, "IUser:DeactivateEvent");
|
kernel, Kernel::ResetType::Automatic, "IUser:DeactivateEvent");
|
||||||
availability_change_event = Kernel::WritableEvent::CreateEventPair(
|
availability_change_event = Kernel::WritableEvent::CreateEventPair(
|
||||||
|
@ -324,6 +324,7 @@ private:
|
||||||
Kernel::EventPair deactivate_event;
|
Kernel::EventPair deactivate_event;
|
||||||
Kernel::EventPair availability_change_event;
|
Kernel::EventPair availability_change_event;
|
||||||
const Module::Interface& nfp_interface;
|
const Module::Interface& nfp_interface;
|
||||||
|
Core::System& system;
|
||||||
};
|
};
|
||||||
|
|
||||||
void Module::Interface::CreateUserInterface(Kernel::HLERequestContext& ctx) {
|
void Module::Interface::CreateUserInterface(Kernel::HLERequestContext& ctx) {
|
||||||
|
@ -331,7 +332,7 @@ void Module::Interface::CreateUserInterface(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.PushIpcInterface<IUser>(*this);
|
rb.PushIpcInterface<IUser>(*this, system);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Module::Interface::LoadAmiibo(const std::vector<u8>& buffer) {
|
bool Module::Interface::LoadAmiibo(const std::vector<u8>& buffer) {
|
||||||
|
@ -353,9 +354,9 @@ const Module::Interface::AmiiboFile& Module::Interface::GetAmiiboBuffer() const
|
||||||
return amiibo;
|
return amiibo;
|
||||||
}
|
}
|
||||||
|
|
||||||
void InstallInterfaces(SM::ServiceManager& service_manager) {
|
void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) {
|
||||||
auto module = std::make_shared<Module>();
|
auto module = std::make_shared<Module>();
|
||||||
std::make_shared<NFP_User>(module)->InstallAsService(service_manager);
|
std::make_shared<NFP_User>(module, system)->InstallAsService(service_manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Service::NFP
|
} // namespace Service::NFP
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Module final {
|
||||||
public:
|
public:
|
||||||
class Interface : public ServiceFramework<Interface> {
|
class Interface : public ServiceFramework<Interface> {
|
||||||
public:
|
public:
|
||||||
explicit Interface(std::shared_ptr<Module> module, const char* name);
|
explicit Interface(std::shared_ptr<Module> module, Core::System& system, const char* name);
|
||||||
~Interface() override;
|
~Interface() override;
|
||||||
|
|
||||||
struct ModelInfo {
|
struct ModelInfo {
|
||||||
|
@ -43,9 +43,10 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::shared_ptr<Module> module;
|
std::shared_ptr<Module> module;
|
||||||
|
Core::System& system;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
void InstallInterfaces(SM::ServiceManager& service_manager);
|
void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system);
|
||||||
|
|
||||||
} // namespace Service::NFP
|
} // namespace Service::NFP
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
|
|
||||||
namespace Service::NFP {
|
namespace Service::NFP {
|
||||||
|
|
||||||
NFP_User::NFP_User(std::shared_ptr<Module> module)
|
NFP_User::NFP_User(std::shared_ptr<Module> module, Core::System& system)
|
||||||
: Module::Interface(std::move(module), "nfp:user") {
|
: Module::Interface(std::move(module), system, "nfp:user") {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &NFP_User::CreateUserInterface, "CreateUserInterface"},
|
{0, &NFP_User::CreateUserInterface, "CreateUserInterface"},
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,7 +10,7 @@ namespace Service::NFP {
|
||||||
|
|
||||||
class NFP_User final : public Module::Interface {
|
class NFP_User final : public Module::Interface {
|
||||||
public:
|
public:
|
||||||
explicit NFP_User(std::shared_ptr<Module> module);
|
explicit NFP_User(std::shared_ptr<Module> module, Core::System& system);
|
||||||
~NFP_User() override;
|
~NFP_User() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue