P3UWaterGuangZhou/hardinterface/MN316/nb_uart_driver_mn316.c

3279 lines
70 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_uart_driver.c
* @Author :QDIES PLATFORM TEAM
* @Version :V1.0
* @Date :2017-03-01
* @Description :
************************************************************************************/
#include "sys_config.h"
#ifdef NB_MODULE_MN316
#ifdef __cplusplus
extern "C"
{
#endif
#include "nb_uart_driver_mn316.h"
#include "nb_driver_mn316.h"
#include <time.h>
#include "UWater_Rtcc_driver.h"
#include "UWater_DebugPrint.h"
/********************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>************************************/
UART_COMM Uart_Comm;
u8 g_s_rev_state; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
u8 g_s_rev_state_coap; //coap<61><70><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
u8 g_s_rev_state_onenet; //coap<61><70><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
u8 g_s_rev_state_com; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
u8 udp_check_rev_data_flag = FALSE;
//<2F>ź<EFBFBD>ǿ<EFBFBD>Ⱥ<EFBFBD>ICCID<49><44><EFBFBD><EFBFBD>
u8 g_csq_value = 0x32;
u8 g_band_val = 0;
u8 g_ecl_snr_value[11] = {0};
u8 g_date_time_num = 0;
u8 s_g_buf[10] = {0};
u8 s_g_temp1 = 0;
char buf_imei[16];//IMEI<45><49><EFBFBD><EFBFBD>Ϊ15 BIT<49><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>һ<EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>\0<><30>
char buf_imsi[16];//IMSI<53><49><EFBFBD><EFBFBD>Ϊ15 BIT<49><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>һ<EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>\0<><30>
char buf_iccid[21];//ICCIDΪ20λ <20><><EFBFBD>ֻ<EFBFBD><D6BB>ߴ<EFBFBD>д<EFBFBD>ַ<EFBFBD>
u8 s_g_apn_value[APN_SIZE] = {0};
u32 s_g_cell_id_value = 0;
struct tm tm_GMT_nb_uart_driver= {0,0,0,0,0,0,0,0,0}; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
u32 time_temp_nb_uart_driver;
static char g_tmp_byte[11] = {0};
int s_g_earfcn_value = 0;//
u32 s_g_earfcn_offset_value = 0;
int s_g_pci_value = 0;
char s_g_cell_id[CELL_ID_SIZE];
int s_g_rsrp_value = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>Ϊ<EFBFBD><CEAA>ֵ
int s_g_rsrq_value = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>Ϊ<EFBFBD><CEAA>ֵ
int s_g_rssi_value = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>Ϊ<EFBFBD><CEAA>ֵ
int s_g_snr_value = 0;
u16 s_g_band_value = 0;
char s_g_tac[10];
int s_g_ecl_value = 0;
s16 s_g_tx_pwr = 0;
u32 nb_uart_time_num;
u32 nb_uart_time_old_num;
volatile u8 data = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
u8 g_s_socket_rev_len=0;
u8 g_s_tcp_socket='0';
u8 g_s_udp_socket='1';
u8 g_s_rev_socket_len_state=0;
u8 udp_rev_data_len=0;
/*****************************<2A>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>***********************************/
static void AT_OK_AND_ERROR_MACHINE(u8 data);
static void AT_CGACT_HOW_MACHINE(u8 data);
static void AT_CEREG_MACHINE(u8 data);
static void AT_CIMI_MACHINE(u8 data);
static void AT_NBIOT_REV_MACHINE(u8 data);
static void AT_CSQ_MACHINE(u8 data);
static void AT_IMEI_MACHINE(u8 data);
static void AT_GET_CCLK_MACHINE(u8 data);
static void AT_ICCID_MACHINE(u8 data);
static void AT_CPIN_MACHINE(u8 data);
static void AT_MIPOPEN_MACHINE(u8 data);
static void AT_MIPSENDCOUNT_MACHINE(u8 data);
static void AT_MIPSEND_MACHINE(u8 data);
static void AT_MIPCLOSE_MACHINE(u8 data);
static void AT_VERCTRL_CK_MACHINE(u8 data);
static void AT_TUEINFO_MACHINE(u8 data);
static void AT_CCED_MACHINE(u8 data);
static void AT_CGATT_HOW_MACHINE(u8 data);
static void AT_NSONMI_MACHINE(u8 data);
static void AT_NBIOT_READ_MACHINE(u8 data);
static void AT_MCWOPEN_MACHINE(u8 data);
static void AT_MCWSEND_ACK_MACHINE(u8 data);
static void AT_NBIOT_REV_MACHINE_MN316_CTWing(u8 data);
static void AT_QIOPEN_MACHINE(u8 data);
static void AT_NUWSTATS_MACHINE(u8 data);
static void AT_VERCTRL_CK_MACHINE(u8 data);
static void AT_NV_CK_MACHINE(u8 data);
static void AT_NRB_CK_MACHINE(u8 data);
static void AT_MIPLCREATEEX(u8 data);
static void AT_MIPLOPEN_MACHINE(u8 data);
static void AT_WAIT_MIPLOBSERVE(u8 data);
static void AT_NMGS_ACKID_MACHINE(u8 data);
/***************************************************************************
* @fun_name static void UART_Receive_IT(NBIOT_UART_HandleTypeDef *huart)
* @brief <EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
***************************************************************************/
void NBUartReceiveIT(void)
{
data = LPUart_ReceiveData(M0P_LPUART1);
AT_NSONMI_MACHINE(data);
AT_NBIOT_REV_MACHINE(data);//tcp/udp <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һֱ<D2BB><D6B1>ѯ
//AT_NBIOT_REV_MACHINE_MN316_CTWing(data);
AT_NMGS_ACKID_MACHINE(data);//ACKӦ<4B><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
switch (Uart_Comm.send_style)
{
case cst_AT_No_AT:
case cst_AT_No_AT_CMEE:
case cst_AT_No_AT_CFUN:
case cst_AT_No_AT_CFUN0:
case cst_AT_No_AT_CFUN1:
case cst_AT_No_AT_MCWCREATE:
case cst_AT_No_AT_MCWSEND:
case cst_AT_No_AT_NMGS:
case cst_AT_No_AT_NVSET:
case cst_AT_No_AT_MIPLADDOBJ:
case cst_AT_No_AT_MIPLDISCOVERRSP:
case cst_AT_No_AT_MIPLUPDATE:
{
AT_OK_AND_ERROR_MACHINE(data);
}
break;
case cst_AT_No_AT_CIMI:
{
AT_CIMI_MACHINE(data);
}
break;
case cst_AT_No_AT_CGATT_how:
{
AT_CGATT_HOW_MACHINE(data);
}
break;
case cst_AT_No_AT_CGACT_how:
{
AT_CGACT_HOW_MACHINE(data);
}
break;
case cst_AT_No_AT_CEREG:
{
AT_CEREG_MACHINE(data);
}
break;
case cst_AT_No_AT_CSQ:
{
AT_CSQ_MACHINE(data);
}
break;
case cst_AT_No_AT_IMEI:
{
AT_IMEI_MACHINE(data);
}
break;
case cst_AT_No_AT_CCLK:
{
AT_GET_CCLK_MACHINE(data);
}
break;
case cst_AT_No_AT_ICCID:
{
AT_ICCID_MACHINE(data);
}
break;
case cst_AT_No_AT_CPIN:
{
AT_CPIN_MACHINE(data);
}
break;
case cst_AT_No_AT_MIPOPEN:
{
AT_MIPOPEN_MACHINE(data);
}
break;
case cst_AT_No_AT_MIPSENDCOUNT:
{
AT_MIPSENDCOUNT_MACHINE(data);
}
break;
case cst_AT_No_AT_TCPSEND:
{
AT_MIPSEND_MACHINE(data);
}
break;
case cst_AT_No_AT_MIPCLOSE:
{
AT_MIPCLOSE_MACHINE(data);
}
break;
case cst_AT_No_VERCTRL_CK:
{
AT_VERCTRL_CK_MACHINE(data);
}
break;
case cst_AT_No_AT_TUEINFO:
{
AT_TUEINFO_MACHINE(data);
}
break;
case cst_AT_No_AT_CCED:
{
AT_CCED_MACHINE(data);
}
break;
case cst_AT_No_AT_READ_DATA:
{
AT_NBIOT_READ_MACHINE(data);
}
break;
case cst_AT_No_AT_MCWOPEN:
{
AT_MCWOPEN_MACHINE(data);
}
break;
case cst_AT_No_AT_MCWSEND_ACKID:
{
AT_MCWSEND_ACK_MACHINE(data);
}
break;
case cst_AT_No_AT_QIOPEN:
{
AT_QIOPEN_MACHINE(data);
}
break;
case cst_AT_No_AT_NUESTATS:
{
AT_NUWSTATS_MACHINE(data);
}
break;
case cst_AT_No_AT_NVGET:
{
AT_NV_CK_MACHINE(data);
}
break;
case cst_AT_No_AT_NRB:
{
AT_NRB_CK_MACHINE(data);
}
break;
case cst_AT_No_AT_MIPLCREATEEX:
{
AT_MIPLCREATEEX(data);
}
break;
case cst_AT_No_AT_MIPLOPEN:
{
AT_MIPLOPEN_MACHINE(data);
}
break;
case cst_AT_No_AT_MIPLOBSERVE:
{
AT_WAIT_MIPLOBSERVE(data);
}
break;
default:
break;
}
s_g_buf[0] = data;
PrintNbData(s_g_buf,1);//<2F><>ӡԴ<D3A1><D4B4>
// AT_CHECK_ERROR_NUM_MACHINE(data);
}
/***************************************************************************
* @fun_name void NbiotUartSend(u8 *buf, u16 len, u8 style)
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] buf<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<EFBFBD>ַ len<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD>
style<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ATָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>NBIOT<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
***************************************************************************/
void NbiotUartSend(u8 *buf, u16 len, u8 style)
{
static u8 send_msg_bc25;
if (len > 0)
{
UartSend(NB_UART_COM, len,buf, &send_msg_bc25);
PrintNbData(buf,len);
//״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
g_s_rev_state = S0;
g_s_rev_state_com = 0;
g_s_rev_state_coap = 0;
g_s_rev_state_onenet = 0;
Uart_Comm.rev_ack_flag = UART_ING;
Uart_Comm.send_style = style;
}
}
/***************************************************************************
* @fun_name s8 NbiotCheckAtAck()
* @brief <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ȷ
* @param[in] None
* @param[out] None
* @retval UART_ING:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UART_OK<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ֡ UART_ERROR<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
* @other None
***************************************************************************/
s8 NbiotCheckAtAck()
{
return Uart_Comm.rev_ack_flag;
}
void NbiotClearAtAck (void)
{
Uart_Comm.rev_ack_flag = 0;
}
/***************************************************************************
* @fun_name void NbiotRcv(u16 *len , u8 **data)
* @brief <EFBFBD><EFBFBD>ȡNBIOT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] data: <EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD>ŵ<EFBFBD>ַ len:<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD>ŵ<EFBFBD>ַ
***************************************************************************/
void NbiotRcvTransOne(u16 *len, u8 **data)
{
u16 i;
u8 temp_data;
for (i = 0; i < Uart_Comm.rev_len / 2; i++)
{
if (Uart_Comm.rev_buf[i * 2] > 0x5A)//<2F><><EFBFBD>ڡ<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪСд<D0A1><D0B4>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD>a<EFBFBD><61><EFBFBD><EFBFBD>ASCII<49><49>ֵΪ97<39><37><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>87
{
temp_data = (Uart_Comm.rev_buf[i * 2] - 0x57) << 4;
}
else if (Uart_Comm.rev_buf[i * 2] > 0x39)
{
temp_data = (Uart_Comm.rev_buf[i * 2] - 0x37) << 4;
}
else
{
temp_data = (Uart_Comm.rev_buf[i * 2] - 0x30) << 4;
}
if (Uart_Comm.rev_buf[i * 2 + 1] > 0x5A)
{
temp_data |= (Uart_Comm.rev_buf[i * 2 + 1] - 0x57);
}
else if (Uart_Comm.rev_buf[i * 2 + 1] > 0x39)
{
temp_data |= (Uart_Comm.rev_buf[i * 2 + 1]) - 0x37;
}
else
{
temp_data |= (Uart_Comm.rev_buf[i * 2 + 1]) - 0x30;
}
Uart_Comm.rev_buf_handled[i] = temp_data;
}
*data = Uart_Comm.rev_buf_handled;
*len = Uart_Comm.rev_len / 2;
}
void NbiotRcvUdp(u16 *len, u8 **data)
{
u16 i;
for (i = 0; i < Uart_Comm.rev_len; i++)
{
Uart_Comm.rev_buf_handled[i] = Uart_Comm.rev_buf[i];
}
*data = Uart_Comm.rev_buf_handled;
*len = Uart_Comm.rev_len;
}
void NbiotRcv(u16 *len, u8 **data)
{
if((GetRcvDataType() == NB_RCV_UDP1_DATA)||(GetRcvDataType() == NB_RCV_UDP2_DATA))
{
NbiotRcvUdp(len, data);
}
else
{
NbiotRcvTransOne(len, data);
}
}
/***************************************************************************
* @fun_name u8 NbiotRcvFinish()
* @brief NBIOT<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
***************************************************************************/
u8 NbiotRcvFinish()
{
return Uart_Comm.nbiot_rev_flag;
}
/***************************************************************************
* @fun_name void NbiotClearMsg()
* @brief <EFBFBD><EFBFBD>NBIOT<EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>־λ
* @param[out] data: <EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD>ŵ<EFBFBD>ַ len:<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD>ŵ<EFBFBD>ַ
***************************************************************************/
void NbiotClearMsg()
{
Uart_Comm.nbiot_rev_flag = 0;
Uart_Comm.send_style = 0;//cst_AT_No_AT_NBIOT_REV;
Uart_Comm.rev_len = 0;
g_s_rev_state = S0;
}
//<2F><><EFBFBD><EFBFBD>OKָ<4B><D6B8>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ǰ<><C7B0>Ϊ0x4F('O'), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(K(OK)<29><><EFBFBD><EFBFBD>R(ERROR)),<2C>ټ<EFBFBD><D9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0x0D,0x0A))
static void AT_OK_AND_ERROR_MACHINE(u8 data)
{
static u8 s_state_flag;
switch (g_s_rev_state)
{
case S0:
{
if (data == 'O')
{
g_s_rev_state = S1;
}
}
break;
case S1:
{
if (data == 'K')
{
s_state_flag = 1;
g_s_rev_state = S2;
}
else if (data == 'R')
{
s_state_flag = 0;
g_s_rev_state = S2;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S2:
{
if (data == '\r')
{
g_s_rev_state = S3;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S3:
{
if (data == '\n')
{
if (s_state_flag)
{
Uart_Comm.rev_ack_flag = UART_OK;
}
else
{
Uart_Comm.rev_ack_flag = UART_ERROR;
}
}
g_s_rev_state = S0;
}
break;
default:
{
g_s_rev_state = S0;
}
break;
}
}
/**
AT+CEREG?
+CEREG: 0,1
*/
//#define AT_CHECK_LEN_CEREG 11
//static const u8 scAT_CEREG[AT_CHECK_LEN_CEREG]="+CEREG: 0,1";
#define AT_CHECK_LEN_CEREG 10
static const u8 scAT_CEREG[AT_CHECK_LEN_CEREG]="+CEREG:0,1";
static void AT_CEREG_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_CEREG-1):
{
Uart_Comm.rev_ack_flag = ((data == '1')? UART_OK : UART_ERROR);
g_s_rev_state_com = 0;
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_CEREG)
{
g_s_rev_state_com = ((scAT_CEREG[g_s_rev_state_com] == data)? (g_s_rev_state_com+1) : 0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/**
AT+CGACT?
+CGACT: 1,1
*/
//#define AT_CHECK_LEN_CGACT 11
//static const u8 scAT_CGACT[AT_CHECK_LEN_CGACT]="+CGACT: 1,1";
#define AT_CHECK_LEN_CGACT 10
static const u8 scAT_CGACT[AT_CHECK_LEN_CGACT]="+CGACT:1,1";
static void AT_CGACT_HOW_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_CGACT-3):
{
g_s_rev_state_com = ((('1' == data)||('5' == data))? (g_s_rev_state_com+1) : 0);
break;
}
case(AT_CHECK_LEN_CGACT-2):
{
g_s_rev_state_com = (',' == data? (g_s_rev_state_com+1) : 0);
break;
}
case(AT_CHECK_LEN_CGACT-1):
{
Uart_Comm.rev_ack_flag = ((data == '1')? UART_OK : UART_ERROR);
g_s_rev_state_com = 0;
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_CGACT)
{
g_s_rev_state_com = (scAT_CGACT[g_s_rev_state_com] == data? (g_s_rev_state_com+1) : 0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/**
AT+CGACT?
+CGACT: 1,1
*/
//#define AT_CHECK_LEN_CGACT 11
//static const u8 scAT_CGACT[AT_CHECK_LEN_CGACT]="+CGACT: 1,1";
#define AT_CHECK_LEN_CGATT 8
static const u8 scAT_CGATT[AT_CHECK_LEN_CGATT]="+CGATT:1";
static void AT_CGATT_HOW_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_CGATT-1):
{
Uart_Comm.rev_ack_flag = ((data == '1')? UART_OK : UART_ERROR);
g_s_rev_state_com = 0;
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_CGATT)
{
g_s_rev_state_com = (scAT_CGATT[g_s_rev_state_com] == data? (g_s_rev_state_com+1) : 0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
//<2F><>ѯIMSI <20><>ȷ<EFBFBD><C8B7>ʽΪ CIMI<4D><49>+OK <20>Ȱ<EFBFBD><C8B0><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> Ȼ<><C8BB><EFBFBD>ж<EFBFBD>OK<4F><4B><EFBFBD><EFBFBD>ERROR
static void AT_CIMI_MACHINE(u8 data)
{
static u8 rev_count = 0; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
switch (g_s_rev_state)
{
case S0:
{
if (data=='I')
{
g_s_rev_state=S1;
rev_count=0;
}
}
break;
case S1:
{
if (data != 'R')
{
if (data != 'K')
{
if ((data >= '0') && (data <= '9'))
{
buf_imsi[rev_count++] = data;
}
}
else
{
rev_count = 0;
buf_imsi[15] = 0;
g_s_rev_state=S0;
Uart_Comm.rev_ack_flag = UART_OK;
}
}
else
{
rev_count = 0;
g_s_rev_state=S0;
Uart_Comm.rev_ack_flag = UART_ERROR;
}
}
break;
default:
{
g_s_rev_state=S0;
rev_count = 0;
Uart_Comm.rev_ack_flag = UART_ERROR;
}
break;
}
}
//Y7028<32><38>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
//+NSORF:0,47.104.217.235,5005,32,FEFE681001220522203378D603108D9F7EBB8321616E987E7FBBEF70711C8A16,0
#define AT_CHECK_LEN_NSORF 7
static const u8 scAT_NSORF[AT_CHECK_LEN_NSORF]="+NSORF:";
#define REV_STATE_NSORF_REV_TYPE 0x10 //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
#define REV_STATE_NSORF_REV_LEN_S0 0x11 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
#define REV_STATE_NSORF_REV_LEN_S1 0x12 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
#define REV_STATE_NSORF_REV_LEN_S2 0x13 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
#define REV_STATE_NSORF_REV_LEN_S3 0x14 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
#define REV_STATE_NSORF_REV_DATA 0x15 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void AT_NBIOT_READ_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_NSORF-1):
{
g_s_rev_state_com = (scAT_NSORF[g_s_rev_state_com] == data? (REV_STATE_NSORF_REV_TYPE) : 0);
break;
}
case(REV_STATE_NSORF_REV_TYPE):
{
Uart_Comm.rev_len = 0;
udp_rev_data_len =0;
g_s_udp_socket = NbiotGetSocketCode();
if(g_s_udp_socket == data)
{
Uart_Comm.nb_data_type = NB_RCV_UDP1_DATA;
g_s_rev_state_com = REV_STATE_NSORF_REV_LEN_S0;
}
else
{
g_s_rev_state_com = 0;
}
break;
}
case(REV_STATE_NSORF_REV_LEN_S0):
{
g_s_rev_state_com = (',' == data? (REV_STATE_NSORF_REV_LEN_S1) : REV_STATE_NSORF_REV_LEN_S0);
break;
}
case(REV_STATE_NSORF_REV_LEN_S1):
{
g_s_rev_state_com = (',' == data? (REV_STATE_NSORF_REV_LEN_S2) : REV_STATE_NSORF_REV_LEN_S1);
break;
}
case(REV_STATE_NSORF_REV_LEN_S2):
{
g_s_rev_state_com = (',' == data? (REV_STATE_NSORF_REV_LEN_S3) : REV_STATE_NSORF_REV_LEN_S2);
break;
}
case (REV_STATE_NSORF_REV_LEN_S3):
{
if ((data >= '0') && (data <= '9'))
{
udp_rev_data_len *= 10;
udp_rev_data_len += (data -0x30);
}
else if(','== data)
{
if(udp_rev_data_len < ML302_UP_BUF_SIZE * 2)
{
g_s_rev_state_com = REV_STATE_NSORF_REV_DATA;
}
else
{
g_s_rev_state_com = 0;
}
}
break;
}
case (REV_STATE_NSORF_REV_DATA):
{
if ((Uart_Comm.rev_len < (udp_rev_data_len*2))&&(','!= data))
{
Uart_Comm.rev_buf[Uart_Comm.rev_len++] = data;
}
else
{
Uart_Comm.nbiot_rev_flag = TRUE;
g_s_rev_state_com = 0;
}
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_NSORF)
{
g_s_rev_state_com = (scAT_NSORF[g_s_rev_state_com] == data? (g_s_rev_state_com+1) : 0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/**
AT+CSQ
+CSQ: 14,99
*/
#define AT_CHECK_LEN_CSQ 6
static const u8 scAT_CSQ[AT_CHECK_LEN_CSQ]="+CSQ: ";
static void AT_CSQ_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_CSQ-1):
{
if (data != ',')
{
if (data >= '0' && data <= '9') //<2F><><EFBFBD><EFBFBD>
{
g_csq_value *= 10;
g_csq_value += (data - 0x30);
g_s_rev_state_com = AT_CHECK_LEN_CSQ-1;
}
}
else
{
Uart_Comm.rev_ack_flag = UART_OK;
g_s_rev_state_com = 0;
}
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_CSQ)
{
g_s_rev_state_com = (scAT_CSQ[g_s_rev_state_com] == data? (g_s_rev_state_com+1) : 0);
g_csq_value = (':' == data? (0) : g_csq_value);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/**
+NSONMI:0,32
*/
#define AT_CHECK_LEN_NSONMI 8
static const u8 scAT_NSONMI[AT_CHECK_LEN_NSONMI]="+NSONMI:";
static void AT_NSONMI_MACHINE(u8 data)
{
switch (g_s_rev_socket_len_state)
{
case(AT_CHECK_LEN_NSONMI):
{
/*if(data==g_s_tcp_socket)
{
Uart_Comm.rev_ack_flag = UART_OK;
Uart_Comm.tcp_rev_data_hint = TRUE;//UDP<44>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
}
else
*/
g_s_udp_socket = NbiotGetSocketCode();
if(data==g_s_udp_socket)
{
Uart_Comm.rev_ack_flag = UART_OK;
Uart_Comm.udp_rev_data_hint = TRUE;//UDP<44>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
}
else
{
g_s_rev_socket_len_state = 0;
}
break;
}
default:
{
if(g_s_rev_socket_len_state<AT_CHECK_LEN_NSONMI)
{
g_s_rev_socket_len_state = (scAT_NSONMI[g_s_rev_socket_len_state] == data? (g_s_rev_socket_len_state+1) : 0);
}
else
{
g_s_rev_socket_len_state = 0;
}
break;
}
}
}
/**
[14:36:32.887]<EFBFBD>ա<EFBFBD><EFBFBD><EFBFBD>AT+TUEINFO
TUEINFO:DLEARFCN,41134
TUEINFO:PCID,86
TUEINFO:RSRP,42
TUEINFO:RSRQ,17
TUEINFO:SINR,43
TUEINFO:MCL,112
TUEINFO:ULMCS,65535
TUEINFO:DLMCS,65535
TUEINFO:MPDCCHREPNUM,65535
TUEINFO:PUSCHREPNUM,65535
TUEINFO:PDSCHREPNUM,65535
TUEINFO:ULINITIALBLER,65535
TUEINFO:DLINITIALBLER,65535
TUEINFO:ULRBNUM,4294967295
TUEINFO:DLRBNUM,4294967295
TUEINFO:ULRLCRATE,4294967295
TUEINFO:DLRLCRATE,4294967295
TUEINFO:ULTBS,4294967295
TUEINFO:DLTBS,4294967295
TUEINFO:ECL,0
OK
*/
#define AT_CHECK_LEN_TUEINFO_RSRP 5
#define AT_CHECK_LEN_TUEINFO_SINR 5
#define AT_CHECK_LEN_TUEINFO_ECL 4
static const u8 scAT_TUEINFO_RSRP[AT_CHECK_LEN_TUEINFO_RSRP]="RSRP,";
static const u8 scAT_TUEINFO_SINR[AT_CHECK_LEN_TUEINFO_SINR]="SINR,";
static const u8 scAT_TUEINFO_ECL[AT_CHECK_LEN_TUEINFO_ECL]="ECL,";
#define INFO_STATE_RSRP 0X10
#define INFO_STATE_SINR 0X20
#define INFO_STATE_ECL 0X30
#define INFO_STATE_ERR_WT 0X40 //<2F><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>
u8 rev_state_buf[4];
static void AT_TUEINFO_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(INFO_STATE_RSRP)://<2F><>ȡRSRP
{
if (data != '\r')
{
if (data >= '0' && data <= '9') //<2F><><EFBFBD><EFBFBD>
{
s_g_rsrp_value *= 10;
s_g_rsrp_value += (data - 0x30);
g_s_rev_state_com = INFO_STATE_RSRP;
}
if(data =='-')//<2F><>ֹ<EFBFBD><D6B9><EFBFBD>֡<EFBFBD>-1<><31><EFBFBD><EFBFBD>TUEINFO:RSRP,-1
{
g_s_rev_state_com = INFO_STATE_ERR_WT;
}
}
else
{
s_g_rsrp_value = (s_g_rsrp_value - 140)*10;
g_s_rev_state_com = 0;
}
break;
}
case(INFO_STATE_SINR)://<2F><>ȡSINR
{
if (data != '\r')
{
if (data >= '0' && data <= '9') //<2F><><EFBFBD><EFBFBD>
{
s_g_snr_value *= 10;
s_g_snr_value += (data - 0x30);
g_s_rev_state_com = INFO_STATE_SINR;
}
}
else
{
g_s_rev_state_com = 0;
}
break;
}
case(INFO_STATE_ECL)://<2F><>ȡECL
{
if (data != '\r')
{
if (data >= '0' && data <= '9') //<2F><><EFBFBD><EFBFBD>
{
s_g_ecl_value *= 10;
s_g_ecl_value += (data - 0x30);
g_s_rev_state_com = INFO_STATE_ECL;
}
}
else
{
Uart_Comm.rev_ack_flag = UART_OK;
rev_state_buf[0] = 0;
rev_state_buf[1] = 0;
rev_state_buf[2] = 0;
rev_state_buf[3] = 0;
g_s_rev_state_com = 0;
}
break;
}
case(INFO_STATE_ERR_WT)://<2F>ȴ<EFBFBD><C8B4><EFBFBD>ʱ
{
break;
}
default:
{
if(rev_state_buf[0]<AT_CHECK_LEN_TUEINFO_RSRP)
{
rev_state_buf[0] = ((scAT_TUEINFO_RSRP[rev_state_buf[0]] == data)? (rev_state_buf[0]+1) : 0);
s_g_rsrp_value = ((AT_CHECK_LEN_TUEINFO_RSRP== rev_state_buf[0])? (0) : s_g_rsrp_value);
g_s_rev_state_com = (AT_CHECK_LEN_TUEINFO_RSRP == rev_state_buf[0]? (INFO_STATE_RSRP) : g_s_rev_state_com);
}
if(rev_state_buf[1]<AT_CHECK_LEN_TUEINFO_SINR)
{
rev_state_buf[1] = ((scAT_TUEINFO_SINR[rev_state_buf[1]] == data)? (rev_state_buf[1]+1) : 0);
s_g_snr_value = ((AT_CHECK_LEN_TUEINFO_SINR== rev_state_buf[1])? (0) : s_g_snr_value);
g_s_rev_state_com = (AT_CHECK_LEN_TUEINFO_SINR == rev_state_buf[1]? (INFO_STATE_SINR) : g_s_rev_state_com);
}
if(rev_state_buf[2]<AT_CHECK_LEN_TUEINFO_ECL)
{
rev_state_buf[2] = ((scAT_TUEINFO_ECL[rev_state_buf[2]] == data)? (rev_state_buf[2]+1) : 0);
s_g_ecl_value = ((AT_CHECK_LEN_TUEINFO_ECL== rev_state_buf[2])? (0) : s_g_ecl_value);
g_s_rev_state_com = (AT_CHECK_LEN_TUEINFO_ECL == rev_state_buf[2]? (INFO_STATE_ECL) : g_s_rev_state_com);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/**
[16:52:55.548]<EFBFBD>ա<EFBFBD><EFBFBD><EFBFBD>AT+CCED=0,1
+CCED:LTE current cell:460,00,460045858412892,0,40,n100,38950,74802246,21,20,21272,8,333
*/
#define AT_CHECK_LEN_CCED 5
#define AT_CHECK_LEN_CCED_BAND 4
#define AT_CHECK_LEN_CCED_CELLID 2
static const u8 scAT_CCED[AT_CHECK_LEN_CCED]="cell:";
static const u8 scAT_CCED_BAND[AT_CHECK_LEN_CCED]=",,,,";
static const u8 scAT_CCED_CELLID[AT_CHECK_LEN_CCED_CELLID]=",,";
#define CCED_STATE_BAND_POS 0X10
#define CCED_STATE_BAND_DAT 0X20
#define CCED_STATE_CELLID_POS 0X30
#define CCED_STATE_CELLID_DAT 0X40
static void AT_CCED_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(CCED_STATE_BAND_POS)://bandλ<64><CEBB><EFBFBD>ж<EFBFBD>
{
if(rev_state_buf[1]<AT_CHECK_LEN_CCED_BAND)
{
rev_state_buf[1] = ((scAT_CCED_BAND[rev_state_buf[1]] == data)? (rev_state_buf[1]+1) : rev_state_buf[1]);
s_g_band_value = ((AT_CHECK_LEN_CCED_BAND== rev_state_buf[1])? (0) : s_g_band_value);
g_s_rev_state_com = (AT_CHECK_LEN_CCED_BAND == rev_state_buf[1]? (CCED_STATE_BAND_DAT) : g_s_rev_state_com);
}
break;
}
case(CCED_STATE_BAND_DAT)://<2F><>ȡband
{
if (data != ',')
{
if (data >= '0' && data <= '9') //<2F><><EFBFBD><EFBFBD>
{
s_g_band_value *= 10;
s_g_band_value += (data - 0x30);
rev_state_buf[1] = 0;
}
}
else
{
g_s_rev_state_com = CCED_STATE_CELLID_POS;
}
break;
}
case(CCED_STATE_CELLID_POS)://cill id λ<><CEBB><EFBFBD>ж<EFBFBD>
{
if(rev_state_buf[1]<AT_CHECK_LEN_CCED_CELLID)
{
rev_state_buf[1] = ((scAT_CCED_CELLID[rev_state_buf[1]] == data)? (rev_state_buf[1]+1) : rev_state_buf[1]);
g_s_rev_state_com = (AT_CHECK_LEN_CCED_CELLID == rev_state_buf[1]? (CCED_STATE_CELLID_DAT) : g_s_rev_state_com);
rev_state_buf[2] = 0;
}
break;
}
case(CCED_STATE_CELLID_DAT)://<2F><>ȡcill id
{
if (data != ',')
{
if (data >= '0' && data <= '9') //<2F><><EFBFBD><EFBFBD>
{
if(rev_state_buf[2]<CELL_ID_SIZE)
{
s_g_cell_id[rev_state_buf[2]++] = data;
}
}
}
else
{
if((s_g_band_value > 0)&&(s_g_band_value<42))//<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+CCED:LTE current cell:000,000,460045858412907,0,0,NULL,-1,0,0,0,0,0,0
{
Uart_Comm.rev_ack_flag = UART_OK;
}
rev_state_buf[0] = 0;
rev_state_buf[1] = 0;
rev_state_buf[2] = 0;
rev_state_buf[3] = 0;
g_s_rev_state_com = 0;
}
break;
}
default:
{
if(rev_state_buf[0]<AT_CHECK_LEN_CCED)
{
rev_state_buf[0] = ((scAT_CCED[rev_state_buf[0]] == data)? (rev_state_buf[0]+1) : 0);
g_s_rev_state_com = (AT_CHECK_LEN_CCED== rev_state_buf[0]? (CCED_STATE_BAND_POS) : g_s_rev_state_com);
rev_state_buf[1] = 0;
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
void NbiotGetECL(s16 *ecl_data)
{
*ecl_data = s_g_ecl_value;
}
//ѯ<><D1AF>IMEI <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>AT+CGSN=1 <20><>ȷӦ<C8B7><D3A6><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>+CGSN:865820031203206 OK
static void AT_IMEI_MACHINE(u8 data)
{
static u8 rev_count = 0; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
switch (g_s_rev_state)
{
case S0:
{
if (data == '+')
{
g_s_rev_state = S1;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S1:
{
if (data == 'C')
{
g_s_rev_state = S2;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S2:
{
if (data == 'G')
{
g_s_rev_state = S3;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S3:
{
if (data == 'S')
{
g_s_rev_state = S4;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S4:
{
if (data == 'N')
{
g_s_rev_state = S5;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S5:
{
if (data == ':')
{
g_s_rev_state = S6;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S6:
{
if (data != 'K')
{
if ((data >= '0') && (data <= '9'))
{
buf_imei[rev_count++] = data;
}
}
else
{
rev_count = 0;
g_s_rev_state = S0;
buf_imei[15] = 0;
Uart_Comm.rev_ack_flag = UART_OK;
}
}
break;
default:
{
g_s_rev_state = S0;
}
break;
}
}
void NbiotGetIMEI(char *imei)
{
u8 i = 0;
for (i = 0; i < 15; i++)
{
*(imei + i) = buf_imei[i];
}
}
void NbiotGetIMSI(char *imsi)
{
u8 i = 0;
for (i = 0; i < 15; i++)
{
*(imsi + i) = buf_imsi[i];
}
}
void NbiotGetICCID(char *iccid)
{
u8 i = 0;
for (i = 0; i < 20; i++)
{
*(iccid + i) = buf_iccid[i];
}
}
/**
AT+CCLK?
+CCLK: "21/09/15,09:47:26+32"
+CCLK: "21/05/13,16:37:30"
*/
//+CCLK:22/05/23,15:15:46+32
static void AT_GET_CCLK_MACHINE(u8 data)
{
static u8 get_cclk_state = S0;
static u8 temp_data;
switch (get_cclk_state)
{
case S0:
{
if (data == '+')
{
get_cclk_state = S1;
}
}
break;
case S1:
{
if (data == 'C')
{
get_cclk_state = S2;
}
else
{
get_cclk_state = S0;
}
}
break;
case S2:
{
if (data == 'C')
{
get_cclk_state = S3;
}
else
{
get_cclk_state = S0;
}
}
break;
case S3:
{
if (data == 'L')
{
get_cclk_state = S4;
}
else
{
get_cclk_state = S0;
}
}
break;
case S4:
{
if (data == 'K')
{
get_cclk_state = S5;
}
else
{
get_cclk_state = S0;
}
}
break;
case S5:
{
if (data == ':')
{
get_cclk_state = S6;
temp_data = 0;
}
}
break;
case S6://<2F><>ȡ<EFBFBD><C8A1>
{
if (data != '/')
{
if (data >= '0' && data <= '9')
{
temp_data = temp_data * 10;
temp_data += (data - 0x30);
}
}
else
{
tm_GMT_nb_uart_driver.tm_year = (2000 - 1900) + temp_data; //<2F><>1900<30><30><EFBFBD><EFBFBD>
temp_data = 0;
get_cclk_state = S7;
}
}
break;
case S7://<2F><>ȡ<EFBFBD><C8A1>
{
if (data != '/')
{
if (data >= '0' && data <= '9')
{
temp_data = temp_data * 10;
temp_data += (data - 0x30);
}
}
else
{
tm_GMT_nb_uart_driver.tm_mon = temp_data - 1; //<2F>·<EFBFBD>Χ<EFBFBD><CEA7>0-11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
temp_data = 0;
get_cclk_state = S8;
}
}
break;
case S8://<2F><>ȡ<EFBFBD><C8A1>
{
if (data != ',')
{
if (data >= '0' && data <= '9')
{
temp_data = temp_data * 10;
temp_data += (data - 0x30);
}
}
else
{
tm_GMT_nb_uart_driver.tm_mday = temp_data;
temp_data = 0;
get_cclk_state = S9;
}
}
break;
case S9://<2F><>ȡʱ
{
if (data != ':')
{
if (data >= '0' && data <= '9')
{
temp_data = temp_data * 10;
temp_data += (data - 0x30);
}
}
else
{
tm_GMT_nb_uart_driver.tm_hour = temp_data;
temp_data = 0;
get_cclk_state = S10;
}
}
break;
case S10://<2F><>ȡ<EFBFBD><C8A1>
{
if (data != ':')
{
if (data >= '0' && data <= '9')
{
temp_data = temp_data * 10;
temp_data += (data - 0x30);
}
}
else
{
tm_GMT_nb_uart_driver.tm_min = temp_data;
temp_data = 0;
get_cclk_state = S11;
}
}
break;
case S11://<2F><>ȡ<EFBFBD><C8A1>
{
if (data != '+')
{
if (data >= '0' && data <= '9')
{
temp_data = temp_data * 10;
temp_data += (data - 0x30);
}
}
else
{
tm_GMT_nb_uart_driver.tm_sec = temp_data;
static DateTime rtcc_tmp; //RTC<54><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ BCD
tm_GMT_nb_uart_driver.tm_year -= (2000 - 1900);
tm_GMT_nb_uart_driver.tm_mon += 1; //<2F>·<EFBFBD>Χ(0-11) +1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(1-12)
rtcc_tmp.s.second = ((tm_GMT_nb_uart_driver.tm_sec / 10) << 4) | (tm_GMT_nb_uart_driver.tm_sec % 10);
rtcc_tmp.s.minute = ((tm_GMT_nb_uart_driver.tm_min / 10) << 4) | (tm_GMT_nb_uart_driver.tm_min % 10);
rtcc_tmp.s.hour = ((tm_GMT_nb_uart_driver.tm_hour / 10) << 4) | (tm_GMT_nb_uart_driver.tm_hour % 10);
rtcc_tmp.s.day = ((tm_GMT_nb_uart_driver.tm_mday / 10) << 4) | (tm_GMT_nb_uart_driver.tm_mday % 10);
rtcc_tmp.s.month = ((tm_GMT_nb_uart_driver.tm_mon / 10) << 4) | (tm_GMT_nb_uart_driver.tm_mon % 10);
rtcc_tmp.s.year = ((tm_GMT_nb_uart_driver.tm_year / 10) << 4) | (tm_GMT_nb_uart_driver.tm_year % 10);
if(rtcc_tmp.s.year>=0x22)
{
RtccSetDateTime(&rtcc_tmp);
RtccAdjustDateTime(1,3600*8);//ʱ,UTCʱ<43><CAB1><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>8Сʱ
}
temp_data = 0;
get_cclk_state = S0;
Uart_Comm.rev_ack_flag = UART_OK;
}
}
break;
default:
{
get_cclk_state = S0;
}
break;
}
}
/**
//<2F><>ѯ<EFBFBD><D1AF>ǰSIM<49><4D><EFBFBD><EFBFBD>ICCID<49><44>,+NCCID:4412345678901234567\r\n
*/
#define AT_CHECK_LEN_ICCID 7
static const u8 scAT_ICCID[AT_CHECK_LEN_ICCID]="+NCCID:";
static void AT_ICCID_MACHINE(u8 data)
{
static u8 rev_count = 0;
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_ICCID-1):
{
if (data != 'K')
{
if ((data >= '0' && data <= '9') || (data >= 'A' && data <= 'F')) //<2F><><EFBFBD><EFBFBD>
{
g_s_rev_state_com = AT_CHECK_LEN_ICCID-1;
if(rev_count<20)
{
buf_iccid[rev_count++] = data;
}
else
{
g_s_rev_state_com = 0;
}
}
}
else
{
rev_count = 0;
buf_iccid[20] = 0;
Uart_Comm.rev_ack_flag = UART_OK;
g_s_rev_state_com = 0;
}
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_ICCID)
{
g_s_rev_state_com = (scAT_ICCID[g_s_rev_state_com] == data? (g_s_rev_state_com+1) : 0);
rev_count = 0;
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
////<2F><>ѯ<EFBFBD><D1AF>ǰSIM<49><4D><EFBFBD><EFBFBD>ICCID<49><44>,+NCCID:4412345678901234567\r\n
//static void AT_ICCID_MACHINE(u8 data)
//{
// static u8 rev_count = 0;
// switch (g_s_rev_state)
// {
// case S0:
// {
// if (data == 'I')//"I"
// {
// g_s_rev_state = S1;
// }
// else
// {
// g_s_rev_state = S0;
// }
// }
// break;
// case S1:
// {
// if (data == 'D')//"D"
// {
// g_s_rev_state = S2;
// }
// else
// {
// g_s_rev_state = S1;
// }
// }
// break;
// case S2:
// {
// if (data == ':')//":"
// {
// rev_count = 0;
// g_s_rev_state = S3;
// }
// }
// break;
// case S3:
// {
// if (data != 'R')
// {
// if (data != 'K')
// {
// if ((data >= '0' && data <= '9') || (data >= 'A' && data <= 'Z') || (data >= 'a' && data <= 'z')) //<2F><><EFBFBD><EFBFBD>
// {
// Nbiot_three_code.iccid[rev_count++] = data;
// }
// }
// else
// {
// rev_count = 0;
// Nbiot_three_code.iccid[20] = 0;
// Uart_Comm.rev_ack_flag = UART_OK;
// }
// }
// else
// {
// rev_count = 0;
// Uart_Comm.rev_ack_flag = UART_ERROR;
// }
// }
// break;
// default:
// {
// g_s_rev_state = S0;
// }
// break;
// }
//}
/**
AT+CPIN?
+CPIN: READY
*/
//#define AT_CHECK_LEN_CPIN 12
//static const u8 scAT_CPIN[AT_CHECK_LEN_CPIN]="+CPIN: READY";
#define AT_CHECK_LEN_CPIN 11
static const u8 scAT_CPIN[AT_CHECK_LEN_CPIN]="+CPIN:READY";
static void AT_CPIN_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_CPIN-1):
{
Uart_Comm.rev_ack_flag = ((data == 'Y')? UART_OK : UART_ERROR);
g_s_rev_state_com = 0;
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_CPIN)
{
g_s_rev_state_com = (scAT_CPIN[g_s_rev_state_com] == data? (g_s_rev_state_com+1) : 0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/**
AT+MIPOPEN=1,"TCP","58.59.6.130",21628
OK
1,CONNECT OK
AT+MIPOPEN=1,"TCP","58.59.6.130",21628
1,ALREADY CONNECT
*/
#define AT_CHECK_LEN_MIPOPEN 10
static const u8 scAT_MIPOPEN1[AT_CHECK_LEN_MIPOPEN]="CONNECT OK";
static const u8 scAT_MIPOPEN2[AT_CHECK_LEN_MIPOPEN]="ALREADY CO";
u8 tcp_socket_code='0'; //0..5 A numeric parameter which indicates the connection number
static void AT_MIPOPEN_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_MIPOPEN-1):
{
Uart_Comm.rev_ack_flag = (((data == 'K')||((data == 'O')))? UART_OK : UART_ERROR);
g_s_rev_state_com = 0;
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_MIPOPEN)
{
g_s_rev_state_com = (((scAT_MIPOPEN1[g_s_rev_state_com] == data)||(scAT_MIPOPEN2[g_s_rev_state_com] == data))? (g_s_rev_state_com+1) : 0);
tcp_socket_code = (((data >= '0')&&(data<='5'))? data : '0');
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/**
AT+MIPSEND=1,0352
>
AT+MIPSEND=1,0352
AT+MIPSEND=1,0352
*/
#define AT_CHECK_LEN_MIPSENDCOUNT 1
static const u8 scAT_MIPSENDCOUNT[AT_CHECK_LEN_MIPSENDCOUNT]=">";
static void AT_MIPSENDCOUNT_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_MIPSENDCOUNT)
{
if(data == '>')//<2F><><EFBFBD>⵽'>'<27><>ֱ<EFBFBD><D6B1>ok
{
Uart_Comm.rev_ack_flag = UART_OK;
}
g_s_rev_state_com = ((scAT_MIPSENDCOUNT[g_s_rev_state_com] == data)?0:0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/*
[16:19:01.482]<EFBFBD>ա<EFBFBD><EFBFBD><EFBFBD>AT+MIPSEND=1,0352
>
[16:19:02.586]<EFBFBD>ա<EFBFBD><EFBFBD><EFBFBD>FEFE6810010000000033786703A0B267F17F4A63B7EE0B662AFC7620693B00DD25A695A747056D041A980FB1420C6AD4455224C8B6B4331F810C8AF16ECD00DD25A695A747056D041A980FB1420C00DD25A695A747056D041A980FB1420C00DD25A695A747056D041A980FB1420C00DD25A695A747056D041A980FB1420C00DD25A695A747056D041A980FB1420C74BCF5A165D6EF5B1EBBA33402A7AA8D4483DE918F0F9D2040E3DA3FA8CE5C268016
[16:19:03.210]<EFBFBD>ա<EFBFBD><EFBFBD><EFBFBD>
1,SEND OK
*/
#define AT_CHECK_LEN_MIPSEND 7
static const u8 scAT_MIPSEND[AT_CHECK_LEN_MIPSEND]="SEND OK";
static void AT_MIPSEND_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_MIPSEND-1):
{
Uart_Comm.rev_ack_flag = ((data == 'K')? UART_OK : UART_ERROR);
g_s_rev_state_com = 0;
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_MIPSEND)
{
g_s_rev_state_com = ((scAT_MIPSEND[g_s_rev_state_com] == data)? (g_s_rev_state_com+1) : 0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/*
AT+MIPCLOSE=1
1,CLOSE OK
*/
#define AT_CHECK_LEN_MIPCLOSE 8
static const u8 scAT_MIPCLOSE[AT_CHECK_LEN_MIPCLOSE]="CLOSE OK";
static void AT_MIPCLOSE_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_MIPCLOSE-1):
{
Uart_Comm.rev_ack_flag = ((data == 'K')? UART_OK : UART_ERROR);
g_s_rev_state_com = 0;
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_MIPCLOSE)
{
g_s_rev_state_com = ((scAT_MIPCLOSE[g_s_rev_state_com] == data)? (g_s_rev_state_com+1) : 0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/*
AT+VERCTRL?
+VERCTRL: 0, 1
*/
#define AT_CHECK_LEN_VERCTRL_CK 14
static const u8 scAT_VERCTRL_CK[AT_CHECK_LEN_VERCTRL_CK]="+VERCTRL: 0, 1";
static void AT_VERCTRL_CK_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_VERCTRL_CK-1):
{
Uart_Comm.rev_ack_flag = ((data == '1')? UART_OK : UART_ERROR);
g_s_rev_state_com = 0;
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_VERCTRL_CK)
{
g_s_rev_state_com = ((scAT_VERCTRL_CK[g_s_rev_state_com] == data)? (g_s_rev_state_com+1) : 0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/**
<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
+MAXULPOW:0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
+MAXULPOW:22 //<2F><><EFBFBD><EFBFBD>
*/
#define AT_CHECK_LEN_NV_CK 11
static const u8 scAT_NV_CK[AT_CHECK_LEN_NV_CK]="+MAXULPOW:0";
static void AT_NV_CK_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_NV_CK-1):
{
if(Sys_data_object.P1.func_cfg_bytes[11] == 0x55)
{
Uart_Comm.rev_ack_flag = ((data == '2')? UART_OK : UART_ERROR);
}
else
{
Uart_Comm.rev_ack_flag = ((data == '0')? UART_OK : UART_ERROR);
}
g_s_rev_state_com = 0;
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_NV_CK)
{
g_s_rev_state_com = ((scAT_NV_CK[g_s_rev_state_com] == data)? (g_s_rev_state_com+1) : 0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/**
ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
+MODULE_READY:2
*/
#define AT_CHECK_LEN_NRB 15
static const u8 scAT_NRB_CK[AT_CHECK_LEN_NRB]="+MODULE_READY:2";
static void AT_NRB_CK_MACHINE(u8 data)
{
switch (g_s_rev_state_com)
{
case(AT_CHECK_LEN_NRB-1):
{
Uart_Comm.rev_ack_flag = ((data == '2')? UART_OK : UART_ERROR);
g_s_rev_state_com = 0;
break;
}
default:
{
if(g_s_rev_state_com<AT_CHECK_LEN_NRB)
{
g_s_rev_state_com = ((scAT_NRB_CK[g_s_rev_state_com] == data)? (g_s_rev_state_com+1) : 0);
}
else
{
g_s_rev_state_com = 0;
}
break;
}
}
}
/*<2A><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
[14:27:10.106]<EFBFBD>ա<EFBFBD><EFBFBD><EFBFBD>
+MCWEVENT:1
[14:27:11.418]<EFBFBD>ա<EFBFBD><EFBFBD><EFBFBD>
+MCWEVENT:7
û<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
+MCWEVENT:2
*/
static void AT_MCWOPEN_MACHINE(u8 data)
{
switch (g_s_rev_state)
{
case S0:
{
if (data == 'E') g_s_rev_state = S1;
else g_s_rev_state = S0;
}
break;
case S1:
{
if (data == 'V') g_s_rev_state = S2;
else g_s_rev_state = S0;
}
break;
case S2:
{
if (data == 'E') g_s_rev_state = S3;
else g_s_rev_state = S0;
}
break;
case S3:
{
if (data == 'N') g_s_rev_state = S4;
else g_s_rev_state = S0;
}
break;
case S4:
{
if (data == 'T') g_s_rev_state = S5;
else g_s_rev_state = S0;
}
break;
case S5:
{
if (data == ':') g_s_rev_state = S6;
else g_s_rev_state = S0;
}
break;
case S6:
{
if (data == '7')//7 <20><><EFBFBD>ijɹ<C4B3>
{
Uart_Comm.rev_ack_flag = UART_OK;
g_s_rev_state = S0; //<2F><><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>,<2C>ÿ<EFBFBD>״̬
}
else if(data=='2'||data=='8')//ע<><D7A2>/<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
Uart_Comm.rev_ack_flag = UART_ERROR;
g_s_rev_state = S0; //<2F><><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>,<2C>ÿ<EFBFBD>״̬
}
else
{
g_s_rev_state = S0;
}
}
break;
default:
{
g_s_rev_state = S0;
}
break;
}
}
static void AT_MCWSEND_ACK_MACHINE(u8 data)
{
switch (g_s_rev_state)
{
case S0:
{
if (data == 'E') g_s_rev_state = S1;
else g_s_rev_state = S0;
}
break;
case S1:
{
if (data == 'V') g_s_rev_state = S2;
else g_s_rev_state = S0;
}
break;
case S2:
{
if (data == 'E') g_s_rev_state = S3;
else g_s_rev_state = S0;
}
break;
case S3:
{
if (data == 'N') g_s_rev_state = S4;
else g_s_rev_state = S0;
}
break;
case S4:
{
if (data == 'T') g_s_rev_state = S5;
else g_s_rev_state = S0;
}
break;
case S5:
{
if (data == ':') g_s_rev_state = S6;
else g_s_rev_state = S0;
}
break;
case S6://ֻ<><D6BB><EFBFBD><EFBFBD>0,6
{
if (data == '9')
{
// if(PAYMENT_METER == Sys_data_object.Meter_function_cfg_8000.payment_form)
// {
// SetCommuOverFlag_IES();
// }
Uart_Comm.rev_ack_flag = UART_OK;
g_s_rev_state = S0; //<2F><><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>,<2C>ÿ<EFBFBD>״̬
}
else
{
g_s_rev_state = S0; //Bootstrap <20><><EFBFBD>̴<EFBFBD><CCB4><EFBFBD><EFBFBD>ɹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>
}
}
break;
default:
{
g_s_rev_state = S0;
}
break;
}
}
//+MCWREAD:32,FEFE68100130032120337840011017C7F8999259CBA6B744B394C94B9DB96016,0
static void AT_NBIOT_REV_MACHINE_MN316_CTWing(u8 data)
{
switch (g_s_rev_state_coap)
{
case S0:
{
if (data == 'R')
{
g_s_rev_state_coap = S2;
}
else
{
g_s_rev_state_coap = S0;
}
}
break;
case S2:
{
if (data == 'E')
{
g_s_rev_state_coap = S3;
}
else
{
g_s_rev_state_coap = S0;
}
}
break;
case S3:
{
if (data == 'A')
{
g_s_rev_state_coap = S4;
}
else
{
g_s_rev_state_coap = S0;
}
}
break;
case S4:
{
if (data == 'D')
{
g_s_rev_state_coap = S5;
}
else
{
g_s_rev_state_coap = S0;
}
}
break;
case S5://
{
if (data == ':')
{
Uart_Comm.nbiot_rev_serial_number_cnt = 0;
g_s_rev_state_coap = S6;
}
else
{
g_s_rev_state_coap = S0;
}
}
break;
case S6:
{
if (data != ',')
{
if(Uart_Comm.nbiot_rev_serial_number_cnt >= sizeof(Uart_Comm.nbiot_rev_serial_number))
{
Uart_Comm.nbiot_rev_serial_number_cnt = 0;
g_s_rev_state_coap = S0; //<2F>쳣--ʣ<>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>Ҫ<EFBFBD><D2AA>
break;
}
if (data >= 0x30 && data <= 0x39)
{
Uart_Comm.nbiot_rev_serial_number[Uart_Comm.nbiot_rev_serial_number_cnt++] = data;
}
}
else
{
Uart_Comm.rev_len = 0;
Uart_Comm.nbiot_rev_serial_number_cnt = 0;
g_s_rev_state_coap = S7; //<2F><>2<EFBFBD><32>','
}
}
break;
case S7:
{
if ((data != ',')&&(data != 0x0D))// ',' <20><><EFBFBD><EFBFBD> <20>س<EFBFBD>
{
if (Uart_Comm.rev_len < UP_BUF_SIZE * 2)
{
Uart_Comm.flow_count++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>ۼ<EFBFBD>
if ((data >= 0x30 && data <= 0x39) || (data >= 0x41 && data <= 0x46) || (data >= 0x61 && data <= 0x66))
{ //ֻѡ<D6BB><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-9 <20>ַ<EFBFBD> A-F <20><><EFBFBD><EFBFBD> a-f
Uart_Comm.rev_buf[Uart_Comm.rev_len++] = data;
}
}
else
{
Uart_Comm.rev_len = 0;
g_s_rev_state_coap = S0;
}
}
else
{
Uart_Comm.nb_data_type = NB_RCV_COAP_DATA;
SetUartCommRevFlag();
//Uart_Comm.hex_flag = DATATYPE_CHAR;
g_s_rev_state_coap = S0;
}
}
break;
default:
{
g_s_rev_state_coap = S0;
}
break;
}
}
static void AT_NBIOT_REV_MACHINE_MN316_ONENET(u8 data)
{
switch (g_s_rev_state_onenet)
{
case 0:
case S0:
{
if (data == '+')
{
g_s_rev_state_onenet = S1;
}
}
break;
case S1:
{
if (data == 'M')
{
g_s_rev_state_onenet = S2;
}
else g_s_rev_state_onenet=S0;
}
break;
case S2:
{
if (data == 'I')
{
g_s_rev_state_onenet = S3;
}
else g_s_rev_state_onenet=S0;
}
break;
case S3:
{
if (data == 'P')
{
g_s_rev_state_onenet = S4;
}
else g_s_rev_state_onenet=S0;
}
break;
case S4:
{
if (data == 'L')
{
g_s_rev_state_onenet = S5;
}
else g_s_rev_state_onenet=S0;
}
break;
case S5://<2F><><EFBFBD><EFBFBD> +MIPLWRITE<54>·<EFBFBD><C2B7><EFBFBD>ָ<EFBFBD><D6B8>
{
if (data == 'W') //<2F><><EFBFBD><EFBFBD> +MIPLWRITE<54>·<EFBFBD><C2B7><EFBFBD>ָ<EFBFBD><D6B8>
{
Uart_Comm.Onenet_type_down_order = ORDER_WRITE;
g_s_rev_state_onenet = S6;
}
else if (data == 'E') //<2F><><EFBFBD><EFBFBD> +MIPLEXCUTE<54>·<EFBFBD><C2B7><EFBFBD>ָ<EFBFBD><D6B8>
{
Uart_Comm.Onenet_type_down_order = ORDER_EXECUTE;
g_s_rev_state_onenet = S6_1;
}
else g_s_rev_state_onenet=S0;
}
break;
/*------------------------++MIPLWRITE<54><45><EFBFBD>̷<EFBFBD>֧---------------------------*/
case S6:
{
if (data == 'R') g_s_rev_state_onenet = S7;
else g_s_rev_state_onenet=S0;
}
break;
case S7:
{
if (data == 'I') g_s_rev_state_onenet = S8;
else g_s_rev_state_onenet=S0;
}
break;
/*------------------------+MIPLEXCUTE<54><45><EFBFBD>̷<EFBFBD>֧---------------------------*/
case S6_1:
{
if (data == 'X') g_s_rev_state_onenet = S7_1;
else g_s_rev_state_onenet=S0;
}
break;
case S7_1:
{
if (data == 'E') g_s_rev_state_onenet = S8_1;
else g_s_rev_state_onenet=S0;
}
break;
case S8_1:
{
if (data == 'C') g_s_rev_state_onenet = S9_1;
else g_s_rev_state_onenet=S0;
}
break;
case S9_1:
{
if (data == 'U') g_s_rev_state_onenet = S8;
else g_s_rev_state_onenet=S0;
}
break;
/*-------------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ˴<DAB4><CBB4><EFBFBD>ʦ---------------------------------------*/
case S8:
{
if (data == 'T') g_s_rev_state_onenet = S9;
else g_s_rev_state_onenet=S0;
}
break;
case S9:
{
if (data == 'E')
{
g_s_rev_state_onenet = S10;
}
else g_s_rev_state_onenet=S0;
}
break;
case S10:
{
if (data == ':')
{
g_s_rev_state_onenet = S11;
}
else g_s_rev_state_onenet=S0;
}
break;
case S11:
{
if (data == '0')
{
g_s_rev_state_onenet = S12;
}
}
break;
case S12:
{
if (data == ',') //<2F><>1<EFBFBD><31>','
{
g_s_rev_state_onenet = S13;
Uart_Comm.nbiot_rev_serial_number_cnt=0;
memset(Uart_Comm.nbiot_rev_serial_number,0,sizeof(Uart_Comm.nbiot_rev_serial_number));
}
}
break;
case S13:
{
if (data != ',')
{
if(Uart_Comm.nbiot_rev_serial_number_cnt >= sizeof(Uart_Comm.nbiot_rev_serial_number))
{
Uart_Comm.nbiot_rev_serial_number_cnt = 0;
g_s_rev_state_onenet = S0; //<2F>쳣--ʣ<>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>Ҫ<EFBFBD><D2AA>
break;
}
if(data >= 0x30 && data <= 0x39)
{
Uart_Comm.nbiot_rev_serial_number[Uart_Comm.nbiot_rev_serial_number_cnt++]=data;
}
}
else
{
Uart_Comm.nbiot_rev_serial_number_cnt = 0;
g_s_rev_state_onenet = S14; //<2F><>2<EFBFBD><32>','
}
}
break;
case S14:
{
if (data == ',') //<2F><>3<EFBFBD><33>','
{
if(Uart_Comm.Onenet_type_down_order == ORDER_WRITE)
g_s_rev_state_onenet = S15;
else if(Uart_Comm.Onenet_type_down_order == ORDER_EXECUTE ) //+MIPLEXCUTE <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
g_s_rev_state_onenet = S16;
}
}
break;
case S15:
{
if (data == ',')//<2F><>4<EFBFBD><34>','
{
g_s_rev_state_onenet = S16;
}
}
break;
case S16:
{
if (data == ',') //<2F><>5<EFBFBD><35>','
{
g_s_rev_state_onenet = S17;
}
}
break;
case S17:
{
if (data == ',')//<2F><>6<EFBFBD><36>','
{
g_s_rev_state_onenet = S18;
}
}
break;
case S18:
{
if (data == ',')//<2F><>7<EFBFBD><37>','
{
g_s_rev_state_onenet = S19;
Uart_Comm.rev_len=0;
}
}
break;
case S19://+MIPLWRITE <20><>','<27><><EFBFBD><EFBFBD> +MIPLEXCUTE<54>Իس<D4BB><D8B3><EFBFBD><EFBFBD><EFBFBD>
{
if ((data != ',')&&(data != 0x0D))// ',' <20><><EFBFBD><EFBFBD> <20>س<EFBFBD>
{
if (Uart_Comm.rev_len < UP_BUF_SIZE*2)
{
Uart_Comm.flow_count++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>ۼ<EFBFBD>
if((data >= 0x30 && data <= 0x39) || (data >= 0x41 && data <= 0x46) || (data >= 0x61 && data <= 0x66))
{ //ֻѡ<D6BB><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-9 <20>ַ<EFBFBD> A-F <20><><EFBFBD><EFBFBD> a-f
Uart_Comm.rev_buf[Uart_Comm.rev_len++] = data;
}
}
else
{
Uart_Comm.rev_len=0;
g_s_rev_state_onenet = S0;
}
}
else
{
Uart_Comm.nbiot_rev_ack = TRUE;//<2F><><EFBFBD><EFBFBD>дӦ<D0B4><D3A6>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetUartCommRevFlag();
//Uart_Comm.hex_flag = DATATYPE_CHAR;
g_s_rev_state_onenet = S0;
}
}
break;
default:
{
g_s_rev_state_onenet = S0;
}
break;
}
}
static void AT_NBIOT_REV_MACHINE(u8 data)
{
AT_NBIOT_REV_MACHINE_MN316_ONENET(data);
AT_NBIOT_REV_MACHINE_MN316_CTWing(data);
}
static void AT_QIOPEN_MACHINE(u8 data)
{
switch (g_s_rev_state)
{
case S0:
{
if (data == 'N') g_s_rev_state = S1;
else g_s_rev_state = S0;
}
break;
case S1:
{
if (data == 'S') g_s_rev_state = S2;
else g_s_rev_state = S0;
}
break;
case S2:
{
if (data == 'O') g_s_rev_state = S3;
else g_s_rev_state = S0;
}
break;
case S3:
{
if (data == 'C') g_s_rev_state = S4;
else g_s_rev_state = S0;
}
break;
case S4:
{
if (data == 'R') g_s_rev_state = S5;
else g_s_rev_state = S0;
}
break;
case S5:
{
if (data == ':') g_s_rev_state = S6;
else g_s_rev_state = S0;
}
break;
case S6:
{
if ((data >= '0')&& (data <= '9'))
{
tcp_socket_code = data;// - 0x30;
Uart_Comm.rev_ack_flag = UART_OK;
g_s_rev_state = S0; //<2F><><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>,<2C>ÿ<EFBFBD>״̬
}
else g_s_rev_state = S0;
}
break;
default:
{
g_s_rev_state = S0;
}
break;
}
}
static void AT_MIPLCREATEEX(u8 data) //+MIPLCREATEEX:0
{
switch (g_s_rev_state)
{
case S0:
{
if (data == 'C') g_s_rev_state = S1;
else g_s_rev_state = S0;
}
break;
case S1:
{
if (data == 'R') g_s_rev_state = S2;
else g_s_rev_state = S0;
}
break;
case S2:
{
if (data == 'E') g_s_rev_state = S3;
else g_s_rev_state = S0;
}
break;
case S3:
{
if (data == 'A') g_s_rev_state = S4;
else g_s_rev_state = S0;
}
break;
case S4:
{
if (data == 'T') g_s_rev_state = S5;
else g_s_rev_state = S0;
}
break;
case S5:
{
if (data == 'E') g_s_rev_state = S6;
else g_s_rev_state = S0;
}
break;
case S6:
{
if (data == 'E') g_s_rev_state = S7;
else g_s_rev_state = S0;
}
break;
case S7:
{
if (data == 'X') g_s_rev_state = S8;
else g_s_rev_state = S0;
}
break;
case S8:
{
if (data == ':') g_s_rev_state = S9;
else g_s_rev_state = S0;
}
break;
case S9://ֻ<><D6BB><EFBFBD><EFBFBD>0,6
{
if (data == '0')
{
Uart_Comm.rev_ack_flag = UART_OK;
// Uart_Comm.send_style = cst_AT_No_AT_MIPLDISCOVER; //ֱ<><D6B1><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>һ<EFBFBD><D2BB>״̬<D7B4><CCAC> AT_WAIT_MIPLDISCOVER
g_s_rev_state = S0; //<2F><><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>,<2C>ÿ<EFBFBD>״̬
}
else
{
g_s_rev_state = S0; //Bootstrap <20><><EFBFBD>̴<EFBFBD><CCB4><EFBFBD><EFBFBD>ɹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>
}
}
break;
default:
{
g_s_rev_state = S0;
}
break;
}
}
static void AT_MIPLOPEN_MACHINE(u8 data)
{
switch (g_s_rev_state)
{
case S0:
{
if (data == 'E') g_s_rev_state = S1;
else g_s_rev_state = S0;
}
break;
case S1:
{
if (data == 'V') g_s_rev_state = S2;
else g_s_rev_state = S0;
}
break;
case S2:
{
if (data == 'E') g_s_rev_state = S3;
else g_s_rev_state = S0;
}
break;
case S3:
{
if (data == 'N') g_s_rev_state = S4;
else g_s_rev_state = S0;
}
break;
case S4:
{
if (data == 'T') g_s_rev_state = S5;
else g_s_rev_state = S0;
}
break;
case S5:
{
if (data == ':') g_s_rev_state = S6;
else g_s_rev_state = S0;
}
break;
case S6:
{
if (data == '0') g_s_rev_state = S7;
}
break;
case S7:
{
if (data == ',') g_s_rev_state = S8;
else g_s_rev_state = S0;
}
break;
case S8://ֻ<><D6BB><EFBFBD><EFBFBD>0,6
{
if (data == '6')
{
Uart_Comm.rev_ack_flag = UART_OK;
Uart_Comm.send_style = cst_AT_No_AT_MIPLOBSERVE; //ֱ<><D6B1><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>һ<EFBFBD><D2BB>״̬<D7B4><CCAC> AT_WAIT_MIPLDISCOVER
g_s_rev_state = S0; //<2F><><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>,<2C>ÿ<EFBFBD>״̬
}
else
{
g_s_rev_state = S0; //Bootstrap <20><><EFBFBD>̴<EFBFBD><CCB4><EFBFBD><EFBFBD>ɹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>
}
}
break;
default:
{
g_s_rev_state = S0;
}
break;
}
}
static void AT_WAIT_MIPLOBSERVE(u8 data) //+MIPLOBSERVE:0,18938,1,3202,0,-1
{
static u8 wait_mipldiscover_state = S0;
// static u8 point_num;
switch (wait_mipldiscover_state)
{
case S0:
{
if (data == 'O') wait_mipldiscover_state = S1;
else wait_mipldiscover_state = S0;
}
break;
case S1:
{
if (data == 'B') wait_mipldiscover_state = S2;
else wait_mipldiscover_state = S0;
}
break;
case S2:
{
if (data == 'S') wait_mipldiscover_state = S3;
else wait_mipldiscover_state = S0;
}
break;
case S3:
{
if (data == 'E') wait_mipldiscover_state = S4;
else wait_mipldiscover_state = S0;
}
break;
case S4:
{
if (data == 'R') wait_mipldiscover_state = S5;
else wait_mipldiscover_state = S0;
}
break;
case S5:
{
if (data == 'V') wait_mipldiscover_state = S6;
else wait_mipldiscover_state = S0;
}
break;
case S6:
{
if (data == 'E')
{
memset(Uart_Comm.nbiot_discover_num,0,sizeof(Uart_Comm.nbiot_discover_num));
Uart_Comm.nbiot_discover_num[0] = '0';
Uart_Comm.rev_ack_flag = UART_OK;
wait_mipldiscover_state = S0;
}
else
{
Uart_Comm.rev_ack_flag = UART_ERROR;
wait_mipldiscover_state = S0; //<2F><><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>,<2C>ÿ<EFBFBD>״̬
}
}
break;
default:
{
wait_mipldiscover_state = S0;
}
break;
}
}
static void AT_NUWSTATS_MACHINE(u8 data)
{
switch (g_s_rev_state)
{
case S0: //RSRP
{
if(data == 'S')
{
g_s_rev_state = S1;
}
}
break;
case S1: //RSRP
{
if(data == 'r')
{
g_s_rev_state = S2;
}
}
break;
case S2: //RSRP
{
if(data == ':')
{
s_g_temp1=0;
memset(g_tmp_byte,0,sizeof(g_tmp_byte));
g_s_rev_state = S3;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S3: //RSRP
{
if(data == '\r')
{
sscanf(g_tmp_byte,"%d",&s_g_rsrp_value);
g_s_rev_state = S4;
}
else
{
if(((data >= '0') && (data <= '9')) || (data == '-'))
{
if(s_g_temp1 < 10)
{
g_tmp_byte[s_g_temp1++] = data;// - 0x30;
}
}
else
{
g_s_rev_state = S0;
}
}
}
break;
case S4: //Total power <20><><EFBFBD><EFBFBD>
{
if(data == ':')
{
g_s_rev_state = S5;
}
}
break;
case S5: //TX power <20><><EFBFBD><EFBFBD>
{
if(data == ':')
{
g_s_rev_state = S6;
}
}
break;
case S6: //+TX time: <20><><EFBFBD><EFBFBD>
{
if(data == ':')
{
g_s_rev_state = S7;
}
}
break;
case S7: //+RX time: <20><><EFBFBD><EFBFBD>
{
if(data == ':')
{
g_s_rev_state = S8;
}
}
break;
case S8: //+Cell ID:
{
if(data == 'I')
{
g_s_rev_state = S9;
}
}
break;
case S9: //+Cell ID:
{
if(data == 'D')
{
g_s_rev_state = S10;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S10: //+Cell ID:
{
if(data == ':')
{
s_g_temp1=0;
memset(g_tmp_byte,0,sizeof(g_tmp_byte));
g_s_rev_state = S11;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S11: //+Cell ID:
{
if(data == '\r')
{
memset(s_g_cell_id,0,sizeof(s_g_cell_id));
sscanf(g_tmp_byte,"%s",s_g_cell_id);
g_s_rev_state = S12;
}
else
{
if((data >= '0') && (data <= '9'))
{
if(s_g_temp1 < 10)
{
g_tmp_byte[s_g_temp1++] = data;// - 0x30;
}
}
else
{
g_s_rev_state = S0;
}
}
}
break;
case S12: //ECL:
{
if(data == 'L')
{
g_s_rev_state = S13;
}
}
break;
case S13: //ECL:
{
if(data == ':')
{
s_g_temp1=0;
memset(g_tmp_byte,0,sizeof(g_tmp_byte));
g_s_rev_state = S14;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S14://ECL:
{
if(data == '\r')
{
sscanf(g_tmp_byte,"%d",&s_g_ecl_value);
g_s_rev_state = S15;
}
else
{
if((data >= '0') && (data <= '9'))
{
if(s_g_temp1 < 10)
{
g_tmp_byte[s_g_temp1++] = data;
}
}
else
{
g_s_rev_state = S0;
}
}
}
break;
case S15: //+SNR:
{
if(data == 'R')
{
s_g_temp1=0;
g_s_rev_state = S16;
}
}
break;
case S16: //+SNR:
{
if(data == ':')
{
s_g_temp1=0;
memset(g_tmp_byte,0,sizeof(g_tmp_byte));
g_s_rev_state = S17;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S17://+SNR:
{
if(data == '\r')
{
sscanf(g_tmp_byte,"%d",&s_g_snr_value);
g_s_rev_state = S18;
}
else
{
if(((data >= '0') && (data <= '9')) || (data == '-'))
{
if(s_g_temp1 < 10)
{
g_tmp_byte[s_g_temp1++] = data;
}
}
else
{
g_s_rev_state = S0;
}
}
}
break;
case S18: //+EARFCN:
{
if(data == 'N')
{
g_s_rev_state = S19;
}
}
break;
case S19: //+EARFCN:
{
if(data == ':')
{
s_g_temp1=0;
memset(g_tmp_byte,0,sizeof(g_tmp_byte));
g_s_rev_state = S20;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S20://+EARFCN:
{
if(data == '\r')
{
sscanf(g_tmp_byte,"%d",&s_g_earfcn_value);
g_s_rev_state = S21;
}
else
{
if((data >= '0') && (data <= '9'))
{
if(s_g_temp1 < 10)
{
g_tmp_byte[s_g_temp1++] = data;
}
}
else
{
g_s_rev_state = S0;
}
}
}
break;
case S21: //+PCI:
{
if(data == 'I')
{
g_s_rev_state = S22;
}
}
break;
case S22: //+PCI:
{
if(data == ':')
{
s_g_temp1=0;
memset(g_tmp_byte,0,sizeof(g_tmp_byte));
g_s_rev_state = S23;
}
else
{
g_s_rev_state = S0;
}
}
break;
case S23://+PCI:
{
if(data == '\r')
{
sscanf(g_tmp_byte,"%d",&s_g_pci_value);
g_s_rev_state = S24;
}
else
{
if((data >= '0') && (data <= '9'))
{
if(s_g_temp1 < 10)
{
g_tmp_byte[s_g_temp1++] = data;
}
}
else
{
g_s_rev_state = S0;
}
}
}
break;
case S24://++RSRQ: <20><><EFBFBD><EFBFBD>
{
if (data == ':')
{
Uart_Comm.rev_ack_flag = UART_OK;
g_s_rev_state = S0;
}
}
break;
default:
break;
}
}
/**
<EFBFBD>ƶ<EFBFBD>ACKӦ<EFBFBD><EFBFBD>: +MIPLEVENT:0,26,7
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ACKӦ<EFBFBD><EFBFBD>: +MCWEVENT:9
*/
static u8 g_s_rev_ack_onenet_state=S0;
static void AT_NMGS_ACKID_MACHINE_ONENET(u8 data)
{
switch (g_s_rev_ack_onenet_state)
{
case S0:
{
if (data == ':') g_s_rev_ack_onenet_state = S1;
else g_s_rev_ack_onenet_state = S0;
} break;
case S1:
{
if (data == '0') g_s_rev_ack_onenet_state = S2;
else g_s_rev_ack_onenet_state = S0;
} break;
case S2:
{
if (data == ',') g_s_rev_ack_onenet_state = S3;
else g_s_rev_ack_onenet_state = S0;
} break;
case S3:
{
if (data == '2') g_s_rev_ack_onenet_state = S4;
else g_s_rev_ack_onenet_state = S0;
} break;
case S4:
{
if (data == '6') g_s_rev_ack_onenet_state = S5;
else g_s_rev_ack_onenet_state = S0;
} break;
case S5:
{
if (data == ',') g_s_rev_ack_onenet_state = S6;
else g_s_rev_ack_onenet_state = S0;
} break;
case S6:
{
if (data == '7')
{
FrameSetMsgApp(MsgNbUplaod_AckOk);
Uart_Comm.rev_ack_flag = UART_OK;
g_s_rev_ack_onenet_state = S0; //<2F><><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>,<2C>ÿ<EFBFBD>״̬
}
else
{
Uart_Comm.rev_ack_flag = UART_ERROR;
g_s_rev_ack_onenet_state = S0; //<2F><><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>,<2C>ÿ<EFBFBD>״̬
}
} break;
default:
{
g_s_rev_ack_onenet_state = S0;
}break;
}
}
/**
<EFBFBD>ƶ<EFBFBD>ACKӦ<EFBFBD><EFBFBD>: +MIPLEVENT:0,26,7
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ACKӦ<EFBFBD><EFBFBD>: +MCWEVENT:9
*/
static u8 g_s_rev_ack_coap_state=S0;
static void AT_NMGS_ACKID_MACHINE_COAP(u8 data)
{
switch (g_s_rev_ack_coap_state)
{
case S0:
{
if (data == 'E') g_s_rev_ack_coap_state = S1;
else g_s_rev_ack_coap_state = S0;
} break;
case S1:
{
if (data == 'V') g_s_rev_ack_coap_state = S2;
else g_s_rev_ack_coap_state = S0;
} break;
case S2:
{
if (data == 'E') g_s_rev_ack_coap_state = S3;
else g_s_rev_ack_coap_state = S0;
} break;
case S3:
{
if (data == 'N') g_s_rev_ack_coap_state = S4;
else g_s_rev_ack_coap_state = S0;
} break;
case S4:
{
if (data == 'T') g_s_rev_ack_coap_state = S5;
else g_s_rev_ack_coap_state = S0;
} break;
case S5:
{
if (data == ':') g_s_rev_ack_coap_state = S6;
else g_s_rev_ack_coap_state = S0;
} break;
case S6:
{
if (data == '9')//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳɹ<DDB3>
{
FrameSetMsgApp(MsgNbUplaod_AckOk);
Uart_Comm.rev_ack_flag = UART_OK;
g_s_rev_ack_coap_state = S0; //<2F><><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>,<2C>ÿ<EFBFBD>״̬
}
else//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ؿ<EFBFBD><D8BF><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OK<4F><4B>ERROR,<2C><><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
{
g_s_rev_ack_coap_state = S0;
}
} break;
default:
{
g_s_rev_ack_coap_state = S0;
}break;
}
}
static void AT_NMGS_ACKID_MACHINE(u8 data)
{
AT_NMGS_ACKID_MACHINE_COAP(data);
AT_NMGS_ACKID_MACHINE_ONENET(data);
}
u8 NbiotGetSocketCode(void)
{
return tcp_socket_code;
}
void NbiotGetDiscover_num(char *discover_num)
{
for(u8 i = 0; i < sizeof(Uart_Comm.nbiot_discover_num); i++)
{
*(discover_num+i) = Uart_Comm.nbiot_discover_num[i];
}
}
void NbiotGetWriteAck_num (char *ack_num)
{
for(u8 i = 0; i < sizeof(Uart_Comm.nbiot_rev_serial_number); i++)
{
*(ack_num+i) = Uart_Comm.nbiot_rev_serial_number[i];
}
}
u8 NbiotGetRevAck (void)
{
return Uart_Comm.nbiot_rev_ack;
}
//
//
u8 NbiotGetOnenetTypeDownOrder (void)
{
return Uart_Comm.Onenet_type_down_order;
}
//
void ClearNbiotGetRevAck (void)
{
Uart_Comm.nbiot_rev_ack = FALSE;
}
void NbiotGetRSRP(s16 *rsrp_data)
{
*rsrp_data = s_g_rsrp_value;
}
void NbiotGetSNR(s16 *snr_data)
{
*snr_data = s_g_snr_value;
}
void NbiotGetCell_ID(u8 *cell_id_data)
{
u8 i=0;
u32 temp_cellid=0;
u8 temp_cellidbuf[CELL_ID_SIZE];
u8 temp_cellidbuf1[CELL_ID_SIZE];
for(i=0;i<CELL_ID_SIZE;i++)
{
if((s_g_cell_id[i]>=0x30)&&(s_g_cell_id[i]<=0x39))
{
temp_cellid += (s_g_cell_id[i]-0x30);
temp_cellid *=10;
}
temp_cellidbuf[i]=0;
temp_cellidbuf1[i]=0;
}
temp_cellid /= 10;//ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>0
for(i=0;i<CELL_ID_SIZE;i++)
{
if((temp_cellid&0x0F)<=9)
{
temp_cellidbuf[i] = '0'+(temp_cellid&0x0F);
}
else
{
temp_cellidbuf[i] = 'a'+(temp_cellid&0x0F)-10;
}
temp_cellid >>=4;
}
for(i=0;i<CELL_ID_SIZE;i++)
{
temp_cellidbuf1[9-i] = temp_cellidbuf[i];
}
for(i = 0; i < CELL_ID_SIZE; i++)
{
*(cell_id_data+i) = temp_cellidbuf1[i];
}
}
void NbiotGetPCI(u16 *pci_data)
{
*pci_data = s_g_pci_value;
}
void SetUartCommRevFlag (void)
{
Uart_Comm.nbiot_rev_flag = TRUE;
}
void NbiotGetEARFCN(u16 *earfcn_data)
{
*earfcn_data = s_g_earfcn_value;
}
//udp<64><70>ʼ<EFBFBD><CABC>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
void UdpStartCheckData(void)
{
udp_check_rev_data_flag = TRUE;
}
//udp<64><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
void UdpEndCheckData(void)
{
udp_check_rev_data_flag = FALSE;
}
//udp<64>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 UdpIfNeedReadDataY7028(u8 connect_type)
{
if(connect_type == NBIOT_CONNECT_UDP1)
{
return Uart_Comm.udp_rev_data_hint;
}
return Uart_Comm.udp_rev_data_hint;
/*else
{
return Uart_Comm.tcp_rev_data_hint;
}*/
}
u8 UdpIfNeedReadData(void)
{
return (Uart_Comm.udp_rev_data_hint);
}
//<2F><><EFBFBD><EFBFBD>udp/Tcp<63><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>־
void ClearUdpReadDataFlag(u8 connect_type)
{
if(connect_type == NBIOT_CONNECT_UDP1)
{
Uart_Comm.udp_rev_data_hint = FALSE;
}
/*else
{
Uart_Comm.tcp_rev_data_hint = FALSE;
}*/
}
//<2F><>ȡ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 GetRcvDataType(void)
{
return Uart_Comm.nb_data_type;
}
void NbiotGetCSQ(u8 *csq_data)
{
*csq_data = g_csq_value;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetRcvDataType(u8 temp_type)
{
Uart_Comm.nb_data_type = temp_type;
}
u8 NbiotGetNBAND(void)
{
return s_g_band_value;
}
#ifdef __cplusplus
}
#endif
#endif