#ifndef __NB_H__ #define __NB_H__ #include "stdint.h" #include "base_types.h" #ifdef __cplusplus extern "C" { #endif #define NB_RXLEN_MAX (1024) #define NB_TXLEN_MAX (1024) #define NB_REC_DELAY_TICK 100 // 等待接收时间节拍 100ms #define MB_MAX_RETRY_GATT_QUERY_TIME 4 #define QUERY_RETRY_TIME 90 #define NB_FLAG_ARG_VLD (0x0001u) #define NB_AT "AT\r\n" #define NB_AT_ACK "OK" // AT rsp: OK #define NB_ATI "ATI\r\n" // ATI rsp: Revision:BC28CNSCLR01A04 #define NB_ATE0 "ATE0\r\n" #define NB_ATE0_ACK NB_AT_ACK // ATE0 rsp: ATE0 \r\nOK #define NB_ATE1 "ATE1\r\n" #define NB_CGATT "AT+CGATT=1\r\n" #define NB_CGATT_ACK NB_AT_ACK // AT+CGATT? rsp: +CGATT:1\r\nOK #define NB_CGATT_QUERY "AT+CGATT?\r\n" #define NB_CGATT_QUERY_ACK "+CGATT: 1" // AT+CGATT? rsp: +CGATT:1\r\nOK #define NB_CFUN_QUERY "AT+CFUN?\r\n" #define NB_CFUN0 "AT+CFUN=0\r\n" #define NB_CFUN1 "AT+CFUN=1\r\n" #define NB_NCSEARFCN "AT+NCSEARFCN\r\n" #define NB_CMEE_QUERY "AT+CMEE?\r\n" // AT+CMEE? rsp: +CMEE:0\r\nOK CURITY_PMU_POWER_ON_RESET\r\nOK #define NB_CMEE0 "AT+CMEE=0\r\n" #define NB_CMEE1 "AT+CMEE=1\r\n" #define NB_CMEE_ACK NB_AT_ACK // rsp: OK #define NB_CGPADDR "AT+CGPADDR\r\n" #define NB_CGPADDR_ACK "+CGPADDR:0" //+CGPADDR:0,56.212.216.60 \r\nOK #define NB_CGSN "AT+CGSN=1\r\n" #define NB_CGSN_ACK "+CGSN:" //+CGSN:864490066795103 \r\nOK #define NB_CIMI "AT+CIMI\r\n" // AT+CIMI rsp: 460113030153660 \r\nOK #define NB_NCCID "AT+QCCID\r\n" // different from bc28 AT+NCCID #define NB_NCCID_ACK "+QCCID:" //+QCCID:89861124205002135676 \r\n OK #define NB_NUESTATS "AT+NUESTATS=CELL\r\n" #define NB_NUESTATS_ACK "NUESTATS:CELL" // NUESTATS:CELL,2504,331,1,-550,-47,-503,186 \r\nOK #define NB_NNMI "AT+NNMI=0\r\n" #define NB_NNMI_ACK NB_AT_ACK //+NNMI:1 \r\nOK #define NB_NCDP "AT+NCDP=221.229.214.202,5683\r\n" #define NB_NCDP_ACK NB_AT_ACK #define NB_QCFG "AT+QCFG=\"LWM2M/lifetime\",900\r\n" #define NB_QCFG_ACK NB_AT_ACK #define NB_QREGSWT "AT+QREGSWT=1\r\n" #define NB_QREGSWT_ACK NB_AT_ACK // #define NB_NMGS "AT+NMGS=" #define NB_NMGS "AT+QLWULDATA=" #define NB_NMGS_ACK "+NNMI:" #define NB_CSQ "AT+CSQ\r\n" #define NB_CSQ_ACK "+CSQ:" //+CSQ:31,99 \r\nOK #define NB_CEREG "AT+CEREG?\r\n" // AT+CEREG? rsp: +CEREG:0,1 \r\nOK #define NB_CLOSEAUTOCON "AT+NCONFIG=AUTOCONNECT,FALSE\r\n" #define NB_NRB "AT+NRB\r\n" #define NB_CEDRXS "AT+CEDRXS=0,5\r\n" #define NB_CPSMS "AT+CPSMS=0\r\n" #define NB_SUBSCRIBE_SUCCESS "+QLWEVTIND:3" #define NB_NMGR "AT+NMGR\r\n" #define NB_CHECK_REG_STA "AT+NMSTATUS?\r\n" // 查询当前注册状态 #define NB_CHECK_REG_ACK "+NMSTATUS:1" // 返回注册状态关键字,第1个字段==1表示注册成功 #define NB_QLWCFG "AT+QLWCFG=1,1\r\n" #define NB_QLINIT "AT+QLINIT=1\r\n" #define NB_QLWEVTIND_SET "AT+QLWEVTIND=1,255\r\n" // 查询当前注册状态 // #define NB_CHECK #define NB_UPLOAD_MANUAL 0x01 #define NB_UPLOAD_TIMER 0x02 #define NB_UPLOAD_REPT 0x04 // 1小时补报 #define NB_UPLOAD_SETTLE_DAY 0x08 // 结算日上报 #define NB_UPLOAD_ERR 0x10 #define NB_UPLOAD_DMA 0x20 #define NB_VOID_UPLOAD_TIME 120 typedef enum en_at_num { at_ati = 0x0000u, at_cgsn = 0x0001u, at_cimi = 0x0002u, at_csq = 0x0003u, at_cgpaddr = 0x0004u, at_cfun = 0x0005u, at_cereg = 0x0006u, at_nccid = 0x0007u, at_nuestats = 0x0008u, at_end } en_at_num_t; enum { COAP_SAT = 0, // COAP模式启动NB COAP_AT = 1, // AT COAP_ATE0 = 2, // 关闭回显 COAP_CLOSEAUTOCON = 3, // 关闭自动连接 COAP_NCDP = 4, // 连接电信平台 COAP_QCFG = 5, COAP_QREGSWT = 6, COAP_NRB_0 = 7, // 软件启动模块 COAP_CFUN1 = 8, // COAP_CEDRXS = 9, // 关闭模块eDRX功能 COAP_PSM = 10, // 关闭模块PSM功能 COAP_CGATT = 11, // 注网命令 COAP_CGATT_QUERY = 12, // 检查是否成功入网 COAP_CFUN0 = 13, // COAP_NCSEARFCN = 14, // 清除先验频点 COAP_ERROR = 15, // 设置错误码 COAP_NNMI = 16, // 设置直吐模式 COAP_CGPADDR = 17, // 查询注网是否成功 COAP_IMEI = 18, // IMEI COAP_CIMI = 19, // CIMI COAP_ICCID = 20, // ICCID COAP_NUESTATS = 21, // 查询UE统计信息 COAP_CSQ = 22, // 查询信号值 COAP_WAIT_REG = 23, // 等待注册完成 COAP_QLWDATASEND = 24, // 发送数据 COAP_WAITCMD = 25, // 等待数据 COAP_DATADIS = 26, // 数据处理 COAP_CLOSEPOWER = 27, // 关闭NB电源 COAP_EXIT = 28 // 退出上报 }; typedef struct { boolean_t flag; // 正在上报标志, uint8_t mode; // 上报类型 // uint8_t regular_report_time[4][3]; // uint8_t sta;//上传是否成功标志 } NbUpload_t; typedef struct { uint16_t count; } NbUploadFail_t; typedef struct { uint32_t count; boolean_t flag; } TimedTask_t; typedef struct { uint8_t hour; uint8_t minute; uint8_t second; } TIME_DEF; typedef struct { uint8_t flag; // 1:需要补报,0:不补报 TIME_DEF time; // 时分秒 下次补报时间 } REPT_REPORT_DEF; typedef struct { // boolean_t rx_flag; uint8_t rx_over_time; uint8_t rx_buf[NB_RXLEN_MAX]; uint16_t rx_idx; char *ack; uint8_t tx_buf[NB_TXLEN_MAX]; en_at_num_t cur_at; uint8_t cur_state; // 当前状态 uint8_t reset_mcu_cnt; // 复位倒计时 uint16_t mid; NbUpload_t upload; // NbUploadFail_t fail; TimedTask_t task; // uint16_t open_time_out; // uint16_t reset_count; uint16_t bts_id; uint16_t physical_cell_id; int16_t rsrq; int16_t rsrp; int16_t rsrp_bak; int16_t snr; uint8_t rssi; char imsi[20]; char imei[20]; char ccid[32]; char ip[16]; uint8_t get_imei_flag; uint8_t get_imsi_flag; uint8_t get_ccid_flag; uint32_t status; uint16_t cur_afn; uint16_t get_patch_time_out; // uint8_t req_data[32]; // uint16_t req_data_len; // uint8_t cur_ver[4]; // uint8_t target_ver[4]; // uint32_t total_pack_bytes; // uint16_t per_pack_bytes; // uint16_t total_pack_num; // uint16_t pack_num; // uint16_t pack_crc; // uint16_t pack_data_crc; // uint16_t upgrade_data_ok; // uint16_t upgrade_data_rx_len; // uint16_t next_report_cnt; uint8_t get_patch_retry_cnt; // uint16_t void_load_timout; } Nb_Run_t; typedef struct { uint8_t start_date[3]; uint8_t end_date[3]; uint8_t total_num; uint8_t cur_num; } HOUR_REC_UPLOAD_DEF; typedef struct { // uint8_t init_flag; // uint8_t regular_runflag[4];//定时上报标志 // tm_t regular_time[4]; uint32_t err_mem_dat; // 错误上报保存错误码 uint8_t manual_runflag; // 手动上报标志 // uint8_t settlement_runflag;//结算日上报标志 uint8_t rept_runflag; // 重复上报标志 tm_t rept_time; // 重复上报时间 // HOUR_REC_UPLOAD_DEF hour_up; uint8_t rept_addr; } UPLOAD_DEF; #pragma pack(1) typedef struct { unsigned char prefix[2]; unsigned char head; unsigned char type; unsigned char addr[7]; unsigned char ctrl; unsigned char len[2]; unsigned char data[600]; } NbAppFrame_t; #pragma pack() extern Nb_Run_t NbRun; extern NbAppFrame_t NbAppFrame; extern void nb_run_init(void); extern void GetNbRun(Nb_Run_t **nb_run); extern void NbRxCh(uint8_t ch); extern void NbRxTimeout(void); extern void NbClrRxBuf(void); extern void NbHandler(void); extern void NbPowerOnCmd(uint8_t argc, char **argv); extern void NbPowerOffCmd(uint8_t argc, char **argv); extern void NbAtCmd(uint8_t argc, char **argv); extern void NbAtiCmd(uint8_t argc, char **argv); extern void NbAteCmd(uint8_t argc, char **argv); extern void NbCgattCmd(uint8_t argc, char **argv); extern void NbCfunCmd(uint8_t argc, char **argv); extern void NbNcsearfcnCmd(uint8_t argc, char **argv); extern void NbCmeeCmd(uint8_t argc, char **argv); extern void NbCgpaddrCmd(uint8_t argc, char **argv); extern void NbCgsnCmd(uint8_t argc, char **argv); extern void NbCimiCmd(uint8_t argc, char **argv); extern void NbNccidCmd(uint8_t argc, char **argv); extern void NbNuestatsCmd(uint8_t argc, char **argv); extern void NbNnmiCmd(uint8_t argc, char **argv); extern void NbNcdpCmd(uint8_t argc, char **argv); extern void NbNmgsCmd(uint8_t argc, char **argv); extern void NbCsqCmd(uint8_t argc, char **argv); extern void NbCeregCmd(uint8_t argc, char **argv); extern void NbCloseAutoCon(uint8_t argc, char **argv); extern void NbNrb(uint8_t argc, char **argv); extern void NbCedrxs(uint8_t argc, char **argv); extern void NbCpsms(uint8_t argc, char **argv); extern void NbShowrunCmd(uint8_t argc, char **argv); extern void NbUploadCmd(uint8_t argc, char **argv); extern uint32_t NbServerMsgValid(void); extern void NbBuildDataReport(void); extern void NbBuildSetIpAndPortRsp(void); extern void NbBuildSetReportPointRsp(int8_t ret); extern void NbBuildSetDmaReportPointRsp(int8_t ret); extern void NbBuildSetDateTimeRsp(int8_t ret); extern void NbBuildSetFlowAlarmThresRsp(int8_t ret); extern void NbBuildSetPressureAlarmThresRsp(int8_t ret); extern void NbBuildSetTempAlarmThresRsp(int8_t ret); extern void NbBuildSetSettleRsp(int8_t ret); extern void NbBuildSetBaseReadingRsp(int8_t ret); extern void NbBuildReadMonthRecordRsp(void); extern void NbBuildReportMonthRecord(void); extern void NbBuildReportDayRecord(void); extern void NbBuildReportHourRecord(uint8_t, uint8_t, uint8_t); extern void NbBuildReport5MinRecord(tm_t *); extern void NbBuildReportLogRecord(void); extern void NbBuildGetPackage(void); extern void NbBuildReportUpdateStatus(int8_t); extern int NbAppDataDispatch(void); extern void NbUploadFrame(void); extern void NbIotTimedTask(void); extern void NbOpenTimeOut(void); extern void NbSettleDayUpload(void); extern void NbNextReport(void); extern void nb_task_run_check(void); extern void update_rtc_run(void); extern void NbTread(void); extern int8_t at_cmd_send(uint8_t stat, char *cmd_str, char *ack, uint16_t retry_time, uint8_t time_out); extern uint8_t G_NB_CAN_DEEP_SLEEP; extern UPLOAD_DEF upload_dat; extern int8_t datecmp(tm_t date1, tm_t date2); extern char *get_upload_type_str(uint8_t type); extern void Debug_NB(void); extern void nb_set_para_rept(uint16_t dat_len, uint16_t afn, int8_t ret); // extern uint8_t G_TDC_CAN_DEEP_SLEEP; extern uint8_t NB_CHECK_TDC_COMPLETE_FLAG; // #ifdef DEBUG_LOG_WARM extern void Debug_log(void); extern uint8_t memstr_exist(uint8_t *, size_t, const char *, size_t); extern int8_t get_code(uint8_t *buf, const char *keyword, uint16_t dat_len, int16_t *ret); extern void save_datetime_from_at(uint8_t *buf, uint16_t dat_len); extern uint8_t get_nb_signal(uint8_t *buf, uint16_t dat_len); extern uint8_t check_sub_service_flag(void); extern uint8_t check_main_service_flag(void); extern int8_t at_cmd_send2(uint8_t stat, char *cmd_str, char *ack1, char *ack2, uint16_t retry_time, uint8_t time_out); // #endif #ifdef __cplusplus } #endif #endif