Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Mozi
rt-thread
提交
33fb2801
R
rt-thread
项目概览
Mozi
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
33fb2801
编写于
7月 04, 2018
作者:
B
Bernard Xiong
提交者:
GitHub
7月 04, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1601 from aozima/shell_dev
update shell prompt.
上级
eb821ae0
efada876
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
75 addition
and
7 deletion
+75
-7
components/finsh/shell.c
components/finsh/shell.c
+69
-3
components/finsh/shell.h
components/finsh/shell.h
+6
-4
未找到文件。
components/finsh/shell.c
浏览文件 @
33fb2801
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
* 2011-02-23 Bernard fix variable section end issue of finsh shell
* 2011-02-23 Bernard fix variable section end issue of finsh shell
* initialization when use GNU GCC compiler.
* initialization when use GNU GCC compiler.
* 2016-11-26 armink add password authentication
* 2016-11-26 armink add password authentication
* 2018-07-02 aozima add custome prompt support.
*/
*/
#include <rthw.h>
#include <rthw.h>
...
@@ -56,17 +57,54 @@ ALIGN(RT_ALIGN_SIZE)
...
@@ -56,17 +57,54 @@ ALIGN(RT_ALIGN_SIZE)
static
char
finsh_thread_stack
[
FINSH_THREAD_STACK_SIZE
];
static
char
finsh_thread_stack
[
FINSH_THREAD_STACK_SIZE
];
#endif
#endif
struct
finsh_shell
*
shell
;
struct
finsh_shell
*
shell
;
static
char
*
finsh_prompt_custom
=
RT_NULL
;
#ifdef RT_USING_HEAP
int
finsh_set_prompt
(
const
char
*
prompt
)
{
if
(
finsh_prompt_custom
)
{
rt_free
(
finsh_prompt_custom
);
finsh_prompt_custom
=
RT_NULL
;
}
/* strdup */
if
(
prompt
)
{
finsh_prompt_custom
=
rt_malloc
(
strlen
(
prompt
)
+
1
);
if
(
finsh_prompt_custom
)
{
strcpy
(
finsh_prompt_custom
,
prompt
);
}
}
return
0
;
}
#endif
/* RT_USING_HEAP */
#if defined(FINSH_USING_MSH) || (defined(RT_USING_DFS) && defined(DFS_USING_WORKDIR))
#if defined(RT_USING_DFS)
#if defined(RT_USING_DFS)
#include <dfs_posix.h>
#include <dfs_posix.h>
#endif
#endif
/* RT_USING_DFS */
const
char
*
finsh_get_prompt
()
const
char
*
finsh_get_prompt
()
{
{
#define _MSH_PROMPT "msh "
#define _MSH_PROMPT "msh "
#define _PROMPT "finsh "
#define _PROMPT "finsh "
static
char
finsh_prompt
[
RT_CONSOLEBUF_SIZE
+
1
]
=
{
0
};
static
char
finsh_prompt
[
RT_CONSOLEBUF_SIZE
+
1
]
=
{
0
};
/* check prompt mode */
if
(
!
shell
->
prompt_mode
)
{
finsh_prompt
[
0
]
=
'\0'
;
return
finsh_prompt
;
}
if
(
finsh_prompt_custom
)
{
strncpy
(
finsh_prompt
,
finsh_prompt_custom
,
sizeof
(
finsh_prompt
)
-
1
);
return
finsh_prompt
;
}
#ifdef FINSH_USING_MSH
#ifdef FINSH_USING_MSH
if
(
msh_is_used
())
strcpy
(
finsh_prompt
,
_MSH_PROMPT
);
if
(
msh_is_used
())
strcpy
(
finsh_prompt
,
_MSH_PROMPT
);
else
else
...
@@ -82,7 +120,34 @@ const char *finsh_get_prompt()
...
@@ -82,7 +120,34 @@ const char *finsh_get_prompt()
return
finsh_prompt
;
return
finsh_prompt
;
}
}
#endif
/**
* @ingroup finsh
*
* This function get the prompt mode of finsh shell.
*
* @return prompt the prompt mode, 0 disable prompt mode, other values enable prompt mode.
*/
rt_uint32_t
finsh_get_prompt_mode
(
void
)
{
RT_ASSERT
(
shell
!=
RT_NULL
);
return
shell
->
prompt_mode
;
}
/**
* @ingroup finsh
*
* This function set the prompt mode of finsh shell.
*
* The parameter 0 disable prompt mode, other values enable prompt mode.
*
* @param prompt the prompt mode
*/
void
finsh_set_prompt_mode
(
rt_uint32_t
prompt_mode
)
{
RT_ASSERT
(
shell
!=
RT_NULL
);
shell
->
prompt_mode
=
prompt_mode
;
}
static
char
finsh_getchar
(
void
)
static
char
finsh_getchar
(
void
)
{
{
...
@@ -789,6 +854,7 @@ int finsh_system_init(void)
...
@@ -789,6 +854,7 @@ int finsh_system_init(void)
#endif
/* RT_USING_HEAP */
#endif
/* RT_USING_HEAP */
rt_sem_init
(
&
(
shell
->
rx_sem
),
"shrx"
,
0
,
0
);
rt_sem_init
(
&
(
shell
->
rx_sem
),
"shrx"
,
0
,
0
);
finsh_set_prompt_mode
(
1
);
if
(
tid
!=
NULL
&&
result
==
RT_EOK
)
if
(
tid
!=
NULL
&&
result
==
RT_EOK
)
rt_thread_startup
(
tid
);
rt_thread_startup
(
tid
);
...
...
components/finsh/shell.h
浏览文件 @
33fb2801
...
@@ -44,12 +44,10 @@
...
@@ -44,12 +44,10 @@
#endif
#endif
#define FINSH_OPTION_ECHO 0x01
#define FINSH_OPTION_ECHO 0x01
#if defined(FINSH_USING_MSH) || (defined(RT_USING_DFS) && defined(DFS_USING_WORKDIR))
#define FINSH_PROMPT finsh_get_prompt()
#define FINSH_PROMPT finsh_get_prompt()
const
char
*
finsh_get_prompt
(
void
);
const
char
*
finsh_get_prompt
(
void
);
#else
int
finsh_set_prompt
(
const
char
*
prompt
);
#define FINSH_PROMPT "finsh>>"
#endif
#ifdef FINSH_USING_HISTORY
#ifdef FINSH_USING_HISTORY
#ifndef FINSH_HISTORY_LINES
#ifndef FINSH_HISTORY_LINES
...
@@ -86,6 +84,7 @@ struct finsh_shell
...
@@ -86,6 +84,7 @@ struct finsh_shell
enum
input_stat
stat
;
enum
input_stat
stat
;
rt_uint8_t
echo_mode
:
1
;
rt_uint8_t
echo_mode
:
1
;
rt_uint8_t
prompt_mode
:
1
;
#ifdef FINSH_USING_HISTORY
#ifdef FINSH_USING_HISTORY
rt_uint16_t
current_history
;
rt_uint16_t
current_history
;
...
@@ -118,6 +117,9 @@ int finsh_system_init(void);
...
@@ -118,6 +117,9 @@ int finsh_system_init(void);
void
finsh_set_device
(
const
char
*
device_name
);
void
finsh_set_device
(
const
char
*
device_name
);
const
char
*
finsh_get_device
(
void
);
const
char
*
finsh_get_device
(
void
);
rt_uint32_t
finsh_get_prompt_mode
(
void
);
void
finsh_set_prompt_mode
(
rt_uint32_t
prompt_mode
);
#ifdef FINSH_USING_AUTH
#ifdef FINSH_USING_AUTH
rt_err_t
finsh_set_password
(
const
char
*
password
);
rt_err_t
finsh_set_password
(
const
char
*
password
);
const
char
*
finsh_get_password
(
void
);
const
char
*
finsh_get_password
(
void
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录