3578 lines
105 KiB
C
3578 lines
105 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_BC25
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C"
|
|||
|
{
|
|||
|
#endif
|
|||
|
|
|||
|
#include "nb_uart_driver_bc25.h"
|
|||
|
#include "nb_driver_bc25.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 "UWater_Adc_driver.h"
|
|||
|
#include "nb_upload_monitor.h"
|
|||
|
/********************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>************************************/
|
|||
|
NBIOT_PARA Nbiot_Para;
|
|||
|
NBIOT_MSG Nbiot_Msg;
|
|||
|
static NBIOT_SEND_DATA Nbiot_Send_Data;
|
|||
|
//static u8 *g_s_csq_value;
|
|||
|
|
|||
|
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>)
|
|||
|
u8 g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
//u8 s_send_state;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
|
|||
|
u8 g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
u8 g_s_nbiot_mode_flag = NO_NBIOT_TASK;
|
|||
|
u8 g_s_nbiot_send_type;
|
|||
|
u8 g_s_nbiot_read_ccid_flag = FALSE;
|
|||
|
u8 g_s_nbiot_read_ECL_flag = FALSE;
|
|||
|
u8 flag_clear_ncsearfcn = 0;
|
|||
|
u8 nb_power_flag = FALSE;
|
|||
|
u8 s_init_state = S_INIT_POWER_ON;
|
|||
|
u8 s_coap_connect_state = S_COAP_CONNECT_START;
|
|||
|
u8 s_udp_connect_state = S_UDP_CONNECT_START;
|
|||
|
u8 s_coap_send_state = S_SEND_START;
|
|||
|
u8 s_udp_send_state = S_SEND_START;
|
|||
|
u8 s_power_off_state = S_START;
|
|||
|
char c_AT_NMGS[40 + UP_BUF_SIZE*2];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>Ƚ<EFBFBD>С
|
|||
|
|
|||
|
static const char* c_AT_NUESTATS = "AT+QENG=0\r";
|
|||
|
static const char* c_AT_CCLK = "AT+CCLK?\r"; //<2F><>ѯ<EFBFBD><D1AF>վʱ<D5BE><CAB1>
|
|||
|
//ip<69><70>ַ<EFBFBD>Ͷ˿<CDB6>ָ<EFBFBD><D6B8>
|
|||
|
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;
|
|||
|
//PSM<53>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
static u8 s_psm_adc_done = 0; // ADװ<44><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־
|
|||
|
static u32 s_psm_adc_result = 0; // ADת<44><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/*****************************<2A>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>***********************************/
|
|||
|
void NbiotInitMachine(void);
|
|||
|
void CoapConnectMachine(void);
|
|||
|
void UdpConnectMachine(void);
|
|||
|
void CoapSendDataMachine(void);
|
|||
|
void UdpSendDataMachine(void);
|
|||
|
void NbiotPowerOffMachine(void);
|
|||
|
void UdpReadDataMachine(void);
|
|||
|
//static void NbiotMsgDeal(void);
|
|||
|
void NbiotReadECLSNRMachine(void);
|
|||
|
void StartUdpSendData(void);
|
|||
|
void sys_get_three_code (void);
|
|||
|
void OnenetConnectMachine(void);
|
|||
|
void OneNetSendDataMachine(void);
|
|||
|
void StartOnenetAckRev(void);
|
|||
|
void NbiotRevAckMachine(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 CoapStartConnect(void);
|
|||
|
void StartCoapSendData(void);
|
|||
|
|
|||
|
void StartNbiotInit(void);
|
|||
|
void UdpStartConnect(u8 udp_num);
|
|||
|
|
|||
|
void OneNetStartConnect(void);
|
|||
|
void StartOnenetSendData(void);
|
|||
|
|
|||
|
void Psm_Wakup_Machine(void);
|
|||
|
void Psm_Sleep_Machine(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);
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @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 NBIOT_S_IDLE:
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>ģ<DEB8>udp<64>·<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>̫<EFBFBD>̣<EFBFBD><CCA3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
|||
|
/*if(TRUE == UdpIfNeedReadDataBc25(NBIOT_CONNECT_UDP1))
|
|||
|
{
|
|||
|
ClearUdpReadDataFlag(NBIOT_CONNECT_UDP1);
|
|||
|
SetRcvDataType(NB_RCV_UDP1_DATA);
|
|||
|
g_s_nbiot_main_state = NBIOT_READ_UDP_DATA;
|
|||
|
}
|
|||
|
else if(TRUE == UdpIfNeedReadDataBc25(NBIOT_CONNECT_UDP2))
|
|||
|
{
|
|||
|
ClearUdpReadDataFlag(NBIOT_CONNECT_UDP2);
|
|||
|
SetRcvDataType(NB_RCV_UDP2_DATA);
|
|||
|
g_s_nbiot_main_state = NBIOT_READ_UDP_DATA;
|
|||
|
}
|
|||
|
else if(TRUE == Check_Udp_Data_Received())
|
|||
|
{
|
|||
|
Clear_Udp_Rec_Data_Flag();
|
|||
|
g_s_nbiot_main_state = NBIOT_READ_UDP_DATA;
|
|||
|
}
|
|||
|
else*/
|
|||
|
if(TRUE == NbiotGetRevAck())//<2F>յ<EFBFBD>ONNET<45>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>Ƚ<EFBFBD><C8BD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>һ<EFBFBD><D2BB>
|
|||
|
{
|
|||
|
ClearNbiotGetRevAck();
|
|||
|
StartOnenetAckRev();
|
|||
|
g_s_nbiot_main_state = NBIOT_REV_ACK;
|
|||
|
}
|
|||
|
else if(FrameCheckMsgApp(Msg_PsmPowerCheck))
|
|||
|
{
|
|||
|
FrameClearMsgApp(Msg_PsmPowerCheck);
|
|||
|
if(psm_model_state == PSM_STATE_SLEEP)
|
|||
|
{
|
|||
|
NbiotPsmCheckTask();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case NBIOT_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;898608 <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')||(temp_iccid_buf[5]=='8'))
|
|||
|
{
|
|||
|
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 = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
else //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case NBIOT_NET_OPEN:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
if(nbiot_temp_connect_type == NBIOT_CONNECT_UDP1)
|
|||
|
{
|
|||
|
UdpConnectMachine();
|
|||
|
}
|
|||
|
else if(nbiot_temp_connect_type == NBIOT_CONNECT_UDP2)
|
|||
|
{
|
|||
|
UdpConnectMachine();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
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)
|
|||
|
{
|
|||
|
if((Sys_data_object.P1.func_cfg_bytes[12]&0x80)&&(Sys_data_object.P1.func_cfg_bytes[12]&0x03)) //PSMģʽ<C4A3>ϱ<EFBFBD><CFB1>ж<EFBFBD>
|
|||
|
{
|
|||
|
psm_model_state = PSM_STATE_WAKE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
psm_model_state = PSM_STATE_OUT;
|
|||
|
}
|
|||
|
if(nbiot_temp_connect_type == NBIOT_CONNECT_COAP)
|
|||
|
{
|
|||
|
Nbiot_Para.coap_state = CONNECT_ON_LINE;
|
|||
|
}
|
|||
|
else 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 = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case NBIOT_DATA_SEND:
|
|||
|
{
|
|||
|
if (g_s_nbiot_task_flag == TASK_INIT)
|
|||
|
{
|
|||
|
if(g_s_nbiot_send_type == SEND_TYPE_COAP)
|
|||
|
{
|
|||
|
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 if(g_s_nbiot_send_type == SEND_TYPE_UDP1)
|
|||
|
{
|
|||
|
UdpSendDataMachine(); //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
else if(g_s_nbiot_send_type == SEND_TYPE_UDP2)
|
|||
|
{
|
|||
|
UdpSendDataMachine(); //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case NBIOT_POWER_OFF:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
NbiotPowerOffMachine(); //<2F>ϵ<EFBFBD><CFB5>ػ<EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_mode_flag = NO_NBIOT_TASK;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_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 NBIOT_READ_ECL_SNR:
|
|||
|
{
|
|||
|
if (NB_ON_LINE == Nbiot_Para.net_state)
|
|||
|
{
|
|||
|
if (g_s_nbiot_task_flag == TASK_INIT)
|
|||
|
{
|
|||
|
NbiotReadECLSNRMachine(); //<2F><>CSQ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>Լ<EFBFBD><D4BC>Ҫ<EFBFBD>Լ죬<D4BC><ECA3AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6>ź<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
else if (g_s_nbiot_task_flag == TASK_SUCCESS)
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = RSRP_SUCCESS;
|
|||
|
g_s_nbiot_mode_flag = NO_NBIOT_TASK;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_mode_flag = NO_NBIOT_TASK;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if (TRUE == g_s_nbiot_read_ECL_flag)
|
|||
|
{
|
|||
|
if (g_s_nbiot_task_flag == TASK_INIT)
|
|||
|
{
|
|||
|
NbiotReadECLSNRMachine(); //<2F><>CSQ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>Լ<EFBFBD><D4BC>Ҫ<EFBFBD>Լ죬<D4BC><ECA3AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6>ź<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
else if (g_s_nbiot_task_flag == TASK_SUCCESS)
|
|||
|
{
|
|||
|
g_s_nbiot_mode_flag = NO_NBIOT_TASK;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_mode_flag = NO_NBIOT_TASK;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE; //Ӧ<>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ùػ<C3B9><D8BB><EFBFBD><EFBFBD><EFBFBD>_
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_POWER_INIT; //ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
StartNbiotInit();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
/*
|
|||
|
case NBIOT_READ_UDP_DATA:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
UdpReadDataMachine();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;*/
|
|||
|
case NBIOT_REV_ACK:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
NbiotRevAckMachine();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case NBIOT_PSM_WAKEUP:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
Psm_Wakup_Machine();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case NBIOT_PSM_SLEEP:
|
|||
|
{
|
|||
|
if (TASK_INIT == g_s_nbiot_task_flag)
|
|||
|
{
|
|||
|
Psm_Sleep_Machine();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name u8 NbiotIfIdle()
|
|||
|
* @brief <EFBFBD><EFBFBD>ѯģ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
***************************************************************************/
|
|||
|
u8 NbiotIfIdle(void)
|
|||
|
{
|
|||
|
if (NBIOT_S_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 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 (NBIOT_S_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
if (!NbiotIfOnline())
|
|||
|
{
|
|||
|
if (NBIOT_S_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
Nbiot_Send_Data.state = state; //<2F><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
*state = NBIOT_ING;
|
|||
|
g_s_nbiot_mode_flag = ONLINE_MODE;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_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;
|
|||
|
}
|
|||
|
else if(connect_type == NBIOT_CONNECT_UDP1)
|
|||
|
{
|
|||
|
udp_ip1 = temp_ip;
|
|||
|
udp_port1 = temp_port;
|
|||
|
UdpStartConnect(NBIOT_CONNECT_UDP1);
|
|||
|
}
|
|||
|
else if(connect_type == NBIOT_CONNECT_UDP2)
|
|||
|
{
|
|||
|
udp_ip2 = temp_ip;
|
|||
|
udp_port2 = temp_port;
|
|||
|
UdpStartConnect(NBIOT_CONNECT_UDP2);
|
|||
|
}
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_NET_OPEN;
|
|||
|
}
|
|||
|
void NbiotPsmWakeupTask(void)
|
|||
|
{
|
|||
|
if (NBIOT_S_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_PSM_WAKEUP;
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_START;
|
|||
|
}
|
|||
|
}
|
|||
|
void NbiotPsmSleepTask(void)
|
|||
|
{
|
|||
|
if (NBIOT_S_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_PSM_SLEEP;
|
|||
|
s_psm_sleep_state = PSM_SLPSTA_START;
|
|||
|
}
|
|||
|
}
|
|||
|
void NbiotPsmCheckTask(void)
|
|||
|
{
|
|||
|
if (NBIOT_S_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_PSM_SLEEP;
|
|||
|
s_psm_sleep_state = PSM_CHECK_START;
|
|||
|
}
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @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 ((NBIOT_S_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_mode_flag = SEND_MODE;
|
|||
|
g_s_nbiot_send_type = send_type;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_DATA_SEND;
|
|||
|
StartNbiotSendData();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
*state = NBIOT_ERROR;
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
u8 GetNbiotSendType(void)
|
|||
|
{
|
|||
|
return g_s_nbiot_send_type;
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NbiotReadCsqTask(u8 *out_csq,u8 *state)
|
|||
|
* @brief NBIOT<EFBFBD><EFBFBD>ѯ<EFBFBD>ź<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] out_csq<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
|||
|
* @param[out] state:״̬<EFBFBD><EFBFBD>Ϣ
|
|||
|
* @retval None
|
|||
|
* @other state(CSQ_ING<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>, CSQ_SUCCES<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣)
|
|||
|
***************************************************************************/
|
|||
|
/*void NbiotUdpOpenTask(void)
|
|||
|
{
|
|||
|
if (NBIOT_S_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
if(!UdpIfOnline())
|
|||
|
{
|
|||
|
g_s_nbiot_mode_flag = ONLINE_MODE;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_UDP_OPEN;
|
|||
|
UdpStartConnect();
|
|||
|
}
|
|||
|
}
|
|||
|
}*/
|
|||
|
|
|||
|
void NbiotReadECLSNRTask(u8 *state)
|
|||
|
{
|
|||
|
if (NBIOT_S_IDLE == g_s_nbiot_main_state)
|
|||
|
{
|
|||
|
Nbiot_Send_Data.state = state;
|
|||
|
*state = ECL_SNR_ING;
|
|||
|
g_s_nbiot_mode_flag = READ_ECL_SNR;
|
|||
|
g_s_nbiot_read_ECL_flag = FALSE;
|
|||
|
g_s_nbiot_task_flag = TASK_INIT;
|
|||
|
g_s_nbiot_main_state = NBIOT_READ_ECL_SNR;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
*state = ECL_SNR_ERROR;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @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 (NBIOT_S_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
|
|||
|
***************************************************************************/
|
|||
|
static void NbiotPreSleepNormal(void)
|
|||
|
{
|
|||
|
NB_Power_Disable(); //<2F>жϵ<D0B6>Դ
|
|||
|
UartPreSleep(NB_UART_COM);
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
Nbiot_Para.coap_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.udp1_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.udp2_state = CONNECT_OFF_LINE;
|
|||
|
Nbiot_Para.net_state = NB_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);
|
|||
|
}
|
|||
|
static void NbiotPreSleepPsm(void)
|
|||
|
{
|
|||
|
UartPreSleep(NB_UART_COM);
|
|||
|
g_s_nbiot_main_state = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
void NbiotPreSleep(void)
|
|||
|
{
|
|||
|
if(Sys_data_object.P3.NBSleepMode == 1)//PSMģʽ<C4A3><CABD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
NbiotPreSleepPsm();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
NbiotPreSleepNormal();
|
|||
|
}
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @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>***********************************/
|
|||
|
void StartNbiotInit(void)
|
|||
|
{
|
|||
|
s_init_state = S_INIT_POWER_ON;
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void NbiotInitMachine()
|
|||
|
* @brief NBIOT<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>
|
|||
|
* @param[in] None
|
|||
|
* @param[out] None
|
|||
|
* @retval None
|
|||
|
* @other None
|
|||
|
***************************************************************************/
|
|||
|
#define MODULE_POWER_DELAY_TIME 1000 //mS
|
|||
|
#define MODULE_RESET_DELAY_TIME 1000 //mS
|
|||
|
//AT+QBAND AT+QBAND=1,5 //<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>Ϊ BAND 5
|
|||
|
//<2F>й<EFBFBD><D0B9>ƶ<EFBFBD><C6B6><EFBFBD>Ϊ:898600;898602;898604;898607 <20>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>898603;898611
|
|||
|
void NbiotInitMachine_BC25(void)
|
|||
|
{
|
|||
|
static u8 s_at_error_count = 0; //<2F><>¼AT<41><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ʱ<EEB3AC><CAB1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
|
|||
|
static const char* c_AT = "AT\r";
|
|||
|
static const char* c_AT_IMEI = "AT+CGSN=1\r";
|
|||
|
static const char* c_AT_CIMI = "AT+CIMI\r";
|
|||
|
static const char* c_AT_ICCID = "AT+QCCID\r";//<2F><><EFBFBD>˸<EFBFBD><CBB8><EFBFBD>20200605
|
|||
|
static const char* c_AT_CMEE = "AT+CMEE=1\r"; //<2F><><EFBFBD><EFBFBD>ERROR<4F><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
static const char* c_AT_CPSMS = "AT+CPSMS=0\r"; //<2F>ر<EFBFBD>PSMģʽ
|
|||
|
static const char* c_AT_NPTWEDRXS = "AT+CEDRXS=0\r"; //<2F>ر<EFBFBD>eDRXģʽ
|
|||
|
static const char* c_AT_CSQ = "AT+CSQ\r"; //<2F><>ѯ<EFBFBD>ź<EFBFBD>ֵ
|
|||
|
static const char* c_AT_CEREG = "AT+CEREG?\r";
|
|||
|
static const char* c_AT_NCFG = "AT+NCFG=0,172800\r";//<2F><><EFBFBD><EFBFBD>lifetime ƽ̨<C6BD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʱ<EFBFBD><CAB1><EFBFBD>豸<EFBFBD><E8B1B8>ʾ<EFBFBD><CABE><EFBFBD>ߣ<EFBFBD>48Сʱ
|
|||
|
static const char* c_AT_CGATT = "AT+CGATT?\r";
|
|||
|
static u8 c_AT_CGDCONT_APN[APN_SIZE+50] = "AT+QCGDEFCONT=\"IP\",\""; //ָ<><D6B8>APN,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>СΪ<D0A1>̶<EFBFBD>20<32>ֽ<EFBFBD>+APN<50><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ټ<EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD>ռ<EFBFBD>
|
|||
|
|
|||
|
switch (s_init_state)
|
|||
|
{
|
|||
|
case S_INIT_POWER_ON://NBģ<42><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_LOW();//PWR_NB_HIG();
|
|||
|
NB_Power_Enable();
|
|||
|
set_timer_1ms(5*MODULE_POWER_DELAY_TIME);//<2F><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD>,<2C><>SIM<49><4D><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
s_init_state = S_INIT_POWER_ON_WAIT;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
// case S_INIT_PWRKEY_LOW://NBģ<42><C4A3><EFBFBD>͵<EFBFBD>
|
|||
|
// {
|
|||
|
// if (!check_timer_1ms())
|
|||
|
// {
|
|||
|
// PWR_NB_LOW();
|
|||
|
// s_init_state = S_INIT_PWRKEY_HIGH;
|
|||
|
// set_timer_1ms(MODULE_RESET_DELAY_TIME*4);
|
|||
|
// }
|
|||
|
// }
|
|||
|
// break;
|
|||
|
|
|||
|
// case S_INIT_PWRKEY_HIGH://NBģ<42><C4A3><EFBFBD>͵<EFBFBD>
|
|||
|
// {
|
|||
|
// if (!check_timer_1ms())
|
|||
|
// {
|
|||
|
// PWR_NB_HIG(); //<2F>ߵ<EFBFBD>ƽ
|
|||
|
// set_timer_1s(5);
|
|||
|
// s_init_state = S_INIT_POWER_ON_WAIT;
|
|||
|
// }
|
|||
|
// }
|
|||
|
// break;
|
|||
|
|
|||
|
|
|||
|
case S_INIT_POWER_ON_WAIT://<2F>ȴ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>ʱ
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
s_at_error_count = 0; //ATָ<54><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
if(getUploadControlPara(UP_AT_SIMPLE)!=AT_SIMPLE_NULL)
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ASK_CEREG;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ATS;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ATS://<2F><><EFBFBD><EFBFBD>"AT" ȷ<><C8B7>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT, strlen(c_AT), cst_AT_No_AT);
|
|||
|
s_init_state = S_INIT_ATS_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME); //<2F><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>ATָ<54><EFBFBD>ص<EFBFBD><D8B5>ʱ<EEB3A4><CAB1>300ms(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺͽ<CDBA><CDBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD>ʱ<EFBFBD><CAB1>)
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ATS_R://<2F>ȴ<EFBFBD>"AT"Ӧ<><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_ASK_IMEI; //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ѯIMEI
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR)) //Ӧ<><D3A6><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_ASK_IMEI; //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ѯIMEI
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ATS;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_IMEI: //<2F><>ʼ<EFBFBD><CABC>ѯIMEI<45><49>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_IMEI, strlen(c_AT_IMEI), cst_AT_No_AT_IMEI);
|
|||
|
s_init_state = S_INIT_ASK_IMEI_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_IMEI_R://<2F>ȴ<EFBFBD>IMEIӦ<49><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_ASK_CIMI;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_CIMI_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_ASK_CIMI;
|
|||
|
set_timer_1ms(2 * AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ASK_IMEI;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_CIMI://<2F><>ʼ<EFBFBD><CABC>ѯCIMI
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CIMI, strlen(c_AT_CIMI), cst_AT_No_AT_CIMI);
|
|||
|
s_init_state = S_INIT_ASK_CIMI_R;
|
|||
|
set_timer_1ms(6*AT_COMMAND_RECEIVE_WAIT_TIME);//ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C>ȴ<EFBFBD>SIM<49><4D><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ϳ<EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_CIMI_R://<2F>ȴ<EFBFBD>CIMIӦ<49><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_ASK_ICCID; //<2F><>ʼ<EFBFBD><CABC>ѯICCID
|
|||
|
set_timer_1ms(2*AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_CIMI_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_ASK_ICCID; //<2F><>ʼ<EFBFBD><CABC>ѯICCID
|
|||
|
set_timer_1ms(2*AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ASK_CIMI;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_ICCID://<2F><>ʼ<EFBFBD><CABC>ѯICCID
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_ICCID, strlen(c_AT_ICCID), cst_AT_No_AT_ICCID);
|
|||
|
s_init_state = S_INIT_ASK_ICCID_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME); //<2F><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>ATָ<54><EFBFBD>ص<EFBFBD><D8B5>ʱ<EEB3A4><CAB1>300ms(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺͽ<CDBA><CDBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD>ʱ<EFBFBD><CAB1>)
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_ICCID_R://<2F>ȴ<EFBFBD>ICCIDӦ<44><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
//<2F><>IMEI IMSI ICCID ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>RAM
|
|||
|
sys_get_three_code();
|
|||
|
s_init_state = S_INIT_CMEE; //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ERROR<4F><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_ICCID_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_CMEE; //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ERROR<4F><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ASK_ICCID;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_CMEE: //
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CMEE, strlen(c_AT_CMEE), cst_AT_No_AT_CMEE);
|
|||
|
s_init_state = S_INIT_CMEE_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME); //<2F><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>ATָ<54><EFBFBD>ص<EFBFBD><D8B5>ʱ<EEB3A4><CAB1>300ms(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺͽ<CDBA><CDBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD>ʱ<EFBFBD><CAB1>)
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_CMEE_R://<2F>ȴ<EFBFBD>CMEEӦ<45><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_TCP_CPSMS;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_CMEE_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_TCP_CPSMS;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_CMEE;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_TCP_CPSMS://<2F><><EFBFBD>ùرջ<D8B1><D5BB><EFBFBD><EFBFBD><EFBFBD>PSMģʽ
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CPSMS, strlen(c_AT_CPSMS), cst_AT_No_AT_CPSMS);//<2F>ر<EFBFBD>PSM
|
|||
|
s_init_state = S_TCP_CPSMS_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_TCP_CPSMS_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//Ӧ<><D3A6><EFBFBD><EFBFBD>ȷ-<2D><>һ<EFBFBD><D2BB>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_TCP_NPTWEDRXS;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_CPSMS_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_TCP_NPTWEDRXS;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_TCP_CPSMS;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_TCP_NPTWEDRXS://<2F>ر<EFBFBD>eDRXģʽ
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_NPTWEDRXS, strlen(c_AT_NPTWEDRXS), cst_AT_No_AT_NPTWEDRXS);
|
|||
|
s_init_state = S_TCP_NPTWEDRXS_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_TCP_NPTWEDRXS_R://<2F>ر<EFBFBD>eDRXģʽ --<2D>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_AT_CGDCONT;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_NPTWEDRXS_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_AT_CGDCONT;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_TCP_NPTWEDRXS;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_AT_CGDCONT:
|
|||
|
{
|
|||
|
if(!check_timer_1ms())
|
|||
|
{
|
|||
|
u8 ip_apn = 20;
|
|||
|
|
|||
|
int i;
|
|||
|
for(i = 0; i < Sys_data_object.P1.apn[1]; i++)
|
|||
|
{
|
|||
|
c_AT_CGDCONT_APN[ip_apn++] = Sys_data_object.P1.apn[2 + i];
|
|||
|
}
|
|||
|
c_AT_CGDCONT_APN[ip_apn++] = '"';
|
|||
|
c_AT_CGDCONT_APN[ip_apn++] = '\r';
|
|||
|
NbiotUartSend((u8*) c_AT_CGDCONT_APN, ip_apn, cst_AT_No_AT_CGDCONT);
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
s_init_state = S_INIT_AT_CGDCONT_R;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_AT_CGDCONT_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
s_init_state = S_INIT_ASK_CSQ;
|
|||
|
}
|
|||
|
else if ((NbiotCheckAtAck() == UART_ERROR) || (!check_timer_1ms()))
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= AT_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
s_init_state = S_INIT_ASK_CSQ;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_AT_CGDCONT;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_CSQ://<2F><>ѯCSQ
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CSQ, strlen(c_AT_CSQ), cst_AT_No_AT_CSQ);
|
|||
|
s_init_state = S_INIT_ASK_CSQ_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME); //<2F><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>ATָ<54><EFBFBD>ص<EFBFBD><D8B5>ʱ<EEB3A4><CAB1>300ms(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺͽ<CDBA><CDBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD>ʱ<EFBFBD><CAB1>)
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_CSQ_R://<2F>ȴ<EFBFBD>CSQӦ<51><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
|
|||
|
s_at_error_count = 0;
|
|||
|
|
|||
|
s_init_state = S_INIT_ASK_CEREG; //<2F><>ʼ<EFBFBD><CABC>ѯCEREG
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_CSQ_ERROR)
|
|||
|
{
|
|||
|
|
|||
|
s_at_error_count = 0;
|
|||
|
|
|||
|
s_init_state = S_INIT_ASK_CEREG; //<2F><>ʼ<EFBFBD><CABC>ѯCEREG
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ASK_CSQ;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_CEREG://<2F><>ʼ<EFBFBD><CABC>ѯCEREG
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CEREG, strlen((const char*) c_AT_CEREG), cst_AT_No_AT_CEREG);
|
|||
|
s_init_state = S_INIT_ASK_CEREG_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME * 2);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_CEREG_R://<2F>ȴ<EFBFBD>CEREGӦ<47><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><>ȷӦ<C8B7><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_SET_NCFG;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))//Ӧ<><D3A6><EFBFBD><EFBFBD>ʱ
|
|||
|
{
|
|||
|
/*u8 NB_login_ask_times = FrameCheckParaApp(FramePara_NbParaLoginAckTimes);
|
|||
|
if (NB_login_ask_times < 30)
|
|||
|
{
|
|||
|
NB_login_ask_times = 30;
|
|||
|
}
|
|||
|
if (NB_login_ask_times > 150)
|
|||
|
{
|
|||
|
NB_login_ask_times = 150;
|
|||
|
}
|
|||
|
if (++s_at_error_count >= NB_login_ask_times)*/
|
|||
|
if (++s_at_error_count >= NUM_AT_CEREG_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_SET_NCFG;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ASK_CEREG;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_INIT_SET_NCFG:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_NCFG, strlen((const char*) c_AT_NCFG), cst_AT_No_AT);
|
|||
|
s_init_state = S_INIT_SET_NCFG_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME*2);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_INIT_SET_NCFG_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><>ȷӦ<C8B7><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_init_state = S_INIT_ASK_CGATT;
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))//Ӧ<><D3A6><EFBFBD><EFBFBD>ʱ
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_init_state = S_INIT_ASK_CGATT;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_INIT_ASK_CGATT://<2F><>ʼ<EFBFBD><CABC>ѯCGATT
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CGATT, strlen(c_AT_CGATT), cst_AT_No_AT_CGATT_how);
|
|||
|
s_init_state = S_INIT_ASK_CGATT_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME*2);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_CGATT_R://<2F>ȴ<EFBFBD>CGATTӦ<54><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><>ȷӦ<C8B7><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_init_state = S_INIT_ASK_NUESTATS;
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))//Ӧ<><D3A6><EFBFBD><EFBFBD>ʱ
|
|||
|
{
|
|||
|
u8 NB_login_ask_times = FrameCheckParaApp(FramePara_NbParaLoginAckTimes);
|
|||
|
if (NB_login_ask_times < 30)
|
|||
|
{
|
|||
|
NB_login_ask_times = 30;
|
|||
|
}
|
|||
|
if (NB_login_ask_times > 150)
|
|||
|
{
|
|||
|
NB_login_ask_times = 150;
|
|||
|
}
|
|||
|
if (++s_at_error_count >= NB_login_ask_times)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7>
|
|||
|
s_init_state = S_INIT_POWER_ON;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ASK_CGATT;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_INIT_ASK_NUESTATS:
|
|||
|
{
|
|||
|
if(!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_NUESTATS, strlen(c_AT_NUESTATS), cst_AT_No_AT_NUESTATS);
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
s_init_state = S_INIT_ASK_NUESTATS_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_NUESTATS_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_init_state = S_INIT_ASK_CCLK;
|
|||
|
}
|
|||
|
else if(!check_timer_1ms())
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= NUM_AT_ECL_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_init_state = S_INIT_ASK_CCLK;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ASK_NUESTATS;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_CCLK://<2F><>ʼ<EFBFBD><CABC>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
{
|
|||
|
if(!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CCLK, strlen(c_AT_CCLK), cst_AT_No_AT_CCLK);
|
|||
|
s_init_state = S_INIT_ASK_CCLK_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_INIT_ASK_CCLK_R://<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><>ȷӦ<C8B7><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
|||
|
s_init_state = S_INIT_POWER_ON; // <20><><EFBFBD><EFBFBD>ָ<EFBFBD>뷵<EFBFBD><EBB7B5>
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))//Ӧ<><D3A6><EFBFBD><EFBFBD>ʱ
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_CCLK_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
|||
|
s_init_state = S_INIT_POWER_ON; // <20><><EFBFBD><EFBFBD>ָ<EFBFBD>뷵<EFBFBD><EBB7B5>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_init_state = S_INIT_ASK_CCLK;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_init_state = S_INIT_POWER_ON;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
void NbiotInitMachine(void)
|
|||
|
{
|
|||
|
NbiotInitMachine_BC25();
|
|||
|
}
|
|||
|
//
|
|||
|
void CoapStartConnect(void)
|
|||
|
{
|
|||
|
s_coap_connect_state = S_COAP_CONNECT_START;
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name static void CoapConnectMachine()
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Coap״̬<EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
void CoapConnectMachine_BC25(void)
|
|||
|
{
|
|||
|
static u8 s_at_error_count = 0;
|
|||
|
unsigned char *nbiot_ip;
|
|||
|
u16 nbiot_port;
|
|||
|
static char c_AT_NCDP[50] = "AT+NCDPOPEN=\"117.060.157.137\",05683\r"; //
|
|||
|
static const char* c_AT_NCDP_CK = "AT+NMSTATUS?\r"; //
|
|||
|
|
|||
|
switch (s_coap_connect_state)
|
|||
|
{
|
|||
|
case S_COAP_CONNECT_START: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ
|
|||
|
{
|
|||
|
s_at_error_count=0;
|
|||
|
s_coap_connect_state = S_COAP_NCDP;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_COAP_NCDP:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
u16 len = 13; //<2F><><EFBFBD><EFBFBD>ATָ<54><D6B8><EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳ<EFBFBD><CDB3>ȵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
nbiot_port = coap_port;//Sys_data_object.P1.server_port.datas;
|
|||
|
nbiot_ip = coap_ip;//Sys_data_object.P1.server_ip;
|
|||
|
|
|||
|
//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)
|
|||
|
{
|
|||
|
c_AT_NCDP[len++] = nbiot_ip[i] + 0x30;
|
|||
|
}
|
|||
|
else if (nbiot_ip[i] < 100)
|
|||
|
{
|
|||
|
c_AT_NCDP[len++] = (nbiot_ip[i] / 10) + 0x30;
|
|||
|
c_AT_NCDP[len++] = (nbiot_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
c_AT_NCDP[len++] = (nbiot_ip[i] / 100) + 0x30;
|
|||
|
c_AT_NCDP[len++] = (nbiot_ip[i] / 10) % 10 + 0x30;
|
|||
|
c_AT_NCDP[len++] = (nbiot_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
c_AT_NCDP[len++] = '.';
|
|||
|
}
|
|||
|
len--; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
|
|||
|
c_AT_NCDP[len++] = '\"';
|
|||
|
c_AT_NCDP[len++] = ',';
|
|||
|
c_AT_NCDP[len++] = ((nbiot_port) / 10000) + 0x30;
|
|||
|
c_AT_NCDP[len++] = (((nbiot_port) % 10000) / 1000) + 0x30;
|
|||
|
c_AT_NCDP[len++] = (((nbiot_port) % 1000) / 100) + 0x30;
|
|||
|
c_AT_NCDP[len++] = (((nbiot_port) % 100) / 10) + 0x30;
|
|||
|
c_AT_NCDP[len++] = ((nbiot_port) % 10) + 0x30;
|
|||
|
c_AT_NCDP[len++] = '\r';
|
|||
|
NbiotUartSend((u8*)c_AT_NCDP, len, cst_AT_No_AT_NCDP);
|
|||
|
set_timer_1s(35);
|
|||
|
s_coap_connect_state = S_COAP_NCDP_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_COAP_NCDP_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count=0;
|
|||
|
s_coap_connect_state = S_COAP_NCDP_CK;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if (!check_timer_1s() || NbiotCheckAtAck() == UART_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= NUM_AT_NCDP_ERROR)//
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_coap_connect_state = S_COAP_CONNECT_START;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_coap_connect_state = S_COAP_NCDP;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_COAP_NCDP_CK:
|
|||
|
{
|
|||
|
if(!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_NCDP_CK, strlen(c_AT_NCDP_CK), cst_AT_No_AT_NCDP_CK);
|
|||
|
set_timer_1s(2);
|
|||
|
s_coap_connect_state = S_COAP_NCDP_CK_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_COAP_NCDP_CK_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ONLINE;
|
|||
|
s_coap_connect_state = S_COAP_CONNECT_START;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
}
|
|||
|
else if((!check_timer_1s()))
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= NUM_AT_NCDP_CK_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
s_coap_connect_state = S_COAP_CONNECT_START;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_coap_connect_state = S_COAP_NCDP_CK;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
s_coap_connect_state = S_COAP_CONNECT_START; //״̬<D7B4><CCAC><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>ʼ״̬
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
void CoapConnectMachine()
|
|||
|
{
|
|||
|
CoapConnectMachine_BC25();
|
|||
|
}
|
|||
|
void StartNbiotSendData(void)
|
|||
|
{
|
|||
|
if(g_s_nbiot_send_type == SEND_TYPE_COAP)
|
|||
|
{
|
|||
|
if(Nbiot_Para.Telecom == SIM_CARD_MOBILE)//<2F>ƶ<EFBFBD><C6B6><EFBFBD>
|
|||
|
{
|
|||
|
StartOnenetSendData();
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD>ſ<EFBFBD>
|
|||
|
{
|
|||
|
StartCoapSendData(); //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
}
|
|||
|
}
|
|||
|
else if(g_s_nbiot_send_type == SEND_TYPE_UDP1)
|
|||
|
{
|
|||
|
StartUdpSendData(); //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
UdpStartCheckData();//<2F><>ѯUDP<44><50><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
else if(g_s_nbiot_send_type == SEND_TYPE_UDP2)
|
|||
|
{
|
|||
|
StartUdpSendData(); //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
UdpStartCheckData();//<2F><>ѯUDP<44><50><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#if SEND_ACKID_ENABLE
|
|||
|
u16 Send_AckID = 0;
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
void StartCoapSendData(void)
|
|||
|
{
|
|||
|
s_coap_send_state = S_SEND_START;
|
|||
|
}
|
|||
|
|
|||
|
void CoapSendDataMachine_BC25(void)
|
|||
|
{
|
|||
|
static u8 s_at_error_count = 0; //ATָ<54><D6B8><EFBFBD>ۼƷ<DBBC><C6B7><EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
|
|||
|
static const u8 temp_AT_Buffer[]= {"AT+NMGS="};
|
|||
|
switch (s_coap_send_state)
|
|||
|
{
|
|||
|
case S_SEND_START:
|
|||
|
{
|
|||
|
s_coap_send_state = S_SEND_DATA; //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͣ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ᱨERROR<4F><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ1S<31><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ERROR
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_SEND_DATA:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
u16 len = 8; //<2F><><EFBFBD><EFBFBD>ATָ<54><D6B8><EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳ<EFBFBD><CDB3>ȵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int i;
|
|||
|
for(i=0; i<8; i++)
|
|||
|
{
|
|||
|
c_AT_NMGS[i]=temp_AT_Buffer[i];
|
|||
|
}
|
|||
|
c_AT_NMGS[len++] = (Nbiot_Send_Data.len / 10000) + 0x30;
|
|||
|
c_AT_NMGS[len++] = (Nbiot_Send_Data.len % 10000) / 1000 + 0x30;
|
|||
|
c_AT_NMGS[len++] = (Nbiot_Send_Data.len % 1000) / 100 + 0x30;
|
|||
|
c_AT_NMGS[len++] = (Nbiot_Send_Data.len % 100) / 10 + 0x30;
|
|||
|
c_AT_NMGS[len++] = (Nbiot_Send_Data.len % 10) + 0x30;
|
|||
|
c_AT_NMGS[len++] = ',';
|
|||
|
//<2F><><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)
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x30;
|
|||
|
}
|
|||
|
|
|||
|
if ((*(Nbiot_Send_Data.buf + i) & 0x0F) >= 0x0A)
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x30;
|
|||
|
}
|
|||
|
}
|
|||
|
if((Sys_data_object.P1.func_cfg_bytes[12]&0x80)&&(Sys_data_object.P1.func_cfg_bytes[12]&0x03)) //PSMģʽ<C4A3>ϱ<EFBFBD><CFB1>ж<EFBFBD>
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = ',';
|
|||
|
c_AT_NMGS[len++] = '1';
|
|||
|
c_AT_NMGS[len++] = '0';
|
|||
|
c_AT_NMGS[len++] = '0';//c_AT_NMGS[len++] = '2';
|
|||
|
c_AT_NMGS[len++] = '\r';
|
|||
|
NbiotUartSend((u8*) c_AT_NMGS, len, cst_AT_No_AT_NMGS_ACKID);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if((Sys_data_object.P1.func_cfg_bytes[10] == 0x55)||(Sys_data_object.P3.ProductUploadFlag == 0x55))//ACK<43><4B><EFBFBD>ϱ<EFBFBD><CFB1>ɹ<EFBFBD>
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = ',';
|
|||
|
c_AT_NMGS[len++] = '1';
|
|||
|
c_AT_NMGS[len++] = '0';
|
|||
|
c_AT_NMGS[len++] = '0';
|
|||
|
c_AT_NMGS[len++] = '\r';
|
|||
|
NbiotUartSend((u8*) c_AT_NMGS, len, cst_AT_No_AT_NMGS_ACKID);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = '\r';
|
|||
|
NbiotUartSend((u8*) c_AT_NMGS, len, cst_AT_No_AT_NMGS);
|
|||
|
}
|
|||
|
}
|
|||
|
set_timer_1s(4);
|
|||
|
s_coap_send_state = S_SEND_DATA_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_SEND_DATA_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_SUCCESS;
|
|||
|
s_coap_send_state = S_SEND_START;
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1s()))
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= 1)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
s_coap_send_state = S_SEND_START;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_coap_send_state = S_SEND_DATA_R;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_coap_send_state = S_SEND_START;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
void CoapSendDataMachine(void)
|
|||
|
{
|
|||
|
CoapSendDataMachine_BC25();
|
|||
|
}
|
|||
|
|
|||
|
//<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>
|
|||
|
***************************************************************************/
|
|||
|
void UdpConnectMachine_BC25(void)
|
|||
|
{
|
|||
|
static u8 s_at_error_count = 0;
|
|||
|
|
|||
|
unsigned char *nbiot_ip;
|
|||
|
u16 nbiot_port;
|
|||
|
static char c_AT_QIOPEN[100];// = "AT+QIOPEN=1,0,\"UDP SERVICE\",\"60.208.16.57\",0,8080,0\r"; //
|
|||
|
static const char* c_AT_QICFG = "AT+QICFG=\"showlength\",1\r"; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
switch (s_udp_connect_state)
|
|||
|
{
|
|||
|
case S_UDP_CONNECT_START: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ
|
|||
|
{
|
|||
|
s_at_error_count=0;
|
|||
|
s_udp_connect_state = S_UDP_QICFG;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_UDP_QICFG://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_QICFG, strlen(c_AT_QICFG), cst_AT_No_AT_QICFG);//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD><CABE>ѡ<EFBFBD><D1A1><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD>
|
|||
|
s_udp_connect_state = S_UDP_QICFG_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_UDP_QICFG_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//Ӧ<><D3A6><EFBFBD><EFBFBD>ȷ-<2D><>һ<EFBFBD><D2BB>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_udp_connect_state = S_UDP_QIOPEN;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_QICFG_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_udp_connect_state = S_UDP_QIOPEN;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_udp_connect_state = S_UDP_QIOPEN;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_UDP_QIOPEN:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
u16 len = 21; //<2F><><EFBFBD><EFBFBD>ATָ<54><D6B8><EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳ<EFBFBD><CDB3>ȵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
char strings_temp[50];
|
|||
|
memset(c_AT_QIOPEN,0,sizeof(c_AT_QIOPEN));
|
|||
|
memset(strings_temp,0,sizeof(strings_temp));
|
|||
|
strcpy(c_AT_QIOPEN,"AT+QIOPEN=1,0,\"UDP\",\"");
|
|||
|
if(nbiot_temp_connect_type == NBIOT_CONNECT_UDP1)
|
|||
|
{
|
|||
|
nbiot_port = udp_port1;
|
|||
|
nbiot_ip = udp_ip1;
|
|||
|
c_AT_QIOPEN[12] = '0';//<2F><><EFBFBD><EFBFBD>socket
|
|||
|
}
|
|||
|
else if(nbiot_temp_connect_type == NBIOT_CONNECT_UDP2)
|
|||
|
{
|
|||
|
nbiot_port = udp_port2;
|
|||
|
nbiot_ip = udp_ip2;
|
|||
|
c_AT_QIOPEN[12] = '1';//<2F><><EFBFBD><EFBFBD>socket
|
|||
|
}
|
|||
|
//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>
|
|||
|
for (int i = 0; i < 4; i++)
|
|||
|
{
|
|||
|
if (nbiot_ip[i] < 10)
|
|||
|
{
|
|||
|
c_AT_QIOPEN[len++] = nbiot_ip[i] + 0x30;
|
|||
|
}
|
|||
|
else if (nbiot_ip[i] < 100)
|
|||
|
{
|
|||
|
c_AT_QIOPEN[len++] = (nbiot_ip[i] / 10) + 0x30;
|
|||
|
c_AT_QIOPEN[len++] = (nbiot_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
c_AT_QIOPEN[len++] = (nbiot_ip[i] / 100) + 0x30;
|
|||
|
c_AT_QIOPEN[len++] = (nbiot_ip[i] / 10) % 10 + 0x30;
|
|||
|
c_AT_QIOPEN[len++] = (nbiot_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
c_AT_QIOPEN[len++] = '.';
|
|||
|
}
|
|||
|
len--; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
|
|||
|
c_AT_QIOPEN[len++] = '\"';
|
|||
|
c_AT_QIOPEN[len++] = ',';
|
|||
|
c_AT_QIOPEN[len++] = ((nbiot_port) / 10000) + 0x30;
|
|||
|
c_AT_QIOPEN[len++] = (((nbiot_port) % 10000) / 1000) + 0x30;
|
|||
|
c_AT_QIOPEN[len++] = (((nbiot_port) % 1000) / 100) + 0x30;
|
|||
|
c_AT_QIOPEN[len++] = (((nbiot_port) % 100) / 10) + 0x30;
|
|||
|
c_AT_QIOPEN[len++] = ((nbiot_port) % 10) + 0x30;
|
|||
|
c_AT_QIOPEN[len++] = ',';
|
|||
|
c_AT_QIOPEN[len++] = '0';
|
|||
|
c_AT_QIOPEN[len++] = ',';
|
|||
|
c_AT_QIOPEN[len++] = '1'; //0: Buffer ģʽ; 1:Direct Push ģʽ
|
|||
|
c_AT_QIOPEN[len++] = '\r';
|
|||
|
|
|||
|
len = strlen(c_AT_QIOPEN);
|
|||
|
NbiotUartSend((u8*)c_AT_QIOPEN, len, cst_AT_No_AT_QIOPEN);
|
|||
|
set_timer_1ms(2*AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
s_udp_connect_state = S_UDP_QIOPEN_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_UDP_QIOPEN_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
//s_udp_connect_state = S_UDP_NUESTATS;
|
|||
|
s_udp_connect_state = S_UDP_Wait;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if (!check_timer_1ms() || NbiotCheckAtAck() == UART_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= AT_ERROR)
|
|||
|
{
|
|||
|
//һ<>㲻<EFBFBD>ᷢ<EFBFBD><E1B7A2>,<2C>϶<EFBFBD><CFB6>ܲ鵽<DCB2><E9B5BD><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
|
|||
|
s_at_error_count = 0;
|
|||
|
s_udp_connect_state = S_UDP_NUESTATS;
|
|||
|
//s_udp_connect_state = S_UDP_Wait;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_udp_connect_state = S_UDP_QIOPEN;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_UDP_NUESTATS:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_NUESTATS, strlen(c_AT_NUESTATS), cst_AT_No_AT_NUESTATS);
|
|||
|
set_timer_1ms(2*AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
s_udp_connect_state = S_UDP_NUESTATS_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_UDP_NUESTATS_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_udp_connect_state = S_UDP_CCLK;
|
|||
|
}
|
|||
|
else if (!check_timer_1ms() || NbiotCheckAtAck() == UART_ERROR)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= NUM_AT_ECL_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_udp_connect_state = S_UDP_CCLK;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_udp_connect_state = S_UDP_NUESTATS;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_UDP_CCLK://<2F><>ʼ<EFBFBD><CABC>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CCLK, strlen(c_AT_CCLK), cst_AT_No_AT_CCLK);
|
|||
|
s_udp_connect_state = S_UDP_CCLK_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_UDP_CCLK_R://<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//<2F><>ȷӦ<C8B7><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_udp_connect_state = S_UDP_Wait;
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))//Ӧ<><D3A6><EFBFBD><EFBFBD>ʱ
|
|||
|
{
|
|||
|
if (++s_at_error_count >= NUM_AT_CCLK_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_udp_connect_state = S_UDP_Wait;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_udp_connect_state = S_UDP_CCLK;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_UDP_Wait:
|
|||
|
{
|
|||
|
if((!check_timer_1ms()))
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ONLINE;
|
|||
|
s_udp_connect_state = S_UDP_CONNECT_START; //״̬<D7B4><CCAC><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>ʼ״̬
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F><><EFBFBD><EFBFBD>Ϊֹ<CEAA><D6B9><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_udp_connect_state = S_UDP_CONNECT_START; //״̬<D7B4><CCAC><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>ʼ״̬
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
void UdpConnectMachine(void)
|
|||
|
{
|
|||
|
UdpConnectMachine_BC25();
|
|||
|
}
|
|||
|
//
|
|||
|
void StartUdpSendData(void)
|
|||
|
{
|
|||
|
s_udp_send_state = S_SEND_START;
|
|||
|
}
|
|||
|
//
|
|||
|
void UdpSendDataMachine_BC25(void)
|
|||
|
{
|
|||
|
static u8 s_at_error_count = 0; //ATָ<54><D6B8><EFBFBD>ۼƷ<DBBC><C6B7><EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
|
|||
|
static const u8 temp_AT_Buffer[]= {"AT+QISENDEX=0,"};
|
|||
|
switch (s_udp_send_state)
|
|||
|
{
|
|||
|
case S_SEND_START:
|
|||
|
{
|
|||
|
s_udp_send_state = S_SEND_DATA; //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͣ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ᱨERROR<4F><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ1S<31><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ERROR
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_SEND_DATA:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
u16 len = 14; //<2F><><EFBFBD><EFBFBD>ATָ<54><D6B8><EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳ<EFBFBD><CDB3>ȵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int i;
|
|||
|
for(i=0; i<14; i++)
|
|||
|
{
|
|||
|
c_AT_NMGS[i]=temp_AT_Buffer[i];
|
|||
|
}
|
|||
|
if(g_s_nbiot_send_type == SEND_TYPE_UDP1)
|
|||
|
{
|
|||
|
c_AT_NMGS[12] = '0';//<2F><><EFBFBD><EFBFBD>socket
|
|||
|
}
|
|||
|
else if(g_s_nbiot_send_type == SEND_TYPE_UDP2)
|
|||
|
{
|
|||
|
c_AT_NMGS[12] = '1';//<2F><><EFBFBD><EFBFBD>socket
|
|||
|
}
|
|||
|
|
|||
|
c_AT_NMGS[len++] = (Nbiot_Send_Data.len / 10000) + 0x30;
|
|||
|
c_AT_NMGS[len++] = (Nbiot_Send_Data.len % 10000) / 1000 + 0x30;
|
|||
|
c_AT_NMGS[len++] = (Nbiot_Send_Data.len % 1000) / 100 + 0x30;
|
|||
|
c_AT_NMGS[len++] = (Nbiot_Send_Data.len % 100) / 10 + 0x30;
|
|||
|
c_AT_NMGS[len++] = (Nbiot_Send_Data.len % 10) + 0x30;
|
|||
|
c_AT_NMGS[len++] = ',';
|
|||
|
c_AT_NMGS[len++] = '\"';
|
|||
|
//<2F><><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)
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x30;
|
|||
|
}
|
|||
|
|
|||
|
if ((*(Nbiot_Send_Data.buf + i) & 0x0F) >= 0x0A)
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x30;
|
|||
|
}
|
|||
|
}
|
|||
|
c_AT_NMGS[len++] = '\"';
|
|||
|
c_AT_NMGS[len++] = '\r';
|
|||
|
NbiotUartSend((u8*) c_AT_NMGS, len, cst_AT_No_AT_NMGS);
|
|||
|
set_timer_1s(4);
|
|||
|
s_udp_send_state = S_SEND_DATA_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_SEND_DATA_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_SUCCESS;
|
|||
|
s_udp_send_state = S_SEND_START;
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1s()))
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= 1)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_udp_send_state = S_SEND_START;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
set_timer_1s(4);
|
|||
|
s_udp_send_state = S_SEND_DATA;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_udp_send_state = S_SEND_START;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
void UdpSendDataMachine(void)
|
|||
|
{
|
|||
|
UdpSendDataMachine_BC25();
|
|||
|
}
|
|||
|
/*
|
|||
|
void UdpReadDataMachine_BC25(void)
|
|||
|
{
|
|||
|
static u8 s_error_count; //ATָ<54><D6B8><EFBFBD>ۼƷ<DBBC><C6B7><EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
|
|||
|
static u8 s_read_upd_data_state = S_START;
|
|||
|
static const char* c_AT_QIRD1 = "AT+QIRD=0,512\r";
|
|||
|
static const char* c_AT_QIRD2 = "AT+QIRD=1,512\r";
|
|||
|
switch (s_read_upd_data_state)
|
|||
|
{
|
|||
|
case S_START:
|
|||
|
{
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME*2);
|
|||
|
s_error_count = 0;
|
|||
|
s_read_upd_data_state = S_AT_QIRD;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_QIRD:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
if(GetRcvDataType() == NB_RCV_UDP1_DATA)
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_QIRD1, strlen((const char*) c_AT_QIRD1), cst_AT_No_AT_UPD_READ);
|
|||
|
}
|
|||
|
else if(GetRcvDataType() == NB_RCV_UDP2_DATA)
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_QIRD2, strlen((const char*) c_AT_QIRD2), cst_AT_No_AT_UPD_READ);
|
|||
|
}
|
|||
|
set_timer_1ms(5*AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
s_read_upd_data_state = S_AT_QIRD_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_QIRD_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
*Nbiot_Send_Data.state = QIRD_SUCCESS;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_read_upd_data_state = S_START;
|
|||
|
}
|
|||
|
else if (!check_timer_1ms())
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
s_error_count++;
|
|||
|
if (s_error_count >= 3)
|
|||
|
{
|
|||
|
s_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = QIRD_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
s_read_upd_data_state = S_START;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME*5);
|
|||
|
s_read_upd_data_state = S_AT_QIRD;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_read_upd_data_state = S_START;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
void UdpReadDataMachine(void)
|
|||
|
{
|
|||
|
UdpReadDataMachine_BC25();
|
|||
|
}*/
|
|||
|
//
|
|||
|
//OnenetConnectMachine
|
|||
|
u8 s_onenet_connect_state=0;
|
|||
|
void OneNetStartConnect(void)
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_CONNECT_START;
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name static void CoapConnectMachine()
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Coap״̬<EFBFBD><EFBFBD>
|
|||
|
***************************************************************************/
|
|||
|
void OnenetConnectMachine(void)
|
|||
|
{
|
|||
|
static u8 s_at_error_count = 0;
|
|||
|
unsigned char *nbiot_ip;
|
|||
|
u16 nbiot_port;
|
|||
|
static char c_AT_MIPLCONFIG[40]="AT+MIPLCONFIG=0,183.230.040.040,05683\r";
|
|||
|
static const char* c_AT_MIPLCONFIG_CK="AT+MIPLCONFIG?\r";//+MIPLCONFIG: 0,183.230.40.40,5683 +MIPLCONFIG: 2,2 +MIPLCONFIG: 3,1 +MIPLCONFIG: 4,0,1
|
|||
|
static const char* c_AT_MIPLCREATE="AT+MIPLCREATE\r";
|
|||
|
static const char* c_AT_MIPLADDOBJ = "AT+MIPLADDOBJ=0,3200,1,\"1\",4,2\r";
|
|||
|
static const char* c_AT_MIPLOPEN ="AT+MIPLOPEN=0,600,60\r";
|
|||
|
static const char* c_AT_MIPLOPENPSM ="AT+MIPLOPEN=0,172800,60\r";
|
|||
|
static char c_AT_MIPLDISCOVERRSP[30];// AT+MIPLDISCOVERRSP=0,48839,1,4,"5750"
|
|||
|
|
|||
|
switch (s_onenet_connect_state)
|
|||
|
{
|
|||
|
case S_ONENET_CONNECT_IDLE:
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
case S_ONENET_CONNECT_START: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ
|
|||
|
{
|
|||
|
s_at_error_count=0;
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCONFIG;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLCONFIG:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
u16 len = 16; //<2F><><EFBFBD><EFBFBD>ATָ<54><D6B8><EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳ<EFBFBD><CDB3>ȵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
nbiot_port = Sys_data_object.P1.server_port.datas;
|
|||
|
nbiot_ip = Sys_data_object.P1.server_ip;
|
|||
|
|
|||
|
//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)
|
|||
|
{
|
|||
|
c_AT_MIPLCONFIG[len++] = nbiot_ip[i] + 0x30;
|
|||
|
}
|
|||
|
else if (nbiot_ip[i] < 100)
|
|||
|
{
|
|||
|
c_AT_MIPLCONFIG[len++] = (nbiot_ip[i] / 10) + 0x30;
|
|||
|
c_AT_MIPLCONFIG[len++] = (nbiot_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
c_AT_MIPLCONFIG[len++] = (nbiot_ip[i] / 100) + 0x30;
|
|||
|
c_AT_MIPLCONFIG[len++] = (nbiot_ip[i] / 10) % 10 + 0x30;
|
|||
|
c_AT_MIPLCONFIG[len++] = (nbiot_ip[i] % 10) + 0x30;
|
|||
|
}
|
|||
|
c_AT_MIPLCONFIG[len++] = '.';
|
|||
|
}
|
|||
|
len--; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
|
|||
|
c_AT_MIPLCONFIG[len++] = ',';
|
|||
|
//c_AT_MIPLCONFIG[len++] = ((nbiot_port) / 10000) + 0x30;
|
|||
|
c_AT_MIPLCONFIG[len++] = (((nbiot_port) % 10000) / 1000) + 0x30;
|
|||
|
c_AT_MIPLCONFIG[len++] = (((nbiot_port) % 1000) / 100) + 0x30;
|
|||
|
c_AT_MIPLCONFIG[len++] = (((nbiot_port) % 100) / 10) + 0x30;
|
|||
|
c_AT_MIPLCONFIG[len++] = ((nbiot_port) % 10) + 0x30;
|
|||
|
c_AT_MIPLCONFIG[len++] = '\r';
|
|||
|
NbiotUartSend((u8*)c_AT_MIPLCONFIG, len, cst_AT_No_AT_MIPLCONFIG);
|
|||
|
set_timer_1s(5);
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCONFIG_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLCONFIG_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCONFIG_CK;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if (!check_timer_1s() || NbiotCheckAtAck() == UART_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= NUM_AT_MIPLCONF_ERROR)//
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCONFIG_CK;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCONFIG;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLCONFIG_CK:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*)c_AT_MIPLCONFIG_CK, strlen(c_AT_MIPLCONFIG_CK), cst_AT_No_AT_MIPLCONFIG_CK);
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCONFIG_CK_R;
|
|||
|
set_timer_1s(2);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLCONFIG_CK_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCREATE;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if (!check_timer_1s())
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= NUM_AT_MIPLCONF_ERROR)//
|
|||
|
{
|
|||
|
//һ<>㲻<EFBFBD>ᷢ<EFBFBD><E1B7A2>,<2C>϶<EFBFBD><CFB6>ܲ鵽<DCB2><E9B5BD><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
|
|||
|
s_at_error_count = 0;
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCREATE;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCONFIG_CK;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLCREATE:
|
|||
|
{
|
|||
|
if(!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_MIPLCREATE, strlen(c_AT_MIPLCREATE), cst_AT_No_AT_MIPLCREATE);
|
|||
|
set_timer_1s(2);
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCREATE_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLCREATE_R:
|
|||
|
{
|
|||
|
if(NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLADDOBJ;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if(!check_timer_1s())
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= NUM_AT_MIPLCREATE_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLADDOBJ;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLCREATE;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLADDOBJ:
|
|||
|
{
|
|||
|
if(!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_MIPLADDOBJ, strlen(c_AT_MIPLADDOBJ), cst_AT_No_AT_MIPLADDOBJ);
|
|||
|
set_timer_1s(2);
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLADDOBJ_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLADDOBJ_R:
|
|||
|
{
|
|||
|
if(NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLOPEN;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if((!check_timer_1s()))
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= NUM_AT_MIPLADDOBJ_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLOPEN;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLADDOBJ;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLOPEN:
|
|||
|
{
|
|||
|
if(!check_timer_1ms())
|
|||
|
{
|
|||
|
if((Sys_data_object.P1.func_cfg_bytes[12]&0x80)&&(Sys_data_object.P1.func_cfg_bytes[12]&0x03)) //PSMģʽ<C4A3>ϱ<EFBFBD><CFB1>ж<EFBFBD>
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_MIPLOPEN, strlen(c_AT_MIPLOPENPSM), cst_AT_No_AT_MIPLOPEN);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_MIPLOPEN, strlen(c_AT_MIPLOPEN), cst_AT_No_AT_MIPLOPEN);
|
|||
|
}
|
|||
|
set_timer_1s(10);
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLOPEN_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLOPEN_R:
|
|||
|
{
|
|||
|
if(NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
NbiotClearAtAck();
|
|||
|
NbiotSetRevMipldiscover();
|
|||
|
set_timer_1s(20);
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLDISCOVER;
|
|||
|
}
|
|||
|
else if((!check_timer_1s()))
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= NUM_AT_MIPLOPEN_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1s(10);
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLDISCOVER;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLOPEN;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_ONENET_MIPLDISCOVER: //static char c_AT_MIPLDISCOVERRSP[30];// AT+MIPLDISCOVERRSP=0,48839,1,4,"5750"
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
u8 len;
|
|||
|
char discover_num[10];
|
|||
|
memset(discover_num,0,sizeof(discover_num));
|
|||
|
memset(c_AT_MIPLDISCOVERRSP,0,sizeof(c_AT_MIPLDISCOVERRSP));
|
|||
|
strcpy(c_AT_MIPLDISCOVERRSP,"AT+MIPLDISCOVERRSP=0,");
|
|||
|
|
|||
|
NbiotGetDiscover_num(discover_num);
|
|||
|
strcat(c_AT_MIPLDISCOVERRSP,discover_num);
|
|||
|
strcat(c_AT_MIPLDISCOVERRSP,",1,4,\"5750\"\r");
|
|||
|
|
|||
|
len = strlen(c_AT_MIPLDISCOVERRSP);
|
|||
|
NbiotUartSend((u8*)c_AT_MIPLDISCOVERRSP, len, cst_AT_No_AT);
|
|||
|
set_timer_1s(2);
|
|||
|
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLDISCOVER_R;
|
|||
|
}
|
|||
|
else if(!check_timer_1s())
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL; //<2F><><EFBFBD><EFBFBD>Ϊֹ<CEAA><D6B9><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
s_onenet_connect_state = S_ONENET_CONNECT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_MIPLDISCOVER_R://Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>--<2D>ȴ<EFBFBD><C8B4><EFBFBD>Ӧ
|
|||
|
{
|
|||
|
if(NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_onenet_connect_state = S_ONENET_Wait;
|
|||
|
}
|
|||
|
else if((!check_timer_1s()))
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= NUM_AT_MIPLDISCOVERRSP_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_onenet_connect_state = S_ONENET_Wait;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
NbiotClearAtAck();
|
|||
|
NbiotSetRevMipldiscover();
|
|||
|
s_onenet_connect_state = S_ONENET_MIPLDISCOVER;
|
|||
|
set_timer_1s(5);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_ONENET_Wait:
|
|||
|
{
|
|||
|
if((!check_timer_1ms()))
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ONLINE;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F><><EFBFBD><EFBFBD>Ϊֹ<CEAA><D6B9><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
s_onenet_connect_state = S_ONENET_CONNECT_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_onenet_connect_state = S_ONENET_CONNECT_IDLE; //״̬<D7B4><CCAC><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>ʼ״̬
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#if SEND_ACKID_ENABLE
|
|||
|
u16 Send_AckID=0;
|
|||
|
#endif
|
|||
|
|
|||
|
//Onnet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
#define S_ONENET_SEND_START 0
|
|||
|
#define S_ONENET_SEND_DATA 1
|
|||
|
#define S_ONENET_SEND_DATA_R 2
|
|||
|
|
|||
|
u8 s_onenet_send_state = S_ONENET_SEND_START;
|
|||
|
void StartOnenetSendData(void)
|
|||
|
{
|
|||
|
s_onenet_send_state = S_ONENET_SEND_START;
|
|||
|
}
|
|||
|
u8 Send_AckID=0;
|
|||
|
void OneNetSendDataMachine(void)
|
|||
|
{
|
|||
|
// static u8 s_at_error_count=0; //ATָ<54><D6B8><EFBFBD>ۼƷ<DBBC><C6B7><EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
|
|||
|
static const char temp_AT_MIPLDISCOVERRSP[] = "AT+MIPLNOTIFY=0,0,3200,0,5750,1,";
|
|||
|
//static char c_AT_MIPLNOTIFY[50+SEND_DATA_LENGTH];//<2F>ڴ治<DAB4>㣬ʹ<E3A3AC>ù<EFBFBD><C3B9>÷<EFBFBD><C3B7>ͻ<EFBFBD><CDBB><EFBFBD> c_AT_NMGS
|
|||
|
|
|||
|
switch (s_onenet_send_state)
|
|||
|
{
|
|||
|
case S_ONENET_SEND_START:
|
|||
|
{
|
|||
|
s_onenet_send_state = S_ONENET_SEND_DATA; //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͣ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ᱨERROR<4F><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ1S<31><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ERROR
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
} break;
|
|||
|
|
|||
|
case S_ONENET_SEND_DATA://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
if(TASK_IDLE == UartIfIdle(NB_UART_COM))
|
|||
|
{
|
|||
|
//u16 len = 31; //<2F><><EFBFBD><EFBFBD>ATָ<54><D6B8><EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳ<EFBFBD><CDB3>ȵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
u16 len,i,len_Gprs_Send_Data;
|
|||
|
char len_buffer[6]={0};
|
|||
|
|
|||
|
c_AT_NMGS[0]=0;//ǿ<>ƹ<EFBFBD><C6B9><EFBFBD>
|
|||
|
strcat(c_AT_NMGS,temp_AT_MIPLDISCOVERRSP);
|
|||
|
len_Gprs_Send_Data=2*Nbiot_Send_Data.len;
|
|||
|
sprintf(len_buffer,"%u",len_Gprs_Send_Data);
|
|||
|
strcat(c_AT_NMGS,len_buffer);
|
|||
|
strcat(c_AT_NMGS,",\"");
|
|||
|
len=strlen(c_AT_NMGS);
|
|||
|
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)
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x37;//<2F>ַ<EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) >> 4) + 0x30;//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
}
|
|||
|
|
|||
|
if ((*(Nbiot_Send_Data.buf + i) & 0x0F) >= 0x0A)
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x37;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
c_AT_NMGS[len++] = (*(Nbiot_Send_Data.buf + i) & 0x0F) + 0x30;
|
|||
|
}
|
|||
|
}
|
|||
|
c_AT_NMGS[len++] = 0;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
strcat(c_AT_NMGS,"\",0,0");
|
|||
|
if((Sys_data_object.P1.func_cfg_bytes[10] == 0x55)||(Sys_data_object.P3.ProductUploadFlag == 0x55))//ACK<43><4B><EFBFBD>ϱ<EFBFBD><CFB1>ɹ<EFBFBD>
|
|||
|
{
|
|||
|
char strtemp[8];
|
|||
|
if(++Send_AckID==0)
|
|||
|
{
|
|||
|
Send_AckID=1;
|
|||
|
}
|
|||
|
sprintf(strtemp,",%u",Send_AckID);
|
|||
|
strcat(c_AT_NMGS,strtemp);
|
|||
|
strcat(c_AT_NMGS,"\r");
|
|||
|
NbiotClearMsg();
|
|||
|
NbiotUartSend((u8*) c_AT_NMGS,strlen(c_AT_NMGS), cst_AT_No_AT_MIPLNOTIFY_ACKID);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
strcat(c_AT_NMGS,"\r");
|
|||
|
NbiotClearMsg();
|
|||
|
NbiotUartSend((u8*) c_AT_NMGS,strlen(c_AT_NMGS), cst_AT_No_AT_MIPLNOTIFY);
|
|||
|
}
|
|||
|
|
|||
|
s_onenet_send_state = S_ONENET_SEND_DATA_R;
|
|||
|
set_timer_1ms(5*AT_COMMAND_RECEIVE_WAIT_TIME); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ϳ<EFBFBD>5<EFBFBD><35>ʱ<EFBFBD><CAB1><EFBFBD>ȴ<EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
} break;
|
|||
|
|
|||
|
case S_ONENET_SEND_DATA_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
*Nbiot_Send_Data.state = NBIOT_SUCCESS;
|
|||
|
s_onenet_send_state = S_ONENET_SEND_START;
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1ms()))//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = NBIOT_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
s_onenet_send_state = S_ONENET_SEND_START;
|
|||
|
}
|
|||
|
} break;
|
|||
|
default: 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>
|
|||
|
{
|
|||
|
//<2F>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
static u8 s_at_error_count = 0;
|
|||
|
static const char* c_AT_MIPLCLOSE = "AT+MIPLCLOSE=0\r"; //<2F><>¼ע<C2BC><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
static const char* c_AT_MIPLDELOBJ = "AT+MIPLDELOBJ=0,3200\r"; //ģ<><C4A3><EFBFBD>ඩ<EFBFBD><E0B6A9><EFBFBD><EFBFBD>Դ<EFBFBD>б<EFBFBD><D0B1>ͷ<EFBFBD>
|
|||
|
static const char* c_AT_MIPLDEL = "AT+MIPLDELETE=0\r"; //ģ<><C4A3><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ʵ<EFBFBD><CAB5>ɾ<EFBFBD><C9BE>
|
|||
|
static const char* c_AT_CFUN0 = "AT+CFUN=0\r"; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ģʽ
|
|||
|
static const char* c_AT_NCSEARFCN = "AT+QCSEARFCN=0\r"; //<2F><><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><D1B1><EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
static const char* c_AT_CFUN1 = "AT+CFUN=1\r"; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
static const char* c_AT_NETCLOSE = "AT+NCDPCLOSE\r";
|
|||
|
static const u8 c_AT_QPOWD[] = "AT+QPOWD=1\r";
|
|||
|
static const char* c_AT_QICFG0 = "AT+QICFG=\"showlength\",0\r"; //<2F><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
|||
|
switch (s_power_off_state)
|
|||
|
{
|
|||
|
case S_POWER_OFF_START:
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
if (Nbiot_Para.net_state == NB_ON_LINE)
|
|||
|
{
|
|||
|
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;
|
|||
|
if(Nbiot_Para.Telecom == SIM_CARD_MOBILE)
|
|||
|
{
|
|||
|
s_power_off_state = S_UDP_QICFG0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_AT_NETCLOSE;
|
|||
|
}
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_AT_CFUN0;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case S_AT_MIPLCLOSE://<2F><>¼ע<C2BC><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //ע<><D7A2>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ϊ5s,<2C><><EFBFBD><EFBFBD>2<EFBFBD><32>
|
|||
|
{
|
|||
|
if(!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_MIPLCLOSE, strlen(c_AT_MIPLCLOSE), cst_AT_No_AT_MIPLCLOSE);
|
|||
|
s_power_off_state = S_AT_MIPLCLOSE_R;
|
|||
|
set_timer_1ms(5*AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
} break;
|
|||
|
|
|||
|
case S_AT_MIPLCLOSE_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
s_at_error_count = 0;
|
|||
|
s_power_off_state = S_AT_MIPLDELOBJ;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1ms()))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
if (++s_at_error_count >= NUM_AT_MIPLCLOSE_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = cst_AT_No_AT_MIPLCLOSE;
|
|||
|
s_power_off_state = S_AT_MIPLDELOBJ;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_AT_MIPLCLOSE;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
} break;
|
|||
|
|
|||
|
case S_AT_MIPLDELOBJ://ģ<><C4A3><EFBFBD>ඩ<EFBFBD><E0B6A9><EFBFBD><EFBFBD>Դ<EFBFBD>б<EFBFBD><D0B1>ͷ<EFBFBD>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_MIPLDELOBJ, strlen(c_AT_MIPLDELOBJ), cst_AT_No_AT_MIPLDELOBJ);
|
|||
|
s_power_off_state = S_AT_MIPLDELOBJ_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
} break;
|
|||
|
|
|||
|
case S_AT_MIPLDELOBJ_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
s_at_error_count = 0;
|
|||
|
s_power_off_state = S_AT_MIPLDEL;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1ms()))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
if (++s_at_error_count >= NUM_AT_MIPLDEL_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = cst_AT_No_AT_MIPLDELOBJ;
|
|||
|
s_power_off_state = S_AT_MIPLDEL;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_AT_MIPLDELOBJ;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
} break;
|
|||
|
|
|||
|
case S_AT_MIPLDEL://ģ<><C4A3><EFBFBD>ඩ<EFBFBD><E0B6A9><EFBFBD><EFBFBD>Դ<EFBFBD>б<EFBFBD><D0B1>ͷ<EFBFBD>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_MIPLDEL, strlen(c_AT_MIPLDEL), cst_AT_No_AT_MIPLDEL);
|
|||
|
s_power_off_state = S_AT_MIPLDEL_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
} break;
|
|||
|
case S_AT_MIPLDEL_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
s_at_error_count = 0;
|
|||
|
s_power_off_state = S_AT_NETCLOSE;
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1ms()))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
if (++s_at_error_count >= NUM_AT_MIPLDEL_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = cst_AT_No_AT_MIPLDEL;
|
|||
|
s_power_off_state = S_AT_NETCLOSE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_AT_MIPLDEL;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
} break;
|
|||
|
case S_AT_NETCLOSE:
|
|||
|
{
|
|||
|
if(Nbiot_Para.Telecom == SIM_CARD_MOBILE)
|
|||
|
{
|
|||
|
s_power_off_state = S_UDP_QICFG0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_NETCLOSE, strlen(c_AT_NETCLOSE), cst_AT_No_AT_NETCLOSE);
|
|||
|
set_timer_1s(3);
|
|||
|
s_power_off_state = S_AT_NETCLOSE_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_NETCLOSE_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1s(1);
|
|||
|
s_power_off_state = S_UDP_QICFG0;
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1s()))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= 2) //<2F><><EFBFBD>β<EFBFBD><CEB2>ɹ<EFBFBD>ֱ<EFBFBD>ӹػ<D3B9>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_power_off_state = S_UDP_QICFG0; //<2F>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_AT_NETCLOSE;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_UDP_QICFG0://<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD><CABE>ѡ<EFBFBD><D1A1><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_QICFG0, strlen(c_AT_QICFG0), cst_AT_No_AT_QICFG);//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD><CABE>ѡ<EFBFBD><D1A1><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD>
|
|||
|
s_power_off_state = S_UDP_QICFG0_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_UDP_QICFG0_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//Ӧ<><D3A6><EFBFBD><EFBFBD>ȷ-<2D><>һ<EFBFBD><D2BB>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_power_off_state = S_AT_QPOWD;
|
|||
|
set_timer_1s(1);
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
if (++s_at_error_count >= 2)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_power_off_state = S_AT_QPOWD;
|
|||
|
set_timer_1s(1);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_UDP_QICFG0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_QPOWD:
|
|||
|
{
|
|||
|
if (!check_timer_1s())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_QPOWD, strlen((const char*) c_AT_QPOWD), cst_AT_No_AT_QPOWD);
|
|||
|
set_timer_1s(3);
|
|||
|
s_power_off_state = S_AT_QPOWD_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_QPOWD_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1s(3);
|
|||
|
s_power_off_state = S_POWER_OFF;
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1s()))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >= 2) //<2F><><EFBFBD>β<EFBFBD><CEB2>ɹ<EFBFBD>ֱ<EFBFBD>ӹػ<D3B9>
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_power_off_state = S_POWER_OFF; //ֱ<><D6B1>ȥ<EFBFBD>ػ<EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_AT_QPOWD;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_CFUN0://<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ģʽ
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CFUN0, strlen((const char*) c_AT_CFUN0), cst_AT_No_AT_CFUN);
|
|||
|
s_power_off_state = S_AT_CFUN0_R;
|
|||
|
set_timer_1ms(2 * AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_CFUN0_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms( AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_power_off_state = S_AT_NCSEARFCN;
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1ms()))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
if (++s_at_error_count >= NUM_AT_CFUN_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_power_off_state = S_AT_NCSEARFCN;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_AT_CFUN0;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_NCSEARFCN://<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_NCSEARFCN, strlen((const char*) c_AT_NCSEARFCN), cst_AT_No_AT_NCSEARFCN);
|
|||
|
s_power_off_state = S_AT_NCSEARFCN_R;
|
|||
|
set_timer_1ms(2 * AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_NCSEARFCN_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms( AT_COMMAND_SEND_INTERVAL_TIME*6);//<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ʱ3<CAB1><33>
|
|||
|
s_power_off_state = S_AT_CFUN1;
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1ms()))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
if (++s_at_error_count >= NUM_AT_NCSEARFCN_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_power_off_state = S_AT_CFUN1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_AT_NCSEARFCN;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_CFUN1://<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CFUN1, strlen((const char*) c_AT_CFUN1), cst_AT_No_AT_CFUN);
|
|||
|
s_power_off_state = S_AT_CFUN1_R;
|
|||
|
set_timer_1ms(2 * AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_CFUN1_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1s(1);
|
|||
|
s_power_off_state = S_UDP_QICFG0;
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1ms()))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
if (++s_at_error_count >= NUM_AT_CFUN_ERROR)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1s(1);
|
|||
|
s_power_off_state = S_UDP_QICFG0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_power_off_state = S_AT_CFUN1;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_POWER_OFF:
|
|||
|
{
|
|||
|
if (!check_timer_1s())
|
|||
|
{
|
|||
|
NB_Power_Disable(); //<2F>жϵ<D0B6>Դ
|
|||
|
set_timer_1s(1);
|
|||
|
s_power_off_state = S_POWER_OFF_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_POWER_OFF_WAIT:
|
|||
|
{
|
|||
|
if (!check_timer_1s())
|
|||
|
{
|
|||
|
NbiotPreSleep();
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_power_off_state = S_START;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_power_off_state = S_START;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void NbiotReadECLSNRMachine(void)
|
|||
|
{
|
|||
|
static u8 s_error_count; //ATָ<54><D6B8><EFBFBD>ۼƷ<DBBC><C6B7><EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
|
|||
|
static u8 s_ecl_state = S_START;
|
|||
|
switch (s_ecl_state)
|
|||
|
{
|
|||
|
case S_START:
|
|||
|
{
|
|||
|
set_timer_1ms(1000);
|
|||
|
s_error_count = 0;
|
|||
|
s_ecl_state = S_AT_ECL;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_ECL:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_NUESTATS, strlen((const char*) c_AT_NUESTATS), cst_AT_No_AT_NUESTATS);
|
|||
|
set_timer_1ms(500);
|
|||
|
s_ecl_state = S_AT_ECL_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case S_AT_ECL_R:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6>
|
|||
|
*Nbiot_Send_Data.state = ECL_SNR_SUCCESS;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_ecl_state = S_START;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
s_error_count++;
|
|||
|
if (s_error_count >= 1)
|
|||
|
{
|
|||
|
s_error_count = 0;
|
|||
|
*Nbiot_Send_Data.state = ECL_SNR_ERROR;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
s_ecl_state = S_START;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_ecl_state = S_AT_ECL;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
{
|
|||
|
s_ecl_state = S_START;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*****************************ONENETӦ<54><D3A6><EFBFBD>·<EFBFBD>ָ<EFBFBD><D6B8>*********************/
|
|||
|
static u8 s_onenet_ack_rev_state = S_ONENET_ACKREV_START;
|
|||
|
|
|||
|
static void StartOnenetAckRev(void)
|
|||
|
{
|
|||
|
s_onenet_ack_rev_state = S_ONENET_ACKREV_START;
|
|||
|
}
|
|||
|
/*******************************************************
|
|||
|
NbiotRevAckMachine
|
|||
|
<EFBFBD>Խ<EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>
|
|||
|
*******************************************************/
|
|||
|
void NbiotRevAckMachine(void)
|
|||
|
{
|
|||
|
static u8 s_error_count; //ATָ<54><D6B8><EFBFBD>ۼƷ<DBBC><C6B7><EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
|
|||
|
static char c_AT_MIPLWRITE_EXECUTE[30];// = "AT+MIPLWRITERSP=0,12345,2\r";
|
|||
|
//static char c_AT_MIPLEXECUTE[30];// = "AT+MIPLEXECUTERSP=0,12345,2\r";
|
|||
|
switch (s_onenet_ack_rev_state)
|
|||
|
{
|
|||
|
case S_ONENET_ACKREV_IDLE:
|
|||
|
{
|
|||
|
} break;
|
|||
|
case S_ONENET_ACKREV_START:
|
|||
|
{
|
|||
|
set_timer_1ms(1000);
|
|||
|
s_onenet_ack_rev_state = S_ONENET_REPLY_REV_ACKID;
|
|||
|
s_error_count = 0;
|
|||
|
} break;
|
|||
|
|
|||
|
case S_ONENET_REPLY_REV_ACKID://Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
u8 len;
|
|||
|
char ack_num[10];
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
memset(ack_num,0,sizeof(ack_num));
|
|||
|
memset(c_AT_MIPLWRITE_EXECUTE,0,sizeof(c_AT_MIPLWRITE_EXECUTE));
|
|||
|
if(ORDER_EXECUTE == NbiotGetOnenetTypeDownOrder())
|
|||
|
{
|
|||
|
strcpy(c_AT_MIPLWRITE_EXECUTE,"AT+MIPLEXECUTERSP=0,");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
strcpy(c_AT_MIPLWRITE_EXECUTE,"AT+MIPLWRITERSP=0,");
|
|||
|
}
|
|||
|
NbiotGetWriteAck_num(ack_num);
|
|||
|
strcat(c_AT_MIPLWRITE_EXECUTE,ack_num);
|
|||
|
strcat(c_AT_MIPLWRITE_EXECUTE,",2\r");
|
|||
|
|
|||
|
len = strlen(c_AT_MIPLWRITE_EXECUTE);
|
|||
|
NbiotUartSend((u8*)c_AT_MIPLWRITE_EXECUTE, len, cst_AT_No_AT_MIPLWRITE);
|
|||
|
set_timer_1ms(5*AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
|
|||
|
s_onenet_ack_rev_state = S_ONENET_REPLY_REV_ACKID_R;
|
|||
|
}
|
|||
|
} break;
|
|||
|
|
|||
|
case S_ONENET_REPLY_REV_ACKID_R://Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>--<2D>ȴ<EFBFBD><C8B4><EFBFBD>Ӧ
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_onenet_ack_rev_state = S_ONENET_ACKREV_IDLE;
|
|||
|
SetUartCommRevFlag(); //Ӧ<><D3A6>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
|
|||
|
}
|
|||
|
else if (NbiotCheckAtAck() == UART_ERROR || (!check_timer_1ms()))//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ʱʱ<CAB1>䵽
|
|||
|
{
|
|||
|
if (++s_error_count >= NUM_AT_MIPLWRITE_ERROR)
|
|||
|
{
|
|||
|
*Nbiot_Send_Data.state = cst_AT_No_AT_MIPLWRITE;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
s_onenet_ack_rev_state = S_ONENET_ACKREV_IDLE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_onenet_ack_rev_state = S_ONENET_REPLY_REV_ACKID;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
} break;
|
|||
|
default: break;
|
|||
|
}
|
|||
|
}
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void PsmWakupMachine(void)
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PSM
|
|||
|
***************************************************************************/
|
|||
|
static void Psm_Wakup_Machine(void)
|
|||
|
{
|
|||
|
static const char *c_AT_QSCLK = "AT+QSCLK=0\r"; //<2F><>ʱ<EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>NBͨ<42><CDA8>
|
|||
|
static const char *c_AT_QPING = "AT+QPING=1,\"8.8.8.8\",1,1\r";//+CSCON: 1 <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><D5BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>ź<EFBFBD>ֵ
|
|||
|
static const char* c_AT_NCDP_CK = "AT+NMSTATUS?\r"; //<2F><>ѯ<EFBFBD>ź<EFBFBD>ֵ
|
|||
|
|
|||
|
static u8 s_at_error_count = 0;
|
|||
|
switch(s_psm_wakeup_state)
|
|||
|
{
|
|||
|
//Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><>ģ<EFBFBD>鴦<EFBFBD><E9B4A6>PSMģʽʱ,<2C><><EFBFBD><EFBFBD>PSM_EINT(<28>½<EFBFBD><C2BD><EFBFBD>>100ms)<29>ɽ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD> PSM <20><><EFBFBD><EFBFBD>
|
|||
|
case PSM_WKUPSTA_IDLE:
|
|||
|
{
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_WKUPSTA_START:
|
|||
|
{
|
|||
|
UartInit(NB_UART_COM, BAUD9600, DATA_BIT_8, STOPBIT_1, UART_NONE_PARITY,UART_LPUART_Disable);
|
|||
|
NB_PSM_WAKE_HIG();
|
|||
|
set_timer_1ms(500);
|
|||
|
s_psm_wakeup_state= PSM_WKUPSTA_EINT_LOW;
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_WKUPSTA_EINT_LOW:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NB_PSM_WAKE_LOW();
|
|||
|
set_timer_1ms(500);
|
|||
|
s_psm_wakeup_state= PSM_WKUPSTA_EINT_HIGH;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_WKUPSTA_EINT_HIGH:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NB_PSM_WAKE_HIG();
|
|||
|
NbiotUartSend(0, 0, cst_AT_No_AT_NCDP);//<2F><>ѯ+QLWEVTIND״̬
|
|||
|
set_timer_1ms(5000);//5s,<2C><>ʱ<EFBFBD>ȴ<EFBFBD>5s,<2C>źŲ<C5BA><C5B2><EFBFBD>ʱ<EFBFBD><CAB1>+QLWEVTIND: 6<><36>ӦҲ<D3A6>ܿ<EFBFBD>,<2C><>PING<4E><47><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
s_psm_wakeup_state= PSM_WKUPSTA_QLWEVTIND6;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_WKUPSTA_QLWEVTIND6://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD><EFBFBD><DFBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӻָ<D3BB><D6B8>ɹ<EFBFBD> +QLWEVTIND: 6,
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_QSCLK0;
|
|||
|
}
|
|||
|
else if (!check_timer_1ms())
|
|||
|
{
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_WAKE_FAIL;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EBB9A4>ģʽ
|
|||
|
case PSM_WKUPSTA_QSCLK0:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_QSCLK, strlen(c_AT_QSCLK), cst_AT_QSCLK_CLOSE);
|
|||
|
s_at_error_count = 0;
|
|||
|
set_timer_1ms(2000);
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_QSCLK0_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_WKUPSTA_QSCLK0_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_NPING;//PSM_WKUPSTA_NCDP_CK;
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
if (++s_at_error_count >= 3)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_WAKE_FAIL;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_QSCLK0;
|
|||
|
set_timer_1ms(AT_COMMAND_SEND_INTERVAL_TIME);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>
|
|||
|
case PSM_WKUPSTA_NCDP_CK:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_NCDP_CK, strlen((const char*) c_AT_NCDP_CK), cst_AT_No_AT_NCDP_CK);
|
|||
|
set_timer_1s(3);
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_NCDP_CK_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_WKUPSTA_NCDP_CK_R://Ӧ<><D3A6><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ģ<EFBFBD>鱣<EFBFBD><E9B1A3><EFBFBD><EFBFBD>״̬,<2C><><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.+NMSTATUS: REGISTERED_AND_OBSERVED
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_NPING;
|
|||
|
}
|
|||
|
else if((!check_timer_1s()))
|
|||
|
{
|
|||
|
s_at_error_count++;
|
|||
|
if (s_at_error_count >=3)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_WAKE_FAIL;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_NCDP_CK;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
//PING
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+CSCON:1---<2D><>ģ<D7BC><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><D5BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>AT+QENG=0<EFBFBD><EFBFBD>ѯ---<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>״̬<EFBFBD>²<EFBFBD>ѯ<EFBFBD>ź<EFBFBD>*/
|
|||
|
case PSM_WKUPSTA_NPING:
|
|||
|
{
|
|||
|
if (!check_timer_1ms())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_QPING, strlen((const char*) c_AT_QPING), cst_AT_No_CSCON1);
|
|||
|
set_timer_1s(5);
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_NPING_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_WKUPSTA_NPING_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_at_error_count = 0;
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_NUESTATS;
|
|||
|
}
|
|||
|
else if((!check_timer_1s()))
|
|||
|
{
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_NUESTATS;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ֵ
|
|||
|
case PSM_WKUPSTA_NUESTATS:
|
|||
|
{
|
|||
|
if (!check_timer_1s())
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_NUESTATS, strlen(c_AT_NUESTATS), cst_AT_No_AT_NUESTATS);
|
|||
|
set_timer_1s(2);
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_NUESTATS_R;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_WKUPSTA_NUESTATS_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)
|
|||
|
{
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_WAKE_SUCCESS;
|
|||
|
}
|
|||
|
else if((!check_timer_1s()))
|
|||
|
{
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_WAKE_SUCCESS;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_WKUPSTA_WAKE_SUCCESS:
|
|||
|
{
|
|||
|
psm_model_state = PSM_STATE_WAKE;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS; //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_WKUPSTA_WAKE_FAIL:
|
|||
|
{
|
|||
|
NbForcePowerOff();
|
|||
|
psm_model_state = PSM_STATE_OUT;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
s_psm_wakeup_state = PSM_WKUPSTA_IDLE;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
* @fun_name void Psm_Sleep_Machine(void)
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
***************************************************************************/
|
|||
|
static void Psm_Sleep_Machine(void)
|
|||
|
{
|
|||
|
static const char* c_AT_CPSMS1 = "AT+CPSMS=1\r"; //<2F><><EFBFBD><EFBFBD>PSMģʽ
|
|||
|
static const char c_AT_QSCLK1[] = "AT+QSCLK=1\r"; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>NBͨ<42><CDA8>
|
|||
|
switch(s_psm_sleep_state)
|
|||
|
{
|
|||
|
case PSM_SLPSTA_IDLE:
|
|||
|
{
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case PSM_SLPSTA_START://<2F><><EFBFBD>ùرջ<D8B1><D5BB><EFBFBD><EFBFBD><EFBFBD>PSMģʽ
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_CPSMS1, strlen(c_AT_CPSMS1), cst_AT_No_AT_CPSMS);//ʹ<><CAB9>PSM
|
|||
|
s_init_state = S_TCP_CPSMS_R;
|
|||
|
set_timer_1ms(AT_COMMAND_RECEIVE_WAIT_TIME);
|
|||
|
s_psm_sleep_state = PSM_SLPSTA_CPSMS1_R;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case PSM_SLPSTA_CPSMS1_R:
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//Ӧ<><D3A6><EFBFBD><EFBFBD>ȷ-<2D><>һ<EFBFBD><D2BB>
|
|||
|
{
|
|||
|
NbiotUartSend((u8*) c_AT_QSCLK1, strlen(c_AT_QSCLK1), cst_AT_QSCLK_OPEN);
|
|||
|
s_psm_sleep_state = PSM_SLPSTA_WAIT;
|
|||
|
set_timer_1s(30); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ30s<30><73>ʱ<EFBFBD>ȴ<EFBFBD>
|
|||
|
}
|
|||
|
else if ((!check_timer_1ms()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
NbForcePowerOff();
|
|||
|
psm_model_state = PSM_STATE_OUT;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
s_psm_sleep_state = PSM_SLPSTA_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_SLPSTA_WAIT://<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6> +QATSLEEP
|
|||
|
{
|
|||
|
if (NbiotCheckAtAck() == UART_OK)//Ӧ<><D3A6><EFBFBD><EFBFBD>ȷ-<2D><>һ<EFBFBD><D2BB>
|
|||
|
{
|
|||
|
psm_model_state = PSM_STATE_SLEEP;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_psm_sleep_state = PSM_SLPSTA_IDLE;
|
|||
|
}
|
|||
|
else if ((!check_timer_1s()) || (NbiotCheckAtAck() == UART_ERROR))
|
|||
|
{
|
|||
|
NbForcePowerOff();
|
|||
|
psm_model_state = PSM_STATE_OUT;
|
|||
|
g_s_nbiot_task_flag = TASK_FAIL;
|
|||
|
s_psm_sleep_state = PSM_SLPSTA_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_CHECK_START:
|
|||
|
{
|
|||
|
if(TASK_IDLE == AdcIfIdle())
|
|||
|
{
|
|||
|
AdcStartConvert(PSM_CHECK_CHANNEL, PSM_CHECK_NUM, PSM_CHECK_INTERVAL, &s_psm_adc_result, &s_psm_adc_done);
|
|||
|
s_psm_sleep_state =PSM_CHECK_WAIT;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSM_CHECK_WAIT:
|
|||
|
{
|
|||
|
if (TRUE == s_psm_adc_done)
|
|||
|
{
|
|||
|
if (ADC_OK == AdcGetStatus())
|
|||
|
{
|
|||
|
if(s_psm_adc_result>1500)//<2F><><EFBFBD><EFBFBD>1V<31><56><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
NbForcePowerOff();
|
|||
|
psm_model_state = PSM_STATE_OUT;
|
|||
|
}
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_psm_sleep_state = PSM_SLPSTA_IDLE;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
NbForcePowerOff();
|
|||
|
psm_model_state = PSM_STATE_OUT;
|
|||
|
g_s_nbiot_task_flag = TASK_SUCCESS;
|
|||
|
s_psm_sleep_state = PSM_SLPSTA_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 = NBIOT_POWER_OFF;
|
|||
|
s_power_off_state = S_POWER_OFF_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 = NBIOT_S_IDLE;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void set_clear_ncsearfcn (void)
|
|||
|
{
|
|||
|
flag_clear_ncsearfcn =1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void sys_get_three_code (void)
|
|||
|
{
|
|||
|
// NbiotGetIMEI(Sys_data_object.P1.NB_module_IMEI_0016);
|
|||
|
// NbiotGetIMSI(Sys_data_object.P1.NB_module_IMSI);
|
|||
|
// NbiotGetICCID(Sys_data_object.P1.SIMCard_ICCID_200A);
|
|||
|
}
|
|||
|
|
|||
|
UNION_4U8TOU32 net_state_data;
|
|||
|
u32 sys_get_net_state(void)
|
|||
|
{
|
|||
|
s16 s_temp_data=0;
|
|||
|
if(g_s_nbiot_main_state == NBIOT_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 == NBIOT_NET_OPEN)
|
|||
|
{
|
|||
|
net_state_data.data_buf[0] = 2;
|
|||
|
if(Nbiot_Para.Telecom == SIM_CARD_TELECOM)
|
|||
|
{
|
|||
|
net_state_data.data_buf[1] = s_coap_connect_state;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
net_state_data.data_buf[1] = s_onenet_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/10)|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_model_state;
|
|||
|
}
|
|||
|
u16 get_Send_AckID(void)
|
|||
|
{
|
|||
|
return Send_AckID;
|
|||
|
}
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
#endif
|