Merge pull request #5172 from mysterywolf/finsh

[shell] improve finsh_getchar
This commit is contained in:
guo 2021-10-14 12:01:39 +08:00 committed by GitHub
commit 163b4648fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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);