mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-10-29 18:56:22 +00:00
This reverts commit 218c6705d9.
- [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions).
- [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md).
- [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability.
-------------------
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4532
Reviewed-by: lizzie <lizzie@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: Maufeat <sahyno1996@gmail.com>
This commit is contained in:
@@ -9,24 +9,26 @@
|
||||
|
||||
namespace Service::OLSC {
|
||||
|
||||
std::optional<ServiceFrameworkBase::FunctionInfoBase> IDaemonController::FindRequest(u32 key) {
|
||||
static constexpr auto functions = CreateStaticMap(
|
||||
FunctionInfo{0, D<&IDaemonController::GetApplicationAutoTransferSetting>, "GetApplicationAutoTransferSetting"},
|
||||
FunctionInfo{1, D<&IDaemonController::SetApplicationAutoTransferSetting>, "SetApplicationAutoTransferSetting"},
|
||||
FunctionInfo{2, D<&IDaemonController::GetGlobalAutoUploadSetting>, "GetGlobalAutoUploadSetting"},
|
||||
FunctionInfo{3, D<&IDaemonController::SetGlobalAutoUploadSetting>, "SetGlobalAutoUploadSetting"},
|
||||
FunctionInfo{4, D<&IDaemonController::RunTransferTaskAutonomyRegistration>, "RunTransferTaskAutonomyRegistration"},
|
||||
FunctionInfo{5, D<&IDaemonController::GetGlobalAutoDownloadSetting>, "GetGlobalAutoDownloadSetting", MakeVersionGate({11,0,0})},
|
||||
FunctionInfo{6, D<&IDaemonController::SetGlobalAutoDownloadSetting>, "SetGlobalAutoDownloadSetting", MakeVersionGate({11,0,0})},
|
||||
FunctionInfo{10, nullptr, "CreateForbiddenSaveDataInidication"},
|
||||
FunctionInfo{11, D<&IDaemonController::StopAutonomyTaskExecution>, "StopAutonomyTaskExecution"},
|
||||
FunctionInfo{12, D<&IDaemonController::GetAutonomyTaskStatus>, "GetAutonomyTaskStatus"},
|
||||
FunctionInfo{13, nullptr, "Unknown13_20_0_0_Plus", MakeVersionGate({20,0,0})}
|
||||
);
|
||||
return HandlerTableGenerateWithFind(key, functions);
|
||||
}
|
||||
IDaemonController::IDaemonController(Core::System& system_)
|
||||
: ServiceFramework{system_, "IDaemonController"} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, D<&IDaemonController::GetApplicationAutoTransferSetting>, "GetApplicationAutoTransferSetting"},
|
||||
{1, D<&IDaemonController::SetApplicationAutoTransferSetting>, "SetApplicationAutoTransferSetting"},
|
||||
{2, D<&IDaemonController::GetGlobalAutoUploadSetting>, "GetGlobalAutoUploadSetting"},
|
||||
{3, D<&IDaemonController::SetGlobalAutoUploadSetting>, "SetGlobalAutoUploadSetting"},
|
||||
{4, D<&IDaemonController::RunTransferTaskAutonomyRegistration>, "RunTransferTaskAutonomyRegistration"},
|
||||
{5, D<&IDaemonController::GetGlobalAutoDownloadSetting>, "GetGlobalAutoDownloadSetting"}, // 11.0.0+
|
||||
{6, D<&IDaemonController::SetGlobalAutoDownloadSetting>, "SetGlobalAutoDownloadSetting"}, // 11.0.0+
|
||||
{10, nullptr, "CreateForbiddenSaveDataInidication"},
|
||||
{11, D<&IDaemonController::StopAutonomyTaskExecution>, "StopAutonomyTaskExecution"},
|
||||
{12, D<&IDaemonController::GetAutonomyTaskStatus>, "GetAutonomyTaskStatus"},
|
||||
{13, nullptr, "Unknown13_20_0_0_Plus"}, // 20.0.0+
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
IDaemonController::IDaemonController(Core::System& system_) : ServiceFramework{system_, "IDaemonController"} {}
|
||||
RegisterHandlers(functions);
|
||||
}
|
||||
|
||||
IDaemonController::~IDaemonController() = default;
|
||||
|
||||
|
||||
@@ -38,8 +38,6 @@ private:
|
||||
|
||||
Result GetAutonomyTaskStatus(Out<u8> out_status, Common::UUID user_id);
|
||||
|
||||
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
|
||||
|
||||
// Internal in-memory state to back the above APIs
|
||||
struct AppKey {
|
||||
Common::UUID user_id;
|
||||
|
||||
@@ -12,16 +12,16 @@
|
||||
|
||||
namespace Service::OLSC {
|
||||
|
||||
std::optional<ServiceFrameworkBase::FunctionInfoBase> INativeHandleHolder::FindRequest(u32 key) {
|
||||
static constexpr auto functions = CreateStaticMap(
|
||||
FunctionInfo{0, D<&INativeHandleHolder::GetNativeHandle>, "GetNativeHandle"}
|
||||
);
|
||||
return HandlerTableGenerateWithFind(key, functions);
|
||||
}
|
||||
|
||||
INativeHandleHolder::INativeHandleHolder(Core::System& system_)
|
||||
: ServiceFramework{system_, "INativeHandleHolder"}, service_context{system_, "OLSC"} {
|
||||
event = service_context.CreateEvent("OLSC::INativeHandleHolder");
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, D<&INativeHandleHolder::GetNativeHandle>, "GetNativeHandle"},
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
RegisterHandlers(functions);
|
||||
}
|
||||
|
||||
INativeHandleHolder::~INativeHandleHolder() {
|
||||
|
||||
@@ -25,7 +25,6 @@ public:
|
||||
|
||||
private:
|
||||
Result GetNativeHandle(OutCopyHandle<Kernel::KReadableEvent> out_event);
|
||||
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
|
||||
|
||||
Service::KernelHelpers::ServiceContext service_context;
|
||||
Kernel::KEvent* event{};
|
||||
|
||||
@@ -6,179 +6,22 @@
|
||||
|
||||
#include "core/hle/service/olsc/olsc.h"
|
||||
#include "core/hle/service/olsc/olsc_service_for_application.h"
|
||||
#include "core/hle/service/olsc/native_handle_holder.h"
|
||||
#include "core/hle/service/olsc/stopper_object.h"
|
||||
#include "core/hle/service/olsc/daemon_controller.h"
|
||||
#include "core/hle/service/olsc/transfer_task_list_controller.h"
|
||||
#include "core/hle/service/olsc/remote_storage_controller.h"
|
||||
#include "core/hle/service/olsc/olsc_service_for_system_service.h"
|
||||
#include "core/hle/service/server_manager.h"
|
||||
#include "core/hle/service/service.h"
|
||||
#include "core/hle/service/cmif_serialization.h"
|
||||
|
||||
namespace Service::OLSC {
|
||||
|
||||
class ISProfileBgAgentForSystemProcess final : public ServiceFramework<ISProfileBgAgentForSystemProcess> {
|
||||
public:
|
||||
explicit ISProfileBgAgentForSystemProcess(Core::System& system_) : ServiceFramework{system_, "spbg:sp"} {}
|
||||
|
||||
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
|
||||
return HandlerTableGenerateWithFind(key, functions);
|
||||
explicit ISProfileBgAgentForSystemProcess(Core::System& system_)
|
||||
: ServiceFramework{system_, "spbg:sp"}
|
||||
{
|
||||
static const FunctionInfo functions[] = {
|
||||
{ 100, nullptr, "OpenBgAgentController" },
|
||||
};
|
||||
RegisterHandlers(functions);
|
||||
}
|
||||
static constexpr auto functions = CreateStaticMap(
|
||||
FunctionInfo{100, nullptr, "OpenBgAgentController" }
|
||||
);
|
||||
};
|
||||
|
||||
class IDaemonController;
|
||||
class IRemoteStorageController;
|
||||
class ITransferTaskListController;
|
||||
|
||||
struct DataTransferPolicy {
|
||||
u8 upload_policy;
|
||||
u8 download_policy;
|
||||
};
|
||||
|
||||
struct TransferTaskErrorInfo {
|
||||
Common::UUID uid;
|
||||
u64 application_id;
|
||||
u8 unknown_0x18;
|
||||
std::array<u8, 7> reserved_0x19;
|
||||
u64 unknown_0x20;
|
||||
u32 error_code;
|
||||
u32 reserved_0x2C;
|
||||
};
|
||||
static_assert(sizeof(TransferTaskErrorInfo) == 0x30, "TransferTaskErrorInfo has incorrect size.");
|
||||
|
||||
class IOlscServiceForSystemService final : public ServiceFramework<IOlscServiceForSystemService> {
|
||||
public:
|
||||
explicit IOlscServiceForSystemService(Core::System& system_)
|
||||
: ServiceFramework{system_, "olsc:s"} {
|
||||
}
|
||||
|
||||
~IOlscServiceForSystemService() override = default;
|
||||
|
||||
Result GetTransferTaskListController(
|
||||
Out<SharedPointer<ITransferTaskListController>> out_interface) {
|
||||
LOG_INFO(Service_OLSC, "called");
|
||||
*out_interface = std::make_shared<ITransferTaskListController>(system);
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result GetRemoteStorageController(
|
||||
Out<SharedPointer<IRemoteStorageController>> out_interface) {
|
||||
LOG_INFO(Service_OLSC, "called");
|
||||
*out_interface = std::make_shared<IRemoteStorageController>(system);
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result GetDaemonController(
|
||||
Out<SharedPointer<IDaemonController>> out_interface) {
|
||||
LOG_INFO(Service_OLSC, "called");
|
||||
*out_interface = std::make_shared<IDaemonController>(system);
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result GetDataTransferPolicy(
|
||||
Out<DataTransferPolicy> out_policy, u64 application_id) {
|
||||
LOG_WARNING(Service_OLSC, "(STUBBED) called");
|
||||
DataTransferPolicy policy{};
|
||||
policy.upload_policy = 0;
|
||||
policy.download_policy = 0;
|
||||
*out_policy = policy;
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result GetTransferTaskErrorInfo(Out<TransferTaskErrorInfo> out_info,
|
||||
Common::UUID uuid, u64 application_id) {
|
||||
LOG_WARNING(Service_OLSC, "(STUBBED) called, uuid={} application_id={:016X}",
|
||||
uuid.FormattedString(), application_id);
|
||||
|
||||
TransferTaskErrorInfo info{};
|
||||
info.uid = uuid;
|
||||
info.application_id = application_id;
|
||||
info.unknown_0x18 = 0;
|
||||
info.reserved_0x19.fill(0);
|
||||
info.unknown_0x20 = 0;
|
||||
info.error_code = 0;
|
||||
info.reserved_0x2C = 0;
|
||||
|
||||
*out_info = info;
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result GetOlscServiceForSystemService(
|
||||
Out<SharedPointer<IOlscServiceForSystemService>> out_interface) {
|
||||
LOG_INFO(Service_OLSC, "called");
|
||||
*out_interface = std::static_pointer_cast<IOlscServiceForSystemService>(shared_from_this());
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
|
||||
return HandlerTableGenerateWithFind(key, functions);
|
||||
}
|
||||
static constexpr auto functions = CreateStaticMap(
|
||||
FunctionInfo{0, D<&IOlscServiceForSystemService::GetTransferTaskListController>, "GetTransferTaskListController"},
|
||||
FunctionInfo{1, D<&IOlscServiceForSystemService::GetRemoteStorageController>, "GetRemoteStorageController"},
|
||||
FunctionInfo{2, D<&IOlscServiceForSystemService::GetDaemonController>, "GetDaemonController"},
|
||||
FunctionInfo{10, nullptr, "PrepareDeleteUserProperty"},
|
||||
FunctionInfo{11, nullptr, "DeleteUserSaveDataProperty"},
|
||||
FunctionInfo{12, nullptr, "InvalidateMountCache"},
|
||||
FunctionInfo{13, nullptr, "DeleteDeviceSaveDataProperty"},
|
||||
FunctionInfo{100, nullptr, "ListLastTransferTaskErrorInfo"},
|
||||
FunctionInfo{101, nullptr, "GetLastErrorInfoCount"},
|
||||
FunctionInfo{102, nullptr, "RemoveLastErrorInfoOld"},
|
||||
FunctionInfo{103, nullptr, "GetLastErrorInfo"},
|
||||
FunctionInfo{104, nullptr, "GetLastErrorEventHolder"},
|
||||
FunctionInfo{105, D<&IOlscServiceForSystemService::GetTransferTaskErrorInfo>, "GetTransferTaskErrorInfo"},
|
||||
FunctionInfo{200, D<&IOlscServiceForSystemService::GetDataTransferPolicy>, "GetDataTransferPolicy"},
|
||||
FunctionInfo{201, nullptr, "DeleteDataTransferPolicyCache"},
|
||||
FunctionInfo{202, nullptr, "Unknown202"},
|
||||
FunctionInfo{203, nullptr, "RequestUpdateDataTransferPolicyCacheAsync"},
|
||||
FunctionInfo{204, nullptr, "ClearDataTransferPolicyCache"},
|
||||
FunctionInfo{205, nullptr, "RequestGetDataTransferPolicyAsync"},
|
||||
FunctionInfo{206, nullptr, "Unknown206", MakeVersionGate({21,0,0})},
|
||||
FunctionInfo{300, nullptr, "GetUserSaveDataProperty"},
|
||||
FunctionInfo{301, nullptr, "SetUserSaveDataProperty"},
|
||||
FunctionInfo{302, nullptr, "Unknown302", MakeVersionGate({21,0,0})},
|
||||
FunctionInfo{400, nullptr, "CleanupSaveDataBackupContextForSpecificApplications"},
|
||||
FunctionInfo{900, nullptr, "DeleteAllTransferTask"},
|
||||
FunctionInfo{902, nullptr, "DeleteAllSeriesInfo"},
|
||||
FunctionInfo{903, nullptr, "DeleteAllSdaInfoCache"},
|
||||
FunctionInfo{904, nullptr, "DeleteAllApplicationSetting"},
|
||||
FunctionInfo{905, nullptr, "DeleteAllTransferTaskErrorInfo"},
|
||||
FunctionInfo{906, nullptr, "RegisterTransferTaskErrorInfo"},
|
||||
FunctionInfo{907, nullptr, "AddSaveDataArchiveInfoCache"},
|
||||
FunctionInfo{908, nullptr, "DeleteSeriesInfo"},
|
||||
FunctionInfo{909, nullptr, "GetSeriesInfo"},
|
||||
FunctionInfo{910, nullptr, "RemoveTransferTaskErrorInfo"},
|
||||
FunctionInfo{911, nullptr, "DeleteAllSeriesInfoForSaveDataBackup"},
|
||||
FunctionInfo{912, nullptr, "DeleteSeriesInfoForSaveDataBackup"},
|
||||
FunctionInfo{913, nullptr, "GetSeriesInfoForSaveDataBackup"},
|
||||
FunctionInfo{914, nullptr, "Unknown914", MakeVersionGate({20,2,0})},
|
||||
FunctionInfo{1000, nullptr, "UpdateIssueOld"},
|
||||
FunctionInfo{1010, nullptr, "Unknown1010"},
|
||||
FunctionInfo{1011, nullptr, "Unknown1011"},
|
||||
FunctionInfo{1012, nullptr, "Unknown1012"},
|
||||
FunctionInfo{1013, nullptr, "Unkown1013"},
|
||||
FunctionInfo{1014, nullptr, "Unknown1014"},
|
||||
FunctionInfo{1020, nullptr, "Unknown1020"},
|
||||
FunctionInfo{1021, nullptr, "Unknown1021"},
|
||||
FunctionInfo{1022, nullptr, "Unknown1022"},
|
||||
FunctionInfo{1023, nullptr, "Unknown1023"},
|
||||
FunctionInfo{1024, nullptr, "Unknown1024"},
|
||||
FunctionInfo{1100, nullptr, "RepairUpdateIssueInfoCacheAync"},
|
||||
FunctionInfo{1110, nullptr, "RepairGetIssueInfo"},
|
||||
FunctionInfo{1111, nullptr, "RepairListIssueInfo"},
|
||||
FunctionInfo{1112, nullptr, "RepairListOperationPermissionInfo"},
|
||||
FunctionInfo{1113, nullptr, "RepairListDataInfoForRepairedSaveDataDownload"},
|
||||
FunctionInfo{1114, nullptr, "RepairListDataInfoForOriginalSaveDataDownload"},
|
||||
FunctionInfo{1120, nullptr, "RepairUploadSaveDataAsync"},
|
||||
FunctionInfo{1121, nullptr, "RepairUploadSaveDataAsync1"},
|
||||
FunctionInfo{1122, nullptr, "RepairDownloadRepairedSaveDataAsync"},
|
||||
FunctionInfo{1123, nullptr, "RepairDownloadOriginalSaveDataAsync"},
|
||||
FunctionInfo{1124, nullptr, "RepairGetOperationProgressInfo"},
|
||||
FunctionInfo{10000, D<&IOlscServiceForSystemService::GetOlscServiceForSystemService>, "GetOlscServiceForSystemService"}
|
||||
);
|
||||
};
|
||||
|
||||
void LoopProcess(Core::System& system) {
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
||||
@@ -9,36 +9,36 @@
|
||||
|
||||
namespace Service::OLSC {
|
||||
|
||||
std::optional<ServiceFrameworkBase::FunctionInfoBase> IOlscServiceForApplication::FindRequest(u32 key) {
|
||||
static constexpr auto functions = CreateStaticMap(
|
||||
FunctionInfo{0, D<&IOlscServiceForApplication::Initialize>, "Initialize"},
|
||||
FunctionInfo{10, nullptr, "VerifySaveDataBackupLicenseAsync"},
|
||||
FunctionInfo{13, D<&IOlscServiceForApplication::GetSaveDataBackupSetting>, "GetSaveDataBackupSetting"},
|
||||
FunctionInfo{14, D<&IOlscServiceForApplication::SetSaveDataBackupSettingEnabled>, "SetSaveDataBackupSettingEnabled"},
|
||||
FunctionInfo{15, nullptr, "SetCustomData"},
|
||||
FunctionInfo{16, nullptr, "DeleteSaveDataBackupSetting"},
|
||||
FunctionInfo{18, nullptr, "GetSaveDataBackupInfoCache"},
|
||||
FunctionInfo{19, nullptr, "UpdateSaveDataBackupInfoCacheAsync"},
|
||||
FunctionInfo{22, nullptr, "DeleteSaveDataBackupAsync"},
|
||||
FunctionInfo{25, nullptr, "ListDownloadableSaveDataBackupInfoAsync"},
|
||||
FunctionInfo{26, nullptr, "DownloadSaveDataBackupAsync"},
|
||||
FunctionInfo{27, nullptr, "UploadSaveDataBackupAsync"},
|
||||
FunctionInfo{9010, nullptr, "VerifySaveDataBackupLicenseAsyncForDebug"},
|
||||
FunctionInfo{9013, nullptr, "GetSaveDataBackupSettingForDebug"},
|
||||
FunctionInfo{9014, nullptr, "SetSaveDataBackupSettingEnabledForDebug"},
|
||||
FunctionInfo{9015, nullptr, "SetCustomDataForDebug"},
|
||||
FunctionInfo{9016, nullptr, "DeleteSaveDataBackupSettingForDebug"},
|
||||
FunctionInfo{9018, nullptr, "GetSaveDataBackupInfoCacheForDebug"},
|
||||
FunctionInfo{9019, nullptr, "UpdateSaveDataBackupInfoCacheAsyncForDebug"},
|
||||
FunctionInfo{9022, nullptr, "DeleteSaveDataBackupAsyncForDebug"},
|
||||
FunctionInfo{9025, nullptr, "ListDownloadableSaveDataBackupInfoAsyncForDebug"},
|
||||
FunctionInfo{9026, nullptr, "DownloadSaveDataBackupAsyncForDebug"}
|
||||
);
|
||||
return HandlerTableGenerateWithFind(key, functions);
|
||||
}
|
||||
|
||||
IOlscServiceForApplication::IOlscServiceForApplication(Core::System& system_)
|
||||
: ServiceFramework{system_, "olsc:u"} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, D<&IOlscServiceForApplication::Initialize>, "Initialize"},
|
||||
{10, nullptr, "VerifySaveDataBackupLicenseAsync"},
|
||||
{13, D<&IOlscServiceForApplication::GetSaveDataBackupSetting>, "GetSaveDataBackupSetting"},
|
||||
{14, D<&IOlscServiceForApplication::SetSaveDataBackupSettingEnabled>, "SetSaveDataBackupSettingEnabled"},
|
||||
{15, nullptr, "SetCustomData"},
|
||||
{16, nullptr, "DeleteSaveDataBackupSetting"},
|
||||
{18, nullptr, "GetSaveDataBackupInfoCache"},
|
||||
{19, nullptr, "UpdateSaveDataBackupInfoCacheAsync"},
|
||||
{22, nullptr, "DeleteSaveDataBackupAsync"},
|
||||
{25, nullptr, "ListDownloadableSaveDataBackupInfoAsync"},
|
||||
{26, nullptr, "DownloadSaveDataBackupAsync"},
|
||||
{27, nullptr, "UploadSaveDataBackupAsync"},
|
||||
{9010, nullptr, "VerifySaveDataBackupLicenseAsyncForDebug"},
|
||||
{9013, nullptr, "GetSaveDataBackupSettingForDebug"},
|
||||
{9014, nullptr, "SetSaveDataBackupSettingEnabledForDebug"},
|
||||
{9015, nullptr, "SetCustomDataForDebug"},
|
||||
{9016, nullptr, "DeleteSaveDataBackupSettingForDebug"},
|
||||
{9018, nullptr, "GetSaveDataBackupInfoCacheForDebug"},
|
||||
{9019, nullptr, "UpdateSaveDataBackupInfoCacheAsyncForDebug"},
|
||||
{9022, nullptr, "DeleteSaveDataBackupAsyncForDebug"},
|
||||
{9025, nullptr, "ListDownloadableSaveDataBackupInfoAsyncForDebug"},
|
||||
{9026, nullptr, "DownloadSaveDataBackupAsyncForDebug"},
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
RegisterHandlers(functions);
|
||||
}
|
||||
|
||||
IOlscServiceForApplication::~IOlscServiceForApplication() = default;
|
||||
|
||||
@@ -22,8 +22,6 @@ private:
|
||||
Result GetSaveDataBackupSetting(Out<u8> out_save_data_backup_setting);
|
||||
Result SetSaveDataBackupSettingEnabled(bool enabled, NS::Uid account_id);
|
||||
|
||||
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
|
||||
|
||||
bool initialized{};
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "core/hle/service/cmif_serialization.h"
|
||||
#include "core/hle/service/olsc/daemon_controller.h"
|
||||
#include "core/hle/service/olsc/olsc_service_for_system_service.h"
|
||||
#include "core/hle/service/olsc/remote_storage_controller.h"
|
||||
#include "core/hle/service/olsc/transfer_task_list_controller.h"
|
||||
|
||||
namespace Service::OLSC {
|
||||
|
||||
IOlscServiceForSystemService::IOlscServiceForSystemService(Core::System& system_)
|
||||
: ServiceFramework{system_, "olsc:s"} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, D<&IOlscServiceForSystemService::GetTransferTaskListController>, "GetTransferTaskListController"},
|
||||
{1, D<&IOlscServiceForSystemService::GetRemoteStorageController>, "GetRemoteStorageController"},
|
||||
{2, D<&IOlscServiceForSystemService::GetDaemonController>, "GetDaemonController"},
|
||||
{10, nullptr, "PrepareDeleteUserProperty"},
|
||||
{11, nullptr, "DeleteUserSaveDataProperty"},
|
||||
{12, nullptr, "InvalidateMountCache"},
|
||||
{13, nullptr, "DeleteDeviceSaveDataProperty"},
|
||||
{100, nullptr, "ListLastTransferTaskErrorInfo"},
|
||||
{101, nullptr, "GetLastErrorInfoCount"},
|
||||
{102, nullptr, "RemoveLastErrorInfoOld"},
|
||||
{103, nullptr, "GetLastErrorInfo"},
|
||||
{104, nullptr, "GetLastErrorEventHolder"},
|
||||
{105, D<&IOlscServiceForSystemService::GetTransferTaskErrorInfo>, "GetTransferTaskErrorInfo"},
|
||||
{200, D<&IOlscServiceForSystemService::GetDataTransferPolicy>, "GetDataTransferPolicy"},
|
||||
{201, nullptr, "DeleteDataTransferPolicyCache"},
|
||||
{202, nullptr, "Unknown202"},
|
||||
{203, nullptr, "RequestUpdateDataTransferPolicyCacheAsync"},
|
||||
{204, nullptr, "ClearDataTransferPolicyCache"},
|
||||
{205, nullptr, "RequestGetDataTransferPolicyAsync"},
|
||||
{206, nullptr, "Unknown206"}, //21.0.0+
|
||||
{300, nullptr, "GetUserSaveDataProperty"},
|
||||
{301, nullptr, "SetUserSaveDataProperty"},
|
||||
{302, nullptr, "Unknown302"}, //21.0.0+
|
||||
{400, nullptr, "CleanupSaveDataBackupContextForSpecificApplications"},
|
||||
{900, nullptr, "DeleteAllTransferTask"},
|
||||
{902, nullptr, "DeleteAllSeriesInfo"},
|
||||
{903, nullptr, "DeleteAllSdaInfoCache"},
|
||||
{904, nullptr, "DeleteAllApplicationSetting"},
|
||||
{905, nullptr, "DeleteAllTransferTaskErrorInfo"},
|
||||
{906, nullptr, "RegisterTransferTaskErrorInfo"},
|
||||
{907, nullptr, "AddSaveDataArchiveInfoCache"},
|
||||
{908, nullptr, "DeleteSeriesInfo"},
|
||||
{909, nullptr, "GetSeriesInfo"},
|
||||
{910, nullptr, "RemoveTransferTaskErrorInfo"},
|
||||
{911, nullptr, "DeleteAllSeriesInfoForSaveDataBackup"},
|
||||
{912, nullptr, "DeleteSeriesInfoForSaveDataBackup"},
|
||||
{913, nullptr, "GetSeriesInfoForSaveDataBackup"},
|
||||
{914, nullptr, "Unknown914"}, //20.2.0+
|
||||
{1000, nullptr, "UpdateIssueOld"},
|
||||
{1010, nullptr, "Unknown1010"},
|
||||
{1011, nullptr, "Unknown1011"},
|
||||
{1012, nullptr, "Unknown1012"},
|
||||
{1013, nullptr, "Unkown1013"},
|
||||
{1014, nullptr, "Unknown1014"},
|
||||
{1020, nullptr, "Unknown1020"},
|
||||
{1021, nullptr, "Unknown1021"},
|
||||
{1022, nullptr, "Unknown1022"},
|
||||
{1023, nullptr, "Unknown1023"},
|
||||
{1024, nullptr, "Unknown1024"},
|
||||
{1100, nullptr, "RepairUpdateIssueInfoCacheAync"},
|
||||
{1110, nullptr, "RepairGetIssueInfo"},
|
||||
{1111, nullptr, "RepairListIssueInfo"},
|
||||
{1112, nullptr, "RepairListOperationPermissionInfo"},
|
||||
{1113, nullptr, "RepairListDataInfoForRepairedSaveDataDownload"},
|
||||
{1114, nullptr, "RepairListDataInfoForOriginalSaveDataDownload"},
|
||||
{1120, nullptr, "RepairUploadSaveDataAsync"},
|
||||
{1121, nullptr, "RepairUploadSaveDataAsync1"},
|
||||
{1122, nullptr, "RepairDownloadRepairedSaveDataAsync"},
|
||||
{1123, nullptr, "RepairDownloadOriginalSaveDataAsync"},
|
||||
{1124, nullptr, "RepairGetOperationProgressInfo"},
|
||||
{10000, D<&IOlscServiceForSystemService::GetOlscServiceForSystemService>, "GetOlscServiceForSystemService"},
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
RegisterHandlers(functions);
|
||||
}
|
||||
|
||||
IOlscServiceForSystemService::~IOlscServiceForSystemService() = default;
|
||||
|
||||
Result IOlscServiceForSystemService::GetTransferTaskListController(
|
||||
Out<SharedPointer<ITransferTaskListController>> out_interface) {
|
||||
LOG_INFO(Service_OLSC, "called");
|
||||
*out_interface = std::make_shared<ITransferTaskListController>(system);
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result IOlscServiceForSystemService::GetRemoteStorageController(
|
||||
Out<SharedPointer<IRemoteStorageController>> out_interface) {
|
||||
LOG_INFO(Service_OLSC, "called");
|
||||
*out_interface = std::make_shared<IRemoteStorageController>(system);
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result IOlscServiceForSystemService::GetDaemonController(
|
||||
Out<SharedPointer<IDaemonController>> out_interface) {
|
||||
LOG_INFO(Service_OLSC, "called");
|
||||
*out_interface = std::make_shared<IDaemonController>(system);
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result IOlscServiceForSystemService::GetDataTransferPolicy(
|
||||
Out<DataTransferPolicy> out_policy, u64 application_id) {
|
||||
LOG_WARNING(Service_OLSC, "(STUBBED) called");
|
||||
DataTransferPolicy policy{};
|
||||
policy.upload_policy = 0;
|
||||
policy.download_policy = 0;
|
||||
*out_policy = policy;
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result IOlscServiceForSystemService::GetTransferTaskErrorInfo(Out<TransferTaskErrorInfo> out_info,
|
||||
Common::UUID uuid, u64 application_id) {
|
||||
LOG_WARNING(Service_OLSC, "(STUBBED) called, uuid={} application_id={:016X}",
|
||||
uuid.FormattedString(), application_id);
|
||||
|
||||
TransferTaskErrorInfo info{};
|
||||
info.uid = uuid;
|
||||
info.application_id = application_id;
|
||||
info.unknown_0x18 = 0;
|
||||
info.reserved_0x19.fill(0);
|
||||
info.unknown_0x20 = 0;
|
||||
info.error_code = 0;
|
||||
info.reserved_0x2C = 0;
|
||||
|
||||
*out_info = info;
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result IOlscServiceForSystemService::GetOlscServiceForSystemService(
|
||||
Out<SharedPointer<IOlscServiceForSystemService>> out_interface) {
|
||||
LOG_INFO(Service_OLSC, "called");
|
||||
*out_interface = std::static_pointer_cast<IOlscServiceForSystemService>(shared_from_this());
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
} // namespace Service::OLSC
|
||||
@@ -0,0 +1,53 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <array>
|
||||
|
||||
#include "common/uuid.h"
|
||||
#include "core/hle/service/cmif_types.h"
|
||||
#include "core/hle/service/service.h"
|
||||
|
||||
namespace Service::OLSC {
|
||||
|
||||
class IDaemonController;
|
||||
class IRemoteStorageController;
|
||||
class ITransferTaskListController;
|
||||
|
||||
struct DataTransferPolicy {
|
||||
u8 upload_policy;
|
||||
u8 download_policy;
|
||||
};
|
||||
|
||||
struct TransferTaskErrorInfo {
|
||||
Common::UUID uid;
|
||||
u64 application_id;
|
||||
u8 unknown_0x18;
|
||||
std::array<u8, 7> reserved_0x19;
|
||||
u64 unknown_0x20;
|
||||
u32 error_code;
|
||||
u32 reserved_0x2C;
|
||||
};
|
||||
static_assert(sizeof(TransferTaskErrorInfo) == 0x30, "TransferTaskErrorInfo has incorrect size.");
|
||||
|
||||
class IOlscServiceForSystemService final : public ServiceFramework<IOlscServiceForSystemService> {
|
||||
public:
|
||||
explicit IOlscServiceForSystemService(Core::System& system_);
|
||||
~IOlscServiceForSystemService() override;
|
||||
|
||||
private:
|
||||
Result GetTransferTaskListController(
|
||||
Out<SharedPointer<ITransferTaskListController>> out_interface);
|
||||
Result GetRemoteStorageController(Out<SharedPointer<IRemoteStorageController>> out_interface);
|
||||
Result GetDaemonController(Out<SharedPointer<IDaemonController>> out_interface);
|
||||
Result GetDataTransferPolicy(Out<DataTransferPolicy> out_policy, u64 application_id);
|
||||
Result GetTransferTaskErrorInfo(Out<TransferTaskErrorInfo> out_info, Common::UUID uid, u64 application_id);
|
||||
Result GetOlscServiceForSystemService(
|
||||
Out<SharedPointer<IOlscServiceForSystemService>> out_interface);
|
||||
};
|
||||
|
||||
} // namespace Service::OLSC
|
||||
@@ -9,44 +9,44 @@
|
||||
|
||||
namespace Service::OLSC {
|
||||
|
||||
std::optional<ServiceFrameworkBase::FunctionInfoBase> IRemoteStorageController::FindRequest(u32 key) {
|
||||
static constexpr auto functions = CreateStaticMap(
|
||||
FunctionInfo{0, nullptr, "GetSaveDataArchiveInfoBySaveDataId"},
|
||||
FunctionInfo{1, nullptr, "GetSaveDataArchiveInfoByApplicationId"},
|
||||
FunctionInfo{3, nullptr, "GetSaveDataArchiveCount"},
|
||||
FunctionInfo{6, nullptr, "CleanupSaveDataArchives"},
|
||||
FunctionInfo{7, nullptr, "CreateSaveDataArchiveCacheUpdationTask"},
|
||||
FunctionInfo{8, nullptr, "CreateSaveDataArchiveCacheUpdationForSpecifiedApplicationTask"},
|
||||
FunctionInfo{9, nullptr, "Delete"},
|
||||
FunctionInfo{10, nullptr, "GetSeriesInfo"},
|
||||
FunctionInfo{11, nullptr, "CreateDeleteDataTask"},
|
||||
FunctionInfo{12, nullptr, "DeleteSeriesInfo"},
|
||||
FunctionInfo{13, nullptr, "CreateRegisterNotificationTokenTask"},
|
||||
FunctionInfo{14, D<&IRemoteStorageController::GetDataNewnessByApplicationId>, "GetDataNewnessByApplicationId"},
|
||||
FunctionInfo{15, nullptr, "RegisterUploadSaveDataTransferTaskForAutonomyRegistration"},
|
||||
FunctionInfo{16, nullptr, "CreateCleanupToDeleteSaveDataArchiveInfoTask"},
|
||||
FunctionInfo{17, nullptr, "ListDataInfo"},
|
||||
FunctionInfo{18, D<&IRemoteStorageController::GetDataInfo>, "GetDataInfoV1"},
|
||||
FunctionInfo{19, nullptr, "GetDataInfoCacheUpdateNativeHandleHolder"},
|
||||
FunctionInfo{20, nullptr, "CreateSaveDataArchiveInfoCacheForSaveDataBackupUpdationTask"},
|
||||
FunctionInfo{21, nullptr, "ListSecondarySaves"},
|
||||
FunctionInfo{22, D<&IRemoteStorageController::GetSecondarySave>, "GetSecondarySave"},
|
||||
FunctionInfo{23, nullptr, "TouchSecondarySave"},
|
||||
FunctionInfo{24, nullptr, "GetSecondarySaveDataInfo"},
|
||||
FunctionInfo{25, nullptr, "RegisterDownloadSaveDataTransferTaskForAutonomyRegistration"},
|
||||
FunctionInfo{26, nullptr, "Unknown26", MakeVersionGate({20,0,0})},
|
||||
FunctionInfo{27, D<&IRemoteStorageController::GetDataInfo>, "GetDataInfoV2", MakeVersionGate({20,0,0})},
|
||||
FunctionInfo{28, nullptr, "Unknown28", MakeVersionGate({20,0,0})},
|
||||
FunctionInfo{29, nullptr, "Unknown29", MakeVersionGate({21,0,0})},
|
||||
FunctionInfo{800, nullptr, "Unknown800", MakeVersionGate({20,0,0})},
|
||||
FunctionInfo{900, nullptr, "SetLoadedDataMissing"},
|
||||
FunctionInfo{901, nullptr, "Unknown901", MakeVersionGate({20,2,0})}
|
||||
);
|
||||
return HandlerTableGenerateWithFind(key, functions);
|
||||
}
|
||||
|
||||
IRemoteStorageController::IRemoteStorageController(Core::System& system_)
|
||||
: ServiceFramework{system_, "IRemoteStorageController"} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, nullptr, "GetSaveDataArchiveInfoBySaveDataId"},
|
||||
{1, nullptr, "GetSaveDataArchiveInfoByApplicationId"},
|
||||
{3, nullptr, "GetSaveDataArchiveCount"},
|
||||
{6, nullptr, "CleanupSaveDataArchives"},
|
||||
{7, nullptr, "CreateSaveDataArchiveCacheUpdationTask"},
|
||||
{8, nullptr, "CreateSaveDataArchiveCacheUpdationForSpecifiedApplicationTask"},
|
||||
{9, nullptr, "Delete"},
|
||||
{10, nullptr, "GetSeriesInfo"},
|
||||
{11, nullptr, "CreateDeleteDataTask"},
|
||||
{12, nullptr, "DeleteSeriesInfo"},
|
||||
{13, nullptr, "CreateRegisterNotificationTokenTask"},
|
||||
{14, D<&IRemoteStorageController::GetDataNewnessByApplicationId>, "GetDataNewnessByApplicationId"},
|
||||
{15, nullptr, "RegisterUploadSaveDataTransferTaskForAutonomyRegistration"},
|
||||
{16, nullptr, "CreateCleanupToDeleteSaveDataArchiveInfoTask"},
|
||||
{17, nullptr, "ListDataInfo"},
|
||||
{18, D<&IRemoteStorageController::GetDataInfo>, "GetDataInfoV1"},
|
||||
{19, nullptr, "GetDataInfoCacheUpdateNativeHandleHolder"},
|
||||
{20, nullptr, "CreateSaveDataArchiveInfoCacheForSaveDataBackupUpdationTask"},
|
||||
{21, nullptr, "ListSecondarySaves"},
|
||||
{22, D<&IRemoteStorageController::GetSecondarySave>, "GetSecondarySave"},
|
||||
{23, nullptr, "TouchSecondarySave"},
|
||||
{24, nullptr, "GetSecondarySaveDataInfo"},
|
||||
{25, nullptr, "RegisterDownloadSaveDataTransferTaskForAutonomyRegistration"},
|
||||
{26, nullptr, "Unknown26"}, //20.0.0+
|
||||
{27, D<&IRemoteStorageController::GetDataInfo>, "GetDataInfoV2"}, //20.0.0+
|
||||
{28, nullptr, "Unknown28"}, //20.0.0+
|
||||
{29, nullptr, "Unknown29"}, //21.0.0+
|
||||
{800, nullptr, "Unknown800"}, //20.0.0+
|
||||
{900, nullptr, "SetLoadedDataMissing"},
|
||||
{901, nullptr, "Unknown901"}, //20.2.0+
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
RegisterHandlers(functions);
|
||||
}
|
||||
|
||||
IRemoteStorageController::~IRemoteStorageController() = default;
|
||||
|
||||
@@ -21,8 +21,6 @@ private:
|
||||
u64 application_id);
|
||||
Result GetDataNewnessByApplicationId(Out<u8> out_newness, u64 application_id);
|
||||
Result GetDataInfo(Out<std::array<u8, 0x38>> out_data, u64 application_id);
|
||||
|
||||
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
|
||||
};
|
||||
|
||||
} // namespace Service::OLSC
|
||||
|
||||
@@ -11,45 +11,45 @@
|
||||
|
||||
namespace Service::OLSC {
|
||||
|
||||
std::optional<ServiceFrameworkBase::FunctionInfoBase> ITransferTaskListController::FindRequest(u32 key) {
|
||||
static constexpr auto functions = CreateStaticMap(
|
||||
FunctionInfo{0, nullptr, "GetTransferTaskCountForOcean"},
|
||||
FunctionInfo{1, nullptr, "GetTransferTaskInfoForOcean"},
|
||||
FunctionInfo{2, nullptr, "ListTransferTaskInfoForOcean"},
|
||||
FunctionInfo{3, nullptr, "DeleteTransferTaskForOcean"},
|
||||
FunctionInfo{4, nullptr, "RaiseTransferTaskPriorityForOcean"},
|
||||
FunctionInfo{5, D<&ITransferTaskListController::GetTransferTaskEndEventNativeHandleHolder>, "GetTransferTaskEndEventNativeHandleHolder"},
|
||||
FunctionInfo{6, nullptr, "GetTransferTaskProgressForOcean"},
|
||||
FunctionInfo{7, nullptr, "GetTransferTaskLastResultForOcean"},
|
||||
FunctionInfo{8, D<&ITransferTaskListController::StopNextTransferTaskExecution>, "StopNextTransferTaskExecution"},
|
||||
FunctionInfo{9, D<&ITransferTaskListController::GetTransferTaskStartEventNativeHandleHolder>, "GetTransferTaskStartEventNativeHandleHolder"},
|
||||
FunctionInfo{10, nullptr, "SuspendTransferTaskForOcean"},
|
||||
FunctionInfo{11, nullptr, "GetCurrentTransferTaskInfoForOcean"},
|
||||
FunctionInfo{12, nullptr, "FindTransferTaskInfoForOcean"},
|
||||
FunctionInfo{13, nullptr, "CancelCurrentRepairTransferTask"},
|
||||
FunctionInfo{14, nullptr, "GetRepairTransferTaskProgress"},
|
||||
FunctionInfo{15, nullptr, "EnsureExecutableForRepairTransferTask"},
|
||||
FunctionInfo{16, D<&ITransferTaskListController::GetTransferTaskCount>, "GetTransferTaskCount"},
|
||||
FunctionInfo{17, nullptr, "GetTransferTaskInfo"},
|
||||
FunctionInfo{18, nullptr, "ListTransferTaskInfo"},
|
||||
FunctionInfo{19, nullptr, "DeleteTransferTask"},
|
||||
FunctionInfo{20, nullptr, "RaiseTransferTaskPriority"},
|
||||
FunctionInfo{21, D<&ITransferTaskListController::GetTransferTaskProgress>, "GetTransferTaskProgress", MakeVersionGate({10,1,0})},
|
||||
FunctionInfo{22, nullptr, "GetTransferTaskLastResult"},
|
||||
FunctionInfo{23, nullptr, "SuspendTransferTask"},
|
||||
FunctionInfo{24, D<&ITransferTaskListController::GetCurrentTransferTaskInfo>, "GetCurrentTransferTaskInfo"},
|
||||
FunctionInfo{25, D<&ITransferTaskListController::FindTransferTaskInfo>, "FindTransferTaskInfo"},
|
||||
FunctionInfo{26, nullptr, "Unknown26", MakeVersionGate({20,1,0})},
|
||||
FunctionInfo{27, nullptr, "Unknown27", MakeVersionGate({20,1,0})},
|
||||
FunctionInfo{28, nullptr, "Unknown28", MakeVersionGate({20,1,0})},
|
||||
FunctionInfo{29, nullptr, "Unknown29", MakeVersionGate({20,1,0})},
|
||||
FunctionInfo{30, nullptr, "Unknown30", MakeVersionGate({20,1,0})}
|
||||
);
|
||||
return HandlerTableGenerateWithFind(key, functions);
|
||||
}
|
||||
|
||||
ITransferTaskListController::ITransferTaskListController(Core::System& system_)
|
||||
: ServiceFramework{system_, "ITransferTaskListController"} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, nullptr, "GetTransferTaskCountForOcean"},
|
||||
{1, nullptr, "GetTransferTaskInfoForOcean"},
|
||||
{2, nullptr, "ListTransferTaskInfoForOcean"},
|
||||
{3, nullptr, "DeleteTransferTaskForOcean"},
|
||||
{4, nullptr, "RaiseTransferTaskPriorityForOcean"},
|
||||
{5, D<&ITransferTaskListController::GetTransferTaskEndEventNativeHandleHolder>, "GetTransferTaskEndEventNativeHandleHolder"},
|
||||
{6, nullptr, "GetTransferTaskProgressForOcean"},
|
||||
{7, nullptr, "GetTransferTaskLastResultForOcean"},
|
||||
{8, D<&ITransferTaskListController::StopNextTransferTaskExecution>, "StopNextTransferTaskExecution"},
|
||||
{9, D<&ITransferTaskListController::GetTransferTaskStartEventNativeHandleHolder>, "GetTransferTaskStartEventNativeHandleHolder"},
|
||||
{10, nullptr, "SuspendTransferTaskForOcean"},
|
||||
{11, nullptr, "GetCurrentTransferTaskInfoForOcean"},
|
||||
{12, nullptr, "FindTransferTaskInfoForOcean"},
|
||||
{13, nullptr, "CancelCurrentRepairTransferTask"},
|
||||
{14, nullptr, "GetRepairTransferTaskProgress"},
|
||||
{15, nullptr, "EnsureExecutableForRepairTransferTask"},
|
||||
{16, D<&ITransferTaskListController::GetTransferTaskCount>, "GetTransferTaskCount"},
|
||||
{17, nullptr, "GetTransferTaskInfo"},
|
||||
{18, nullptr, "ListTransferTaskInfo"},
|
||||
{19, nullptr, "DeleteTransferTask"},
|
||||
{20, nullptr, "RaiseTransferTaskPriority"},
|
||||
{21, D<&ITransferTaskListController::GetTransferTaskProgress>, "GetTransferTaskProgress"}, //10.1.0+
|
||||
{22, nullptr, "GetTransferTaskLastResult"},
|
||||
{23, nullptr, "SuspendTransferTask"},
|
||||
{24, D<&ITransferTaskListController::GetCurrentTransferTaskInfo>, "GetCurrentTransferTaskInfo"},
|
||||
{25, D<&ITransferTaskListController::FindTransferTaskInfo>, "FindTransferTaskInfo"},
|
||||
{26, nullptr, "Unknown26"}, //20.1.0+
|
||||
{27, nullptr, "Unknown27"}, //20.1.0+
|
||||
{28, nullptr, "Unknown28"}, //20.1.0+
|
||||
{29, nullptr, "Unknown29"}, //20.1.0+
|
||||
{30, nullptr, "Unknown30"}, //20.1.0+
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
RegisterHandlers(functions);
|
||||
}
|
||||
|
||||
ITransferTaskListController::~ITransferTaskListController() = default;
|
||||
|
||||
@@ -27,8 +27,6 @@ private:
|
||||
Result GetTransferTaskProgress();
|
||||
Result GetCurrentTransferTaskInfo(Out<std::array<u8, 0x30>> out_info, u8 unknown);
|
||||
Result FindTransferTaskInfo(Out<std::array<u8, 0x30>> out_info, InBuffer<BufferAttr_HipcAutoSelect> in);
|
||||
|
||||
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
|
||||
};
|
||||
|
||||
} // namespace Service::OLSC
|
||||
|
||||
Reference in New Issue
Block a user