#ifndef __BC25_WORK_H__ #define __BC25_WORK_H__ #include "define.h" #include "user_uart.h" #include "bc25.h" #define BC25_AT_TIMEOUT_COUNT 60000 #define BC25_OPEN_TIMEOUT WORK_INTERVAL*2 #define BC25_Send_String UartSendString #define BC25_Send_Hex UartSendHex #define BC25_RST_LOW nrf_gpio_pin_write(BC25_RST, 0); #define BC25_RST_HIGH nrf_gpio_pin_write(BC25_RST, 1); #define BC25_PWR_LOW nrf_gpio_pin_write(BC25_PWRKEY, 0); #define BC25_PWR_HIGH nrf_gpio_pin_write(BC25_PWRKEY, 1); #define BC25_PSM_INT_LOW nrf_gpio_pin_write(BC25_PSM_INT, 0); #define BC25_PSM_INT_HIGH nrf_gpio_pin_write(BC25_PSM_INT, 1); typedef enum { BC25_POWER_OFF=0, //硬件断电 BC25_POWER_ON, //硬件上电 BC25_BOOT, //硬件开机 BC25_RESET, //硬件复位 BC25_NRB, //软件复位 BC25_EXIT_SLEEP, //从休眠唤醒模块 BC25_QSCLK_ON, //启动休眠 BC25_QSCLK_OFF, //关闭休眠 BC25_QSCLK_CHECK, //查询休眠设置 BC25_QPOWD, //模块关机/重启指令 BC25_QPOWD_DELAY, //模块关机指令等待 BC25_NO_REG, //未激活 BC25_AT, //检查AT指令是否正常 // BC25_IPR_CHECK, //检查波特率 // BC25_IPR_SET, //设置波特率 BC25_ATI, //查询估计版本 BC25_ATE, //回显设置 BC25_CMEE, //错误日志设置 BC25_CPIN, //查询USIM卡状态 BC25_IMEI, //获取IMEI号 BC25_CCID, //获取CCID号 BC25_IMSI, //获取IMSI号 BC25_QATWAKEUP, //模块从深休眠唤醒时上报URC指示20 BC25_QNBIOTEVENT, //设置psm模式进入显示 BC25_CSCON_SET, //使能URC上报功能 BC25_CEDRX_OFF, //关闭edrx功能 BC25_PSM_OFF, //关闭psm模式 BC25_PSM_CHECK, //查询psm设置 BC25_PSM_SET, //设置psm模式 BC25_EDRX_CHECK, //查询eDRX设置 BC25_EDRX_SET, //设置eDRX模式 BC25_CBC, //查询模组输入电压 BC25_CSQ, //查询网络信号值 BC25_CGATT_CHECK, //检查入网状态 BC25_CGATT_ON, //设置入网 BC25_CESQ, //获取扩展信号质量30 BC25_CEREG_SET, //设置查询基站功能 BC25_CEREG_CHECK, //查询基站 BC25_CGPADDR, //查询IP BC25_QENG, //查询网络服务信息 BC25_CFUN_CHECK, //查询当前功能模式 BC25_CFUN_MINI, //设置最小功能模式 BC25_CFUN_ALL, //设置全功能模式 BC25_NCSEARFCN, //清除频点 BC25_TIME, //获取时间 BC25_PSM_DELAY, //等待进入PSM BC25_PSM_WORKING, //进入PSM模式 /****电信IoT****/ BC25_NCDPOPEN, //发起连接 BC25_NCDPCLOSE, //断开连接 BC25_NMGS, //发送数据 BC25_NMGSING, //发送数据中 BC25_NNMI, //配置数据接收为只吐模式 BC25_NCFG_LIFETIME, //配置生命周期 BC25_NCFG_WAKEUP, //配置深度睡眠唤醒回复功能 BC25_NMSTATUS, //查询注册状态 /*oneNET*/ BC25_MIPLCONFIG_CHECK, //查询OneNET bootsrap设置 BC25_MIPLCONFIG_SET, //设置bootsrap BC25_MIPLCREATE, //创建通讯套件 BC25_MIPLDELETE, //删除通讯套件 BC25_MIPLADDOBJ, //添加对象和实例 BC25_MIPLDELOBJ, //删除对象和实例 BC25_MIPLOPEN, //注册 BC25_MIPLCLOSE, //注销 BC25_ONENET_OPENING, //OneNet平台注册中 BC25_ONENET_OPEN_RESTART, //OneNet注册重启等待 BC25_ONENET_OPENED, //OneNet平台注册成功 BC25_MIPLDISCOVERRSP, //资源发现操作 BC95_MIPLDISCOVERRSPING, //资源发现操作中 BC25_MIPLOBSERVERSP, //订阅资源发现操作 BC95_MIPLOBSERVERSPING, //订阅资源发现操作中 BC25_MIPLREADRSP, //读请求操作 BC25_MIPLWRITERSP, //写请求操作 BC25_MIPLEXECUTERSP, //执行请求操作 BC25_MIPLPARAMETERRSP, //设置请求操作 BC25_MIPLNOTIFY, //数据上报 BC25_MIPLNOTIFING, //数据上报中 BC25_MIPLUPDATE, //更新注册 }BC25_NET_STATUS; typedef enum { BC25_QUEUE_TIME=0, BC25_QUEUE_INT=1, }BC25_QUEUE_TYPE; #define ONENET_PARAM_DEFAULT_CONFIG \ { \ .insCount=1, \ .insBitmap="1", \ .attrCount=4, \ .actCount=1, \ .objid=3300, \ .resid_u=5751, \ .resid_d=5750, \ .resid="5751;5750", \ .resid_len=9, \ } #define PSM_PARAM_DEFAULT_CONFIG \ { \ .stat=CPSMS_ON, \ .T3412="00100110",/*001=1小时,00110=6次,6小时*/ \ .T3324="00100001",/*001=1分钟,00001=1,1分钟*/ \ } typedef void (*bc25_work_finish_func)(void); typedef bool (*bc25_work_continue_func)(void); typedef void (*bc25_qpowd_func)(void); typedef struct { bool dev_reg; bool cfun_stat; bool alarm_stat; BC25_BAUD baud; bool usim_stat; bool boot_stat; bool reset_stat; bool psm_lock; bool bc25_work; bool sleep_mode; uint8_t wakeup_mode; bool cfun_mini_stat; uint16_t bat_voltage; bc25_work_finish_func finish_func; bc25_work_continue_func continue_func; BC25_NET_STATUS bc25_status; //BC25模块当前工作状态 BC25_NET_STATUS last_bc25_status; //执行完当前命令需返回的BC25状态 http_request_s http_request; //http请求值 uint8_t open_stat; //onenet open stat uint8_t onenet_discover_stat; //onenet发现资源 uint8_t onenet_observer_stat; //onenet订阅请求 uint8_t cgatt_timeout; //附着网络失败 bool net_work; //网络正常数据工作状态 uint32_t net_lifetime; //更新操作计时 uint8_t rst_delay; //重启延时 bool commercial_189; //是否电信商用平台 bool imsi_stat; //IMSI读取准备状态 bool edrx_stat; //EDRX设置状态 uint8_t gpio_set_stat; //gpio操作状态 uint8_t bc25_at_count; //模块AT检查次数 uint8_t cfun_timeout; //cfun操作失败次数 uint8_t error_count; //返回错误次数 char *bc25_tx_array; //发送数据的缓存位置 bool first_work; //模组第一次工作 bool heart_check; uint32_t heart_check_timeout; //心跳包延时检查 net_type_e net_type; //网络制式 bool net_type_error; //网络制式错误 bool net_connect_error; //联网错误 bool cclk_save; //是否保存时间戳 uint8_t iot_open_timeout; //连接超时 bool qpowd_func_stat; bc25_qpowd_func qpowd_func; //关机执行 uint8_t mipconfig_stat; //mipconfig状态查询 uint8_t mipconfig_set; //mipconfig设置步骤 uint8_t bootstrap_timeout; //bootstrap失败次数 }BC25_STRUCT; void bc25_struct_Init(void); void bc25_timers_init(void); void BC25_GPIO_Init(void); void bc25_work_start(void); void bc25_work_stop(void); void BC25_Data_Check(char *str); void Set_Bc25_Queue(BC25_QUEUE_TYPE type); void Set_Bc25_Reg_Stat(bool stat); void Set_Bc25_Commercial_189(bool stat); void Set_Bc25_work_finish_func(bc25_work_finish_func func); void Set_Bc25_work_continue_func(bc25_work_continue_func func); void Set_Bc25_txAarry_byte(char *byte); void Set_Bc25_netType(net_type_e net_type); void bc25_powerdown(bc25_qpowd_func func); extern BC25_STRUCT bc25_struct; extern uint32_t unixtime; #endif //__BC25_WORK_H__