|
|
@ -8,15 +8,16 @@ |
|
|
|
|
|
|
|
|
namespace Service::OLSC { |
|
|
namespace Service::OLSC { |
|
|
|
|
|
|
|
|
class OLSC final : public ServiceFramework<OLSC> { |
|
|
|
|
|
|
|
|
class IOlscServiceForApplication final : public ServiceFramework<IOlscServiceForApplication> { |
|
|
public: |
|
|
public: |
|
|
explicit OLSC(Core::System& system_) : ServiceFramework{system_, "olsc:u"} { |
|
|
|
|
|
|
|
|
explicit IOlscServiceForApplication(Core::System& system_) |
|
|
|
|
|
: ServiceFramework{system_, "olsc:u"} { |
|
|
// clang-format off
|
|
|
// clang-format off
|
|
|
static const FunctionInfo functions[] = { |
|
|
static const FunctionInfo functions[] = { |
|
|
{0, &OLSC::Initialize, "Initialize"}, |
|
|
|
|
|
|
|
|
{0, &IOlscServiceForApplication::Initialize, "Initialize"}, |
|
|
{10, nullptr, "VerifySaveDataBackupLicenseAsync"}, |
|
|
{10, nullptr, "VerifySaveDataBackupLicenseAsync"}, |
|
|
{13, &OLSC::GetSaveDataBackupSetting, "GetSaveDataBackupSetting"}, |
|
|
|
|
|
{14, &OLSC::SetSaveDataBackupSettingEnabled, "SetSaveDataBackupSettingEnabled"}, |
|
|
|
|
|
|
|
|
{13, &IOlscServiceForApplication::GetSaveDataBackupSetting, "GetSaveDataBackupSetting"}, |
|
|
|
|
|
{14, &IOlscServiceForApplication::SetSaveDataBackupSettingEnabled, "SetSaveDataBackupSettingEnabled"}, |
|
|
{15, nullptr, "SetCustomData"}, |
|
|
{15, nullptr, "SetCustomData"}, |
|
|
{16, nullptr, "DeleteSaveDataBackupSetting"}, |
|
|
{16, nullptr, "DeleteSaveDataBackupSetting"}, |
|
|
{18, nullptr, "GetSaveDataBackupInfoCache"}, |
|
|
{18, nullptr, "GetSaveDataBackupInfoCache"}, |
|
|
@ -72,10 +73,155 @@ private: |
|
|
bool initialized{}; |
|
|
bool initialized{}; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
class INativeHandleHolder final : public ServiceFramework<INativeHandleHolder> { |
|
|
|
|
|
public: |
|
|
|
|
|
explicit INativeHandleHolder(Core::System& system_) |
|
|
|
|
|
: ServiceFramework{system_, "INativeHandleHolder"} { |
|
|
|
|
|
// clang-format off
|
|
|
|
|
|
static const FunctionInfo functions[] = { |
|
|
|
|
|
{0, nullptr, "GetNativeHandle"}, |
|
|
|
|
|
}; |
|
|
|
|
|
// clang-format on
|
|
|
|
|
|
|
|
|
|
|
|
RegisterHandlers(functions); |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
class ITransferTaskListController final : public ServiceFramework<ITransferTaskListController> { |
|
|
|
|
|
public: |
|
|
|
|
|
explicit ITransferTaskListController(Core::System& system_) |
|
|
|
|
|
: ServiceFramework{system_, "ITransferTaskListController"} { |
|
|
|
|
|
// clang-format off
|
|
|
|
|
|
static const FunctionInfo functions[] = { |
|
|
|
|
|
{0, nullptr, "Unknown0"}, |
|
|
|
|
|
{1, nullptr, "Unknown1"}, |
|
|
|
|
|
{2, nullptr, "Unknown2"}, |
|
|
|
|
|
{3, nullptr, "Unknown3"}, |
|
|
|
|
|
{4, nullptr, "Unknown4"}, |
|
|
|
|
|
{5, &ITransferTaskListController::GetNativeHandleHolder , "GetNativeHandleHolder"}, |
|
|
|
|
|
{6, nullptr, "Unknown6"}, |
|
|
|
|
|
{7, nullptr, "Unknown7"}, |
|
|
|
|
|
{8, nullptr, "GetRemoteStorageController"}, |
|
|
|
|
|
{9, &ITransferTaskListController::GetNativeHandleHolder, "GetNativeHandleHolder2"}, |
|
|
|
|
|
{10, nullptr, "Unknown10"}, |
|
|
|
|
|
{11, nullptr, "Unknown11"}, |
|
|
|
|
|
{12, nullptr, "Unknown12"}, |
|
|
|
|
|
{13, nullptr, "Unknown13"}, |
|
|
|
|
|
{14, nullptr, "Unknown14"}, |
|
|
|
|
|
{15, nullptr, "Unknown15"}, |
|
|
|
|
|
{16, nullptr, "Unknown16"}, |
|
|
|
|
|
{17, nullptr, "Unknown17"}, |
|
|
|
|
|
{18, nullptr, "Unknown18"}, |
|
|
|
|
|
{19, nullptr, "Unknown19"}, |
|
|
|
|
|
{20, nullptr, "Unknown20"}, |
|
|
|
|
|
{21, nullptr, "Unknown21"}, |
|
|
|
|
|
{22, nullptr, "Unknown22"}, |
|
|
|
|
|
{23, nullptr, "Unknown23"}, |
|
|
|
|
|
{24, nullptr, "Unknown24"}, |
|
|
|
|
|
{25, nullptr, "Unknown25"}, |
|
|
|
|
|
}; |
|
|
|
|
|
// clang-format on
|
|
|
|
|
|
|
|
|
|
|
|
RegisterHandlers(functions); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
void GetNativeHandleHolder(HLERequestContext& ctx) { |
|
|
|
|
|
LOG_INFO(Service_OLSC, "called"); |
|
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
|
|
|
|
|
rb.Push(ResultSuccess); |
|
|
|
|
|
rb.PushIpcInterface<INativeHandleHolder>(system); |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
class IOlscServiceForSystemService final : public ServiceFramework<IOlscServiceForSystemService> { |
|
|
|
|
|
public: |
|
|
|
|
|
explicit IOlscServiceForSystemService(Core::System& system_) |
|
|
|
|
|
: ServiceFramework{system_, "olsc:s"} { |
|
|
|
|
|
// clang-format off
|
|
|
|
|
|
static const FunctionInfo functions[] = { |
|
|
|
|
|
{0, &IOlscServiceForSystemService::OpenTransferTaskListController, "OpenTransferTaskListController"}, |
|
|
|
|
|
{1, nullptr, "OpenRemoteStorageController"}, |
|
|
|
|
|
{2, nullptr, "OpenDaemonController"}, |
|
|
|
|
|
{10, nullptr, "Unknown10"}, |
|
|
|
|
|
{11, nullptr, "Unknown11"}, |
|
|
|
|
|
{12, nullptr, "Unknown12"}, |
|
|
|
|
|
{13, nullptr, "Unknown13"}, |
|
|
|
|
|
{100, nullptr, "ListLastTransferTaskErrorInfo"}, |
|
|
|
|
|
{101, nullptr, "GetLastErrorInfoCount"}, |
|
|
|
|
|
{102, nullptr, "RemoveLastErrorInfoOld"}, |
|
|
|
|
|
{103, nullptr, "GetLastErrorInfo"}, |
|
|
|
|
|
{104, nullptr, "GetLastErrorEventHolder"}, |
|
|
|
|
|
{105, nullptr, "GetLastTransferTaskErrorInfo"}, |
|
|
|
|
|
{200, nullptr, "GetDataTransferPolicyInfo"}, |
|
|
|
|
|
{201, nullptr, "RemoveDataTransferPolicyInfo"}, |
|
|
|
|
|
{202, nullptr, "UpdateDataTransferPolicyOld"}, |
|
|
|
|
|
{203, nullptr, "UpdateDataTransferPolicy"}, |
|
|
|
|
|
{204, nullptr, "CleanupDataTransferPolicyInfo"}, |
|
|
|
|
|
{205, nullptr, "RequestDataTransferPolicy"}, |
|
|
|
|
|
{300, nullptr, "GetAutoTransferSeriesInfo"}, |
|
|
|
|
|
{301, nullptr, "UpdateAutoTransferSeriesInfo"}, |
|
|
|
|
|
{400, nullptr, "CleanupSaveDataArchiveInfoType1"}, |
|
|
|
|
|
{900, nullptr, "CleanupTransferTask"}, |
|
|
|
|
|
{902, nullptr, "CleanupSeriesInfoType0"}, |
|
|
|
|
|
{903, nullptr, "CleanupSaveDataArchiveInfoType0"}, |
|
|
|
|
|
{904, nullptr, "CleanupApplicationAutoTransferSetting"}, |
|
|
|
|
|
{905, nullptr, "CleanupErrorHistory"}, |
|
|
|
|
|
{906, nullptr, "SetLastError"}, |
|
|
|
|
|
{907, nullptr, "AddSaveDataArchiveInfoType0"}, |
|
|
|
|
|
{908, nullptr, "RemoveSeriesInfoType0"}, |
|
|
|
|
|
{909, nullptr, "GetSeriesInfoType0"}, |
|
|
|
|
|
{910, nullptr, "RemoveLastErrorInfo"}, |
|
|
|
|
|
{911, nullptr, "CleanupSeriesInfoType1"}, |
|
|
|
|
|
{912, nullptr, "RemoveSeriesInfoType1"}, |
|
|
|
|
|
{913, nullptr, "GetSeriesInfoType1"}, |
|
|
|
|
|
{1000, nullptr, "UpdateIssueOld"}, |
|
|
|
|
|
{1010, nullptr, "Unknown1010"}, |
|
|
|
|
|
{1011, nullptr, "ListIssueInfoOld"}, |
|
|
|
|
|
{1012, nullptr, "GetIssueOld"}, |
|
|
|
|
|
{1013, nullptr, "GetIssue2Old"}, |
|
|
|
|
|
{1014, nullptr, "GetIssue3Old"}, |
|
|
|
|
|
{1020, nullptr, "RepairIssueOld"}, |
|
|
|
|
|
{1021, nullptr, "RepairIssueWithUserIdOld"}, |
|
|
|
|
|
{1022, nullptr, "RepairIssue2Old"}, |
|
|
|
|
|
{1023, nullptr, "RepairIssue3Old"}, |
|
|
|
|
|
{1024, nullptr, "Unknown1024"}, |
|
|
|
|
|
{1100, nullptr, "UpdateIssue"}, |
|
|
|
|
|
{1110, nullptr, "Unknown1110"}, |
|
|
|
|
|
{1111, nullptr, "ListIssueInfo"}, |
|
|
|
|
|
{1112, nullptr, "GetIssue"}, |
|
|
|
|
|
{1113, nullptr, "GetIssue2"}, |
|
|
|
|
|
{1114, nullptr, "GetIssue3"}, |
|
|
|
|
|
{1120, nullptr, "RepairIssue"}, |
|
|
|
|
|
{1121, nullptr, "RepairIssueWithUserId"}, |
|
|
|
|
|
{1122, nullptr, "RepairIssue2"}, |
|
|
|
|
|
{1123, nullptr, "RepairIssue3"}, |
|
|
|
|
|
{1124, nullptr, "Unknown1124"}, |
|
|
|
|
|
}; |
|
|
|
|
|
// clang-format on
|
|
|
|
|
|
|
|
|
|
|
|
RegisterHandlers(functions); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
void OpenTransferTaskListController(HLERequestContext& ctx) { |
|
|
|
|
|
LOG_INFO(Service_OLSC, "called"); |
|
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
|
|
|
|
|
rb.Push(ResultSuccess); |
|
|
|
|
|
rb.PushIpcInterface<ITransferTaskListController>(system); |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
void LoopProcess(Core::System& system) { |
|
|
void LoopProcess(Core::System& system) { |
|
|
auto server_manager = std::make_unique<ServerManager>(system); |
|
|
auto server_manager = std::make_unique<ServerManager>(system); |
|
|
|
|
|
|
|
|
server_manager->RegisterNamedService("olsc:u", std::make_shared<OLSC>(system)); |
|
|
|
|
|
|
|
|
server_manager->RegisterNamedService("olsc:u", |
|
|
|
|
|
std::make_shared<IOlscServiceForApplication>(system)); |
|
|
|
|
|
server_manager->RegisterNamedService("olsc:s", |
|
|
|
|
|
std::make_shared<IOlscServiceForSystemService>(system)); |
|
|
|
|
|
|
|
|
ServerManager::RunServer(std::move(server_manager)); |
|
|
ServerManager::RunServer(std::move(server_manager)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|