uplink.h 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. #ifndef __UPLINK_H__
  2. #define __UPLINK_H__
  3. #include "stm32f10x.h"
  4. #include "../dev_mgr/taxctrl/tax_ctrl.h"
  5. // 设备类型
  6. enum {
  7. DEVICE_GATEWAY = 0x0101, // 网关
  8. DEVICE_COLLECT = 0x0201, //采集器
  9. DEVICE_OILL = 0x3001, //油罐车
  10. DEVICE_LED = 0x0401, // 显示屏
  11. };
  12. #define GATEWAY_ID 0X01
  13. #define TAX_UPLINK_LEN 34
  14. #define TAX_UPLINK_TYPE 0X20 // 上行
  15. #define FIRST_TYPE_SYST 0x01 // 系统类
  16. #define FIRST_TYPE_STATUS 0x02 // 状态类
  17. #define FIRST_TYPE_DATA 0x03 //数据类
  18. #define FIRST_TYPE_TEST 0x04 // 产测类
  19. #define FIRST_TYPE_LOG 0x10 // 异常类
  20. // 系统类数据 0x01
  21. enum {
  22. COLL_DN_SYS_CMD1001 = 0x1001, // 升级下行
  23. COLL_DN_SYS_CMD1002 = 0x1002, // 连接器版本同步,即采集器给另一个采集器升级
  24. COLL_DN_SYS_CMD1011 = 0x1011, //系统类 采集路由信息初始化下行
  25. COLL_DN_SYS_CMD1012 = 0x1012, // 系统类,刷新税控序列号
  26. COLL_DN_SYS_CMD1021 = 0x1021, // 系统类,系统重新启动
  27. GATEWAY_DN_SYS_CMD1003 = 0x1003, // 系统类,配置mqtt服务器
  28. GATEWAY_DN_SYS_CMD1013 = 0x1013, // 系统类, 时间轮询间隔
  29. COLL_DN_SYS_CMD1016 = 0x1016, // lora参数切换
  30. COLL_DN_SYS_CMD1017 = 0x1017, // lora参数读取
  31. GATEWAY_DN_SYS_CMD1018 = 0x1018, // 手动刷新税控序列号
  32. COLL_DN_SYS_CMD1019 = 0x1019, // 系统类,带显示屏或不带显示屏的路由信息初始化下行
  33. COLL_DN_SYS_CMD1020 = 0x1020, // 配置报税口枪的个数
  34. GATEWAY_DN_SYS_CMD1022 = 0x1022, // 是否启用编码器路由表
  35. COLL_DN_SYS_CMD1023 = 0x1023, // 采集器设备设置
  36. COLL_DN_SYS_CMD1034 = 0x1034, // 读取报税口数据
  37. GATEWAY_DN_SYS_CMD1051 = 0x1051, // 拓盛密文实时读取
  38. GATEWAY_DN_SYS_CMD1052 = 0x1052, // 透传
  39. COLL_UP_SYS_CMD2001 = 0x2001, // 升级状态上行
  40. COLL_UP_SYS_CMD2011 = 0x2011, // 系统类0x2011数据上报
  41. COLL_UP_SYS_CMD2017 = 0x2017, // lora参数上报
  42. GATE_UP_SYS_CMD2051 = 0x2051, // 拓盛密文实时上报应答
  43. };
  44. // 状态类信息 0x02
  45. enum {
  46. COLL_DN_STATUS_CMD1001 = 0x1001, // 状态类 固件信息下行
  47. COLL_UP_STATUS_CMD2001 = 0x2001, // 固件信息
  48. COLL_UP_STATUS_CMD2002 = 0x2002, // 状态信息上行
  49. };
  50. // 数据类 0x03
  51. enum {
  52. COLL_TAX_DA_CMD_UP = 0x2001, // 业务数据上报
  53. COLL_TAX_DAER_CMD_UP = 0x2002, // 业务错误数据上报
  54. COLL_ENCODER_DA_CMD_UP = 0x2051, // 编码器数据上报
  55. NET_UP_DATA_CMD2071 = 0x2071, // 密文原始数据上季
  56. };
  57. // 异常类 0x10
  58. enum {
  59. LOG_BASIC_MSG = 0x01, // 收到开启日志消息,回路由表的基本信息
  60. LOG_TAX_DA = 0x02, // 上传错误信息
  61. LOG_TAX_COLLSN = 0x03, // 上报不是本采集器的SN
  62. LOG_LORA_ERROR = 0x04
  63. };
  64. enum {
  65. GATEWAY_DN_LOG_CMD1001 = 0x1001, //异常类开启或关闭
  66. GATEWAY_DN_LOG_CMD1002 = 0x1002, // 异常原始数据
  67. GATEWAY_UP_LOG_CMD2001 = 0x2001, //异常类上行
  68. };
  69. /*业务数据(0x03)上报服务器 0x2001*/
  70. typedef struct _uplink_tax
  71. {
  72. uint32_t gateway_id; //网关id
  73. uint32_t collect_id; //采集器id
  74. uint8_t tax_no; // 报税口编号
  75. uint8_t gun_no; // 枪号
  76. uint32_t seq_no; // 流水号
  77. uint8_t time_day; // 日
  78. uint8_t time_hour; // 时
  79. uint8_t time_minute; //分
  80. uint32_t oil_volume;//当次加油量
  81. uint32_t price;//当次金额
  82. uint32_t unit_price;//单价
  83. uint64_t total_oil_volume; //总油量
  84. uint64_t total_price; //总金额
  85. }__attribute__((packed)) uplink_tax_t;
  86. /* 业务数据的错误数据 */
  87. typedef struct _uplink_tax_errror {
  88. uint32_t gateway_id; //网关id
  89. uint32_t collect_id; //采集器id
  90. uint8_t tax_no; // 报税口编号
  91. uint8_t gun_no; // 枪号
  92. uint8_t errorcode; // 错误码
  93. uint32_t reserve;
  94. }__attribute__((packed)) uplink_tax_error_t;
  95. /* 编码器数据(0x03) 上报服务器 0x2051 */
  96. typedef struct _updata_encoder_0x2051_{
  97. uint32_t gateway_id; //网关id
  98. uint32_t collect_id; //采集器id
  99. uint8_t taxno; // 报税口号
  100. uint8_t gunno; // 枪号
  101. uint32_t reserve; // 预留
  102. uint8_t paralen; // 参数长度
  103. uint8_t para[100]; // 参数
  104. }__attribute__((packed)) updataencoder0x2051;
  105. /* 密文原始数据(0x03)上报服务器 0x2071 */
  106. typedef struct _data_cmd_0x2071_{
  107. uint32_t gatewaySn; //网关id
  108. uint32_t collSn; //采集器id
  109. uint8_t taxId; // 报税口号
  110. uint8_t gunId; // 枪号
  111. uint32_t serialNo; // 流水号
  112. uint8_t dir; //0:解码数据返回结服务器 1:解码数据返回给数据源设备
  113. uint8_t free_fifo; // 解码主板,可用资源数。即接收缓冲区还能够存放多少 条 数据包。
  114. uint8_t result; // 解码结果
  115. uint8_t shakedown1[3]; // 解码调度信息
  116. uint8_t serialNum[10]; // 税控序列号
  117. uint32_t reserve; // 预留
  118. uint8_t da14len; // 8C-14的数据长度
  119. uint8_t da11len; // 8C-11的数据长度
  120. uint8_t data[128];
  121. }__attribute__((packed)) dataCmd0x2071;
  122. /* 系统信息(0x01)上报 0x2011 指令*/
  123. typedef struct _syscmd_0x2011_{
  124. uint32_t gateway_sn; // 网关编号
  125. uint32_t coll_sn; // 采集器编号
  126. uint8_t tax_no; // 报税口编号
  127. char minor_num[10]; // 税控序列号
  128. uint8_t tax_factory; // 税控厂家
  129. uint8_t encrypt; // 加密状态
  130. uint8_t gun_num; // 枪的个数
  131. }__attribute__((packed)) syscmd0x2011;
  132. /* 系统升级状态信息(0x01)上报 0x2001 */
  133. typedef struct _syscmd_0x2001_{
  134. uint16_t targetType; // 设备类型
  135. uint32_t deviceSn; // 设备SN号
  136. uint16_t taskNo; // 任务号
  137. uint8_t status; // 当前状态
  138. }__attribute__((packed)) syscmd0x2001;
  139. /* 系统信息(0x01) 上报0x2017 指令 lora信道信息 */
  140. typedef struct _syscmd_0x2017_{
  141. uint32_t gateway_sn; // 网关编号
  142. uint32_t coll_sn; // 采集器编号
  143. uint8_t result ; // 结果
  144. uint8_t loraIndex; // lora通道号
  145. uint32_t freq; // lora 发射频率
  146. uint8_t power; // 发射功率
  147. uint8_t bandwidth; // 带宽
  148. uint8_t spreadingfactor; // 扩频因子
  149. uint8_t codingrate; // 纠错编码率
  150. uint16_t preambleLen; // 前导码长度
  151. }__attribute__((packed)) syscmd0x2017;
  152. /* 拓盛密文实时读取 0x1051*/
  153. typedef struct _syscmd_0x2051_{
  154. uint32_t gateway_sn; // 网关SN
  155. uint32_t coll_sn; // 采集器sn号
  156. uint8_t taxNo; // 报税口号
  157. uint8_t benable; // 是否启用时实读取 0:非时实 1:时实
  158. uint32_t reserve; // 预留
  159. }__attribute__((packed)) syscmd0x2051;
  160. /* 状态信息类0x02 上报 固件信息消息 0x2001 */
  161. typedef struct _status_cmd_0x2001_{
  162. uint32_t gateway_Sn; //网关编号
  163. uint16_t target_Type;//设备类型(0x0101:网关;0x0201;采集器:0x0301:液位仪采集器;0x0401:屏采集器)
  164. uint32_t sn ;//设备SN
  165. uint32_t bootloader_Version; //bootloader版本
  166. uint32_t app_Version;//APP版本
  167. uint32_t reset_Times;//复位次数
  168. uint8_t last_Reset_Type;//最后一次复位类型
  169. char Uuid[12];//UUID
  170. char Imei[15]; //IMEI
  171. char Iccid1[20];//ICCID1
  172. char Iccid2[20];//ICCID2
  173. char Iccid3[20];//ICCID3
  174. }__attribute__((packed)) statusCmd0x2001;
  175. /*状态信息类0x02 上报 状态信息0x2002*/
  176. typedef struct _status_cmd_0x2002_{
  177. uint32_t gateway_sn;// 网关编号
  178. uint16_t target_Type;//设备类型(0x0101:网关;0x0201;采集器:0x0301:液位仪采集器;0x0401:屏采集器)
  179. uint32_t sn; //编号
  180. uint32_t run_Time;//运行时常
  181. uint32_t voltage; // 电压
  182. uint32_t tempperature; // 温度
  183. uint8_t loraPaIndex; // lora信道的索引 用的为第几号信道
  184. uint16_t rssi_lora;//Lora信号强度(+1000)
  185. uint16_t loraSendNum; // lora发送包个数
  186. uint16_t loraRcvNum; // lora接收包个数
  187. uint16_t rssi_4G;//4G信号强度
  188. uint8_t status;//状态(0x00:离线;0x01:在线)
  189. uint8_t taxstatus[2]; // 两个报税口的状态(0x00:离线 0x01:在线)
  190. //uint32_t reserver; // 预留
  191. uint8_t data; // 网关时,发送为编码器路由表是否启用,采集器时,明文密文状态
  192. uint16_t collerr; // 不是本网关下出现采集器的次数
  193. uint8_t reserve; //预留
  194. }__attribute__((packed)) statusCmd0x2002;
  195. extern int uplink_tax_comb_error(uint8_t *outdata,uint8_t *len, uint8_t node,uint8_t port,uint8_t gun,uint32_t id,uint8_t flag);
  196. extern int uplink_tax_comb(uint8_t *outdata, uint8_t *len, uint8_t node, uint8_t port, uint8_t gun, uint32_t seq_no);
  197. extern int uplink_tax_comb_2002(uint8_t *outdata,uint8_t *len, uint8_t node,uint8_t port,uint8_t gun,uint8_t errorcode);
  198. extern void uplink_tax_systemcmd_0x2011(uint8_t *outdata,uint8_t *len, uint8_t node,uint8_t port,uint8_t gun);
  199. extern void uplink_update_systemcmd_0x2001(uint8_t *outdata, uint8_t *len, uint16_t type, uint32_t sn, uint16_t taskNo, uint8_t status);
  200. extern void uplink_update_systemcmd_0x2017(uint8_t *outdata,uint8_t *len,uint32_t coll_sn,uint8_t result,uint8_t index);
  201. extern void uplink_tax_statusmcmd_0x2001(uint8_t *outdata, uint8_t *len, uint16_t type, uint8_t index);
  202. extern void uplink_tax_statusmcmd_0x2002(uint8_t *outdata,uint8_t *len, uint16_t type,uint8_t index);
  203. extern void uplink_encoder_data0x2051(uint8_t *outdata, uint8_t *len, uint8_t node, uint8_t port, uint8_t gun, uint16_t palen, uint8_t *da);
  204. extern void uplink_data_cmd_0x2071(uint8_t *outdata, uint8_t *len, uint32_t serialNo, uint8_t cIndex, uint8_t portId, uint8_t gunId,rcv_data_0x8C_t * msg);
  205. extern void uplink_tax_log_da(uint8_t *outdata,uint8_t *len, uint8_t type,uint8_t node,uint8_t port,uint8_t gun,uint32_t id,uint8_t cmd,uint8_t err);
  206. extern void uplink_update_systemcmd_0x2051(uint8_t *outdata,uint8_t *len,uint32_t coll_sn,uint8_t taxno,uint8_t benable);
  207. #endif