[hle] constexpr handler dispatch maps, introduce version gating (#4480)

This PR primarily focuses on upbringing constexpr maps for handlers.

Each time an HLE object of a service is construed, it registers it's own handlers, over and over.
Regardless of whetever it needs them at the moment or not.
Additionally we don't require to keep track of different function pointers amongst each object.
This can be done by overriding the given function instead, as opposed to having a separate
hash map for every given object.

In other words: Remove handlers (and handlers_tipc) map for every instance
then read from a static defined per-class.

- [x] Migrate all HLE functions to new `frozen::map` constexpr time finder
- [ ] Measure if this approach actually makes better codegen

Optional:
- [x] Properly gate all functions (that have versions commented next to them)
- [x] Maybe store `HandlerFnP<>` and `const char*` separately, version gating can go in a different map as well

Information such as name can be used on debug builds, but doesn't particularly help on release as one can consult an external reference (or have an annotated IPC map)

Signed-off-by: lizzie <lizzie@eden-emu.dev>

- [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.

-------------------

Co-authored-by: Maufeat <sahyno1996@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4480
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
This commit is contained in:
lizzie
2026-10-13 04:38:36 +02:00
committed by crueter
parent 4dc69c06f7
commit 218c6705d9
392 changed files with 12860 additions and 14029 deletions
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,55 +10,6 @@ namespace Service::Set {
IFactorySettingsServer::IFactorySettingsServer(Core::System& system_)
: ServiceFramework{system_, "set:cal"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "GetBluetoothBdAddress"},
{1, nullptr, "GetConfigurationId1"},
{2, nullptr, "GetAccelerometerOffset"},
{3, nullptr, "GetAccelerometerScale"},
{4, nullptr, "GetGyroscopeOffset"},
{5, nullptr, "GetGyroscopeScale"},
{6, nullptr, "GetWirelessLanMacAddress"},
{7, nullptr, "GetWirelessLanCountryCodeCount"},
{8, nullptr, "GetWirelessLanCountryCodes"},
{9, nullptr, "GetSerialNumber"},
{10, nullptr, "SetInitialSystemAppletProgramId"},
{11, nullptr, "SetOverlayDispProgramId"},
{12, nullptr, "GetBatteryLot"},
{14, nullptr, "GetEciDeviceCertificate"},
{15, nullptr, "GetEticketDeviceCertificate"},
{16, nullptr, "GetSslKey"},
{17, nullptr, "GetSslCertificate"},
{18, nullptr, "GetGameCardKey"},
{19, nullptr, "GetGameCardCertificate"},
{20, nullptr, "GetEciDeviceKey"},
{21, nullptr, "GetEticketDeviceKey"},
{22, nullptr, "GetSpeakerParameter"},
{23, nullptr, "GetLcdVendorId"},
{24, nullptr, "GetEciDeviceCertificate2"},
{25, nullptr, "GetEciDeviceKey2"},
{26, nullptr, "GetAmiiboKey"},
{27, nullptr, "GetAmiiboEcqvCertificate"},
{28, nullptr, "GetAmiiboEcdsaCertificate"},
{29, nullptr, "GetAmiiboEcqvBlsKey"},
{30, nullptr, "GetAmiiboEcqvBlsCertificate"},
{31, nullptr, "GetAmiiboEcqvBlsRootCertificate"},
{32, nullptr, "GetUsbTypeCPowerSourceCircuitVersion"},
{33, nullptr, "GetAnalogStickModuleTypeL"},
{34, nullptr, "GetAnalogStickModelParameterL"},
{35, nullptr, "GetAnalogStickFactoryCalibrationL"},
{36, nullptr, "GetAnalogStickModuleTypeR"},
{37, nullptr, "GetAnalogStickModelParameterR"},
{38, nullptr, "GetAnalogStickFactoryCalibrationR"},
{39, nullptr, "GetConsoleSixAxisSensorModuleType"},
{40, nullptr, "GetConsoleSixAxisSensorHorizontalOffset"},
{41, nullptr, "GetBatteryVersion"},
{42, nullptr, "GetDeviceId"},
{43, nullptr, "GetConsoleSixAxisSensorMountType"},
};
// clang-format on
RegisterHandlers(functions);
}
IFactorySettingsServer::~IFactorySettingsServer() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,6 +18,55 @@ class IFactorySettingsServer final : public ServiceFramework<IFactorySettingsSer
public:
explicit IFactorySettingsServer(Core::System& system_);
~IFactorySettingsServer() override;
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "GetBluetoothBdAddress"},
FunctionInfo{1, nullptr, "GetConfigurationId1"},
FunctionInfo{2, nullptr, "GetAccelerometerOffset"},
FunctionInfo{3, nullptr, "GetAccelerometerScale"},
FunctionInfo{4, nullptr, "GetGyroscopeOffset"},
FunctionInfo{5, nullptr, "GetGyroscopeScale"},
FunctionInfo{6, nullptr, "GetWirelessLanMacAddress"},
FunctionInfo{7, nullptr, "GetWirelessLanCountryCodeCount"},
FunctionInfo{8, nullptr, "GetWirelessLanCountryCodes"},
FunctionInfo{9, nullptr, "GetSerialNumber"},
FunctionInfo{10, nullptr, "SetInitialSystemAppletProgramId"},
FunctionInfo{11, nullptr, "SetOverlayDispProgramId"},
FunctionInfo{12, nullptr, "GetBatteryLot"},
FunctionInfo{14, nullptr, "GetEciDeviceCertificate"},
FunctionInfo{15, nullptr, "GetEticketDeviceCertificate"},
FunctionInfo{16, nullptr, "GetSslKey"},
FunctionInfo{17, nullptr, "GetSslCertificate"},
FunctionInfo{18, nullptr, "GetGameCardKey"},
FunctionInfo{19, nullptr, "GetGameCardCertificate"},
FunctionInfo{20, nullptr, "GetEciDeviceKey"},
FunctionInfo{21, nullptr, "GetEticketDeviceKey"},
FunctionInfo{22, nullptr, "GetSpeakerParameter"},
FunctionInfo{23, nullptr, "GetLcdVendorId"},
FunctionInfo{24, nullptr, "GetEciDeviceCertificate2"},
FunctionInfo{25, nullptr, "GetEciDeviceKey2"},
FunctionInfo{26, nullptr, "GetAmiiboKey"},
FunctionInfo{27, nullptr, "GetAmiiboEcqvCertificate"},
FunctionInfo{28, nullptr, "GetAmiiboEcdsaCertificate"},
FunctionInfo{29, nullptr, "GetAmiiboEcqvBlsKey"},
FunctionInfo{30, nullptr, "GetAmiiboEcqvBlsCertificate"},
FunctionInfo{31, nullptr, "GetAmiiboEcqvBlsRootCertificate"},
FunctionInfo{32, nullptr, "GetUsbTypeCPowerSourceCircuitVersion"},
FunctionInfo{33, nullptr, "GetAnalogStickModuleTypeL"},
FunctionInfo{34, nullptr, "GetAnalogStickModelParameterL"},
FunctionInfo{35, nullptr, "GetAnalogStickFactoryCalibrationL"},
FunctionInfo{36, nullptr, "GetAnalogStickModuleTypeR"},
FunctionInfo{37, nullptr, "GetAnalogStickModelParameterR"},
FunctionInfo{38, nullptr, "GetAnalogStickFactoryCalibrationR"},
FunctionInfo{39, nullptr, "GetConsoleSixAxisSensorModuleType"},
FunctionInfo{40, nullptr, "GetConsoleSixAxisSensorHorizontalOffset"},
FunctionInfo{41, nullptr, "GetBatteryVersion"},
FunctionInfo{42, nullptr, "GetDeviceId"},
FunctionInfo{43, nullptr, "GetConsoleSixAxisSensorMountType"}
);
};
} // namespace Service::Set
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -10,23 +10,6 @@ namespace Service::Set {
IFirmwareDebugSettingsServer::IFirmwareDebugSettingsServer(Core::System& system_)
: ServiceFramework{system_, "set:fd"} {
// clang-format off
static const FunctionInfo functions[] = {
{2, nullptr, "SetSettingsItemValue"},
{3, nullptr, "ResetSettingsItemValue"},
{4, nullptr, "CreateSettingsItemKeyIterator"},
{10, nullptr, "ReadSettings"},
{11, nullptr, "ResetSettings"},
{20, nullptr, "SetWebInspectorFlag"},
{21, nullptr, "SetAllowedSslHosts"},
{22, nullptr, "SetHostFsMountPoint"},
{23, nullptr, "SetMemoryUsageRateFlag"},
{24, nullptr, "CommitSettings"}, //20.0.0+
{27, nullptr, "SetHttpAuthConfigs"}, //21.0.0+
};
// clang-format on
RegisterHandlers(functions);
}
IFirmwareDebugSettingsServer::~IFirmwareDebugSettingsServer() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,6 +18,23 @@ class IFirmwareDebugSettingsServer final : public ServiceFramework<IFirmwareDebu
public:
explicit IFirmwareDebugSettingsServer(Core::System& system_);
~IFirmwareDebugSettingsServer() override;
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{2, nullptr, "SetSettingsItemValue"},
FunctionInfo{3, nullptr, "ResetSettingsItemValue"},
FunctionInfo{4, nullptr, "CreateSettingsItemKeyIterator"},
FunctionInfo{10, nullptr, "ReadSettings"},
FunctionInfo{11, nullptr, "ResetSettings"},
FunctionInfo{20, nullptr, "SetWebInspectorFlag"},
FunctionInfo{21, nullptr, "SetAllowedSslHosts"},
FunctionInfo{22, nullptr, "SetHostFsMountPoint"},
FunctionInfo{23, nullptr, "SetMemoryUsageRateFlag"},
FunctionInfo{24, nullptr, "CommitSettings", MakeVersionGate({20,0,0})},
FunctionInfo{27, nullptr, "SetHttpAuthConfigs", MakeVersionGate({21,0,0})}
);
};
} // namespace Service::Set
+19 -19
View File
@@ -89,26 +89,26 @@ LanguageCode GetLanguageCodeFromIndex(std::size_t index) {
return available_language_codes.at(index);
}
ISettingsServer::ISettingsServer(Core::System& system_) : ServiceFramework{system_, "set"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, C<&ISettingsServer::GetLanguageCode>, "GetLanguageCode"},
{1, C<&ISettingsServer::GetAvailableLanguageCodes>, "GetAvailableLanguageCodes"},
{2, C<&ISettingsServer::MakeLanguageCode>, "MakeLanguageCode"},
{3, C<&ISettingsServer::GetAvailableLanguageCodeCount>, "GetAvailableLanguageCodeCount"},
{4, C<&ISettingsServer::GetRegionCode>, "GetRegionCode"},
{5, C<&ISettingsServer::GetAvailableLanguageCodes2>, "GetAvailableLanguageCodes2"},
{6, C<&ISettingsServer::GetAvailableLanguageCodeCount2>, "GetAvailableLanguageCodeCount2"},
{7, C<&ISettingsServer::GetKeyCodeMap>, "GetKeyCodeMap"},
{8, C<&ISettingsServer::GetQuestFlag>, "GetQuestFlag"},
{9, C<&ISettingsServer::GetKeyCodeMap2>, "GetKeyCodeMap2"},
{10, nullptr, "GetFirmwareVersionForDebug"},
{11, C<&ISettingsServer::GetDeviceNickName>, "GetDeviceNickName"},
{12, C<&ISettingsServer::GetKeyCodeMapByPort>, "GetKeyCodeMapByPort"},
};
// clang-format on
std::optional<ServiceFrameworkBase::FunctionInfoBase> ISettingsServer::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, C<&ISettingsServer::GetLanguageCode>, "GetLanguageCode"},
FunctionInfo{1, C<&ISettingsServer::GetAvailableLanguageCodes>, "GetAvailableLanguageCodes"},
FunctionInfo{2, C<&ISettingsServer::MakeLanguageCode>, "MakeLanguageCode"},
FunctionInfo{3, C<&ISettingsServer::GetAvailableLanguageCodeCount>, "GetAvailableLanguageCodeCount"},
FunctionInfo{4, C<&ISettingsServer::GetRegionCode>, "GetRegionCode"},
FunctionInfo{5, C<&ISettingsServer::GetAvailableLanguageCodes2>, "GetAvailableLanguageCodes2"},
FunctionInfo{6, C<&ISettingsServer::GetAvailableLanguageCodeCount2>, "GetAvailableLanguageCodeCount2"},
FunctionInfo{7, C<&ISettingsServer::GetKeyCodeMap>, "GetKeyCodeMap"},
FunctionInfo{8, C<&ISettingsServer::GetQuestFlag>, "GetQuestFlag"},
FunctionInfo{9, C<&ISettingsServer::GetKeyCodeMap2>, "GetKeyCodeMap2"},
FunctionInfo{10, nullptr, "GetFirmwareVersionForDebug"},
FunctionInfo{11, C<&ISettingsServer::GetDeviceNickName>, "GetDeviceNickName"},
FunctionInfo{12, C<&ISettingsServer::GetKeyCodeMapByPort>, "GetKeyCodeMapByPort"}
);
return HandlerTableGenerateWithFind(key, functions);
}
RegisterHandlers(functions);
ISettingsServer::ISettingsServer(Core::System& system_) : ServiceFramework{system_, "set"} {
}
ISettingsServer::~ISettingsServer() = default;
+8 -17
View File
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -23,31 +26,19 @@ public:
private:
Result GetLanguageCode(Out<LanguageCode> out_language_code);
Result GetAvailableLanguageCodes(Out<s32> out_count,
OutArray<LanguageCode, BufferAttr_HipcPointer> language_codes);
Result GetAvailableLanguageCodes(Out<s32> out_count, OutArray<LanguageCode, BufferAttr_HipcPointer> language_codes);
Result MakeLanguageCode(Out<LanguageCode> out_language_code, Language language);
Result GetAvailableLanguageCodeCount(Out<s32> out_count);
Result GetRegionCode(Out<SystemRegionCode> out_region_code);
Result GetAvailableLanguageCodes2(
Out<s32> out_count, OutArray<LanguageCode, BufferAttr_HipcMapAlias> language_codes);
Result GetAvailableLanguageCodes2(Out<s32> out_count, OutArray<LanguageCode, BufferAttr_HipcMapAlias> language_codes);
Result GetAvailableLanguageCodeCount2(Out<s32> out_count);
Result GetKeyCodeMap(OutLargeData<KeyCodeMap, BufferAttr_HipcMapAlias> out_key_code_map);
Result GetQuestFlag(Out<bool> out_quest_flag);
Result GetKeyCodeMap2(OutLargeData<KeyCodeMap, BufferAttr_HipcMapAlias> out_key_code_map);
Result GetDeviceNickName(
OutLargeData<std::array<u8, 0x80>, BufferAttr_HipcMapAlias> out_device_name);
Result GetDeviceNickName(OutLargeData<std::array<u8, 0x80>, BufferAttr_HipcMapAlias> out_device_name);
Result GetKeyCodeMapByPort(OutLargeData<KeyCodeMap, BufferAttr_HipcMapAlias> out_key_code_map, u32 port);
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
};
} // namespace Service::Set
@@ -114,240 +114,239 @@ Result GetFirmwareVersionImpl(FirmwareVersionFormat& out_firmware, Core::System&
return ResultSuccess;
}
std::optional<ServiceFrameworkBase::FunctionInfoBase> ISystemSettingsServer::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, C<&ISystemSettingsServer::SetLanguageCode>, "SetLanguageCode"},
FunctionInfo{1, nullptr, "SetNetworkSettings"},
FunctionInfo{2, nullptr, "GetNetworkSettings"},
FunctionInfo{3, C<&ISystemSettingsServer::GetFirmwareVersion>, "GetFirmwareVersion"},
FunctionInfo{4, C<&ISystemSettingsServer::GetFirmwareVersion2>, "GetFirmwareVersion2"},
FunctionInfo{5, nullptr, "GetFirmwareVersionDigest"},
FunctionInfo{7, C<&ISystemSettingsServer::GetLockScreenFlag>, "GetLockScreenFlag"},
FunctionInfo{8, C<&ISystemSettingsServer::SetLockScreenFlag>, "SetLockScreenFlag"},
FunctionInfo{9, nullptr, "GetBacklightSettings"},
FunctionInfo{10, nullptr, "SetBacklightSettings"},
FunctionInfo{11, nullptr, "SetBluetoothDevicesSettings"},
FunctionInfo{12, nullptr, "GetBluetoothDevicesSettings"},
FunctionInfo{13, C<&ISystemSettingsServer::GetExternalSteadyClockSourceId>, "GetExternalSteadyClockSourceId"},
FunctionInfo{14, C<&ISystemSettingsServer::SetExternalSteadyClockSourceId>, "SetExternalSteadyClockSourceId"},
FunctionInfo{15, C<&ISystemSettingsServer::GetUserSystemClockContext>, "GetUserSystemClockContext"},
FunctionInfo{16, C<&ISystemSettingsServer::SetUserSystemClockContext>, "SetUserSystemClockContext"},
FunctionInfo{17, C<&ISystemSettingsServer::GetAccountSettings>, "GetAccountSettings"},
FunctionInfo{18, C<&ISystemSettingsServer::SetAccountSettings>, "SetAccountSettings"},
FunctionInfo{19, nullptr, "GetAudioVolume"},
FunctionInfo{20, nullptr, "SetAudioVolume"},
FunctionInfo{21, C<&ISystemSettingsServer::GetEulaVersions>, "GetEulaVersions"},
FunctionInfo{22, C<&ISystemSettingsServer::SetEulaVersions>, "SetEulaVersions"},
FunctionInfo{23, C<&ISystemSettingsServer::GetColorSetId>, "GetColorSetId"},
FunctionInfo{24, C<&ISystemSettingsServer::SetColorSetId>, "SetColorSetId"},
FunctionInfo{25, C<&ISystemSettingsServer::GetConsoleInformationUploadFlag>, "GetConsoleInformationUploadFlag"},
FunctionInfo{26, C<&ISystemSettingsServer::SetConsoleInformationUploadFlag>, "SetConsoleInformationUploadFlag"},
FunctionInfo{27, C<&ISystemSettingsServer::GetAutomaticApplicationDownloadFlag>, "GetAutomaticApplicationDownloadFlag"},
FunctionInfo{28, C<&ISystemSettingsServer::SetAutomaticApplicationDownloadFlag>, "SetAutomaticApplicationDownloadFlag"},
FunctionInfo{29, C<&ISystemSettingsServer::GetNotificationSettings>, "GetNotificationSettings"},
FunctionInfo{30, C<&ISystemSettingsServer::SetNotificationSettings>, "SetNotificationSettings"},
FunctionInfo{31, C<&ISystemSettingsServer::GetAccountNotificationSettings>, "GetAccountNotificationSettings"},
FunctionInfo{32, C<&ISystemSettingsServer::SetAccountNotificationSettings>, "SetAccountNotificationSettings"},
FunctionInfo{35, C<&ISystemSettingsServer::GetVibrationMasterVolume>, "GetVibrationMasterVolume"},
FunctionInfo{36, C<&ISystemSettingsServer::SetVibrationMasterVolume>, "SetVibrationMasterVolume"},
FunctionInfo{37, C<&ISystemSettingsServer::GetSettingsItemValueSize>, "GetSettingsItemValueSize"},
FunctionInfo{38, C<&ISystemSettingsServer::GetSettingsItemValue>, "GetSettingsItemValue"},
FunctionInfo{39, C<&ISystemSettingsServer::GetTvSettings>, "GetTvSettings"},
FunctionInfo{40, C<&ISystemSettingsServer::SetTvSettings>, "SetTvSettings"},
FunctionInfo{41, nullptr, "GetEdid"},
FunctionInfo{42, nullptr, "SetEdid"},
FunctionInfo{43, C<&ISystemSettingsServer::GetAudioOutputMode>, "GetAudioOutputMode"},
FunctionInfo{44, C<&ISystemSettingsServer::SetAudioOutputMode>, "SetAudioOutputMode"},
FunctionInfo{45, C<&ISystemSettingsServer::GetSpeakerAutoMuteFlag>, "GetSpeakerAutoMuteFlag"},
FunctionInfo{46, C<&ISystemSettingsServer::SetSpeakerAutoMuteFlag>, "SetSpeakerAutoMuteFlag"},
FunctionInfo{47, C<&ISystemSettingsServer::GetQuestFlag>, "GetQuestFlag"},
FunctionInfo{48, C<&ISystemSettingsServer::SetQuestFlag>, "SetQuestFlag"},
FunctionInfo{49, nullptr, "GetDataDeletionSettings"},
FunctionInfo{50, nullptr, "SetDataDeletionSettings"},
FunctionInfo{51, nullptr, "GetInitialSystemAppletProgramId"},
FunctionInfo{52, nullptr, "GetOverlayDispProgramId"},
FunctionInfo{53, C<&ISystemSettingsServer::GetDeviceTimeZoneLocationName>, "GetDeviceTimeZoneLocationName"},
FunctionInfo{54, C<&ISystemSettingsServer::SetDeviceTimeZoneLocationName>, "SetDeviceTimeZoneLocationName"},
FunctionInfo{55, nullptr, "GetWirelessCertificationFileSize"},
FunctionInfo{56, nullptr, "GetWirelessCertificationFile"},
FunctionInfo{57, C<&ISystemSettingsServer::SetRegionCode>, "SetRegionCode"},
FunctionInfo{58, C<&ISystemSettingsServer::GetNetworkSystemClockContext>, "GetNetworkSystemClockContext"},
FunctionInfo{59, C<&ISystemSettingsServer::SetNetworkSystemClockContext>, "SetNetworkSystemClockContext"},
FunctionInfo{60, C<&ISystemSettingsServer::IsUserSystemClockAutomaticCorrectionEnabled>, "IsUserSystemClockAutomaticCorrectionEnabled"},
FunctionInfo{61, C<&ISystemSettingsServer::SetUserSystemClockAutomaticCorrectionEnabled>, "SetUserSystemClockAutomaticCorrectionEnabled"},
FunctionInfo{62, C<&ISystemSettingsServer::GetDebugModeFlag>, "GetDebugModeFlag"},
FunctionInfo{63, C<&ISystemSettingsServer::GetPrimaryAlbumStorage>, "GetPrimaryAlbumStorage"},
FunctionInfo{64, C<&ISystemSettingsServer::SetPrimaryAlbumStorage>, "SetPrimaryAlbumStorage"},
FunctionInfo{65, C<&ISystemSettingsServer::GetUsb30EnableFlag>, "GetUsb30EnableFlag"},
FunctionInfo{66, C<&ISystemSettingsServer::SetUsb30EnableFlag>, "SetUsb30EnableFlag"},
FunctionInfo{67, C<&ISystemSettingsServer::GetBatteryLot>, "GetBatteryLot"},
FunctionInfo{68, C<&ISystemSettingsServer::GetSerialNumber>, "GetSerialNumber"},
FunctionInfo{69, C<&ISystemSettingsServer::GetNfcEnableFlag>, "GetNfcEnableFlag"},
FunctionInfo{70, C<&ISystemSettingsServer::SetNfcEnableFlag>, "SetNfcEnableFlag"},
FunctionInfo{71, C<&ISystemSettingsServer::GetSleepSettings>, "GetSleepSettings"},
FunctionInfo{72, C<&ISystemSettingsServer::SetSleepSettings>, "SetSleepSettings"},
FunctionInfo{73, C<&ISystemSettingsServer::GetWirelessLanEnableFlag>, "GetWirelessLanEnableFlag"},
FunctionInfo{74, C<&ISystemSettingsServer::SetWirelessLanEnableFlag>, "SetWirelessLanEnableFlag"},
FunctionInfo{75, C<&ISystemSettingsServer::GetInitialLaunchSettings>, "GetInitialLaunchSettings"},
FunctionInfo{76, C<&ISystemSettingsServer::SetInitialLaunchSettings>, "SetInitialLaunchSettings"},
FunctionInfo{77, C<&ISystemSettingsServer::GetDeviceNickName>, "GetDeviceNickName"},
FunctionInfo{78, C<&ISystemSettingsServer::SetDeviceNickName>, "SetDeviceNickName"},
FunctionInfo{79, C<&ISystemSettingsServer::GetProductModel>, "GetProductModel"},
FunctionInfo{80, nullptr, "GetLdnChannel"},
FunctionInfo{81, nullptr, "SetLdnChannel"},
FunctionInfo{82, nullptr, "AcquireTelemetryDirtyFlagEventHandle"},
FunctionInfo{83, nullptr, "GetTelemetryDirtyFlags"},
FunctionInfo{84, nullptr, "GetPtmBatteryLot"},
FunctionInfo{85, nullptr, "SetPtmBatteryLot"},
FunctionInfo{86, nullptr, "GetPtmFuelGaugeParameter"},
FunctionInfo{87, nullptr, "SetPtmFuelGaugeParameter"},
FunctionInfo{88, C<&ISystemSettingsServer::GetBluetoothEnableFlag>, "GetBluetoothEnableFlag"},
FunctionInfo{89, C<&ISystemSettingsServer::SetBluetoothEnableFlag>, "SetBluetoothEnableFlag"},
FunctionInfo{90, C<&ISystemSettingsServer::GetMiiAuthorId>, "GetMiiAuthorId"},
FunctionInfo{91, nullptr, "SetShutdownRtcValue"},
FunctionInfo{92, nullptr, "GetShutdownRtcValue"},
FunctionInfo{93, nullptr, "AcquireFatalDirtyFlagEventHandle"},
FunctionInfo{94, nullptr, "GetFatalDirtyFlags"},
FunctionInfo{95, C<&ISystemSettingsServer::GetAutoUpdateEnableFlag>, "GetAutoUpdateEnableFlag"},
FunctionInfo{96, C<&ISystemSettingsServer::SetAutoUpdateEnableFlag>, "SetAutoUpdateEnableFlag"},
FunctionInfo{97, nullptr, "GetNxControllerSettings"},
FunctionInfo{98, nullptr, "SetNxControllerSettings"},
FunctionInfo{99, C<&ISystemSettingsServer::GetBatteryPercentageFlag>, "GetBatteryPercentageFlag"},
FunctionInfo{100, C<&ISystemSettingsServer::SetBatteryPercentageFlag>, "SetBatteryPercentageFlag"},
FunctionInfo{101, nullptr, "GetExternalRtcResetFlag"},
FunctionInfo{102, nullptr, "SetExternalRtcResetFlag"},
FunctionInfo{103, nullptr, "GetUsbFullKeyEnableFlag"},
FunctionInfo{104, nullptr, "SetUsbFullKeyEnableFlag"},
FunctionInfo{105, C<&ISystemSettingsServer::SetExternalSteadyClockInternalOffset>, "SetExternalSteadyClockInternalOffset"},
FunctionInfo{106, C<&ISystemSettingsServer::GetExternalSteadyClockInternalOffset>, "GetExternalSteadyClockInternalOffset"},
FunctionInfo{107, nullptr, "GetBacklightSettingsEx"},
FunctionInfo{108, nullptr, "SetBacklightSettingsEx"},
FunctionInfo{109, nullptr, "GetHeadphoneVolumeWarningCount"},
FunctionInfo{110, nullptr, "SetHeadphoneVolumeWarningCount"},
FunctionInfo{111, nullptr, "GetBluetoothAfhEnableFlag"},
FunctionInfo{112, nullptr, "SetBluetoothAfhEnableFlag"},
FunctionInfo{113, nullptr, "GetBluetoothBoostEnableFlag"},
FunctionInfo{114, nullptr, "SetBluetoothBoostEnableFlag"},
FunctionInfo{115, nullptr, "GetInRepairProcessEnableFlag"},
FunctionInfo{116, nullptr, "SetInRepairProcessEnableFlag"},
FunctionInfo{117, nullptr, "GetHeadphoneVolumeUpdateFlag"},
FunctionInfo{118, nullptr, "SetHeadphoneVolumeUpdateFlag"},
FunctionInfo{119, nullptr, "NeedsToUpdateHeadphoneVolume"},
FunctionInfo{120, C<&ISystemSettingsServer::GetPushNotificationActivityModeOnSleep>, "GetPushNotificationActivityModeOnSleep"},
FunctionInfo{121, C<&ISystemSettingsServer::SetPushNotificationActivityModeOnSleep>, "SetPushNotificationActivityModeOnSleep"},
FunctionInfo{122, nullptr, "GetServiceDiscoveryControlSettings"},
FunctionInfo{123, nullptr, "SetServiceDiscoveryControlSettings"},
FunctionInfo{124, C<&ISystemSettingsServer::GetErrorReportSharePermission>, "GetErrorReportSharePermission"},
FunctionInfo{125, C<&ISystemSettingsServer::SetErrorReportSharePermission>, "SetErrorReportSharePermission"},
FunctionInfo{126, C<&ISystemSettingsServer::GetAppletLaunchFlags>, "GetAppletLaunchFlags"},
FunctionInfo{127, C<&ISystemSettingsServer::SetAppletLaunchFlags>, "SetAppletLaunchFlags"},
FunctionInfo{128, nullptr, "GetConsoleSixAxisSensorAccelerationBias"},
FunctionInfo{129, nullptr, "SetConsoleSixAxisSensorAccelerationBias"},
FunctionInfo{130, nullptr, "GetConsoleSixAxisSensorAngularVelocityBias"},
FunctionInfo{131, nullptr, "SetConsoleSixAxisSensorAngularVelocityBias"},
FunctionInfo{132, nullptr, "GetConsoleSixAxisSensorAccelerationGain"},
FunctionInfo{133, nullptr, "SetConsoleSixAxisSensorAccelerationGain"},
FunctionInfo{134, nullptr, "GetConsoleSixAxisSensorAngularVelocityGain"},
FunctionInfo{135, nullptr, "SetConsoleSixAxisSensorAngularVelocityGain"},
FunctionInfo{136, C<&ISystemSettingsServer::GetKeyboardLayout>, "GetKeyboardLayout"},
FunctionInfo{137, C<&ISystemSettingsServer::SetKeyboardLayout>, "SetKeyboardLayout"},
FunctionInfo{138, nullptr, "GetWebInspectorFlag"},
FunctionInfo{139, nullptr, "GetAllowedSslHosts"},
FunctionInfo{140, nullptr, "GetHostFsMountPoint"},
FunctionInfo{141, nullptr, "GetRequiresRunRepairTimeReviser"},
FunctionInfo{142, nullptr, "SetRequiresRunRepairTimeReviser"},
FunctionInfo{143, nullptr, "SetBlePairingSettings"},
FunctionInfo{144, nullptr, "GetBlePairingSettings"},
FunctionInfo{145, nullptr, "GetConsoleSixAxisSensorAngularVelocityTimeBias"},
FunctionInfo{146, nullptr, "SetConsoleSixAxisSensorAngularVelocityTimeBias"},
FunctionInfo{147, nullptr, "GetConsoleSixAxisSensorAngularAcceleration"},
FunctionInfo{148, nullptr, "SetConsoleSixAxisSensorAngularAcceleration"},
FunctionInfo{149, C<&ISystemSettingsServer::GetRebootlessSystemUpdateVersion>, "GetRebootlessSystemUpdateVersion"},
FunctionInfo{150, C<&ISystemSettingsServer::GetDeviceTimeZoneLocationUpdatedTime>, "GetDeviceTimeZoneLocationUpdatedTime"},
FunctionInfo{151, C<&ISystemSettingsServer::SetDeviceTimeZoneLocationUpdatedTime>, "SetDeviceTimeZoneLocationUpdatedTime"},
FunctionInfo{152, C<&ISystemSettingsServer::GetUserSystemClockAutomaticCorrectionUpdatedTime>, "GetUserSystemClockAutomaticCorrectionUpdatedTime"},
FunctionInfo{153, C<&ISystemSettingsServer::SetUserSystemClockAutomaticCorrectionUpdatedTime>, "SetUserSystemClockAutomaticCorrectionUpdatedTime"},
FunctionInfo{154, nullptr, "GetAccountOnlineStorageSettings"},
FunctionInfo{155, nullptr, "SetAccountOnlineStorageSettings"},
FunctionInfo{156, nullptr, "GetPctlReadyFlag"},
FunctionInfo{157, nullptr, "SetPctlReadyFlag"},
FunctionInfo{158, nullptr, "GetAnalogStickUserCalibrationL"},
FunctionInfo{159, nullptr, "SetAnalogStickUserCalibrationL"},
FunctionInfo{160, nullptr, "GetAnalogStickUserCalibrationR"},
FunctionInfo{161, nullptr, "SetAnalogStickUserCalibrationR"},
FunctionInfo{162, nullptr, "GetPtmBatteryVersion"},
FunctionInfo{163, nullptr, "SetPtmBatteryVersion"},
FunctionInfo{164, nullptr, "GetUsb30HostEnableFlag"},
FunctionInfo{165, nullptr, "SetUsb30HostEnableFlag"},
FunctionInfo{166, nullptr, "GetUsb30DeviceEnableFlag"},
FunctionInfo{167, nullptr, "SetUsb30DeviceEnableFlag"},
FunctionInfo{168, nullptr, "GetThemeId"},
FunctionInfo{169, nullptr, "SetThemeId"},
FunctionInfo{170, C<&ISystemSettingsServer::GetChineseTraditionalInputMethod>, "GetChineseTraditionalInputMethod"},
FunctionInfo{171, nullptr, "SetChineseTraditionalInputMethod"},
FunctionInfo{172, nullptr, "GetPtmCycleCountReliability"},
FunctionInfo{173, nullptr, "SetPtmCycleCountReliability"},
FunctionInfo{174, C<&ISystemSettingsServer::GetHomeMenuScheme>, "GetHomeMenuScheme"},
FunctionInfo{175, nullptr, "GetThemeSettings"},
FunctionInfo{176, nullptr, "SetThemeSettings"},
FunctionInfo{177, nullptr, "GetThemeKey"},
FunctionInfo{178, nullptr, "SetThemeKey"},
FunctionInfo{179, nullptr, "GetZoomFlag"},
FunctionInfo{180, nullptr, "SetZoomFlag"},
FunctionInfo{181, nullptr, "GetT"},
FunctionInfo{182, nullptr, "SetT"},
FunctionInfo{183, C<&ISystemSettingsServer::GetPlatformRegion>, "GetPlatformRegion"},
FunctionInfo{184, C<&ISystemSettingsServer::SetPlatformRegion>, "SetPlatformRegion"},
FunctionInfo{185, C<&ISystemSettingsServer::GetHomeMenuSchemeModel>, "GetHomeMenuSchemeModel"},
FunctionInfo{186, nullptr, "GetMemoryUsageRateFlag"},
FunctionInfo{187, C<&ISystemSettingsServer::GetTouchScreenMode>, "GetTouchScreenMode"},
FunctionInfo{188, C<&ISystemSettingsServer::SetTouchScreenMode>, "SetTouchScreenMode"},
FunctionInfo{189, nullptr, "GetButtonConfigSettingsFull"},
FunctionInfo{190, nullptr, "SetButtonConfigSettingsFull"},
FunctionInfo{191, nullptr, "GetButtonConfigSettingsEmbedded"},
FunctionInfo{192, nullptr, "SetButtonConfigSettingsEmbedded"},
FunctionInfo{193, nullptr, "GetButtonConfigSettingsLeft"},
FunctionInfo{194, nullptr, "SetButtonConfigSettingsLeft"},
FunctionInfo{195, nullptr, "GetButtonConfigSettingsRight"},
FunctionInfo{196, nullptr, "SetButtonConfigSettingsRight"},
FunctionInfo{197, nullptr, "GetButtonConfigRegisteredSettingsEmbedded"},
FunctionInfo{198, nullptr, "SetButtonConfigRegisteredSettingsEmbedded"},
FunctionInfo{199, nullptr, "GetButtonConfigRegisteredSettings"},
FunctionInfo{200, nullptr, "SetButtonConfigRegisteredSettings"},
FunctionInfo{201, C<&ISystemSettingsServer::GetFieldTestingFlag>, "GetFieldTestingFlag"},
FunctionInfo{202, nullptr, "SetFieldTestingFlag"},
FunctionInfo{203, C<&ISystemSettingsServer::GetPanelCrcMode>, "GetPanelCrcMode"},
FunctionInfo{204, C<&ISystemSettingsServer::SetPanelCrcMode>, "SetPanelCrcMode"},
FunctionInfo{205, nullptr, "GetNxControllerSettingsEx"},
FunctionInfo{206, nullptr, "SetNxControllerSettingsEx"},
FunctionInfo{207, nullptr, "GetHearingProtectionSafeguardFlag"},
FunctionInfo{208, nullptr, "SetHearingProtectionSafeguardFlag"},
FunctionInfo{209, nullptr, "GetHearingProtectionSafeguardRemainingTime"},
FunctionInfo{210, nullptr, "SetHearingProtectionSafeguardRemainingTime"},
FunctionInfo{221, nullptr, "GetForceMonauralOutputFlag", MakeVersionGate({17,0,0})},
FunctionInfo{222, nullptr, "SetForceMonauralOutputFlag", MakeVersionGate({17,0,0})},
FunctionInfo{251, nullptr, "GetAccountIdentificationSettings", MakeVersionGate({18,0,0})},
FunctionInfo{252, nullptr, "SetAccountIdentificationSettings", MakeVersionGate({18,0,0})},
FunctionInfo{263, nullptr, "AcquireVphymDirtyFlagEventHandle", MakeVersionGate({20,0,0})},
FunctionInfo{264, nullptr, "GetVphymDirtyFlags", MakeVersionGate({20,0,0})},
FunctionInfo{282, nullptr, "ConvertToProductModel", MakeVersionGate({20,0,0})},
FunctionInfo{283, nullptr, "ConvertToProductModelName", MakeVersionGate({20,0,0})},
FunctionInfo{289, nullptr, "GetDefaultAccountIdentificationFlagSet", MakeVersionGate({20,0,0})},
FunctionInfo{300, nullptr, "AcquirePushNotificationDirtyFlagEventHandle", MakeVersionGate({20,0,0})},
FunctionInfo{301, nullptr, "GetPushNotificationDirtyFlags", MakeVersionGate({20,0,0})},
FunctionInfo{306, nullptr, "GetPinCodeReregistrationGuideAccounts", MakeVersionGate({20,0,0})},
FunctionInfo{307, nullptr, "SetPinCodeReregistrationGuideAccounts", MakeVersionGate({20,0,0})},
FunctionInfo{315, C<&ISystemSettingsServer::GetHttpAuthConfigs>, "GetHttpAuthConfigs", MakeVersionGate({21,0,0})},
FunctionInfo{319, C<&ISystemSettingsServer::GetAccountUserSettings>, "GetAccountUserSettings", MakeVersionGate({21,0,0})},
FunctionInfo{320, nullptr, "SetAccountUserSettings", MakeVersionGate({21,0,0})},
FunctionInfo{321, C<&ISystemSettingsServer::GetDefaultAccountUserSettings>, "GetDefaultAccountUserSettings", MakeVersionGate({21,0,0})}
);
return HandlerTableGenerateWithFind(key, functions);
}
ISystemSettingsServer::ISystemSettingsServer(Core::System& system_)
: ServiceFramework{system_, "set:sys"}, m_system{system} {
// clang-format off
static const FunctionInfo functions[] = {
{0, C<&ISystemSettingsServer::SetLanguageCode>, "SetLanguageCode"},
{1, nullptr, "SetNetworkSettings"},
{2, nullptr, "GetNetworkSettings"},
{3, C<&ISystemSettingsServer::GetFirmwareVersion>, "GetFirmwareVersion"},
{4, C<&ISystemSettingsServer::GetFirmwareVersion2>, "GetFirmwareVersion2"},
{5, nullptr, "GetFirmwareVersionDigest"},
{7, C<&ISystemSettingsServer::GetLockScreenFlag>, "GetLockScreenFlag"},
{8, C<&ISystemSettingsServer::SetLockScreenFlag>, "SetLockScreenFlag"},
{9, nullptr, "GetBacklightSettings"},
{10, nullptr, "SetBacklightSettings"},
{11, nullptr, "SetBluetoothDevicesSettings"},
{12, nullptr, "GetBluetoothDevicesSettings"},
{13, C<&ISystemSettingsServer::GetExternalSteadyClockSourceId>, "GetExternalSteadyClockSourceId"},
{14, C<&ISystemSettingsServer::SetExternalSteadyClockSourceId>, "SetExternalSteadyClockSourceId"},
{15, C<&ISystemSettingsServer::GetUserSystemClockContext>, "GetUserSystemClockContext"},
{16, C<&ISystemSettingsServer::SetUserSystemClockContext>, "SetUserSystemClockContext"},
{17, C<&ISystemSettingsServer::GetAccountSettings>, "GetAccountSettings"},
{18, C<&ISystemSettingsServer::SetAccountSettings>, "SetAccountSettings"},
{19, nullptr, "GetAudioVolume"},
{20, nullptr, "SetAudioVolume"},
{21, C<&ISystemSettingsServer::GetEulaVersions>, "GetEulaVersions"},
{22, C<&ISystemSettingsServer::SetEulaVersions>, "SetEulaVersions"},
{23, C<&ISystemSettingsServer::GetColorSetId>, "GetColorSetId"},
{24, C<&ISystemSettingsServer::SetColorSetId>, "SetColorSetId"},
{25, C<&ISystemSettingsServer::GetConsoleInformationUploadFlag>, "GetConsoleInformationUploadFlag"},
{26, C<&ISystemSettingsServer::SetConsoleInformationUploadFlag>, "SetConsoleInformationUploadFlag"},
{27, C<&ISystemSettingsServer::GetAutomaticApplicationDownloadFlag>, "GetAutomaticApplicationDownloadFlag"},
{28, C<&ISystemSettingsServer::SetAutomaticApplicationDownloadFlag>, "SetAutomaticApplicationDownloadFlag"},
{29, C<&ISystemSettingsServer::GetNotificationSettings>, "GetNotificationSettings"},
{30, C<&ISystemSettingsServer::SetNotificationSettings>, "SetNotificationSettings"},
{31, C<&ISystemSettingsServer::GetAccountNotificationSettings>, "GetAccountNotificationSettings"},
{32, C<&ISystemSettingsServer::SetAccountNotificationSettings>, "SetAccountNotificationSettings"},
{35, C<&ISystemSettingsServer::GetVibrationMasterVolume>, "GetVibrationMasterVolume"},
{36, C<&ISystemSettingsServer::SetVibrationMasterVolume>, "SetVibrationMasterVolume"},
{37, C<&ISystemSettingsServer::GetSettingsItemValueSize>, "GetSettingsItemValueSize"},
{38, C<&ISystemSettingsServer::GetSettingsItemValue>, "GetSettingsItemValue"},
{39, C<&ISystemSettingsServer::GetTvSettings>, "GetTvSettings"},
{40, C<&ISystemSettingsServer::SetTvSettings>, "SetTvSettings"},
{41, nullptr, "GetEdid"},
{42, nullptr, "SetEdid"},
{43, C<&ISystemSettingsServer::GetAudioOutputMode>, "GetAudioOutputMode"},
{44, C<&ISystemSettingsServer::SetAudioOutputMode>, "SetAudioOutputMode"},
{45, C<&ISystemSettingsServer::GetSpeakerAutoMuteFlag>, "GetSpeakerAutoMuteFlag"},
{46, C<&ISystemSettingsServer::SetSpeakerAutoMuteFlag>, "SetSpeakerAutoMuteFlag"},
{47, C<&ISystemSettingsServer::GetQuestFlag>, "GetQuestFlag"},
{48, C<&ISystemSettingsServer::SetQuestFlag>, "SetQuestFlag"},
{49, nullptr, "GetDataDeletionSettings"},
{50, nullptr, "SetDataDeletionSettings"},
{51, nullptr, "GetInitialSystemAppletProgramId"},
{52, nullptr, "GetOverlayDispProgramId"},
{53, C<&ISystemSettingsServer::GetDeviceTimeZoneLocationName>, "GetDeviceTimeZoneLocationName"},
{54, C<&ISystemSettingsServer::SetDeviceTimeZoneLocationName>, "SetDeviceTimeZoneLocationName"},
{55, nullptr, "GetWirelessCertificationFileSize"},
{56, nullptr, "GetWirelessCertificationFile"},
{57, C<&ISystemSettingsServer::SetRegionCode>, "SetRegionCode"},
{58, C<&ISystemSettingsServer::GetNetworkSystemClockContext>, "GetNetworkSystemClockContext"},
{59, C<&ISystemSettingsServer::SetNetworkSystemClockContext>, "SetNetworkSystemClockContext"},
{60, C<&ISystemSettingsServer::IsUserSystemClockAutomaticCorrectionEnabled>, "IsUserSystemClockAutomaticCorrectionEnabled"},
{61, C<&ISystemSettingsServer::SetUserSystemClockAutomaticCorrectionEnabled>, "SetUserSystemClockAutomaticCorrectionEnabled"},
{62, C<&ISystemSettingsServer::GetDebugModeFlag>, "GetDebugModeFlag"},
{63, C<&ISystemSettingsServer::GetPrimaryAlbumStorage>, "GetPrimaryAlbumStorage"},
{64, C<&ISystemSettingsServer::SetPrimaryAlbumStorage>, "SetPrimaryAlbumStorage"},
{65, C<&ISystemSettingsServer::GetUsb30EnableFlag>, "GetUsb30EnableFlag"},
{66, C<&ISystemSettingsServer::SetUsb30EnableFlag>, "SetUsb30EnableFlag"},
{67, C<&ISystemSettingsServer::GetBatteryLot>, "GetBatteryLot"},
{68, C<&ISystemSettingsServer::GetSerialNumber>, "GetSerialNumber"},
{69, C<&ISystemSettingsServer::GetNfcEnableFlag>, "GetNfcEnableFlag"},
{70, C<&ISystemSettingsServer::SetNfcEnableFlag>, "SetNfcEnableFlag"},
{71, C<&ISystemSettingsServer::GetSleepSettings>, "GetSleepSettings"},
{72, C<&ISystemSettingsServer::SetSleepSettings>, "SetSleepSettings"},
{73, C<&ISystemSettingsServer::GetWirelessLanEnableFlag>, "GetWirelessLanEnableFlag"},
{74, C<&ISystemSettingsServer::SetWirelessLanEnableFlag>, "SetWirelessLanEnableFlag"},
{75, C<&ISystemSettingsServer::GetInitialLaunchSettings>, "GetInitialLaunchSettings"},
{76, C<&ISystemSettingsServer::SetInitialLaunchSettings>, "SetInitialLaunchSettings"},
{77, C<&ISystemSettingsServer::GetDeviceNickName>, "GetDeviceNickName"},
{78, C<&ISystemSettingsServer::SetDeviceNickName>, "SetDeviceNickName"},
{79, C<&ISystemSettingsServer::GetProductModel>, "GetProductModel"},
{80, nullptr, "GetLdnChannel"},
{81, nullptr, "SetLdnChannel"},
{82, nullptr, "AcquireTelemetryDirtyFlagEventHandle"},
{83, nullptr, "GetTelemetryDirtyFlags"},
{84, nullptr, "GetPtmBatteryLot"},
{85, nullptr, "SetPtmBatteryLot"},
{86, nullptr, "GetPtmFuelGaugeParameter"},
{87, nullptr, "SetPtmFuelGaugeParameter"},
{88, C<&ISystemSettingsServer::GetBluetoothEnableFlag>, "GetBluetoothEnableFlag"},
{89, C<&ISystemSettingsServer::SetBluetoothEnableFlag>, "SetBluetoothEnableFlag"},
{90, C<&ISystemSettingsServer::GetMiiAuthorId>, "GetMiiAuthorId"},
{91, nullptr, "SetShutdownRtcValue"},
{92, nullptr, "GetShutdownRtcValue"},
{93, nullptr, "AcquireFatalDirtyFlagEventHandle"},
{94, nullptr, "GetFatalDirtyFlags"},
{95, C<&ISystemSettingsServer::GetAutoUpdateEnableFlag>, "GetAutoUpdateEnableFlag"},
{96, C<&ISystemSettingsServer::SetAutoUpdateEnableFlag>, "SetAutoUpdateEnableFlag"},
{97, nullptr, "GetNxControllerSettings"},
{98, nullptr, "SetNxControllerSettings"},
{99, C<&ISystemSettingsServer::GetBatteryPercentageFlag>, "GetBatteryPercentageFlag"},
{100, C<&ISystemSettingsServer::SetBatteryPercentageFlag>, "SetBatteryPercentageFlag"},
{101, nullptr, "GetExternalRtcResetFlag"},
{102, nullptr, "SetExternalRtcResetFlag"},
{103, nullptr, "GetUsbFullKeyEnableFlag"},
{104, nullptr, "SetUsbFullKeyEnableFlag"},
{105, C<&ISystemSettingsServer::SetExternalSteadyClockInternalOffset>, "SetExternalSteadyClockInternalOffset"},
{106, C<&ISystemSettingsServer::GetExternalSteadyClockInternalOffset>, "GetExternalSteadyClockInternalOffset"},
{107, nullptr, "GetBacklightSettingsEx"},
{108, nullptr, "SetBacklightSettingsEx"},
{109, nullptr, "GetHeadphoneVolumeWarningCount"},
{110, nullptr, "SetHeadphoneVolumeWarningCount"},
{111, nullptr, "GetBluetoothAfhEnableFlag"},
{112, nullptr, "SetBluetoothAfhEnableFlag"},
{113, nullptr, "GetBluetoothBoostEnableFlag"},
{114, nullptr, "SetBluetoothBoostEnableFlag"},
{115, nullptr, "GetInRepairProcessEnableFlag"},
{116, nullptr, "SetInRepairProcessEnableFlag"},
{117, nullptr, "GetHeadphoneVolumeUpdateFlag"},
{118, nullptr, "SetHeadphoneVolumeUpdateFlag"},
{119, nullptr, "NeedsToUpdateHeadphoneVolume"},
{120, C<&ISystemSettingsServer::GetPushNotificationActivityModeOnSleep>, "GetPushNotificationActivityModeOnSleep"},
{121, C<&ISystemSettingsServer::SetPushNotificationActivityModeOnSleep>, "SetPushNotificationActivityModeOnSleep"},
{122, nullptr, "GetServiceDiscoveryControlSettings"},
{123, nullptr, "SetServiceDiscoveryControlSettings"},
{124, C<&ISystemSettingsServer::GetErrorReportSharePermission>, "GetErrorReportSharePermission"},
{125, C<&ISystemSettingsServer::SetErrorReportSharePermission>, "SetErrorReportSharePermission"},
{126, C<&ISystemSettingsServer::GetAppletLaunchFlags>, "GetAppletLaunchFlags"},
{127, C<&ISystemSettingsServer::SetAppletLaunchFlags>, "SetAppletLaunchFlags"},
{128, nullptr, "GetConsoleSixAxisSensorAccelerationBias"},
{129, nullptr, "SetConsoleSixAxisSensorAccelerationBias"},
{130, nullptr, "GetConsoleSixAxisSensorAngularVelocityBias"},
{131, nullptr, "SetConsoleSixAxisSensorAngularVelocityBias"},
{132, nullptr, "GetConsoleSixAxisSensorAccelerationGain"},
{133, nullptr, "SetConsoleSixAxisSensorAccelerationGain"},
{134, nullptr, "GetConsoleSixAxisSensorAngularVelocityGain"},
{135, nullptr, "SetConsoleSixAxisSensorAngularVelocityGain"},
{136, C<&ISystemSettingsServer::GetKeyboardLayout>, "GetKeyboardLayout"},
{137, C<&ISystemSettingsServer::SetKeyboardLayout>, "SetKeyboardLayout"},
{138, nullptr, "GetWebInspectorFlag"},
{139, nullptr, "GetAllowedSslHosts"},
{140, nullptr, "GetHostFsMountPoint"},
{141, nullptr, "GetRequiresRunRepairTimeReviser"},
{142, nullptr, "SetRequiresRunRepairTimeReviser"},
{143, nullptr, "SetBlePairingSettings"},
{144, nullptr, "GetBlePairingSettings"},
{145, nullptr, "GetConsoleSixAxisSensorAngularVelocityTimeBias"},
{146, nullptr, "SetConsoleSixAxisSensorAngularVelocityTimeBias"},
{147, nullptr, "GetConsoleSixAxisSensorAngularAcceleration"},
{148, nullptr, "SetConsoleSixAxisSensorAngularAcceleration"},
{149, C<&ISystemSettingsServer::GetRebootlessSystemUpdateVersion>, "GetRebootlessSystemUpdateVersion"},
{150, C<&ISystemSettingsServer::GetDeviceTimeZoneLocationUpdatedTime>, "GetDeviceTimeZoneLocationUpdatedTime"},
{151, C<&ISystemSettingsServer::SetDeviceTimeZoneLocationUpdatedTime>, "SetDeviceTimeZoneLocationUpdatedTime"},
{152, C<&ISystemSettingsServer::GetUserSystemClockAutomaticCorrectionUpdatedTime>, "GetUserSystemClockAutomaticCorrectionUpdatedTime"},
{153, C<&ISystemSettingsServer::SetUserSystemClockAutomaticCorrectionUpdatedTime>, "SetUserSystemClockAutomaticCorrectionUpdatedTime"},
{154, nullptr, "GetAccountOnlineStorageSettings"},
{155, nullptr, "SetAccountOnlineStorageSettings"},
{156, nullptr, "GetPctlReadyFlag"},
{157, nullptr, "SetPctlReadyFlag"},
{158, nullptr, "GetAnalogStickUserCalibrationL"},
{159, nullptr, "SetAnalogStickUserCalibrationL"},
{160, nullptr, "GetAnalogStickUserCalibrationR"},
{161, nullptr, "SetAnalogStickUserCalibrationR"},
{162, nullptr, "GetPtmBatteryVersion"},
{163, nullptr, "SetPtmBatteryVersion"},
{164, nullptr, "GetUsb30HostEnableFlag"},
{165, nullptr, "SetUsb30HostEnableFlag"},
{166, nullptr, "GetUsb30DeviceEnableFlag"},
{167, nullptr, "SetUsb30DeviceEnableFlag"},
{168, nullptr, "GetThemeId"},
{169, nullptr, "SetThemeId"},
{170, C<&ISystemSettingsServer::GetChineseTraditionalInputMethod>, "GetChineseTraditionalInputMethod"},
{171, nullptr, "SetChineseTraditionalInputMethod"},
{172, nullptr, "GetPtmCycleCountReliability"},
{173, nullptr, "SetPtmCycleCountReliability"},
{174, C<&ISystemSettingsServer::GetHomeMenuScheme>, "GetHomeMenuScheme"},
{175, nullptr, "GetThemeSettings"},
{176, nullptr, "SetThemeSettings"},
{177, nullptr, "GetThemeKey"},
{178, nullptr, "SetThemeKey"},
{179, nullptr, "GetZoomFlag"},
{180, nullptr, "SetZoomFlag"},
{181, nullptr, "GetT"},
{182, nullptr, "SetT"},
{183, C<&ISystemSettingsServer::GetPlatformRegion>, "GetPlatformRegion"},
{184, C<&ISystemSettingsServer::SetPlatformRegion>, "SetPlatformRegion"},
{185, C<&ISystemSettingsServer::GetHomeMenuSchemeModel>, "GetHomeMenuSchemeModel"},
{186, nullptr, "GetMemoryUsageRateFlag"},
{187, C<&ISystemSettingsServer::GetTouchScreenMode>, "GetTouchScreenMode"},
{188, C<&ISystemSettingsServer::SetTouchScreenMode>, "SetTouchScreenMode"},
{189, nullptr, "GetButtonConfigSettingsFull"},
{190, nullptr, "SetButtonConfigSettingsFull"},
{191, nullptr, "GetButtonConfigSettingsEmbedded"},
{192, nullptr, "SetButtonConfigSettingsEmbedded"},
{193, nullptr, "GetButtonConfigSettingsLeft"},
{194, nullptr, "SetButtonConfigSettingsLeft"},
{195, nullptr, "GetButtonConfigSettingsRight"},
{196, nullptr, "SetButtonConfigSettingsRight"},
{197, nullptr, "GetButtonConfigRegisteredSettingsEmbedded"},
{198, nullptr, "SetButtonConfigRegisteredSettingsEmbedded"},
{199, nullptr, "GetButtonConfigRegisteredSettings"},
{200, nullptr, "SetButtonConfigRegisteredSettings"},
{201, C<&ISystemSettingsServer::GetFieldTestingFlag>, "GetFieldTestingFlag"},
{202, nullptr, "SetFieldTestingFlag"},
{203, C<&ISystemSettingsServer::GetPanelCrcMode>, "GetPanelCrcMode"},
{204, C<&ISystemSettingsServer::SetPanelCrcMode>, "SetPanelCrcMode"},
{205, nullptr, "GetNxControllerSettingsEx"},
{206, nullptr, "SetNxControllerSettingsEx"},
{207, nullptr, "GetHearingProtectionSafeguardFlag"},
{208, nullptr, "SetHearingProtectionSafeguardFlag"},
{209, nullptr, "GetHearingProtectionSafeguardRemainingTime"},
{210, nullptr, "SetHearingProtectionSafeguardRemainingTime"},
{221, nullptr, "GetForceMonauralOutputFlag"}, //17.0.0+
{222, nullptr, "SetForceMonauralOutputFlag"}, //17.0.0+
{251, nullptr, "GetAccountIdentificationSettings"}, //18.0.0+
{252, nullptr, "SetAccountIdentificationSettings"}, //18.0.0+
{263, nullptr, "AcquireVphymDirtyFlagEventHandle"}, //20.0.0+
{264, nullptr, "GetVphymDirtyFlags"}, //20.0.0+
{282, nullptr, "ConvertToProductModel"}, //20.0.0+
{283, nullptr, "ConvertToProductModelName"}, //20.0.0+
{289, nullptr, "GetDefaultAccountIdentificationFlagSet"}, //20.0.0+
{300, nullptr, "AcquirePushNotificationDirtyFlagEventHandle"}, //20.0.0+
{301, nullptr, "GetPushNotificationDirtyFlags"}, //20.0.0+
{306, nullptr, "GetPinCodeReregistrationGuideAccounts"}, //20.0.0+
{307, nullptr, "SetPinCodeReregistrationGuideAccounts"}, //20.0.0+
{315, C<&ISystemSettingsServer::GetHttpAuthConfigs>, "GetHttpAuthConfigs"}, //21.0.0+
{319, C<&ISystemSettingsServer::GetAccountUserSettings>, "GetAccountUserSettings"}, //21.0.0+
{320, nullptr, "SetAccountUserSettings"}, //21.0.0+
{321, C<&ISystemSettingsServer::GetDefaultAccountUserSettings>, "GetDefaultAccountUserSettings"}, //21.0.0+
};
// clang-format on
RegisterHandlers(functions);
: ServiceFramework{system_, "set:sys"} {
SetupSettings();
m_system_settings.region_code =
@@ -179,7 +179,7 @@ private:
void StoreSettings();
void SetSaveNeeded();
Core::System& m_system;
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
SystemSettings m_system_settings{};
PrivateSettings m_private_settings{};
DeviceSettings m_device_settings{};