globalDef.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. #ifndef _GLOBALDEF_H_
  2. #define _GLOBALDEF_H_
  3. #include "../_Lib-3.5/CMSIS/stm32f10x.h"
  4. #include "./network/timeout.h"
  5. #include "./network/nettimer.h"
  6. #define READ_TIMER 3
  7. #define UP_DEVICE_TYPE_GATE 0x0101 // 网关A
  8. #define UP_DEVICE_FIRMWARE 0x03 // APP程序
  9. enum {
  10. UPDATE_PROG_NULL = 0x00,
  11. UPDATE_PROG_FROM_NET = 0x01,
  12. UPDATE_PROG_FROM_GATEWAY = 0x02,
  13. };
  14. typedef struct _updata_prog {
  15. uint32_t sn[4];
  16. uint32_t appVr[4];
  17. uint8_t status[4];// 状态码
  18. uint16_t num;
  19. uint8_t upCount; // 上报的次数
  20. uint8_t updateProgFrom; // 升级程序的开源
  21. timeout_t upStatusOut;
  22. uint8_t rec0x16; // 接收到16指令,
  23. OS_TMR update_total_time;
  24. }updateProg;
  25. extern updateProg g_updateProg;
  26. extern char g_upLinkTopic[64];
  27. /* LED 灯的记录 */
  28. #define LED_M_QUICK 1
  29. #define LED_M_LOW 5
  30. #pragma pack(push,1)
  31. typedef union _LED_16_{
  32. uint16_t status;
  33. struct {
  34. uint16_t led01 : 1;
  35. uint16_t led02 : 1;
  36. uint16_t led03 : 1;
  37. uint16_t led04 : 1;
  38. uint16_t led05 : 1;
  39. uint16_t led06 : 1;
  40. uint16_t led07 : 1;
  41. uint16_t led08 : 1;
  42. uint16_t led09 : 1;
  43. uint16_t led10 : 1;
  44. uint16_t led11 : 1;
  45. uint16_t led12 : 1;
  46. uint16_t led13 : 1;
  47. uint16_t led14 : 1;
  48. uint16_t led15 : 1;
  49. uint16_t led16 : 1;
  50. }led;
  51. }Led16;
  52. #pragma pack(pop)
  53. typedef struct _LED_STATUS_{
  54. uint8_t ledM; // M灯的情况 快闪还是慢闪
  55. Led16 led16;
  56. uint16_t collNum; // 采集器个数
  57. }LedStatus;
  58. extern LedStatus g_ledStatus;
  59. /*时间信息记录*/
  60. typedef struct _CUR_TICK_{
  61. uint32_t powerTime; // 上电时间
  62. uint32_t curTime; // 当前时间
  63. }CurTick;
  64. extern CurTick g_curTick;
  65. typedef struct _FIRMWARE_EXPLAIN_{
  66. uint16_t dd;
  67. uint8_t ff;
  68. uint16_t nn;
  69. }__attribute__((packed)) FirmwareExpl;
  70. extern FirmwareExpl g_firmwareExpl;
  71. #define UPDATE_COLLECT_TOTALTIME 90000 // 升级总的时间
  72. #define UPDATE_CONTINUE_TIME 300 // 升级续传每条间隔的时候300毫秒
  73. #define UPDATE_REPEAT_TIME 7000 // 接收重传超时的时间 2S
  74. #define UPDATE_READSTATUS_TIME 10000 // 升级完成 到读取升级状态的时间
  75. #define UPDATE_READSTATUS_TIME_GATEWAY 60000 // 升级完成 到读取升级状态的时间
  76. /*运行数据*/
  77. typedef struct _RUN_DATA_{
  78. uint16_t rssi_lora; // lora信息强度
  79. uint16_t rssi_4G; // 4G信息强度
  80. uint8_t timeSendStatus; // 第5分钟发送一次状态信息的标志 0:不发送 1:发送
  81. uint8_t bInitNetProc; // 是否创建网络队列
  82. uint16_t updateDeviceTyp; // 升级类型 0x0101:网关;0x0201;采集器:0x0301:液位仪采集器;0x0401:屏采集器
  83. uint8_t bUpdate; // 正在升级中
  84. uint32_t startUpdateTotalTime; // 重传开始时间记录
  85. uint32_t repeatUpdateTime; // 接收到重传指令型时间记录
  86. uint32_t readUpdateStatusTime; // 读取升级状态的时间记录
  87. uint8_t bsendOilData; // 发送油罐数据到服务器
  88. uint8_t bAutoReadOilData; // 自动读取油罐数据
  89. uint8_t bsendUpdateStatus; // 向服务器发送状态码
  90. uint8_t bResetUpdate; // 升级完成后,需要上报服务器
  91. uint8_t bsendGatewaySttus; //
  92. uint8_t bsendGatewayVersion;
  93. uint8_t frameNo; // 是否为多帧
  94. uint8_t cregStatus; // 网络注册状态
  95. uint8_t bUpdateHost; //是否是主设备 1:为主设备 其它为从设备,升级时,从设备不处理0x22指令
  96. uint16_t loraConnectTime; // lora 连接的时间
  97. uint8_t bread; // 服务器下发的读取液位仪的指令
  98. }RunData;
  99. extern RunData g_runData;
  100. typedef struct _DATA_4G_{
  101. uint8_t bconnect4G; // 是否连接4G
  102. uint8_t errorTime; // 4G断开的时间 如果断开1小时,则芯片复位重新启动
  103. }Da4G;
  104. extern Da4G g_data4G;
  105. /* 网关固件信息存储 这个只有在产测时写入,要程序中不再写入*/
  106. typedef struct _GATEWAY_HARDWARE_MSG_{
  107. uint8_t bInit; // 是否初始化过
  108. uint32_t gateway_sn; // 网关的sn
  109. uint16_t devicType; // 类型
  110. uint16_t factoryMsg; // 厂家信息
  111. uint16_t seqNo ; // 生产批次号
  112. uint32_t data; // 生产日期
  113. uint8_t pcbVersion; // 硬件(PCB)版本
  114. uint32_t sqare; //备用
  115. }__attribute__((packed)) GateHareWareMsg;
  116. /* 网关的固件信息存储*/
  117. typedef struct _GATEWAY_SOFT_MSG_{
  118. uint16_t bInit; // 是否配置过
  119. uint8_t coll_num; // 此网关对应采集器的数量
  120. uint16_t sqare; // 备用
  121. }__attribute__((packed)) GateConfigMsg;
  122. /* 网关的版本信息*/
  123. typedef struct _GATEWAY_VERSION_MSG_{
  124. uint32_t gate_bootloaderVr; //网关的bootloaderVr
  125. uint32_t pt_version; // 产测版本
  126. uint32_t gate_appVr; // appt版本
  127. uint32_t gate_appVr2; // app2的版本
  128. uint32_t gate_appVr3; // app3的版本
  129. }__attribute__((packed)) GateVersionMsg;
  130. typedef union _VOLTAGE_{
  131. uint32_t voltage; // 电压
  132. float fvoltage;
  133. }voltage;
  134. typedef union _TEMPERATURE_{
  135. uint32_t temperature; // 温度
  136. float ftemperature;
  137. }temperature;
  138. typedef struct _GATEWAY_MSG_{
  139. GateHareWareMsg hardwareMsg; //
  140. GateConfigMsg configmsg; // 软件信息
  141. GateVersionMsg verMsg; // 版本信息
  142. uint32_t gate_resetnum; //复位次数
  143. uint8_t gate_resetType; //最后一次复位类型
  144. uint32_t gate_runTime; // 运行时长
  145. voltage fVol;
  146. temperature fTemper;
  147. uint8_t Uuid[12];//UUID
  148. uint8_t Imei[15]; //IMEI
  149. uint8_t Iccid1[20];//ICCID1
  150. uint8_t Iccid2[20];//ICCID2
  151. uint8_t Iccid3[20];//ICCID3
  152. uint16_t devicTypeID; // 103 303 这个是读取上来的
  153. }GateWayMsg;
  154. /* mqtt IP地址 端口号*/
  155. typedef struct _MQTT_IP_PORT_{
  156. uint8_t flag;
  157. char port[6]; // 端口号
  158. char ip[32]; //IP地址
  159. char admin[8]; // 用户名
  160. char password[16]; // 密码
  161. }__attribute__((packed)) MqttIdPort;
  162. typedef struct _FIRMWARE_MSG_{ // 固件信息存储
  163. GateWayMsg gatewayMsg; // 网关固件信息
  164. MqttIdPort mqttidport; // mqtt的IP地址和端口
  165. }FirmwareMsg;
  166. extern FirmwareMsg g_firmwareMsg; // 网关 采集器固件信息存储
  167. typedef struct _OIL_READ_MSG_{
  168. uint8_t bInit; // 是否初始化
  169. uint16_t paraLen; // 参数长度
  170. char param[48]; // 参数
  171. }__attribute__((packed)) oilReadMsg;
  172. extern oilReadMsg g_oilReadMsg;
  173. typedef struct _run_mqtt_data_{
  174. uint8_t bChangeMqtt; // 1:为切换mqtt 服务器
  175. uint8_t bChangeSuc; // 0:初始值 1: 切换成功 2: 切换连接失败
  176. uint8_t connectNum; // 连接次数
  177. uint8_t mqttIdlen;
  178. uint8_t mqttPortlen;
  179. uint8_t mqttUserlen;
  180. uint8_t mqttPwdlen;
  181. MqttIdPort mqttMsg; // mqtt的IP地址和端口
  182. }__attribute__((packed)) MqttRunDa;
  183. extern MqttRunDa g_mqttRunDa;
  184. typedef struct{
  185. uint8_t oil_buff[1024]; //
  186. uint16_t len; //数据长度
  187. uint16_t len1; // 用于没有结束符的长度
  188. uint8_t bfinish; // 收到03 结束
  189. uint8_t bAutoRead; // 是否自动读取
  190. uint8_t bstart; // 收到了 i20100指令
  191. }__attribute__((packed))OilRunData;
  192. extern OilRunData g_oilreadDa;
  193. #endif