P5UWaterBuXiugang/hardinterface/BC25/nb_driver_bc25.c

3578 lines
105 KiB
C
Raw Normal View History

2024-06-03 15:49:39 +08:00
/************************************************************************************
* @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