shell: creating new module for help functionality

1. Created new shell module: shell_help.
2. Simplified command handlers with new shell print macros.
3. Removed help functions from command handlers.

Signed-off-by: Jakub Rzeszutko <jakub.rzeszutko@nordicsemi.no>
This commit is contained in:
Jakub Rzeszutko 2018-11-26 17:09:56 +01:00 committed by Carles Cufí
commit 3064ca4f2f
27 changed files with 686 additions and 956 deletions

View file

@ -57,8 +57,7 @@ static bool shell_state_precheck(const struct shell *shell)
{
if (shell->log_backend->control_block->state
== SHELL_LOG_BACKEND_UNINIT) {
shell_fprintf(shell, SHELL_ERROR,
"Shell log backend not initialized.\r\n");
shell_error(shell, "Shell log backend not initialized.");
return false;
}
@ -82,8 +81,7 @@ static int shell_backend_cmd_execute(const struct shell *shell,
if (backend) {
func(shell, backend, argc, argv);
} else {
shell_fprintf(shell, SHELL_ERROR,
"Invalid backend: %s\r\n", name);
shell_error(shell, "Invalid backend: %s", name);
return -ENOEXEC;
}
return 0;
@ -101,7 +99,7 @@ static int log_status(const struct shell *shell,
if (!log_backend_is_active(backend)) {
shell_fprintf(shell, SHELL_ERROR, "Logs are halted!\r\n");
shell_warn(shell, "Logs are halted!");
}
shell_fprintf(shell, SHELL_NORMAL, "%-40s | current | built-in \r\n",
@ -168,7 +166,7 @@ static void filters_set(const struct shell *shell,
int cnt = all ? log_sources_count() : argc;
if (!backend->cb->active) {
shell_fprintf(shell, SHELL_WARNING, "Backend not active.\r\n");
shell_warn(shell, "Backend not active.");
}
for (i = 0; i < cnt; i++) {
@ -185,13 +183,11 @@ static void filters_set(const struct shell *shell,
log_source_name_get(
CONFIG_LOG_DOMAIN_ID, i) :
argv[i];
shell_fprintf(shell, SHELL_WARNING,
"%s: level set to %s.\r\n",
name, severity_lvls[set_lvl]);
shell_warn(shell, "%s: level set to %s.",
name, severity_lvls[set_lvl]);
}
} else {
shell_fprintf(shell, SHELL_ERROR,
"%s: unknown source name.\r\n", argv[i]);
shell_error(shell, "%s: unknown source name.", argv[i]);
}
}
}
@ -214,17 +210,11 @@ static int log_enable(const struct shell *shell,
char **argv)
{
int severity_level;
int err = shell_cmd_precheck(shell, (argc > 1));
if (err) {
return err;
}
severity_level = severity_level_get(argv[1]);
if (severity_level < 0) {
shell_fprintf(shell, SHELL_ERROR, "Invalid severity: %s\r\n",
argv[1]);
shell_error(shell, "Invalid severity: %s", argv[1]);
return -ENOEXEC;
}
@ -254,12 +244,6 @@ static int log_disable(const struct shell *shell,
size_t argc,
char **argv)
{
int err = shell_cmd_precheck(shell, (argc > 1));
if (err) {
return err;
}
filters_set(shell, backend, argc - 1, &argv[1], LOG_LEVEL_NONE);
return 0;
}
@ -361,11 +345,6 @@ static int cmd_log_backends_list(const struct shell *shell,
size_t argc, char **argv)
{
int backend_count;
int err = shell_cmd_precheck(shell, (argc == 1));
if (err) {
return err;
}
backend_count = log_backend_count_get();
@ -387,15 +366,15 @@ static int cmd_log_backends_list(const struct shell *shell,
SHELL_CREATE_STATIC_SUBCMD_SET(sub_log_backend)
{
SHELL_CMD(disable, &dsub_module_name,
SHELL_CMD_ARG(disable, &dsub_module_name,
"'log disable <module_0> .. <module_n>' disables logs in "
"specified modules (all if no modules specified).",
cmd_log_backend_disable),
SHELL_CMD(enable, &dsub_severity_lvl,
cmd_log_backend_disable, 2, 255),
SHELL_CMD_ARG(enable, &dsub_severity_lvl,
"'log enable <level> <module_0> ... <module_n>' enables logs"
" up to given level in specified modules (all if no modules "
"specified).",
cmd_log_backend_enable),
cmd_log_backend_enable, 2, 255),
SHELL_CMD(go, NULL, "Resume logging", cmd_log_backend_go),
SHELL_CMD(halt, NULL, "Halt logging", cmd_log_backend_halt),
SHELL_CMD(status, NULL, "Logger status", cmd_log_backend_status),
@ -423,33 +402,21 @@ SHELL_CREATE_STATIC_SUBCMD_SET(sub_log_stat)
{
SHELL_CMD(backend, &dsub_backend_name_dynamic,
"Logger backends commands.", NULL),
SHELL_CMD(disable, &dsub_module_name,
SHELL_CMD_ARG(disable, &dsub_module_name,
"'log disable <module_0> .. <module_n>' disables logs in specified "
"modules (all if no modules specified).",
cmd_log_self_disable),
SHELL_CMD(enable, &dsub_severity_lvl,
cmd_log_self_disable, 2, 255),
SHELL_CMD_ARG(enable, &dsub_severity_lvl,
"'log enable <level> <module_0> ... <module_n>' enables logs up to"
" given level in specified modules (all if no modules specified).",
cmd_log_self_enable),
cmd_log_self_enable, 2, 255),
SHELL_CMD(go, NULL, "Resume logging", cmd_log_self_go),
SHELL_CMD(halt, NULL, "Halt logging", cmd_log_self_halt),
SHELL_CMD(list_backends, NULL, "Lists logger backends.",
cmd_log_backends_list),
SHELL_CMD_ARG(list_backends, NULL, "Lists logger backends.",
cmd_log_backends_list, 1, 0),
SHELL_CMD(status, NULL, "Logger status", cmd_log_self_status),
SHELL_SUBCMD_SET_END
};
static int cmd_log(const struct shell *shell, size_t argc, char **argv)
{
if (argc == 1) {
shell_help_print(shell);
return 0;
}
shell_fprintf(shell, SHELL_ERROR, "%s:%s%s\r\n",
argv[0], " unknown parameter: ", argv[1]);
return -ENOEXEC;
}
SHELL_CMD_REGISTER(log, &sub_log_stat, "Commands for controlling logger",
cmd_log);
NULL);