diff options
| author | 2018-04-13 15:17:50 +0300 | |
|---|---|---|
| committer | 2018-04-13 15:17:50 +0300 | |
| commit | b1556309feb9717b68d12c1e55411928e797a243 (patch) | |
| tree | 44141ddb2b3d6093b14886df22d84ff120e941e5 /src/core | |
| parent | Merge pull request #314 from jroweboy/tegra-progress-3b (diff) | |
| parent | Merge pull request #319 from Hexagon12/service-name-fix (diff) | |
| download | yuzu-b1556309feb9717b68d12c1e55411928e797a243.tar.gz yuzu-b1556309feb9717b68d12c1e55411928e797a243.tar.xz yuzu-b1556309feb9717b68d12c1e55411928e797a243.zip | |
Merge pull request #1 from yuzu-emu/master
Update fork
Diffstat (limited to 'src/core')
34 files changed, 853 insertions, 193 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 97d795d5f..9877b83fe 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -88,8 +88,14 @@ add_library(core STATIC | |||
| 88 | hle/romfs.h | 88 | hle/romfs.h |
| 89 | hle/service/acc/acc.cpp | 89 | hle/service/acc/acc.cpp |
| 90 | hle/service/acc/acc.h | 90 | hle/service/acc/acc.h |
| 91 | hle/service/acc/acc_aa.cpp | ||
| 92 | hle/service/acc/acc_aa.h | ||
| 93 | hle/service/acc/acc_su.cpp | ||
| 94 | hle/service/acc/acc_su.h | ||
| 91 | hle/service/acc/acc_u0.cpp | 95 | hle/service/acc/acc_u0.cpp |
| 92 | hle/service/acc/acc_u0.h | 96 | hle/service/acc/acc_u0.h |
| 97 | hle/service/acc/acc_u1.cpp | ||
| 98 | hle/service/acc/acc_u1.h | ||
| 93 | hle/service/am/am.cpp | 99 | hle/service/am/am.cpp |
| 94 | hle/service/am/am.h | 100 | hle/service/am/am.h |
| 95 | hle/service/am/applet_ae.cpp | 101 | hle/service/am/applet_ae.cpp |
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index 5716577d6..cfb6e05a5 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp | |||
| @@ -2,14 +2,142 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include "common/logging/log.h" | ||
| 6 | #include "core/hle/ipc_helpers.h" | ||
| 5 | #include "core/hle/service/acc/acc.h" | 7 | #include "core/hle/service/acc/acc.h" |
| 8 | #include "core/hle/service/acc/acc_aa.h" | ||
| 9 | #include "core/hle/service/acc/acc_su.h" | ||
| 6 | #include "core/hle/service/acc/acc_u0.h" | 10 | #include "core/hle/service/acc/acc_u0.h" |
| 11 | #include "core/hle/service/acc/acc_u1.h" | ||
| 7 | 12 | ||
| 8 | namespace Service { | 13 | namespace Service { |
| 9 | namespace Account { | 14 | namespace Account { |
| 10 | 15 | ||
| 16 | // TODO: RE this structure | ||
| 17 | struct UserData { | ||
| 18 | INSERT_PADDING_WORDS(1); | ||
| 19 | u32 icon_id; | ||
| 20 | u8 bg_color_id; | ||
| 21 | INSERT_PADDING_BYTES(0x7); | ||
| 22 | INSERT_PADDING_BYTES(0x10); | ||
| 23 | INSERT_PADDING_BYTES(0x60); | ||
| 24 | }; | ||
| 25 | static_assert(sizeof(UserData) == 0x80, "UserData structure has incorrect size"); | ||
| 26 | |||
| 27 | struct ProfileBase { | ||
| 28 | u8 user_id[0x10]; | ||
| 29 | u64 timestamp; | ||
| 30 | u8 username[0x20]; | ||
| 31 | }; | ||
| 32 | static_assert(sizeof(ProfileBase) == 0x38, "ProfileBase structure has incorrect size"); | ||
| 33 | |||
| 34 | using Uid = std::array<u64, 2>; | ||
| 35 | static constexpr Uid DEFAULT_USER_ID{0x10ull, 0x20ull}; | ||
| 36 | |||
| 37 | class IProfile final : public ServiceFramework<IProfile> { | ||
| 38 | public: | ||
| 39 | IProfile() : ServiceFramework("IProfile") { | ||
| 40 | static const FunctionInfo functions[] = { | ||
| 41 | {1, &IProfile::GetBase, "GetBase"}, | ||
| 42 | }; | ||
| 43 | RegisterHandlers(functions); | ||
| 44 | } | ||
| 45 | |||
| 46 | private: | ||
| 47 | void GetBase(Kernel::HLERequestContext& ctx) { | ||
| 48 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 49 | ProfileBase profile_base{}; | ||
| 50 | IPC::ResponseBuilder rb{ctx, 16}; | ||
| 51 | rb.Push(RESULT_SUCCESS); | ||
| 52 | rb.PushRaw(profile_base); | ||
| 53 | } | ||
| 54 | }; | ||
| 55 | |||
| 56 | class IManagerForApplication final : public ServiceFramework<IManagerForApplication> { | ||
| 57 | public: | ||
| 58 | IManagerForApplication() : ServiceFramework("IManagerForApplication") { | ||
| 59 | static const FunctionInfo functions[] = { | ||
| 60 | {0, &IManagerForApplication::CheckAvailability, "CheckAvailability"}, | ||
| 61 | {1, &IManagerForApplication::GetAccountId, "GetAccountId"}, | ||
| 62 | }; | ||
| 63 | RegisterHandlers(functions); | ||
| 64 | } | ||
| 65 | |||
| 66 | private: | ||
| 67 | void CheckAvailability(Kernel::HLERequestContext& ctx) { | ||
| 68 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 69 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 70 | rb.Push(RESULT_SUCCESS); | ||
| 71 | rb.Push(true); // TODO: Check when this is supposed to return true and when not | ||
| 72 | } | ||
| 73 | |||
| 74 | void GetAccountId(Kernel::HLERequestContext& ctx) { | ||
| 75 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 76 | IPC::ResponseBuilder rb{ctx, 4}; | ||
| 77 | rb.Push(RESULT_SUCCESS); | ||
| 78 | rb.Push<u64>(0x12345678ABCDEF); | ||
| 79 | } | ||
| 80 | }; | ||
| 81 | |||
| 82 | void Module::Interface::GetUserExistence(Kernel::HLERequestContext& ctx) { | ||
| 83 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 84 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 85 | rb.Push(RESULT_SUCCESS); | ||
| 86 | rb.Push(true); // TODO: Check when this is supposed to return true and when not | ||
| 87 | } | ||
| 88 | |||
| 89 | void Module::Interface::ListAllUsers(Kernel::HLERequestContext& ctx) { | ||
| 90 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 91 | constexpr std::array<u128, 10> user_ids{DEFAULT_USER_ID}; | ||
| 92 | ctx.WriteBuffer(user_ids.data(), user_ids.size()); | ||
| 93 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 94 | rb.Push(RESULT_SUCCESS); | ||
| 95 | } | ||
| 96 | |||
| 97 | void Module::Interface::ListOpenUsers(Kernel::HLERequestContext& ctx) { | ||
| 98 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 99 | constexpr std::array<u128, 10> user_ids{DEFAULT_USER_ID}; | ||
| 100 | ctx.WriteBuffer(user_ids.data(), user_ids.size()); | ||
| 101 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 102 | rb.Push(RESULT_SUCCESS); | ||
| 103 | } | ||
| 104 | |||
| 105 | void Module::Interface::GetProfile(Kernel::HLERequestContext& ctx) { | ||
| 106 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 107 | rb.Push(RESULT_SUCCESS); | ||
| 108 | rb.PushIpcInterface<IProfile>(); | ||
| 109 | LOG_DEBUG(Service_ACC, "called"); | ||
| 110 | } | ||
| 111 | |||
| 112 | void Module::Interface::InitializeApplicationInfo(Kernel::HLERequestContext& ctx) { | ||
| 113 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 114 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 115 | rb.Push(RESULT_SUCCESS); | ||
| 116 | } | ||
| 117 | |||
| 118 | void Module::Interface::GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx) { | ||
| 119 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 120 | rb.Push(RESULT_SUCCESS); | ||
| 121 | rb.PushIpcInterface<IManagerForApplication>(); | ||
| 122 | LOG_DEBUG(Service_ACC, "called"); | ||
| 123 | } | ||
| 124 | |||
| 125 | void Module::Interface::GetLastOpenedUser(Kernel::HLERequestContext& ctx) { | ||
| 126 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 127 | IPC::ResponseBuilder rb{ctx, 6}; | ||
| 128 | rb.Push(RESULT_SUCCESS); | ||
| 129 | rb.PushRaw(DEFAULT_USER_ID); | ||
| 130 | } | ||
| 131 | |||
| 132 | Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) | ||
| 133 | : ServiceFramework(name), module(std::move(module)) {} | ||
| 134 | |||
| 11 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 135 | void InstallInterfaces(SM::ServiceManager& service_manager) { |
| 12 | std::make_shared<ACC_U0>()->InstallAsService(service_manager); | 136 | auto module = std::make_shared<Module>(); |
| 137 | std::make_shared<ACC_AA>(module)->InstallAsService(service_manager); | ||
| 138 | std::make_shared<ACC_SU>(module)->InstallAsService(service_manager); | ||
| 139 | std::make_shared<ACC_U0>(module)->InstallAsService(service_manager); | ||
| 140 | std::make_shared<ACC_U1>(module)->InstallAsService(service_manager); | ||
| 13 | } | 141 | } |
| 14 | 142 | ||
| 15 | } // namespace Account | 143 | } // namespace Account |
diff --git a/src/core/hle/service/acc/acc.h b/src/core/hle/service/acc/acc.h index 44d024f48..2d2f57b7d 100644 --- a/src/core/hle/service/acc/acc.h +++ b/src/core/hle/service/acc/acc.h | |||
| @@ -9,6 +9,25 @@ | |||
| 9 | namespace Service { | 9 | namespace Service { |
| 10 | namespace Account { | 10 | namespace Account { |
| 11 | 11 | ||
| 12 | class Module final { | ||
| 13 | public: | ||
| 14 | class Interface : public ServiceFramework<Interface> { | ||
| 15 | public: | ||
| 16 | Interface(std::shared_ptr<Module> module, const char* name); | ||
| 17 | |||
| 18 | void GetUserExistence(Kernel::HLERequestContext& ctx); | ||
| 19 | void ListAllUsers(Kernel::HLERequestContext& ctx); | ||
| 20 | void ListOpenUsers(Kernel::HLERequestContext& ctx); | ||
| 21 | void GetLastOpenedUser(Kernel::HLERequestContext& ctx); | ||
| 22 | void GetProfile(Kernel::HLERequestContext& ctx); | ||
| 23 | void InitializeApplicationInfo(Kernel::HLERequestContext& ctx); | ||
| 24 | void GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx); | ||
| 25 | |||
| 26 | protected: | ||
| 27 | std::shared_ptr<Module> module; | ||
| 28 | }; | ||
| 29 | }; | ||
| 30 | |||
| 12 | /// Registers all ACC services with the specified service manager. | 31 | /// Registers all ACC services with the specified service manager. |
| 13 | void InstallInterfaces(SM::ServiceManager& service_manager); | 32 | void InstallInterfaces(SM::ServiceManager& service_manager); |
| 14 | 33 | ||
diff --git a/src/core/hle/service/acc/acc_aa.cpp b/src/core/hle/service/acc/acc_aa.cpp new file mode 100644 index 000000000..76deaa07f --- /dev/null +++ b/src/core/hle/service/acc/acc_aa.cpp | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "core/hle/service/acc/acc_aa.h" | ||
| 6 | |||
| 7 | namespace Service { | ||
| 8 | namespace Account { | ||
| 9 | |||
| 10 | ACC_AA::ACC_AA(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:aa") { | ||
| 11 | static const FunctionInfo functions[] = { | ||
| 12 | {0, nullptr, "EnsureCacheAsync"}, | ||
| 13 | {1, nullptr, "LoadCache"}, | ||
| 14 | {2, nullptr, "GetDeviceAccountId"}, | ||
| 15 | {50, nullptr, "RegisterNotificationTokenAsync"}, | ||
| 16 | {51, nullptr, "UnregisterNotificationTokenAsync"}, | ||
| 17 | }; | ||
| 18 | RegisterHandlers(functions); | ||
| 19 | } | ||
| 20 | |||
| 21 | } // namespace Account | ||
| 22 | } // namespace Service | ||
diff --git a/src/core/hle/service/acc/acc_aa.h b/src/core/hle/service/acc/acc_aa.h new file mode 100644 index 000000000..5069c6890 --- /dev/null +++ b/src/core/hle/service/acc/acc_aa.h | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/service/acc/acc.h" | ||
| 8 | |||
| 9 | namespace Service { | ||
| 10 | namespace Account { | ||
| 11 | |||
| 12 | class ACC_AA final : public Module::Interface { | ||
| 13 | public: | ||
| 14 | explicit ACC_AA(std::shared_ptr<Module> module); | ||
| 15 | }; | ||
| 16 | |||
| 17 | } // namespace Account | ||
| 18 | } // namespace Service | ||
diff --git a/src/core/hle/service/acc/acc_su.cpp b/src/core/hle/service/acc/acc_su.cpp new file mode 100644 index 000000000..538f9d9b1 --- /dev/null +++ b/src/core/hle/service/acc/acc_su.cpp | |||
| @@ -0,0 +1,55 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "core/hle/service/acc/acc_su.h" | ||
| 6 | |||
| 7 | namespace Service { | ||
| 8 | namespace Account { | ||
| 9 | |||
| 10 | ACC_SU::ACC_SU(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:su") { | ||
| 11 | static const FunctionInfo functions[] = { | ||
| 12 | {0, nullptr, "GetUserCount"}, | ||
| 13 | {1, &ACC_SU::GetUserExistence, "GetUserExistence"}, | ||
| 14 | {2, &ACC_SU::ListAllUsers, "ListAllUsers"}, | ||
| 15 | {3, &ACC_SU::ListOpenUsers, "ListOpenUsers"}, | ||
| 16 | {4, &ACC_SU::GetLastOpenedUser, "GetLastOpenedUser"}, | ||
| 17 | {5, &ACC_SU::GetProfile, "GetProfile"}, | ||
| 18 | {6, nullptr, "GetProfileDigest"}, | ||
| 19 | {50, nullptr, "IsUserRegistrationRequestPermitted"}, | ||
| 20 | {51, nullptr, "TrySelectUserWithoutInteraction"}, | ||
| 21 | {60, nullptr, "ListOpenContextStoredUsers"}, | ||
| 22 | {100, nullptr, "GetUserRegistrationNotifier"}, | ||
| 23 | {101, nullptr, "GetUserStateChangeNotifier"}, | ||
| 24 | {102, nullptr, "GetBaasAccountManagerForSystemService"}, | ||
| 25 | {103, nullptr, "GetBaasUserAvailabilityChangeNotifier"}, | ||
| 26 | {104, nullptr, "GetProfileUpdateNotifier"}, | ||
| 27 | {105, nullptr, "CheckNetworkServiceAvailabilityAsync"}, | ||
| 28 | {110, nullptr, "StoreSaveDataThumbnail"}, | ||
| 29 | {111, nullptr, "ClearSaveDataThumbnail"}, | ||
| 30 | {112, nullptr, "LoadSaveDataThumbnail"}, | ||
| 31 | {113, nullptr, "GetSaveDataThumbnailExistence"}, | ||
| 32 | {190, nullptr, "GetUserLastOpenedApplication"}, | ||
| 33 | {191, nullptr, "ActivateOpenContextHolder"}, | ||
| 34 | {200, nullptr, "BeginUserRegistration"}, | ||
| 35 | {201, nullptr, "CompleteUserRegistration"}, | ||
| 36 | {202, nullptr, "CancelUserRegistration"}, | ||
| 37 | {203, nullptr, "DeleteUser"}, | ||
| 38 | {204, nullptr, "SetUserPosition"}, | ||
| 39 | {205, nullptr, "GetProfileEditor"}, | ||
| 40 | {206, nullptr, "CompleteUserRegistrationForcibly"}, | ||
| 41 | {210, nullptr, "CreateFloatingRegistrationRequest"}, | ||
| 42 | {230, nullptr, "AuthenticateServiceAsync"}, | ||
| 43 | {250, nullptr, "GetBaasAccountAdministrator"}, | ||
| 44 | {290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"}, | ||
| 45 | {291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"}, | ||
| 46 | {299, nullptr, "SuspendBackgroundDaemon"}, | ||
| 47 | {997, nullptr, "DebugInvalidateTokenCacheForUser"}, | ||
| 48 | {998, nullptr, "DebugSetUserStateClose"}, | ||
| 49 | {999, nullptr, "DebugSetUserStateOpen"}, | ||
| 50 | }; | ||
| 51 | RegisterHandlers(functions); | ||
| 52 | } | ||
| 53 | |||
| 54 | } // namespace Account | ||
| 55 | } // namespace Service | ||
diff --git a/src/core/hle/service/acc/acc_su.h b/src/core/hle/service/acc/acc_su.h new file mode 100644 index 000000000..3894a6991 --- /dev/null +++ b/src/core/hle/service/acc/acc_su.h | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/service/acc/acc.h" | ||
| 8 | |||
| 9 | namespace Service { | ||
| 10 | namespace Account { | ||
| 11 | |||
| 12 | class ACC_SU final : public Module::Interface { | ||
| 13 | public: | ||
| 14 | explicit ACC_SU(std::shared_ptr<Module> module); | ||
| 15 | }; | ||
| 16 | |||
| 17 | } // namespace Account | ||
| 18 | } // namespace Service | ||
diff --git a/src/core/hle/service/acc/acc_u0.cpp b/src/core/hle/service/acc/acc_u0.cpp index 52c3491d5..7b9c667ef 100644 --- a/src/core/hle/service/acc/acc_u0.cpp +++ b/src/core/hle/service/acc/acc_u0.cpp | |||
| @@ -2,120 +2,31 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include "common/logging/log.h" | ||
| 6 | #include "core/hle/ipc_helpers.h" | ||
| 7 | #include "core/hle/service/acc/acc_u0.h" | 5 | #include "core/hle/service/acc/acc_u0.h" |
| 8 | 6 | ||
| 9 | namespace Service { | 7 | namespace Service { |
| 10 | namespace Account { | 8 | namespace Account { |
| 11 | 9 | ||
| 12 | using Uid = std::array<u64, 2>; | 10 | ACC_U0::ACC_U0(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:u0") { |
| 13 | static constexpr Uid DEFAULT_USER_ID{0x10ull, 0x20ull}; | ||
| 14 | |||
| 15 | class IProfile final : public ServiceFramework<IProfile> { | ||
| 16 | public: | ||
| 17 | IProfile() : ServiceFramework("IProfile") { | ||
| 18 | static const FunctionInfo functions[] = { | ||
| 19 | {1, &IProfile::GetBase, "GetBase"}, | ||
| 20 | }; | ||
| 21 | RegisterHandlers(functions); | ||
| 22 | } | ||
| 23 | |||
| 24 | private: | ||
| 25 | void GetBase(Kernel::HLERequestContext& ctx) { | ||
| 26 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 27 | ProfileBase profile_base{}; | ||
| 28 | IPC::ResponseBuilder rb{ctx, 16}; | ||
| 29 | rb.Push(RESULT_SUCCESS); | ||
| 30 | rb.PushRaw(profile_base); | ||
| 31 | } | ||
| 32 | }; | ||
| 33 | |||
| 34 | class IManagerForApplication final : public ServiceFramework<IManagerForApplication> { | ||
| 35 | public: | ||
| 36 | IManagerForApplication() : ServiceFramework("IManagerForApplication") { | ||
| 37 | static const FunctionInfo functions[] = { | ||
| 38 | {0, &IManagerForApplication::CheckAvailability, "CheckAvailability"}, | ||
| 39 | {1, &IManagerForApplication::GetAccountId, "GetAccountId"}, | ||
| 40 | }; | ||
| 41 | RegisterHandlers(functions); | ||
| 42 | } | ||
| 43 | |||
| 44 | private: | ||
| 45 | void CheckAvailability(Kernel::HLERequestContext& ctx) { | ||
| 46 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 47 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 48 | rb.Push(RESULT_SUCCESS); | ||
| 49 | rb.Push(true); // TODO: Check when this is supposed to return true and when not | ||
| 50 | } | ||
| 51 | |||
| 52 | void GetAccountId(Kernel::HLERequestContext& ctx) { | ||
| 53 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 54 | IPC::ResponseBuilder rb{ctx, 4}; | ||
| 55 | rb.Push(RESULT_SUCCESS); | ||
| 56 | rb.Push<u64>(0x12345678ABCDEF); | ||
| 57 | } | ||
| 58 | }; | ||
| 59 | |||
| 60 | void ACC_U0::GetUserExistence(Kernel::HLERequestContext& ctx) { | ||
| 61 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 62 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 63 | rb.Push(RESULT_SUCCESS); | ||
| 64 | rb.Push(true); // TODO: Check when this is supposed to return true and when not | ||
| 65 | } | ||
| 66 | |||
| 67 | void ACC_U0::ListAllUsers(Kernel::HLERequestContext& ctx) { | ||
| 68 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 69 | constexpr std::array<u128, 10> user_ids{DEFAULT_USER_ID}; | ||
| 70 | ctx.WriteBuffer(user_ids.data(), user_ids.size()); | ||
| 71 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 72 | rb.Push(RESULT_SUCCESS); | ||
| 73 | } | ||
| 74 | |||
| 75 | void ACC_U0::ListOpenUsers(Kernel::HLERequestContext& ctx) { | ||
| 76 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 77 | constexpr std::array<u128, 10> user_ids{DEFAULT_USER_ID}; | ||
| 78 | ctx.WriteBuffer(user_ids.data(), user_ids.size()); | ||
| 79 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 80 | rb.Push(RESULT_SUCCESS); | ||
| 81 | } | ||
| 82 | |||
| 83 | void ACC_U0::GetProfile(Kernel::HLERequestContext& ctx) { | ||
| 84 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 85 | rb.Push(RESULT_SUCCESS); | ||
| 86 | rb.PushIpcInterface<IProfile>(); | ||
| 87 | LOG_DEBUG(Service_ACC, "called"); | ||
| 88 | } | ||
| 89 | |||
| 90 | void ACC_U0::InitializeApplicationInfo(Kernel::HLERequestContext& ctx) { | ||
| 91 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 92 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 93 | rb.Push(RESULT_SUCCESS); | ||
| 94 | } | ||
| 95 | |||
| 96 | void ACC_U0::GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx) { | ||
| 97 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 98 | rb.Push(RESULT_SUCCESS); | ||
| 99 | rb.PushIpcInterface<IManagerForApplication>(); | ||
| 100 | LOG_DEBUG(Service_ACC, "called"); | ||
| 101 | } | ||
| 102 | |||
| 103 | void ACC_U0::GetLastOpenedUser(Kernel::HLERequestContext& ctx) { | ||
| 104 | LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||
| 105 | IPC::ResponseBuilder rb{ctx, 6}; | ||
| 106 | rb.Push(RESULT_SUCCESS); | ||
| 107 | rb.PushRaw(DEFAULT_USER_ID); | ||
| 108 | } | ||
| 109 | |||
| 110 | ACC_U0::ACC_U0() : ServiceFramework("acc:u0") { | ||
| 111 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "GetUserCount"}, | ||
| 112 | {1, &ACC_U0::GetUserExistence, "GetUserExistence"}, | 13 | {1, &ACC_U0::GetUserExistence, "GetUserExistence"}, |
| 113 | {2, &ACC_U0::ListAllUsers, "ListAllUsers"}, | 14 | {2, &ACC_U0::ListAllUsers, "ListAllUsers"}, |
| 114 | {3, &ACC_U0::ListOpenUsers, "ListOpenUsers"}, | 15 | {3, &ACC_U0::ListOpenUsers, "ListOpenUsers"}, |
| 115 | {4, &ACC_U0::GetLastOpenedUser, "GetLastOpenedUser"}, | 16 | {4, &ACC_U0::GetLastOpenedUser, "GetLastOpenedUser"}, |
| 116 | {5, &ACC_U0::GetProfile, "GetProfile"}, | 17 | {5, &ACC_U0::GetProfile, "GetProfile"}, |
| 18 | {6, nullptr, "GetProfileDigest"}, | ||
| 19 | {50, nullptr, "IsUserRegistrationRequestPermitted"}, | ||
| 20 | {51, nullptr, "TrySelectUserWithoutInteraction"}, | ||
| 21 | {60, nullptr, "ListOpenContextStoredUsers"}, | ||
| 117 | {100, &ACC_U0::InitializeApplicationInfo, "InitializeApplicationInfo"}, | 22 | {100, &ACC_U0::InitializeApplicationInfo, "InitializeApplicationInfo"}, |
| 118 | {101, &ACC_U0::GetBaasAccountManagerForApplication, "GetBaasAccountManagerForApplication"}, | 23 | {101, &ACC_U0::GetBaasAccountManagerForApplication, "GetBaasAccountManagerForApplication"}, |
| 24 | {102, nullptr, "AuthenticateApplicationAsync"}, | ||
| 25 | {103, nullptr, "CheckNetworkServiceAvailabilityAsync"}, | ||
| 26 | {110, nullptr, "StoreSaveDataThumbnail"}, | ||
| 27 | {111, nullptr, "ClearSaveDataThumbnail"}, | ||
| 28 | {120, nullptr, "CreateGuestLoginRequest"}, | ||
| 29 | {130, nullptr, "LoadOpenContext"}, | ||
| 119 | }; | 30 | }; |
| 120 | RegisterHandlers(functions); | 31 | RegisterHandlers(functions); |
| 121 | } | 32 | } |
diff --git a/src/core/hle/service/acc/acc_u0.h b/src/core/hle/service/acc/acc_u0.h index 222f37282..d4f36e172 100644 --- a/src/core/hle/service/acc/acc_u0.h +++ b/src/core/hle/service/acc/acc_u0.h | |||
| @@ -4,36 +4,14 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/acc/acc.h" |
| 8 | 8 | ||
| 9 | namespace Service { | 9 | namespace Service { |
| 10 | namespace Account { | 10 | namespace Account { |
| 11 | 11 | ||
| 12 | // TODO: RE this structure | 12 | class ACC_U0 final : public Module::Interface { |
| 13 | struct UserData { | ||
| 14 | INSERT_PADDING_BYTES(0x80); | ||
| 15 | }; | ||
| 16 | static_assert(sizeof(UserData) == 0x80, "UserData structure has incorrect size"); | ||
| 17 | |||
| 18 | // TODO: RE this structure | ||
| 19 | struct ProfileBase { | ||
| 20 | INSERT_PADDING_BYTES(0x38); | ||
| 21 | }; | ||
| 22 | static_assert(sizeof(ProfileBase) == 0x38, "ProfileBase structure has incorrect size"); | ||
| 23 | |||
| 24 | class ACC_U0 final : public ServiceFramework<ACC_U0> { | ||
| 25 | public: | 13 | public: |
| 26 | ACC_U0(); | 14 | explicit ACC_U0(std::shared_ptr<Module> module); |
| 27 | ~ACC_U0() = default; | ||
| 28 | |||
| 29 | private: | ||
| 30 | void GetUserExistence(Kernel::HLERequestContext& ctx); | ||
| 31 | void ListAllUsers(Kernel::HLERequestContext& ctx); | ||
| 32 | void ListOpenUsers(Kernel::HLERequestContext& ctx); | ||
| 33 | void GetLastOpenedUser(Kernel::HLERequestContext& ctx); | ||
| 34 | void GetProfile(Kernel::HLERequestContext& ctx); | ||
| 35 | void InitializeApplicationInfo(Kernel::HLERequestContext& ctx); | ||
| 36 | void GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx); | ||
| 37 | }; | 15 | }; |
| 38 | 16 | ||
| 39 | } // namespace Account | 17 | } // namespace Account |
diff --git a/src/core/hle/service/acc/acc_u1.cpp b/src/core/hle/service/acc/acc_u1.cpp new file mode 100644 index 000000000..dea353554 --- /dev/null +++ b/src/core/hle/service/acc/acc_u1.cpp | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "core/hle/service/acc/acc_u1.h" | ||
| 6 | |||
| 7 | namespace Service { | ||
| 8 | namespace Account { | ||
| 9 | |||
| 10 | ACC_U1::ACC_U1(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:u1") { | ||
| 11 | static const FunctionInfo functions[] = { | ||
| 12 | {0, nullptr, "GetUserCount"}, | ||
| 13 | {1, &ACC_U1::GetUserExistence, "GetUserExistence"}, | ||
| 14 | {2, &ACC_U1::ListAllUsers, "ListAllUsers"}, | ||
| 15 | {3, &ACC_U1::ListOpenUsers, "ListOpenUsers"}, | ||
| 16 | {4, &ACC_U1::GetLastOpenedUser, "GetLastOpenedUser"}, | ||
| 17 | {5, &ACC_U1::GetProfile, "GetProfile"}, | ||
| 18 | {6, nullptr, "GetProfileDigest"}, | ||
| 19 | {50, nullptr, "IsUserRegistrationRequestPermitted"}, | ||
| 20 | {51, nullptr, "TrySelectUserWithoutInteraction"}, | ||
| 21 | {60, nullptr, "ListOpenContextStoredUsers"}, | ||
| 22 | {100, nullptr, "GetUserRegistrationNotifier"}, | ||
| 23 | {101, nullptr, "GetUserStateChangeNotifier"}, | ||
| 24 | {102, nullptr, "GetBaasAccountManagerForSystemService"}, | ||
| 25 | {103, nullptr, "GetProfileUpdateNotifier"}, | ||
| 26 | {104, nullptr, "CheckNetworkServiceAvailabilityAsync"}, | ||
| 27 | {105, nullptr, "GetBaasUserAvailabilityChangeNotifier"}, | ||
| 28 | {110, nullptr, "StoreSaveDataThumbnail"}, | ||
| 29 | {111, nullptr, "ClearSaveDataThumbnail"}, | ||
| 30 | {112, nullptr, "LoadSaveDataThumbnail"}, | ||
| 31 | {113, nullptr, "GetSaveDataThumbnailExistence"}, | ||
| 32 | {190, nullptr, "GetUserLastOpenedApplication"}, | ||
| 33 | {191, nullptr, "ActivateOpenContextHolder"}, | ||
| 34 | {997, nullptr, "DebugInvalidateTokenCacheForUser"}, | ||
| 35 | {998, nullptr, "DebugSetUserStateClose"}, | ||
| 36 | {999, nullptr, "DebugSetUserStateOpen"}, | ||
| 37 | }; | ||
| 38 | RegisterHandlers(functions); | ||
| 39 | } | ||
| 40 | |||
| 41 | } // namespace Account | ||
| 42 | } // namespace Service | ||
diff --git a/src/core/hle/service/acc/acc_u1.h b/src/core/hle/service/acc/acc_u1.h new file mode 100644 index 000000000..432d5b3e9 --- /dev/null +++ b/src/core/hle/service/acc/acc_u1.h | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/service/acc/acc.h" | ||
| 8 | |||
| 9 | namespace Service { | ||
| 10 | namespace Account { | ||
| 11 | |||
| 12 | class ACC_U1 final : public Module::Interface { | ||
| 13 | public: | ||
| 14 | explicit ACC_U1(std::shared_ptr<Module> module); | ||
| 15 | }; | ||
| 16 | |||
| 17 | } // namespace Account | ||
| 18 | } // namespace Service | ||
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index bab338205..bfc431e88 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp | |||
| @@ -19,8 +19,11 @@ namespace AM { | |||
| 19 | 19 | ||
| 20 | IWindowController::IWindowController() : ServiceFramework("IWindowController") { | 20 | IWindowController::IWindowController() : ServiceFramework("IWindowController") { |
| 21 | static const FunctionInfo functions[] = { | 21 | static const FunctionInfo functions[] = { |
| 22 | {0, nullptr, "CreateWindow"}, | ||
| 22 | {1, &IWindowController::GetAppletResourceUserId, "GetAppletResourceUserId"}, | 23 | {1, &IWindowController::GetAppletResourceUserId, "GetAppletResourceUserId"}, |
| 23 | {10, &IWindowController::AcquireForegroundRights, "AcquireForegroundRights"}, | 24 | {10, &IWindowController::AcquireForegroundRights, "AcquireForegroundRights"}, |
| 25 | {11, nullptr, "ReleaseForegroundRights"}, | ||
| 26 | {12, nullptr, "RejectToChangeIntoBackground"}, | ||
| 24 | }; | 27 | }; |
| 25 | RegisterHandlers(functions); | 28 | RegisterHandlers(functions); |
| 26 | } | 29 | } |
| @@ -78,8 +81,11 @@ IDebugFunctions::IDebugFunctions() : ServiceFramework("IDebugFunctions") {} | |||
| 78 | ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger) | 81 | ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger) |
| 79 | : ServiceFramework("ISelfController"), nvflinger(std::move(nvflinger)) { | 82 | : ServiceFramework("ISelfController"), nvflinger(std::move(nvflinger)) { |
| 80 | static const FunctionInfo functions[] = { | 83 | static const FunctionInfo functions[] = { |
| 84 | {0, nullptr, "Exit"}, | ||
| 81 | {1, &ISelfController::LockExit, "LockExit"}, | 85 | {1, &ISelfController::LockExit, "LockExit"}, |
| 82 | {2, &ISelfController::UnlockExit, "UnlockExit"}, | 86 | {2, &ISelfController::UnlockExit, "UnlockExit"}, |
| 87 | {3, nullptr, "EnterFatalSection"}, | ||
| 88 | {4, nullptr, "LeaveFatalSection"}, | ||
| 83 | {9, &ISelfController::GetLibraryAppletLaunchableEvent, "GetLibraryAppletLaunchableEvent"}, | 89 | {9, &ISelfController::GetLibraryAppletLaunchableEvent, "GetLibraryAppletLaunchableEvent"}, |
| 84 | {10, &ISelfController::SetScreenShotPermission, "SetScreenShotPermission"}, | 90 | {10, &ISelfController::SetScreenShotPermission, "SetScreenShotPermission"}, |
| 85 | {11, &ISelfController::SetOperationModeChangedNotification, | 91 | {11, &ISelfController::SetOperationModeChangedNotification, |
| @@ -88,8 +94,29 @@ ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger | |||
| 88 | "SetPerformanceModeChangedNotification"}, | 94 | "SetPerformanceModeChangedNotification"}, |
| 89 | {13, &ISelfController::SetFocusHandlingMode, "SetFocusHandlingMode"}, | 95 | {13, &ISelfController::SetFocusHandlingMode, "SetFocusHandlingMode"}, |
| 90 | {14, &ISelfController::SetRestartMessageEnabled, "SetRestartMessageEnabled"}, | 96 | {14, &ISelfController::SetRestartMessageEnabled, "SetRestartMessageEnabled"}, |
| 97 | {15, nullptr, "SetScreenShotAppletIdentityInfo"}, | ||
| 91 | {16, &ISelfController::SetOutOfFocusSuspendingEnabled, "SetOutOfFocusSuspendingEnabled"}, | 98 | {16, &ISelfController::SetOutOfFocusSuspendingEnabled, "SetOutOfFocusSuspendingEnabled"}, |
| 99 | {17, nullptr, "SetControllerFirmwareUpdateSection"}, | ||
| 100 | {18, nullptr, "SetRequiresCaptureButtonShortPressedMessage"}, | ||
| 101 | {19, nullptr, "SetScreenShotImageOrientation"}, | ||
| 102 | {20, nullptr, "SetDesirableKeyboardLayout"}, | ||
| 92 | {40, &ISelfController::CreateManagedDisplayLayer, "CreateManagedDisplayLayer"}, | 103 | {40, &ISelfController::CreateManagedDisplayLayer, "CreateManagedDisplayLayer"}, |
| 104 | {41, nullptr, "IsSystemBufferSharingEnabled"}, | ||
| 105 | {42, nullptr, "GetSystemSharedLayerHandle"}, | ||
| 106 | {50, nullptr, "SetHandlesRequestToDisplay"}, | ||
| 107 | {51, nullptr, "ApproveToDisplay"}, | ||
| 108 | {60, nullptr, "OverrideAutoSleepTimeAndDimmingTime"}, | ||
| 109 | {61, nullptr, "SetMediaPlaybackState"}, | ||
| 110 | {62, nullptr, "SetIdleTimeDetectionExtension"}, | ||
| 111 | {63, nullptr, "GetIdleTimeDetectionExtension"}, | ||
| 112 | {64, nullptr, "SetInputDetectionSourceSet"}, | ||
| 113 | {65, nullptr, "ReportUserIsActive"}, | ||
| 114 | {66, nullptr, "GetCurrentIlluminance"}, | ||
| 115 | {67, nullptr, "IsIlluminanceAvailable"}, | ||
| 116 | {68, nullptr, "SetAutoSleepDisabled"}, | ||
| 117 | {69, nullptr, "IsAutoSleepDisabled"}, | ||
| 118 | {70, nullptr, "ReportMultimediaError"}, | ||
| 119 | {80, nullptr, "SetWirelessPriorityMode"}, | ||
| 93 | }; | 120 | }; |
| 94 | RegisterHandlers(functions); | 121 | RegisterHandlers(functions); |
| 95 | 122 | ||
| @@ -206,9 +233,30 @@ ICommonStateGetter::ICommonStateGetter() : ServiceFramework("ICommonStateGetter" | |||
| 206 | static const FunctionInfo functions[] = { | 233 | static const FunctionInfo functions[] = { |
| 207 | {0, &ICommonStateGetter::GetEventHandle, "GetEventHandle"}, | 234 | {0, &ICommonStateGetter::GetEventHandle, "GetEventHandle"}, |
| 208 | {1, &ICommonStateGetter::ReceiveMessage, "ReceiveMessage"}, | 235 | {1, &ICommonStateGetter::ReceiveMessage, "ReceiveMessage"}, |
| 236 | {2, nullptr, "GetThisAppletKind"}, | ||
| 237 | {3, nullptr, "AllowToEnterSleep"}, | ||
| 238 | {4, nullptr, "DisallowToEnterSleep"}, | ||
| 209 | {5, &ICommonStateGetter::GetOperationMode, "GetOperationMode"}, | 239 | {5, &ICommonStateGetter::GetOperationMode, "GetOperationMode"}, |
| 210 | {6, &ICommonStateGetter::GetPerformanceMode, "GetPerformanceMode"}, | 240 | {6, &ICommonStateGetter::GetPerformanceMode, "GetPerformanceMode"}, |
| 241 | {7, nullptr, "GetCradleStatus"}, | ||
| 242 | {8, nullptr, "GetBootMode"}, | ||
| 211 | {9, &ICommonStateGetter::GetCurrentFocusState, "GetCurrentFocusState"}, | 243 | {9, &ICommonStateGetter::GetCurrentFocusState, "GetCurrentFocusState"}, |
| 244 | {10, nullptr, "RequestToAcquireSleepLock"}, | ||
| 245 | {11, nullptr, "ReleaseSleepLock"}, | ||
| 246 | {12, nullptr, "ReleaseSleepLockTransiently"}, | ||
| 247 | {13, nullptr, "GetAcquiredSleepLockEvent"}, | ||
| 248 | {20, nullptr, "PushToGeneralChannel"}, | ||
| 249 | {30, nullptr, "GetHomeButtonReaderLockAccessor"}, | ||
| 250 | {31, nullptr, "GetReaderLockAccessorEx"}, | ||
| 251 | {40, nullptr, "GetCradleFwVersion"}, | ||
| 252 | {50, nullptr, "IsVrModeEnabled"}, | ||
| 253 | {51, nullptr, "SetVrModeEnabled"}, | ||
| 254 | {52, nullptr, "SwitchLcdBacklight"}, | ||
| 255 | {55, nullptr, "IsInControllerFirmwareUpdateSection"}, | ||
| 256 | {60, nullptr, "GetDefaultDisplayResolution"}, | ||
| 257 | {61, nullptr, "GetDefaultDisplayResolutionChangeEvent"}, | ||
| 258 | {62, nullptr, "GetHdcpAuthenticationState"}, | ||
| 259 | {63, nullptr, "GetHdcpAuthenticationStateChangeEvent"}, | ||
| 212 | }; | 260 | }; |
| 213 | RegisterHandlers(functions); | 261 | RegisterHandlers(functions); |
| 214 | 262 | ||
| @@ -278,7 +326,7 @@ public: | |||
| 278 | {104, nullptr, "PopInteractiveOutData"}, | 326 | {104, nullptr, "PopInteractiveOutData"}, |
| 279 | {105, nullptr, "GetPopOutDataEvent"}, | 327 | {105, nullptr, "GetPopOutDataEvent"}, |
| 280 | {106, nullptr, "GetPopInteractiveOutDataEvent"}, | 328 | {106, nullptr, "GetPopInteractiveOutDataEvent"}, |
| 281 | {120, nullptr, "NeedsToExitProcess"}, | 329 | {110, nullptr, "NeedsToExitProcess"}, |
| 282 | {120, nullptr, "GetLibraryAppletInfo"}, | 330 | {120, nullptr, "GetLibraryAppletInfo"}, |
| 283 | {150, nullptr, "RequestForAppletToGetForeground"}, | 331 | {150, nullptr, "RequestForAppletToGetForeground"}, |
| 284 | {160, nullptr, "GetIndirectLayerConsumerHandle"}, | 332 | {160, nullptr, "GetIndirectLayerConsumerHandle"}, |
| @@ -330,6 +378,7 @@ public: | |||
| 330 | : ServiceFramework("IStorageAccessor"), buffer(std::move(buffer)) { | 378 | : ServiceFramework("IStorageAccessor"), buffer(std::move(buffer)) { |
| 331 | static const FunctionInfo functions[] = { | 379 | static const FunctionInfo functions[] = { |
| 332 | {0, &IStorageAccessor::GetSize, "GetSize"}, | 380 | {0, &IStorageAccessor::GetSize, "GetSize"}, |
| 381 | {10, nullptr, "Write"}, | ||
| 333 | {11, &IStorageAccessor::Read, "Read"}, | 382 | {11, &IStorageAccessor::Read, "Read"}, |
| 334 | }; | 383 | }; |
| 335 | RegisterHandlers(functions); | 384 | RegisterHandlers(functions); |
| @@ -372,6 +421,7 @@ public: | |||
| 372 | : ServiceFramework("IStorage"), buffer(std::move(buffer)) { | 421 | : ServiceFramework("IStorage"), buffer(std::move(buffer)) { |
| 373 | static const FunctionInfo functions[] = { | 422 | static const FunctionInfo functions[] = { |
| 374 | {0, &IStorage::Open, "Open"}, | 423 | {0, &IStorage::Open, "Open"}, |
| 424 | {1, nullptr, "OpenTransferStorage"}, | ||
| 375 | }; | 425 | }; |
| 376 | RegisterHandlers(functions); | 426 | RegisterHandlers(functions); |
| 377 | } | 427 | } |
| @@ -392,12 +442,42 @@ private: | |||
| 392 | IApplicationFunctions::IApplicationFunctions() : ServiceFramework("IApplicationFunctions") { | 442 | IApplicationFunctions::IApplicationFunctions() : ServiceFramework("IApplicationFunctions") { |
| 393 | static const FunctionInfo functions[] = { | 443 | static const FunctionInfo functions[] = { |
| 394 | {1, &IApplicationFunctions::PopLaunchParameter, "PopLaunchParameter"}, | 444 | {1, &IApplicationFunctions::PopLaunchParameter, "PopLaunchParameter"}, |
| 445 | {10, nullptr, "CreateApplicationAndPushAndRequestToStart"}, | ||
| 446 | {11, nullptr, "CreateApplicationAndPushAndRequestToStartForQuest"}, | ||
| 447 | {12, nullptr, "CreateApplicationAndRequestToStart"}, | ||
| 448 | {13, nullptr, "CreateApplicationAndRequestToStartForQuest"}, | ||
| 395 | {20, &IApplicationFunctions::EnsureSaveData, "EnsureSaveData"}, | 449 | {20, &IApplicationFunctions::EnsureSaveData, "EnsureSaveData"}, |
| 396 | {21, &IApplicationFunctions::GetDesiredLanguage, "GetDesiredLanguage"}, | 450 | {21, &IApplicationFunctions::GetDesiredLanguage, "GetDesiredLanguage"}, |
| 397 | {22, &IApplicationFunctions::SetTerminateResult, "SetTerminateResult"}, | 451 | {22, &IApplicationFunctions::SetTerminateResult, "SetTerminateResult"}, |
| 452 | {23, nullptr, "GetDisplayVersion"}, | ||
| 453 | {24, nullptr, "GetLaunchStorageInfoForDebug"}, | ||
| 454 | {25, nullptr, "ExtendSaveData"}, | ||
| 455 | {26, nullptr, "GetSaveDataSize"}, | ||
| 456 | {30, nullptr, "BeginBlockingHomeButtonShortAndLongPressed"}, | ||
| 457 | {31, nullptr, "EndBlockingHomeButtonShortAndLongPressed"}, | ||
| 458 | {32, nullptr, "BeginBlockingHomeButton"}, | ||
| 459 | {33, nullptr, "EndBlockingHomeButton"}, | ||
| 460 | {40, &IApplicationFunctions::NotifyRunning, "NotifyRunning"}, | ||
| 461 | {50, nullptr, "GetPseudoDeviceId"}, | ||
| 462 | {60, nullptr, "SetMediaPlaybackStateForApplication"}, | ||
| 463 | {65, nullptr, "IsGamePlayRecordingSupported"}, | ||
| 398 | {66, &IApplicationFunctions::InitializeGamePlayRecording, "InitializeGamePlayRecording"}, | 464 | {66, &IApplicationFunctions::InitializeGamePlayRecording, "InitializeGamePlayRecording"}, |
| 399 | {67, &IApplicationFunctions::SetGamePlayRecordingState, "SetGamePlayRecordingState"}, | 465 | {67, &IApplicationFunctions::SetGamePlayRecordingState, "SetGamePlayRecordingState"}, |
| 400 | {40, &IApplicationFunctions::NotifyRunning, "NotifyRunning"}, | 466 | {68, nullptr, "RequestFlushGamePlayingMovieForDebug"}, |
| 467 | {70, nullptr, "RequestToShutdown"}, | ||
| 468 | {71, nullptr, "RequestToReboot"}, | ||
| 469 | {80, nullptr, "ExitAndRequestToShowThanksMessage"}, | ||
| 470 | {90, nullptr, "EnableApplicationCrashReport"}, | ||
| 471 | {100, nullptr, "InitializeApplicationCopyrightFrameBuffer"}, | ||
| 472 | {101, nullptr, "SetApplicationCopyrightImage"}, | ||
| 473 | {102, nullptr, "SetApplicationCopyrightVisibility"}, | ||
| 474 | {110, nullptr, "QueryApplicationPlayStatistics"}, | ||
| 475 | {120, nullptr, "ExecuteProgram"}, | ||
| 476 | {121, nullptr, "ClearUserChannel"}, | ||
| 477 | {122, nullptr, "UnpopToUserChannel"}, | ||
| 478 | {500, nullptr, "StartContinuousRecordingFlushForDebug"}, | ||
| 479 | {1000, nullptr, "CreateMovieMaker"}, | ||
| 480 | {1001, nullptr, "PrepareForJit"}, | ||
| 401 | }; | 481 | }; |
| 402 | RegisterHandlers(functions); | 482 | RegisterHandlers(functions); |
| 403 | } | 483 | } |
diff --git a/src/core/hle/service/am/applet_ae.cpp b/src/core/hle/service/am/applet_ae.cpp index 0e51caa70..154d346d5 100644 --- a/src/core/hle/service/am/applet_ae.cpp +++ b/src/core/hle/service/am/applet_ae.cpp | |||
| @@ -21,6 +21,7 @@ public: | |||
| 21 | {2, &ILibraryAppletProxy::GetWindowController, "GetWindowController"}, | 21 | {2, &ILibraryAppletProxy::GetWindowController, "GetWindowController"}, |
| 22 | {3, &ILibraryAppletProxy::GetAudioController, "GetAudioController"}, | 22 | {3, &ILibraryAppletProxy::GetAudioController, "GetAudioController"}, |
| 23 | {4, &ILibraryAppletProxy::GetDisplayController, "GetDisplayController"}, | 23 | {4, &ILibraryAppletProxy::GetDisplayController, "GetDisplayController"}, |
| 24 | {10, nullptr, "GetProcessWindingController"}, | ||
| 24 | {11, &ILibraryAppletProxy::GetLibraryAppletCreator, "GetLibraryAppletCreator"}, | 25 | {11, &ILibraryAppletProxy::GetLibraryAppletCreator, "GetLibraryAppletCreator"}, |
| 25 | {20, &ILibraryAppletProxy::GetApplicationFunctions, "GetApplicationFunctions"}, | 26 | {20, &ILibraryAppletProxy::GetApplicationFunctions, "GetApplicationFunctions"}, |
| 26 | {1000, &ILibraryAppletProxy::GetDebugFunctions, "GetDebugFunctions"}, | 27 | {1000, &ILibraryAppletProxy::GetDebugFunctions, "GetDebugFunctions"}, |
diff --git a/src/core/hle/service/am/applet_oe.cpp b/src/core/hle/service/am/applet_oe.cpp index bdcebe689..334c38392 100644 --- a/src/core/hle/service/am/applet_oe.cpp +++ b/src/core/hle/service/am/applet_oe.cpp | |||
| @@ -21,6 +21,7 @@ public: | |||
| 21 | {2, &IApplicationProxy::GetWindowController, "GetWindowController"}, | 21 | {2, &IApplicationProxy::GetWindowController, "GetWindowController"}, |
| 22 | {3, &IApplicationProxy::GetAudioController, "GetAudioController"}, | 22 | {3, &IApplicationProxy::GetAudioController, "GetAudioController"}, |
| 23 | {4, &IApplicationProxy::GetDisplayController, "GetDisplayController"}, | 23 | {4, &IApplicationProxy::GetDisplayController, "GetDisplayController"}, |
| 24 | {10, nullptr, "GetProcessWindingController"}, | ||
| 24 | {11, &IApplicationProxy::GetLibraryAppletCreator, "GetLibraryAppletCreator"}, | 25 | {11, &IApplicationProxy::GetLibraryAppletCreator, "GetLibraryAppletCreator"}, |
| 25 | {20, &IApplicationProxy::GetApplicationFunctions, "GetApplicationFunctions"}, | 26 | {20, &IApplicationProxy::GetApplicationFunctions, "GetApplicationFunctions"}, |
| 26 | {1000, &IApplicationProxy::GetDebugFunctions, "GetDebugFunctions"}, | 27 | {1000, &IApplicationProxy::GetDebugFunctions, "GetDebugFunctions"}, |
diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp index 8b55d2fcb..f64001df3 100644 --- a/src/core/hle/service/aoc/aoc_u.cpp +++ b/src/core/hle/service/aoc/aoc_u.cpp | |||
| @@ -19,6 +19,7 @@ AOC_U::AOC_U() : ServiceFramework("aoc:u") { | |||
| 19 | {5, nullptr, "GetAddOnContentBaseId"}, | 19 | {5, nullptr, "GetAddOnContentBaseId"}, |
| 20 | {6, nullptr, "PrepareAddOnContentByApplicationId"}, | 20 | {6, nullptr, "PrepareAddOnContentByApplicationId"}, |
| 21 | {7, nullptr, "PrepareAddOnContent"}, | 21 | {7, nullptr, "PrepareAddOnContent"}, |
| 22 | {8, nullptr, "GetAddOnContentListChangedEvent"}, | ||
| 22 | }; | 23 | }; |
| 23 | RegisterHandlers(functions); | 24 | RegisterHandlers(functions); |
| 24 | } | 25 | } |
diff --git a/src/core/hle/service/audio/audin_u.cpp b/src/core/hle/service/audio/audin_u.cpp index ee749fddd..3c495b3a0 100644 --- a/src/core/hle/service/audio/audin_u.cpp +++ b/src/core/hle/service/audio/audin_u.cpp | |||
| @@ -14,15 +14,20 @@ class IAudioIn final : public ServiceFramework<IAudioIn> { | |||
| 14 | public: | 14 | public: |
| 15 | IAudioIn() : ServiceFramework("IAudioIn") { | 15 | IAudioIn() : ServiceFramework("IAudioIn") { |
| 16 | static const FunctionInfo functions[] = { | 16 | static const FunctionInfo functions[] = { |
| 17 | {0x0, nullptr, "GetAudioInState"}, | 17 | {0, nullptr, "GetAudioInState"}, |
| 18 | {0x1, nullptr, "StartAudioIn"}, | 18 | {1, nullptr, "StartAudioIn"}, |
| 19 | {0x2, nullptr, "StopAudioIn"}, | 19 | {2, nullptr, "StopAudioIn"}, |
| 20 | {0x3, nullptr, "AppendAudioInBuffer_1"}, | 20 | {3, nullptr, "AppendAudioInBuffer"}, |
| 21 | {0x4, nullptr, "RegisterBufferEvent"}, | 21 | {4, nullptr, "RegisterBufferEvent"}, |
| 22 | {0x5, nullptr, "GetReleasedAudioInBuffer_1"}, | 22 | {5, nullptr, "GetReleasedAudioInBuffer"}, |
| 23 | {0x6, nullptr, "ContainsAudioInBuffer"}, | 23 | {6, nullptr, "ContainsAudioInBuffer"}, |
| 24 | {0x7, nullptr, "AppendAudioInBuffer_2"}, | 24 | {7, nullptr, "AppendAudioInBufferWithUserEvent"}, |
| 25 | {0x8, nullptr, "GetReleasedAudioInBuffer_2"}, | 25 | {8, nullptr, "AppendAudioInBufferAuto"}, |
| 26 | {9, nullptr, "GetReleasedAudioInBufferAuto"}, | ||
| 27 | {10, nullptr, "AppendAudioInBufferWithUserEventAuto"}, | ||
| 28 | {11, nullptr, "GetAudioInBufferCount"}, | ||
| 29 | {12, nullptr, "SetAudioInDeviceGain"}, | ||
| 30 | {13, nullptr, "GetAudioInDeviceGain"}, | ||
| 26 | }; | 31 | }; |
| 27 | RegisterHandlers(functions); | 32 | RegisterHandlers(functions); |
| 28 | } | 33 | } |
| @@ -31,8 +36,10 @@ public: | |||
| 31 | 36 | ||
| 32 | AudInU::AudInU() : ServiceFramework("audin:u") { | 37 | AudInU::AudInU() : ServiceFramework("audin:u") { |
| 33 | static const FunctionInfo functions[] = { | 38 | static const FunctionInfo functions[] = { |
| 34 | {0x00000000, nullptr, "ListAudioIns"}, | 39 | {0, nullptr, "ListAudioIns"}, |
| 35 | {0x00000001, nullptr, "OpenAudioIn"}, | 40 | {1, nullptr, "OpenAudioIn"}, |
| 41 | {3, nullptr, "OpenAudioInAuto"}, | ||
| 42 | {4, nullptr, "ListAudioInsAuto"}, | ||
| 36 | }; | 43 | }; |
| 37 | RegisterHandlers(functions); | 44 | RegisterHandlers(functions); |
| 38 | } | 45 | } |
diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp index 8e935cb7f..db6e6647c 100644 --- a/src/core/hle/service/audio/audout_u.cpp +++ b/src/core/hle/service/audio/audout_u.cpp | |||
| @@ -25,15 +25,18 @@ class IAudioOut final : public ServiceFramework<IAudioOut> { | |||
| 25 | public: | 25 | public: |
| 26 | IAudioOut() : ServiceFramework("IAudioOut"), audio_out_state(AudioState::Stopped) { | 26 | IAudioOut() : ServiceFramework("IAudioOut"), audio_out_state(AudioState::Stopped) { |
| 27 | static const FunctionInfo functions[] = { | 27 | static const FunctionInfo functions[] = { |
| 28 | {0x0, &IAudioOut::GetAudioOutState, "GetAudioOutState"}, | 28 | {0, &IAudioOut::GetAudioOutState, "GetAudioOutState"}, |
| 29 | {0x1, &IAudioOut::StartAudioOut, "StartAudioOut"}, | 29 | {1, &IAudioOut::StartAudioOut, "StartAudioOut"}, |
| 30 | {0x2, &IAudioOut::StopAudioOut, "StopAudioOut"}, | 30 | {2, &IAudioOut::StopAudioOut, "StopAudioOut"}, |
| 31 | {0x3, &IAudioOut::AppendAudioOutBuffer_1, "AppendAudioOutBuffer_1"}, | 31 | {3, &IAudioOut::AppendAudioOutBuffer, "AppendAudioOutBuffer"}, |
| 32 | {0x4, &IAudioOut::RegisterBufferEvent, "RegisterBufferEvent"}, | 32 | {4, &IAudioOut::RegisterBufferEvent, "RegisterBufferEvent"}, |
| 33 | {0x5, &IAudioOut::GetReleasedAudioOutBuffer_1, "GetReleasedAudioOutBuffer_1"}, | 33 | {5, &IAudioOut::GetReleasedAudioOutBuffer, "GetReleasedAudioOutBuffer"}, |
| 34 | {0x6, nullptr, "ContainsAudioOutBuffer"}, | 34 | {6, nullptr, "ContainsAudioOutBuffer"}, |
| 35 | {0x7, nullptr, "AppendAudioOutBuffer_2"}, | 35 | {7, nullptr, "AppendAudioOutBufferAuto"}, |
| 36 | {0x8, nullptr, "GetReleasedAudioOutBuffer_2"}, | 36 | {8, nullptr, "GetReleasedAudioOutBufferAuto"}, |
| 37 | {9, nullptr, "GetAudioOutBufferCount"}, | ||
| 38 | {10, nullptr, "GetAudioOutPlayedSampleCount"}, | ||
| 39 | {11, nullptr, "FlushAudioOutBuffers"}, | ||
| 37 | }; | 40 | }; |
| 38 | RegisterHandlers(functions); | 41 | RegisterHandlers(functions); |
| 39 | 42 | ||
| @@ -94,7 +97,7 @@ private: | |||
| 94 | rb.PushCopyObjects(buffer_event); | 97 | rb.PushCopyObjects(buffer_event); |
| 95 | } | 98 | } |
| 96 | 99 | ||
| 97 | void AppendAudioOutBuffer_1(Kernel::HLERequestContext& ctx) { | 100 | void AppendAudioOutBuffer(Kernel::HLERequestContext& ctx) { |
| 98 | LOG_WARNING(Service_Audio, "(STUBBED) called"); | 101 | LOG_WARNING(Service_Audio, "(STUBBED) called"); |
| 99 | IPC::RequestParser rp{ctx}; | 102 | IPC::RequestParser rp{ctx}; |
| 100 | 103 | ||
| @@ -105,7 +108,7 @@ private: | |||
| 105 | rb.Push(RESULT_SUCCESS); | 108 | rb.Push(RESULT_SUCCESS); |
| 106 | } | 109 | } |
| 107 | 110 | ||
| 108 | void GetReleasedAudioOutBuffer_1(Kernel::HLERequestContext& ctx) { | 111 | void GetReleasedAudioOutBuffer(Kernel::HLERequestContext& ctx) { |
| 109 | LOG_WARNING(Service_Audio, "(STUBBED) called"); | 112 | LOG_WARNING(Service_Audio, "(STUBBED) called"); |
| 110 | 113 | ||
| 111 | // TODO(st4rk): This is how libtransistor currently implements the | 114 | // TODO(st4rk): This is how libtransistor currently implements the |
| @@ -196,8 +199,8 @@ void AudOutU::OpenAudioOut(Kernel::HLERequestContext& ctx) { | |||
| 196 | AudOutU::AudOutU() : ServiceFramework("audout:u") { | 199 | AudOutU::AudOutU() : ServiceFramework("audout:u") { |
| 197 | static const FunctionInfo functions[] = {{0x00000000, &AudOutU::ListAudioOuts, "ListAudioOuts"}, | 200 | static const FunctionInfo functions[] = {{0x00000000, &AudOutU::ListAudioOuts, "ListAudioOuts"}, |
| 198 | {0x00000001, &AudOutU::OpenAudioOut, "OpenAudioOut"}, | 201 | {0x00000001, &AudOutU::OpenAudioOut, "OpenAudioOut"}, |
| 199 | {0x00000002, nullptr, "Unknown2"}, | 202 | {0x00000002, nullptr, "ListAudioOutsAuto"}, |
| 200 | {0x00000003, nullptr, "Unknown3"}}; | 203 | {0x00000003, nullptr, "OpenAudioOutAuto"}}; |
| 201 | RegisterHandlers(functions); | 204 | RegisterHandlers(functions); |
| 202 | } | 205 | } |
| 203 | 206 | ||
diff --git a/src/core/hle/service/audio/audrec_u.cpp b/src/core/hle/service/audio/audrec_u.cpp index f2626ec70..953104f19 100644 --- a/src/core/hle/service/audio/audrec_u.cpp +++ b/src/core/hle/service/audio/audrec_u.cpp | |||
| @@ -14,13 +14,15 @@ class IFinalOutputRecorder final : public ServiceFramework<IFinalOutputRecorder> | |||
| 14 | public: | 14 | public: |
| 15 | IFinalOutputRecorder() : ServiceFramework("IFinalOutputRecorder") { | 15 | IFinalOutputRecorder() : ServiceFramework("IFinalOutputRecorder") { |
| 16 | static const FunctionInfo functions[] = { | 16 | static const FunctionInfo functions[] = { |
| 17 | {0x0, nullptr, "GetFinalOutputRecorderState"}, | 17 | {0, nullptr, "GetFinalOutputRecorderState"}, |
| 18 | {0x1, nullptr, "StartFinalOutputRecorder"}, | 18 | {1, nullptr, "StartFinalOutputRecorder"}, |
| 19 | {0x2, nullptr, "StopFinalOutputRecorder"}, | 19 | {2, nullptr, "StopFinalOutputRecorder"}, |
| 20 | {0x3, nullptr, "AppendFinalOutputRecorderBuffer"}, | 20 | {3, nullptr, "AppendFinalOutputRecorderBuffer"}, |
| 21 | {0x4, nullptr, "RegisterBufferEvent"}, | 21 | {4, nullptr, "RegisterBufferEvent"}, |
| 22 | {0x5, nullptr, "GetReleasedFinalOutputRecorderBuffer"}, | 22 | {5, nullptr, "GetReleasedFinalOutputRecorderBuffer"}, |
| 23 | {0x6, nullptr, "ContainsFinalOutputRecorderBuffer"}, | 23 | {6, nullptr, "ContainsFinalOutputRecorderBuffer"}, |
| 24 | {8, nullptr, "AppendFinalOutputRecorderBufferAuto"}, | ||
| 25 | {9, nullptr, "GetReleasedFinalOutputRecorderBufferAuto"}, | ||
| 24 | }; | 26 | }; |
| 25 | RegisterHandlers(functions); | 27 | RegisterHandlers(functions); |
| 26 | } | 28 | } |
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp index 7990595aa..0e78c57e9 100644 --- a/src/core/hle/service/audio/audren_u.cpp +++ b/src/core/hle/service/audio/audren_u.cpp | |||
| @@ -19,16 +19,18 @@ class IAudioRenderer final : public ServiceFramework<IAudioRenderer> { | |||
| 19 | public: | 19 | public: |
| 20 | IAudioRenderer() : ServiceFramework("IAudioRenderer") { | 20 | IAudioRenderer() : ServiceFramework("IAudioRenderer") { |
| 21 | static const FunctionInfo functions[] = { | 21 | static const FunctionInfo functions[] = { |
| 22 | {0x0, nullptr, "GetAudioRendererSampleRate"}, | 22 | {0, nullptr, "GetAudioRendererSampleRate"}, |
| 23 | {0x1, nullptr, "GetAudioRendererSampleCount"}, | 23 | {1, nullptr, "GetAudioRendererSampleCount"}, |
| 24 | {0x2, nullptr, "GetAudioRendererMixBufferCount"}, | 24 | {2, nullptr, "GetAudioRendererMixBufferCount"}, |
| 25 | {0x3, nullptr, "GetAudioRendererState"}, | 25 | {3, nullptr, "GetAudioRendererState"}, |
| 26 | {0x4, &IAudioRenderer::RequestUpdateAudioRenderer, "RequestUpdateAudioRenderer"}, | 26 | {4, &IAudioRenderer::RequestUpdateAudioRenderer, "RequestUpdateAudioRenderer"}, |
| 27 | {0x5, &IAudioRenderer::StartAudioRenderer, "StartAudioRenderer"}, | 27 | {5, &IAudioRenderer::StartAudioRenderer, "StartAudioRenderer"}, |
| 28 | {0x6, &IAudioRenderer::StopAudioRenderer, "StopAudioRenderer"}, | 28 | {6, &IAudioRenderer::StopAudioRenderer, "StopAudioRenderer"}, |
| 29 | {0x7, &IAudioRenderer::QuerySystemEvent, "QuerySystemEvent"}, | 29 | {7, &IAudioRenderer::QuerySystemEvent, "QuerySystemEvent"}, |
| 30 | {0x8, nullptr, "SetAudioRendererRenderingTimeLimit"}, | 30 | {8, nullptr, "SetAudioRendererRenderingTimeLimit"}, |
| 31 | {0x9, nullptr, "GetAudioRendererRenderingTimeLimit"}, | 31 | {9, nullptr, "GetAudioRendererRenderingTimeLimit"}, |
| 32 | {10, nullptr, "RequestUpdateAudioRendererAuto"}, | ||
| 33 | {11, nullptr, "ExecuteAudioRendererRendering"}, | ||
| 32 | }; | 34 | }; |
| 33 | RegisterHandlers(functions); | 35 | RegisterHandlers(functions); |
| 34 | 36 | ||
| @@ -237,6 +239,8 @@ AudRenU::AudRenU() : ServiceFramework("audren:u") { | |||
| 237 | {0, &AudRenU::OpenAudioRenderer, "OpenAudioRenderer"}, | 239 | {0, &AudRenU::OpenAudioRenderer, "OpenAudioRenderer"}, |
| 238 | {1, &AudRenU::GetAudioRendererWorkBufferSize, "GetAudioRendererWorkBufferSize"}, | 240 | {1, &AudRenU::GetAudioRendererWorkBufferSize, "GetAudioRendererWorkBufferSize"}, |
| 239 | {2, &AudRenU::GetAudioDevice, "GetAudioDevice"}, | 241 | {2, &AudRenU::GetAudioDevice, "GetAudioDevice"}, |
| 242 | {3, nullptr, "OpenAudioRendererAuto"}, | ||
| 243 | {4, nullptr, "GetAudioDeviceServiceWithRevisionInfo"}, | ||
| 240 | }; | 244 | }; |
| 241 | RegisterHandlers(functions); | 245 | RegisterHandlers(functions); |
| 242 | } | 246 | } |
diff --git a/src/core/hle/service/audio/codecctl.cpp b/src/core/hle/service/audio/codecctl.cpp index d2a7f4cd0..1c86d8d17 100644 --- a/src/core/hle/service/audio/codecctl.cpp +++ b/src/core/hle/service/audio/codecctl.cpp | |||
| @@ -22,9 +22,9 @@ CodecCtl::CodecCtl() : ServiceFramework("codecctl") { | |||
| 22 | {0x00000007, nullptr, "SetCodecActiveTarget"}, | 22 | {0x00000007, nullptr, "SetCodecActiveTarget"}, |
| 23 | {0x00000008, nullptr, "Unknown"}, | 23 | {0x00000008, nullptr, "Unknown"}, |
| 24 | {0x00000009, nullptr, "BindCodecHeadphoneMicJackInterrupt"}, | 24 | {0x00000009, nullptr, "BindCodecHeadphoneMicJackInterrupt"}, |
| 25 | {0x0000000A, nullptr, "IsCodecHeadphoneMicJackInserted"}, | 25 | {0x00000010, nullptr, "IsCodecHeadphoneMicJackInserted"}, |
| 26 | {0x0000000B, nullptr, "ClearCodecHeadphoneMicJackInterrupt"}, | 26 | {0x00000011, nullptr, "ClearCodecHeadphoneMicJackInterrupt"}, |
| 27 | {0x0000000C, nullptr, "IsCodecDeviceRequested"}, | 27 | {0x00000012, nullptr, "IsCodecDeviceRequested"}, |
| 28 | }; | 28 | }; |
| 29 | RegisterHandlers(functions); | 29 | RegisterHandlers(functions); |
| 30 | } | 30 | } |
diff --git a/src/core/hle/service/filesystem/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp_srv.cpp index 10fa3a4d6..48c45b1b4 100644 --- a/src/core/hle/service/filesystem/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp_srv.cpp | |||
| @@ -23,7 +23,7 @@ public: | |||
| 23 | : ServiceFramework("IStorage"), backend(std::move(backend)) { | 23 | : ServiceFramework("IStorage"), backend(std::move(backend)) { |
| 24 | static const FunctionInfo functions[] = { | 24 | static const FunctionInfo functions[] = { |
| 25 | {0, &IStorage::Read, "Read"}, {1, nullptr, "Write"}, {2, nullptr, "Flush"}, | 25 | {0, &IStorage::Read, "Read"}, {1, nullptr, "Write"}, {2, nullptr, "Flush"}, |
| 26 | {3, nullptr, "SetSize"}, {4, nullptr, "GetSize"}, | 26 | {3, nullptr, "SetSize"}, {4, nullptr, "GetSize"}, {5, nullptr, "OperateRange"}, |
| 27 | }; | 27 | }; |
| 28 | RegisterHandlers(functions); | 28 | RegisterHandlers(functions); |
| 29 | } | 29 | } |
| @@ -72,8 +72,9 @@ public: | |||
| 72 | explicit IFile(std::unique_ptr<FileSys::StorageBackend>&& backend) | 72 | explicit IFile(std::unique_ptr<FileSys::StorageBackend>&& backend) |
| 73 | : ServiceFramework("IFile"), backend(std::move(backend)) { | 73 | : ServiceFramework("IFile"), backend(std::move(backend)) { |
| 74 | static const FunctionInfo functions[] = { | 74 | static const FunctionInfo functions[] = { |
| 75 | {0, &IFile::Read, "Read"}, {1, &IFile::Write, "Write"}, {2, nullptr, "Flush"}, | 75 | {0, &IFile::Read, "Read"}, {1, &IFile::Write, "Write"}, |
| 76 | {3, &IFile::SetSize, "SetSize"}, {4, &IFile::GetSize, "GetSize"}, | 76 | {2, nullptr, "Flush"}, {3, &IFile::SetSize, "SetSize"}, |
| 77 | {4, &IFile::GetSize, "GetSize"}, {5, nullptr, "OperateRange"}, | ||
| 77 | }; | 78 | }; |
| 78 | RegisterHandlers(functions); | 79 | RegisterHandlers(functions); |
| 79 | } | 80 | } |
| @@ -227,11 +228,21 @@ public: | |||
| 227 | : ServiceFramework("IFileSystem"), backend(std::move(backend)) { | 228 | : ServiceFramework("IFileSystem"), backend(std::move(backend)) { |
| 228 | static const FunctionInfo functions[] = { | 229 | static const FunctionInfo functions[] = { |
| 229 | {0, &IFileSystem::CreateFile, "CreateFile"}, | 230 | {0, &IFileSystem::CreateFile, "CreateFile"}, |
| 231 | {1, nullptr, "DeleteFile"}, | ||
| 230 | {2, &IFileSystem::CreateDirectory, "CreateDirectory"}, | 232 | {2, &IFileSystem::CreateDirectory, "CreateDirectory"}, |
| 233 | {3, nullptr, "DeleteDirectory"}, | ||
| 234 | {4, nullptr, "DeleteDirectoryRecursively"}, | ||
| 235 | {5, nullptr, "RenameFile"}, | ||
| 236 | {6, nullptr, "RenameDirectory"}, | ||
| 231 | {7, &IFileSystem::GetEntryType, "GetEntryType"}, | 237 | {7, &IFileSystem::GetEntryType, "GetEntryType"}, |
| 232 | {8, &IFileSystem::OpenFile, "OpenFile"}, | 238 | {8, &IFileSystem::OpenFile, "OpenFile"}, |
| 233 | {9, &IFileSystem::OpenDirectory, "OpenDirectory"}, | 239 | {9, &IFileSystem::OpenDirectory, "OpenDirectory"}, |
| 234 | {10, &IFileSystem::Commit, "Commit"}, | 240 | {10, &IFileSystem::Commit, "Commit"}, |
| 241 | {11, nullptr, "GetFreeSpaceSize"}, | ||
| 242 | {12, nullptr, "GetTotalSpaceSize"}, | ||
| 243 | {13, nullptr, "CleanDirectoryRecursively"}, | ||
| 244 | {14, nullptr, "GetFileTimeStampRaw"}, | ||
| 245 | {15, nullptr, "QueryEntry"}, | ||
| 235 | }; | 246 | }; |
| 236 | RegisterHandlers(functions); | 247 | RegisterHandlers(functions); |
| 237 | } | 248 | } |
| @@ -356,14 +367,94 @@ private: | |||
| 356 | 367 | ||
| 357 | FSP_SRV::FSP_SRV() : ServiceFramework("fsp-srv") { | 368 | FSP_SRV::FSP_SRV() : ServiceFramework("fsp-srv") { |
| 358 | static const FunctionInfo functions[] = { | 369 | static const FunctionInfo functions[] = { |
| 370 | {0, nullptr, "MountContent"}, | ||
| 359 | {1, &FSP_SRV::Initialize, "Initialize"}, | 371 | {1, &FSP_SRV::Initialize, "Initialize"}, |
| 372 | {2, nullptr, "OpenDataFileSystemByCurrentProcess"}, | ||
| 373 | {7, nullptr, "OpenFileSystemWithPatch"}, | ||
| 374 | {8, nullptr, "OpenFileSystemWithId"}, | ||
| 375 | {9, nullptr, "OpenDataFileSystemByApplicationId"}, | ||
| 376 | {11, nullptr, "OpenBisFileSystem"}, | ||
| 377 | {12, nullptr, "OpenBisStorage"}, | ||
| 378 | {13, nullptr, "InvalidateBisCache"}, | ||
| 379 | {17, nullptr, "OpenHostFileSystem"}, | ||
| 360 | {18, &FSP_SRV::MountSdCard, "MountSdCard"}, | 380 | {18, &FSP_SRV::MountSdCard, "MountSdCard"}, |
| 381 | {19, nullptr, "FormatSdCardFileSystem"}, | ||
| 382 | {21, nullptr, "DeleteSaveDataFileSystem"}, | ||
| 361 | {22, &FSP_SRV::CreateSaveData, "CreateSaveData"}, | 383 | {22, &FSP_SRV::CreateSaveData, "CreateSaveData"}, |
| 384 | {23, nullptr, "CreateSaveDataFileSystemBySystemSaveDataId"}, | ||
| 385 | {24, nullptr, "RegisterSaveDataFileSystemAtomicDeletion"}, | ||
| 386 | {25, nullptr, "DeleteSaveDataFileSystemBySaveDataSpaceId"}, | ||
| 387 | {26, nullptr, "FormatSdCardDryRun"}, | ||
| 388 | {27, nullptr, "IsExFatSupported"}, | ||
| 389 | {28, nullptr, "DeleteSaveDataFileSystemBySaveDataAttribute"}, | ||
| 390 | {30, nullptr, "OpenGameCardStorage"}, | ||
| 391 | {31, nullptr, "OpenGameCardFileSystem"}, | ||
| 392 | {32, nullptr, "ExtendSaveDataFileSystem"}, | ||
| 393 | {33, nullptr, "DeleteCacheStorage"}, | ||
| 394 | {34, nullptr, "GetCacheStorageSize"}, | ||
| 362 | {51, &FSP_SRV::MountSaveData, "MountSaveData"}, | 395 | {51, &FSP_SRV::MountSaveData, "MountSaveData"}, |
| 396 | {52, nullptr, "OpenSaveDataFileSystemBySystemSaveDataId"}, | ||
| 397 | {53, nullptr, "OpenReadOnlySaveDataFileSystem"}, | ||
| 398 | {57, nullptr, "ReadSaveDataFileSystemExtraDataBySaveDataSpaceId"}, | ||
| 399 | {58, nullptr, "ReadSaveDataFileSystemExtraData"}, | ||
| 400 | {59, nullptr, "WriteSaveDataFileSystemExtraData"}, | ||
| 401 | {60, nullptr, "OpenSaveDataInfoReader"}, | ||
| 402 | {61, nullptr, "OpenSaveDataInfoReaderBySaveDataSpaceId"}, | ||
| 403 | {62, nullptr, "OpenCacheStorageList"}, | ||
| 404 | {64, nullptr, "OpenSaveDataInternalStorageFileSystem"}, | ||
| 405 | {65, nullptr, "UpdateSaveDataMacForDebug"}, | ||
| 406 | {66, nullptr, "WriteSaveDataFileSystemExtraData2"}, | ||
| 407 | {80, nullptr, "OpenSaveDataMetaFile"}, | ||
| 408 | {81, nullptr, "OpenSaveDataTransferManager"}, | ||
| 409 | {82, nullptr, "OpenSaveDataTransferManagerVersion2"}, | ||
| 410 | {100, nullptr, "OpenImageDirectoryFileSystem"}, | ||
| 411 | {110, nullptr, "OpenContentStorageFileSystem"}, | ||
| 363 | {200, &FSP_SRV::OpenDataStorageByCurrentProcess, "OpenDataStorageByCurrentProcess"}, | 412 | {200, &FSP_SRV::OpenDataStorageByCurrentProcess, "OpenDataStorageByCurrentProcess"}, |
| 413 | {201, nullptr, "OpenDataStorageByProgramId"}, | ||
| 364 | {202, nullptr, "OpenDataStorageByDataId"}, | 414 | {202, nullptr, "OpenDataStorageByDataId"}, |
| 365 | {203, &FSP_SRV::OpenRomStorage, "OpenRomStorage"}, | 415 | {203, &FSP_SRV::OpenRomStorage, "OpenRomStorage"}, |
| 416 | {400, nullptr, "OpenDeviceOperator"}, | ||
| 417 | {500, nullptr, "OpenSdCardDetectionEventNotifier"}, | ||
| 418 | {501, nullptr, "OpenGameCardDetectionEventNotifier"}, | ||
| 419 | {510, nullptr, "OpenSystemDataUpdateEventNotifier"}, | ||
| 420 | {511, nullptr, "NotifySystemDataUpdateEvent"}, | ||
| 421 | {600, nullptr, "SetCurrentPosixTime"}, | ||
| 422 | {601, nullptr, "QuerySaveDataTotalSize"}, | ||
| 423 | {602, nullptr, "VerifySaveDataFileSystem"}, | ||
| 424 | {603, nullptr, "CorruptSaveDataFileSystem"}, | ||
| 425 | {604, nullptr, "CreatePaddingFile"}, | ||
| 426 | {605, nullptr, "DeleteAllPaddingFiles"}, | ||
| 427 | {606, nullptr, "GetRightsId"}, | ||
| 428 | {607, nullptr, "RegisterExternalKey"}, | ||
| 429 | {608, nullptr, "UnregisterAllExternalKey"}, | ||
| 430 | {609, nullptr, "GetRightsIdByPath"}, | ||
| 431 | {610, nullptr, "GetRightsIdAndKeyGenerationByPath"}, | ||
| 432 | {611, nullptr, "SetCurrentPosixTimeWithTimeDifference"}, | ||
| 433 | {612, nullptr, "GetFreeSpaceSizeForSaveData"}, | ||
| 434 | {613, nullptr, "VerifySaveDataFileSystemBySaveDataSpaceId"}, | ||
| 435 | {614, nullptr, "CorruptSaveDataFileSystemBySaveDataSpaceId"}, | ||
| 436 | {615, nullptr, "QuerySaveDataInternalStorageTotalSize"}, | ||
| 437 | {620, nullptr, "SetSdCardEncryptionSeed"}, | ||
| 438 | {630, nullptr, "SetSdCardAccessibility"}, | ||
| 439 | {631, nullptr, "IsSdCardAccessible"}, | ||
| 440 | {640, nullptr, "IsSignedSystemPartitionOnSdCardValid"}, | ||
| 441 | {700, nullptr, "OpenAccessFailureResolver"}, | ||
| 442 | {701, nullptr, "GetAccessFailureDetectionEvent"}, | ||
| 443 | {702, nullptr, "IsAccessFailureDetected"}, | ||
| 444 | {710, nullptr, "ResolveAccessFailure"}, | ||
| 445 | {720, nullptr, "AbandonAccessFailure"}, | ||
| 446 | {800, nullptr, "GetAndClearFileSystemProxyErrorInfo"}, | ||
| 447 | {1000, nullptr, "SetBisRootForHost"}, | ||
| 448 | {1001, nullptr, "SetSaveDataSize"}, | ||
| 449 | {1002, nullptr, "SetSaveDataRootPath"}, | ||
| 450 | {1003, nullptr, "DisableAutoSaveDataCreation"}, | ||
| 451 | {1004, nullptr, "SetGlobalAccessLogMode"}, | ||
| 366 | {1005, &FSP_SRV::GetGlobalAccessLogMode, "GetGlobalAccessLogMode"}, | 452 | {1005, &FSP_SRV::GetGlobalAccessLogMode, "GetGlobalAccessLogMode"}, |
| 453 | {1006, nullptr, "OutputAccessLogToSdCard"}, | ||
| 454 | {1007, nullptr, "RegisterUpdatePartition"}, | ||
| 455 | {1008, nullptr, "OpenRegisteredUpdatePartition"}, | ||
| 456 | {1009, nullptr, "GetAndClearMemoryReportInfo"}, | ||
| 457 | {1100, nullptr, "OverrideSaveDataTransferTokenSignVerificationKey"}, | ||
| 367 | }; | 458 | }; |
| 368 | RegisterHandlers(functions); | 459 | RegisterHandlers(functions); |
| 369 | } | 460 | } |
diff --git a/src/core/hle/service/friend/friend.cpp b/src/core/hle/service/friend/friend.cpp index fc5adc56d..051448b2a 100644 --- a/src/core/hle/service/friend/friend.cpp +++ b/src/core/hle/service/friend/friend.cpp | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | namespace Service { | 11 | namespace Service { |
| 12 | namespace Friend { | 12 | namespace Friend { |
| 13 | 13 | ||
| 14 | void Module::Interface::Unknown(Kernel::HLERequestContext& ctx) { | 14 | void Module::Interface::CreateFriendService(Kernel::HLERequestContext& ctx) { |
| 15 | IPC::ResponseBuilder rb{ctx, 2}; | 15 | IPC::ResponseBuilder rb{ctx, 2}; |
| 16 | rb.Push(RESULT_SUCCESS); | 16 | rb.Push(RESULT_SUCCESS); |
| 17 | LOG_WARNING(Service_Friend, "(STUBBED) called"); | 17 | LOG_WARNING(Service_Friend, "(STUBBED) called"); |
diff --git a/src/core/hle/service/friend/friend.h b/src/core/hle/service/friend/friend.h index ffa498397..2b21b4e15 100644 --- a/src/core/hle/service/friend/friend.h +++ b/src/core/hle/service/friend/friend.h | |||
| @@ -15,7 +15,7 @@ public: | |||
| 15 | public: | 15 | public: |
| 16 | Interface(std::shared_ptr<Module> module, const char* name); | 16 | Interface(std::shared_ptr<Module> module, const char* name); |
| 17 | 17 | ||
| 18 | void Unknown(Kernel::HLERequestContext& ctx); | 18 | void CreateFriendService(Kernel::HLERequestContext& ctx); |
| 19 | 19 | ||
| 20 | protected: | 20 | protected: |
| 21 | std::shared_ptr<Module> module; | 21 | std::shared_ptr<Module> module; |
diff --git a/src/core/hle/service/friend/friend_a.cpp b/src/core/hle/service/friend/friend_a.cpp index e1f2397c2..d64fe846a 100644 --- a/src/core/hle/service/friend/friend_a.cpp +++ b/src/core/hle/service/friend/friend_a.cpp | |||
| @@ -10,7 +10,8 @@ namespace Friend { | |||
| 10 | Friend_A::Friend_A(std::shared_ptr<Module> module) | 10 | Friend_A::Friend_A(std::shared_ptr<Module> module) |
| 11 | : Module::Interface(std::move(module), "friend:a") { | 11 | : Module::Interface(std::move(module), "friend:a") { |
| 12 | static const FunctionInfo functions[] = { | 12 | static const FunctionInfo functions[] = { |
| 13 | {0, &Friend_A::Unknown, "Unknown"}, | 13 | {0, &Friend_A::CreateFriendService, "CreateFriendService"}, |
| 14 | {1, nullptr, "CreateNotificationService"}, | ||
| 14 | }; | 15 | }; |
| 15 | RegisterHandlers(functions); | 16 | RegisterHandlers(functions); |
| 16 | } | 17 | } |
diff --git a/src/core/hle/service/friend/friend_u.cpp b/src/core/hle/service/friend/friend_u.cpp index 084388e5f..9a4b05b38 100644 --- a/src/core/hle/service/friend/friend_u.cpp +++ b/src/core/hle/service/friend/friend_u.cpp | |||
| @@ -10,7 +10,8 @@ namespace Friend { | |||
| 10 | Friend_U::Friend_U(std::shared_ptr<Module> module) | 10 | Friend_U::Friend_U(std::shared_ptr<Module> module) |
| 11 | : Module::Interface(std::move(module), "friend:u") { | 11 | : Module::Interface(std::move(module), "friend:u") { |
| 12 | static const FunctionInfo functions[] = { | 12 | static const FunctionInfo functions[] = { |
| 13 | {0, &Friend_U::Unknown, "Unknown"}, | 13 | {0, &Friend_U::CreateFriendService, "CreateFriendService"}, |
| 14 | {1, nullptr, "CreateNotificationService"}, | ||
| 14 | }; | 15 | }; |
| 15 | RegisterHandlers(functions); | 16 | RegisterHandlers(functions); |
| 16 | } | 17 | } |
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 019a09444..868ac6f46 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -198,25 +198,75 @@ public: | |||
| 198 | {11, &Hid::ActivateTouchScreen, "ActivateTouchScreen"}, | 198 | {11, &Hid::ActivateTouchScreen, "ActivateTouchScreen"}, |
| 199 | {21, &Hid::ActivateMouse, "ActivateMouse"}, | 199 | {21, &Hid::ActivateMouse, "ActivateMouse"}, |
| 200 | {31, &Hid::ActivateKeyboard, "ActivateKeyboard"}, | 200 | {31, &Hid::ActivateKeyboard, "ActivateKeyboard"}, |
| 201 | {40, nullptr, "AcquireXpadIdEventHandle"}, | ||
| 202 | {41, nullptr, "ReleaseXpadIdEventHandle"}, | ||
| 203 | {51, nullptr, "ActivateXpad"}, | ||
| 204 | {55, nullptr, "GetXpadIds"}, | ||
| 205 | {56, nullptr, "ActivateJoyXpad"}, | ||
| 206 | {58, nullptr, "GetJoyXpadLifoHandle"}, | ||
| 207 | {59, nullptr, "GetJoyXpadIds"}, | ||
| 208 | {60, nullptr, "ActivateSixAxisSensor"}, | ||
| 209 | {61, nullptr, "DeactivateSixAxisSensor"}, | ||
| 210 | {62, nullptr, "GetSixAxisSensorLifoHandle"}, | ||
| 211 | {63, nullptr, "ActivateJoySixAxisSensor"}, | ||
| 212 | {64, nullptr, "DeactivateJoySixAxisSensor"}, | ||
| 213 | {65, nullptr, "GetJoySixAxisSensorLifoHandle"}, | ||
| 201 | {66, &Hid::StartSixAxisSensor, "StartSixAxisSensor"}, | 214 | {66, &Hid::StartSixAxisSensor, "StartSixAxisSensor"}, |
| 215 | {67, nullptr, "StopSixAxisSensor"}, | ||
| 216 | {68, nullptr, "IsSixAxisSensorFusionEnabled"}, | ||
| 217 | {69, nullptr, "EnableSixAxisSensorFusion"}, | ||
| 218 | {70, nullptr, "SetSixAxisSensorFusionParameters"}, | ||
| 219 | {71, nullptr, "GetSixAxisSensorFusionParameters"}, | ||
| 220 | {72, nullptr, "ResetSixAxisSensorFusionParameters"}, | ||
| 221 | {73, nullptr, "SetAccelerometerParameters"}, | ||
| 222 | {74, nullptr, "GetAccelerometerParameters"}, | ||
| 223 | {75, nullptr, "ResetAccelerometerParameters"}, | ||
| 224 | {76, nullptr, "SetAccelerometerPlayMode"}, | ||
| 225 | {77, nullptr, "GetAccelerometerPlayMode"}, | ||
| 226 | {78, nullptr, "ResetAccelerometerPlayMode"}, | ||
| 202 | {79, &Hid::SetGyroscopeZeroDriftMode, "SetGyroscopeZeroDriftMode"}, | 227 | {79, &Hid::SetGyroscopeZeroDriftMode, "SetGyroscopeZeroDriftMode"}, |
| 228 | {80, nullptr, "GetGyroscopeZeroDriftMode"}, | ||
| 229 | {81, nullptr, "ResetGyroscopeZeroDriftMode"}, | ||
| 230 | {82, nullptr, "IsSixAxisSensorAtRest"}, | ||
| 231 | {91, nullptr, "ActivateGesture"}, | ||
| 203 | {100, &Hid::SetSupportedNpadStyleSet, "SetSupportedNpadStyleSet"}, | 232 | {100, &Hid::SetSupportedNpadStyleSet, "SetSupportedNpadStyleSet"}, |
| 204 | {101, &Hid::GetSupportedNpadStyleSet, "GetSupportedNpadStyleSet"}, | 233 | {101, &Hid::GetSupportedNpadStyleSet, "GetSupportedNpadStyleSet"}, |
| 205 | {102, &Hid::SetSupportedNpadIdType, "SetSupportedNpadIdType"}, | 234 | {102, &Hid::SetSupportedNpadIdType, "SetSupportedNpadIdType"}, |
| 206 | {103, &Hid::ActivateNpad, "ActivateNpad"}, | 235 | {103, &Hid::ActivateNpad, "ActivateNpad"}, |
| 236 | {104, nullptr, "DeactivateNpad"}, | ||
| 207 | {106, &Hid::AcquireNpadStyleSetUpdateEventHandle, | 237 | {106, &Hid::AcquireNpadStyleSetUpdateEventHandle, |
| 208 | "AcquireNpadStyleSetUpdateEventHandle"}, | 238 | "AcquireNpadStyleSetUpdateEventHandle"}, |
| 239 | {107, nullptr, "DisconnectNpad"}, | ||
| 240 | {108, nullptr, "GetPlayerLedPattern"}, | ||
| 209 | {120, &Hid::SetNpadJoyHoldType, "SetNpadJoyHoldType"}, | 241 | {120, &Hid::SetNpadJoyHoldType, "SetNpadJoyHoldType"}, |
| 210 | {121, &Hid::GetNpadJoyHoldType, "GetNpadJoyHoldType"}, | 242 | {121, &Hid::GetNpadJoyHoldType, "GetNpadJoyHoldType"}, |
| 211 | {122, &Hid::SetNpadJoyAssignmentModeSingleByDefault, | 243 | {122, &Hid::SetNpadJoyAssignmentModeSingleByDefault, |
| 212 | "SetNpadJoyAssignmentModeSingleByDefault"}, | 244 | "SetNpadJoyAssignmentModeSingleByDefault"}, |
| 245 | {123, nullptr, "SetNpadJoyAssignmentModeSingleByDefault"}, | ||
| 213 | {124, &Hid::SetNpadJoyAssignmentModeDual, "SetNpadJoyAssignmentModeDual"}, | 246 | {124, &Hid::SetNpadJoyAssignmentModeDual, "SetNpadJoyAssignmentModeDual"}, |
| 247 | {125, nullptr, "MergeSingleJoyAsDualJoy"}, | ||
| 248 | {126, nullptr, "StartLrAssignmentMode"}, | ||
| 249 | {127, nullptr, "StopLrAssignmentMode"}, | ||
| 214 | {128, &Hid::SetNpadHandheldActivationMode, "SetNpadHandheldActivationMode"}, | 250 | {128, &Hid::SetNpadHandheldActivationMode, "SetNpadHandheldActivationMode"}, |
| 251 | {129, nullptr, "GetNpadHandheldActivationMode"}, | ||
| 252 | {130, nullptr, "SwapNpadAssignment"}, | ||
| 253 | {131, nullptr, "IsUnintendedHomeButtonInputProtectionEnabled"}, | ||
| 254 | {132, nullptr, "EnableUnintendedHomeButtonInputProtection"}, | ||
| 215 | {200, &Hid::GetVibrationDeviceInfo, "GetVibrationDeviceInfo"}, | 255 | {200, &Hid::GetVibrationDeviceInfo, "GetVibrationDeviceInfo"}, |
| 216 | {201, &Hid::SendVibrationValue, "SendVibrationValue"}, | 256 | {201, &Hid::SendVibrationValue, "SendVibrationValue"}, |
| 217 | {202, &Hid::GetActualVibrationValue, "GetActualVibrationValue"}, | 257 | {202, &Hid::GetActualVibrationValue, "GetActualVibrationValue"}, |
| 218 | {203, &Hid::CreateActiveVibrationDeviceList, "CreateActiveVibrationDeviceList"}, | 258 | {203, &Hid::CreateActiveVibrationDeviceList, "CreateActiveVibrationDeviceList"}, |
| 259 | {204, nullptr, "PermitVibration"}, | ||
| 260 | {205, nullptr, "IsVibrationPermitted"}, | ||
| 219 | {206, &Hid::SendVibrationValues, "SendVibrationValues"}, | 261 | {206, &Hid::SendVibrationValues, "SendVibrationValues"}, |
| 262 | {300, nullptr, "ActivateConsoleSixAxisSensor"}, | ||
| 263 | {301, nullptr, "StartConsoleSixAxisSensor"}, | ||
| 264 | {302, nullptr, "StopConsoleSixAxisSensor"}, | ||
| 265 | {400, nullptr, "IsUsbFullKeyControllerEnabled"}, | ||
| 266 | {401, nullptr, "EnableUsbFullKeyController"}, | ||
| 267 | {402, nullptr, "IsUsbFullKeyControllerConnected"}, | ||
| 268 | {1000, nullptr, "SetNpadCommunicationMode"}, | ||
| 269 | {1001, nullptr, "GetNpadCommunicationMode"}, | ||
| 220 | }; | 270 | }; |
| 221 | RegisterHandlers(functions); | 271 | RegisterHandlers(functions); |
| 222 | 272 | ||
diff --git a/src/core/hle/service/ns/pl_u.cpp b/src/core/hle/service/ns/pl_u.cpp index ef3c7799a..d5e0b5f14 100644 --- a/src/core/hle/service/ns/pl_u.cpp +++ b/src/core/hle/service/ns/pl_u.cpp | |||
| @@ -37,7 +37,9 @@ PL_U::PL_U() : ServiceFramework("pl:u") { | |||
| 37 | {1, &PL_U::GetLoadState, "GetLoadState"}, | 37 | {1, &PL_U::GetLoadState, "GetLoadState"}, |
| 38 | {2, &PL_U::GetSize, "GetSize"}, | 38 | {2, &PL_U::GetSize, "GetSize"}, |
| 39 | {3, &PL_U::GetSharedMemoryAddressOffset, "GetSharedMemoryAddressOffset"}, | 39 | {3, &PL_U::GetSharedMemoryAddressOffset, "GetSharedMemoryAddressOffset"}, |
| 40 | {4, &PL_U::GetSharedMemoryNativeHandle, "GetSharedMemoryNativeHandle"}}; | 40 | {4, &PL_U::GetSharedMemoryNativeHandle, "GetSharedMemoryNativeHandle"}, |
| 41 | {5, nullptr, "GetSharedFontInOrderOfPriority"}, | ||
| 42 | }; | ||
| 41 | RegisterHandlers(functions); | 43 | RegisterHandlers(functions); |
| 42 | 44 | ||
| 43 | // Attempt to load shared font data from disk | 45 | // Attempt to load shared font data from disk |
diff --git a/src/core/hle/service/nvdrv/interface.cpp b/src/core/hle/service/nvdrv/interface.cpp index c70370f1f..567c2cd7c 100644 --- a/src/core/hle/service/nvdrv/interface.cpp +++ b/src/core/hle/service/nvdrv/interface.cpp | |||
| @@ -96,7 +96,14 @@ NVDRV::NVDRV(std::shared_ptr<Module> nvdrv, const char* name) | |||
| 96 | {2, &NVDRV::Close, "Close"}, | 96 | {2, &NVDRV::Close, "Close"}, |
| 97 | {3, &NVDRV::Initialize, "Initialize"}, | 97 | {3, &NVDRV::Initialize, "Initialize"}, |
| 98 | {4, &NVDRV::QueryEvent, "QueryEvent"}, | 98 | {4, &NVDRV::QueryEvent, "QueryEvent"}, |
| 99 | {5, nullptr, "MapSharedMem"}, | ||
| 100 | {6, nullptr, "GetStatus"}, | ||
| 101 | {7, nullptr, "ForceSetClientPID"}, | ||
| 99 | {8, &NVDRV::SetClientPID, "SetClientPID"}, | 102 | {8, &NVDRV::SetClientPID, "SetClientPID"}, |
| 103 | {9, nullptr, "DumpGraphicsMemoryInfo"}, | ||
| 104 | {10, nullptr, "InitializeDevtools"}, | ||
| 105 | {11, nullptr, "Ioctl2"}, | ||
| 106 | {12, nullptr, "Ioctl3"}, | ||
| 100 | {13, &NVDRV::FinishInitialize, "FinishInitialize"}, | 107 | {13, &NVDRV::FinishInitialize, "FinishInitialize"}, |
| 101 | }; | 108 | }; |
| 102 | RegisterHandlers(functions); | 109 | RegisterHandlers(functions); |
diff --git a/src/core/hle/service/nvdrv/nvmemp.cpp b/src/core/hle/service/nvdrv/nvmemp.cpp index 5a13732c7..35d6c0c13 100644 --- a/src/core/hle/service/nvdrv/nvmemp.cpp +++ b/src/core/hle/service/nvdrv/nvmemp.cpp | |||
| @@ -13,17 +13,17 @@ namespace Nvidia { | |||
| 13 | 13 | ||
| 14 | NVMEMP::NVMEMP() : ServiceFramework("nvmemp") { | 14 | NVMEMP::NVMEMP() : ServiceFramework("nvmemp") { |
| 15 | static const FunctionInfo functions[] = { | 15 | static const FunctionInfo functions[] = { |
| 16 | {0, &NVMEMP::Unknown0, "Unknown0"}, | 16 | {0, &NVMEMP::Cmd0, "Cmd0"}, |
| 17 | {1, &NVMEMP::Unknown1, "Unknown1"}, | 17 | {1, &NVMEMP::Cmd1, "Cmd1"}, |
| 18 | }; | 18 | }; |
| 19 | RegisterHandlers(functions); | 19 | RegisterHandlers(functions); |
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | void NVMEMP::Unknown0(Kernel::HLERequestContext& ctx) { | 22 | void NVMEMP::Cmd0(Kernel::HLERequestContext& ctx) { |
| 23 | UNIMPLEMENTED(); | 23 | UNIMPLEMENTED(); |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | void NVMEMP::Unknown1(Kernel::HLERequestContext& ctx) { | 26 | void NVMEMP::Cmd1(Kernel::HLERequestContext& ctx) { |
| 27 | UNIMPLEMENTED(); | 27 | UNIMPLEMENTED(); |
| 28 | } | 28 | } |
| 29 | 29 | ||
diff --git a/src/core/hle/service/nvdrv/nvmemp.h b/src/core/hle/service/nvdrv/nvmemp.h index a6b5fbb82..fb16026b0 100644 --- a/src/core/hle/service/nvdrv/nvmemp.h +++ b/src/core/hle/service/nvdrv/nvmemp.h | |||
| @@ -15,8 +15,8 @@ public: | |||
| 15 | ~NVMEMP() = default; | 15 | ~NVMEMP() = default; |
| 16 | 16 | ||
| 17 | private: | 17 | private: |
| 18 | void Unknown0(Kernel::HLERequestContext& ctx); | 18 | void Cmd0(Kernel::HLERequestContext& ctx); |
| 19 | void Unknown1(Kernel::HLERequestContext& ctx); | 19 | void Cmd1(Kernel::HLERequestContext& ctx); |
| 20 | }; | 20 | }; |
| 21 | 21 | ||
| 22 | } // namespace Nvidia | 22 | } // namespace Nvidia |
diff --git a/src/core/hle/service/pctl/pctl_a.cpp b/src/core/hle/service/pctl/pctl_a.cpp index c65fffa07..4e644be64 100644 --- a/src/core/hle/service/pctl/pctl_a.cpp +++ b/src/core/hle/service/pctl/pctl_a.cpp | |||
| @@ -11,10 +11,106 @@ namespace PCTL { | |||
| 11 | 11 | ||
| 12 | class IParentalControlService final : public ServiceFramework<IParentalControlService> { | 12 | class IParentalControlService final : public ServiceFramework<IParentalControlService> { |
| 13 | public: | 13 | public: |
| 14 | IParentalControlService() : ServiceFramework("IParentalControlService") {} | 14 | IParentalControlService() : ServiceFramework("IParentalControlService") { |
| 15 | static const FunctionInfo functions[] = { | ||
| 16 | {1, nullptr, "Initialize"}, | ||
| 17 | {1001, nullptr, "CheckFreeCommunicationPermission"}, | ||
| 18 | {1002, nullptr, "ConfirmLaunchApplicationPermission"}, | ||
| 19 | {1003, nullptr, "ConfirmResumeApplicationPermission"}, | ||
| 20 | {1004, nullptr, "ConfirmSnsPostPermission"}, | ||
| 21 | {1005, nullptr, "ConfirmSystemSettingsPermission"}, | ||
| 22 | {1006, nullptr, "IsRestrictionTemporaryUnlocked"}, | ||
| 23 | {1007, nullptr, "RevertRestrictionTemporaryUnlocked"}, | ||
| 24 | {1008, nullptr, "EnterRestrictedSystemSettings"}, | ||
| 25 | {1009, nullptr, "LeaveRestrictedSystemSettings"}, | ||
| 26 | {1010, nullptr, "IsRestrictedSystemSettingsEntered"}, | ||
| 27 | {1011, nullptr, "RevertRestrictedSystemSettingsEntered"}, | ||
| 28 | {1012, nullptr, "GetRestrictedFeatures"}, | ||
| 29 | {1013, nullptr, "ConfirmStereoVisionPermission"}, | ||
| 30 | {1014, nullptr, "ConfirmPlayableApplicationVideoOld"}, | ||
| 31 | {1015, nullptr, "ConfirmPlayableApplicationVideo"}, | ||
| 32 | {1031, nullptr, "IsRestrictionEnabled"}, | ||
| 33 | {1032, nullptr, "GetSafetyLevel"}, | ||
| 34 | {1033, nullptr, "SetSafetyLevel"}, | ||
| 35 | {1034, nullptr, "GetSafetyLevelSettings"}, | ||
| 36 | {1035, nullptr, "GetCurrentSettings"}, | ||
| 37 | {1036, nullptr, "SetCustomSafetyLevelSettings"}, | ||
| 38 | {1037, nullptr, "GetDefaultRatingOrganization"}, | ||
| 39 | {1038, nullptr, "SetDefaultRatingOrganization"}, | ||
| 40 | {1039, nullptr, "GetFreeCommunicationApplicationListCount"}, | ||
| 41 | {1042, nullptr, "AddToFreeCommunicationApplicationList"}, | ||
| 42 | {1043, nullptr, "DeleteSettings"}, | ||
| 43 | {1044, nullptr, "GetFreeCommunicationApplicationList"}, | ||
| 44 | {1045, nullptr, "UpdateFreeCommunicationApplicationList"}, | ||
| 45 | {1046, nullptr, "DisableFeaturesForReset"}, | ||
| 46 | {1047, nullptr, "NotifyApplicationDownloadStarted"}, | ||
| 47 | {1061, nullptr, "ConfirmStereoVisionRestrictionConfigurable"}, | ||
| 48 | {1062, nullptr, "GetStereoVisionRestriction"}, | ||
| 49 | {1063, nullptr, "SetStereoVisionRestriction"}, | ||
| 50 | {1064, nullptr, "ResetConfirmedStereoVisionPermission"}, | ||
| 51 | {1065, nullptr, "IsStereoVisionPermitted"}, | ||
| 52 | {1201, nullptr, "UnlockRestrictionTemporarily"}, | ||
| 53 | {1202, nullptr, "UnlockSystemSettingsRestriction"}, | ||
| 54 | {1203, nullptr, "SetPinCode"}, | ||
| 55 | {1204, nullptr, "GenerateInquiryCode"}, | ||
| 56 | {1205, nullptr, "CheckMasterKey"}, | ||
| 57 | {1206, nullptr, "GetPinCodeLength"}, | ||
| 58 | {1207, nullptr, "GetPinCodeChangedEvent"}, | ||
| 59 | {1208, nullptr, "GetPinCode"}, | ||
| 60 | {1403, nullptr, "IsPairingActive"}, | ||
| 61 | {1406, nullptr, "GetSettingsLastUpdated"}, | ||
| 62 | {1411, nullptr, "GetPairingAccountInfo"}, | ||
| 63 | {1421, nullptr, "GetAccountNickname"}, | ||
| 64 | {1424, nullptr, "GetAccountState"}, | ||
| 65 | {1432, nullptr, "GetSynchronizationEvent"}, | ||
| 66 | {1451, nullptr, "StartPlayTimer"}, | ||
| 67 | {1452, nullptr, "StopPlayTimer"}, | ||
| 68 | {1453, nullptr, "IsPlayTimerEnabled"}, | ||
| 69 | {1454, nullptr, "GetPlayTimerRemainingTime"}, | ||
| 70 | {1455, nullptr, "IsRestrictedByPlayTimer"}, | ||
| 71 | {1456, nullptr, "GetPlayTimerSettings"}, | ||
| 72 | {1457, nullptr, "GetPlayTimerEventToRequestSuspension"}, | ||
| 73 | {1458, nullptr, "IsPlayTimerAlarmDisabled"}, | ||
| 74 | {1471, nullptr, "NotifyWrongPinCodeInputManyTimes"}, | ||
| 75 | {1472, nullptr, "CancelNetworkRequest"}, | ||
| 76 | {1473, nullptr, "GetUnlinkedEvent"}, | ||
| 77 | {1474, nullptr, "ClearUnlinkedEvent"}, | ||
| 78 | {1601, nullptr, "DisableAllFeatures"}, | ||
| 79 | {1602, nullptr, "PostEnableAllFeatures"}, | ||
| 80 | {1603, nullptr, "IsAllFeaturesDisabled"}, | ||
| 81 | {1901, nullptr, "DeleteFromFreeCommunicationApplicationListForDebug"}, | ||
| 82 | {1902, nullptr, "ClearFreeCommunicationApplicationListForDebug"}, | ||
| 83 | {1903, nullptr, "GetExemptApplicationListCountForDebug"}, | ||
| 84 | {1904, nullptr, "GetExemptApplicationListForDebug"}, | ||
| 85 | {1905, nullptr, "UpdateExemptApplicationListForDebug"}, | ||
| 86 | {1906, nullptr, "AddToExemptApplicationListForDebug"}, | ||
| 87 | {1907, nullptr, "DeleteFromExemptApplicationListForDebug"}, | ||
| 88 | {1908, nullptr, "ClearExemptApplicationListForDebug"}, | ||
| 89 | {1941, nullptr, "DeletePairing"}, | ||
| 90 | {1951, nullptr, "SetPlayTimerSettingsForDebug"}, | ||
| 91 | {1952, nullptr, "GetPlayTimerSpentTimeForTest"}, | ||
| 92 | {1953, nullptr, "SetPlayTimerAlarmDisabledForDebug"}, | ||
| 93 | {2001, nullptr, "RequestPairingAsync"}, | ||
| 94 | {2002, nullptr, "FinishRequestPairing"}, | ||
| 95 | {2003, nullptr, "AuthorizePairingAsync"}, | ||
| 96 | {2004, nullptr, "FinishAuthorizePairing"}, | ||
| 97 | {2005, nullptr, "RetrievePairingInfoAsync"}, | ||
| 98 | {2006, nullptr, "FinishRetrievePairingInfo"}, | ||
| 99 | {2007, nullptr, "UnlinkPairingAsync"}, | ||
| 100 | {2008, nullptr, "FinishUnlinkPairing"}, | ||
| 101 | {2009, nullptr, "GetAccountMiiImageAsync"}, | ||
| 102 | {2010, nullptr, "FinishGetAccountMiiImage"}, | ||
| 103 | {2011, nullptr, "GetAccountMiiImageContentTypeAsync"}, | ||
| 104 | {2012, nullptr, "FinishGetAccountMiiImageContentType"}, | ||
| 105 | {2013, nullptr, "SynchronizeParentalControlSettingsAsync"}, | ||
| 106 | {2014, nullptr, "FinishSynchronizeParentalControlSettings"}, | ||
| 107 | {2015, nullptr, "FinishSynchronizeParentalControlSettingsWithLastUpdated"}, | ||
| 108 | {2016, nullptr, "RequestUpdateExemptionListAsync"}, | ||
| 109 | }; | ||
| 110 | RegisterHandlers(functions); | ||
| 111 | } | ||
| 15 | }; | 112 | }; |
| 16 | 113 | void PCTL_A::CreateService(Kernel::HLERequestContext& ctx) { | |
| 17 | void PCTL_A::GetService(Kernel::HLERequestContext& ctx) { | ||
| 18 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 114 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 19 | rb.Push(RESULT_SUCCESS); | 115 | rb.Push(RESULT_SUCCESS); |
| 20 | rb.PushIpcInterface<IParentalControlService>(); | 116 | rb.PushIpcInterface<IParentalControlService>(); |
| @@ -23,7 +119,8 @@ void PCTL_A::GetService(Kernel::HLERequestContext& ctx) { | |||
| 23 | 119 | ||
| 24 | PCTL_A::PCTL_A() : ServiceFramework("pctl:a") { | 120 | PCTL_A::PCTL_A() : ServiceFramework("pctl:a") { |
| 25 | static const FunctionInfo functions[] = { | 121 | static const FunctionInfo functions[] = { |
| 26 | {0, &PCTL_A::GetService, "GetService"}, | 122 | {0, &PCTL_A::CreateService, "CreateService"}, |
| 123 | {1, nullptr, "CreateServiceWithoutInitialize"}, | ||
| 27 | }; | 124 | }; |
| 28 | RegisterHandlers(functions); | 125 | RegisterHandlers(functions); |
| 29 | } | 126 | } |
diff --git a/src/core/hle/service/pctl/pctl_a.h b/src/core/hle/service/pctl/pctl_a.h index a89c8d07d..3aa8873a9 100644 --- a/src/core/hle/service/pctl/pctl_a.h +++ b/src/core/hle/service/pctl/pctl_a.h | |||
| @@ -15,7 +15,7 @@ public: | |||
| 15 | ~PCTL_A() = default; | 15 | ~PCTL_A() = default; |
| 16 | 16 | ||
| 17 | private: | 17 | private: |
| 18 | void GetService(Kernel::HLERequestContext& ctx); | 18 | void CreateService(Kernel::HLERequestContext& ctx); |
| 19 | }; | 19 | }; |
| 20 | 20 | ||
| 21 | } // namespace PCTL | 21 | } // namespace PCTL |
diff --git a/src/core/hle/service/ssl/ssl.cpp b/src/core/hle/service/ssl/ssl.cpp index afa8d5d79..01a03ec83 100644 --- a/src/core/hle/service/ssl/ssl.cpp +++ b/src/core/hle/service/ssl/ssl.cpp | |||
| @@ -2,12 +2,106 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include "core/hle/ipc_helpers.h" | ||
| 5 | #include "core/hle/service/ssl/ssl.h" | 6 | #include "core/hle/service/ssl/ssl.h" |
| 6 | 7 | ||
| 7 | namespace Service { | 8 | namespace Service { |
| 8 | namespace SSL { | 9 | namespace SSL { |
| 9 | 10 | ||
| 10 | SSL::SSL() : ServiceFramework("ssl") {} | 11 | class ISslConnection final : public ServiceFramework<ISslConnection> { |
| 12 | public: | ||
| 13 | ISslConnection() : ServiceFramework("ISslConnection") { | ||
| 14 | static const FunctionInfo functions[] = { | ||
| 15 | {0, nullptr, "SetSocketDescriptor"}, | ||
| 16 | {1, nullptr, "SetHostName"}, | ||
| 17 | {2, nullptr, "SetVerifyOption"}, | ||
| 18 | {3, nullptr, "SetIoMode"}, | ||
| 19 | {4, nullptr, "GetSocketDescriptor"}, | ||
| 20 | {5, nullptr, "GetHostName"}, | ||
| 21 | {6, nullptr, "GetVerifyOption"}, | ||
| 22 | {7, nullptr, "GetIoMode"}, | ||
| 23 | {8, nullptr, "DoHandshake"}, | ||
| 24 | {9, nullptr, "DoHandshakeGetServerCert"}, | ||
| 25 | {10, nullptr, "Read"}, | ||
| 26 | {11, nullptr, "Write"}, | ||
| 27 | {12, nullptr, "Pending"}, | ||
| 28 | {13, nullptr, "Peek"}, | ||
| 29 | {14, nullptr, "Poll"}, | ||
| 30 | {15, nullptr, "GetVerifyCertError"}, | ||
| 31 | {16, nullptr, "GetNeededServerCertBufferSize"}, | ||
| 32 | {17, nullptr, "SetSessionCacheMode"}, | ||
| 33 | {18, nullptr, "GetSessionCacheMode"}, | ||
| 34 | {19, nullptr, "FlushSessionCache"}, | ||
| 35 | {20, nullptr, "SetRenegotiationMode"}, | ||
| 36 | {21, nullptr, "GetRenegotiationMode"}, | ||
| 37 | {22, nullptr, "SetOption"}, | ||
| 38 | {23, nullptr, "GetOption"}, | ||
| 39 | {24, nullptr, "GetVerifyCertErrors"}, | ||
| 40 | {25, nullptr, "GetCipherInfo"}, | ||
| 41 | }; | ||
| 42 | RegisterHandlers(functions); | ||
| 43 | } | ||
| 44 | }; | ||
| 45 | |||
| 46 | class ISslContext final : public ServiceFramework<ISslContext> { | ||
| 47 | public: | ||
| 48 | ISslContext() : ServiceFramework("ISslContext") { | ||
| 49 | static const FunctionInfo functions[] = { | ||
| 50 | {0, &ISslContext::SetOption, "SetOption"}, | ||
| 51 | {1, nullptr, "GetOption"}, | ||
| 52 | {2, &ISslContext::CreateConnection, "CreateConnection"}, | ||
| 53 | {3, nullptr, "GetConnectionCount"}, | ||
| 54 | {4, nullptr, "ImportServerPki"}, | ||
| 55 | {5, nullptr, "ImportClientPki"}, | ||
| 56 | {6, nullptr, "RemoveServerPki"}, | ||
| 57 | {7, nullptr, "RemoveClientPki"}, | ||
| 58 | {8, nullptr, "RegisterInternalPki"}, | ||
| 59 | {9, nullptr, "AddPolicyOid"}, | ||
| 60 | {10, nullptr, "ImportCrl"}, | ||
| 61 | {11, nullptr, "RemoveCrl"}, | ||
| 62 | }; | ||
| 63 | RegisterHandlers(functions); | ||
| 64 | } | ||
| 65 | ~ISslContext() = default; | ||
| 66 | |||
| 67 | private: | ||
| 68 | void SetOption(Kernel::HLERequestContext& ctx) { | ||
| 69 | LOG_WARNING(Service_SSL, "(STUBBED) called"); | ||
| 70 | IPC::RequestParser rp{ctx}; | ||
| 71 | |||
| 72 | IPC::ResponseBuilder rb = rp.MakeBuilder(2, 0, 0); | ||
| 73 | rb.Push(RESULT_SUCCESS); | ||
| 74 | } | ||
| 75 | |||
| 76 | void CreateConnection(Kernel::HLERequestContext& ctx) { | ||
| 77 | LOG_WARNING(Service_SSL, "(STUBBED) called"); | ||
| 78 | |||
| 79 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 80 | rb.Push(RESULT_SUCCESS); | ||
| 81 | rb.PushIpcInterface<ISslConnection>(); | ||
| 82 | } | ||
| 83 | }; | ||
| 84 | |||
| 85 | void SSL::CreateContext(Kernel::HLERequestContext& ctx) { | ||
| 86 | LOG_WARNING(Service_SSL, "(STUBBED) called"); | ||
| 87 | |||
| 88 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 89 | rb.Push(RESULT_SUCCESS); | ||
| 90 | rb.PushIpcInterface<ISslContext>(); | ||
| 91 | } | ||
| 92 | |||
| 93 | SSL::SSL() : ServiceFramework("ssl") { | ||
| 94 | static const FunctionInfo functions[] = { | ||
| 95 | {0, &SSL::CreateContext, "CreateContext"}, | ||
| 96 | {1, nullptr, "GetContextCount"}, | ||
| 97 | {2, nullptr, "GetCertificates"}, | ||
| 98 | {3, nullptr, "GetCertificateBufSize"}, | ||
| 99 | {4, nullptr, "DebugIoctl"}, | ||
| 100 | {5, nullptr, "SetInterfaceVersion"}, | ||
| 101 | {6, nullptr, "FlushSessionCache"}, | ||
| 102 | }; | ||
| 103 | RegisterHandlers(functions); | ||
| 104 | } | ||
| 11 | 105 | ||
| 12 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 106 | void InstallInterfaces(SM::ServiceManager& service_manager) { |
| 13 | std::make_shared<SSL>()->InstallAsService(service_manager); | 107 | std::make_shared<SSL>()->InstallAsService(service_manager); |
diff --git a/src/core/hle/service/ssl/ssl.h b/src/core/hle/service/ssl/ssl.h index 645dad003..7fcff5ccd 100644 --- a/src/core/hle/service/ssl/ssl.h +++ b/src/core/hle/service/ssl/ssl.h | |||
| @@ -13,6 +13,9 @@ class SSL final : public ServiceFramework<SSL> { | |||
| 13 | public: | 13 | public: |
| 14 | explicit SSL(); | 14 | explicit SSL(); |
| 15 | ~SSL() = default; | 15 | ~SSL() = default; |
| 16 | |||
| 17 | private: | ||
| 18 | void CreateContext(Kernel::HLERequestContext& ctx); | ||
| 16 | }; | 19 | }; |
| 17 | 20 | ||
| 18 | /// Registers all SSL services with the specified service manager. | 21 | /// Registers all SSL services with the specified service manager. |