diff options
| author | 任光伟 <[email protected]> | 2019-12-26 00:46:38 +0800 |
|---|---|---|
| committer | RGW <[email protected]> | 2019-12-26 00:53:19 +0800 |
| commit | 27b7e0d929642b883c1ed7884162f822f359c9e9 (patch) | |
| tree | 1fa128885a858563eeedda7ff8291b4f35f9a5bb /components | |
| parent | dd23a367132eaace4d72b7428887aa268de02999 (diff) | |
解决在判断接收字节为0与RESET信号量之间接收到数据时,导致此次数据无法被处理的bug。
Signed-off-by: RGW <[email protected]>
Diffstat (limited to 'components')
| -rw-r--r-- | components/net/at/src/at_client.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/components/net/at/src/at_client.c b/components/net/at/src/at_client.c index ba4009738d..9dd731535a 100644 --- a/components/net/at/src/at_client.c +++ b/components/net/at/src/at_client.c @@ -434,18 +434,20 @@ static rt_err_t at_client_getchar(at_client_t client, char *ch, rt_int32_t timeo { rt_err_t result = RT_EOK; - while (rt_device_read(client->device, 0, ch, 1) == 0) +__retry: + result = rt_sem_take(client->rx_notice, rt_tick_from_millisecond(timeout)); + if (result != RT_EOK) { - rt_sem_control(client->rx_notice, RT_IPC_CMD_RESET, RT_NULL); - - result = rt_sem_take(client->rx_notice, rt_tick_from_millisecond(timeout)); - if (result != RT_EOK) - { - return result; - } + return result; + } + if(rt_device_read(client->device, 0, ch, 1) == 1) + { + return RT_EOK; + } + else + { + goto __retry; } - - return RT_EOK; } /** |
