Browse Source

[hle/sm] implement sm:AtmosphereHasService

Signed-off-by: lizzie <lizzie@eden-emu.dev>
lizzie/sm-AtmosphereHasService
lizzie 17 hours ago
parent
commit
186308fa2d
  1. 35
      src/core/hle/service/sm/sm.cpp

35
src/core/hle/service/sm/sm.cpp

@ -250,15 +250,37 @@ void SM::UnregisterService(HLERequestContext& ctx) {
rb.Push(service_manager.UnregisterService(name)); rb.Push(service_manager.UnregisterService(name));
} }
void SM::AtmosphereHasService(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
std::string name(PopServiceName(rp));
LOG_WARNING(Service_SM, "(stubbed) called with name={}", name);
IPC::ResponseBuilder rb{ctx, 3};
Kernel::KClientPort* out_client_port = nullptr;
rb.Push(ResultSuccess);
rb.Push<bool>(service_manager.GetServicePort(&out_client_port, name) == ResultSuccess);
}
SM::SM(ServiceManager& service_manager_, Core::System& system_) SM::SM(ServiceManager& service_manager_, Core::System& system_)
: ServiceFramework{system_, "sm:", 4},
service_manager{service_manager_}, kernel{system_.Kernel()} {
: ServiceFramework{system_, "sm:", 4}
, service_manager{service_manager_}
, kernel{system_.Kernel()}
{
RegisterHandlers({ RegisterHandlers({
{0, &SM::Initialize, "Initialize"}, {0, &SM::Initialize, "Initialize"},
{1, &SM::GetServiceCmif, "GetService"}, {1, &SM::GetServiceCmif, "GetService"},
{2, &SM::RegisterServiceCmif, "RegisterService"}, {2, &SM::RegisterServiceCmif, "RegisterService"},
{3, &SM::UnregisterService, "UnregisterService"}, {3, &SM::UnregisterService, "UnregisterService"},
{4, nullptr, "DetachClient"}, {4, nullptr, "DetachClient"},
// TODO: are these non-TIPC as well?
{65000, nullptr, "AtmosphereInstallMitm"},
{65001, nullptr, "AtmosphereUninstallMitm"},
{65002, nullptr, "Deprecated_AtmosphereAssociatePidTidForMitm"},
{65003, nullptr, "AtmosphereAcknowledgeMitmSession"},
{65004, nullptr, "AtmosphereHasMitm"},
{65005, nullptr, "AtmosphereWaitMitm"},
{65006, nullptr, "AtmosphereDeclareFutureMitm"},
{65100, &SM::AtmosphereHasService, "AtmosphereHasService"},
{65101, nullptr, "AtmosphereWaitService"},
}); });
RegisterHandlersTipc({ RegisterHandlersTipc({
{0, &SM::Initialize, "Initialize"}, {0, &SM::Initialize, "Initialize"},
@ -266,6 +288,15 @@ SM::SM(ServiceManager& service_manager_, Core::System& system_)
{2, &SM::RegisterServiceTipc, "RegisterService"}, {2, &SM::RegisterServiceTipc, "RegisterService"},
{3, &SM::UnregisterService, "UnregisterService"}, {3, &SM::UnregisterService, "UnregisterService"},
{4, nullptr, "DetachClient"}, {4, nullptr, "DetachClient"},
{65000, nullptr, "AtmosphereInstallMitm"},
{65001, nullptr, "AtmosphereUninstallMitm"},
{65002, nullptr, "Deprecated_AtmosphereAssociatePidTidForMitm"},
{65003, nullptr, "AtmosphereAcknowledgeMitmSession"},
{65004, nullptr, "AtmosphereHasMitm"},
{65005, nullptr, "AtmosphereWaitMitm"},
{65006, nullptr, "AtmosphereDeclareFutureMitm"},
{65100, &SM::AtmosphereHasService, "AtmosphereHasService"},
{65101, nullptr, "AtmosphereWaitService"},
}); });
} }

Loading…
Cancel
Save