提交 9fce0e56 编写于 作者: mysterywolf's avatar mysterywolf

[shell] improve finsh_getchar

上级 33263d7e
......@@ -142,20 +142,24 @@ void finsh_set_prompt_mode(rt_uint32_t prompt_mode)
shell->prompt_mode = prompt_mode;
}
char finsh_getchar(void)
int finsh_getchar(void)
{
#ifdef RT_USING_DEVICE
#ifdef RT_USING_POSIX
return getchar();
#else
char ch = 0;
rt_device_t device;
RT_ASSERT(shell != RT_NULL);
if (shell->device == RT_NULL)
device = shell->device;
if (device == RT_NULL)
{
return -RT_ERROR;
return -1; /* EOF */
}
while (rt_device_read(shell->device, -1, &ch, 1) != 1)
while (rt_device_read(device, -1, &ch, 1) != 1)
rt_sem_take(&shell->rx_sem, RT_WAITING_FOREVER);
return ch;
......
......@@ -93,7 +93,7 @@ rt_uint32_t finsh_get_echo(void);
int finsh_system_init(void);
void finsh_set_device(const char *device_name);
const char *finsh_get_device(void);
char finsh_getchar(void);
int finsh_getchar(void);
rt_uint32_t finsh_get_prompt_mode(void);
void finsh_set_prompt_mode(rt_uint32_t prompt_mode);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册