4
0
mirror of https://github.com/RT-Thread/rt-thread.git synced 2025-01-30 02:51:33 +08:00

[shell] improve finsh_getchar

This commit is contained in:
Meco Man 2021-10-13 22:38:01 -04:00
parent 33263d7e4e
commit 9fce0e5659
2 changed files with 9 additions and 5 deletions

View File

@ -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;

View File

@ -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);