bc26_work.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. #ifndef __BC26_WORK_H__
  2. #define __BC26_WORK_H__
  3. #include "define.h"
  4. #include "user_uart.h"
  5. #include "bc26.h"
  6. #define BC26_AT_TIMEOUT_COUNT 60000
  7. #define BC26_OPEN_TIMEOUT WORK_INTERVAL*2
  8. #define BC26_Send_String UartSendString
  9. #define BC26_Send_Hex UartSendHex
  10. #define BC26_RST_LOW nrf_gpio_pin_write(BC26_RST, 0);
  11. #define BC26_RST_HIGH nrf_gpio_pin_write(BC26_RST, 1);
  12. #define BC26_PWR_LOW nrf_gpio_pin_write(BC26_PWRKEY, 0);
  13. #define BC26_PWR_HIGH nrf_gpio_pin_write(BC26_PWRKEY, 1);
  14. #define BC26_PSM_INT_LOW nrf_gpio_pin_write(BC26_PSM_INT, 0);
  15. #define BC26_PSM_INT_HIGH nrf_gpio_pin_write(BC26_PSM_INT, 1);
  16. typedef enum {
  17. BC26_POWER_OFF=0, //硬件断电
  18. BC26_POWER_ON, //硬件上电
  19. BC26_BOOT, //硬件开机
  20. BC26_RESET, //硬件复位
  21. BC26_NRB, //软件复位
  22. BC26_EXIT_SLEEP, //从休眠唤醒模块
  23. BC26_QSCLK_ON, //启动休眠
  24. BC26_QSCLK_OFF, //关闭休眠
  25. BC26_QSCLK_CHECK, //查询休眠设置
  26. BC26_QPOWD, //模块关机/重启指令
  27. BC26_NO_REG, //未激活
  28. BC26_NO_SIM, //无SIM卡
  29. BC26_AT, //检查AT指令是否正常
  30. BC26_IPR_CHECK, //检查波特率
  31. BC26_IPR_SET, //设置波特率
  32. BC26_ATI, //查询估计版本
  33. BC26_ATE, //回显设置
  34. BC26_CMEE, //错误日志设置
  35. BC26_CPIN, //查询USIM卡状态
  36. BC26_IMEI, //获取IMEI号
  37. BC26_CCID, //获取CCID号
  38. BC26_IMSI, //获取IMSI号
  39. BC26_QATWAKEUP, //模块从深休眠唤醒时上报URC指示20
  40. BC26_QNBIOTEVENT, //设置psm模式进入显示
  41. BC26_CSCON_SET, //使能URC上报功能
  42. BC26_PSM_OFF, //关闭psm模式
  43. BC26_PSM_CHECK, //查询psm设置
  44. BC26_PSM_SET, //设置psm模式
  45. BC26_EDRX_CHECK, //查询eDRX设置
  46. BC26_EDRX_SET, //设置eDRX模式
  47. BC26_CBC, //查询模组输入电压
  48. BC26_CSQ, //查询网络信号值
  49. BC26_CGATT_CHECK, //检查入网状态
  50. BC26_CGATT_ON, //设置入网
  51. BC26_CESQ, //获取扩展信号质量30
  52. BC26_CEREG_SET, //设置查询基站功能
  53. BC26_CEREG_CHECK, //查询基站
  54. BC26_CGDCONT_CHECK, //
  55. BC26_CGPADDR, //查询IP
  56. BC26_QENG, //查询网络服务信息
  57. BC26_CFUN_CHECK, //查询当前功能模式
  58. BC26_CFUN_MINI, //设置最小功能模式
  59. BC26_CFUN_ALL, //设置全功能模式
  60. BC26_NCSEARFCN, //清除频点
  61. BC26_TIME, //获取时间
  62. BC26_PSM_DELAY, //等待进入PSM
  63. BC26_PSM_WORKING, //进入PSM模式
  64. // BC26_NCONFIG_CHECK=20, //查询是否自动联网
  65. // BC26_NCONFIG_SET=21, //设置自动联网
  66. // BC26_QREGSWT_CHECK=22, //查询自动入电信网设置
  67. // BC26_QREGSWT_SET=23, //设置自动入电信网
  68. // BC26_NCDP_CHECK=24, //查询NB服务器设置
  69. // BC26_NCDP_SET=25, //设置NB服务器
  70. // BC26_DATA_READY, //数据准备
  71. // BC26_SEND_ACT, //触发数据传送
  72. /*电信*/
  73. BC26_QLWSERV, //配置IOT平台的IP和PORT
  74. BC26_QLWCONF, //配置注册参数
  75. BC26_QLWADDOBJ_00, //添加LwM2M对象
  76. BC26_QLWADDOBJ_10, //添加LwM2M对象
  77. BC26_QLWDELOBJ, //删除LwM2M对象
  78. BC26_QLWOPEN, //连接IOT平台
  79. BC26_QLWOPEN_DELAY, //连接等待
  80. BC26_QLWUPDATE, //更新连接参数
  81. BC26_QLWCLOSE, //关闭连接
  82. BC26_QLWDATASEND, //发送数据
  83. BC26_QLWCFG, //配置数据格式
  84. BC26_QLWDATASTATUS, //数据发送状态查询
  85. BC26_QLWDATASEND_DELAY, //数据发送等待
  86. /*LwM2M*/
  87. BC26_QLACFG_PLATFORM, //配置可选注册参数
  88. BC26_QLACFG_LIFTTIME, //配置可选注册参数
  89. // BC26_QLACFG_CHECK, //查询可选注册参数
  90. BC26_QLACONFIG_SET, //配置注册参数
  91. // BC26_QLACONFIG_CHECK, //查询注册参数
  92. BC26_QLAADDOBJ_00, //添加LwM2M对象
  93. BC26_QLAADDOBJ_10, //添加LwM2M对象
  94. BC26_QLADELOBJ, //删除LwM2M对象
  95. BC26_QLAREG, //发送注册请求
  96. BC26_QLADEREG, //发送注销请求
  97. BC26_QLAUPDATE, //发送更新请求
  98. BC26_QLARECOVER, //手动恢复LwM2M会话
  99. BC26_QLASTATUS, //查询当前LwM2M状态
  100. BC26_QLAOBSRSP, //响应订阅请求
  101. BC26_QLANOTIFY, //上报订阅资源数据
  102. /*oneNET*/
  103. BC26_MIPLCONFIG_CHECK, //查询OneNET bootsrap设置
  104. BC26_MIPLCONFIG_SET, //设置bootsrap
  105. BC26_MIPLCREATE, //创建通讯套件
  106. BC26_MIPLDELETE, //删除通讯套件
  107. BC26_MIPLADDOBJ, //添加对象和实例
  108. BC26_MIPLDELOBJ, //删除对象和实例
  109. BC26_MIPLOPEN, //注册
  110. BC26_MIPLCLOSE, //注销
  111. BC26_ONENET_OPENING, //OneNet平台注册中
  112. BC26_ONENET_OPENED, //OneNet平台注册成功
  113. BC26_MIPLDISCOVERRSP, //资源发现操作
  114. BC26_MIPLDISCOVERRSPING, //资源发现操作中
  115. BC26_MIPLOBSERVERSP, //订阅资源发现操作
  116. BC26_MIPLOBSERVERSPING, //订阅资源发现操作中
  117. BC26_MIPLREADRSP, //读请求操作
  118. BC26_MIPLWRITERSP, //写请求操作
  119. BC26_MIPLEXECUTERSP, //执行请求操作
  120. BC26_MIPLPARAMETERRSP, //设置请求操作
  121. BC26_MIPLNOTIFY, //数据上报
  122. BC26_MIPLNOTIFING, //数据上报中
  123. BC26_MIPLUPDATE, //更新注册
  124. }BC26_NET_STATUS;
  125. typedef enum
  126. {
  127. BC26_QUEUE_TIME=0,
  128. BC26_QUEUE_INT=1,
  129. }BC26_QUEUE_TYPE;
  130. #define ONENET_PARAM_DEFAULT_CONFIG \
  131. { \
  132. .insCount=1, \
  133. .insBitmap="1", \
  134. .attrCount=4, \
  135. .actCount=1, \
  136. .objid=3300, \
  137. .resid_u=5751, \
  138. .resid_d=5750, \
  139. .resid="5751;5750", \
  140. .resid_len=9, \
  141. }
  142. #define PSM_PARAM_DEFAULT_CONFIG \
  143. { \
  144. .stat=CPSMS_ON, \
  145. .T3412="00100110",/*001=1小时,00110=6次,6小时*/ \
  146. .T3324="00100001",/*001=1分钟,00001=1,1分钟*/ \
  147. }
  148. typedef void (*bc26_work_finish_func)(void);
  149. typedef bool (*bc26_work_continue_func)(void);
  150. typedef void (*bc26_work_mcu_rst_func)(void);
  151. typedef void (*bc26_work_power_func)(bool stat);
  152. typedef bool (*bc26_work_check_func)(BC26_NET_STATUS net_stat);
  153. typedef uint16_t(*bc26_work_server_data_func)(char *str,bool isbase64);
  154. typedef struct {
  155. bool cfun_stat;
  156. bool alarm_stat;
  157. BC26_BAUD baud;
  158. bool usim_stat;
  159. bool boot_stat;
  160. bool reset_stat;
  161. bool psm_lock;
  162. bool bc26_work;
  163. bool sleep_mode;
  164. uint8_t wakeup_mode;
  165. bool cfun_mini_stat;
  166. uint16_t bat_voltage;
  167. bc26_work_finish_func finish_func;
  168. bc26_work_continue_func continue_func;
  169. bc26_work_power_func power_func;
  170. bc26_work_check_func check_func; //BC26硬件自检结束返回
  171. bc26_work_mcu_rst_func mcu_rst_func; //芯片复位
  172. bc26_work_server_data_func server_data_func; //数据生成
  173. BC26_NET_STATUS bc26_status; //BC26模块当前工作状态
  174. BC26_NET_STATUS last_bc26_status; //执行完当前命令需返回的BC26状态
  175. http_request_s http_request; //http请求值
  176. uint8_t open_stat; //onenet open stat
  177. uint8_t onenet_discover_stat; //onenet发现资源
  178. uint8_t onenet_observer_stat; //onenet订阅请求
  179. uint8_t cgatt_timeout; //附着网络失败
  180. bool net_work; //网络正常数据工作状态
  181. bool onenet_close; //需重置onenet连接
  182. uint32_t net_lifetime; //更新操作计时
  183. uint8_t rst_delay; //重启延时
  184. bool commercial_189; //是否电信商用平台
  185. bool imsi_stat; //IMSI读取准备状态
  186. bool edrx_stat; //EDRX设置状态
  187. uint8_t gpio_set_stat; //gpio操作状态
  188. uint8_t bc26_at_count; //模块AT检查次数
  189. uint8_t cfun_timeout; //cfun操作失败次数
  190. uint8_t error_count; //返回错误次数
  191. uint8_t sim_check_count; //sim卡检测失败次数
  192. char *bc26_tx_array; //发送数据的缓存位置
  193. bool first_work; //模组第一次工作
  194. bool heart_check;
  195. bool cclk_save;
  196. net_type_e net_type; //网络制式
  197. bool net_type_error; //网络制式错误
  198. bool net_connect_error; //联网错误
  199. }BC26_STRUCT;
  200. void bc26_struct_Init(void);
  201. void bc26_timers_init(void);
  202. void BC26_GPIO_Init(void);
  203. void bc26_work_start(void);
  204. void bc26_work_stop(void);
  205. void BC26_Data_Check(char *str);
  206. void Set_Bc26_Queue(BC26_QUEUE_TYPE type);
  207. void Set_Bc26_Reg_Stat(bool stat);
  208. void Set_Bc26_Commercial_189(bool stat);
  209. void Set_Bc26_work_finish_func(bc26_work_finish_func func);
  210. void Set_Bc26_work_continue_func(bc26_work_continue_func func);
  211. void Set_Bc26_work_mcu_rst_func(bc26_work_mcu_rst_func func);
  212. void Set_Bc26_txAarry_byte(char *byte);
  213. void Set_Bc26_work_power_func(bc26_work_power_func func);
  214. void Set_Bc26_work_check_func(bc26_work_check_func func);
  215. void Set_Bc26_work_server_data_func(bc26_work_server_data_func func);
  216. extern BC26_STRUCT bc26_struct;
  217. extern uint32_t unixtime;
  218. #endif //__BC26_WORK_H__