You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
273 lines
7.0 KiB
273 lines
7.0 KiB
////////////////////////////////////////////////////////////////////////////
|
|
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
|
|
///-------------------------------------------------------------------------
|
|
/// @file bsp_test.c.c
|
|
/// @brief bsp @ driver config
|
|
///-------------------------------------------------------------------------
|
|
/// @version 1.0
|
|
/// @author CC
|
|
/// @date 20180331
|
|
/// @note cc_AS_stc02
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "task_w600.h"
|
|
|
|
#include "app_config.h"
|
|
#include "../msp/uart0.h"
|
|
#include "../msp/uart2.h"
|
|
#include "../tpc/at0d0a.h"
|
|
|
|
struct _s_task_gm35_gprs_ s_task_gm35_flow;
|
|
|
|
#define LEN_GPRS_TCP_PKG 18
|
|
|
|
U8 ins_cipsend[30] = "AT+CIPSEND=000\r\n";
|
|
|
|
U8 * _cipsend_hex(U8 len)
|
|
{
|
|
U8 pos = Lc_strlen("AT+CIPSEND=");
|
|
ins_cipsend[pos++] = len % 1000 / 100 + '0';
|
|
ins_cipsend[pos++] = len % 100 / 10 + '0';
|
|
ins_cipsend[pos++] = len % 10 / 1 + '0';
|
|
|
|
return ins_cipsend;
|
|
}
|
|
|
|
void L3_gm35_send_str(U8 *str)
|
|
{
|
|
L0_uart2_sendstr(str);
|
|
if(G.debug)
|
|
{
|
|
L0_uart0_sendstr(str);
|
|
}
|
|
}
|
|
|
|
//将数据放入gm35待发送缓冲区
|
|
void L3_gm35_send_data(U8 *buf , U8 len)
|
|
{
|
|
L3_gm35_send_str(_cipsend_hex(len));
|
|
L0_uart2_sendArray(buf,len);
|
|
if(G.debug)
|
|
{
|
|
L0_uart0_sendArray(buf,len);
|
|
}
|
|
}
|
|
|
|
void L3_gm35_rcv_data(U8* buf,U8 num)
|
|
{
|
|
if(G.debug)
|
|
{
|
|
L0_uart0_sendstr("ATRCV=");
|
|
L0_uart0_uchex(num);
|
|
L0_uart0_sendArray(buf,num);
|
|
}
|
|
}
|
|
|
|
|
|
void L3_uart2_exp_protocol(TS_Handle_0d0a *p)
|
|
{
|
|
if (1 == p->ok )
|
|
{
|
|
U8 *pPara = p->buf + 1;
|
|
s_task_gm35_flow.gprs_last_recv_stmp = s_nos_tick.t_1s;
|
|
if(Lc_strStartsWith(pPara,"OK"))
|
|
{
|
|
s_task_gm35_flow.ins_ok = 1;
|
|
}
|
|
|
|
p->ok = 0;
|
|
}
|
|
}
|
|
|
|
|
|
//------------------------------------------------------ gm35 tasks --------------------------------
|
|
void L3_task_gm35_flow_init(U8 mode)
|
|
{
|
|
L1_task_init(&s_task_gm35_flow.task);
|
|
L3_task_s_go(s_task_gm35_flow,D_task_init);
|
|
s_task_gm35_flow.mode = mode;
|
|
|
|
#if 0
|
|
g_at_send_status.send_lock = 0;
|
|
g_at_send_status.module_ok = 0;
|
|
g_at_send_status.sim_ok = 0;
|
|
g_at_send_status.net_ok = 0;
|
|
g_at_send_status.gprs_ok = 0;
|
|
g_at_send_status.conn_ok = 0;
|
|
|
|
g_at_send_status.ins_stmp = 0; //每次发送指令时设置
|
|
|
|
g_at_send_status.heart_stmp = 0; //连接成功时设置
|
|
g_at_send_status.data_stmp = 0;
|
|
g_at_send_status.sign_flag = 0;
|
|
g_at_send_status.ack_flag = 0;
|
|
|
|
g_at_send_status.gprs_last_recv_stmp = 0; //接收到指令时设置
|
|
g_at_send_status.tcp_last_recv_stmp = 0; //连接成功和接收到数据时设置
|
|
g_at_send_status.tcp_close_stmp = 0; //重新上电和检测到断开时设置
|
|
g_at_send_status.gm35_reboot_times = 0; //连接成功时清0
|
|
#endif
|
|
}
|
|
|
|
|
|
//------------------------ GM35 Flow Handle -----------------------------------
|
|
|
|
#define TTSS_TASK_GM35_FLOW_ATEQV 0x01
|
|
#define TTSS_TASK_GM35_FLOW_ATEQV_WAIT 0x02
|
|
#define TTSS_TASK_GM35_FLOW_ST 0x03
|
|
#define TTSS_TASK_GM35_FLOW_ST_WAIT 0x04
|
|
#define TTSS_TASK_GM35_FLOW_ST_WIFI 0x05
|
|
#define TTSS_TASK_GM35_FLOW_ST_WIFI_WAIT 0x06
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPMUX0 0x07
|
|
#define TTSS_TASK_GM35_FLOW_ST_CIPMUX0_WAIT 0x08
|
|
#define TTSS_TASK_GM35_FLOW_ST_TCP 0x09
|
|
#define TTSS_TASK_GM35_FLOW_ST_TCP_WAIT 0x0A
|
|
#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_WAIT 0x21
|
|
|
|
|
|
#define INS_TIMEOUT 2
|
|
#define GM35_SEND_DATA_INTERVAL 300
|
|
#define GM35_SEND_HEART_INTERVAL 60
|
|
#define GM35_SEND_CIPSTATUS_INTERVAL 5
|
|
|
|
void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
|
|
{
|
|
TTSS_Task_init()
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_10s);//上电等待10s
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV)
|
|
L3_gm35_send_str(AT_INS_ATE0);
|
|
s->ins_ok = 0;
|
|
s->ins_stmp = s_nos_tick.t_1s;
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV_WAIT,D_Tdelay_300ms);
|
|
|
|
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)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP,0);
|
|
}
|
|
}
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,0);
|
|
}
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST)
|
|
L3_gm35_send_str(AT_INS_ST);
|
|
s->ins_ok = 0;
|
|
s->ins_stmp = s_nos_tick.t_1s;
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WAIT,D_Tdelay_300ms);
|
|
|
|
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)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST,0);
|
|
}
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_WIFI)
|
|
L3_gm35_send_str(AT_INS_ST_WIFI);
|
|
s->ins_ok = 0;
|
|
s->ins_stmp = s_nos_tick.t_1s;
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI_WAIT,D_Tdelay_300ms);
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_WIFI_WAIT)
|
|
if(1 == s->ins_ok)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,0);
|
|
}
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,0);
|
|
}
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMUX0)
|
|
L3_gm35_send_str(AT_INS_ST_CIPMUX0);
|
|
s->ins_ok = 0;
|
|
s->ins_stmp = s_nos_tick.t_1s;
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0_WAIT,D_Tdelay_300ms);
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMUX0_WAIT)
|
|
if(1 == s->ins_ok)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,0);
|
|
}
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,0);
|
|
}
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_TCP)
|
|
L3_gm35_send_str(AT_INS_ST_TCP);
|
|
s->ins_ok = 0;
|
|
s->ins_stmp = s_nos_tick.t_1s;
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP_WAIT,D_Tdelay_300ms);
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_TCP_WAIT)
|
|
if(1 == s->ins_ok)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,0);
|
|
}
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,0);
|
|
}
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE1)
|
|
L3_gm35_send_str(AT_INS_ST_CIPMODE1);
|
|
s->ins_ok = 0;
|
|
s->ins_stmp = s_nos_tick.t_1s;
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1_WAIT,D_Tdelay_300ms);
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE1_WAIT)
|
|
if(1 == s->ins_ok)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,0);
|
|
}
|
|
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
|
|
{
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,0);
|
|
}
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPSEND)
|
|
L3_gm35_send_str(AT_INS_ST_CIPSEND);
|
|
s->ins_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_uart0_uc('A');
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_5s);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP)
|
|
L0_uart0_uc('C');
|
|
L0_uart2_sendstr("abcdefg");
|
|
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WAIT,D_Tdelay_10s);
|
|
|
|
TTSS_Task_end();
|
|
}
|
|
|
|
|
|
|