diff --git a/src/core/hle/service/am/service/common_state_getter.cpp b/src/core/hle/service/am/service/common_state_getter.cpp index f523bcd9e6..f20071156e 100644 --- a/src/core/hle/service/am/service/common_state_getter.cpp +++ b/src/core/hle/service/am/service/common_state_getter.cpp @@ -38,7 +38,7 @@ ICommonStateGetter::ICommonStateGetter(Core::System& system_, std::shared_ptr, "GetReaderLockAccessorEx"}, {32, D<&ICommonStateGetter::GetWriterLockAccessorEx>, "GetWriterLockAccessorEx"}, - {40, nullptr, "GetCradleFwVersion"}, + {40, D<&ICommonStateGetter::GetCradleFwVersion>, "GetCradleFwVersion"}, {50, D<&ICommonStateGetter::IsVrModeEnabled>, "IsVrModeEnabled"}, {51, D<&ICommonStateGetter::SetVrModeEnabled>, "SetVrModeEnabled"}, {52, D<&ICommonStateGetter::SetLcdBacklighOffEnabled>, "SetLcdBacklighOffEnabled"}, @@ -159,6 +159,17 @@ Result ICommonStateGetter::GetBootMode(Out out_boot_mode) { R_SUCCEED(); } +Result ICommonStateGetter::GetCradleFwVersion(OutArray out_version) { + LOG_DEBUG(Service_AM, "(STUBBED) called"); + + out_version[0] = 0; + out_version[1] = 0; + out_version[2] = 0; + out_version[3] = 0; + + R_SUCCEED(); +} + Result ICommonStateGetter::IsVrModeEnabled(Out out_is_vr_mode_enabled) { LOG_DEBUG(Service_AM, "called"); diff --git a/src/core/hle/service/am/service/common_state_getter.h b/src/core/hle/service/am/service/common_state_getter.h index 59a46fa94f..8c80e5bdbb 100644 --- a/src/core/hle/service/am/service/common_state_getter.h +++ b/src/core/hle/service/am/service/common_state_getter.h @@ -38,6 +38,7 @@ private: Result GetOperationMode(Out out_operation_mode); Result GetPerformanceMode(Out out_performance_mode); Result GetBootMode(Out out_boot_mode); + Result GetCradleFwVersion(OutArray out_version); Result IsVrModeEnabled(Out out_is_vr_mode_enabled); Result SetVrModeEnabled(bool is_vr_mode_enabled); Result SetLcdBacklighOffEnabled(bool is_lcd_backlight_off_enabled); diff --git a/src/core/hle/service/am/service/global_state_controller.cpp b/src/core/hle/service/am/service/global_state_controller.cpp index 3e3b61b0a0..aa8f852fea 100644 --- a/src/core/hle/service/am/service/global_state_controller.cpp +++ b/src/core/hle/service/am/service/global_state_controller.cpp @@ -14,7 +14,7 @@ IGlobalStateController::IGlobalStateController(Core::System& system_) static const FunctionInfo functions[] = { {0, nullptr, "RequestToEnterSleep"}, {1, nullptr, "EnterSleep"}, - {2, nullptr, "StartSleepSequence"}, + {2, D<&IGlobalStateController::StartSleepSequence>, "StartSleepSequence"}, {3, D<&IGlobalStateController::StartShutdownSequence>, "StartShutdownSequence"}, {4, D<&IGlobalStateController::StartRebootSequence>, "StartRebootSequence"}, {9, nullptr, "IsAutoPowerDownRequested"}, @@ -31,6 +31,13 @@ IGlobalStateController::IGlobalStateController(Core::System& system_) RegisterHandlers(functions); } +IGlobalStateController::~IGlobalStateController() = default; + +Result IGlobalStateController::StartSleepSequence(u8 a) { + LOG_WARNING(Service_AM, "(STUBBED) called, a={}", a); + R_SUCCEED(); +} + Result IGlobalStateController::StartShutdownSequence() { LOG_INFO(Service_AM, "called"); system.Exit(); @@ -43,8 +50,6 @@ Result IGlobalStateController::StartRebootSequence() { R_SUCCEED(); } -IGlobalStateController::~IGlobalStateController() = default; - Result IGlobalStateController::LoadAndApplyIdlePolicySettings() { LOG_WARNING(Service_AM, "(STUBBED) called"); R_SUCCEED(); diff --git a/src/core/hle/service/am/service/global_state_controller.h b/src/core/hle/service/am/service/global_state_controller.h index 83efb57dfc..e0f1d46cc1 100644 --- a/src/core/hle/service/am/service/global_state_controller.h +++ b/src/core/hle/service/am/service/global_state_controller.h @@ -18,6 +18,7 @@ public: ~IGlobalStateController() override; private: + Result StartSleepSequence(u8 a); Result StartShutdownSequence(); Result StartRebootSequence(); Result LoadAndApplyIdlePolicySettings(); diff --git a/src/core/hle/service/am/service/home_menu_functions.cpp b/src/core/hle/service/am/service/home_menu_functions.cpp index 25f78beb5a..47a10dceb3 100644 --- a/src/core/hle/service/am/service/home_menu_functions.cpp +++ b/src/core/hle/service/am/service/home_menu_functions.cpp @@ -23,7 +23,7 @@ IHomeMenuFunctions::IHomeMenuFunctions(Core::System& system_, std::shared_ptr, "GetPopFromGeneralChannelEvent"}, {30, nullptr, "GetHomeButtonWriterLockAccessor"}, {31, nullptr, "GetWriterLockAccessorEx"}, - {40, nullptr, "IsSleepEnabled"}, + {40, D<&IHomeMenuFunctions::IsSleepEnabled>, "IsSleepEnabled"}, {41, D<&IHomeMenuFunctions::IsRebootEnabled>, "IsRebootEnabled"}, {50, nullptr, "LaunchSystemApplet"}, {51, nullptr, "LaunchStarter"}, @@ -64,6 +64,12 @@ Result IHomeMenuFunctions::GetPopFromGeneralChannelEvent( R_SUCCEED(); } +Result IHomeMenuFunctions::IsSleepEnabled(Out out_is_sleep_enbaled) { + LOG_INFO(Service_AM, "called"); + *out_is_sleep_enbaled = true; + R_SUCCEED(); +} + Result IHomeMenuFunctions::IsRebootEnabled(Out out_is_reboot_enbaled) { LOG_INFO(Service_AM, "called"); *out_is_reboot_enbaled = true; diff --git a/src/core/hle/service/am/service/home_menu_functions.h b/src/core/hle/service/am/service/home_menu_functions.h index f56094aa9d..e393898e35 100644 --- a/src/core/hle/service/am/service/home_menu_functions.h +++ b/src/core/hle/service/am/service/home_menu_functions.h @@ -24,6 +24,7 @@ private: Result LockForeground(); Result UnlockForeground(); Result GetPopFromGeneralChannelEvent(OutCopyHandle out_event); + Result IsSleepEnabled(Out out_is_sleep_enbaled); Result IsRebootEnabled(Out out_is_reboot_enbaled); Result IsForceTerminateApplicationDisabledForDebug( Out out_is_force_terminate_application_disabled_for_debug); diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp index 60290f1a6e..2bc6361bb7 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp @@ -67,7 +67,7 @@ FSP_SRV::FSP_SRV(Core::System& system_) {24, nullptr, "RegisterSaveDataFileSystemAtomicDeletion"}, {25, nullptr, "DeleteSaveDataFileSystemBySaveDataSpaceId"}, {26, nullptr, "FormatSdCardDryRun"}, - {27, nullptr, "IsExFatSupported"}, + {27, D<&FSP_SRV::IsExFatSupported>, "IsExFatSupported"}, {28, nullptr, "DeleteSaveDataFileSystemBySaveDataAttribute"}, {30, nullptr, "OpenGameCardStorage"}, {31, nullptr, "OpenGameCardFileSystem"}, @@ -235,6 +235,14 @@ Result FSP_SRV::CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_crea save_struct)); } +Result FSP_SRV::IsExFatSupported(Out out_is_supported) { + LOG_WARNING(Service_FS, "(STUBBED) called"); + + *out_is_supported = true; + + R_SUCCEED(); +} + Result FSP_SRV::CreateSaveDataFileSystemBySystemSaveDataId( FileSys::SaveDataAttribute save_struct, FileSys::SaveDataCreationInfo save_create_struct) { LOG_DEBUG(Service_FS, "called save_struct = {}", save_struct.DebugInfo()); diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.h b/src/core/hle/service/filesystem/fsp/fsp_srv.h index b565cace04..865fdae7c4 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.h +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.h @@ -53,6 +53,7 @@ private: Result OpenSdCardFileSystem(OutInterface out_interface); Result CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_create_struct, FileSys::SaveDataAttribute save_struct, u128 uid); + Result IsExFatSupported(Out out_is_supported); Result CreateSaveDataFileSystemBySystemSaveDataId( FileSys::SaveDataAttribute save_struct, FileSys::SaveDataCreationInfo save_create_struct); Result OpenSaveDataFileSystem(OutInterface out_interface, diff --git a/src/core/hle/service/ldn/sf_monitor_service.cpp b/src/core/hle/service/ldn/sf_monitor_service.cpp index 9e6736ff2c..0a23d6b8ea 100644 --- a/src/core/hle/service/ldn/sf_monitor_service.cpp +++ b/src/core/hle/service/ldn/sf_monitor_service.cpp @@ -30,10 +30,10 @@ Result ISfMonitorService::Initialize(Out out_value) { } Result ISfMonitorService::GetGroupInfo( - OutLargeData out_group_info) { + GroupInfo in_group_info, OutLargeData out_group_info) { LOG_WARNING(Service_LDN, "(STUBBED) called"); - *out_group_info = GroupInfo{}; + memcpy(out_group_info, &in_group_info, sizeof(GroupInfo)); R_SUCCEED(); } diff --git a/src/core/hle/service/ldn/sf_monitor_service.h b/src/core/hle/service/ldn/sf_monitor_service.h index d021152010..5878b030c2 100644 --- a/src/core/hle/service/ldn/sf_monitor_service.h +++ b/src/core/hle/service/ldn/sf_monitor_service.h @@ -20,7 +20,8 @@ public: private: Result Initialize(Out out_value); - Result GetGroupInfo(OutLargeData out_group_info); + Result GetGroupInfo(GroupInfo in_group_info, + OutLargeData out_group_info); }; } // namespace Service::LDN diff --git a/src/core/hle/service/ldn/sf_service_monitor.cpp b/src/core/hle/service/ldn/sf_service_monitor.cpp index 33e3c1d69a..e35754d127 100644 --- a/src/core/hle/service/ldn/sf_service_monitor.cpp +++ b/src/core/hle/service/ldn/sf_service_monitor.cpp @@ -40,10 +40,10 @@ Result ISfServiceMonitor::Initialize(Out out_value) { } Result ISfServiceMonitor::GetGroupInfo( - OutLargeData out_group_info) { + GroupInfo in_group_info, OutLargeData out_group_info) { LOG_WARNING(Service_LDN, "(STUBBED) called"); - *out_group_info = GroupInfo{}; + memcpy(out_group_info, &in_group_info, sizeof(GroupInfo)); R_SUCCEED(); } diff --git a/src/core/hle/service/ldn/sf_service_monitor.h b/src/core/hle/service/ldn/sf_service_monitor.h index 3cfc5005eb..90cdd5cdd4 100644 --- a/src/core/hle/service/ldn/sf_service_monitor.h +++ b/src/core/hle/service/ldn/sf_service_monitor.h @@ -20,7 +20,8 @@ public: private: Result Initialize(Out out_value); - Result GetGroupInfo(OutLargeData out_group_info); + Result GetGroupInfo(GroupInfo in_group_info, + OutLargeData out_group_info); }; } // namespace Service::LDN diff --git a/src/core/hle/service/nifm/nifm.cpp b/src/core/hle/service/nifm/nifm.cpp index 060fe86dd8..2202e3d899 100644 --- a/src/core/hle/service/nifm/nifm.cpp +++ b/src/core/hle/service/nifm/nifm.cpp @@ -507,7 +507,7 @@ void IGeneralService::GetCurrentIpConfigInfo(HLERequestContext& ctx) { } void IGeneralService::IsWirelessCommunicationEnabled(HLERequestContext& ctx) { - LOG_WARNING(Service_NIFM, "(STUBBED) called"); + LOG_WARNING(Service_NIFM, "called"); IPC::ResponseBuilder rb{ctx, 3}; rb.Push(ResultSuccess); diff --git a/src/core/hle/service/set/settings_types.h b/src/core/hle/service/set/settings_types.h index 848722e196..8cf34efc1a 100644 --- a/src/core/hle/service/set/settings_types.h +++ b/src/core/hle/service/set/settings_types.h @@ -509,4 +509,13 @@ struct TvSettings { }; static_assert(sizeof(TvSettings) == 0x20, "TvSettings is an invalid size"); +/// This is nn::settings::system::RebootlessSystemUpdateVersion +struct RebootlessSystemUpdateVersion { + u32 version; + u8 reserved[0x1c]; + char display_version[0x20]; +}; +static_assert(sizeof(RebootlessSystemUpdateVersion) == 0x40, + "RebootlessSystemUpdateVersion is an invalid size"); + } // namespace Service::Set diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp index a5a39fcc2b..254fdd2e96 100644 --- a/src/core/hle/service/set/system_settings_server.cpp +++ b/src/core/hle/service/set/system_settings_server.cpp @@ -238,7 +238,7 @@ ISystemSettingsServer::ISystemSettingsServer(Core::System& system_) {146, nullptr, "SetConsoleSixAxisSensorAngularVelocityTimeBias"}, {147, nullptr, "GetConsoleSixAxisSensorAngularAcceleration"}, {148, nullptr, "SetConsoleSixAxisSensorAngularAcceleration"}, - {149, nullptr, "GetRebootlessSystemUpdateVersion"}, + {149, C<&ISystemSettingsServer::GetRebootlessSystemUpdateVersion>, "GetRebootlessSystemUpdateVersion"}, {150, C<&ISystemSettingsServer::GetDeviceTimeZoneLocationUpdatedTime>, "GetDeviceTimeZoneLocationUpdatedTime"}, {151, C<&ISystemSettingsServer::SetDeviceTimeZoneLocationUpdatedTime>, "SetDeviceTimeZoneLocationUpdatedTime"}, {152, C<&ISystemSettingsServer::GetUserSystemClockAutomaticCorrectionUpdatedTime>, "GetUserSystemClockAutomaticCorrectionUpdatedTime"}, @@ -1194,6 +1194,16 @@ Result ISystemSettingsServer::SetKeyboardLayout(KeyboardLayout keyboard_layout) R_SUCCEED(); } +Result ISystemSettingsServer::GetRebootlessSystemUpdateVersion( + Out out_rebootless_system_update) { + LOG_INFO(Service_SET, "(STUBBED) called"); + + out_rebootless_system_update->version = 0; + strcpy(out_rebootless_system_update->display_version, "0.0.0"); + + R_SUCCEED(); +} + Result ISystemSettingsServer::GetDeviceTimeZoneLocationUpdatedTime( Out out_time_point) { LOG_INFO(Service_SET, "called"); diff --git a/src/core/hle/service/set/system_settings_server.h b/src/core/hle/service/set/system_settings_server.h index 993e5de7d0..7e16300c30 100644 --- a/src/core/hle/service/set/system_settings_server.h +++ b/src/core/hle/service/set/system_settings_server.h @@ -136,6 +136,8 @@ public: Result SetAppletLaunchFlags(u32 applet_launch_flag); Result GetKeyboardLayout(Out out_keyboard_layout); Result SetKeyboardLayout(KeyboardLayout keyboard_layout); + Result GetRebootlessSystemUpdateVersion( + Out out_rebootless_system_update); Result GetDeviceTimeZoneLocationUpdatedTime( Out out_time_point); Result SetDeviceTimeZoneLocationUpdatedTime(