#ifndef __BC26_WORK_H__ #define __BC26_WORK_H__ #include "define.h" #include "user_uart.h" #include "bc26.h" #define BC26_AT_TIMEOUT_COUNT 60000 #define BC26_OPEN_TIMEOUT WORK_INTERVAL*2 #define BC26_Send_String UartSendString #define BC26_Send_Hex UartSendHex #define BC26_RST_LOW nrf_gpio_pin_write(BC26_RST, 0); #define BC26_RST_HIGH nrf_gpio_pin_write(BC26_RST, 1); #define BC26_PWR_LOW nrf_gpio_pin_write(BC26_PWRKEY, 0); #define BC26_PWR_HIGH nrf_gpio_pin_write(BC26_PWRKEY, 1); #define BC26_PSM_INT_LOW nrf_gpio_pin_write(BC26_PSM_INT, 0); #define BC26_PSM_INT_HIGH nrf_gpio_pin_write(BC26_PSM_INT, 1); typedef enum { BC26_POWER_OFF=0, //硬件断电 BC26_POWER_ON, //硬件上电 BC26_BOOT, //硬件开机 BC26_RESET, //硬件复位 BC26_NRB, //软件复位 BC26_EXIT_SLEEP, //从休眠唤醒模块 BC26_QSCLK_ON, //启动休眠 BC26_QSCLK_OFF, //关闭休眠 BC26_QSCLK_CHECK, //查询休眠设置 BC26_QPOWD, //模块关机/重启指令 BC26_NO_REG, //未激活 BC26_NO_SIM, //无SIM卡 BC26_AT, //检查AT指令是否正常 BC26_IPR_CHECK, //检查波特率 BC26_IPR_SET, //设置波特率 BC26_ATI, //查询估计版本 BC26_ATE, //回显设置 BC26_CMEE, //错误日志设置 BC26_CPIN, //查询USIM卡状态 BC26_IMEI, //获取IMEI号 BC26_CCID, //获取CCID号 BC26_IMSI, //获取IMSI号 BC26_QATWAKEUP, //模块从深休眠唤醒时上报URC指示20 BC26_QNBIOTEVENT, //设置psm模式进入显示 BC26_CSCON_SET, //使能URC上报功能 BC26_PSM_OFF, //关闭psm模式 BC26_PSM_CHECK, //查询psm设置 BC26_PSM_SET, //设置psm模式 BC26_EDRX_CHECK, //查询eDRX设置 BC26_EDRX_SET, //设置eDRX模式 BC26_CBC, //查询模组输入电压 BC26_CSQ, //查询网络信号值 BC26_CGATT_CHECK, //检查入网状态 BC26_CGATT_ON, //设置入网 BC26_CESQ, //获取扩展信号质量30 BC26_CEREG_SET, //设置查询基站功能 BC26_CEREG_CHECK, //查询基站 BC26_CGDCONT_CHECK, // BC26_CGPADDR, //查询IP BC26_QENG, //查询网络服务信息 BC26_CFUN_CHECK, //查询当前功能模式 BC26_CFUN_MINI, //设置最小功能模式 BC26_CFUN_ALL, //设置全功能模式 BC26_NCSEARFCN, //清除频点 BC26_TIME, //获取时间 BC26_PSM_DELAY, //等待进入PSM BC26_PSM_WORKING, //进入PSM模式 // BC26_NCONFIG_CHECK=20, //查询是否自动联网 // BC26_NCONFIG_SET=21, //设置自动联网 // BC26_QREGSWT_CHECK=22, //查询自动入电信网设置 // BC26_QREGSWT_SET=23, //设置自动入电信网 // BC26_NCDP_CHECK=24, //查询NB服务器设置 // BC26_NCDP_SET=25, //设置NB服务器 // BC26_DATA_READY, //数据准备 // BC26_SEND_ACT, //触发数据传送 /*电信*/ BC26_QLWSERV, //配置IOT平台的IP和PORT BC26_QLWCONF, //配置注册参数 BC26_QLWADDOBJ_00, //添加LwM2M对象 BC26_QLWADDOBJ_10, //添加LwM2M对象 BC26_QLWDELOBJ, //删除LwM2M对象 BC26_QLWOPEN, //连接IOT平台 BC26_QLWOPEN_DELAY, //连接等待 BC26_QLWUPDATE, //更新连接参数 BC26_QLWCLOSE, //关闭连接 BC26_QLWDATASEND, //发送数据 BC26_QLWCFG, //配置数据格式 BC26_QLWDATASTATUS, //数据发送状态查询 BC26_QLWDATASEND_DELAY, //数据发送等待 /*LwM2M*/ BC26_QLACFG_PLATFORM, //配置可选注册参数 BC26_QLACFG_LIFTTIME, //配置可选注册参数 // BC26_QLACFG_CHECK, //查询可选注册参数 BC26_QLACONFIG_SET, //配置注册参数 // BC26_QLACONFIG_CHECK, //查询注册参数 BC26_QLAADDOBJ_00, //添加LwM2M对象 BC26_QLAADDOBJ_10, //添加LwM2M对象 BC26_QLADELOBJ, //删除LwM2M对象 BC26_QLAREG, //发送注册请求 BC26_QLADEREG, //发送注销请求 BC26_QLAUPDATE, //发送更新请求 BC26_QLARECOVER, //手动恢复LwM2M会话 BC26_QLASTATUS, //查询当前LwM2M状态 BC26_QLAOBSRSP, //响应订阅请求 BC26_QLANOTIFY, //上报订阅资源数据 /*oneNET*/ BC26_MIPLCONFIG_CHECK, //查询OneNET bootsrap设置 BC26_MIPLCONFIG_SET, //设置bootsrap BC26_MIPLCREATE, //创建通讯套件 BC26_MIPLDELETE, //删除通讯套件 BC26_MIPLADDOBJ, //添加对象和实例 BC26_MIPLDELOBJ, //删除对象和实例 BC26_MIPLOPEN, //注册 BC26_MIPLCLOSE, //注销 BC26_ONENET_OPENING, //OneNet平台注册中 BC26_ONENET_OPENED, //OneNet平台注册成功 BC26_MIPLDISCOVERRSP, //资源发现操作 BC26_MIPLDISCOVERRSPING, //资源发现操作中 BC26_MIPLOBSERVERSP, //订阅资源发现操作 BC26_MIPLOBSERVERSPING, //订阅资源发现操作中 BC26_MIPLREADRSP, //读请求操作 BC26_MIPLWRITERSP, //写请求操作 BC26_MIPLEXECUTERSP, //执行请求操作 BC26_MIPLPARAMETERRSP, //设置请求操作 BC26_MIPLNOTIFY, //数据上报 BC26_MIPLNOTIFING, //数据上报中 BC26_MIPLUPDATE, //更新注册 }BC26_NET_STATUS; typedef enum { BC26_QUEUE_TIME=0, BC26_QUEUE_INT=1, }BC26_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 (*bc26_work_finish_func)(void); typedef bool (*bc26_work_continue_func)(void); typedef void (*bc26_work_mcu_rst_func)(void); typedef void (*bc26_work_power_func)(bool stat); typedef bool (*bc26_work_check_func)(BC26_NET_STATUS net_stat); typedef uint16_t(*bc26_work_server_data_func)(char *str,bool isbase64); typedef struct { bool cfun_stat; bool alarm_stat; BC26_BAUD baud; bool usim_stat; bool boot_stat; bool reset_stat; bool psm_lock; bool bc26_work; bool sleep_mode; uint8_t wakeup_mode; bool cfun_mini_stat; uint16_t bat_voltage; bc26_work_finish_func finish_func; bc26_work_continue_func continue_func; bc26_work_power_func power_func; bc26_work_check_func check_func; //BC26硬件自检结束返回 bc26_work_mcu_rst_func mcu_rst_func; //芯片复位 bc26_work_server_data_func server_data_func; //数据生成 BC26_NET_STATUS bc26_status; //BC26模块当前工作状态 BC26_NET_STATUS last_bc26_status; //执行完当前命令需返回的BC26状态 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; //网络正常数据工作状态 bool onenet_close; //需重置onenet连接 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 bc26_at_count; //模块AT检查次数 uint8_t cfun_timeout; //cfun操作失败次数 uint8_t error_count; //返回错误次数 uint8_t sim_check_count; //sim卡检测失败次数 char *bc26_tx_array; //发送数据的缓存位置 bool first_work; //模组第一次工作 bool heart_check; bool cclk_save; net_type_e net_type; //网络制式 bool net_type_error; //网络制式错误 bool net_connect_error; //联网错误 }BC26_STRUCT; void bc26_struct_Init(void); void bc26_timers_init(void); void BC26_GPIO_Init(void); void bc26_work_start(void); void bc26_work_stop(void); void BC26_Data_Check(char *str); void Set_Bc26_Queue(BC26_QUEUE_TYPE type); void Set_Bc26_Reg_Stat(bool stat); void Set_Bc26_Commercial_189(bool stat); void Set_Bc26_work_finish_func(bc26_work_finish_func func); void Set_Bc26_work_continue_func(bc26_work_continue_func func); void Set_Bc26_work_mcu_rst_func(bc26_work_mcu_rst_func func); void Set_Bc26_txAarry_byte(char *byte); void Set_Bc26_work_power_func(bc26_work_power_func func); void Set_Bc26_work_check_func(bc26_work_check_func func); void Set_Bc26_work_server_data_func(bc26_work_server_data_func func); extern BC26_STRUCT bc26_struct; extern uint32_t unixtime; #endif //__BC26_WORK_H__