#include #include "sm_user_service.hpp" #include "sm_registration.hpp" Result UserService::dispatch(IpcParsedCommand &r, IpcCommand &out_c, u64 cmd_id, u8 *pointer_buffer, size_t pointer_buffer_size) { Result rc = 0xF601; switch ((UserServiceCmd)cmd_id) { case User_Cmd_Initialize: rc = WrapIpcCommandImpl<&UserService::initialize>(this, r, out_c, pointer_buffer, pointer_buffer_size); break; case User_Cmd_GetService: rc = WrapIpcCommandImpl<&UserService::get_service>(this, r, out_c, pointer_buffer, pointer_buffer_size); break; case User_Cmd_RegisterService: rc = WrapIpcCommandImpl<&UserService::register_service>(this, r, out_c, pointer_buffer, pointer_buffer_size); break; case User_Cmd_UnregisterService: rc = WrapIpcCommandImpl<&UserService::unregister_service>(this, r, out_c, pointer_buffer, pointer_buffer_size); break; default: break; } return rc; } std::tuple UserService::initialize(PidDescriptor pid) { this->pid = pid.pid; return std::make_tuple(0); } std::tuple UserService::get_service(u64 service) { Handle session_h = 0; Result rc = Registration::GetServiceForPid(this->pid, service, &session_h); return std::make_tuple(rc, MovedHandle{session_h}); } std::tuple UserService::register_service(u64 service, u8 is_light, u32 max_sessions) { Handle service_h = 0; Result rc = Registration::RegisterServiceForPid(this->pid, service, max_sessions, is_light != 0, &service_h); return std::make_tuple(rc, MovedHandle{service_h}); } std::tuple UserService::unregister_service(u64 service) { return std::make_tuple(Registration::UnregisterServiceForPid(this->pid, service)); }