summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWayne <[email protected]>2021-02-04 22:53:58 +0800
committerGitHub <[email protected]>2021-02-04 22:53:58 +0800
commita50d81827a1a4d7172e761dd64cecc5553f349d9 (patch)
treead3ef184d194d87b44d5f341e07b2254bcaeebed
parentd514fea54ac4e1ba22983ff76b626b2ef81f9fdc (diff)
Revert "fix the bug that rx_notice out of sync when data received after last rt_device_read() is zero"
-rw-r--r--components/net/at/src/at_client.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/components/net/at/src/at_client.c b/components/net/at/src/at_client.c
index b9d0ee89cb..788549392d 100644
--- a/components/net/at/src/at_client.c
+++ b/components/net/at/src/at_client.c
@@ -434,20 +434,18 @@ static rt_err_t at_client_getchar(at_client_t client, char *ch, rt_int32_t timeo
{
rt_err_t result = RT_EOK;
-__retry:
- result = rt_sem_take(client->rx_notice, rt_tick_from_millisecond(timeout));
- if (result != RT_EOK)
- {
- return result;
- }
- if(rt_device_read(client->device, 0, ch, 1) == 1)
- {
- return RT_EOK;
- }
- else
+ while (rt_device_read(client->device, 0, ch, 1) == 0)
{
- goto __retry;
+ 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 RT_EOK;
}
/**