fix at_vprintf and at_vprintfln and end_sign response
This commit is contained in:
parent
a28fd885b0
commit
e7b63ed7ab
|
@ -735,6 +735,8 @@ static void client_parser(at_client_t client)
|
|||
{
|
||||
at_response_t resp = client->resp;
|
||||
|
||||
char end_ch = client->recv_line_buf[client->recv_line_len - 1];
|
||||
|
||||
/* current receive is response */
|
||||
client->recv_line_buf[client->recv_line_len - 1] = '\0';
|
||||
if (resp->buf_len + client->recv_line_len < resp->buf_size)
|
||||
|
@ -752,7 +754,12 @@ static void client_parser(at_client_t client)
|
|||
LOG_E("Read response buffer failed. The Response buffer size is out of buffer size(%d)!", resp->buf_size);
|
||||
}
|
||||
/* check response result */
|
||||
if (rt_memcmp(client->recv_line_buf, AT_RESP_END_OK, rt_strlen(AT_RESP_END_OK)) == 0
|
||||
if ((client->end_sign != 0) && (end_ch == client->end_sign) && (resp->line_num == 0))
|
||||
{
|
||||
/* get the end sign, return response state END_OK.*/
|
||||
client->resp_status = AT_RESP_OK;
|
||||
}
|
||||
else if (rt_memcmp(client->recv_line_buf, AT_RESP_END_OK, rt_strlen(AT_RESP_END_OK)) == 0
|
||||
&& resp->line_num == 0)
|
||||
{
|
||||
/* get the end data by response result, return response state END_OK. */
|
||||
|
|
|
@ -68,21 +68,30 @@ const char *at_get_last_cmd(rt_size_t *cmd_size)
|
|||
rt_size_t at_vprintf(rt_device_t device, const char *format, va_list args)
|
||||
{
|
||||
last_cmd_len = vsnprintf(send_buf, sizeof(send_buf), format, args);
|
||||
if(last_cmd_len > sizeof(send_buf))
|
||||
last_cmd_len = sizeof(send_buf);
|
||||
|
||||
#ifdef AT_PRINT_RAW_CMD
|
||||
at_print_raw_cmd("sendline", send_buf, last_cmd_len);
|
||||
#endif
|
||||
|
||||
return rt_device_write(device, 0, send_buf, last_cmd_len);
|
||||
return at_device_send(device, 0, send_buf, last_cmd_len);
|
||||
}
|
||||
|
||||
rt_size_t at_vprintfln(rt_device_t device, const char *format, va_list args)
|
||||
{
|
||||
rt_size_t len;
|
||||
|
||||
len = at_vprintf(device, format, args);
|
||||
last_cmd_len = vsnprintf(send_buf, sizeof(send_buf) - 2, format, args);
|
||||
if(last_cmd_len > sizeof(send_buf) - 2)
|
||||
last_cmd_len = sizeof(send_buf) - 2;
|
||||
rt_memcpy(send_buf + last_cmd_len, "\r\n", 2);
|
||||
|
||||
rt_device_write(device, 0, "\r\n", 2);
|
||||
len = last_cmd_len + 2;
|
||||
|
||||
return len + 2;
|
||||
#ifdef AT_PRINT_RAW_CMD
|
||||
at_print_raw_cmd("sendline", send_buf, len);
|
||||
#endif
|
||||
|
||||
return at_device_send(device, 0, send_buf, len);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue