protocol.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. #ifndef __PROTOCOL_H
  2. #define __PROTOCOL_H
  3. #include "stdlib.h"
  4. #include <s2j.h>
  5. #include "s2jdef.h"
  6. #include <rtthread.h>
  7. #include "sys_config.h"
  8. #include "cJSON.h"
  9. #include "modbus_io.h"
  10. #define dtu_cmd_max_len 60
  11. extern uint32_t month;
  12. extern uint32_t day;
  13. extern uint32_t year;
  14. extern uint32_t hour;
  15. extern uint32_t min;
  16. extern uint32_t sec;
  17. typedef enum {
  18. read = 1 , //下发查询
  19. control,//下发输出控制指令
  20. timing, //下发定时参数配置
  21. Auto, //下发阈值参数配置 ,大写避免与系统关键字冲突
  22. config, //下发上报间隔
  23. /********************************************/
  24. status, //查询设备信息
  25. data, //查询数据
  26. ip, //查询ip,端口,topic
  27. upload, //查询上传使能
  28. interval,//请求查询设备上传时间间隔
  29. jkStatus,//请求查询控制开关状态
  30. dotled,//点阵led显示抬头内容下发
  31. REBOOT,//重启
  32. RESET_F,//恢复出厂参数
  33. update,//升级固件
  34. zk_dl,//下载字库支持文件
  35. soilmoisture,//墒情校准
  36. ch_conf,//通道配置
  37. platform,//上报平台选择
  38. element,//要素模型查询
  39. upgrade_url,//下发升级uri
  40. //modbusIO模块测试
  41. input,//
  42. output,//
  43. ctl,//
  44. DotledsubID,//点阵屏订阅ID查询
  45. CONFIGDotledsubID,//点阵屏订阅ID配置下发
  46. Elem_CFG, //要素修正
  47. elem_corr,
  48. ctl_485_mode, //485模式切换
  49. rs485_dtu_cmd, //485透传指令响应
  50. dotled_para, //led屏幕参数相关
  51. sensor_mode, //传感器读取模式
  52. cfg_e_code, //配置ecode
  53. del_e_code, //删除已保存项
  54. ecode, //读取
  55. bak_parameters, //备份参数
  56. bak_info, //备份区状态
  57. res_parameters, //还原参数
  58. ctl_netsw_mode, //网络自动切换的开关
  59. SDT, // 屏幕数据透传
  60. FloatChange // 浮点转换
  61. }Cmd_t;
  62. //typedef enum {
  63. // status, //查询设备信息
  64. // data, //查询数据
  65. // ip, //查询ip,端口,topic
  66. // upload, //查询上传使能
  67. // runstatus,//查询输出运行状态
  68. // config, //查询上传间隔
  69. // interval,//请求查询设备上传时间间隔
  70. //}Rev_return;
  71. /*************************************************/
  72. //gnss_mode = 0 手动定位 不需要坐标转换
  73. //gnss_mode = 1 GPS定位 GPS转百度
  74. //gnss_mode =2 基站定位 火星转百度
  75. //没有这个字段 则都是基站定位,火星转百度.
  76. /*终端状态数据结构*/
  77. typedef struct
  78. {
  79. char *RSSI;
  80. char *VOLT;
  81. char *IMEI;
  82. char *ICCID;
  83. // char *GNSS_MODE;//定位模式 此参数取消
  84. char *longitude;
  85. char *latitude;
  86. char *altitude;//海拔
  87. char *Dotled;
  88. char *Version;
  89. }TerminalStatus;
  90. /*状态扩展数据结构*/
  91. typedef struct
  92. {
  93. char *StationID;
  94. char *MonitorTime;
  95. TerminalStatus *terminalStatus;
  96. }Status_Ext;
  97. /*状态消息数据结构*/
  98. typedef struct
  99. {
  100. char *cmd;
  101. Status_Ext *ext;
  102. }Status_Message;
  103. //传感器参数配置结构体
  104. typedef struct
  105. {
  106. Sensor_CH *sensor_ch[Number_sensors];
  107. }CONFIG_CH_t;
  108. /*状态消息数据结构*/
  109. typedef struct
  110. {
  111. char cmd[10];
  112. char type[30];
  113. CONFIG_CH_t ext;
  114. }CONFIG_MESSAGE_t;
  115. /*状态消息数据结构*/
  116. typedef struct
  117. {
  118. char *cmd;
  119. Sensor *ext;
  120. }Element_Message;
  121. /*要素修正结构体*/
  122. typedef struct
  123. {
  124. char ename[30]; //ename
  125. uint8_t en; //使能标记
  126. int32_t plus; //加减乘除
  127. int32_t minus;
  128. int32_t times;
  129. int32_t divide;
  130. }Elem_corr;
  131. /*保存已配置的修正参数的结构体数组*/
  132. typedef struct
  133. {
  134. Elem_corr elem_corr[Number_sensors];
  135. }Elem_corr_list;
  136. /*浮点转换结构体*/
  137. typedef struct
  138. {
  139. char ename[23]; //ename
  140. uint8_t en; //使能标记
  141. uint8_t FC_1;
  142. uint8_t FC_2;
  143. uint8_t FC_3;
  144. uint8_t FC_4;
  145. }Elem_FC;
  146. /*保存已配置的修正参数的结构体数组*/
  147. typedef struct
  148. {
  149. Elem_FC elem_fC[Number_sensors];
  150. }Elem_FC_list;
  151. /*************************************************/
  152. //imei,iccid,rssi,经纬度等信息,开机上传或者查询上传
  153. cJSON *Status_Upload(uint8_t option);
  154. //rssi上传,5分钟定时上传
  155. cJSON *RSSI_Upload(void* struct_obj);
  156. //上传间隔时间上传json
  157. cJSON *IntervalUpload(void);
  158. //上传平台选择json
  159. cJSON *PlatformUpload(void);
  160. //数据上传json
  161. cJSON *TerminalData(uint8_t option);
  162. //控制通道状态json
  163. cJSON *ControlStatus(void);
  164. //阈值状态信息json
  165. cJSON *ThresholdStatus(void);
  166. //定时状态信息json
  167. cJSON *TimingStatus(void);
  168. /* 上报通道0服务器IP,端口,topic等服务器信息 */
  169. cJSON *Serv_info_Upload(void);
  170. //震动报警上报
  171. cJSON *Alarm_Upload(void);
  172. //电源故障报警上报
  173. cJSON *Powerdown_Upload(void);
  174. cJSON *Upgrade_Url(void);
  175. void ParseCmdJson(const char* pCmdJson,uint16_t mqtt_ch);
  176. //遗嘱
  177. cJSON *Will_upload(void);
  178. //土壤墒情检测系统数据上传
  179. char *TerminalData_soilmoisture(void);
  180. //墒情校准值json
  181. cJSON *soillmoisture_cal(void);
  182. //通道配置上报反馈json
  183. cJSON *CH_Config_Json(uint8_t stat);
  184. //parse a struct array
  185. int cJSON_to_struct_array(char *text);
  186. //通道解析
  187. uint8_t ch_config_parse(char *text);
  188. //上传平台切换预警
  189. cJSON *Platform_Chg_Alarm(uint8_t type);
  190. //传感器读取错误次数过多
  191. cJSON *Sensor_Read_Error(void);
  192. //要素修正失败
  193. cJSON *Elem_cfg_fail(uint8_t type);
  194. //要素修正成功
  195. cJSON *Elem_cfg_succ(uint8_t e_pos);
  196. //控制485透传模式
  197. cJSON *Ctl_485_report(uint8_t type);
  198. //传感器模式相关
  199. cJSON *sensor_mode_read(uint8_t type);
  200. //备份参数
  201. cJSON *bak_parameters_respon(uint8_t type);
  202. //预警信息上报
  203. void Alarm_report(uint8_t type, uint8_t para , uint8_t mqtt_ch);
  204. uint8_t str2hex(uint8_t *str, uint8_t *bin);
  205. typedef enum
  206. {
  207. qxz_part = 1,
  208. elem_part ,
  209. ch_part
  210. }bak_part;
  211. #ifdef DOTLEDSHOW
  212. #define sub_dev_n 4 //订阅ID数量
  213. cJSON *Data_dotled_subid(void);
  214. typedef struct
  215. {
  216. char ID_list[sub_dev_n][20];//订阅的设备ID
  217. uint16_t *timeout;//设备超时计数指针
  218. }DOTLEDID_SUB;
  219. extern DOTLEDID_SUB sub_para;
  220. #endif
  221. #endif