mirror of
https://github.com/MaJerle/lwshell.git
synced 2025-02-06 13:08:22 +08:00
Change lw to lwobj to better fit with clang-tidy
This commit is contained in:
parent
d1e0a709b2
commit
f4835d712d
@ -78,9 +78,9 @@ typedef int32_t (*lwshell_cmd_fn)(int32_t argc, char** argv);
|
|||||||
/**
|
/**
|
||||||
* \brief Callback function for character output
|
* \brief Callback function for character output
|
||||||
* \param[in] str: String to output
|
* \param[in] str: String to output
|
||||||
* \param[in] lw: LwSHELL instance
|
* \param[in] lwobj: LwSHELL instance
|
||||||
*/
|
*/
|
||||||
typedef void (*lwshell_output_fn)(const char* str, struct lwshell* lw);
|
typedef void (*lwshell_output_fn)(const char* str, struct lwshell* lwobj);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief LwSHELL main structure
|
* \brief LwSHELL main structure
|
||||||
|
@ -48,14 +48,14 @@
|
|||||||
#define LWSHELL_ASCII_SPACE 0x20 /*!< Space character */
|
#define LWSHELL_ASCII_SPACE 0x20 /*!< Space character */
|
||||||
|
|
||||||
#if LWSHELL_CFG_USE_OUTPUT
|
#if LWSHELL_CFG_USE_OUTPUT
|
||||||
#define LW_OUTPUT(lw, str) \
|
#define LWSHELL_OUTPUT(lwobj, str) \
|
||||||
do { \
|
do { \
|
||||||
if ((lw)->out_fn != NULL && (str) != NULL) { \
|
if ((lwobj)->out_fn != NULL && (str) != NULL) { \
|
||||||
(lw)->out_fn((str), (lw)); \
|
(lwobj)->out_fn((str), (lwobj)); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
#else
|
#else
|
||||||
#define LW_OUTPUT(lw, str)
|
#define LWSHELL_OUTPUT(lwobj, str)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Array of all commands */
|
/* Array of all commands */
|
||||||
@ -64,52 +64,52 @@ static size_t cmds_cnt;
|
|||||||
static lwshell_t shell;
|
static lwshell_t shell;
|
||||||
|
|
||||||
/* Get shell instance from input */
|
/* Get shell instance from input */
|
||||||
#define LWSHELL_GET_LW(lw) ((lw) != NULL ? (lw) : (&shell))
|
#define LWSHELL_GET_LWOBJ(lwobj) ((lwobj) != NULL ? (lwobj) : (&shell))
|
||||||
|
|
||||||
/* Add character to instance */
|
/* Add character to instance */
|
||||||
#define LWSHELL_ADD_CH(lw, ch) \
|
#define LWSHELL_ADD_CH(lwobj, ch) \
|
||||||
do { \
|
do { \
|
||||||
if ((lw)->buff_ptr < (LWSHELL_ARRAYSIZE(lw->buff) - 1)) { \
|
if ((lwobj)->buff_ptr < (LWSHELL_ARRAYSIZE(lwobj->buff) - 1)) { \
|
||||||
(lw)->buff[(lw)->buff_ptr] = ch; \
|
(lwobj)->buff[(lwobj)->buff_ptr] = ch; \
|
||||||
(lw)->buff[++(lw)->buff_ptr] = '\0'; \
|
(lwobj)->buff[++(lwobj)->buff_ptr] = '\0'; \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/* Reset buffers */
|
/* Reset buffers */
|
||||||
#define LWSHELL_RESET_BUFF(lw) \
|
#define LWSHELL_RESET_BUFF(lwobj) \
|
||||||
do { \
|
do { \
|
||||||
memset((lw)->buff, 0x00, sizeof((lw)->buff)); \
|
memset((lwobj)->buff, 0x00, sizeof((lwobj)->buff)); \
|
||||||
memset((lw)->argv, 0x00, sizeof((lw)->argv)); \
|
memset((lwobj)->argv, 0x00, sizeof((lwobj)->argv)); \
|
||||||
(lw)->buff_ptr = 0; \
|
(lwobj)->buff_ptr = 0; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Parse input string
|
* \brief Parse input string
|
||||||
* \param[in] lw: LwSHELL instance
|
* \param[in] lwobj: LwSHELL instance
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
prv_parse_input(lwshell_t* lw) {
|
prv_parse_input(lwshell_t* lwobj) {
|
||||||
size_t s_len;
|
size_t s_len;
|
||||||
char* str;
|
char* str;
|
||||||
|
|
||||||
lw = LWSHELL_GET_LW(lw);
|
lwobj = LWSHELL_GET_LWOBJ(lwobj);
|
||||||
|
|
||||||
/* Check string length and compare with buffer pointer */
|
/* Check string length and compare with buffer pointer */
|
||||||
if ((s_len = strlen(lw->buff)) != lw->buff_ptr) {
|
if ((s_len = strlen(lwobj->buff)) != lwobj->buff_ptr) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Must be more than `1` character since we have to include end of line */
|
/* Must be more than `1` character since we have to include end of line */
|
||||||
if (lw->buff_ptr > 0) {
|
if (lwobj->buff_ptr > 0) {
|
||||||
/* Set default values */
|
/* Set default values */
|
||||||
lw->argc = 0;
|
lwobj->argc = 0;
|
||||||
lw->argv[0] = lw->buff;
|
lwobj->argv[0] = lwobj->buff;
|
||||||
|
|
||||||
/* Process complete input */
|
/* Process complete input */
|
||||||
str = lw->buff;
|
str = lwobj->buff;
|
||||||
|
|
||||||
/* Process complete string */
|
/* Process complete string */
|
||||||
lw->argc = 0;
|
lwobj->argc = 0;
|
||||||
while (*str != '\0') {
|
while (*str != '\0') {
|
||||||
while (*str == ' ' && ++str) {} /* Remove leading spaces */
|
while (*str == ' ' && ++str) {} /* Remove leading spaces */
|
||||||
if (*str == '\0') {
|
if (*str == '\0') {
|
||||||
@ -119,7 +119,7 @@ prv_parse_input(lwshell_t* lw) {
|
|||||||
/* Check if it starts with quote to handle escapes */
|
/* Check if it starts with quote to handle escapes */
|
||||||
if (*str == '"') {
|
if (*str == '"') {
|
||||||
++str;
|
++str;
|
||||||
lw->argv[lw->argc++] = str; /* Set start of argument after quotes */
|
lwobj->argv[lwobj->argc++] = str; /* Set start of argument after quotes */
|
||||||
|
|
||||||
/* Process until end of quote */
|
/* Process until end of quote */
|
||||||
while (*str != '\0') {
|
while (*str != '\0') {
|
||||||
@ -137,7 +137,7 @@ prv_parse_input(lwshell_t* lw) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
lw->argv[lw->argc++] = str; /* Set start of argument directly on character */
|
lwobj->argv[lwobj->argc++] = str; /* Set start of argument directly on character */
|
||||||
while (*str != ' ' && *str != '\0') {
|
while (*str != ' ' && *str != '\0') {
|
||||||
if (*str == '"') { /* Quote should not be here... */
|
if (*str == '"') { /* Quote should not be here... */
|
||||||
*str = '\0'; /* ...add NULL termination to end token */
|
*str = '\0'; /* ...add NULL termination to end token */
|
||||||
@ -152,19 +152,19 @@ prv_parse_input(lwshell_t* lw) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check for number of arguments */
|
/* Check for number of arguments */
|
||||||
if (lw->argc == LWSHELL_ARRAYSIZE(lw->argv)) {
|
if (lwobj->argc == LWSHELL_ARRAYSIZE(lwobj->argv)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for command */
|
/* Check for command */
|
||||||
if (lw->argc > 0 && cmds_cnt > 0) {
|
if (lwobj->argc > 0 && cmds_cnt > 0) {
|
||||||
lwshell_cmd_t* c = NULL;
|
lwshell_cmd_t* c = NULL;
|
||||||
size_t arg_len = strlen(lw->argv[0]);
|
size_t arg_len = strlen(lwobj->argv[0]);
|
||||||
|
|
||||||
/* Process all commands */
|
/* Process all commands */
|
||||||
for (size_t i = 0; i < cmds_cnt; ++i) {
|
for (size_t i = 0; i < cmds_cnt; ++i) {
|
||||||
if (arg_len == strlen(cmds[i].name) && strncmp(cmds[i].name, lw->argv[0], arg_len) == 0) {
|
if (arg_len == strlen(cmds[i].name) && strncmp(cmds[i].name, lwobj->argv[0], arg_len) == 0) {
|
||||||
c = &cmds[i];
|
c = &cmds[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -172,25 +172,26 @@ prv_parse_input(lwshell_t* lw) {
|
|||||||
|
|
||||||
/* Valid command ready? */
|
/* Valid command ready? */
|
||||||
if (c != NULL) {
|
if (c != NULL) {
|
||||||
if (lw->argc == 2 && lw->argv[1][0] == '-' && lw->argv[1][1] == 'h' && lw->argv[1][2] == '\0') {
|
if (lwobj->argc == 2 && lwobj->argv[1][0] == '-' && lwobj->argv[1][1] == 'h'
|
||||||
|
&& lwobj->argv[1][2] == '\0') {
|
||||||
/* Here we can print version */
|
/* Here we can print version */
|
||||||
LW_OUTPUT(lw, c->desc);
|
LWSHELL_OUTPUT(lwobj, c->desc);
|
||||||
LW_OUTPUT(lw, "\r\n");
|
LWSHELL_OUTPUT(lwobj, "\r\n");
|
||||||
} else {
|
} else {
|
||||||
c->fn(lw->argc, lw->argv);
|
c->fn(lwobj->argc, lwobj->argv);
|
||||||
}
|
}
|
||||||
#if LWSHELL_CFG_USE_ENABLE_LIST_CMD
|
#if LWSHELL_CFG_USE_ENABLE_LIST_CMD
|
||||||
} else if (strncmp(lw->argv[0], "listcmd", 7) == 0) {
|
} else if (strncmp(lwobj->argv[0], "listcmd", 7) == 0) {
|
||||||
LW_OUTPUT(lw, "List of registered commands\r\n");
|
LWSHELL_OUTPUT(lwobj, "List of registered commands\r\n");
|
||||||
for (size_t i = 0; i < cmds_cnt; ++i) {
|
for (size_t i = 0; i < cmds_cnt; ++i) {
|
||||||
LW_OUTPUT(lw, cmds[i].name);
|
LWSHELL_OUTPUT(lwobj, cmds[i].name);
|
||||||
LW_OUTPUT(lw, "\t\t\t");
|
LWSHELL_OUTPUT(lwobj, "\t\t\t");
|
||||||
LW_OUTPUT(lw, cmds[i].desc);
|
LWSHELL_OUTPUT(lwobj, cmds[i].desc);
|
||||||
LW_OUTPUT(lw, "\r\n");
|
LWSHELL_OUTPUT(lwobj, "\r\n");
|
||||||
}
|
}
|
||||||
#endif /* LWSHELL_CFG_USE_ENABLE_LIST_CMD */
|
#endif /* LWSHELL_CFG_USE_ENABLE_LIST_CMD */
|
||||||
} else {
|
} else {
|
||||||
LW_OUTPUT(lw, "Unknown command\r\n");
|
LWSHELL_OUTPUT(lwobj, "Unknown command\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -202,8 +203,8 @@ prv_parse_input(lwshell_t* lw) {
|
|||||||
*/
|
*/
|
||||||
lwshellr_t
|
lwshellr_t
|
||||||
lwshell_init(void) {
|
lwshell_init(void) {
|
||||||
lwshell_t* lw = LWSHELL_GET_LW(NULL);
|
lwshell_t* lwobj = LWSHELL_GET_LWOBJ(NULL);
|
||||||
memset(lw, 0x00, sizeof(*lw));
|
memset(lwobj, 0x00, sizeof(*lwobj));
|
||||||
return lwshellOK;
|
return lwshellOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,8 +218,8 @@ lwshell_init(void) {
|
|||||||
*/
|
*/
|
||||||
lwshellr_t
|
lwshellr_t
|
||||||
lwshell_set_output_fn(lwshell_output_fn out_fn) {
|
lwshell_set_output_fn(lwshell_output_fn out_fn) {
|
||||||
lwshell_t* lw = LWSHELL_GET_LW(NULL);
|
lwshell_t* lwobj = LWSHELL_GET_LWOBJ(NULL);
|
||||||
lw->out_fn = out_fn;
|
lwobj->out_fn = out_fn;
|
||||||
return lwshellOK;
|
return lwshellOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,7 +259,7 @@ lwshell_register_cmd(const char* cmd_name, lwshell_cmd_fn cmd_fn, const char* de
|
|||||||
lwshellr_t
|
lwshellr_t
|
||||||
lwshell_input(const void* in_data, size_t len) {
|
lwshell_input(const void* in_data, size_t len) {
|
||||||
const char* d = in_data;
|
const char* d = in_data;
|
||||||
lwshell_t* lw = LWSHELL_GET_LW(NULL);
|
lwshell_t* lwobj = LWSHELL_GET_LWOBJ(NULL);
|
||||||
|
|
||||||
if (in_data == NULL || len == 0) {
|
if (in_data == NULL || len == 0) {
|
||||||
return lwshellERRPAR;
|
return lwshellERRPAR;
|
||||||
@ -268,31 +269,31 @@ lwshell_input(const void* in_data, size_t len) {
|
|||||||
for (size_t i = 0; i < len; ++i) {
|
for (size_t i = 0; i < len; ++i) {
|
||||||
switch (d[i]) {
|
switch (d[i]) {
|
||||||
case LWSHELL_ASCII_CR: {
|
case LWSHELL_ASCII_CR: {
|
||||||
LW_OUTPUT(lw, "\r");
|
LWSHELL_OUTPUT(lwobj, "\r");
|
||||||
prv_parse_input(lw);
|
prv_parse_input(lwobj);
|
||||||
LWSHELL_RESET_BUFF(lw);
|
LWSHELL_RESET_BUFF(lwobj);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LWSHELL_ASCII_LF: {
|
case LWSHELL_ASCII_LF: {
|
||||||
LW_OUTPUT(lw, "\n");
|
LWSHELL_OUTPUT(lwobj, "\n");
|
||||||
prv_parse_input(lw);
|
prv_parse_input(lwobj);
|
||||||
LWSHELL_RESET_BUFF(lw);
|
LWSHELL_RESET_BUFF(lwobj);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LWSHELL_ASCII_BACKSPACE: {
|
case LWSHELL_ASCII_BACKSPACE: {
|
||||||
/* Try to delete character from buffer */
|
/* Try to delete character from buffer */
|
||||||
if (lw->buff_ptr > 0) {
|
if (lwobj->buff_ptr > 0) {
|
||||||
--lw->buff_ptr;
|
--lwobj->buff_ptr;
|
||||||
lw->buff[lw->buff_ptr] = '\0';
|
lwobj->buff[lwobj->buff_ptr] = '\0';
|
||||||
LW_OUTPUT(lw, "\b \b");
|
LWSHELL_OUTPUT(lwobj, "\b \b");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
char str[2] = {d[i]};
|
char str[2] = {d[i]};
|
||||||
LW_OUTPUT(lw, str);
|
LWSHELL_OUTPUT(lwobj, str);
|
||||||
if (d[i] >= 0x20 && d[i] < 0x7F) {
|
if (d[i] >= 0x20 && d[i] < 0x7F) {
|
||||||
LWSHELL_ADD_CH(lw, d[i]);
|
LWSHELL_ADD_CH(lwobj, d[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user