Browse Source

【修改】对ignore_cr的逻辑更正

Signed-off-by: liuxianliang <liuxianliang@rt-thread.com>
liuxianliang 6 năm trước cách đây
mục cha
commit
43655b085e
2 tập tin đã thay đổi với 12 bổ sung6 xóa
  1. 1 1
      inc/ppp_chat.h
  2. 11 5
      src/ppp_chat.c

+ 1 - 1
inc/ppp_chat.h

@@ -35,7 +35,7 @@ struct modem_chat_data {
     rt_uint8_t expect;      // use CHAT_RESP_xxx
     rt_uint8_t retries;
     rt_uint8_t timeout;     // second
-    rt_uint8_t ignore_cr;
+    rt_bool_t  ignore_cr;   // ignore CR character if it is RT_TRUE
 };
 
 

+ 11 - 5
src/ppp_chat.c

@@ -116,12 +116,19 @@ static rt_size_t chat_read_until(rt_device_t serial, void *buffer, rt_size_t siz
     return rt_device_read(serial, 0, buffer, size);
 }
 
+/*
+ * modem_flush_rx , clear data what is in the rx buffer
+ *
+ * @param struct rt_serial_device           *serial
+ *
+ * @return  RT_NULL: none
+ *
+ */
 static void modem_flush_rx(rt_device_t serial)
 {
-    char rdbuf[CHAT_READ_BUF_MAX];
+    char rdbuf[CHAT_READ_BUF_MAX] = {0};
 
-    while (rt_device_read(serial, 0, rdbuf, CHAT_READ_BUF_MAX))
-    {}
+    while (rt_device_read(serial, 0, rdbuf, CHAT_READ_BUF_MAX));
 }
 
 /*
@@ -144,8 +151,7 @@ static rt_err_t modem_chat_once(rt_device_t serial, const struct modem_chat_data
     {
         LOG_D(CHAT_DATA_FMT " transmit --> modem", CHAT_DATA_STR(data));
         rt_device_write(serial, 0, data->transmit, rt_strlen(data->transmit));
-
-        if (rt_strncmp("+++", data->transmit, 3) && data->ignore_cr == RT_TRUE)
+        if (data->ignore_cr == RT_FALSE)
             rt_device_write(serial, 0, "\r", 1);
     }