chore: shell完善帮助信息,特殊处理不可见字符
Signed-off-by: huangshan <huangshan9@huawei.com> Change-Id: I3cbc559c388b5d5a524783c1f55c1e569a44465c
This commit is contained in:
parent
f3631fa266
commit
57cff794ae
|
@ -42,6 +42,8 @@
|
||||||
EVENT_CB_S g_shellInputEvent;
|
EVENT_CB_S g_shellInputEvent;
|
||||||
#define SHELL_CMD_MAX_SIZE 64
|
#define SHELL_CMD_MAX_SIZE 64
|
||||||
|
|
||||||
|
#define VISIABLE_CHAR(ch) ((ch) > 0x1F && (ch) < 0x7F)
|
||||||
|
|
||||||
UINT32 ShellMsgTypeGet(CmdParsed *cmdParsed, const CHAR *cmdType)
|
UINT32 ShellMsgTypeGet(CmdParsed *cmdParsed, const CHAR *cmdType)
|
||||||
{
|
{
|
||||||
CmdItemNode *curCmdItem = (CmdItemNode *)NULL;
|
CmdItemNode *curCmdItem = (CmdItemNode *)NULL;
|
||||||
|
@ -235,6 +237,14 @@ VOID ShellTaskEntry(VOID)
|
||||||
while (1) {
|
while (1) {
|
||||||
(VOID)LOS_EventRead(&g_shellInputEvent, 0x1, LOS_WAITMODE_AND | LOS_WAITMODE_CLR, LOS_WAIT_FOREVER);
|
(VOID)LOS_EventRead(&g_shellInputEvent, 0x1, LOS_WAITMODE_AND | LOS_WAITMODE_CLR, LOS_WAIT_FOREVER);
|
||||||
while ((*ptr = (UINT8)UartGetc()) != 0 && *ptr != 13) {
|
while ((*ptr = (UINT8)UartGetc()) != 0 && *ptr != 13) {
|
||||||
|
if (*ptr == '\x03') { /* ctrl + c */
|
||||||
|
PRINTK("^C\n\rOHOS # ", *ptr);
|
||||||
|
ptr = buf;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!VISIABLE_CHAR(*ptr)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
PRINTK("%c", *ptr);
|
PRINTK("%c", *ptr);
|
||||||
if ((ptr - buf) == (sizeof(buf) - 1)) {
|
if ((ptr - buf) == (sizeof(buf) - 1)) {
|
||||||
break;
|
break;
|
||||||
|
@ -243,14 +253,13 @@ VOID ShellTaskEntry(VOID)
|
||||||
}
|
}
|
||||||
if (ptr != buf) {
|
if (ptr != buf) {
|
||||||
if (*ptr == 13 || ((ptr - buf) == (sizeof(buf) - 1))) {
|
if (*ptr == 13 || ((ptr - buf) == (sizeof(buf) - 1))) {
|
||||||
PRINTK("%c", *ptr);
|
|
||||||
*ptr = '\0';
|
*ptr = '\0';
|
||||||
ptr = buf;
|
ptr = buf;
|
||||||
PRINTK("\n\r", buf);
|
PRINTK("\n\r");
|
||||||
ExecCmdline(buf);
|
ExecCmdline(buf);
|
||||||
PRINTK("OHOS # ");
|
PRINTK("OHOS # ");
|
||||||
}
|
}
|
||||||
} else {
|
} else if (*ptr == 13) {
|
||||||
PRINTK("\n\rOHOS # ");
|
PRINTK("\n\rOHOS # ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,10 @@
|
||||||
|
|
||||||
#include "shcmd.h"
|
#include "shcmd.h"
|
||||||
|
|
||||||
|
#define DEFAULT_SCREEN_WIDTH 80
|
||||||
|
#define MAX_CMD_KEY_WIDTH 8
|
||||||
|
#define CMD_ITEM_PER_LINE (DEFAULT_SCREEN_WIDTH / (MAX_CMD_KEY_WIDTH + 1))
|
||||||
|
|
||||||
INT32 OsShellCmdHelp(INT32 argc, const CHAR **argv)
|
INT32 OsShellCmdHelp(INT32 argc, const CHAR **argv)
|
||||||
{
|
{
|
||||||
UINT32 loop = 0;
|
UINT32 loop = 0;
|
||||||
|
@ -45,10 +49,10 @@ INT32 OsShellCmdHelp(INT32 argc, const CHAR **argv)
|
||||||
|
|
||||||
PRINTK("*******************shell commands:*************************\n");
|
PRINTK("*******************shell commands:*************************\n");
|
||||||
LOS_DL_LIST_FOR_EACH_ENTRY(curCmdItem, &(cmdInfo->cmdList.list), CmdItemNode, list) {
|
LOS_DL_LIST_FOR_EACH_ENTRY(curCmdItem, &(cmdInfo->cmdList.list), CmdItemNode, list) {
|
||||||
if ((loop & (8 - 1)) == 0) { /* 8 - 1:just align print */
|
if ((loop % CMD_ITEM_PER_LINE) == 0) { /* just align print */
|
||||||
PRINTK("\n");
|
PRINTK("\n");
|
||||||
}
|
}
|
||||||
PRINTK("%-12s ", curCmdItem->cmd->cmdKey);
|
PRINTK("%-8s ", curCmdItem->cmd->cmdKey);
|
||||||
|
|
||||||
loop++;
|
loop++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue