From c35bdbd6bb1e19a6bcdad322074b7902d403c44d Mon Sep 17 00:00:00 2001 From: wangbo Date: Fri, 15 Aug 2025 06:41:23 +0000 Subject: [PATCH] =?UTF-8?q?FIX=201.=E8=A7=A3=E5=86=B3=E9=AB=98=E9=A2=91dau?= =?UTF-8?q?=E6=9C=AA=E5=8F=91=E9=80=81=E8=B6=8B=E5=8A=BF=E5=92=8C=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E6=9C=80=E5=90=8E=E4=B8=80=E5=8C=85=E5=BA=94?= =?UTF-8?q?=E7=AD=94;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/lib/a_process/pd_csg.c | 13 +++++++----- app/lib/a_process/pd_hf.c | 38 +++++++++++++++++++++++++++-------- app/lib/a_process/pd_modbus.c | 4 ++-- 3 files changed, 40 insertions(+), 15 deletions(-) diff --git a/app/lib/a_process/pd_csg.c b/app/lib/a_process/pd_csg.c index c40c12c..20a488d 100755 --- a/app/lib/a_process/pd_csg.c +++ b/app/lib/a_process/pd_csg.c @@ -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; } } diff --git a/app/lib/a_process/pd_hf.c b/app/lib/a_process/pd_hf.c index aca6066..ddfafe2 100755 --- a/app/lib/a_process/pd_hf.c +++ b/app/lib/a_process/pd_hf.c @@ -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; } diff --git a/app/lib/a_process/pd_modbus.c b/app/lib/a_process/pd_modbus.c index ebf37b9..79592ed 100755 --- a/app/lib/a_process/pd_modbus.c +++ b/app/lib/a_process/pd_modbus.c @@ -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) {