| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383 |
- #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
|