2485 lines
70 KiB
C
2485 lines
70 KiB
C
|
/************************************************************************************
|
|||
|
* @Copyright (c) :(C)2017, Qindao ieslab Co., Ltd
|
|||
|
* @FileName :pic24_nb_driver.c
|
|||
|
* @Author :QDIES PLATFORM TEAM
|
|||
|
* @Version :V1.0
|
|||
|
* @Date :2017-03-01
|
|||
|
* @Description :
|
|||
|
************************************************************************************/
|
|||
|
#include "sys_config.h"
|
|||
|
#ifdef NB_MODULE_MN316
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C"
|
|||
|
{
|
|||
|
#endif
|
|||
|
|
|||
|
#include "nb_uart_driver_mn316.h"
|
|||
|
#include "nb_driver_mn316.h"
|
|||
|
#include "stdio.h"
|
|||
|
#include <time.h>
|
|||
|
#include "UWater_timer1uS_driver.h"
|
|||
|
#include "UWater_uart_driver.h"
|
|||
|
#include "UWater_Rtcc_Driver.h"
|
|||
|
#include "UWater_frame_app.h"
|
|||
|
#include "nb_upload_monitor.h"
|
|||
|
|
|||
|
/********************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>************************************/
|
|||
|
//ģ<><C4A3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
|
|||
|
NBIOT_PARA Nbiot_Para;
|
|||
|
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
NBIOT_SEND_DATA Nbiot_Send_Data;
|
|||
|
//ATָ<54><D6B8>ƴ<EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD>
|
|||
|
static char stringbuffer_temp[UP_BUF_SIZE*2];
|
|||
|
//ATָ<54><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>
|
|||
|
static char AT_BUF[50 + UP_BUF_SIZE * 2];
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
TYP_TASK_RESULT g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
//<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>ͨ<EFBFBD><CDA8>
|
|||
|
u8 g_s_nbiot_send_type;
|
|||
|
//ģ<><C4A3><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־
|
|||
|
u8 nb_power_flag = FALSE;
|
|||
|
//ATָ<54><D6B8><EFBFBD><EFBFBD>ѯʧ<D1AF>ܴ<EFBFBD><DCB4><EFBFBD>
|
|||
|
u8 at_requestErrorCount=0;
|
|||
|
//ATָ<54><D6B8>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
|||
|
TYP_RESULT_CODE g_at_request_res;
|
|||
|
//ATָ<54><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int g_at_index=0;
|
|||
|
//TCPҪ<50><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
|
|||
|
u16 tcp_send_len=0;
|
|||
|
char tcp_send_len_buf[8];
|
|||
|
u8 tcp_send_len_buf_len=0;
|
|||
|
//UDPҪ<50><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
|
|||
|
u16 udp_send_len=0;
|
|||
|
char udp_send_len_buf[8];
|
|||
|
u8 udp_send_len_buf_len=0;
|
|||
|
//IP<49><50>ַ
|
|||
|
unsigned char *coap_ip;
|
|||
|
u16 coap_port;
|
|||
|
unsigned char *udp_ip1;
|
|||
|
u16 udp_port1;
|
|||
|
unsigned char *udp_ip2;
|
|||
|
u16 udp_port2;
|
|||
|
u8 nbiot_temp_connect_type=NBIOT_CONNECT_COAP;
|
|||
|
//PSM״̬
|
|||
|
TYP_PSM_STATE psm_model_state = PSM_STATE_OUT;
|
|||
|
TYP_PSM_WAKEUP_STATE s_psm_wakeup_state = PSM_WKUPSTA_IDLE;
|
|||
|
TYP_PSM_SLEEP_STATE s_psm_sleep_state = PSM_SLPSTA_IDLE;
|
|||
|
//ATָ<54>
|
|||
|
static STRUCT_AT_CMD AtCmdBuf[AT_CMD_COUNT]={
|
|||
|
/*****ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ָ<EFBFBD><D6B8>********************/
|
|||
|
{AT_CODE_AT, "AT+CMVER", WT_2S, RETRY_5, cst_AT_No_AT},//ATָ<54><D6B8>
|
|||
|
{AT_CODE_CFUN1, "AT+CFUN=1", WT_2S, RETRY_5, cst_AT_No_AT_CFUN},//
|
|||
|
{AT_CODE_CPIN, "AT+CPIN?", WT_2S, RETRY_5, cst_AT_No_AT_CPIN},//<2F><>ѯSIM<49><4D>״̬,READY<44><59>ʾSIM<49><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_CSQ, "AT+CSQ", WT_2S, RETRY_5, cst_AT_No_AT_CSQ},//<2F><>ѯ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_CEREG, "AT+CEREG?", WT_2S, RETRY_15,cst_AT_No_AT_CEREG},//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>״̬
|
|||
|
{AT_CODE_CGACT_CK,"AT+CGACT?", WT_5S, RETRY_30,cst_AT_No_AT_CGACT_how},//<2F><>ѯ<EFBFBD><D1AF><EFBFBD>總<EFBFBD><E7B8BD>״̬
|
|||
|
{AT_CODE_COPS_CK, "AT+COPS?", WT_5S, RETRY_30,cst_AT_No_AT},//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>Ӫ<EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ 9 <20><> NB-IOT <20><><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_CGCONTRDP, "AT+CGCONTRDP", WT_5S, RETRY_30,cst_AT_No_AT},//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> APN <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD> IP <20><>ַ<EFBFBD><D6B7>
|
|||
|
{AT_CODE_CGATT_CK,"AT+CGATT?", WT_2S, RETRY_30,cst_AT_No_AT_CGATT_how},//<2F><>ѯ<EFBFBD><D1AF><EFBFBD>總<EFBFBD><E7B8BD>״̬
|
|||
|
{AT_CODE_CGDCONT_CK,"AT+CGDCONT?", WT_5S, RETRY_30,cst_AT_No_AT},//<2F><>ѯ<EFBFBD><D1AF><EFBFBD>總<EFBFBD><E7B8BD>״̬
|
|||
|
{AT_CODE_NUESTATS, "AT+NUESTATS=RADIO", WT_5S, RETRY_3,cst_AT_No_AT_NUESTATS},//<2F><>ѯ<EFBFBD><D1AF><EFBFBD>總<EFBFBD><E7B8BD>״̬
|
|||
|
|
|||
|
{AT_CODE_VERCTRL, "AT+VERCTRL?", WT_2S, RETRY_5, cst_AT_No_VERCTRL_CK},//<2F><>ѯ<EFBFBD><D1AF><EFBFBD>ʽ
|
|||
|
{AT_CODE_VERCTRL1,"AT+VERCTRL=0,1", WT_2S, RETRY_5, cst_AT_No_AT},//<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ʽ
|
|||
|
{AT_CODE_CMEE, "AT+CMEE=1", WT_2S, RETRY_5, cst_AT_No_AT_CMEE},//<2F><><EFBFBD><EFBFBD>ERROR<4F><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
{AT_CODE_CGSN, "AT+CGSN=1", WT_2S, RETRY_5, cst_AT_No_AT_IMEI},//<2F><>ѯIMEI
|
|||
|
|
|||
|
{AT_CODE_CIMI, "AT+CIMI", WT_2S, RETRY_5, cst_AT_No_AT_CIMI},//<2F><>ѯIMSI
|
|||
|
{AT_CODE_ICCID, "AT+NCCID", WT_2S, RETRY_5, cst_AT_No_AT_ICCID},//<2F><>ѯICCID
|
|||
|
{AT_CODE_CFUN_CK, "AT+CFUN?", WT_2S, RETRY_5, cst_AT_No_AT_CFUN},//<2F><>ѯЭ<D1AF><D0AD>ջ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_CFUN0, "AT+CFUN=0", WT_2S, RETRY_5, cst_AT_No_AT_CFUN},//
|
|||
|
|
|||
|
|
|||
|
{AT_CODE_TUEINFO, "AT+TUEINFO", WT_2S, RETRY_2, cst_AT_No_AT_TUEINFO},//<2F><>ѯ<EFBFBD>ź<EFBFBD>״̬
|
|||
|
{AT_CODE_CCED, "AT+CCED=0,1", WT_2S, RETRY_2, cst_AT_No_AT_CCED},//Single shot requested.
|
|||
|
{AT_CODE_CGDCONT, "AT+CGDCONT=1,\"IP\",\"", WT_2S, RETRY_1, cst_AT_No_AT},//<2F><><EFBFBD><EFBFBD>APN AT+CGDCONT=1,<2C><>IP<49><50>,<2C><>CMIOT<4F><54>
|
|||
|
{AT_CODE_CGACT, "AT+CGACT=1,1", WT_20S,RETRY_2, cst_AT_No_AT_CGACT_how},//<2F><><EFBFBD><EFBFBD> PDP //<2F><EFBFBD>ȴ<EFBFBD>20s,<2C>ڼ䷢<DABC><E4B7A2>ATָ<54><D6B8><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
|
|||
|
|
|||
|
|
|||
|
{AT_CODE_CCLK, "AT+CCLK?", WT_5S, RETRY_3, cst_AT_No_AT_CCLK},//<2F><>ѯģ<D1AF><C4A3>ʱ<EFBFBD><CAB1>
|
|||
|
|
|||
|
{AT_CODE_CTEC_CK, "AT+CTEC?", WT_5S, RETRY_1, cst_AT_No_AT_CCLK},//<2F><>ѯģ<D1AF><C4A3>ʱ<EFBFBD><CAB1>
|
|||
|
{AT_CODE_CCED_CK, "AT+CCED=0,1", WT_5S, RETRY_5, cst_AT_No_AT_CCLK},//<2F><>ѯģ<D1AF><C4A3>ʱ<EFBFBD><CAB1>
|
|||
|
/*****TCP<43><50><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>***********************/
|
|||
|
{AT_CODE_NSOCR, "AT+NSOCR=STREAM,6,1234,1,AF_INET", WT_5S, RETRY_5, cst_AT_No_AT},//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD>
|
|||
|
{AT_CODE_NSOCO, "AT+NSOCO=0,\"",WT_40S, RETRY_1, cst_AT_No_AT},//AT+NSOCO=0,"47.104.217.235",5005
|
|||
|
|
|||
|
/*When mode set to 1(transparent mode), n(connect_id) must be 0 and no TCP/UDP connection has already been
|
|||
|
established.*/
|
|||
|
//{AT_CODE_MIPMODE1,"AT+MIPMODE=0,1", WT_2S, RETRY_5, cst_AT_No_AT},//<2F><><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD>ʽ AT+MIPMODE=0,1
|
|||
|
//{AT_CODE_MIPOPEN, "AT+MIPOPEN=0,\"TCP\",\"",WT_5S, RETRY_5, cst_AT_No_AT_MIPOPEN},// AT+MIPOPEN=0,"TCP","58.59.6.130",21628
|
|||
|
{AT_CODE_MIPMODE1,"AT+MIPMODE=1,0", WT_2S, RETRY_5, cst_AT_No_AT},//(<28><>ʹ<EFBFBD><CAB9><EFBFBD><CDB8><EFBFBD><EFBFBD>ʽ)
|
|||
|
{AT_CODE_MIPOPEN, "AT+MIPOPEN=1,\"TCP\",\"",WT_35S, RETRY_1, cst_AT_No_AT_MIPOPEN},// AT+MIPOPEN=1,"TCP","58.59.6.130",21628
|
|||
|
{AT_CODE_MCWCREATE, "AT+MCWCREATE=", WT_5S, RETRY_1, cst_AT_No_AT_MCWCREATE},// AT+MCWCREATE=221.229.214.202,5683
|
|||
|
{AT_CODE_MCWOPEN, "AT+MCWOPEN=1,300", WT_35S, RETRY_0, cst_AT_No_AT_MCWOPEN},//AT+MCWOPEN=1,300//<2F>Զ<EFBFBD> update<74><65>lifetime 300 <20><>
|
|||
|
/*****TCP<43><50><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>***********************/
|
|||
|
{AT_CODE_MIPSENDCOUNT,"AT+MIPSEND=1,", WT_5S, RETRY_2, cst_AT_No_AT_MIPSENDCOUNT},//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
//{AT_CODE_TCPSEND, "", WT_5S, RETRY_0, cst_AT_No_AT_TCPSEND},//
|
|||
|
//AT+NSOSD=0,176,FEFE68,0x200
|
|||
|
{AT_CODE_TCPSEND, "AT+NSOSD=", WT_5S, RETRY_0, cst_AT_No_AT_NMGS},//
|
|||
|
//<2F>ر<EFBFBD>TCP<43><50><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_MIPCLOSE, "AT+MIPCLOSE=1", WT_5S, RETRY_2, cst_AT_No_AT_MIPCLOSE},//AT+MIPCLOSE=0
|
|||
|
/*****UDP1<50><31><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>**********************/
|
|||
|
{AT_CODE_MIPOPEN_UDP1,"AT+NSOCR=DGRAM,17,0,1",WT_5S, RETRY_1, cst_AT_No_AT_QIOPEN},// AT+MIPOPEN=1,"UDP","60.208.16.58",7833
|
|||
|
//Socket <20><><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_NSOCFG, "AT+NSOCFG=",WT_5S, RETRY_1, cst_AT_No_AT},//AT+NSOCFG=0,1,1
|
|||
|
/*****UDP1<50><31><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>***********************/
|
|||
|
{AT_CODE_MIPSENDCOUNT_UDP1,"AT+MIPSEND=2,", WT_5S, RETRY_2, cst_AT_No_AT_MIPSENDCOUNT},//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
{AT_CODE_UDPSEND1, "AT+NSOST=", WT_5S, RETRY_0, cst_AT_No_AT_NMGS},// //AT+ECSOST=1,"183.230.174.137",6065,2,"3334"
|
|||
|
//<2F>ر<EFBFBD>UDP1<50><31><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_MIPCLOSE_UDP1, "AT+MIPCLOSE=2", WT_5S, RETRY_2, cst_AT_No_AT_MIPCLOSE},//AT+MIPCLOSE=0
|
|||
|
/*****UDP2<50><32><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>**********************/
|
|||
|
{AT_CODE_MIPOPEN_UDP2,"AT+MIPOPEN=3,\"UDP\",\"",WT_5S, RETRY_5, cst_AT_No_AT_MIPOPEN},// AT+MIPOPEN=1,"UDP","60.208.16.58",7833
|
|||
|
/*****UDP2<50><32><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>***********************/
|
|||
|
{AT_CODE_MIPSENDCOUNT_UDP2,"AT+MIPSEND=3,", WT_5S, RETRY_2, cst_AT_No_AT_MIPSENDCOUNT},//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
{AT_CODE_UDPSEND2, "", WT_5S, RETRY_0, cst_AT_No_AT_TCPSEND},//
|
|||
|
//COAP<41><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_MCWSEND0, "AT+MCWSEND=", WT_5S, RETRY_0, cst_AT_No_AT_MCWSEND},//AT+MCWSEND=
|
|||
|
{AT_CODE_MCWSEND1, "AT+MCWSEND=", WT_5S, RETRY_0, cst_AT_No_AT_MCWSEND_ACKID},//AT+MCWSEND=
|
|||
|
|
|||
|
//<2F>ر<EFBFBD>UDP2<50><32><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_MIPCLOSE_UDP2, "AT+MIPCLOSE=3", WT_5S, RETRY_2, cst_AT_No_AT_MIPCLOSE},//AT+MIPCLOSE=0
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_READ_DATA, "AT+NSORF=", WT_2S, RETRY_1, cst_AT_No_AT_READ_DATA},//AT+NSORF=0,32
|
|||
|
//<2F><><EFBFBD><EFBFBD>APN
|
|||
|
{AT_CODE_CGDCONT1, "AT+CGDCONT=1,\"IP\",\"", WT_2S, RETRY_1, cst_AT_No_AT},//AT+CGDCONT=1,"IP","XINYI.COM"
|
|||
|
{AT_CODE_CGDCONT3, "AT+CGDCONT=3,1,\"", WT_2S, RETRY_1, cst_AT_No_AT},//AT+CGDCONT=3,1,"cmnet"
|
|||
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><D7BD><EFBFBD>
|
|||
|
{AT_CODE_NSOCL, "AT+NSOCL=", WT_2S, RETRY_1, cst_AT_No_AT},//AT+NSOCL=0 //<2F>ر<EFBFBD> TCP socket
|
|||
|
//<2F><><EFBFBD>ƹ<EFBFBD><C6B9>ʲ<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_NVGET, "AT+NV=GET,MAXULPOW", WT_2S, RETRY_1, cst_AT_No_AT_NVGET},
|
|||
|
{AT_CODE_NVSET, "AT+NV=SET,MAXULPOW,22", WT_2S, RETRY_1, cst_AT_No_AT_NVSET},
|
|||
|
{AT_CODE_NVSET0,"AT+NV=SET,MAXULPOW,0", WT_2S, RETRY_1, cst_AT_No_AT_NVSET},
|
|||
|
{AT_CODE_NRB, "AT+NRB", WT_2S, RETRY_1, cst_AT_No_AT_NRB},
|
|||
|
//ONENET
|
|||
|
{AT_CODE_MIPLCREATEEX, "AT+MIPLCREATEEX=\"", WT_5S, RETRY_2, cst_AT_No_AT_MIPLCREATEEX},
|
|||
|
{AT_CODE_MIPLADDOBJ, "AT+MIPLADDOBJ=0,3200,1,\"1\",0,0", WT_5S, RETRY_2, cst_AT_No_AT_MIPLADDOBJ},
|
|||
|
{AT_CODE_MIPLDISCOVERRSP, "AT+MIPLDISCOVERRSP=0,3200,1,4,\"5750\"", WT_5S, RETRY_2, cst_AT_No_AT_MIPLDISCOVERRSP},
|
|||
|
{AT_CODE_MIPLOPEN, "AT+MIPLOPEN=0,3000,30", WT_20S, RETRY_2, cst_AT_No_AT_MIPLOPEN},
|
|||
|
{AT_CODE_MIPLUPDATE, "AT+MIPLUPDATE=0,0,0", WT_5S, RETRY_2, cst_AT_No_AT_MIPLUPDATE},
|
|||
|
{AT_CODE_MIPLNOTIFY, "AT+MIPLNOTIFY=0,0,3200,0,5750,1,", WT_5S, RETRY_2, cst_AT_No_AT},
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{AT_CODE_MIPLCLOSE, "AT+MIPLCLOSE=0", WT_5S, RETRY_2, cst_AT_No_AT},
|
|||
|
{AT_CODE_MIPLDELOBJ, "AT+MIPLDELOBJ=0,3200", WT_5S, RETRY_2, cst_AT_No_AT},
|
|||
|
{AT_CODE_MIPLDELETE, "AT+MIPLDELETE=0", WT_5S, RETRY_2, cst_AT_No_AT},
|
|||
|
{AT_CODE_CPOF, "AT+CPOF", WT_5S, RETRY_2, cst_AT_No_AT},
|
|||
|
{AT_CODE_NCSEARFCN, "AT+NCSEARFCN", WT_5S, RETRY_2, cst_AT_No_AT},
|
|||
|
|
|||
|
{AT_CODE_MCWCLOSE, "AT+MCWCLOSE", WT_5S, RETRY_2, cst_AT_No_AT},
|
|||
|
{AT_CODE_MCWDELETE, "AT+MCWDELETE", WT_5S, RETRY_2, cst_AT_No_AT},
|
|||
|
};
|
|||
|
|
|||
|
/*****************************<2A>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>*********************************/
|
|||
|
//<2F><>״̬
|
|||
|
TYP_STATE_MAIN_CONNECT g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
//<2F><><EFBFBD><EFBFBD>״̬
|
|||
|
TYP_STEP_MODULE_POWERON s_power_on_state = MODULE_IDLE;
|
|||
|
//<2F>ػ<EFBFBD>״̬
|
|||
|
TYP_STATE_POWER_OFF s_power_off_state = S_PWOFF_IDLE;
|
|||
|
//ATָ<54><D6B8><EFBFBD><EFBFBD>ѯ״̬
|
|||
|
TYP_STATE_AT_REQUEST s_at_requeset_state = AT_REQUEST_IDLE;
|
|||
|
//ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>״̬
|
|||
|
TYP_MODULE_INIT s_init_state=S_MODULE_INIT_IDLE;
|
|||
|
//COAP<41><50><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
TYP_COAP_CONNECT s_coap_connect_state=S_COAP_CONNECT_IDLE;
|
|||
|
//COAP<41><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
TYP_COAP_SEND s_coap_send_state = S_COAP_SEND_IDLE;
|
|||
|
//UDP<44><50><EFBFBD><EFBFBD>״̬
|
|||
|
TYP_UDP_CONNECT s_udp_connect_state = S_UDP_CONNECT_IDLE;
|
|||
|
//UDP<44><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
TYP_UDP_SEND s_udp_send_state;
|
|||
|
//UDP<44><50>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
TYP_READ_DATA s_read_data_state=S_READ_DATA_IDLE;
|
|||
|
//ONNET<45><54><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
TYP_ONENET_CONNECT s_onenet_connect_state = S_ONENET_CONNECT_IDLE;
|
|||
|
//ONNET<45><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
TYP_ONENET_SEND s_onenet_send_state = S_ONENET_SEND_IDLE;
|
|||
|
|
|||
|
/*****************************<2A>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*********************************/
|
|||
|
void NbiotInitMachine(void);
|
|||
|
void NbiotPowerOffMachine(void);
|
|||
|
void UdpReadDataMachine(void);
|
|||
|
//UDP<44><50><EFBFBD><EFBFBD>
|
|||
|
void UdpStartConnect(u8 udp_num);
|
|||
|
void UdpConnectMachine(void);
|
|||
|
//UDP<44><50><EFBFBD><EFBFBD>
|
|||
|
void StartUdpSendData(void);
|
|||
|
void UdpSendDataMachine(void);
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
void Tcp_UdpReadDataMachine(void);
|
|||
|
//Coap<61><70><EFBFBD><EFBFBD>
|
|||
|
static void CoapStartConnect(void);
|
|||
|
void CoapConnectMachine(void);
|
|||
|
//Coap<61><70><EFBFBD><EFBFBD>
|
|||
|
void StartCoapSendData(void);
|
|||
|
void CoapSendDataMachine(void);
|
|||
|
//OneNet<65><74><EFBFBD><EFBFBD>
|
|||
|
void OneNetStartConnect(void);
|
|||
|
static void OnenetConnectMachine(void);
|
|||
|
//OneNet<65><74><EFBFBD><EFBFBD>
|
|||
|
void StartOnenetSendData(void);
|
|||
|
void OnenetSendDataMachine(void);
|
|||
|
//<2F><><EFBFBD><EFBFBD>APN
|
|||
|
void NbiotInitMachine_SetAPN(void);
|
|||
|
/*****************************<2A>ڲ<EFBFBD><DAB2><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ӿ<EFBFBD>**********************************/
|
|||
|
void set_timer_1s(u16 time);
|
|||
|
u16 check_timer_1s(void);
|
|||
|
void set_timer_1ms(u16 time);
|
|||
|
u16 check_timer_1ms(void);
|
|||
|
void StartNbiotInit(void);
|
|||
|
/*****************************<2A>ⲿ<EFBFBD>ӿ<EFBFBD>****************************************/
|
|||
|
void NB_Power_Disable(void)
|
|||
|
{
|
|||
|
Gpio_WriteOutputIO(BAT_NB_PORT, BAT_NB_PIN, FALSE);
|
|||
|
nb_power_flag = FALSE;
|
|||
|
}
|
|||
|
|
|||
|
void NB_Power_Enable(void)
|
|||
|
{
|
|||
|
Gpio_WriteOutputIO(BAT_NB_PORT, BAT_NB_PIN, TRUE);
|
|||
|
nb_power_flag = TRUE;
|
|||
|
}
|
|||
|
|
|||
|
u8 If_NB_Poweron(void)
|
|||
|
{
|
|||
|
return nb_power_flag;
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NbModuleIOInit(void)
|
|||
|
* @brief ģ<EFBFBD>鹩<EFBFBD><EFBFBD>IO<EFBFBD><EFBFBD>ģ<EFBFBD>鸴λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>PSM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
void NbModuleIOInit(void)
|
|||
|
{
|
|||
|
stc_gpio_cfg_t stcGpioCfg;
|
|||
|
DDL_ZERO_STRUCT(stcGpioCfg);
|
|||
|
stcGpioCfg.enDir = GpioDirOut; ///< <20>˿ڷ<CBBF><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stcGpioCfg.enDrv = GpioDrvL; ///< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stcGpioCfg.enPu = GpioPuDisable; ///< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-><3E><>
|
|||
|
stcGpioCfg.enPd = GpioPdDisable;
|
|||
|
stcGpioCfg.enOD = GpioOdDisable; ///< <20>˿ڿ<CBBF>©<EFBFBD><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stcGpioCfg.enCtrlMode = GpioAHB; ///< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>->AHB
|
|||
|
Gpio_Init(BAT_NB_PORT, BAT_NB_PIN, &stcGpioCfg); //ģ<>鹩<EFBFBD><E9B9A9>IO
|
|||
|
Gpio_Init(RSTN_NB_PORT, RSTN_NB_PIN, &stcGpioCfg);
|
|||
|
Gpio_Init(NB_PSM_WAKE_PORT, NB_PSM_WAKE_PIN, &stcGpioCfg);
|
|||
|
Gpio_Init(PWR_NB_PORT, PWR_NB_PIN, &stcGpioCfg); //<2F><>Դ<EFBFBD><D4B4><EFBFBD>ƽ<EFBFBD>
|
|||
|
Gpio_WriteOutputIO(BAT_NB_PORT, BAT_NB_PIN, FALSE);
|
|||
|
Gpio_WriteOutputIO(PWR_NB_PORT, PWR_NB_PIN, FALSE);
|
|||
|
Gpio_WriteOutputIO(RSTN_NB_PORT, RSTN_NB_PIN, FALSE);
|
|||
|
Gpio_WriteOutputIO(NB_PSM_WAKE_PORT , NB_PSM_WAKE_PIN, FALSE);
|
|||
|
}
|
|||
|
/*ģ<><C4A3><EFBFBD>˴<EFBFBD><CBB4>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
void NB_UartInitForGPIO(void)//debug
|
|||
|
{
|
|||
|
stc_gpio_cfg_t stcGpioCfg;
|
|||
|
|
|||
|
DDL_ZERO_STRUCT(stcGpioCfg);
|
|||
|
//PA0,PA1:<3A><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stcGpioCfg.enDir = GpioDirIn; ///< <20>˿ڷ<CBBF><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD>
|
|||
|
stcGpioCfg.enDrv = GpioDrvL; ///< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stcGpioCfg.enPu = GpioPuDisable; ///< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-><3E><>
|
|||
|
stcGpioCfg.enPd = GpioPdDisable;
|
|||
|
stcGpioCfg.enOD = GpioOdDisable; ///< <20>˿ڿ<CBBF>©<EFBFBD><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-><3E><>©<EFBFBD><C2A9><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
|
|||
|
stcGpioCfg.enCtrlMode = GpioAHB; ///< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>->AHB
|
|||
|
Gpio_Init(GpioPortA, GpioPin0, &stcGpioCfg);
|
|||
|
Gpio_Init(GpioPortA, GpioPin1, &stcGpioCfg);
|
|||
|
}
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NbiotMainMachine()
|
|||
|
* @brief NBIOT<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>NBIOT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
void NbiotMainMachine(void)
|
|||
|
{
|
|||
|
switch (g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
case S_NBIOT_MAIN_IDLE:
|
|||
|
{
|
|||
|
if(TRUE == UdpIfNeedReadDataY7028(NBIOT_CONNECT_UDP1))
|
|||
|
{
|
|||
|
ClearUdpReadDataFlag(NBIOT_CONNECT_UDP1);
|
|||
|
SetRcvDataType(NB_RCV_UDP1_DATA);
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_READ_DATA;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_NBIOT_MAIN_POWER_INIT:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag) //<2F><><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD>ʼ״̬
|
|||
|
{
|
|||
|
NbiotInitMachine(); //ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (TASK_SUCCESS == g_s_nbiot_task_flag) //<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
{
|
|||
|
u8 temp_iccid_buf[20];
|
|||
|
NbiotGetICCID((char*)temp_iccid_buf); //<2F>й<EFBFBD><D0B9>ƶ<EFBFBD><C6B6><EFBFBD>Ϊ:898600;898602;898604;898607 <20>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>898603;898611
|
|||
|
Nbiot_Para.Telecom = SIM_CARD_TELECOM;//<2F><><EFBFBD>ſ<EFBFBD>
|
|||
|
if(temp_iccid_buf[4]=='0')
|
|||
|
{
|
|||
|
if((temp_iccid_buf[5]=='0')||(temp_iccid_buf[5]=='2')||(temp_iccid_buf[5]=='4')||(temp_iccid_buf[5]=='7'))
|
|||
|
{
|
|||
|
Nbiot_Para.Telecom = SIM_CARD_MOBILE;
|
|||
|
}
|
|||
|
}
|
|||
|
Nbiot_Para.net_state = NB_ON_LINE;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
}
|
|||
|
else //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
}
|
|||
|
g_s_nbiot_task_flag = TASK_INIT; //<2F><><EFBFBD><EFBFBD>־λ
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_NBIOT_MAIN_COAP_OPEN:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
if(Nbiot_Para.Telecom == SIM_CARD_MOBILE)//<2F>ƶ<EFBFBD><C6B6><EFBFBD>
|
|||
|
{
|
|||
|
OnenetConnectMachine();//<2F><>ONNETƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD>ſ<EFBFBD>
|
|||
|
{
|
|||
|
CoapConnectMachine(); //<2F><><EFBFBD><EFBFBD>վ<EFBFBD><D5BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (TASK_SUCCESS == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
Nbiot_Para.coap_state = CONNECT_ON_LINE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Nbiot_Para.coap_state = CONNECT_OFF_LINE;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
}
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_NBIOT_MAIN_COAP_SEND:
|
|||
|
{
|
|||
|
if (CONNECT_ON_LINE == Nbiot_Para.coap_state)
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
if(Nbiot_Para.Telecom == SIM_CARD_MOBILE)//<2F>ƶ<EFBFBD><C6B6><EFBFBD>
|
|||
|
{
|
|||
|
OnenetSendDataMachine();
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD>ſ<EFBFBD>
|
|||
|
{
|
|||
|
CoapSendDataMachine(); //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>ʧ<EFBFBD>ܶ<EFBFBD><DCB6>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_SUCCESS;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_NBIOT_MAIN_UDP_OPEN:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
UdpConnectMachine(); //<2F><><EFBFBD><EFBFBD>վ<EFBFBD><D5BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (TASK_SUCCESS == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
if(nbiot_temp_connect_type == NBIOT_CONNECT_UDP1)
|
|||
|
{
|
|||
|
Nbiot_Para.udp1_state = CONNECT_ON_LINE;
|
|||
|
}
|
|||
|
else if(nbiot_temp_connect_type == NBIOT_CONNECT_UDP2)
|
|||
|
{
|
|||
|
Nbiot_Para.udp2_state = CONNECT_ON_LINE;
|
|||
|
}
|
|||
|
}
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_NBIOT_MAIN_UDP_SEND:
|
|||
|
{
|
|||
|
if (CONNECT_ON_LINE == Nbiot_Para.udp1_state)
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
UdpSendDataMachine(); //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>ʧ<EFBFBD>ܶ<EFBFBD><DCB6>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_NBIOT_MAIN_POWER_OFF:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
NbiotPowerOffMachine(); //<2F>ϵ<EFBFBD><CFB5>ػ<EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
Nbiot_Para.net_state = NB_OFF_LINE;
|
|||
|
Nbiot_Para.coap_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.udp1_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.udp2_state = CONNECT_OFF_LINE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_NBIOT_MAIN_READ_DATA:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
Tcp_UdpReadDataMachine();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name u8 NbiotIfIdle()
|
|||
|
* @brief <EFBFBD><EFBFBD>ѯģ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
***************************************************************************/
|
|||
|
u8 NbiotIfIdle(void)
|
|||
|
{
|
|||
|
if (S_NBIOT_MAIN_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
return TASK_IDLE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return TASK_BUSY;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name u8 NbiotIfOnline()
|
|||
|
* @brief <EFBFBD><EFBFBD>ѯNBIOT<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
u8 NbiotIfOnline(void)
|
|||
|
{
|
|||
|
if (NB_ON_LINE == Nbiot_Para.net_state)
|
|||
|
{
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name u8 UdpIfOnline()
|
|||
|
* @brief <EFBFBD><EFBFBD>ѯUDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
//u8 UdpIfOnline(void)
|
|||
|
//{
|
|||
|
// if (CONNECT_ON_LINE == Nbiot_Para.udp1_state)
|
|||
|
// {
|
|||
|
// return TRUE;
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// return FALSE;
|
|||
|
// }
|
|||
|
//}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name u8 ConncetIfOnline()
|
|||
|
* @brief <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
u8 ConncetIfOnline(u8 connect_type)
|
|||
|
{
|
|||
|
if(connect_type == NBIOT_CONNECT_COAP)
|
|||
|
{
|
|||
|
if (CONNECT_ON_LINE == Nbiot_Para.coap_state)
|
|||
|
{
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
}
|
|||
|
else if(connect_type == NBIOT_CONNECT_UDP1)
|
|||
|
{
|
|||
|
if (CONNECT_ON_LINE == Nbiot_Para.udp1_state)
|
|||
|
{
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
}
|
|||
|
else if(connect_type == NBIOT_CONNECT_UDP2)
|
|||
|
{
|
|||
|
if (CONNECT_ON_LINE == Nbiot_Para.udp2_state)
|
|||
|
{
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
}
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NbiotOnlineTask(u8 *state)
|
|||
|
* @brief NBIOT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] state:״̬<EFBFBD><EFBFBD>Ϣ
|
|||
|
***************************************************************************/
|
|||
|
void NbiotOnlineTask(u8 *state)
|
|||
|
{
|
|||
|
if (S_NBIOT_MAIN_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
if (!NbiotIfOnline())
|
|||
|
{
|
|||
|
if (S_NBIOT_MAIN_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
Nbiot_Send_Data.state = state; //<2F><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
*state = NBIOT_ING;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_POWER_INIT;
|
|||
|
StartNbiotInit();
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
*state = NBIOT_ONLINE;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
*state = NBIOT_ERROR;
|
|||
|
}
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NB_NetConnectStart
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] state:״̬<EFBFBD><EFBFBD>Ϣ
|
|||
|
***************************************************************************/
|
|||
|
void NB_NetConnectStart(unsigned char* temp_ip, u16 temp_port, u8 connect_type)
|
|||
|
{
|
|||
|
if(connect_type == NBIOT_CONNECT_COAP)
|
|||
|
{
|
|||
|
coap_ip = temp_ip;
|
|||
|
coap_port = temp_port;
|
|||
|
if(Nbiot_Para.Telecom == SIM_CARD_MOBILE)//<2F>ƶ<EFBFBD><C6B6><EFBFBD>
|
|||
|
{
|
|||
|
OneNetStartConnect();
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD>ſ<EFBFBD>
|
|||
|
{
|
|||
|
CoapStartConnect();
|
|||
|
}
|
|||
|
nbiot_temp_connect_type = NBIOT_CONNECT_COAP;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_COAP_OPEN;
|
|||
|
}
|
|||
|
else if(connect_type == NBIOT_CONNECT_UDP1)
|
|||
|
{
|
|||
|
udp_ip1 = temp_ip;
|
|||
|
udp_port1 = temp_port;
|
|||
|
UdpStartConnect(connect_type);
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_UDP_OPEN;
|
|||
|
}
|
|||
|
else if(connect_type == NBIOT_CONNECT_UDP2)
|
|||
|
{
|
|||
|
udp_ip2 = temp_ip;
|
|||
|
udp_port2 = temp_port;
|
|||
|
UdpStartConnect(connect_type);
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_UDP_OPEN;
|
|||
|
}
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
}
|
|||
|
void NbiotPsmWakeupTask(void)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
void NbiotPsmSleepTask(void)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
void NbiotPsmCheckTask(void)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NbiotSendTask(u8 *addr, u16 len, u8 send_type,u8 *state)
|
|||
|
* @brief NBIOT<EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] addr<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD>ַ len<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[out] state:״̬<EFBFBD><EFBFBD>Ϣ
|
|||
|
* @retval None
|
|||
|
* @other state(NBIOT_ING<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>, NBIOT_SUCCES<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣)
|
|||
|
***************************************************************************/
|
|||
|
void NbiotSendTask(u8 *addr, u16 len, u8 send_type,u8 *state)
|
|||
|
{
|
|||
|
if ((S_NBIOT_MAIN_IDLE == g_s_nbiot_main_state) && (len > 0) && (len <= UP_BUF_SIZE))
|
|||
|
{
|
|||
|
Nbiot_Send_Data.buf = addr; //<2F><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
Nbiot_Send_Data.len = len; //ֵ<><D6B5><EFBFBD><EFBFBD>
|
|||
|
Nbiot_Send_Data.state = state; //<2F><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
*state = NBIOT_ING;
|
|||
|
g_s_nbiot_send_type = send_type;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
if((SEND_TYPE_UDP1 == g_s_nbiot_send_type)||(SEND_TYPE_UDP2 == g_s_nbiot_send_type))
|
|||
|
{
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_UDP_SEND;
|
|||
|
StartUdpSendData();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if(Nbiot_Para.Telecom == SIM_CARD_MOBILE)//<2F>ƶ<EFBFBD><C6B6><EFBFBD>
|
|||
|
{
|
|||
|
StartOnenetSendData();
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD>ſ<EFBFBD>
|
|||
|
{
|
|||
|
StartCoapSendData(); //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_COAP_SEND; //<2F><><EFBFBD><EFBFBD>NBIOT<4F><54><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
*state = NBIOT_ERROR;
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
u8 GetNbiotSendType(void)
|
|||
|
{
|
|||
|
return g_s_nbiot_send_type;
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name u8 NbiotIfSleep()
|
|||
|
* @brief <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] None
|
|||
|
* @param[out] None
|
|||
|
* @retval TRUE: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> FALSE:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @other None
|
|||
|
***************************************************************************/
|
|||
|
u8 NbiotIfSleep(void)
|
|||
|
{
|
|||
|
if (S_NBIOT_MAIN_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NbiotPreSleep()
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] None
|
|||
|
* @param[out] None
|
|||
|
* @retval None
|
|||
|
* @other None
|
|||
|
***************************************************************************/
|
|||
|
void NbiotPreSleep(void)
|
|||
|
{
|
|||
|
NB_Power_Disable(); //<2F>жϵ<D0B6>Դ
|
|||
|
UartPreSleep(NB_UART_COM);
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
Nbiot_Para.net_state = NB_OFF_LINE;
|
|||
|
Nbiot_Para.coap_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.udp1_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.udp2_state = CONNECT_OFF_LINE;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>NB<4E><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stc_gpio_cfg_t stcGpioCfg;
|
|||
|
DDL_ZERO_STRUCT(stcGpioCfg);
|
|||
|
stcGpioCfg.enDir = GpioDirOut; ///< <20>˿ڷ<CBBF><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stcGpioCfg.enDrv = GpioDrvL; ///< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stcGpioCfg.enPu = GpioPuDisable; ///< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-><3E><>
|
|||
|
stcGpioCfg.enPd = GpioPdDisable;
|
|||
|
stcGpioCfg.enOD = GpioOdDisable; ///< <20>˿ڿ<CBBF>©<EFBFBD><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stcGpioCfg.enCtrlMode = GpioAHB; ///< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>->AHB
|
|||
|
Gpio_Init(BAT_NB_PORT, BAT_NB_PIN, &stcGpioCfg); //ģ<>鹩<EFBFBD><E9B9A9>IO
|
|||
|
Gpio_Init(RSTN_NB_PORT, RSTN_NB_PIN, &stcGpioCfg);
|
|||
|
Gpio_Init(NB_PSM_WAKE_PORT, NB_PSM_WAKE_PIN, &stcGpioCfg);
|
|||
|
Gpio_Init(PWR_NB_PORT, PWR_NB_PIN, &stcGpioCfg); //<2F><>Դ<EFBFBD><D4B4><EFBFBD>ƽ<EFBFBD>
|
|||
|
|
|||
|
Gpio_WriteOutputIO(BAT_NB_PORT, BAT_NB_PIN, FALSE);
|
|||
|
Gpio_WriteOutputIO(PWR_NB_PORT, PWR_NB_PIN, FALSE);
|
|||
|
Gpio_WriteOutputIO(RSTN_NB_PORT, RSTN_NB_PIN, FALSE);
|
|||
|
Gpio_WriteOutputIO(NB_PSM_WAKE_PORT , NB_PSM_WAKE_PIN, FALSE);
|
|||
|
|
|||
|
Gpio_Init(LPUART1_TX_PORT, LPUART1_TX_PIN, &stcGpioCfg);
|
|||
|
Gpio_WriteOutputIO(LPUART1_TX_PORT, LPUART1_TX_PIN, FALSE); //TXҲ<58><D2B2><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
stcGpioCfg.enDir = GpioDirIn; //RX<52><58><EFBFBD><EFBFBD>
|
|||
|
Gpio_Init(LPUART1_RX_PORT, LPUART1_RX_PIN, &stcGpioCfg);
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NbiotWakeSleep()
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] None
|
|||
|
* @param[out] None
|
|||
|
* @retval None
|
|||
|
* @other None
|
|||
|
***************************************************************************/
|
|||
|
void NbiotWakeSleep(void)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
/******************************<2A>ڲ<EFBFBD>״̬<D7B4><CCAC>***********************************/
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NetModulePowerOn_Proc()
|
|||
|
* @brief ģ<EFBFBD>鿪<EFBFBD><EFBFBD>״̬
|
|||
|
* @param[in] None
|
|||
|
* @param[out] None
|
|||
|
* @retval None
|
|||
|
* @other None
|
|||
|
***************************************************************************/
|
|||
|
TYP_RESULT_CODE NetModulePowerOn_Proc(void)
|
|||
|
{
|
|||
|
switch(s_power_on_state)
|
|||
|
{
|
|||
|
case MODULE_IDLE://ģ<><C4A3><EFBFBD>͵<EFBFBD>
|
|||
|
{
|
|||
|
}
|
|||
|
break;
|
|||
|
case MODULE_POWERON://ģ<><C4A3><EFBFBD>͵<EFBFBD>
|
|||
|
{
|
|||
|
NbModuleIOInit(); //<2F><>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>ģ<EFBFBD><C4A3><EFBFBD>ϵ<EFBFBD>
|
|||
|
UartInit(NB_UART_COM, BAUD9600, DATA_BIT_8, STOPBIT_1, UART_NONE_PARITY,UART_LPUART_Disable);
|
|||
|
RSTN_NB_HIG();
|
|||
|
PWR_NB_HIG();
|
|||
|
NB_Power_Enable(); //<2F><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ʱ1S,<2C>ȴ<EFBFBD><C8B4>ϵ<EFBFBD><CFB5>ȶ<EFBFBD>
|
|||
|
set_timer_1ms(MODULE_POWER_DELAY_TIME);
|
|||
|
s_power_on_state = MODULE_POWERON_WT;
|
|||
|
}
|
|||
|
break;
|
|||
|
case MODULE_POWERON_WT://NBģ<42><C4A3><EFBFBD>͵<EFBFBD>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
PWR_NB_LOW();
|
|||
|
set_timer_1ms(MODULE_POWERKEY_DELAY_TIME);
|
|||
|
s_power_on_state = MODULE_POWER_KEY_ON_WT;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case MODULE_POWER_KEY_ON_WT://NBģ<42><C4A3><EFBFBD>͵<EFBFBD>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
s_power_on_state = MODULE_IDLE;
|
|||
|
return ResultOk;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
s_power_on_state = MODULE_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
return ResultBusy;
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void AT_Common_Requeset_Proc()
|
|||
|
* @brief ATָ<EFBFBD>ͨ<EFBFBD>ò<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] None
|
|||
|
* @param[out] None
|
|||
|
* @retval None
|
|||
|
* @other <EFBFBD>й<EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD>Ϊ:898600;898602;898604;898607 <EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>898603;898611
|
|||
|
***************************************************************************/
|
|||
|
int getAtIndexFromCode(TYP_AT_CMDCODE atCode)
|
|||
|
{
|
|||
|
for(int i=0;i<AT_CMD_COUNT;i++)
|
|||
|
{
|
|||
|
if(AtCmdBuf[i].AtCode == atCode)
|
|||
|
{
|
|||
|
return i;
|
|||
|
}
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
TYP_RESULT_CODE AT_Common_Requeset_Proc(TYP_AT_CMDCODE atCode, char addFlag, char* addBuf, int addLen)
|
|||
|
{
|
|||
|
switch(s_at_requeset_state)
|
|||
|
{
|
|||
|
case AT_REQUEST_IDLE:
|
|||
|
{
|
|||
|
g_at_index = getAtIndexFromCode(atCode);
|
|||
|
at_requestErrorCount = 0;
|
|||
|
set_timer_1ms(500);
|
|||
|
s_at_requeset_state = AT_REQUEST_WT;
|
|||
|
}
|
|||
|
break;
|
|||
|
case AT_REQUEST_WT:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
set_timer_1s(0);
|
|||
|
s_at_requeset_state = AT_REQUEST_SEND;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case AT_REQUEST_SEND:
|
|||
|
{
|
|||
|
if(!check_timer_1ms())
|
|||
|
{
|
|||
|
memset(AT_BUF,0,sizeof(AT_BUF));
|
|||
|
int i=0;
|
|||
|
int all_len=0;
|
|||
|
int str_len = strlen(AtCmdBuf[g_at_index].pAtCmdStr);
|
|||
|
const char *p;
|
|||
|
p = AtCmdBuf[g_at_index].pAtCmdStr;
|
|||
|
for(i=0; i<str_len; i++)
|
|||
|
{
|
|||
|
AT_BUF[i] = *p++;
|
|||
|
all_len++;
|
|||
|
}
|
|||
|
if(addFlag==1)
|
|||
|
{
|
|||
|
for(i=0; i<addLen; i++)
|
|||
|
{
|
|||
|
AT_BUF[str_len+i] = *addBuf++;
|
|||
|
all_len++;
|
|||
|
}
|
|||
|
}
|
|||
|
AT_BUF[all_len++] = '\r';
|
|||
|
/*strcpy(AT_BUF, AtCmdBuf[g_at_index].pAtCmdStr);//<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>strcpy,<2C><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ֻ<EFBFBD>ܵ<EFBFBD>0x00
|
|||
|
if(addFlag==1)
|
|||
|
{
|
|||
|
strcat(AT_BUF, addBuf);
|
|||
|
}
|
|||
|
strcat(AT_BUF, "\r");*/
|
|||
|
|
|||
|
NbiotUartSend((u8*)AT_BUF, all_len, AtCmdBuf[g_at_index].CaseAtNum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>strlen(AT_BUF),<2C><><EFBFBD><EFBFBD>ֻ<EFBFBD>ܷ<EFBFBD><DCB7>͵<EFBFBD>0x00
|
|||
|
set_timer_1ms(1000*AtCmdBuf[g_at_index].WaitTime);
|
|||
|
s_at_requeset_state = AT_REQUEST_CHECK;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case AT_REQUEST_CHECK:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
s_at_requeset_state = AT_REQUEST_IDLE;
|
|||
|
return ResultOk;
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR)) //Ӧ<><D3A6><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
|||
|
{
|
|||
|
if (at_requestErrorCount >= AtCmdBuf[g_at_index].ErrorLimit)
|
|||
|
{
|
|||
|
s_at_requeset_state = AT_REQUEST_IDLE;
|
|||
|
return ResultFail;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
at_requestErrorCount++;
|
|||
|
//set_timer_1s(AtCmdBuf[g_at_index].WaitTime);
|
|||
|
s_at_requeset_state = AT_REQUEST_SEND;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
s_at_requeset_state = AT_REQUEST_IDLE;
|
|||
|
return ResultFail;
|
|||
|
}
|
|||
|
}
|
|||
|
return ResultBusy;
|
|||
|
}
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NbiotInitMachine()
|
|||
|
* @brief ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>
|
|||
|
* @param[in] None
|
|||
|
* @param[out] None
|
|||
|
* @retval None
|
|||
|
* @other
|
|||
|
***************************************************************************/
|
|||
|
void StartNbiotInit(void)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_POWER_ON;
|
|||
|
s_power_on_state = MODULE_POWERON;//ģ<><C4A3><EFBFBD>͵<EFBFBD>
|
|||
|
}
|
|||
|
|
|||
|
void NbiotInitMachine_MN316(void)
|
|||
|
{
|
|||
|
switch (s_init_state)
|
|||
|
{
|
|||
|
case S_MODULE_INIT_IDLE:
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
case S_MODULE_INIT_POWER_ON://NBģ<42><C4A3><EFBFBD>͵<EFBFBD>
|
|||
|
{
|
|||
|
g_at_request_res = NetModulePowerOn_Proc();
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
//NB_UartInitForGPIO();//debug
|
|||
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
u8 NB_login_ask_times = FrameCheckParaApp(FramePara_NbParaLoginAckTimes);
|
|||
|
if (NB_login_ask_times < NET_CGATT_MIN_TIMES)
|
|||
|
{
|
|||
|
NB_login_ask_times = NET_CGATT_MIN_TIMES;
|
|||
|
}
|
|||
|
if (NB_login_ask_times > NET_CGATT_MAX_TIMES)
|
|||
|
{
|
|||
|
NB_login_ask_times = NET_CGATT_MAX_TIMES;
|
|||
|
}
|
|||
|
AtCmdBuf[getAtIndexFromCode(AT_CODE_CGATT_CK)].ErrorLimit = NB_login_ask_times;//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
if(getUploadControlPara(UP_AT_SIMPLE)!=AT_SIMPLE_NULL)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CEREG_CK;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_AT;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_AT:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_AT, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_NVGET;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_MODULE_INIT_NVGET://<2F><><EFBFBD>ʲ<EFBFBD>ѯ
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_NVGET, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)//<2F><><EFBFBD><EFBFBD><EFBFBD>ǵͷ<C7B5><CDB7>书<EFBFBD><E4B9A6>
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CMEE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_NVSET;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_NVSET://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(Sys_data_object.P1.func_cfg_bytes[11] == 0x55)//<2F><><EFBFBD>ͷ<EFBFBD><CDB7>书<EFBFBD><E4B9A6>
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_NVSET, 0, NULL,0);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_NVSET0, 0, NULL,0);
|
|||
|
}
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_NRB;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CMEE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_MODULE_INIT_NRB://ģ<>鸴λ
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_NRB, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_NVGET;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_NVGET;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_MODULE_INIT_CMEE:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CMEE, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CGSN;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CGSN:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CGSN, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CPIN;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CPIN:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CPIN, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CIMI;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CIMI:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CIMI, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_ICCID;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_ICCID:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_ICCID, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CFUN_CK;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CFUN_CK:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CFUN_CK, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_GDCONT_CK;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CFUN1;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CFUN1:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CFUN1, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_GDCONT_CK;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_GDCONT_CK;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_MODULE_INIT_GDCONT_CK:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CGDCONT_CK, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CGDCONT_PRE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CGDCONT_PRE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_MODULE_INIT_CGDCONT_PRE://<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>APN
|
|||
|
{
|
|||
|
if(FrameCheckMsgApp(MsgNbApnChange))
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgNbApnChange);
|
|||
|
//<2F><>ȡAPN<50><4E><EFBFBD><EFBFBD>
|
|||
|
memset(stringbuffer_temp,0,sizeof(stringbuffer_temp));
|
|||
|
for(int i = 0; i < Sys_data_object.P1.apn[1]; i++)
|
|||
|
{
|
|||
|
stringbuffer_temp[i] = Sys_data_object.P1.apn[2 + i];
|
|||
|
}
|
|||
|
stringbuffer_temp[Sys_data_object.P1.apn[1]] = '\"';
|
|||
|
s_init_state = S_MODULE_INIT_CGDCONT;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CEREG_CK;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_MODULE_INIT_CGDCONT:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CGDCONT, 1, stringbuffer_temp, Sys_data_object.P1.apn[1]+1);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CEREG_CK;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CEREG_CK;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_MODULE_INIT_CEREG_CK:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CEREG, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CGATT_CK;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CGATT_CK;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CGATT_CK:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CGATT_CK, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_NUESTATS_CK;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_MODULE_INIT_NUESTATS_CK:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_NUESTATS, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CSQ;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CSQ;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CSQ:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CSQ, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_COPS_CK;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_COPS_CK;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_MODULE_INIT_COPS_CK:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_COPS_CK, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CGCONTRDP;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CGCONTRDP;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_MODULE_INIT_CGCONTRDP:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CGCONTRDP, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CCLK;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CCLK;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CCLK:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CCLK, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
void NbiotInitMachine(void)
|
|||
|
{
|
|||
|
NbiotInitMachine_MN316();
|
|||
|
}
|
|||
|
void NbiotInitMachine_SetAPN(void)
|
|||
|
{
|
|||
|
switch (s_init_state)
|
|||
|
{
|
|||
|
case S_MODULE_INIT_IDLE:
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
case S_MODULE_INIT_POWER_ON://NBģ<42><C4A3><EFBFBD>͵<EFBFBD>
|
|||
|
{
|
|||
|
g_at_request_res = NetModulePowerOn_Proc();
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
//NB_UartInitForGPIO();//debug
|
|||
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
u8 NB_login_ask_times = FrameCheckParaApp(FramePara_NbParaLoginAckTimes);
|
|||
|
if (NB_login_ask_times < NET_CGATT_MIN_TIMES)
|
|||
|
{
|
|||
|
NB_login_ask_times = NET_CGATT_MIN_TIMES;
|
|||
|
}
|
|||
|
if (NB_login_ask_times > NET_CGATT_MAX_TIMES)
|
|||
|
{
|
|||
|
NB_login_ask_times = NET_CGATT_MAX_TIMES;
|
|||
|
}
|
|||
|
AtCmdBuf[getAtIndexFromCode(AT_CODE_CGATT_CK)].ErrorLimit = NB_login_ask_times;//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
s_init_state = S_MODULE_INIT_AT;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_AT:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_AT, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CFUN0;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CFUN0:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CFUN1, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CFUN_CK;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CFUN_CK;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CFUN_CK:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CFUN_CK, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
//<2F><>ȡAPN<50><4E><EFBFBD><EFBFBD>
|
|||
|
memset(stringbuffer_temp,0,sizeof(stringbuffer_temp));
|
|||
|
for(int i = 0; i < Sys_data_object.P1.apn[1]; i++)
|
|||
|
{
|
|||
|
stringbuffer_temp[i] = Sys_data_object.P1.apn[2 + i];
|
|||
|
}
|
|||
|
stringbuffer_temp[Sys_data_object.P1.apn[1]] = '\"';
|
|||
|
s_init_state = S_MODULE_INIT_CGDCONT1;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
//<2F><>ȡAPN<50><4E><EFBFBD><EFBFBD>
|
|||
|
memset(stringbuffer_temp,0,sizeof(stringbuffer_temp));
|
|||
|
for(int i = 0; i < Sys_data_object.P1.apn[1]; i++)
|
|||
|
{
|
|||
|
stringbuffer_temp[i] = Sys_data_object.P1.apn[2 + i];
|
|||
|
}
|
|||
|
stringbuffer_temp[Sys_data_object.P1.apn[1]] = '\"';
|
|||
|
s_init_state = S_MODULE_INIT_CGDCONT1;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CGDCONT1:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CGDCONT1, 1, stringbuffer_temp, Sys_data_object.P1.apn[1]+1);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CFUN1;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CFUN1;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CGDCONT3:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CGDCONT3, 1, stringbuffer_temp, Sys_data_object.P1.apn[1]+1);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CFUN1;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_init_state = S_MODULE_INIT_CFUN1;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_MODULE_INIT_CFUN1:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CFUN1, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_MODULE_INIT_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP
|
|||
|
void UdpStartConnect(u8 udp_num)
|
|||
|
{
|
|||
|
nbiot_temp_connect_type = udp_num;
|
|||
|
s_udp_connect_state = S_UDP_CONNECT_START;
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void UdpConnectMachine(void)
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP״̬<EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
u8 UDP_send_num;
|
|||
|
void UdpConnectMachine_MN316(void)
|
|||
|
{
|
|||
|
switch (s_udp_connect_state)
|
|||
|
{
|
|||
|
case S_UDP_CONNECT_IDLE:
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
case S_UDP_CONNECT_START:
|
|||
|
{
|
|||
|
s_udp_connect_state = S_UDP_CONNECT_MIPOPEN;
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_UDP_CONNECT_MIPOPEN:
|
|||
|
{
|
|||
|
if(nbiot_temp_connect_type == NBIOT_CONNECT_UDP1)
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPOPEN_UDP1, 0, NULL,0);
|
|||
|
}
|
|||
|
else if(nbiot_temp_connect_type == NBIOT_CONNECT_UDP2)
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPOPEN_UDP2, 0, NULL,0);
|
|||
|
}
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
udp_send_len=0;
|
|||
|
stringbuffer_temp[udp_send_len++] = NbiotGetSocketCode();
|
|||
|
stringbuffer_temp[udp_send_len++] = ',';
|
|||
|
stringbuffer_temp[udp_send_len++] = '0';
|
|||
|
stringbuffer_temp[udp_send_len++] = ',';
|
|||
|
stringbuffer_temp[udp_send_len++] = '1';
|
|||
|
stringbuffer_temp[udp_send_len++] = '\r';
|
|||
|
s_udp_connect_state = S_UDP_CONNECT_NSOCFG;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_udp_connect_state = S_UDP_CONNECT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_UDP_CONNECT_NSOCFG:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_NSOCFG, 1, stringbuffer_temp,udp_send_len);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F>ɹ<EFBFBD>
|
|||
|
s_udp_connect_state = S_UDP_CONNECT_IDLE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_udp_connect_state = S_UDP_CONNECT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
s_udp_connect_state = S_UDP_CONNECT_IDLE;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
void UdpConnectMachine(void)
|
|||
|
{
|
|||
|
UdpConnectMachine_MN316();
|
|||
|
}
|
|||
|
//
|
|||
|
void StartUdpSendData(void)
|
|||
|
{
|
|||
|
s_udp_send_state = S_UDP_SEND_START;
|
|||
|
}
|
|||
|
//
|
|||
|
void UdpSendDataMachine_ML302(void)
|
|||
|
{
|
|||
|
unsigned char *nbiot_ip;
|
|||
|
u16 nbiot_port;
|
|||
|
switch (s_udp_send_state)
|
|||
|
{
|
|||
|
case S_UDP_SEND_IDLE:
|
|||
|
{
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_UDP_SEND_START:
|
|||
|
{
|
|||
|
udp_send_len = 0;
|
|||
|
NbiotClearMsg();
|
|||
|
memset(stringbuffer_temp,0,sizeof(stringbuffer_temp));
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
if(nbiot_temp_connect_type == NBIOT_CONNECT_UDP1)
|
|||
|
{
|
|||
|
nbiot_port = udp_port1;
|
|||
|
nbiot_ip = udp_ip1;
|
|||
|
}
|
|||
|
else if(nbiot_temp_connect_type == NBIOT_CONNECT_UDP2)
|
|||
|
{
|
|||
|
nbiot_port = udp_port2;
|
|||
|
nbiot_ip = udp_ip2;
|
|||
|
}
|
|||
|
// AT+NSOST=0,114.116.144.151,1000,3,333231,101
|
|||
|
stringbuffer_temp[udp_send_len++] = NbiotGetSocketCode();
|
|||
|
stringbuffer_temp[udp_send_len++] = ',';
|
|||
|
//IP <20>Ĵ洢<C4B4><E6B4A2>Ȼʹ<C8BB><CAB9>ˮ<EFBFBD><CBAE>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>桰.<2E><><EFBFBD>ţ<EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
int i;
|
|||
|
for (i = 0; i < 4; i++)
|
|||
|
{
|
|||
|
if (nbiot_ip[i] < 10)
|
|||
|
{
|
|||
|
stringbuffer_temp[udp_send_len++] = nbiot_ip[i] + 0x30;
|
|||
|
}
|
|||
|
else if (nbiot_ip[i] < 100)
|
|||
|
{
|
|||
|
stringbuffer_temp[udp_send_len++] = (nbiot_ip[i] / 10) + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = (nbiot_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[udp_send_len++] = (nbiot_ip[i] / 100) + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = (nbiot_ip[i] / 10) % 10 + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = (nbiot_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
stringbuffer_temp[udp_send_len++] = '.';
|
|||
|
}
|
|||
|
udp_send_len--; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
|
|||
|
stringbuffer_temp[udp_send_len++] = ',';
|
|||
|
stringbuffer_temp[udp_send_len++] = ((nbiot_port) / 10000) + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = (((nbiot_port) % 10000) / 1000) + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = (((nbiot_port) % 1000) / 100) + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = (((nbiot_port) % 100) / 10) + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = ((nbiot_port) % 10) + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = ',';
|
|||
|
//<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
if (Nbiot_Send_Data.len < 10)
|
|||
|
{
|
|||
|
stringbuffer_temp[udp_send_len++] = Nbiot_Send_Data.len + 0x30;
|
|||
|
}
|
|||
|
else if (Nbiot_Send_Data.len < 100)
|
|||
|
{
|
|||
|
stringbuffer_temp[udp_send_len++] = (Nbiot_Send_Data.len / 10) + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = (Nbiot_Send_Data.len % 10) + 0x30;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[udp_send_len++] = (Nbiot_Send_Data.len / 100) + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = (Nbiot_Send_Data.len / 10) % 10 + 0x30;
|
|||
|
stringbuffer_temp[udp_send_len++] = (Nbiot_Send_Data.len % 10) + 0x30;
|
|||
|
}
|
|||
|
stringbuffer_temp[udp_send_len++] = ',';
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// for (i = 0; i < Nbiot_Send_Data.len; i++)//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// {
|
|||
|
// stringbuffer_temp[udp_send_len++] = *(Nbiot_Send_Data.buf + i);//<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD>Ƹ<EFBFBD>ʽ
|
|||
|
// }
|
|||
|
|
|||
|
for (i = 0; i < Nbiot_Send_Data.len; i++)//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if ((*(Nbiot_Send_Data.buf + i) >> 4) >= 0x0A)
|
|||
|
{
|
|||
|
stringbuffer_temp[udp_send_len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[udp_send_len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x30;
|
|||
|
}
|
|||
|
|
|||
|
if ((*(Nbiot_Send_Data.buf + i) & 0x0F) >= 0x0A)
|
|||
|
{
|
|||
|
stringbuffer_temp[udp_send_len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[udp_send_len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x30;
|
|||
|
}
|
|||
|
}
|
|||
|
if(++UDP_send_num == 0)
|
|||
|
{
|
|||
|
UDP_send_num = 1;
|
|||
|
}
|
|||
|
stringbuffer_temp[udp_send_len++] = ',';
|
|||
|
stringbuffer_temp[udp_send_len++] = '0'+(UDP_send_num%10);
|
|||
|
stringbuffer_temp[udp_send_len++] = '\r';
|
|||
|
s_udp_send_state = S_UDP_SEND_DATA;
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_UDP_SEND_DATA://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(g_s_nbiot_send_type == SEND_TYPE_UDP1)
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_UDPSEND1, 1, stringbuffer_temp, udp_send_len);
|
|||
|
}
|
|||
|
else if(g_s_nbiot_send_type == SEND_TYPE_UDP2)
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_UDPSEND2, 1, stringbuffer_temp, udp_send_len);
|
|||
|
}
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F>ɹ<EFBFBD>
|
|||
|
s_udp_send_state = S_UDP_SEND_IDLE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //ʧ<><CAA7>
|
|||
|
s_udp_send_state = S_UDP_SEND_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //ʧ<><CAA7>
|
|||
|
s_udp_send_state = S_UDP_SEND_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
void UdpSendDataMachine(void)
|
|||
|
{
|
|||
|
UdpSendDataMachine_ML302();
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
void Tcp_UdpReadDataMachine(void)
|
|||
|
{
|
|||
|
switch (s_read_data_state)
|
|||
|
{
|
|||
|
case S_READ_DATA_IDLE:
|
|||
|
{
|
|||
|
NbiotClearMsg();
|
|||
|
memset(stringbuffer_temp,0,sizeof(stringbuffer_temp));
|
|||
|
tcp_send_len=0;
|
|||
|
stringbuffer_temp[tcp_send_len++] = NbiotGetSocketCode();
|
|||
|
stringbuffer_temp[tcp_send_len++] = ',';
|
|||
|
stringbuffer_temp[tcp_send_len++] = '5';
|
|||
|
stringbuffer_temp[tcp_send_len++] = '1';
|
|||
|
stringbuffer_temp[tcp_send_len++] = '2';
|
|||
|
stringbuffer_temp[tcp_send_len++] = '\r';
|
|||
|
s_read_data_state = S_READ_DATA_START;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_READ_DATA_START:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_READ_DATA, 1, stringbuffer_temp, tcp_send_len);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_read_data_state = S_READ_DATA_IDLE;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F>ɹ<EFBFBD>
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //ʧ<><CAA7>
|
|||
|
s_read_data_state = S_READ_DATA_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
s_read_data_state = S_READ_DATA_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void CoapConnectMachine_MN316_ONENET()
|
|||
|
* @brief MN316<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>OneNetƽ̨״̬<EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
#define AT_COMMAND_SEND_INTERVAL_TIME 500
|
|||
|
|
|||
|
static void CoapStartConnect(void)
|
|||
|
{
|
|||
|
s_coap_connect_state = S_COAP_CONNECT_START;
|
|||
|
}
|
|||
|
|
|||
|
static void CoapConnectMachine_MN316_CTWing(void)
|
|||
|
{
|
|||
|
static int ip_len=0;
|
|||
|
switch (s_coap_connect_state)
|
|||
|
{
|
|||
|
case S_COAP_CONNECT_IDLE:
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
case S_COAP_CONNECT_START: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ
|
|||
|
{
|
|||
|
memset(stringbuffer_temp,0,sizeof(stringbuffer_temp));
|
|||
|
ip_len=0;
|
|||
|
//IP <20>Ĵ洢<C4B4><E6B4A2>Ȼʹ<C8BB><CAB9>ˮ<EFBFBD><CBAE>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>桰.<2E><><EFBFBD>ţ<EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
int i;
|
|||
|
for (i = 0; i < 4; i++)
|
|||
|
{
|
|||
|
if (coap_ip[i] < 10)
|
|||
|
{
|
|||
|
stringbuffer_temp[ip_len++] = coap_ip[i] + 0x30;
|
|||
|
}
|
|||
|
else if (coap_ip[i] < 100)
|
|||
|
{
|
|||
|
stringbuffer_temp[ip_len++] = (coap_ip[i] / 10) + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = (coap_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[ip_len++] = (coap_ip[i] / 100) + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = (coap_ip[i] / 10) % 10 + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = (coap_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
stringbuffer_temp[ip_len++] = '.';
|
|||
|
}
|
|||
|
ip_len--; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
|
|||
|
stringbuffer_temp[ip_len++] = ',';
|
|||
|
stringbuffer_temp[ip_len++] = ((coap_port) / 10000) + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = (((coap_port) % 10000) / 1000) + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = (((coap_port) % 1000) / 100) + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = (((coap_port) % 100) / 10) + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = ((coap_port) % 10) + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = '\r';
|
|||
|
|
|||
|
s_coap_connect_state = S_CTWING_MCWCREATE;
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_CTWING_MCWCREATE://<2F><><EFBFBD>õ<EFBFBD>¼<EFBFBD><C2BC>ϢAT+MCWCREATE=221.229.214.202,5683
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MCWCREATE, 1, stringbuffer_temp,ip_len);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_coap_connect_state = S_CTWING_MCWOPEN;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_coap_connect_state = S_COAP_CONNECT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_CTWING_MCWOPEN://ģ<>齫ע<E9BDAB><D7A2><EFBFBD><EFBFBD> CTWing ƽ̨<C6BD><CCA8> AT+MCWOPEN=1,300//<2F>Զ<EFBFBD> update<74><65>lifetime 300 <20><>
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MCWOPEN, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F>ɹ<EFBFBD>
|
|||
|
s_coap_connect_state = S_COAP_CONNECT_IDLE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_coap_connect_state = S_COAP_CONNECT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_coap_connect_state = S_COAP_CONNECT_IDLE; //״̬<D7B4><CCAC><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>ʼ״̬
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
void CoapConnectMachine(void)
|
|||
|
{
|
|||
|
CoapConnectMachine_MN316_CTWing();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void StartCoapSendData(void)
|
|||
|
{
|
|||
|
s_coap_send_state = S_COAP_SEND_START;
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void CoapSendDataMachine_BC25_ONENET()
|
|||
|
* @brief BC25<EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ONENETƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
void CoapSendDataMachine_MN316_CTWing(void)
|
|||
|
{
|
|||
|
switch (s_coap_send_state)
|
|||
|
{
|
|||
|
case S_COAP_SEND_IDLE:
|
|||
|
{
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_COAP_SEND_START:
|
|||
|
{
|
|||
|
tcp_send_len = 0;
|
|||
|
NbiotClearMsg();
|
|||
|
memset(stringbuffer_temp,0,sizeof(stringbuffer_temp));
|
|||
|
memset(tcp_send_len_buf,0,sizeof(tcp_send_len_buf));
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
if (Nbiot_Send_Data.len < 10)
|
|||
|
{
|
|||
|
tcp_send_len_buf[0] = Nbiot_Send_Data.len + 0x30;
|
|||
|
tcp_send_len_buf_len = 1;
|
|||
|
}
|
|||
|
else if (Nbiot_Send_Data.len < 100)
|
|||
|
{
|
|||
|
tcp_send_len_buf[0] = (Nbiot_Send_Data.len / 10) + 0x30;
|
|||
|
tcp_send_len_buf[1] = (Nbiot_Send_Data.len % 10) + 0x30;
|
|||
|
tcp_send_len_buf_len = 2;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tcp_send_len_buf[0] = (Nbiot_Send_Data.len / 100) + 0x30;
|
|||
|
tcp_send_len_buf[1] = (Nbiot_Send_Data.len / 10) % 10 + 0x30;
|
|||
|
tcp_send_len_buf[2] = (Nbiot_Send_Data.len % 10) + 0x30;
|
|||
|
tcp_send_len_buf_len = 3;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD>䷢<EFBFBD><E4B7A2><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
for (int i = 0; i < tcp_send_len_buf_len; i++)
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = tcp_send_len_buf[i];
|
|||
|
}
|
|||
|
stringbuffer_temp[tcp_send_len++] = ',';
|
|||
|
//<2F><><EFBFBD>䷢<EFBFBD><E4B7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
for (int i = 0; i < Nbiot_Send_Data.len; i++)
|
|||
|
{
|
|||
|
if ((*(Nbiot_Send_Data.buf + i) >> 4) >= 0x0A)
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x30;
|
|||
|
}
|
|||
|
if ((*(Nbiot_Send_Data.buf + i) & 0x0F) >= 0x0A)
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x30;
|
|||
|
}
|
|||
|
}
|
|||
|
stringbuffer_temp[tcp_send_len++] = ',';
|
|||
|
if(1)
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = '1';
|
|||
|
stringbuffer_temp[tcp_send_len++] = '\r';
|
|||
|
s_coap_send_state = S_COAP_SEND_DATA1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = '0';
|
|||
|
stringbuffer_temp[tcp_send_len++] = '\r';
|
|||
|
s_coap_send_state = S_COAP_SEND_DATA0;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_COAP_SEND_DATA0:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MCWSEND0, 1, stringbuffer_temp, tcp_send_len);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_SUCCESS;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_coap_send_state = S_COAP_SEND_IDLE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_coap_send_state = S_COAP_SEND_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_COAP_SEND_DATA1:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MCWSEND1, 1, stringbuffer_temp, tcp_send_len);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_SUCCESS;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_coap_send_state = S_COAP_SEND_IDLE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_coap_send_state = S_COAP_SEND_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_coap_send_state = S_COAP_SEND_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void CoapSendDataMachine(void)
|
|||
|
{
|
|||
|
CoapSendDataMachine_MN316_CTWing();
|
|||
|
}
|
|||
|
|
|||
|
//OnenetConnectMachine
|
|||
|
void OneNetStartConnect(void)
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_CONNECT_START;
|
|||
|
}
|
|||
|
|
|||
|
static void OnenetConnectMachine(void)
|
|||
|
{
|
|||
|
static int ip_len=0;
|
|||
|
|
|||
|
switch(s_onenet_connect_state)
|
|||
|
{
|
|||
|
case S_ONENET_CONNECT_IDLE:
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_ONENET_CONNECT_START:
|
|||
|
{
|
|||
|
memset(stringbuffer_temp,0,sizeof(stringbuffer_temp));
|
|||
|
ip_len=0;
|
|||
|
//IP <20>Ĵ洢<C4B4><E6B4A2>Ȼʹ<C8BB><CAB9>ˮ<EFBFBD><CBAE>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>桰.<2E><><EFBFBD>ţ<EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
int i;
|
|||
|
for (i = 0; i < 4; i++)
|
|||
|
{
|
|||
|
if (coap_ip[i] < 10)
|
|||
|
{
|
|||
|
stringbuffer_temp[ip_len++] = coap_ip[i] + 0x30;
|
|||
|
}
|
|||
|
else if (coap_ip[i] < 100)
|
|||
|
{
|
|||
|
stringbuffer_temp[ip_len++] = (coap_ip[i] / 10) + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = (coap_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[ip_len++] = (coap_ip[i] / 100) + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = (coap_ip[i] / 10) % 10 + 0x30;
|
|||
|
stringbuffer_temp[ip_len++] = (coap_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
stringbuffer_temp[ip_len++] = '.';
|
|||
|
}
|
|||
|
ip_len--; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
|
|||
|
stringbuffer_temp[ip_len++] = '\"';
|
|||
|
stringbuffer_temp[ip_len++] = ',';
|
|||
|
stringbuffer_temp[ip_len++] = '0';
|
|||
|
stringbuffer_temp[ip_len++] = '\r';
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCREATEEX;
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_ONENET_MIPLCREATEEX:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPLCREATEEX, 1, stringbuffer_temp, ip_len);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLADDOBJ;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLADDOBJ;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_ONENET_MIPLADDOBJ:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPLADDOBJ, 0, NULL, 0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLDISCOVERRSP;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLDISCOVERRSP;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_ONENET_MIPLDISCOVERRSP:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPLDISCOVERRSP, 0, NULL, 0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLOPEN;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLOPEN;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_ONENET_MIPLOPEN:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPLOPEN, 0, NULL, 0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLUPDATE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLUPDATE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_ONENET_MIPLUPDATE:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPLUPDATE, 0, NULL, 0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_SUCCESS;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F>ɹ<EFBFBD>
|
|||
|
s_onenet_connect_state = S_ONENET_CONNECT_IDLE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_onenet_connect_state = S_ONENET_CONNECT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_CONNECT_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void StartOnenetSendData(void)
|
|||
|
{
|
|||
|
s_onenet_send_state = S_ONENET_SEND_START;
|
|||
|
}
|
|||
|
|
|||
|
void OnenetSendDataMachine(void)
|
|||
|
{
|
|||
|
switch (s_onenet_send_state)
|
|||
|
{
|
|||
|
case S_ONENET_SEND_IDLE:
|
|||
|
{
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_ONENET_SEND_START:
|
|||
|
{
|
|||
|
tcp_send_len = 0;
|
|||
|
NbiotClearMsg();
|
|||
|
memset(stringbuffer_temp,0,sizeof(stringbuffer_temp));
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
if (Nbiot_Send_Data.len < 10)
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = Nbiot_Send_Data.len + 0x30;
|
|||
|
}
|
|||
|
else if (Nbiot_Send_Data.len < 100)
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = (Nbiot_Send_Data.len / 10) + 0x30;
|
|||
|
stringbuffer_temp[tcp_send_len++] = (Nbiot_Send_Data.len % 10) + 0x30;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = (Nbiot_Send_Data.len / 100) + 0x30;
|
|||
|
stringbuffer_temp[tcp_send_len++] = (Nbiot_Send_Data.len / 10) % 10 + 0x30;
|
|||
|
stringbuffer_temp[tcp_send_len++] = (Nbiot_Send_Data.len % 10) + 0x30;
|
|||
|
}
|
|||
|
stringbuffer_temp[tcp_send_len++] = ',';
|
|||
|
//<2F><><EFBFBD>䷢<EFBFBD><E4B7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
for (int i = 0; i < Nbiot_Send_Data.len; i++)
|
|||
|
{
|
|||
|
if ((*(Nbiot_Send_Data.buf + i) >> 4) >= 0x0A)
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x30;
|
|||
|
}
|
|||
|
if ((*(Nbiot_Send_Data.buf + i) & 0x0F) >= 0x0A)
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
stringbuffer_temp[tcp_send_len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x30;
|
|||
|
}
|
|||
|
}
|
|||
|
stringbuffer_temp[tcp_send_len++] = ',';
|
|||
|
stringbuffer_temp[tcp_send_len++] = '0';
|
|||
|
stringbuffer_temp[tcp_send_len++] = ',';
|
|||
|
stringbuffer_temp[tcp_send_len++] = '0';
|
|||
|
stringbuffer_temp[tcp_send_len++] = ',';
|
|||
|
stringbuffer_temp[tcp_send_len++] = '7';
|
|||
|
s_onenet_send_state = S_ONENET_SEND_DATA0;
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_ONENET_SEND_DATA0:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPLNOTIFY, 1, stringbuffer_temp, tcp_send_len);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_SUCCESS;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_coap_send_state = S_COAP_SEND_IDLE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_coap_send_state = S_COAP_SEND_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_coap_send_state = S_COAP_SEND_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name static void NbiotPowerOffMachine()
|
|||
|
* @brief <EFBFBD>ػ<EFBFBD>״̬<EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
void NbiotPowerOffMachine(void) //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD>ϵ<EFBFBD><CFB5>ػ<EFBFBD>
|
|||
|
{
|
|||
|
switch (s_power_off_state)
|
|||
|
{
|
|||
|
case S_PWOFF_IDLE:
|
|||
|
{
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_PWOFF_START:
|
|||
|
{
|
|||
|
if (Nbiot_Para.net_state == NB_ON_LINE)
|
|||
|
{
|
|||
|
if(Nbiot_Para.Telecom == SIM_CARD_TELECOM)//<2F><><EFBFBD>ſ<EFBFBD>
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_MCWCLOSE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_MIPLCLOSE;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_CFUN0;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
break;
|
|||
|
//-><3E><><EFBFBD><EFBFBD>
|
|||
|
case S_PWOFF_MCWCLOSE:
|
|||
|
{
|
|||
|
if(ConncetIfOnline(NBIOT_CONNECT_COAP) == TRUE)
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MCWCLOSE, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_MCWDELETE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_MCWDELETE;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_UDPCLOSE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
//-><3E><><EFBFBD><EFBFBD>
|
|||
|
case S_PWOFF_MCWDELETE:
|
|||
|
{
|
|||
|
if(ConncetIfOnline(NBIOT_CONNECT_COAP) == TRUE)
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MCWDELETE, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_UDPCLOSE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_UDPCLOSE;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
//-><3E>ƶ<EFBFBD>
|
|||
|
case S_PWOFF_MIPLCLOSE:
|
|||
|
{
|
|||
|
if(ConncetIfOnline(NBIOT_CONNECT_COAP) == TRUE)
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPLCLOSE, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_MIPLDELOBJ;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_MIPLDELOBJ;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_UDPCLOSE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
//-><3E>ƶ<EFBFBD>
|
|||
|
case S_PWOFF_MIPLDELOBJ:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPLDELOBJ, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_MIPLDELETE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_MIPLDELETE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
//-><3E>ƶ<EFBFBD>
|
|||
|
case S_PWOFF_MIPLDELETE:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_MIPLDELETE, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_UDPCLOSE;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_UDPCLOSE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_PWOFF_UDPCLOSE:
|
|||
|
{
|
|||
|
if(ConncetIfOnline(NBIOT_CONNECT_UDP1) == TRUE)
|
|||
|
{
|
|||
|
stringbuffer_temp[0] = NbiotGetSocketCode();
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_NSOCL, 1, stringbuffer_temp,1);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_CPOF;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_CPOF;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_CPOF;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_PWOFF_CPOF:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CPOF, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_PW_DOWN;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_PW_DOWN;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
//-><3E><>Ƶ<EFBFBD><C6B5>
|
|||
|
case S_PWOFF_CFUN0:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_CFUN0, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_NCSEARFCN;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_NCSEARFCN;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
//-><3E><>Ƶ<EFBFBD><C6B5>
|
|||
|
case S_PWOFF_NCSEARFCN:
|
|||
|
{
|
|||
|
g_at_request_res = AT_Common_Requeset_Proc(AT_CODE_NCSEARFCN, 0, NULL,0);
|
|||
|
if(g_at_request_res == ResultOk)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_PW_DOWN;
|
|||
|
}
|
|||
|
else if(g_at_request_res == ResultFail)
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_PW_DOWN;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_PWOFF_PW_DOWN:
|
|||
|
{
|
|||
|
if (!check_timer_1s())
|
|||
|
{
|
|||
|
NB_Power_Disable(); //<2F>жϵ<D0B6>Դ
|
|||
|
set_timer_1s(1);
|
|||
|
s_power_off_state = S_PWOFF_PW_DOWN_WAIT;
|
|||
|
Nbiot_Para.net_state = NB_OFF_LINE;
|
|||
|
Nbiot_Para.coap_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.udp1_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.udp2_state = CONNECT_OFF_LINE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_PWOFF_PW_DOWN_WAIT:
|
|||
|
{
|
|||
|
if (!check_timer_1s())
|
|||
|
{
|
|||
|
NbiotPreSleep();
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_power_off_state = S_PWOFF_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_power_off_state = S_PWOFF_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD>ҪΪ<EFBFBD>˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>估ʹ<EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
void set_timer_1s(u16 time)
|
|||
|
{
|
|||
|
Set100msTimer(TIMER_100MS_NBIOT, time * 10);
|
|||
|
}
|
|||
|
|
|||
|
u16 check_timer_1s(void)
|
|||
|
{
|
|||
|
return Check100msTimer(TIMER_100MS_NBIOT);
|
|||
|
}
|
|||
|
|
|||
|
void set_timer_1ms(u16 time)
|
|||
|
{
|
|||
|
Set5msTimer(TIMER_5MS_NBIOT, time / 5);
|
|||
|
}
|
|||
|
|
|||
|
u16 check_timer_1ms(void)
|
|||
|
{
|
|||
|
return Check5msTimer(TIMER_5MS_NBIOT);
|
|||
|
}
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void StartPowerOffTask()
|
|||
|
* @brief <EFBFBD>ػ<EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
void StartPowerOffTask(void)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_POWER_OFF;
|
|||
|
s_power_off_state = S_PWOFF_START;
|
|||
|
}
|
|||
|
|
|||
|
//NBǿ<42>ƹػ<C6B9>
|
|||
|
void NbForcePowerOff(void)
|
|||
|
{
|
|||
|
NB_Power_Disable();
|
|||
|
Nbiot_Para.net_state = NB_OFF_LINE;
|
|||
|
Nbiot_Para.coap_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.udp1_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.udp2_state = CONNECT_OFF_LINE;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = S_NBIOT_MAIN_IDLE;
|
|||
|
s_at_requeset_state = AT_REQUEST_IDLE;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
UNION_4U8TOU32 net_state_data;
|
|||
|
u32 sys_get_net_state(void)
|
|||
|
{
|
|||
|
s16 s_temp_data=0;
|
|||
|
if(g_s_nbiot_main_state ==S_NBIOT_MAIN_POWER_INIT)
|
|||
|
{
|
|||
|
net_state_data.data_buf[0] = 1;
|
|||
|
net_state_data.data_buf[1] = s_init_state;
|
|||
|
//net_state_buf[2]CEREG
|
|||
|
//net_state_buf[3]cgatt
|
|||
|
}
|
|||
|
else if(g_s_nbiot_main_state == S_NBIOT_MAIN_COAP_OPEN)
|
|||
|
{
|
|||
|
net_state_data.data_buf[0] = 2;
|
|||
|
net_state_data.data_buf[1] = s_coap_connect_state;
|
|||
|
}
|
|||
|
else if(If_NB_Poweron()==FALSE)
|
|||
|
{
|
|||
|
net_state_data.data_buf[0] = 3;
|
|||
|
//rsrp
|
|||
|
NbiotGetRSRP(&s_temp_data);
|
|||
|
net_state_data.data_buf[1] = -(s_temp_data/10);
|
|||
|
//SNR
|
|||
|
NbiotGetSNR(&s_temp_data);
|
|||
|
if(s_temp_data<0)
|
|||
|
{
|
|||
|
net_state_data.data_buf[2] = (-s_temp_data)|0x80;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
net_state_data.data_buf[2] = s_temp_data/10;
|
|||
|
}
|
|||
|
//CSQ
|
|||
|
NbiotGetCSQ(&net_state_data.data_buf[3]);
|
|||
|
}
|
|||
|
return net_state_data.datas;
|
|||
|
}
|
|||
|
|
|||
|
void sys_set_net_state(u8 state, u8 data)
|
|||
|
{
|
|||
|
net_state_data.data_buf[state] = data;
|
|||
|
}
|
|||
|
TYP_PSM_STATE getPsmState(void)
|
|||
|
{
|
|||
|
return PSM_STATE_OUT;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PSMģʽ
|
|||
|
}
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
#endif
|