applet: Updated for 15.0.0. Various fixes and added __nx_applet_init_timeout.

This commit is contained in:
yellows8 2022-11-01 14:27:11 -04:00
parent cea3018de6
commit 75290f912e
No known key found for this signature in database
GPG Key ID: 0AF90DA3F1E60E43
2 changed files with 78 additions and 56 deletions

View File

@ -344,10 +344,10 @@ Service* appletGetServiceSession_Proxy(void);
/// Gets the Service object for IAppletCommonFunctions. Only initialized with AppletType_SystemApplet, AppletType_LibraryApplet, or AppletType_OverlayApplet, on [7.0.0+].
Service* appletGetServiceSession_AppletCommonFunctions(void);
/// Gets the Service object for I*Functions, specific to each AppletType (IApplicationFunctions for AppletType_*Application). Not initialized with AppletType_LibraryApplet.
/// Gets the Service object for I*Functions, specific to each AppletType (IApplicationFunctions for AppletType_*Application). Not initialized with AppletType_LibraryApplet pre-15.0.0. On [15.0.0+] with AppletType_LibraryApplet this returns the object for IHomeMenuFunctions.
Service* appletGetServiceSession_Functions(void);
/// Gets the Service object for IGlobalStateController. Only initialized with AppletType_SystemApplet.
/// Gets the Service object for IGlobalStateController. Only initialized with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
Service* appletGetServiceSession_GlobalStateController(void);
/// Gets the Service object for IApplicationCreator. Only initialized with AppletType_SystemApplet.
@ -1732,37 +1732,37 @@ Result appletPrepareForJit(void);
///@}
///@name IHomeMenuFunctions: IFunctions for AppletType_SystemApplet.
///@name IHomeMenuFunctions: IFunctions for AppletType_SystemApplet and on [15.0.0+] for AppletType_LibraryApplet.
///@{
/**
* @brief RequestToGetForeground
* @note Only available with AppletType_SystemApplet.
* @note Only available with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet.
*/
Result appletRequestToGetForeground(void);
/**
* @brief LockForeground
* @note Only available with AppletType_SystemApplet.
* @note Only available with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet.
*/
Result appletLockForeground(void);
/**
* @brief UnlockForeground
* @note Only available with AppletType_SystemApplet.
* @note Only available with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet.
*/
Result appletUnlockForeground(void);
/**
* @brief Pops a storage from the general channel.
* @note Only available with AppletType_SystemApplet.
* @note Only available with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet.
* @param[out] s Storage object.
*/
Result appletPopFromGeneralChannel(AppletStorage *s);
/**
* @brief Gets an Event which is signaled when a new storage is available with \ref appletPopFromGeneralChannel where previously no storage was available, this event is automatically cleared by the system once the last storage is popped.
* @note Only available with AppletType_SystemApplet.
* @note Only available with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet.
* @note The Event must be closed by the user once finished with it.
* @param[out] out_event Output Event with autoclear=false.
*/
@ -1770,7 +1770,7 @@ Result appletGetPopFromGeneralChannelEvent(Event *out_event);
/**
* @brief Gets a \ref AppletLockAccessor for HomeButtonWriter.
* @note Only available with AppletType_SystemApplet.
* @note Only available with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet.
* @note Similar to using \ref appletGetWriterLockAccessorEx with inval=0.
* @param a LockAccessor object.
*/
@ -1778,14 +1778,14 @@ Result appletGetHomeButtonWriterLockAccessor(AppletLockAccessor *a);
/**
* @brief IsSleepEnabled
* @note Only available with AppletType_SystemApplet on [11.0.0+].
* @note Only available with AppletType_SystemApplet on [11.0.0+], or on [15.0.0+] with AppletType_LibraryApplet.
* @param[out] out Output flag.
*/
Result appletIsSleepEnabled(bool *out);
/**
* @brief PopRequestLaunchApplicationForDebug
* @note Only available with AppletType_SystemApplet on [6.0.0+].
* @note Only available with AppletType_SystemApplet on [6.0.0+], or on [15.0.0+] with AppletType_LibraryApplet.
* @param[out] uids Output array of \ref AccountUid.
* @param[in] count Size of the uids array in entries, must be at least the size stored in state.
* @param[out] application_id Output ApplicationId.
@ -1795,21 +1795,21 @@ Result appletPopRequestLaunchApplicationForDebug(AccountUid *uids, s32 count, u6
/**
* @brief IsForceTerminateApplicationDisabledForDebug
* @note Only available with AppletType_SystemApplet on [9.0.0+].
* @note Only available with AppletType_SystemApplet on [9.0.0+], or on [15.0.0+] with AppletType_LibraryApplet.
* @param[out] out Output flag. 0 when DebugMode is not enabled, otherwise this is loaded from a system-setting.
*/
Result appletIsForceTerminateApplicationDisabledForDebug(bool *out);
/**
* @brief Launches DevMenu and the dev Overlay-applet. This will enter an infinite-sleep-loop on success.
* @note Only available with AppletType_SystemApplet on [8.0.0+].
* @note Only available with AppletType_SystemApplet on [8.0.0+], or on [15.0.0+] with AppletType_LibraryApplet.
* @note This verifies that DebugMode is enabled, then uses a ns cmd. That cmd then loads the system-settings for these two ProgramIds (which normally only exist on devunits), and verifies that these programs are installed + launches them.
*/
Result appletLaunchDevMenu(void);
/**
* @brief SetLastApplicationExitReason
* @note Only available with AppletType_SystemApplet on [11.0.0+].
* @note Only available with AppletType_SystemApplet on [11.0.0+], or on [15.0.0+] with AppletType_LibraryApplet.
* @param[in] reason Reason
*/
Result appletSetLastApplicationExitReason(s32 reason);
@ -1821,65 +1821,65 @@ Result appletSetLastApplicationExitReason(s32 reason);
/**
* @brief Start the sequence for entering sleep-mode.
* @note Only available with AppletType_SystemApplet.
* @note Only available with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
* @param[in] flag Flag, official sw uses hard-coded value = true.
*/
Result appletStartSleepSequence(bool flag);
/**
* @brief Start the system-shutdown sequence.
* @note Only available with AppletType_SystemApplet.
* @note Only available with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
*/
Result appletStartShutdownSequence(void);
/**
* @brief Start the system-reboot sequence.
* @note Only available with AppletType_SystemApplet.
* @note Only available with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
*/
Result appletStartRebootSequence(void);
/**
* @brief IsAutoPowerDownRequested. Uses an idle:sys cmd internally.
* @note Only available with AppletType_SystemApplet on [7.0.0+].
* @note Only available with AppletType_SystemApplet on [7.0.0+], or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
* @param[out] out Output flag.
*/
Result appletIsAutoPowerDownRequested(bool *out);
/**
* @brief LoadAndApplyIdlePolicySettings. Uses an idle:sys cmd internally.
* @note Only available with AppletType_SystemApplet.
* @note Only available with AppletType_SystemApplet, or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
*/
Result appletLoadAndApplyIdlePolicySettings(void);
/**
* @brief NotifyCecSettingsChanged. Uses an omm cmd internally.
* @note Only available with AppletType_SystemApplet on [2.0.0+].
* @note Only available with AppletType_SystemApplet on [2.0.0+], or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
*/
Result appletNotifyCecSettingsChanged(void);
/**
* @brief Sets the DefaultHomeButtonLongPressTime.
* @note Only available with AppletType_SystemApplet on [3.0.0+].
* @note Only available with AppletType_SystemApplet on [3.0.0+], or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
* @param[in] val Input value.
*/
Result appletSetDefaultHomeButtonLongPressTime(s64 val);
/**
* @brief UpdateDefaultDisplayResolution. Uses an omm cmd internally.
* @note Only available with AppletType_SystemApplet on [3.0.0+].
* @note Only available with AppletType_SystemApplet on [3.0.0+], or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
*/
Result appletUpdateDefaultDisplayResolution(void);
/**
* @brief ShouldSleepOnBoot. Uses an omm cmd internally.
* @note Only available with AppletType_SystemApplet on [3.0.0+].
* @note Only available with AppletType_SystemApplet on [3.0.0+], or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
* @param[out] out Output flag.
*/
Result appletShouldSleepOnBoot(bool *out);
/**
* @brief Gets an Event which is signaled for HdcpAuthenticationFailed.
* @note Only available with AppletType_SystemApplet on [4.0.0+].
* @note Only available with AppletType_SystemApplet on [4.0.0+], or on [15.0.0+] with AppletType_LibraryApplet/AppletType_OverlayApplet.
* @note The Event must be closed by the user once finished with it.
* @param[out] out_event Output Event with autoclear=false.
*/

View File

@ -13,6 +13,8 @@ __attribute__((weak)) AppletAttribute __nx_applet_AppletAttribute;
__attribute__((weak)) u32 __nx_applet_PerformanceConfiguration[2] = {/*0x92220008*//*0x20004*//*0x92220007*/0, 0};
//// Controls whether to use applet exit cmds during \ref appletExit. 0 (default): Only run exit cmds when running under a NSO. 1: Use exit cmds regardless. >1: Skip exit cmds.
__attribute__((weak)) u32 __nx_applet_exit_mode = 0;
/// Controls the timeout in nanoseconds to use during LibraryApplet initialization in appletInitialize, with diagAbortWithResult being used if the timeout is reached.
__attribute__((weak)) u64 __nx_applet_init_timeout = 864000000000000000ULL;
static Service g_appletSrv;
static Service g_appletProxySession;
@ -152,6 +154,11 @@ Result _appletInitialize(void) {
if (R_SUCCEEDED(rc)) {
#define AM_BUSY_ERROR 0x19280
u64 start_tick = 0;
u64 timeout = __nx_applet_init_timeout;
if (__nx_applet_type == AppletType_LibraryApplet)
start_tick = armGetSystemTick();
do {
u32 cmd_id;
@ -176,7 +183,12 @@ Result _appletInitialize(void) {
rc = _appletOpenLibraryAppletProxy(&g_appletProxySession, CUR_PROCESS_HANDLE, attr);
if (R_VALUE(rc) == AM_BUSY_ERROR) {
svcSleepThread(10000000);
svcSleepThread(100000000);
if (__nx_applet_type == AppletType_LibraryApplet && armTicksToNs(armGetSystemTick() - start_tick) >= timeout)
diagAbortWithResult(MAKERESULT(Module_Libnx, LibnxError_Timeout));
// Official sw also has code for calling a funcptr on the first AM_BUSY_ERROR (instead of sleep) where the elapsed time since start_tick is >=1 second, but we don't impl that.
}
} while (R_VALUE(rc) == AM_BUSY_ERROR);
@ -211,6 +223,16 @@ Result _appletInitialize(void) {
rc = _appletCmdGetSession(&g_appletProxySession, &g_appletIProcessWindingController, 10);
}
if (R_SUCCEEDED(rc) && hosversionAtLeast(15,0,0)) { // [15.0.0+]
// GetHomeMenuFunctions
if (__nx_applet_type == AppletType_LibraryApplet)
rc = _appletCmdGetSession(&g_appletProxySession, &g_appletIFunctions, 22);
// GetGlobalStateController
if (R_SUCCEEDED(rc) && (__nx_applet_type == AppletType_LibraryApplet || __nx_applet_type == AppletType_OverlayApplet))
rc = _appletCmdGetSession(&g_appletProxySession, &g_appletIGlobalStateController, 23);
}
// GetLibraryAppletCreator
if (R_SUCCEEDED(rc))
rc = _appletCmdGetSession(&g_appletProxySession, &g_appletILibraryAppletCreator, 11);
@ -267,7 +289,7 @@ Result _appletInitialize(void) {
break;
}
if (msg != 0xF)
if (msg != AppletMessage_FocusStateChanged)
continue;
rc = _appletGetCurrentFocusState(&g_appletFocusState);
@ -301,7 +323,7 @@ Result _appletInitialize(void) {
rc = _appletSetPerformanceModeChangedNotification(1);
// Official apps aren't known to use apmSetPerformanceConfiguration with mode=1.
if (R_SUCCEEDED(rc)) {
if (R_SUCCEEDED(rc) && __nx_applet_type == AppletType_Application) {
u32 i;
for (i=0; i<2; i++)
{
@ -405,19 +427,19 @@ void _appletCleanup(void) {
serviceClose(&g_appletICommonStateGetter);
serviceClose(&g_appletILibraryAppletCreator);
if (__nx_applet_type == AppletType_SystemApplet) {
if (__nx_applet_type == AppletType_SystemApplet)
serviceClose(&g_appletIApplicationCreator);
serviceClose(&g_appletIGlobalStateController);
}
if (__nx_applet_type != AppletType_LibraryApplet)
serviceClose(&g_appletIFunctions);
if (__nx_applet_type == AppletType_LibraryApplet) {
serviceClose(&g_appletIProcessWindingController);
serviceClose(&g_appletILibraryAppletSelfAccessor);
}
if (__nx_applet_type == AppletType_SystemApplet || __nx_applet_type == AppletType_LibraryApplet || __nx_applet_type == AppletType_OverlayApplet)
serviceClose(&g_appletIGlobalStateController);
serviceClose(&g_appletIFunctions);
serviceClose(&g_appletIAppletCommonFunctions);
serviceClose(&g_appletProxySession);
@ -599,14 +621,14 @@ proto { \
#define IPC_MAKE_CMD_IMPL_INITEXPR(proto,_s,_rid,func,initexpr,...) \
proto { \
if (!serviceIsActive((_s)) || initexpr) \
if (!serviceIsActive((_s)) || (initexpr)) \
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); \
return func((_s), ##__VA_ARGS__, (_rid)); \
}
#define IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(proto,_s,_rid,func,initexpr,_hosver,...) \
proto { \
if (!serviceIsActive((_s)) || initexpr) \
if (!serviceIsActive((_s)) || (initexpr)) \
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); \
if (hosversionBefore _hosver) \
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); \
@ -2359,16 +2381,16 @@ IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletPrepareForJit(void),
// IHomeMenuFunctions
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletRequestToGetForeground(void), &g_appletIFunctions, 10, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletLockForeground(void), &g_appletIFunctions, 11, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletUnlockForeground(void), &g_appletIFunctions, 12, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletPopFromGeneralChannel(AppletStorage *s), &g_appletIFunctions, 20, _appletCmdNoInOutStorage, __nx_applet_type != AppletType_SystemApplet, s)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletGetPopFromGeneralChannelEvent(Event *out_event), &g_appletIFunctions, 21, _appletCmdGetEvent, __nx_applet_type != AppletType_SystemApplet, out_event, false)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletGetHomeButtonWriterLockAccessor(AppletLockAccessor *a), &g_appletIFunctions, 30, _appletGetHomeButtonRwLockAccessor, __nx_applet_type != AppletType_SystemApplet, a)
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletIsSleepEnabled(bool *out), &g_appletIFunctions, 40, _appletCmdNoInOutBool, __nx_applet_type != AppletType_SystemApplet, (11,0,0), out)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletRequestToGetForeground(void), &g_appletIFunctions, 10, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletLockForeground(void), &g_appletIFunctions, 11, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletUnlockForeground(void), &g_appletIFunctions, 12, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletPopFromGeneralChannel(AppletStorage *s), &g_appletIFunctions, 20, _appletCmdNoInOutStorage, __nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet, s)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletGetPopFromGeneralChannelEvent(Event *out_event), &g_appletIFunctions, 21, _appletCmdGetEvent, __nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet, out_event, false)
IPC_MAKE_CMD_IMPL_INITEXPR(Result appletGetHomeButtonWriterLockAccessor(AppletLockAccessor *a), &g_appletIFunctions, 30, _appletGetHomeButtonRwLockAccessor, __nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet, a)
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletIsSleepEnabled(bool *out), &g_appletIFunctions, 40, _appletCmdNoInOutBool, __nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet, (11,0,0), out)
Result appletPopRequestLaunchApplicationForDebug(AccountUid *uids, s32 count, u64 *application_id, s32 *total_out) {
if (__nx_applet_type != AppletType_SystemApplet)
if (__nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet)
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
if (hosversionBefore(6,0,0))
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
@ -2388,13 +2410,13 @@ Result appletPopRequestLaunchApplicationForDebug(AccountUid *uids, s32 count, u6
return rc;
}
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletIsForceTerminateApplicationDisabledForDebug(bool *out), &g_appletIFunctions, 110, _appletCmdNoInOutBool, __nx_applet_type != AppletType_SystemApplet, (9,0,0), out)
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletSetLastApplicationExitReason(s32 reason), &g_appletIFunctions, 1000, _appletCmdInU32NoOut, __nx_applet_type != AppletType_SystemApplet, (11,0,0), reason)
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletIsForceTerminateApplicationDisabledForDebug(bool *out), &g_appletIFunctions, 110, _appletCmdNoInOutBool, __nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet, (9,0,0), out)
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletSetLastApplicationExitReason(s32 reason), &g_appletIFunctions, 1000, _appletCmdInU32NoOut, __nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet, (11,0,0), reason)
Result appletLaunchDevMenu(void) {
Result rc=0;
if (__nx_applet_type != AppletType_SystemApplet)
if (__nx_applet_type != AppletType_SystemApplet && __nx_applet_type != AppletType_LibraryApplet)
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
if (hosversionBefore(8,0,0))
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
@ -2406,16 +2428,16 @@ Result appletLaunchDevMenu(void) {
// IGlobalStateController
IPC_MAKE_CMD_IMPL_INITEXPR( Result appletStartSleepSequence(bool flag), &g_appletIGlobalStateController, 2, _appletCmdInBoolNoOut, __nx_applet_type != AppletType_SystemApplet, flag)
IPC_MAKE_CMD_IMPL_INITEXPR( Result appletStartShutdownSequence(void), &g_appletIGlobalStateController, 3, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet)
IPC_MAKE_CMD_IMPL_INITEXPR( Result appletStartRebootSequence(void), &g_appletIGlobalStateController, 4, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet)
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletIsAutoPowerDownRequested(bool *out), &g_appletIGlobalStateController, 9, _appletCmdNoInOutBool, __nx_applet_type != AppletType_SystemApplet, (7,0,0), out)
IPC_MAKE_CMD_IMPL_INITEXPR( Result appletLoadAndApplyIdlePolicySettings(void), &g_appletIGlobalStateController, 10, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet)
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletNotifyCecSettingsChanged(void), &g_appletIGlobalStateController, 11, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet, (2,0,0))
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletSetDefaultHomeButtonLongPressTime(s64 val), &g_appletIGlobalStateController, 12, _appletCmdInU64NoOut, __nx_applet_type != AppletType_SystemApplet, (3,0,0), val)
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletUpdateDefaultDisplayResolution(void), &g_appletIGlobalStateController, 13, _appletCmdNoIO, __nx_applet_type != AppletType_SystemApplet, (3,0,0))
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletShouldSleepOnBoot(bool *out), &g_appletIGlobalStateController, 14, _appletCmdNoInOutBool, __nx_applet_type != AppletType_SystemApplet, (3,0,0), out)
IPC_MAKE_CMD_IMPL_INITEXPR_HOSVER(Result appletGetHdcpAuthenticationFailedEvent(Event *out_event), &g_appletIGlobalStateController, 15, _appletCmdGetEvent, __nx_applet_type != AppletType_SystemApplet, (4,0,0), out_event, false)
IPC_MAKE_CMD_IMPL( Result appletStartSleepSequence(bool flag), &g_appletIGlobalStateController, 2, _appletCmdInBoolNoOut, flag)
IPC_MAKE_CMD_IMPL( Result appletStartShutdownSequence(void), &g_appletIGlobalStateController, 3, _appletCmdNoIO )
IPC_MAKE_CMD_IMPL( Result appletStartRebootSequence(void), &g_appletIGlobalStateController, 4, _appletCmdNoIO )
IPC_MAKE_CMD_IMPL_HOSVER(Result appletIsAutoPowerDownRequested(bool *out), &g_appletIGlobalStateController, 9, _appletCmdNoInOutBool, (7,0,0), out)
IPC_MAKE_CMD_IMPL( Result appletLoadAndApplyIdlePolicySettings(void), &g_appletIGlobalStateController, 10, _appletCmdNoIO )
IPC_MAKE_CMD_IMPL_HOSVER(Result appletNotifyCecSettingsChanged(void), &g_appletIGlobalStateController, 11, _appletCmdNoIO, (2,0,0))
IPC_MAKE_CMD_IMPL_HOSVER(Result appletSetDefaultHomeButtonLongPressTime(s64 val), &g_appletIGlobalStateController, 12, _appletCmdInU64NoOut, (3,0,0), val)
IPC_MAKE_CMD_IMPL_HOSVER(Result appletUpdateDefaultDisplayResolution(void), &g_appletIGlobalStateController, 13, _appletCmdNoIO, (3,0,0))
IPC_MAKE_CMD_IMPL_HOSVER(Result appletShouldSleepOnBoot(bool *out), &g_appletIGlobalStateController, 14, _appletCmdNoInOutBool, (3,0,0), out)
IPC_MAKE_CMD_IMPL_HOSVER(Result appletGetHdcpAuthenticationFailedEvent(Event *out_event), &g_appletIGlobalStateController, 15, _appletCmdGetEvent, (4,0,0), out_event, false)
// IApplicationCreator