apps/nshlib: Add new NSH command, 'pmconfig'.
This commit is contained in:
parent
25c59ccbfe
commit
42aaecf1d1
@ -430,6 +430,11 @@ config NSH_DISABLE_PASSWD
|
|||||||
default y
|
default y
|
||||||
depends on NSH_LOGIN_PASSWD && FS_WRITABLE && !FSUTILS_PASSWD_READONLY
|
depends on NSH_LOGIN_PASSWD && FS_WRITABLE && !FSUTILS_PASSWD_READONLY
|
||||||
|
|
||||||
|
config NSH_DISABLE_PMCONFIG
|
||||||
|
bool "Disable pmconfig"
|
||||||
|
default n
|
||||||
|
depends on PM
|
||||||
|
|
||||||
config NSH_DISABLE_POWEROFF
|
config NSH_DISABLE_POWEROFF
|
||||||
bool "Disable poweroff"
|
bool "Disable poweroff"
|
||||||
default n if !DEFAULT_SMALL
|
default n if !DEFAULT_SMALL
|
||||||
|
@ -1163,6 +1163,10 @@ int cmd_irqinfo(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
|||||||
int cmd_poweroff(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
int cmd_poweroff(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_PM) && !defined(CONFIG_NSH_DISABLE_PMCONFIG)
|
||||||
|
int cmd_pmconfig(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_BOARDCTL_RESET) && !defined(CONFIG_NSH_DISABLE_REBOOT)
|
#if defined(CONFIG_BOARDCTL_RESET) && !defined(CONFIG_NSH_DISABLE_REBOOT)
|
||||||
int cmd_reboot(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
int cmd_reboot(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
|
||||||
#endif
|
#endif
|
||||||
|
@ -378,6 +378,10 @@ static const struct cmdmap_s g_cmdmap[] =
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_PM) && !defined(CONFIG_NSH_DISABLE_PMCONFIG)
|
||||||
|
{ "pmconfig", cmd_pmconfig, 1, 3, "[stay|relax] [normal|idle|standby|sleep]" },
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_BOARDCTL_POWEROFF) && !defined(CONFIG_NSH_DISABLE_POWEROFF)
|
#if defined(CONFIG_BOARDCTL_POWEROFF) && !defined(CONFIG_NSH_DISABLE_POWEROFF)
|
||||||
{ "poweroff", cmd_poweroff, 1, 2, NULL },
|
{ "poweroff", cmd_poweroff, 1, 2, NULL },
|
||||||
#endif
|
#endif
|
||||||
|
@ -181,6 +181,99 @@ int cmd_shutdown(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_BOARDCTL_POWEROFF && !CONFIG_NSH_DISABLE_SHUTDOWN */
|
#endif /* CONFIG_BOARDCTL_POWEROFF && !CONFIG_NSH_DISABLE_SHUTDOWN */
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: cmd_pmconfig
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(CONFIG_PM) && !defined(CONFIG_NSH_DISABLE_PMCONFIG)
|
||||||
|
int cmd_pmconfig(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
||||||
|
{
|
||||||
|
struct boardioc_pm_ctrl_s ctrl =
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
if (argc == 1)
|
||||||
|
{
|
||||||
|
int current_state;
|
||||||
|
int normal_count;
|
||||||
|
int idle_count;
|
||||||
|
int standby_count;
|
||||||
|
int sleep_count;
|
||||||
|
|
||||||
|
ctrl.action = BOARDIOC_PM_QUERYSTATE;
|
||||||
|
boardctl(BOARDIOC_PM_CONTROL, (uintptr_t)&ctrl);
|
||||||
|
current_state = ctrl.state;
|
||||||
|
|
||||||
|
ctrl.action = BOARDIOC_PM_STAYCOUNT;
|
||||||
|
ctrl.state = PM_NORMAL;
|
||||||
|
boardctl(BOARDIOC_PM_CONTROL, (uintptr_t)&ctrl);
|
||||||
|
normal_count = ctrl.count;
|
||||||
|
|
||||||
|
ctrl.state = PM_IDLE;
|
||||||
|
boardctl(BOARDIOC_PM_CONTROL, (uintptr_t)&ctrl);
|
||||||
|
idle_count = ctrl.count;
|
||||||
|
|
||||||
|
ctrl.state = PM_STANDBY;
|
||||||
|
boardctl(BOARDIOC_PM_CONTROL, (uintptr_t)&ctrl);
|
||||||
|
standby_count = ctrl.count;
|
||||||
|
|
||||||
|
ctrl.state = PM_SLEEP;
|
||||||
|
boardctl(BOARDIOC_PM_CONTROL, (uintptr_t)&ctrl);
|
||||||
|
sleep_count = ctrl.count;
|
||||||
|
|
||||||
|
nsh_output(vtbl, "Current state %d, PM stay [%d, %d, %d, %d]\n",
|
||||||
|
current_state, normal_count, idle_count, standby_count, sleep_count);
|
||||||
|
}
|
||||||
|
else if (argc == 3)
|
||||||
|
{
|
||||||
|
if (strcmp(argv[1], "stay") == 0)
|
||||||
|
{
|
||||||
|
ctrl.action = BOARDIOC_PM_STAY;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[1], "relax") == 0)
|
||||||
|
{
|
||||||
|
ctrl.action = BOARDIOC_PM_RELAX;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nsh_output(vtbl, g_fmtarginvalid, argv[1]);
|
||||||
|
return ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(argv[2], "normal") == 0)
|
||||||
|
{
|
||||||
|
ctrl.state = PM_NORMAL;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[2], "idle") == 0)
|
||||||
|
{
|
||||||
|
ctrl.state = PM_IDLE;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[2], "standby") == 0)
|
||||||
|
{
|
||||||
|
ctrl.state = PM_STANDBY;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[2], "sleep") == 0)
|
||||||
|
{
|
||||||
|
ctrl.state = PM_SLEEP;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nsh_output(vtbl, g_fmtarginvalid, argv[2]);
|
||||||
|
return ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
boardctl(BOARDIOC_PM_CONTROL, (uintptr_t)&ctrl);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nsh_error(vtbl, g_fmttoomanyargs, argv[0]);
|
||||||
|
return ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: cmd_poweroff
|
* Name: cmd_poweroff
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user