mirror of
https://gitee.com/moluo-tech/AT-Command.git
synced 2025-01-29 17:22:57 +08:00
1.解决未清除URC计数器导致频繁打印接收超时的问题
2.增加URC演示程序
This commit is contained in:
parent
3d482232c8
commit
93c7ab71ff
@ -10,6 +10,7 @@
|
||||
* 2020-01-02 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* 2021-01-20 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>debug<EFBFBD><EFBFBD><EFBFBD>Խӿ<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚӿ<EFBFBD>
|
||||
* 2021-03-03 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>URC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
******************************************************************************/
|
||||
|
||||
#include "at_chat.h"
|
||||
@ -345,6 +346,7 @@ static void urc_handler_entry(at_obj_t *at, char *urc, unsigned int size)
|
||||
static void urc_recv_process(at_obj_t *at, char *buf, unsigned int size)
|
||||
{
|
||||
char *urc_buf;
|
||||
int ch;
|
||||
unsigned short urc_size;
|
||||
urc_buf = (char *)at->adap.urc_buf;
|
||||
urc_size = at->adap.urc_bufsize;
|
||||
@ -352,20 +354,21 @@ static void urc_recv_process(at_obj_t *at, char *buf, unsigned int size)
|
||||
if (size == 0 && at->urc_cnt > 0) {
|
||||
if (AT_IS_TIMEOUT(at->urc_timer, 2000)) { /* <20><><EFBFBD>ճ<EFBFBD>ʱ*/
|
||||
urc_handler_entry(at, urc_buf, at->urc_cnt);
|
||||
at->recv_cnt = 0;
|
||||
at->urc_cnt = 0;
|
||||
AT_DEBUG("Urc recv timeout.\r\n");
|
||||
}
|
||||
} else if (urc_buf != NULL){
|
||||
at->urc_timer = AT_GET_TICK();
|
||||
while (size--) {
|
||||
if (*buf == '\n') { /*<2A><><EFBFBD>д<EFBFBD><D0B4><EFBFBD>*/
|
||||
ch = *buf++;
|
||||
urc_buf[at->urc_cnt++] = ch;
|
||||
if (ch == '\n' || ch == '\r' || ch == '\0') { /*urc<72><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
urc_buf[at->urc_cnt] = '\0';
|
||||
urc_handler_entry(at, urc_buf, at->urc_cnt);
|
||||
} else {
|
||||
urc_buf[at->urc_cnt++] = *buf++;
|
||||
if (at->urc_cnt >= urc_size) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if (at->urc_cnt > 2)
|
||||
urc_handler_entry(at, urc_buf, at->urc_cnt);
|
||||
at->urc_cnt = 0;
|
||||
} else if (at->urc_cnt >= urc_size) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
at->urc_cnt = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
* 2020-01-02 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* 2021-01-20 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>debug<EFBFBD><EFBFBD><EFBFBD>Խӿ<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚӿ<EFBFBD>
|
||||
* 2021-03-03 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>URC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef _ATCHAT_H_
|
||||
|
@ -7,15 +7,25 @@
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2021/01/20 Morro
|
||||
* 2021-01-20 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* 2021-03-03 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>URCʹ<EFBFBD>ð<EFBFBD><EFBFBD><EFBFBD>
|
||||
******************************************************************************/
|
||||
#include "at_chat.h"
|
||||
#include "wifi_uart.h"
|
||||
#include "public.h"
|
||||
#include "module.h"
|
||||
#include "cli.h"
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
void wifi_open(void);
|
||||
void wifi_close(void);
|
||||
static void at_error(void);
|
||||
void wifi_query_version(void);
|
||||
void wifi_ready_handler(char *recvbuf, int size);
|
||||
void wifi_connected_handler(char *recvbuf, int size);
|
||||
void wifi_disconnected_handler(char *recvbuf, int size);
|
||||
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
/*
|
||||
@ -23,25 +33,24 @@
|
||||
*/
|
||||
static at_obj_t at;
|
||||
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
void wifi_open(void);
|
||||
void wifi_close(void);
|
||||
static void at_error(void);
|
||||
void wifi_query_version(void);
|
||||
|
||||
/* Private functions ---------------------------------------------------------*/
|
||||
/*
|
||||
* @brief wifi urc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
//static unsigned char wifi_urcbuf[256];
|
||||
|
||||
/*
|
||||
* @brief wifi <EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
static unsigned char wifi_recvbuf[256];
|
||||
|
||||
/*
|
||||
* @brief wifi URC<EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
static unsigned char wifi_urcbuf[128];
|
||||
|
||||
/*
|
||||
* @brief wifi URC<EFBFBD><EFBFBD>
|
||||
*/
|
||||
static const utc_item_t urc_table[] = {
|
||||
"ready", wifi_ready_handler,
|
||||
"WIFI CONNECTED:", wifi_connected_handler,
|
||||
"WIFI DISCONNECTED", wifi_disconnected_handler,
|
||||
};
|
||||
|
||||
/*
|
||||
* @brief AT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@ -50,14 +59,39 @@ static const at_adapter_t at_adapter = {
|
||||
.write = wifi_uart_write,
|
||||
.read = wifi_uart_read,
|
||||
.error = at_error,
|
||||
.utc_tbl = NULL,
|
||||
.urc_buf = NULL,
|
||||
.utc_tbl = (utc_item_t *)urc_table,
|
||||
.urc_buf = wifi_urcbuf,
|
||||
.recv_buf = wifi_recvbuf,
|
||||
.urc_tbl_count = 0,
|
||||
.urc_bufsize = 0,
|
||||
.urc_tbl_count = sizeof(urc_table) / sizeof(urc_table[0]),
|
||||
.urc_bufsize = sizeof(wifi_urcbuf),
|
||||
.recv_bufsize = sizeof(wifi_recvbuf)
|
||||
};
|
||||
|
||||
/* Private functions ---------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* @brief wifi<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
||||
*/
|
||||
void wifi_ready_handler(char *recvbuf, int size)
|
||||
{
|
||||
printf("WIFI ready...\r\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief wifi<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
||||
*/
|
||||
static void wifi_connected_handler(char *recvbuf, int size)
|
||||
{
|
||||
printf("WIFI connection detected...\r\n");
|
||||
}
|
||||
/*
|
||||
* @brief wifi<EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
||||
*/
|
||||
static void wifi_disconnected_handler(char *recvbuf, int size)
|
||||
{
|
||||
printf("WIFI disconnect detected...\r\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>wifi
|
||||
*/
|
||||
@ -98,7 +132,7 @@ static int wifi_reset_work(at_env_t *e)
|
||||
e->state++;
|
||||
break;
|
||||
case 3:
|
||||
if (e->is_timeout(a, 2000)) //<2F><>ʱ<EFBFBD>ȴ<EFBFBD>2s
|
||||
if (e->is_timeout(a, 5000)) //<2F><>Լ<EFBFBD><D4BC>ʱ<EFBFBD>ȴ<EFBFBD>5s<35><73>wifi<66><69><EFBFBD><EFBFBD>
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
|
17
at_chat.c
17
at_chat.c
@ -10,6 +10,7 @@
|
||||
* 2020-01-02 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* 2021-01-20 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>debug<EFBFBD><EFBFBD><EFBFBD>Խӿ<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚӿ<EFBFBD>
|
||||
* 2021-03-03 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>URC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
******************************************************************************/
|
||||
|
||||
#include "at_chat.h"
|
||||
@ -345,6 +346,7 @@ static void urc_handler_entry(at_obj_t *at, char *urc, unsigned int size)
|
||||
static void urc_recv_process(at_obj_t *at, char *buf, unsigned int size)
|
||||
{
|
||||
char *urc_buf;
|
||||
int ch;
|
||||
unsigned short urc_size;
|
||||
urc_buf = (char *)at->adap.urc_buf;
|
||||
urc_size = at->adap.urc_bufsize;
|
||||
@ -352,20 +354,21 @@ static void urc_recv_process(at_obj_t *at, char *buf, unsigned int size)
|
||||
if (size == 0 && at->urc_cnt > 0) {
|
||||
if (AT_IS_TIMEOUT(at->urc_timer, 2000)) { /* <20><><EFBFBD>ճ<EFBFBD>ʱ*/
|
||||
urc_handler_entry(at, urc_buf, at->urc_cnt);
|
||||
at->recv_cnt = 0;
|
||||
at->urc_cnt = 0;
|
||||
AT_DEBUG("Urc recv timeout.\r\n");
|
||||
}
|
||||
} else if (urc_buf != NULL){
|
||||
at->urc_timer = AT_GET_TICK();
|
||||
while (size--) {
|
||||
if (*buf == '\n') { /*<2A><><EFBFBD>д<EFBFBD><D0B4><EFBFBD>*/
|
||||
ch = *buf++;
|
||||
urc_buf[at->urc_cnt++] = ch;
|
||||
if (ch == '\n' || ch == '\r' || ch == '\0') { /*urc<72><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
urc_buf[at->urc_cnt] = '\0';
|
||||
urc_handler_entry(at, urc_buf, at->urc_cnt);
|
||||
} else {
|
||||
urc_buf[at->urc_cnt++] = *buf++;
|
||||
if (at->urc_cnt >= urc_size) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if (at->urc_cnt > 2)
|
||||
urc_handler_entry(at, urc_buf, at->urc_cnt);
|
||||
at->urc_cnt = 0;
|
||||
} else if (at->urc_cnt >= urc_size) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
at->urc_cnt = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
* 2020-01-02 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* 2021-01-20 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>debug<EFBFBD><EFBFBD><EFBFBD>Խӿ<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚӿ<EFBFBD>
|
||||
* 2021-03-03 Morro <EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>URC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef _ATCHAT_H_
|
||||
|
Loading…
x
Reference in New Issue
Block a user