2026-09-26 10:30:39

Signed-off-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
lizzie
2026-09-26 10:30:39 +00:00
parent c94890ef3c
commit 4994bdc05c
2 changed files with 25 additions and 14 deletions
+23 -14
View File
@@ -49,25 +49,34 @@ public:
: ServiceFramework{system_, "IFloatingRegistrationRequest"} : ServiceFramework{system_, "IFloatingRegistrationRequest"}
{} {}
// Must be placed after all methods are defined (or declared).
// Define here your functions and methods, please order them. // Define here your functions and methods, please order them.
// Use FindRequestTipc for TIPC handlers. // Use FindRequestTipc for TIPC handlers.
static constexpr auto functions = CreateStaticMap( static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "GetSessionId"}, FunctionInfo{0, nullptr, "GetSessionId"},
FunctionInfo{12, nullptr, "GetAccountId"}, FunctionInfo{12, nullptr, "GetAccountId"},
FunctionInfo{13, nullptr, "GetLinkedNintendoAccountId"}, FunctionInfo{13, nullptr, "GetLinkedNintendoAccountId"},
FunctionInfo{14, nullptr, "GetNickname"}, FunctionInfo{14, nullptr, "GetNickname"},
FunctionInfo{15, nullptr, "GetProfileImage"}, FunctionInfo{15, nullptr, "GetProfileImage"},
FunctionInfo{16, nullptr, "GetProfileLargeImage", MakeVersionGate({18,0,0})}, FunctionInfo{16, nullptr, "GetProfileLargeImage", MakeVersionGate({18,0,0})},
FunctionInfo{21, nullptr, "LoadIdTokenCache"}, FunctionInfo{21, nullptr, "LoadIdTokenCache"},
FunctionInfo{100, nullptr, "RegisterUser"}, FunctionInfo{100, nullptr, "RegisterUser"},
FunctionInfo{101, nullptr, "RegisterUserWithUid"}, FunctionInfo{101, nullptr, "RegisterUserWithUid"},
FunctionInfo{102, nullptr, "RegisterNetworkServiceAccountAsync", MakeVersionGate({4,0,0})}, FunctionInfo{102, nullptr, "RegisterNetworkServiceAccountAsync", MakeVersionGate({4,0,0})},
FunctionInfo{103, nullptr, "RegisterNetworkServiceAccountWithUidAsync", MakeVersionGate({4,0,0})}, FunctionInfo{103, nullptr, "RegisterNetworkServiceAccountWithUidAsync", MakeVersionGate({4,0,0})},
FunctionInfo{110, nullptr, "SetSystemProgramIdentification"}, FunctionInfo{110, nullptr, "SetSystemProgramIdentification"},
FunctionInfo{111, nullptr, "EnsureIdTokenCacheAsync"} FunctionInfo{111, nullptr, "EnsureIdTokenCacheAsync"}
); );
FunctionInfoBase const* FindRequest(u32 key) override { FunctionInfoBase const* FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions); return HandlerTableGenerateWithFind(key, functions);
} }
}; };
``` ```
Try to keep service structures local, that is, don't place them on header files if they're only going to be used by a specific service.
In each `.cpp` file that uses `D<...>/C<...>` CMIF wrapper helpers, remember to include the corresponding instancer, so you don't face linker errors:
```c++
#include "core/hle/service/cmif_serialization.h"
```
This will properly instatiate the corresponding wrappers and decompose the provided arguments in the wiring order.
+2
View File
@@ -14,6 +14,7 @@
#include "core/hle/service/psc/time/service_manager.h" #include "core/hle/service/psc/time/service_manager.h"
#include "core/hle/service/psc/time/static.h" #include "core/hle/service/psc/time/static.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
#include "core/hle/service/cmif_serialization.h"
namespace Service::PSC { namespace Service::PSC {
@@ -109,6 +110,7 @@ public:
explicit IPmService(Core::System& system_) : ServiceFramework{system_, "psc:m"} {} explicit IPmService(Core::System& system_) : ServiceFramework{system_, "psc:m"} {}
~IPmService() override = default; ~IPmService() override = default;
private:
Result GetPmModule(Out<SharedPointer<IPmModule>> out_module) { Result GetPmModule(Out<SharedPointer<IPmModule>> out_module) {
LOG_DEBUG(Service_PSC, "called"); LOG_DEBUG(Service_PSC, "called");
*out_module = std::make_shared<IPmModule>(system); *out_module = std::make_shared<IPmModule>(system);