|
@@ -407,6 +407,77 @@ void gateway_collect_cmd_0x01_0x1052(uint8_t *data, uint16_t size)
|
|
|
lora_queue_mem_free(p_msg);
|
|
lora_queue_mem_free(p_msg);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+/*----------------------------------------------------------------------------------
|
|
|
|
|
+ * 组成编码器与抬枪信号正反序的数据
|
|
|
|
|
+ * ---------------------------------------------------------------------------------*/
|
|
|
|
|
+void create_0x01_0x1053(uint8_t *outdata,uint16_t *len,uint16_t rcvType,uint32_t rcvSn,uint16_t targetType,uint16_t targetSn,uint8_t optType, uint8_t cmdType,uint16_t optval)
|
|
|
|
|
+{
|
|
|
|
|
+ sys1053_2053 *msg = NULL;
|
|
|
|
|
+ uint16_t crc = 0;
|
|
|
|
|
+ uint8_t send_size = 0;
|
|
|
|
|
+ gateway_collect_com_t *p_msg;
|
|
|
|
|
+
|
|
|
|
|
+ p_msg = (gateway_collect_com_t*)outdata;
|
|
|
|
|
+ p_msg->frame_header = 0xfefe;// 帧头
|
|
|
|
|
+ p_msg->proto_ver = GATE_COLL_PROTOTYPE;
|
|
|
|
|
+ p_msg->seq_no = 0;
|
|
|
|
|
+ p_msg->type = 0x01;
|
|
|
|
|
+ p_msg->secondType = 0x1053;
|
|
|
|
|
+ p_msg->len = sizeof(sys1053_2053) +2;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ msg = (sys1053_2053*)(outdata+12);
|
|
|
|
|
+
|
|
|
|
|
+ msg->firstLevelType = DEVICE_GATEWAY;
|
|
|
|
|
+ msg->firstLevelSn = downlink_config.gateway_id;
|
|
|
|
|
+ msg->rcvDevType = rcvType;
|
|
|
|
|
+ msg->rcvDevSn = rcvSn;
|
|
|
|
|
+ msg->targetDevType = targetType;
|
|
|
|
|
+ msg->targetDevSn = targetSn;
|
|
|
|
|
+ msg->reserve = 0;
|
|
|
|
|
+ msg->optType = optType;
|
|
|
|
|
+ msg->cmdType = cmdType;
|
|
|
|
|
+ msg->cmdVal = optval;
|
|
|
|
|
+ msg->reserve01 = 0x00;
|
|
|
|
|
+
|
|
|
|
|
+ send_size = sizeof(sys1053_2053);
|
|
|
|
|
+ crc = _crc16_get((uint8_t *)p_msg,send_size+GATE_COLL_HEAD_LEN);
|
|
|
|
|
+ p_msg->taxinfo.info[send_size] = crc&0xff;
|
|
|
|
|
+ p_msg->taxinfo.info[send_size+1] = (crc>>8)&0xff;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ *len = GATE_COLL_HEAD_LEN + send_size + 2;
|
|
|
|
|
+ return;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/*----------------------------------------------------------------------------------
|
|
|
|
|
+ * 设置编码器与抬枪信号正反序 0x01 --- 0x1053
|
|
|
|
|
+ * type: 0: 需要组数据 1: 服务器下发的,不用组数据,可直接下发
|
|
|
|
|
+ * ---------------------------------------------------------------------------------*/
|
|
|
|
|
+void gateway_collect_cmd_0x01_0x1053(uint8_t *data, uint16_t size)
|
|
|
|
|
+{
|
|
|
|
|
+ char *msg = NULL;
|
|
|
|
|
+ uint8_t send_buf[128];
|
|
|
|
|
+ gateway_collect_com_t *p_msg;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ memset(send_buf,0,sizeof(send_buf));
|
|
|
|
|
+
|
|
|
|
|
+ p_msg = (gateway_collect_com_t *)send_buf;
|
|
|
|
|
+
|
|
|
|
|
+ msg = (char *)lora_queue_mem_calloc_must();
|
|
|
|
|
+ if(msg) {
|
|
|
|
|
+ memcpy(msg, data, size);
|
|
|
|
|
+ lora_queue_insert((char *)msg, size);
|
|
|
|
|
+ data_dump("send 0x01-0x1053:",data,size);
|
|
|
|
|
+ //printf("send 0x01-0x1052:\r\n");
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ lora_queue_mem_free(p_msg);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
static uint16_t _crc_get_gw(uint8_t *data, uint8_t size)
|
|
static uint16_t _crc_get_gw(uint8_t *data, uint8_t size)
|
|
|
{
|
|
{
|
|
|
uint8_t i, crc = 0;
|
|
uint8_t i, crc = 0;
|
|
@@ -434,14 +505,14 @@ int tax_cmd_set(uint8_t cmd, uint8_t *parm, uint8_t size, void *puser)
|
|
|
memcpy(fparm, parm, size);
|
|
memcpy(fparm, parm, size);
|
|
|
|
|
|
|
|
//caculate crc val;
|
|
//caculate crc val;
|
|
|
- *p_crc = _crc_get_gw(&p_tax_tx->findex, p_tax_tx->flen-1);//校验码为帧号、命令码和参数逐字节的逻辑和
|
|
|
|
|
|
|
+ *p_crc = _crc_get_gw(&p_tax_tx->findex, p_tax_tx->flen-1);//校验码为帧号、命令码和参数逐字节的逻辑和
|
|
|
|
|
|
|
|
//send and rcv;
|
|
//send and rcv;
|
|
|
// data_dump("tax send", (uint8_t *)p_tax_tx, p_tax_tx->flen + 2);
|
|
// data_dump("tax send", (uint8_t *)p_tax_tx, p_tax_tx->flen + 2);
|
|
|
// uart_msg_send(uart, (char *)p_tax_tx, p_tax_tx->flen + 2);
|
|
// uart_msg_send(uart, (char *)p_tax_tx, p_tax_tx->flen + 2);
|
|
|
send_len = p_tax_tx->flen + 2;
|
|
send_len = p_tax_tx->flen + 2;
|
|
|
memcpy(puser,p_tax_tx,send_len);
|
|
memcpy(puser,p_tax_tx,send_len);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
return send_len;
|
|
return send_len;
|
|
|
}
|
|
}
|
|
|
/*-----------------------------------------------------------------------------------
|
|
/*-----------------------------------------------------------------------------------
|
|
@@ -476,11 +547,11 @@ int tax_cmd_set_0x8C(uint8_t cmd,uint8_t *parm, uint8_t size, void *puser)
|
|
|
static uint16_t _crc_get1(uint8_t *data, uint8_t size)
|
|
static uint16_t _crc_get1(uint8_t *data, uint8_t size)
|
|
|
{
|
|
{
|
|
|
uint8_t i, crc = 0;
|
|
uint8_t i, crc = 0;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
for(i = 0;i < size;i++){
|
|
for(i = 0;i < size;i++){
|
|
|
crc ^=data[i];
|
|
crc ^=data[i];
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
return crc;
|
|
return crc;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -554,11 +625,11 @@ int ytsf_cmd_set(uint8_t port, uint8_t cmd, uint8_t *parm, uint8_t size, void *
|
|
|
memcpy(fparm, parm, size);
|
|
memcpy(fparm, parm, size);
|
|
|
//printf("======================port = %d\r\n",port);
|
|
//printf("======================port = %d\r\n",port);
|
|
|
//caculate crc val;
|
|
//caculate crc val;
|
|
|
- *p_crc = _crc16_get(&p_tax_tx->fhead, p_tax_tx->flen);//校验码为帧号、命令码和参数逐字节的逻辑和
|
|
|
|
|
|
|
+ *p_crc = _crc16_get(&p_tax_tx->fhead, p_tax_tx->flen);//校验码为帧号、命令码和参数逐字节的逻辑和
|
|
|
*p_crc = htons(*p_crc);
|
|
*p_crc = htons(*p_crc);
|
|
|
send_size = p_tax_tx->flen + 2;
|
|
send_size = p_tax_tx->flen + 2;
|
|
|
_ytsf_data_code(send_buf, &send_size); /* 编码发送 */
|
|
_ytsf_data_code(send_buf, &send_size); /* 编码发送 */
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
memcpy(puser,p_tax_tx,send_size);
|
|
memcpy(puser,p_tax_tx,send_size);
|
|
|
|
|
|
|
|
return send_size;
|
|
return send_size;
|
|
@@ -1522,17 +1593,18 @@ GATEWAY_COLL_0x6C:
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
/*---------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------
|
|
|
- * 透传指令 0x01----0x2052
|
|
|
|
|
|
|
+ * 透传指令 0x01----0x2052,2053
|
|
|
* -------------------------------------------------------------------*/
|
|
* -------------------------------------------------------------------*/
|
|
|
-int collect_rcv_analyze0x01_0x2052(uint8_t *data, uint8_t len)
|
|
|
|
|
|
|
+int collect_rcv_analyze0x01_0x2052(uint16_t cmd,uint8_t *data, uint8_t len)
|
|
|
{
|
|
{
|
|
|
- printf("收到0x01---0x1052\r\n");
|
|
|
|
|
|
|
+ printf("收到指令:0x01---0x%04x\n",cmd);
|
|
|
|
|
|
|
|
tax_net_send_0x01_0x1052(data,len);
|
|
tax_net_send_0x01_0x1052(data,len);
|
|
|
|
|
|
|
|
timeout_stop(&g_taxSendTime);
|
|
timeout_stop(&g_taxSendTime);
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
/*-----------------------------------
|
|
/*-----------------------------------
|
|
|
* 向服务器发送网关的信息
|
|
* 向服务器发送网关的信息
|
|
|
* ----------------------------------*/
|
|
* ----------------------------------*/
|
|
@@ -1549,7 +1621,7 @@ void gateway_net_send_gatewayMsg(void)
|
|
|
g_runData.bsendgatewayfirmMsg = 0;
|
|
g_runData.bsendgatewayfirmMsg = 0;
|
|
|
printf("send gateway msg to server\r\n");
|
|
printf("send gateway msg to server\r\n");
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|