|
@ -17,6 +17,10 @@ |
|
|
#include "../msp/uart0.h" |
|
|
#include "../msp/uart0.h" |
|
|
|
|
|
|
|
|
struct _s_task_gm35_gprs_ s_task_gm35_flow; |
|
|
struct _s_task_gm35_gprs_ s_task_gm35_flow; |
|
|
|
|
|
TS_tcp_control ts_tcp_control; |
|
|
|
|
|
TS_tcp ts_tcp; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LEN_GPRS_TCP_PKG 18 |
|
|
#define LEN_GPRS_TCP_PKG 18 |
|
|
|
|
|
|
|
@ -62,37 +66,134 @@ void L3_gm35_rcv_data(U8* buf,U8 num) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
U8 wifi_ins[64]; |
|
|
|
|
|
char *GET_WIFI_INS() |
|
|
|
|
|
{ |
|
|
|
|
|
//AT+CWJAP_DEF=\"ccsens\",\"ccsens123\"\r\n"
|
|
|
|
|
|
Lc_strcpy(wifi_ins,"AT+CWJAP_DEF=\""); |
|
|
|
|
|
Lc_strcpy(wifi_ins+Lc_strlen(wifi_ins),G.st_sid); |
|
|
|
|
|
Lc_strcpy(wifi_ins+Lc_strlen(wifi_ins),"\",\""); |
|
|
|
|
|
Lc_strcpy(wifi_ins+Lc_strlen(wifi_ins),G.st_pwd); |
|
|
|
|
|
Lc_strcpy(wifi_ins+Lc_strlen(wifi_ins),"\"\r\n"); |
|
|
|
|
|
return wifi_ins; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void L3_uart2_exp_protocol(TS_Handle_0d0a *p) |
|
|
void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p) |
|
|
{ |
|
|
{ |
|
|
if (1 == p->ok ) |
|
|
if (1 == p->ok ) |
|
|
{ |
|
|
{ |
|
|
U8 *pPara = p->buf + 1; |
|
|
U8 *pPara = p->buf + 1; |
|
|
s_task_gm35_flow.gprs_last_recv_stmp = s_nos_tick.t_1s; |
|
|
s_task_gm35_flow.gprs_last_recv_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
//通用判定
|
|
|
if(Lc_strStartsWith(pPara,"OK")) |
|
|
if(Lc_strStartsWith(pPara,"OK")) |
|
|
{ |
|
|
{ |
|
|
s_task_gm35_flow.ins_ok = 1; |
|
|
s_task_gm35_flow.ins_ok = 1; |
|
|
} |
|
|
} |
|
|
|
|
|
else if(Lc_strStartsWith(pPara,"ERROR")) |
|
|
|
|
|
{ |
|
|
|
|
|
s_task_gm35_flow.st_error= 1; |
|
|
|
|
|
} |
|
|
|
|
|
//Station模式判定
|
|
|
|
|
|
if(s_task_gm35_flow.mode == W600_ST) |
|
|
|
|
|
{ |
|
|
if(Lc_strStartsWith(pPara,"WIFI GOT IP")) |
|
|
if(Lc_strStartsWith(pPara,"WIFI GOT IP")) |
|
|
{ |
|
|
{ |
|
|
s_task_gm35_flow.wifi_ok = 1; |
|
|
s_task_gm35_flow.st_wifi_ok = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(Lc_strStartsWith(pPara,"ALREADY CONNECTED")) |
|
|
|
|
|
{ |
|
|
|
|
|
s_task_gm35_flow.st_cip_ok = 1; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
if(Lc_strStartsWith(pPara,"CONNECT")) |
|
|
//AP模式判定
|
|
|
|
|
|
else if(s_task_gm35_flow.mode == W600_AP) |
|
|
{ |
|
|
{ |
|
|
s_task_gm35_flow.wifi_ok = 1; |
|
|
if(Lc_strStartsWith(pPara,"+IPD,0")) |
|
|
|
|
|
{ |
|
|
|
|
|
//解析协议,success
|
|
|
|
|
|
//1将id,pwd放入寄存器2.ok=1
|
|
|
|
|
|
//失败不处理不设置标志位
|
|
|
|
|
|
//buf: [20]+IPD,0,5:#ccsens:ccsens123$ 后面没\0
|
|
|
|
|
|
//pPara: +IPD,0,5:#ccsens:ccsens123$
|
|
|
|
|
|
|
|
|
|
|
|
int j = 0 , len = p->buf[0]; |
|
|
|
|
|
p->buf[len+1] = 0;//在+IPD,0,5:#ccsens:ccsens123$后加0
|
|
|
|
|
|
for(j=0;j<len;j++) |
|
|
|
|
|
{ |
|
|
|
|
|
if(pPara[j] == ':') |
|
|
|
|
|
{ |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
pPara += (j+1);//pPara ===== #ccsens:ccsens123$
|
|
|
|
|
|
L0_uart0_sendstr(pPara); |
|
|
|
|
|
len = Lc_strlen(pPara); |
|
|
|
|
|
if(pPara[0] == '#' && pPara[len-1] == '$') |
|
|
|
|
|
{ |
|
|
|
|
|
pPara[len-1] = 0; |
|
|
|
|
|
pPara++;//pPara ===== ccsens:ccsens123
|
|
|
|
|
|
for(j=0;j<len;j++) |
|
|
|
|
|
{ |
|
|
|
|
|
if(pPara[j] == ':') |
|
|
|
|
|
{ |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
pPara[j] = 0;//ccsens\0ccsens123
|
|
|
|
|
|
Lc_strcpy(G.st_sid, pPara); |
|
|
|
|
|
pPara += j+1;//ccsens123
|
|
|
|
|
|
Lc_strcpy(G.st_pwd, pPara); |
|
|
|
|
|
//标志位
|
|
|
|
|
|
s_task_gm35_flow.ap_rec_ok = 1; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
else if(Lc_strStartsWith(pPara,"0,CONNECT")) |
|
|
|
|
|
{ |
|
|
|
|
|
s_task_gm35_flow.ap_tcp_ok = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(Lc_strStartsWith(pPara,"SEND OK")) |
|
|
|
|
|
{ |
|
|
|
|
|
s_task_gm35_flow.ap_data_ok= 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(Lc_strStartsWith(pPara,"+DIST_STA_IP")) |
|
|
|
|
|
{ |
|
|
|
|
|
s_task_gm35_flow.ap_conn_ok = 1; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
p->ok = 0; |
|
|
p->ok = 0; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//------------------------------------------------------ gm35 tasks --------------------------------
|
|
|
//------------------------------------------------------ gm35 tasks --------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
void L3_task_tcp_init(void) |
|
|
|
|
|
{ |
|
|
|
|
|
L1_task_init(&ts_tcp.task); |
|
|
|
|
|
L3_task_s_go(ts_tcp,D_task_init); |
|
|
|
|
|
ts_tcp.slaverIndex = 0; |
|
|
|
|
|
ts_tcp.pkglen = 0; |
|
|
|
|
|
ts_tcp.retryTimes = 0; |
|
|
|
|
|
ts_tcp.ackFlag = 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void L3_task_tcp_control_init(void) |
|
|
|
|
|
{ |
|
|
|
|
|
L1_task_init(&ts_tcp_control.task); |
|
|
|
|
|
L3_task_s_go(ts_tcp_control,D_task_init); |
|
|
|
|
|
ts_tcp_control.conn_ok_pool = 0; |
|
|
|
|
|
ts_tcp_control.tcp_send_stmp = 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void L3_task_gm35_flow_init(U8 mode) |
|
|
void L3_task_gm35_flow_init(U8 mode) |
|
|
{ |
|
|
{ |
|
|
L1_task_init(&s_task_gm35_flow.task); |
|
|
L1_task_init(&s_task_gm35_flow.task); |
|
|
L3_task_s_go(s_task_gm35_flow,D_task_init); |
|
|
L3_task_s_go(s_task_gm35_flow,D_task_init); |
|
|
s_task_gm35_flow.mode = mode; |
|
|
s_task_gm35_flow.mode = mode; |
|
|
|
|
|
s_task_gm35_flow.send = 0; |
|
|
|
|
|
|
|
|
#if 0 |
|
|
#if 0 |
|
|
g_at_send_status.send_lock = 0; |
|
|
g_at_send_status.send_lock = 0; |
|
@ -118,25 +219,28 @@ void L3_task_gm35_flow_init(U8 mode) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//------------------------ GM35 Flow Handle -----------------------------------
|
|
|
//------------------------ GM35 Flow Handle -----------------------------------
|
|
|
|
|
|
#define TTSS_TASK_GM35_MODE 0x01 |
|
|
|
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_ATEQV 0x01 |
|
|
#define TTSS_TASK_GM35_FLOW_ATEQV 0x02 |
|
|
#define TTSS_TASK_GM35_FLOW_ATEQV_WAIT 0x02 |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_ST 0x03 |
|
|
#define TTSS_TASK_GM35_FLOW_ST 0x03 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_WAIT 0x04 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_WIFI 0x04 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_WIFI 0x05 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPMUX0 0x05 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_WIFI_WAIT 0x06 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_TCP 0x06 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPMUX0 0x07 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPMODE1 0x07 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPMUX0_WAIT 0x08 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPSEND 0x08 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_TCP 0x09 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_DATA 0x09 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_TCP_WAIT 0x0A |
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPMODE0 0x10 |
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPMODE1 0x0B |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPMODE1_WAIT 0x0C |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPSEND 0x0D |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPSEND_WAIT 0x0E |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_ST_DATA 0x0F |
|
|
|
|
|
|
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_AP 0x20 |
|
|
#define TTSS_TASK_GM35_FLOW_AP 0x20 |
|
|
#define TTSS_TASK_GM35_FLOW_AP_WAIT 0x21 |
|
|
#define TTSS_TASK_GM35_FLOW_AP_WIFI 0x21 |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_AP_CIPMUX1 0x22 |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_AP_SERVER 0x23 |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_TCP_TIME 0x24 |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_AP_DATA 0x25 |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT 0x26 |
|
|
|
|
|
#define TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT 0x27 |
|
|
|
|
|
#define TTSS_TASK_MODE_TRAN 0x28 |
|
|
|
|
|
#define TTSS_TASK_MODE_SERVER_CLOSE 0x29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define INS_TIMEOUT 5 |
|
|
#define INS_TIMEOUT 5 |
|
@ -144,138 +248,405 @@ void L3_task_gm35_flow_init(U8 mode) |
|
|
#define GM35_SEND_HEART_INTERVAL 60 |
|
|
#define GM35_SEND_HEART_INTERVAL 60 |
|
|
#define GM35_SEND_CIPSTATUS_INTERVAL 5 |
|
|
#define GM35_SEND_CIPSTATUS_INTERVAL 5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) |
|
|
void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) |
|
|
{ |
|
|
{ |
|
|
TTSS_Task_init() |
|
|
TTSS_Task_init() |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_10s);//上电等待10s
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_10s);//上电等待10s
|
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV) |
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
L3_gm35_send_str(AT_INS_ATE0); |
|
|
L3_gm35_send_str(AT_INS_ATE0); |
|
|
s->ins_ok = 0; |
|
|
s->ins_ok = 0; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV_WAIT,D_Tdelay_300ms); |
|
|
s->send = 1; |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV_WAIT) |
|
|
|
|
|
if(1 == s->ins_ok) |
|
|
|
|
|
{ |
|
|
|
|
|
if(s->mode == W600_ST) |
|
|
|
|
|
{ |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST,0); |
|
|
|
|
|
} |
|
|
} |
|
|
else if(s->mode == W600_AP) |
|
|
else if(s->ins_ok == 1) //等待
|
|
|
{ |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP,0); |
|
|
s->send = 0; |
|
|
} |
|
|
L2_task_go_Tdelay(s->mode == W600_ST ? TTSS_TASK_GM35_FLOW_ST |
|
|
|
|
|
: TTSS_TASK_GM35_FLOW_ST_CIPMODE0,D_Tdelay_3s); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
{ |
|
|
{//超时重发
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,0); |
|
|
s->send = 0; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST) |
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
L3_gm35_send_str(AT_INS_ST); |
|
|
L3_gm35_send_str(AT_INS_ST); |
|
|
s->ins_ok = 0; |
|
|
s->ins_ok = 0; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WAIT,D_Tdelay_300ms); |
|
|
s->send = 1; |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_WAIT) |
|
|
|
|
|
if(1 == s->ins_ok) |
|
|
|
|
|
{ |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,0); |
|
|
|
|
|
} |
|
|
} |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
else if(s->ins_ok == 1) //等待
|
|
|
{ |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST,0); |
|
|
s->send = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,D_Tdelay_3s); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
|
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_WIFI) |
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_WIFI) |
|
|
L3_gm35_send_str(AT_INS_ST_WIFI); |
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(GET_WIFI_INS()); |
|
|
s->ins_ok = 0; |
|
|
s->ins_ok = 0; |
|
|
s->wifi_ok = 0; |
|
|
s->st_wifi_ok = 0; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI_WAIT,D_Tdelay_300ms); |
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok && 1 == s->st_wifi_ok) //等待
|
|
|
|
|
|
{ |
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,D_Tdelay_3s); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_WIFI_WAIT) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
if(1 == s->ins_ok && 1 == s->wifi_ok) |
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMUX0) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(AT_INS_ST_CIPMUX0); |
|
|
|
|
|
s->ins_ok = 0; |
|
|
|
|
|
s->st_wifi_ok = 0; |
|
|
|
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok) //等待
|
|
|
{ |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,0); |
|
|
s->send = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,D_Tdelay_3s); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
|
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_TCP) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(AT_INS_ST_TCP); |
|
|
|
|
|
s->ins_ok = 0; |
|
|
|
|
|
s->st_cip_ok = 0; |
|
|
|
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok || 1 == s->st_cip_ok) //等待
|
|
|
{ |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,0); |
|
|
s->send = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,D_Tdelay_3s); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMUX0) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
L3_gm35_send_str(AT_INS_ST_CIPMUX0); |
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE1) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(AT_INS_ST_CIPMODE1); |
|
|
s->ins_ok = 0; |
|
|
s->ins_ok = 0; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0_WAIT,D_Tdelay_300ms); |
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok) //等待
|
|
|
|
|
|
{ |
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_3s); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMUX0_WAIT) |
|
|
else if(1 == s->st_error) |
|
|
if(1 == s->ins_ok) |
|
|
|
|
|
{ |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,0); |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST,0); |
|
|
} |
|
|
} |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
|
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPSEND) |
|
|
|
|
|
L3_gm35_send_str(AT_INS_ST_CIPSEND); |
|
|
|
|
|
s->ins_ok = 0; |
|
|
|
|
|
s->conn_ok = 0; |
|
|
|
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_300ms); |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_DATA) |
|
|
|
|
|
//L0_uart2_sendstr("abcdefg");
|
|
|
|
|
|
s->conn_ok = 1; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_3s); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE0) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(AT_INS_ST_CIPMODE0); |
|
|
|
|
|
s->ins_ok = 0; |
|
|
|
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok) //等待
|
|
|
{ |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,0); |
|
|
s->send = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP,D_Tdelay_3s); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_TCP) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
L3_gm35_send_str(AT_INS_ST_TCP); |
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(AT_INS_AP); |
|
|
s->ins_ok = 0; |
|
|
s->ins_ok = 0; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP_WAIT,D_Tdelay_5s); |
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok) //等待
|
|
|
|
|
|
{ |
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI,D_Tdelay_3s); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_TCP_WAIT) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
if(1 == s->ins_ok) |
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_WIFI) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(AT_INS_AP_WIFI); |
|
|
|
|
|
s->ins_ok = 0; |
|
|
|
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok) //等待
|
|
|
{ |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,0); |
|
|
s->send = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_3s); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
|
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_CIPMUX1) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(AT_INS_AP_CIPMUX1); |
|
|
|
|
|
s->ins_ok = 0; |
|
|
|
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok) //等待
|
|
|
{ |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,0); |
|
|
s->send = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_SERVER,D_Tdelay_3s); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE1) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
L3_gm35_send_str(AT_INS_ST_CIPMODE1); |
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_SERVER) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(AT_INS_AP_SERVER); |
|
|
s->ins_ok = 0; |
|
|
s->ins_ok = 0; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1_WAIT,D_Tdelay_300ms); |
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok) //等待
|
|
|
|
|
|
{ |
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_TCP_TIME,D_Tdelay_3s); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE1_WAIT) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
if(1 == s->ins_ok) |
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_TCP_TIME) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(AT_INS_AP_TCP_TIME); |
|
|
|
|
|
s->ins_ok = 0; |
|
|
|
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok) //等待
|
|
|
{ |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,0); |
|
|
s->send = 0; |
|
|
|
|
|
s->ap_tcp_ok = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT,D_Tdelay_3s); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
|
|
|
{//超时重发
|
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT) |
|
|
|
|
|
if(1 == s->ap_tcp_ok) |
|
|
|
|
|
{ |
|
|
|
|
|
s->ap_conn_ok = 0; |
|
|
|
|
|
s->ap_tcp_ok = 0; |
|
|
|
|
|
s->ap_rec_ok = 0; |
|
|
|
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT,0); |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT) |
|
|
|
|
|
if(1 == s->ap_rec_ok)//收到正确的数据才会ok=1
|
|
|
|
|
|
{//ok回复#ok$\r\n
|
|
|
|
|
|
L0_uart0_sendstr("ap config ok"); |
|
|
|
|
|
L3_gm35_send_str(AT_INS_AP_SEND);//进入发送模式
|
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_MODE_TRAN,D_Tdelay_1s); |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ap_conn_ok) |
|
|
|
|
|
{ |
|
|
|
|
|
s->ap_conn_ok = 0; |
|
|
|
|
|
s->ap_tcp_ok = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_300ms); |
|
|
|
|
|
} |
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_MODE_TRAN) |
|
|
|
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str("#OK$\r\n"); |
|
|
|
|
|
s->ins_ok = 0; |
|
|
|
|
|
s->ap_data_ok = 0; |
|
|
|
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ap_data_ok) //等待
|
|
|
{ |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,0); |
|
|
s->send = 0; |
|
|
|
|
|
s->ap_tcp_ok = 0; |
|
|
|
|
|
L2_task_go_Tdelay(TTSS_TASK_MODE_SERVER_CLOSE,D_Tdelay_3s); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPSEND) |
|
|
TTSS_Task_step(TTSS_TASK_MODE_SERVER_CLOSE) |
|
|
L3_gm35_send_str(AT_INS_ST_CIPSEND); |
|
|
if(s->send == 0) |
|
|
|
|
|
{//发送
|
|
|
|
|
|
L3_gm35_send_str(AT_INS_AP_SERVER_CLOSE); |
|
|
s->ins_ok = 0; |
|
|
s->ins_ok = 0; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
s->ins_stmp = s_nos_tick.t_1s; |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_300ms); |
|
|
s->send = 1; |
|
|
|
|
|
} |
|
|
|
|
|
else if(1 == s->ins_ok) //等待
|
|
|
|
|
|
{ |
|
|
|
|
|
s->send = 0; |
|
|
|
|
|
L3_task_gm35_flow_init(W600_ST); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_DATA) |
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT) |
|
|
L0_uart0_uc('A'); |
|
|
{//超时重发
|
|
|
L0_uart2_sendstr("abcdefg"); |
|
|
s->send = 0; |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_5s); |
|
|
} |
|
|
|
|
|
TTSS_Task_end(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#define D_task_tcp_constructor_modbus_pkg 0x41 |
|
|
|
|
|
#define D_task_tcp_send_modbus_pkg 0x42 |
|
|
|
|
|
#define D_task_tcp_wait_modbus_ack 0x43 |
|
|
|
|
|
#define D_task_tcp_switch_next_slaver 0x44 |
|
|
|
|
|
|
|
|
|
|
|
void L3_task_tcp_handle(TS_tcp *s) |
|
|
|
|
|
{ |
|
|
|
|
|
TTSS_Task_init(); |
|
|
|
|
|
L2_task_go(D_task_tcp_constructor_modbus_pkg); |
|
|
|
|
|
|
|
|
|
|
|
TTSS_Task_step(D_task_tcp_constructor_modbus_pkg) //构造包
|
|
|
|
|
|
if(R.ccmd_slaver_info[s->slaverIndex].mask > 0) |
|
|
|
|
|
{ |
|
|
|
|
|
s->pkglen = L3_pack_ccmodbus(&s->loopPkg,R.ccmd_slaver_info + s->slaverIndex); |
|
|
|
|
|
s->ackFlag = 0; |
|
|
|
|
|
s->retryTimes = 0; |
|
|
|
|
|
L2_task_go(D_task_tcp_send_modbus_pkg); |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
L2_task_go(D_task_tcp_switch_next_slaver); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
TTSS_Task_step(D_task_tcp_send_modbus_pkg) //发送包
|
|
|
|
|
|
L3_gm35_send_data((U8*)&s->loopPkg,s->pkglen); |
|
|
|
|
|
s->sendStamp = s_nos_tick.t_1s; |
|
|
|
|
|
if(R.ccmd_slaver_info[s->slaverIndex].mask == 1) |
|
|
|
|
|
{ |
|
|
|
|
|
R.ccmd_slaver_info[s->slaverIndex].mask = 0; |
|
|
|
|
|
} |
|
|
|
|
|
L2_task_go(D_task_tcp_wait_modbus_ack); |
|
|
|
|
|
|
|
|
|
|
|
TTSS_Task_step(D_task_tcp_wait_modbus_ack) //等待ack
|
|
|
|
|
|
if(s_uart2_tcp_rec.ok) |
|
|
|
|
|
{ |
|
|
|
|
|
s_uart2_tcp_rec.ok = 0; |
|
|
|
|
|
s_task_gm35_flow.tcp_last_recv_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
|
|
|
|
|
|
s->pAckPkg = (TS_PH3_ccmodbus*)(s_uart2_tcp_rec.sp); |
|
|
|
|
|
L3_gm35_rcv_data((U8*)s->pAckPkg,s->pAckPkg->num + 3); |
|
|
|
|
|
if(s->pAckPkg->slaver == R.ccmd_slaver_info[s->slaverIndex].slaver) |
|
|
|
|
|
{ |
|
|
|
|
|
s->ackFlag = 1; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(s->ackFlag == 1 || s_nos_tick.t_1s - s->sendStamp >= 5) //收到ack或者超时
|
|
|
|
|
|
{ |
|
|
|
|
|
L2_task_go(D_task_tcp_switch_next_slaver); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
TTSS_Task_step(D_task_tcp_switch_next_slaver) //切换下一个
|
|
|
|
|
|
if(++ s->slaverIndex >= CCMD_SLAVER_INFO_MAX) |
|
|
|
|
|
{ |
|
|
|
|
|
s->slaverIndex = 0; |
|
|
|
|
|
} |
|
|
|
|
|
L2_task_go(D_task_tcp_constructor_modbus_pkg); |
|
|
|
|
|
|
|
|
|
|
|
TTSS_Task_end(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define D_task_tcp_control_01 0x51 |
|
|
|
|
|
#define D_task_tcp_control_02 0x52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP) |
|
|
void L3_task_tcp_control_handle(TS_tcp_control *s) |
|
|
L0_uart0_uc('C'); |
|
|
{ |
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WAIT,D_Tdelay_10s); |
|
|
TTSS_Task_init(); |
|
|
|
|
|
L2_task_go(D_task_tcp_control_01); |
|
|
|
|
|
|
|
|
|
|
|
TTSS_Task_step(D_task_tcp_control_01) |
|
|
|
|
|
if(s->conn_ok_pool != s_task_gm35_flow.conn_ok) |
|
|
|
|
|
{ |
|
|
|
|
|
s->conn_ok_pool = s_task_gm35_flow.conn_ok; |
|
|
|
|
|
} |
|
|
|
|
|
L2_task_go(D_task_tcp_control_02); |
|
|
|
|
|
|
|
|
|
|
|
TTSS_Task_step(D_task_tcp_control_02) |
|
|
|
|
|
if(s_task_gm35_flow.conn_ok) |
|
|
|
|
|
{ |
|
|
|
|
|
//3s一次发送数据包
|
|
|
|
|
|
if(s_nos_tick.t_1s - ts_tcp_control.tcp_send_stmp >= 3) |
|
|
|
|
|
{ |
|
|
|
|
|
R.ccmd_slaver_info[0].mask = 1; |
|
|
|
|
|
ts_tcp_control.tcp_send_stmp = s_nos_tick.t_1s; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
L2_task_go(D_task_tcp_control_01); |
|
|
|
|
|
|
|
|
TTSS_Task_end(); |
|
|
TTSS_Task_end(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/********************************************************/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|