FIX 1.解决高频dau未发送趋势和事件的最后一包应答;

main
wangbo 4 weeks ago
parent 10bddb1480
commit c35bdbd6bb

@ -236,10 +236,13 @@ int32_t _csg_pkt_check(char *pkt)
csg_pkt_head_t *head = (csg_pkt_head_t*)pkt;
/* 对主次设备号进行识别, 次设备号可以是广播. */
if ((head->dev_type_m != device_info.type_m))
if (head->dev_id != device_info.dev_id
|| head->dev_type_m != device_info.type_m
|| head->dev_type_s != device_info.type_s)
{
DBG(DBG_M_PD_CSG_ERR, "@1 type_m=%d %d \r\n", head->dev_type_m, device_info.type_m);
return E_ERROR;
DBG(DBG_M_PD_CSG_ERR, "Device type not match:0x%x(0x%x) %d-%d(%d-%d)\r\n", device_info.dev_id, head->dev_id,
device_info.type_m, device_info.type_s, head->dev_type_m, head->dev_type_s);
//return E_ERROR;
}
if (head->len > 1500)
@ -961,12 +964,12 @@ int32_t _csg_recv_process(char *pkt, uint32_t len)
/* 报文头和 CRC 校验. */
LD_E_RETURN(DBG_M_PD_CSG_ERR, _csg_pkt_check(pkt));
csg.heartbeat_timeout_cnt = 0;
if (head->slot > 0)
{
if (_csg_slot_is_valid(pkt, &typem, &types) != E_NONE)
{
DBG(DBG_M_PD_CSG_ERR, "Invalid slot=%d\n", head->slot);
DBG(DBG_M_PD_CSG_ERR, "Invalid slot=%d\r\n", head->slot);
return E_ERROR;
}
}

@ -677,6 +677,7 @@ void _hf_recv_trend(uint8_t slot, char *pkt, uint16_t len)
uint8_t port = 0;
hf_trend_ack_t ack;
hf_trend_ack_t *ack_p = (hf_trend_ack_t*)(pkt + sizeof(dau_pkt_head_t));
int last_pack_flag = 0;
/* 不处理补包数据 */
if (!head_trend->boosterpack)
@ -704,12 +705,13 @@ void _hf_recv_trend(uint8_t slot, char *pkt, uint16_t len)
}
//*temp = 0x5a5a;
*temp = port;
last_pack_flag = 1;
/* 发送给后台, 内存由后台释放 */
if (dau_msg_send(DAU_SEND_TREND, slot, temp) != E_NONE)
{
return;
}
//if (dau_msg_send(DAU_SEND_TREND, slot, temp) != E_NONE)
//{
// return;
//}
}
}
else if (HF_TREND_TYPE_PRPD == head_trend->type)
@ -744,6 +746,15 @@ void _hf_recv_trend(uint8_t slot, char *pkt, uint16_t len)
memcpy(ack_p, &ack, sizeof(hf_trend_ack_t));
dau_data_send(dau, &head_data);
if (last_pack_flag)
{
/* 发送给后台, 内存由后台释放 */
if (dau_msg_send(DAU_SEND_TREND, slot, temp) != E_NONE)
{
return;
}
}
return;
}
@ -805,6 +816,7 @@ void _hf_recv_event(uint8_t slot, char *pkt, uint16_t len)
char *point = NULL;
hf_event_ack_t ack;
hf_event_ack_t *ack_p = (hf_event_ack_t*)(pkt + sizeof(dau_pkt_head_t));
int last_pack_flag = 0;
/* 不处理补包数据 */
if (!head_event->boosterpack)
@ -846,12 +858,13 @@ void _hf_recv_event(uint8_t slot, char *pkt, uint16_t len)
}
memcpy(event_send, event, sizeof(hf_event_t));
last_pack_flag = 1;
/* 发送给后台, 内存由后台释放 */
if (dau_msg_send(DAU_SEND_EVENT, slot, event_send) != E_NONE)
{
return;
}
//if (dau_msg_send(DAU_SEND_EVENT, slot, event_send) != E_NONE)
//{
// return;
//}
}
}
@ -867,6 +880,15 @@ void _hf_recv_event(uint8_t slot, char *pkt, uint16_t len)
memcpy(ack_p, &ack, sizeof(hf_event_ack_t));
dau_data_send(dau, &head_data);
if (last_pack_flag)
{
/* 发送给后台, 内存由后台释放 */
if (dau_msg_send(DAU_SEND_EVENT, slot, event_send) != E_NONE)
{
return;
}
}
return;
}

@ -220,13 +220,13 @@ void *_modbus_send_handle()
pcard = &modbus.card[slot];
dau = &daus[slot];
//DBG(DBG_M_PD_MODBUS, "slot%d unit_id:%d status:%d\n", slot, pcard->unit_id, pcard->status);
DBG(DBG_M_PD_MODBUS, "slot%d unit_id:%d status:%d\n", slot, pcard->unit_id, pcard->status);
if (pcard->status)
{
sleep(1);
if (_modbus_get_device_type(pcard->unit_id, &dau->info.type_m, &dau->info.type_s) != E_NONE)
continue;
//DBG(DBG_M_PD_MODBUS, "slot%d typem:%d types:%d\n", slot, dau->info.type_m, dau->info.type_s);
DBG(DBG_M_PD_MODBUS, "slot%d typem:%d types:%d\n", slot, dau->info.type_m, dau->info.type_s);
if (DEVICE_IR_TYPE == dau->info.type_s && DEVICE_M_TYPE == dau->info.type_m)
{

Loading…
Cancel
Save