|
|
|
@ -52,7 +52,23 @@ public:
|
|
|
|
|
|
|
|
|
|
class ISelfController final : public ServiceFramework<ISelfController> {
|
|
|
|
|
public:
|
|
|
|
|
ISelfController() : ServiceFramework("ISelfController") {}
|
|
|
|
|
ISelfController() : ServiceFramework("ISelfController") {
|
|
|
|
|
static const FunctionInfo functions[] = {
|
|
|
|
|
{13, &ISelfController::SetFocusHandlingMode, "SetFocusHandlingMode"},
|
|
|
|
|
};
|
|
|
|
|
RegisterHandlers(functions);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
void SetFocusHandlingMode(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
// Takes 3 input u8s with each field located immediately after the previous u8, these are
|
|
|
|
|
// bool flags. No output.
|
|
|
|
|
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
|
|
|
|
|
LOG_WARNING(Service, "(STUBBED) called");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> {
|
|
|
|
@ -61,6 +77,7 @@ public:
|
|
|
|
|
static const FunctionInfo functions[] = {
|
|
|
|
|
{0, &ICommonStateGetter::GetEventHandle, "GetEventHandle"},
|
|
|
|
|
{1, &ICommonStateGetter::ReceiveMessage, "ReceiveMessage"},
|
|
|
|
|
{9, &ICommonStateGetter::GetCurrentFocusState, "GetCurrentFocusState"},
|
|
|
|
|
};
|
|
|
|
|
RegisterHandlers(functions);
|
|
|
|
|
|
|
|
|
@ -86,12 +103,39 @@ private:
|
|
|
|
|
LOG_WARNING(Service, "(STUBBED) called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetCurrentFocusState(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 3};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.Push<u32>(1); // 1: In focus, 2/3: Out of focus(running in "background")
|
|
|
|
|
|
|
|
|
|
LOG_WARNING(Service, "(STUBBED) called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Kernel::SharedPtr<Kernel::Event> event;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class IApplicationFunctions final : public ServiceFramework<IApplicationFunctions> {
|
|
|
|
|
public:
|
|
|
|
|
IApplicationFunctions() : ServiceFramework("IApplicationFunctions") {}
|
|
|
|
|
IApplicationFunctions() : ServiceFramework("IApplicationFunctions") {
|
|
|
|
|
static const FunctionInfo functions[] = {
|
|
|
|
|
{22, &IApplicationFunctions::SetTerminateResult, "SetTerminateResult"},
|
|
|
|
|
};
|
|
|
|
|
RegisterHandlers(functions);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
void SetTerminateResult(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
// Takes an input u32 Result, no output.
|
|
|
|
|
// For example, in some cases official apps use this with error 0x2A2 then uses svcBreak.
|
|
|
|
|
|
|
|
|
|
IPC::RequestParser rp{ctx};
|
|
|
|
|
u32 result = rp.Pop<u32>();
|
|
|
|
|
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
|
|
|
|
|
LOG_WARNING(Service, "(STUBBED) called, result=0x%08X", result);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class ILibraryAppletCreator final : public ServiceFramework<ILibraryAppletCreator> {
|
|
|
|
@ -120,48 +164,56 @@ private:
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2, 0, 0, 1};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushIpcInterface<IAudioController>();
|
|
|
|
|
LOG_DEBUG(Service, "called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetDisplayController(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2, 0, 0, 1};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushIpcInterface<IDisplayController>();
|
|
|
|
|
LOG_DEBUG(Service, "called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetDebugFunctions(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2, 0, 0, 1};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushIpcInterface<IDebugFunctions>();
|
|
|
|
|
LOG_DEBUG(Service, "called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetWindowController(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2, 0, 0, 1};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushIpcInterface<IWindowController>();
|
|
|
|
|
LOG_DEBUG(Service, "called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetSelfController(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2, 0, 0, 1};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushIpcInterface<ISelfController>();
|
|
|
|
|
LOG_DEBUG(Service, "called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetCommonStateGetter(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2, 0, 0, 1};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushIpcInterface<ICommonStateGetter>();
|
|
|
|
|
LOG_DEBUG(Service, "called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetLibraryAppletCreator(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2, 0, 0, 1};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushIpcInterface<ILibraryAppletCreator>();
|
|
|
|
|
LOG_DEBUG(Service, "called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetApplicationFunctions(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2, 0, 0, 1};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushIpcInterface<IApplicationFunctions>();
|
|
|
|
|
LOG_DEBUG(Service, "called");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -169,6 +221,7 @@ void AppletOE::OpenApplicationProxy(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestBuilder rb{ctx, 2, 0, 0, 1};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushIpcInterface<IApplicationProxy>();
|
|
|
|
|
LOG_DEBUG(Service, "called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
AppletOE::AppletOE() : ServiceFramework("appletOE") {
|
|
|
|
|