You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.8 KiB
100 lines
2.8 KiB
/* |
|
* Copyright (c) 2018 Nordic Semiconductor ASA |
|
* |
|
* SPDX-License-Identifier: Apache-2.0 |
|
*/ |
|
#ifndef SHELL_UTILS_H__ |
|
#define SHELL_UTILS_H__ |
|
|
|
#include <zephyr/kernel.h> |
|
#include <zephyr/shell/shell.h> |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
#define SHELL_MSG_SPECIFY_SUBCOMMAND "Please specify a subcommand.\n" |
|
|
|
int32_t z_row_span_with_buffer_offsets_get(struct shell_multiline_cons *cons, |
|
uint16_t offset1, |
|
uint16_t offset2); |
|
|
|
int32_t z_column_span_with_buffer_offsets_get(struct shell_multiline_cons *cons, |
|
uint16_t offset1, |
|
uint16_t offset2); |
|
|
|
void z_shell_multiline_data_calc(struct shell_multiline_cons *cons, |
|
uint16_t buff_pos, uint16_t buff_len); |
|
|
|
static inline uint16_t z_shell_strlen(const char *str) |
|
{ |
|
return str == NULL ? 0U : (uint16_t)strlen(str); |
|
} |
|
|
|
char z_shell_make_argv(size_t *argc, const char **argv, |
|
char *cmd, uint8_t max_argc); |
|
|
|
/** @brief Removes pattern and following space |
|
* |
|
*/ |
|
void z_shell_pattern_remove(char *buff, uint16_t *buff_len, |
|
const char *pattern); |
|
|
|
/** @brief Get subcommand with given index from the root. |
|
* |
|
* @param parent Parent entry. Null to get root command from index. |
|
* @param idx Command index. |
|
* @param dloc Location used to write dynamic entry. |
|
* |
|
* @return Fetched command or null if command with that index does not exist. |
|
*/ |
|
const struct shell_static_entry *z_shell_cmd_get( |
|
const struct shell_static_entry *parent, |
|
size_t idx, |
|
struct shell_static_entry *dloc); |
|
|
|
const struct shell_static_entry *z_shell_find_cmd( |
|
const struct shell_static_entry *parent, |
|
const char *cmd_str, |
|
struct shell_static_entry *dloc); |
|
|
|
/* @internal @brief Function returns pointer to a shell's subcommands array |
|
* for a level given by argc and matching command patter provided in argv. |
|
* |
|
* @param sh Entry. NULL for root entry. |
|
* @param argc Number of arguments. |
|
* @param argv Pointer to an array with arguments. |
|
* @param match_arg Subcommand level of last matching argument. |
|
* @param d_entry Shell static command descriptor. |
|
* @param only_static If true search only for static commands. |
|
* |
|
* @return Pointer to found command. |
|
*/ |
|
const struct shell_static_entry *z_shell_get_last_command( |
|
const struct shell_static_entry *entry, |
|
size_t argc, |
|
const char *argv[], |
|
size_t *match_arg, |
|
struct shell_static_entry *dloc, |
|
bool only_static); |
|
|
|
void z_shell_spaces_trim(char *str); |
|
void z_shell_cmd_trim(const struct shell *sh); |
|
|
|
const struct shell_static_entry *root_cmd_find(const char *syntax); |
|
|
|
static inline void z_transport_buffer_flush(const struct shell *sh) |
|
{ |
|
z_shell_fprintf_buffer_flush(sh->fprintf_ctx); |
|
} |
|
|
|
static inline bool z_shell_in_select_mode(const struct shell *sh) |
|
{ |
|
return sh->ctx->selected_cmd == NULL ? false : true; |
|
} |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
|
|
#endif /* SHELL_UTILS_H__ */
|
|
|