shell: internal api update: fprintf

Add z_ prefix to internal fprintf functions and macros.

Signed-off-by: Jakub Rzeszutko <jakub.rzeszutko@nordicsemi.no>
This commit is contained in:
Jakub Rzeszutko 2020-12-06 11:22:27 +01:00 committed by Carles Cufí
commit 460995c810
10 changed files with 70 additions and 82 deletions

View file

@ -711,8 +711,8 @@ struct shell {
k_thread_stack_t *stack; k_thread_stack_t *stack;
}; };
extern void shell_print_stream(const void *user_ctx, const char *data, extern void z_shell_print_stream(const void *user_ctx, const char *data,
size_t data_len); size_t data_len);
/** /**
* @brief Macro for defining a shell instance. * @brief Macro for defining a shell instance.
* *
@ -730,14 +730,14 @@ extern void shell_print_stream(const void *user_ctx, const char *data,
_log_queue_size, _log_timeout, _shell_flag) \ _log_queue_size, _log_timeout, _shell_flag) \
static const struct shell _name; \ static const struct shell _name; \
static struct shell_ctx UTIL_CAT(_name, _ctx); \ static struct shell_ctx UTIL_CAT(_name, _ctx); \
static uint8_t _name##_out_buffer[CONFIG_SHELL_PRINTF_BUFF_SIZE]; \ static uint8_t _name##_out_buffer[CONFIG_SHELL_PRINTF_BUFF_SIZE]; \
SHELL_LOG_BACKEND_DEFINE(_name, _name##_out_buffer, \ SHELL_LOG_BACKEND_DEFINE(_name, _name##_out_buffer, \
CONFIG_SHELL_PRINTF_BUFF_SIZE, \ CONFIG_SHELL_PRINTF_BUFF_SIZE, \
_log_queue_size, _log_timeout); \ _log_queue_size, _log_timeout); \
SHELL_HISTORY_DEFINE(_name##_history, CONFIG_SHELL_HISTORY_BUFFER); \ SHELL_HISTORY_DEFINE(_name##_history, CONFIG_SHELL_HISTORY_BUFFER); \
SHELL_FPRINTF_DEFINE(_name##_fprintf, &_name, _name##_out_buffer, \ Z_SHELL_FPRINTF_DEFINE(_name##_fprintf, &_name, _name##_out_buffer, \
CONFIG_SHELL_PRINTF_BUFF_SIZE, \ CONFIG_SHELL_PRINTF_BUFF_SIZE, \
true, shell_print_stream); \ true, z_shell_print_stream); \
LOG_INSTANCE_REGISTER(shell, _name, CONFIG_SHELL_LOG_LEVEL); \ LOG_INSTANCE_REGISTER(shell, _name, CONFIG_SHELL_LOG_LEVEL); \
SHELL_STATS_DEFINE(_name); \ SHELL_STATS_DEFINE(_name); \
static K_KERNEL_STACK_DEFINE(_name##_stack, CONFIG_SHELL_STACK_SIZE); \ static K_KERNEL_STACK_DEFINE(_name##_stack, CONFIG_SHELL_STACK_SIZE); \

View file

@ -16,8 +16,8 @@ extern "C" {
#endif #endif
typedef void (*shell_fprintf_fwrite)(const void *user_ctx, typedef void (*shell_fprintf_fwrite)(const void *user_ctx,
const char *data, const char *data,
size_t length); size_t length);
struct shell_fprintf_control_block { struct shell_fprintf_control_block {
size_t buffer_cnt; size_t buffer_cnt;
@ -44,7 +44,7 @@ struct shell_fprintf {
* @param _autoflush Indicator if buffer shall be automatically flush. * @param _autoflush Indicator if buffer shall be automatically flush.
* @param _fwrite Pointer to function sending data stream. * @param _fwrite Pointer to function sending data stream.
*/ */
#define SHELL_FPRINTF_DEFINE(_name, _user_ctx, _buf, _size, \ #define Z_SHELL_FPRINTF_DEFINE(_name, _user_ctx, _buf, _size, \
_autoflush, _fwrite) \ _autoflush, _fwrite) \
static struct shell_fprintf_control_block \ static struct shell_fprintf_control_block \
_name##_shell_fprintf_ctx = { \ _name##_shell_fprintf_ctx = { \
@ -66,15 +66,15 @@ struct shell_fprintf {
* @param fmt Format string. * @param fmt Format string.
* @param args List of parameters to print. * @param args List of parameters to print.
*/ */
void shell_fprintf_fmt(const struct shell_fprintf *sh_fprintf, void z_shell_fprintf_fmt(const struct shell_fprintf *sh_fprintf,
char const *fmt, va_list args); char const *fmt, va_list args);
/** /**
* @brief function flushing data stored in io_buffer. * @brief function flushing data stored in io_buffer.
* *
* @param sh_fprintf fprintf instance * @param sh_fprintf fprintf instance
*/ */
void shell_fprintf_buffer_flush(const struct shell_fprintf *sh_fprintf); void z_shell_fprintf_buffer_flush(const struct shell_fprintf *sh_fprintf);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -68,9 +68,9 @@ static int cmd_precheck(const struct shell *shell,
bool arg_cnt_ok) bool arg_cnt_ok)
{ {
if (!arg_cnt_ok) { if (!arg_cnt_ok) {
shell_internal_fprintf(shell, SHELL_ERROR, z_shell_fprintf(shell, SHELL_ERROR,
"%s: wrong parameter count\n", "%s: wrong parameter count\n",
shell->ctx->active_cmd.syntax); shell->ctx->active_cmd.syntax);
if (IS_ENABLED(CONFIG_SHELL_HELP_ON_WRONG_ARGUMENT_COUNT)) { if (IS_ENABLED(CONFIG_SHELL_HELP_ON_WRONG_ARGUMENT_COUNT)) {
shell_internal_help_print(shell); shell_internal_help_print(shell);
@ -89,8 +89,8 @@ static inline void state_set(const struct shell *shell, enum shell_state state)
if (state == SHELL_STATE_ACTIVE) { if (state == SHELL_STATE_ACTIVE) {
cmd_buffer_clear(shell); cmd_buffer_clear(shell);
if (flag_print_noinit_get(shell)) { if (flag_print_noinit_get(shell)) {
shell_internal_fprintf(shell, SHELL_WARNING, "%s", z_shell_fprintf(shell, SHELL_WARNING, "%s",
SHELL_MSG_BACKEND_NOT_ACTIVE); SHELL_MSG_BACKEND_NOT_ACTIVE);
flag_print_noinit_set(shell, false); flag_print_noinit_set(shell, false);
} }
shell_print_prompt_and_cmd(shell); shell_print_prompt_and_cmd(shell);
@ -132,10 +132,9 @@ static void tab_item_print(const struct shell *shell, const char *option,
diff = longest_option - shell_strlen(option); diff = longest_option - shell_strlen(option);
if (shell->ctx->vt100_ctx.printed_cmd++ % columns == 0U) { if (shell->ctx->vt100_ctx.printed_cmd++ % columns == 0U) {
shell_internal_fprintf(shell, SHELL_OPTION, "\n%s%s", tab, z_shell_fprintf(shell, SHELL_OPTION, "\n%s%s", tab, option);
option);
} else { } else {
shell_internal_fprintf(shell, SHELL_OPTION, "%s", option); z_shell_fprintf(shell, SHELL_OPTION, "%s", option);
} }
shell_op_cursor_horiz_move(shell, diff); shell_op_cursor_horiz_move(shell, diff);
@ -515,8 +514,8 @@ static int exec_cmd(const struct shell *shell, size_t argc, const char **argv,
shell_internal_help_print(shell); shell_internal_help_print(shell);
return SHELL_CMD_HELP_PRINTED; return SHELL_CMD_HELP_PRINTED;
} else { } else {
shell_internal_fprintf(shell, SHELL_ERROR, z_shell_fprintf(shell, SHELL_ERROR,
SHELL_MSG_SPECIFY_SUBCOMMAND); SHELL_MSG_SPECIFY_SUBCOMMAND);
return -ENOEXEC; return -ENOEXEC;
} }
} }
@ -578,7 +577,7 @@ static bool wildcard_check_report(const struct shell *shell, bool found,
shell_op_cursor_end_move(shell); shell_op_cursor_end_move(shell);
shell_op_cond_next_line(shell); shell_op_cond_next_line(shell);
shell_internal_fprintf(shell, SHELL_ERROR, z_shell_fprintf(shell, SHELL_ERROR,
"Error: requested multiple function executions\n"); "Error: requested multiple function executions\n");
return false; return false;
} }
@ -656,9 +655,8 @@ static int execute(const struct shell *shell)
if (argc == 0) { if (argc == 0) {
return -ENOEXEC; return -ENOEXEC;
} else if ((argc == 1) && (quote != 0)) { } else if ((argc == 1) && (quote != 0)) {
shell_internal_fprintf(shell, SHELL_ERROR, z_shell_fprintf(shell, SHELL_ERROR,
"not terminated: %c\n", "not terminated: %c\n", quote);
quote);
return -ENOEXEC; return -ENOEXEC;
} }
@ -674,8 +672,8 @@ static int execute(const struct shell *shell)
return SHELL_CMD_HELP_PRINTED; return SHELL_CMD_HELP_PRINTED;
} }
shell_internal_fprintf(shell, SHELL_ERROR, z_shell_fprintf(shell, SHELL_ERROR,
SHELL_MSG_SPECIFY_SUBCOMMAND); SHELL_MSG_SPECIFY_SUBCOMMAND);
return -ENOEXEC; return -ENOEXEC;
} }
@ -721,9 +719,9 @@ static int execute(const struct shell *shell)
if (cmd_lvl == 0 && if (cmd_lvl == 0 &&
(!shell_in_select_mode(shell) || (!shell_in_select_mode(shell) ||
shell->ctx->selected_cmd->handler == NULL)) { shell->ctx->selected_cmd->handler == NULL)) {
shell_internal_fprintf(shell, SHELL_ERROR, z_shell_fprintf(shell, SHELL_ERROR,
"%s%s\n", argv[0], "%s%s\n", argv[0],
SHELL_MSG_CMD_NOT_FOUND); SHELL_MSG_CMD_NOT_FOUND);
} }
/* last handler found - no need to search commands in /* last handler found - no need to search commands in
@ -743,8 +741,8 @@ static int execute(const struct shell *shell)
* there was more characters remaining. It means that number of * there was more characters remaining. It means that number of
* arguments exceeds the limit. * arguments exceeds the limit.
*/ */
shell_internal_fprintf(shell, SHELL_ERROR, z_shell_fprintf(shell, SHELL_ERROR, "%s\n",
"%s\n", SHELL_MSG_TOO_MANY_ARGS); SHELL_MSG_TOO_MANY_ARGS);
return -ENOEXEC; return -ENOEXEC;
} }
@ -821,7 +819,7 @@ static void alt_metakeys_handle(const struct shell *shell, char data)
IS_ENABLED(CONFIG_SHELL_CMDS_SELECT)) { IS_ENABLED(CONFIG_SHELL_CMDS_SELECT)) {
if (selected_cmd_get(shell) != NULL) { if (selected_cmd_get(shell) != NULL) {
shell_cmd_line_erase(shell); shell_cmd_line_erase(shell);
shell_internal_fprintf(shell, SHELL_WARNING, z_shell_fprintf(shell, SHELL_WARNING,
"Restored default root commands\n"); "Restored default root commands\n");
shell->ctx->selected_cmd = NULL; shell->ctx->selected_cmd = NULL;
shell_print_prompt_and_cmd(shell); shell_print_prompt_and_cmd(shell);
@ -1264,8 +1262,8 @@ void shell_thread(void *shell_handle, void *arg_log_backend,
if (err != 0) { if (err != 0) {
k_mutex_lock(&shell->ctx->wr_mtx, K_FOREVER); k_mutex_lock(&shell->ctx->wr_mtx, K_FOREVER);
shell_internal_fprintf(shell, SHELL_ERROR, z_shell_fprintf(shell, SHELL_ERROR,
"Shell thread error: %d", err); "Shell thread error: %d", err);
k_mutex_unlock(&shell->ctx->wr_mtx); k_mutex_unlock(&shell->ctx->wr_mtx);
return; return;
} }
@ -1424,7 +1422,7 @@ void shell_vfprintf(const struct shell *shell, enum shell_vt100_color color,
if (!flag_cmd_ctx_get(shell)) { if (!flag_cmd_ctx_get(shell)) {
shell_cmd_line_erase(shell); shell_cmd_line_erase(shell);
} }
shell_internal_vfprintf(shell, color, fmt, args); z_shell_vfprintf(shell, color, fmt, args);
if (!flag_cmd_ctx_get(shell)) { if (!flag_cmd_ctx_get(shell)) {
shell_print_prompt_and_cmd(shell); shell_print_prompt_and_cmd(shell);
} }

View file

@ -24,24 +24,24 @@ static int out_func(int c, void *ctx)
sh_fprintf->ctrl_blk->buffer_cnt++; sh_fprintf->ctrl_blk->buffer_cnt++;
if (sh_fprintf->ctrl_blk->buffer_cnt == sh_fprintf->buffer_size) { if (sh_fprintf->ctrl_blk->buffer_cnt == sh_fprintf->buffer_size) {
shell_fprintf_buffer_flush(sh_fprintf); z_shell_fprintf_buffer_flush(sh_fprintf);
} }
return 0; return 0;
} }
void shell_fprintf_fmt(const struct shell_fprintf *sh_fprintf, void z_shell_fprintf_fmt(const struct shell_fprintf *sh_fprintf,
const char *fmt, va_list args) const char *fmt, va_list args)
{ {
(void)cbvprintf(out_func, (void *)sh_fprintf, fmt, args); (void)cbvprintf(out_func, (void *)sh_fprintf, fmt, args);
if (sh_fprintf->ctrl_blk->autoflush) { if (sh_fprintf->ctrl_blk->autoflush) {
shell_fprintf_buffer_flush(sh_fprintf); z_shell_fprintf_buffer_flush(sh_fprintf);
} }
} }
void shell_fprintf_buffer_flush(const struct shell_fprintf *sh_fprintf) void z_shell_fprintf_buffer_flush(const struct shell_fprintf *sh_fprintf)
{ {
sh_fprintf->fwrite(sh_fprintf->user_ctx, sh_fprintf->buffer, sh_fprintf->fwrite(sh_fprintf->user_ctx, sh_fprintf->buffer,
sh_fprintf->ctrl_blk->buffer_cnt); sh_fprintf->ctrl_blk->buffer_cnt);

View file

@ -120,20 +120,18 @@ static void help_item_print(const struct shell *shell, const char *item_name,
!IS_ENABLED(CONFIG_ARCH_POSIX) && !IS_ENABLED(CONFIG_ARCH_POSIX) &&
!IS_ENABLED(CONFIG_CBPRINTF_NANO)) { !IS_ENABLED(CONFIG_CBPRINTF_NANO)) {
/* print option name */ /* print option name */
shell_internal_fprintf(shell, SHELL_NORMAL, "%s%-*s%s:", z_shell_fprintf(shell, SHELL_NORMAL, "%s%-*s%s:", tabulator,
tabulator, item_name_width, item_name, tabulator);
item_name_width, item_name,
tabulator);
} else { } else {
uint16_t tmp = item_name_width - strlen(item_name); uint16_t tmp = item_name_width - strlen(item_name);
char space = ' '; char space = ' ';
shell_internal_fprintf(shell, SHELL_NORMAL, "%s%s", tabulator, z_shell_fprintf(shell, SHELL_NORMAL, "%s%s", tabulator,
item_name); item_name);
for (uint16_t i = 0; i < tmp; i++) { for (uint16_t i = 0; i < tmp; i++) {
shell_write(shell, &space, 1); shell_write(shell, &space, 1);
} }
shell_internal_fprintf(shell, SHELL_NORMAL, "%s:", tabulator); z_shell_fprintf(shell, SHELL_NORMAL, "%s:", tabulator);
} }
if (item_help == NULL) { if (item_help == NULL) {
@ -167,7 +165,7 @@ void shell_help_subcmd_print(const struct shell *shell,
} }
if (description != NULL) { if (description != NULL) {
shell_internal_fprintf(shell, SHELL_NORMAL, description); z_shell_fprintf(shell, SHELL_NORMAL, description);
} }
/* Printing subcommands and help string (if exists). */ /* Printing subcommands and help string (if exists). */
@ -186,8 +184,7 @@ void shell_help_cmd_print(const struct shell *shell,
field_width = shell_strlen(cmd->syntax) + shell_strlen(cmd_sep); field_width = shell_strlen(cmd->syntax) + shell_strlen(cmd_sep);
shell_internal_fprintf(shell, SHELL_NORMAL, "%s%s", z_shell_fprintf(shell, SHELL_NORMAL, "%s%s", cmd->syntax, cmd_sep);
cmd->syntax, cmd_sep);
formatted_text_print(shell, cmd->help, field_width, false); formatted_text_print(shell, cmd->help, field_width, false);
} }

View file

@ -11,7 +11,7 @@
int shell_log_backend_output_func(uint8_t *data, size_t length, void *ctx) int shell_log_backend_output_func(uint8_t *data, size_t length, void *ctx)
{ {
shell_print_stream(ctx, data, length); z_shell_print_stream(ctx, data, length);
return length; return length;
} }

View file

@ -178,7 +178,7 @@ void shell_op_word_remove(const struct shell *shell)
/* Update display. */ /* Update display. */
shell_op_cursor_move(shell, -chars_to_delete); shell_op_cursor_move(shell, -chars_to_delete);
cursor_save(shell); cursor_save(shell);
shell_internal_fprintf(shell, SHELL_NORMAL, "%s", str + 1); z_shell_fprintf(shell, SHELL_NORMAL, "%s", str + 1);
clear_eos(shell); clear_eos(shell);
cursor_restore(shell); cursor_restore(shell);
} }
@ -223,7 +223,7 @@ static void reprint_from_cursor(const struct shell *shell, uint16_t diff,
clear_eos(shell); clear_eos(shell);
} }
shell_internal_fprintf(shell, SHELL_NORMAL, "%s", z_shell_fprintf(shell, SHELL_NORMAL, "%s",
&shell->ctx->cmd_buff[shell->ctx->cmd_buff_pos]); &shell->ctx->cmd_buff[shell->ctx->cmd_buff_pos]);
shell->ctx->cmd_buff_pos = shell->ctx->cmd_buff_len; shell->ctx->cmd_buff_pos = shell->ctx->cmd_buff_len;
@ -336,7 +336,7 @@ void shell_cmd_line_erase(const struct shell *shell)
static void print_prompt(const struct shell *shell) static void print_prompt(const struct shell *shell)
{ {
shell_internal_fprintf(shell, SHELL_INFO, "%s", shell->ctx->prompt); z_shell_fprintf(shell, SHELL_INFO, "%s", shell->ctx->prompt);
} }
void shell_print_cmd(const struct shell *shell) void shell_print_cmd(const struct shell *shell)
@ -393,10 +393,9 @@ void shell_write(const struct shell *shell, const void *data,
} }
/* Function shall be only used by the fprintf module. */ /* Function shall be only used by the fprintf module. */
void shell_print_stream(const void *user_ctx, const char *data, void z_shell_print_stream(const void *user_ctx, const char *data, size_t len)
size_t data_len)
{ {
shell_write((const struct shell *) user_ctx, data, data_len); shell_write((const struct shell *) user_ctx, data, len);
} }
static void vt100_bgcolor_set(const struct shell *shell, static void vt100_bgcolor_set(const struct shell *shell,
@ -444,9 +443,8 @@ void shell_vt100_colors_restore(const struct shell *shell,
vt100_bgcolor_set(shell, color->bgcol); vt100_bgcolor_set(shell, color->bgcol);
} }
void shell_internal_vfprintf(const struct shell *shell, void z_shell_vfprintf(const struct shell *shell, enum shell_vt100_color color,
enum shell_vt100_color color, const char *fmt, const char *fmt, va_list args)
va_list args)
{ {
if (IS_ENABLED(CONFIG_SHELL_VT100_COLORS) && if (IS_ENABLED(CONFIG_SHELL_VT100_COLORS) &&
shell->ctx->internal.flags.use_colors && shell->ctx->internal.flags.use_colors &&
@ -456,15 +454,15 @@ void shell_internal_vfprintf(const struct shell *shell,
shell_vt100_colors_store(shell, &col); shell_vt100_colors_store(shell, &col);
shell_vt100_color_set(shell, color); shell_vt100_color_set(shell, color);
shell_fprintf_fmt(shell->fprintf_ctx, fmt, args); z_shell_fprintf_fmt(shell->fprintf_ctx, fmt, args);
shell_vt100_colors_restore(shell, &col); shell_vt100_colors_restore(shell, &col);
} else { } else {
shell_fprintf_fmt(shell->fprintf_ctx, fmt, args); z_shell_fprintf_fmt(shell->fprintf_ctx, fmt, args);
} }
} }
void shell_internal_fprintf(const struct shell *shell, void z_shell_fprintf(const struct shell *shell,
enum shell_vt100_color color, enum shell_vt100_color color,
const char *fmt, ...) const char *fmt, ...)
{ {
@ -477,6 +475,6 @@ void shell_internal_fprintf(const struct shell *shell,
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
shell_internal_vfprintf(shell, color, fmt, args); z_shell_vfprintf(shell, color, fmt, args);
va_end(args); va_end(args);
} }

View file

@ -21,7 +21,7 @@ static inline void shell_raw_fprintf(const struct shell_fprintf *const ctx,
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
shell_fprintf_fmt(ctx, fmt, args); z_shell_fprintf_fmt(ctx, fmt, args);
va_end(args); va_end(args);
} }
@ -245,10 +245,9 @@ void shell_write(const struct shell *shell, const void *data,
* *
* @param[in] p_user_ctx Pointer to the context for the shell instance. * @param[in] p_user_ctx Pointer to the context for the shell instance.
* @param[in] p_data Pointer to the data buffer. * @param[in] p_data Pointer to the data buffer.
* @param[in] data_len Data buffer size. * @param[in] len Data buffer size.
*/ */
void shell_print_stream(const void *user_ctx, const char *data, void z_shell_print_stream(const void *user_ctx, const char *data, size_t len);
size_t data_len);
/** @internal @brief Function for setting font color */ /** @internal @brief Function for setting font color */
void shell_vt100_color_set(const struct shell *shell, void shell_vt100_color_set(const struct shell *shell,
@ -266,13 +265,11 @@ void shell_vt100_colors_restore(const struct shell *shell,
/* This function can be called only within shell thread but not from command /* This function can be called only within shell thread but not from command
* handlers. * handlers.
*/ */
void shell_internal_fprintf(const struct shell *shell, void z_shell_fprintf(const struct shell *shell, enum shell_vt100_color color,
enum shell_vt100_color color, const char *fmt, ...);
const char *fmt, ...);
void shell_internal_vfprintf(const struct shell *shell, void z_shell_vfprintf(const struct shell *shell, enum shell_vt100_color color,
enum shell_vt100_color color, const char *fmt, const char *fmt, va_list args);
va_list args);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -86,7 +86,7 @@ void shell_spaces_trim(char *str);
static inline void transport_buffer_flush(const struct shell *shell) static inline void transport_buffer_flush(const struct shell *shell)
{ {
shell_fprintf_buffer_flush(shell->fprintf_ctx); z_shell_fprintf_buffer_flush(shell->fprintf_ctx);
} }
void shell_cmd_trim(const struct shell *shell); void shell_cmd_trim(const struct shell *shell);

View file

@ -83,12 +83,10 @@ static enum shell_wildcard_status commands_expand(const struct shell *shell,
&shell->ctx->cmd_tmp_buff_len, &shell->ctx->cmd_tmp_buff_len,
entry->syntax, pattern); entry->syntax, pattern);
if (ret_val == SHELL_WILDCARD_CMD_MISSING_SPACE) { if (ret_val == SHELL_WILDCARD_CMD_MISSING_SPACE) {
shell_internal_fprintf(shell, z_shell_fprintf(shell, SHELL_WARNING,
SHELL_WARNING, "Command buffer is too short to"
"Command buffer is too short to" " expand all commands matching"
" expand all commands matching" " wildcard pattern: %s\n", pattern);
" wildcard pattern: %s\n",
pattern);
break; break;
} else if (ret_val != SHELL_WILDCARD_CMD_ADDED) { } else if (ret_val != SHELL_WILDCARD_CMD_ADDED) {
break; break;