/*--------------------------------- 头文件包含区 -------------------------------------------------------*/
#include "main.h"
/*--------------------------------- 类型声明区 ---------------------------------------------------------*/
def_S_nbMapPara NBMap; //NB模块工作上报控制
def_S_nbRunPara NBRunPara; //NB运行控制
def_S_nbGNSSPara NBGNSS; //GPS控制相关 合并到NB运行控制
NB_MESSAGE1 NB_Message1; //NB参数
def_S_nbReportType NBReport; //事件上报类型
def_S_nbRepProtectType nbRepProtect;//定时上报保护
reissueType reissue;
report_timeType reportTime;
/*--------------------------------- 变量定义区 ---------------------------------------------------------*/
uint32_t Data_Key2[4]; //无用
uint8_t BC20Buff_512[512];
uint8_t reissueData[MAXREISSUECNT][REISSUEDATALEN]={{0},{0}}; //56==时间年月日时+4 /数据活动量+24/休息+12/反刍+12/发情标志+2/校验+2
uint16_t NBrunSec = 0; //整个注网过程时间
uint16_t NBrunSec_Rep = 0; //整个注网过程时间 上报上一次
uint8_t NBTmpBuff_256[256]={0};//处理数据缓存区
/*--------------------------------- 函数声明区 ---------------------------------------------------------*/
static void NB_bc20_powerOnH(void);
static void NB_bc20_powerOnL(void);
static bool NB_bc20_isOpenGNSS(void);
static bool NB_bc20_getIMEI(void);
static bool NB_bc20_getCSQ(void);
static bool NB_bc20_getSignal(void);
static bool NB_bc20_getCIMI(void);
static bool NB_bc20_getClk(void);
static void NB_bc20_conf(void);
static bool isTimeToReport(void);
static void NB_bc20_GPIO_Lp(void);
static void NB_bc20_stop(void);
static bool NB_bc20_recJudge(void);
static void NB_bc20_errJudge(void);
static void reportProtectReset(void);
static bool NB_bc20_getGPSData(void);
static void NB_bc20_SetTimer300(void);
static void NB_bc20_ATSendAgain(void);
static void NB_bc20_atSend(void);
static void reissue_DataDeal(void);
static void setIsReissueData(void);
static void NB_bc20_errStatusClear(void);
static void NB_bc20_checkHash(void);
/*--------------------------------- 常量定义区 ---------------------------------------------------------*/
static const char at_ok[] ="OK";
static const char at_error[] ="ERROR";
static const char at_sp_Rt[] ="oooopppp";//
static const char at_at[] ="AT\r\n";
static const char at_ati[] ="ATI\r\n";
static const char at_ate0[] ="ATE0\r\n"; //关闭回显
static const char at_qsclk[] = "AT+QSCLK=0\r\n"; //关闭睡眠功能
static const char at_cmee[] = "AT+CMEE=1\r\n"; //错误提示
static const char at_qnbiotevent[] = "AT+QNBIOTEVENT=1,1\r\n"; //平台错误提示
static const char at_cpin[] = "AT+CPIN?\r\n";//查询PIN信息
static const char at_cimi[] = "AT+CIMI\r\n"; //查询sim卡号
static const char at_cpsms0[] = "AT+CPSMS=0,,,\"01000111\",\"00100100\"\r\n";//设置PSM模式
static const char at_cgsn[] = "AT+CGSN=1\r\n";//查询模组号
static const char at_cgsn_Rt[] = "+CGSN:";
static const char at_cfun_q[] = "AT+CFUN?\r\n";
static const char at_cfun_Rt[] = "+CFUN: 1";
static const char at_cfun_e_1[] = "AT+CFUN=1\r\n";
static const char at_cfun_e_0[] = "AT+CFUN=0\r\n";
static const char at_cedrx[] = "AT+CEDRXS=0,5\r\n"; //关闭EDRX
static const char at_nband_q[] = "AT+QBAND?\r\n";
static const char at_nband_Rt[] = "+QBAND: 5\r\n";
static const char at_nband_e_5[] = "AT+QBAND=1,5\r\n";
static const char at_qeng[] = "AT+QENG=0\r\n"; //信号参数
static const char at_qeng_Rt[] = "+QENG:"; //信号参数
static const char at_csq[] = "AT+CSQ\r\n";//信号强度
static const char at_csq_Rt[] = "CSQ:";
static const char at_cereg_5[] = "AT+CEREG=5\r\n";
static const char at_cgatt_q[] = "AT+CGATT?\r\n";
static const char at_cgatt_Rt1[] = "\r\n+CGATT: 1";
static const char at_cereg_q[] = "AT+CEREG?\r\n";
static const char at_cereg_Rt[] = "+CEREG:";//?????
//static const char at_cereg_Rt1[] = ",1";
//static const char at_cereg_Rt5[] = ",5";
//static const char at_qlwuldtatex[] = "AT+QLWULDATAEX=";
//static const char at_qlwuldatastatus[] = "AT+QLWULDATASTATUS?";
//static const char at_qlwuldatastatus_Rt[] = "+QLWULDATASTATUS:4";
//static const char at_qlwuldatastatus_Rt2[] = "+QLWULDATASTATUS:2";
//static const char at_qlwuldatastatus_Rt3[] = "+QLWULDATASTATUS:3";
//static const char at_qlwuldatastatus_Rt5[] = "+QLWULDATASTATUS:5";
static const char at_ncsearfcn[] = "AT+QCSEARFCN\r\n"; //清除频点
static const char at_qrst[] = "AT+QRST=1\r\n";
const char at_reset[] = "AT+QPOWD=2\r\n";
//平台相关相关
static const char at_cgpaddr[] ="AT+CGPADDR=1\r\n"; //显示 PDP 分组数据协议 地址
static const char at_qlwserv[] ="AT+QLWSERV=\"117.60.157.137\",5683\r\n";//配置电信 loT 平台地址和端口
static const char at_qlwconf[] ="AT+QLWCONF=\"111111111111111\"\r\n";//设置登录模组号 862177041949176
static const char at_qlwaddobj[] ="AT+QLWADDOBJ=19,0,1,\"0\"\r\n";//添加 LwM2M 对象
static const char at_qlwaddobj1[] ="AT+QLWADDOBJ=19,1,1,\"0\"\r\n";//添加 LwM2M 对象
static const char at_qlwopen[] ="AT+QLWOPEN=0\r\n";//向电信 loT 平台发送注册请求 直吐模式
static const char at_qlwopen_ok[] ="CONNECT OK";
static const char at_qlwopen_fail[] ="CONNECT FAIL";
static const char at_Send_Data_95[] ="AT+QLWDATASEND=19,0,0,95,"; //发送数据 95长度
static const char at_Send_Data_183[] ="AT+QLWDATASEND=19,0,0,183,"; //发送数据 183长度
static const char at_Send_ok[] ="SEND OK"; //发送成功
static const char at_Send_fail[] ="SEND FAIL";
static const char at_sendconmes[] = ",0x0100\r\n";
static const char at_cclk[] = "AT+CCLK?\r\n"; //查询基站时间
static const char at_qlwcfg[] ="AT+QLWCFG=\"dataformat\",1,1\r\n";//设置数据格式
const char at_PlatRes_ok[] ="+QLWDATARECV"; //平台正常回复
const char at_qlwclose[] ="AT+QLWCLOSE\r\n"; //向电信 IoT 平台发送注销请求
const char at_qlwclose_ok[] ="CLOSE OK";
const char at_qlwdel[] ="AT+QLWDEL\r\n"; //删除 LwM2M 对象
const char at_qpowd[] ="AT+QPOWD=0\r\n";
//定位相关
static const char at_qgnssc_q[] = "AT+QGNSSC?\r\n"; //开启GNSS电源
static const char at_qgnssc_R1[] = "+QGNSSC: 1";
static const char at_qgnssc_R0[] = "+QGNSSC: 0";
static const char at_qgnssc1[] = "AT+QGNSSC=1\r\n"; //开启GNSS电源
static const char at_qgnssc0[] = "AT+QGNSSC=0\r\n"; //关闭GNSS电源
static const char at_qgnssrd[] = "AT+QGNSSRD=\"NMEA/RMC\"\r\n";
//任务相关
static const char rec_ok[] = "4F4B";
static const char rec_sj[] = "736A";
const def_S_nbRunMap NBPowerOnLinkmap[]=
{// atOperationID, NextCorrect, NextError, Sendbuff, RecCorrect, RecError RetryTimes, TimeOut, OperationFun,
{(uint8_t)AT_POWERON, AT_AT, AT_AT, NB_bc20_powerOnH, at_sp_Rt, at_sp_Rt, 1, 4, NULL},
{(uint8_t)AT_AT, AT_ATE0, AT_POWERON, NB_bc20_atSend, at_ok, at_sp_Rt, 15, DEF_TIMEOUT, NULL},
{(uint8_t)AT_ATE0, AT_ATI, AT_QRST, NB_bc20_atSend, at_ok, at_sp_Rt, DEF_RETRY, DEF_TIMEOUT, NULL},
{(uint8_t)AT_ATI, AT_NBANDQ, AT_QRST, NB_bc20_atSend, at_ok, at_sp_Rt, DEF_RETRY, DEF_TIMEOUT, NULL},
//是否开启卫星定位 开启定位时跳转到错误ID totalErrTimes地图总错误处理不能加 //跳转到卫星定位
//基本参数设置
{(uint8_t)AT_NBANDQ, AT_QSCLK, AT_NBAND, NB_bc20_atSend, at_nband_Rt, at_sp_Rt, DEF_RETRY, DEF_TIMEOUT, NULL},
{(uint8_
评论0