bc25_work.h 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. #ifndef __BC25_WORK_H__
  2. #define __BC25_WORK_H__
  3. #include "define.h"
  4. #include "user_uart.h"
  5. #include "bc25.h"
  6. #define BC25_AT_TIMEOUT_COUNT 60000
  7. #define BC25_OPEN_TIMEOUT WORK_INTERVAL*2
  8. #define BC25_Send_String UartSendString
  9. #define BC25_Send_Hex UartSendHex
  10. #define BC25_RST_LOW nrf_gpio_pin_write(BC25_RST, 0);
  11. #define BC25_RST_HIGH nrf_gpio_pin_write(BC25_RST, 1);
  12. #define BC25_PWR_LOW nrf_gpio_pin_write(BC25_PWRKEY, 0);
  13. #define BC25_PWR_HIGH nrf_gpio_pin_write(BC25_PWRKEY, 1);
  14. #define BC25_PSM_INT_LOW nrf_gpio_pin_write(BC25_PSM_INT, 0);
  15. #define BC25_PSM_INT_HIGH nrf_gpio_pin_write(BC25_PSM_INT, 1);
  16. typedef enum {
  17. BC25_POWER_OFF=0, //硬件断电
  18. BC25_POWER_ON, //硬件上电
  19. BC25_BOOT, //硬件开机
  20. BC25_RESET, //硬件复位
  21. BC25_NRB, //软件复位
  22. BC25_EXIT_SLEEP, //从休眠唤醒模块
  23. BC25_QSCLK_ON, //启动休眠
  24. BC25_QSCLK_OFF, //关闭休眠
  25. BC25_QSCLK_CHECK, //查询休眠设置
  26. BC25_QPOWD, //模块关机/重启指令
  27. BC25_QPOWD_DELAY, //模块关机指令等待
  28. BC25_NO_REG, //未激活
  29. BC25_AT, //检查AT指令是否正常
  30. // BC25_IPR_CHECK, //检查波特率
  31. // BC25_IPR_SET, //设置波特率
  32. BC25_ATI, //查询估计版本
  33. BC25_ATE, //回显设置
  34. BC25_CMEE, //错误日志设置
  35. BC25_CPIN, //查询USIM卡状态
  36. BC25_IMEI, //获取IMEI号
  37. BC25_CCID, //获取CCID号
  38. BC25_IMSI, //获取IMSI号
  39. BC25_QATWAKEUP, //模块从深休眠唤醒时上报URC指示20
  40. BC25_QNBIOTEVENT, //设置psm模式进入显示
  41. BC25_CSCON_SET, //使能URC上报功能
  42. BC25_CEDRX_OFF, //关闭edrx功能
  43. BC25_PSM_OFF, //关闭psm模式
  44. BC25_PSM_CHECK, //查询psm设置
  45. BC25_PSM_SET, //设置psm模式
  46. BC25_EDRX_CHECK, //查询eDRX设置
  47. BC25_EDRX_SET, //设置eDRX模式
  48. BC25_CBC, //查询模组输入电压
  49. BC25_CSQ, //查询网络信号值
  50. BC25_CGATT_CHECK, //检查入网状态
  51. BC25_CGATT_ON, //设置入网
  52. BC25_CESQ, //获取扩展信号质量30
  53. BC25_CEREG_SET, //设置查询基站功能
  54. BC25_CEREG_CHECK, //查询基站
  55. BC25_CGPADDR, //查询IP
  56. BC25_QENG, //查询网络服务信息
  57. BC25_CFUN_CHECK, //查询当前功能模式
  58. BC25_CFUN_MINI, //设置最小功能模式
  59. BC25_CFUN_ALL, //设置全功能模式
  60. BC25_NCSEARFCN, //清除频点
  61. BC25_TIME, //获取时间
  62. BC25_PSM_DELAY, //等待进入PSM
  63. BC25_PSM_WORKING, //进入PSM模式
  64. /****电信IoT****/
  65. BC25_NCDPOPEN, //发起连接
  66. BC25_NCDPCLOSE, //断开连接
  67. BC25_NMGS, //发送数据
  68. BC25_NMGSING, //发送数据中
  69. BC25_NNMI, //配置数据接收为只吐模式
  70. BC25_NCFG_LIFETIME, //配置生命周期
  71. BC25_NCFG_WAKEUP, //配置深度睡眠唤醒回复功能
  72. BC25_NMSTATUS, //查询注册状态
  73. /*oneNET*/
  74. BC25_MIPLCONFIG_CHECK, //查询OneNET bootsrap设置
  75. BC25_MIPLCONFIG_SET, //设置bootsrap
  76. BC25_MIPLCREATE, //创建通讯套件
  77. BC25_MIPLDELETE, //删除通讯套件
  78. BC25_MIPLADDOBJ, //添加对象和实例
  79. BC25_MIPLDELOBJ, //删除对象和实例
  80. BC25_MIPLOPEN, //注册
  81. BC25_MIPLCLOSE, //注销
  82. BC25_ONENET_OPENING, //OneNet平台注册中
  83. BC25_ONENET_OPEN_RESTART, //OneNet注册重启等待
  84. BC25_ONENET_OPENED, //OneNet平台注册成功
  85. BC25_MIPLDISCOVERRSP, //资源发现操作
  86. BC95_MIPLDISCOVERRSPING, //资源发现操作中
  87. BC25_MIPLOBSERVERSP, //订阅资源发现操作
  88. BC95_MIPLOBSERVERSPING, //订阅资源发现操作中
  89. BC25_MIPLREADRSP, //读请求操作
  90. BC25_MIPLWRITERSP, //写请求操作
  91. BC25_MIPLEXECUTERSP, //执行请求操作
  92. BC25_MIPLPARAMETERRSP, //设置请求操作
  93. BC25_MIPLNOTIFY, //数据上报
  94. BC25_MIPLNOTIFING, //数据上报中
  95. BC25_MIPLUPDATE, //更新注册
  96. }BC25_NET_STATUS;
  97. typedef enum
  98. {
  99. BC25_QUEUE_TIME=0,
  100. BC25_QUEUE_INT=1,
  101. }BC25_QUEUE_TYPE;
  102. #define ONENET_PARAM_DEFAULT_CONFIG \
  103. { \
  104. .insCount=1, \
  105. .insBitmap="1", \
  106. .attrCount=4, \
  107. .actCount=1, \
  108. .objid=3300, \
  109. .resid_u=5751, \
  110. .resid_d=5750, \
  111. .resid="5751;5750", \
  112. .resid_len=9, \
  113. }
  114. #define PSM_PARAM_DEFAULT_CONFIG \
  115. { \
  116. .stat=CPSMS_ON, \
  117. .T3412="00100110",/*001=1小时,00110=6次,6小时*/ \
  118. .T3324="00100001",/*001=1分钟,00001=1,1分钟*/ \
  119. }
  120. typedef void (*bc25_work_finish_func)(void);
  121. typedef bool (*bc25_work_continue_func)(void);
  122. typedef void (*bc25_qpowd_func)(void);
  123. typedef struct {
  124. bool dev_reg;
  125. bool cfun_stat;
  126. bool alarm_stat;
  127. BC25_BAUD baud;
  128. bool usim_stat;
  129. bool boot_stat;
  130. bool reset_stat;
  131. bool psm_lock;
  132. bool bc25_work;
  133. bool sleep_mode;
  134. uint8_t wakeup_mode;
  135. bool cfun_mini_stat;
  136. uint16_t bat_voltage;
  137. bc25_work_finish_func finish_func;
  138. bc25_work_continue_func continue_func;
  139. BC25_NET_STATUS bc25_status; //BC25模块当前工作状态
  140. BC25_NET_STATUS last_bc25_status; //执行完当前命令需返回的BC25状态
  141. http_request_s http_request; //http请求值
  142. uint8_t open_stat; //onenet open stat
  143. uint8_t onenet_discover_stat; //onenet发现资源
  144. uint8_t onenet_observer_stat; //onenet订阅请求
  145. uint8_t cgatt_timeout; //附着网络失败
  146. bool net_work; //网络正常数据工作状态
  147. uint32_t net_lifetime; //更新操作计时
  148. uint8_t rst_delay; //重启延时
  149. bool commercial_189; //是否电信商用平台
  150. bool imsi_stat; //IMSI读取准备状态
  151. bool edrx_stat; //EDRX设置状态
  152. uint8_t gpio_set_stat; //gpio操作状态
  153. uint8_t bc25_at_count; //模块AT检查次数
  154. uint8_t cfun_timeout; //cfun操作失败次数
  155. uint8_t error_count; //返回错误次数
  156. char *bc25_tx_array; //发送数据的缓存位置
  157. bool first_work; //模组第一次工作
  158. bool heart_check;
  159. uint32_t heart_check_timeout; //心跳包延时检查
  160. net_type_e net_type; //网络制式
  161. bool net_type_error; //网络制式错误
  162. bool net_connect_error; //联网错误
  163. bool cclk_save; //是否保存时间戳
  164. uint8_t iot_open_timeout; //连接超时
  165. bool qpowd_func_stat;
  166. bc25_qpowd_func qpowd_func; //关机执行
  167. uint8_t mipconfig_stat; //mipconfig状态查询
  168. uint8_t mipconfig_set; //mipconfig设置步骤
  169. uint8_t bootstrap_timeout; //bootstrap失败次数
  170. }BC25_STRUCT;
  171. void bc25_struct_Init(void);
  172. void bc25_timers_init(void);
  173. void BC25_GPIO_Init(void);
  174. void bc25_work_start(void);
  175. void bc25_work_stop(void);
  176. void BC25_Data_Check(char *str);
  177. void Set_Bc25_Queue(BC25_QUEUE_TYPE type);
  178. void Set_Bc25_Reg_Stat(bool stat);
  179. void Set_Bc25_Commercial_189(bool stat);
  180. void Set_Bc25_work_finish_func(bc25_work_finish_func func);
  181. void Set_Bc25_work_continue_func(bc25_work_continue_func func);
  182. void Set_Bc25_txAarry_byte(char *byte);
  183. void Set_Bc25_netType(net_type_e net_type);
  184. void bc25_powerdown(bc25_qpowd_func func);
  185. extern BC25_STRUCT bc25_struct;
  186. extern uint32_t unixtime;
  187. #endif //__BC25_WORK_H__