uplink.c 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. #include "uplink.h"
  2. #include "device.h"
  3. #include "../dev_mgr/gateway/gateway.h"
  4. #include "../network_mgr/net_proc.h"
  5. #include "../../BSP/BSP.h"
  6. #include "downlink.h"
  7. #include "me3616.h"
  8. extern ME3616 air;
  9. extern volatile uint32_t TickCounter;
  10. //uplink_tax_t uplink_tax;
  11. /* 上报报税口的业务数据类(0x03) 0x2001*/
  12. int uplink_tax_comb(uint8_t *outdata,uint8_t *len, uint8_t node,uint8_t port,uint8_t gun,uint32_t seq_no)
  13. {
  14. uplink_tax_t *p_msg = (uplink_tax_t *)outdata;
  15. // p_msg->gateway_id = downlink_config.gateway_id;//GATEWAY_ID;
  16. // p_msg->collect_id = downlink_config.collect_conf[node].collect_no; //nodeConf.taxconf[node].device_id;
  17. // p_msg->tax_no = downlink_config.collect_conf[node].tax_conf[port].tax_id;//nodeConf.taxconf[node].port[port].tax_id;
  18. // p_msg->gun_no = downlink_config.collect_conf[node].tax_conf[port].gunid[gun];//nodeConf.taxconf[node].port[port].gun[gun].gun_no;
  19. // p_msg->seq_no = seq_no;//此号需要加BCD码 nodeConf.taxconf[node].port[port].gun[gun].rcv_seq;
  20. //
  21. *len = sizeof(uplink_tax_t);
  22. return 0;
  23. }
  24. /* 上报液位仪的数据 数据类(0x03) 0x2021 */
  25. int uplink_oiltank_datacmd_0x2021(uint8_t *outdata, uint16_t *len)
  26. {
  27. return 0;
  28. }
  29. /*上报的系统类(0x01)的 税控序列号 以及枪的个数 0x2011*/
  30. void uplink_tax_systemcmd_0x2011(uint8_t *outdata,uint8_t *len, uint8_t node,uint8_t port,uint8_t gun)
  31. {
  32. syscmd0x2011 *pmsg = (syscmd0x2011 *)outdata;
  33. // pmsg->gateway_sn = downlink_config.gateway_id; // 网关sn号
  34. // pmsg->coll_sn = downlink_config.collect_conf[node].collect_no;; // 采集器SN
  35. // pmsg->tax_no = downlink_config.collect_conf[node].tax_conf[port].tax_id; // 报税口号
  36. // pmsg->encrypt = downlink_config.collect_conf[node].tax_type; //明文 密文
  37. // pmsg->tax_factory = downlink_config.collect_conf[node].tax_conf[port].factory; // 厂家
  38. // pmsg->gun_num = downlink_config.collect_conf[node].tax_conf[port].gun_num;
  39. // memcpy(pmsg->minor_num,downlink_config.collect_conf[node].tax_conf[port].monitor_serino+5,10);
  40. *len = sizeof(syscmd0x2011);
  41. return ;
  42. }
  43. /* 上报的系统类(0x01)的 升级信息状态 0x2001 */
  44. void uplink_update_systemcmd_0x2001(uint8_t *outdata,uint8_t *len,uint16_t type,uint32_t sn,uint16_t taskNo,uint8_t status)
  45. {
  46. syscmd0x2001 *pmsg = (syscmd0x2001*)outdata;
  47. pmsg->targetType = type;
  48. pmsg->deviceSn = sn;
  49. pmsg->taskNo = taskNo;
  50. pmsg->status = status;
  51. *len = sizeof(syscmd0x2001);
  52. return;
  53. }
  54. /*上报的状态类(0x02)的 固件信息 0x2001*/
  55. void uplink_tax_statusmcmd_0x2001(uint8_t *outdata,uint8_t *len,uint16_t type, uint8_t index)
  56. {
  57. statusCmd0x2001 *pmsg = (statusCmd0x2001 *)outdata;
  58. memset(pmsg->Uuid,0,12);//UUID
  59. memset(pmsg->Imei,0,15); //IMEI
  60. memset(pmsg->Iccid1,0,20);//ICCID1
  61. memset(pmsg->Iccid2,0,20);//ICCID2
  62. memset(pmsg->Iccid3,0,20);//ICCID3
  63. pmsg->gateway_Sn = g_firmwareMsg.gatewayMsg.hardwareMsg.gateway_sn; //网关编号
  64. pmsg->target_Type = type;//设备类型(0x0101:网关;0x0201;采集器:0x0301:液位仪采集器;0x0401:屏采集器)
  65. switch (type){
  66. case DEVICE_GATEWAY: // 网关的
  67. pmsg->sn = g_firmwareMsg.gatewayMsg.hardwareMsg.gateway_sn;//设备SN
  68. pmsg->bootloader_Version= g_firmwareMsg.gatewayMsg.verMsg.gate_bootloaderVr; //bootloader版本
  69. pmsg->app_Version = g_firmwareMsg.gatewayMsg.verMsg.gate_appVr;//APP版本
  70. pmsg->reset_Times = g_firmwareMsg.gatewayMsg.gate_resetnum;//复位次数
  71. pmsg->last_Reset_Type = g_firmwareMsg.gatewayMsg.gate_resetType;//最后一次复位类型
  72. memcpy(pmsg->Uuid ,g_firmwareMsg.gatewayMsg.Uuid,12);//UUID
  73. memcpy(pmsg->Imei ,g_firmwareMsg.gatewayMsg.Imei,15); //IMEI
  74. memcpy(pmsg->Iccid1,g_firmwareMsg.gatewayMsg.Iccid1,20);//ICCID1
  75. memcpy(pmsg->Iccid2,g_firmwareMsg.gatewayMsg.Iccid2,20);//ICCID2
  76. memcpy(pmsg->Iccid3,g_firmwareMsg.gatewayMsg.Iccid3,20);//ICCID3
  77. break;
  78. case DEVICE_COLLECT: // 采集器的
  79. break;
  80. case DEVICE_OILL: // 油罐车的
  81. pmsg->sn = g_firmwareMsg.gatewayMsg.hardwareMsg.gateway_sn;//设备SN
  82. pmsg->bootloader_Version= g_firmwareMsg.gatewayMsg.verMsg.gate_bootloaderVr; //bootloader版本
  83. pmsg->app_Version = g_firmwareMsg.gatewayMsg.verMsg.gate_appVr;//APP版本
  84. pmsg->reset_Times = g_firmwareMsg.gatewayMsg.gate_resetnum;//复位次数
  85. pmsg->last_Reset_Type = g_firmwareMsg.gatewayMsg.gate_resetType;//最后一次复位类型
  86. memcpy(pmsg->Uuid ,g_firmwareMsg.gatewayMsg.Uuid,12);//UUID
  87. memcpy(pmsg->Imei ,g_firmwareMsg.gatewayMsg.Imei,15); //IMEI
  88. memcpy(pmsg->Iccid1,g_firmwareMsg.gatewayMsg.Iccid1,20);//ICCID1
  89. memcpy(pmsg->Iccid2,g_firmwareMsg.gatewayMsg.Iccid2,20);//ICCID2
  90. memcpy(pmsg->Iccid3,g_firmwareMsg.gatewayMsg.Iccid3,20);//ICCID3
  91. break;
  92. case DEVICE_LED: // 显示屏的
  93. break;
  94. default:
  95. break;
  96. }
  97. *len = sizeof(statusCmd0x2001);
  98. return;
  99. }
  100. /*上报的状态类(0x02)的 状态信息 0x2002*/
  101. void uplink_tax_statusmcmd_0x2002(uint8_t *outdata, uint8_t *len, uint16_t type, uint8_t index)
  102. {
  103. statusCmd0x2002 *pmsg = (statusCmd0x2002 *)outdata;
  104. pmsg->gateway_sn = downlink_config.gateway_id; // 网关sn号
  105. pmsg->target_Type = type;
  106. g_runData.rssi_4G = air.State.dBm+1000;
  107. g_firmwareMsg.gatewayMsg.gate_runTime = TickCounter/1000;
  108. pmsg->reserver = 0;
  109. pmsg->loraRcvNum = 0;
  110. pmsg->loraSendNum = 0;
  111. pmsg->loraPaIndex = 0;
  112. switch (type)
  113. {
  114. case DEVICE_GATEWAY: // 网关的
  115. pmsg->sn = downlink_config.gateway_id; //
  116. pmsg->rssi_lora = 0;
  117. pmsg->rssi_4G = g_runData.rssi_4G;
  118. pmsg->status = 1;
  119. pmsg->taxstatus[0] = 0;
  120. pmsg->taxstatus[1] = 0;
  121. pmsg->run_Time = g_firmwareMsg.gatewayMsg.gate_runTime;//运行时常
  122. pmsg->voltage = g_firmwareMsg.gatewayMsg.fVol.voltage; // 电压
  123. pmsg->tempperature = g_firmwareMsg.gatewayMsg.fTemper.temperature; // 温度
  124. break;
  125. case DEVICE_COLLECT: // 采集器的
  126. break;
  127. case DEVICE_OILL: // 油罐车的
  128. pmsg->sn = downlink_config.gateway_id; //
  129. pmsg->rssi_lora = 0;
  130. pmsg->rssi_4G = g_runData.rssi_4G;
  131. pmsg->status = 1;
  132. pmsg->taxstatus[0] = 0;
  133. pmsg->taxstatus[1] = 0;
  134. pmsg->run_Time = g_firmwareMsg.gatewayMsg.gate_runTime;//运行时常
  135. pmsg->voltage = g_firmwareMsg.gatewayMsg.fVol.voltage; // 电压
  136. pmsg->tempperature = g_firmwareMsg.gatewayMsg.fTemper.temperature; // 温度
  137. break;
  138. case DEVICE_LED: // 显示屏的
  139. break;
  140. default:
  141. break;
  142. }
  143. *len = sizeof(statusCmd0x2002);
  144. return;
  145. }