From 326b57ecb15580a9a42357656d24ba2835367486 Mon Sep 17 00:00:00 2001 From: yuliang Date: Tue, 1 Jul 2025 09:21:06 +0800 Subject: [PATCH] =?UTF-8?q?FIX=20|=20=E6=B7=BB=E5=8A=A0=E9=87=8D=E5=90=AF?= =?UTF-8?q?=E5=92=8Cdau=E6=B7=BB=E5=8A=A0=E5=9B=9E=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/include/pd_dau.h | 4 +- app/lib/a_process/pd_dau.c | 23 ++++++++++- app/lib/a_process/pd_hf.c | 78 ++++++++++++++++++++++++++++++-------- 3 files changed, 87 insertions(+), 18 deletions(-) diff --git a/app/include/pd_dau.h b/app/include/pd_dau.h index 00a86bd..a846b75 100755 --- a/app/include/pd_dau.h +++ b/app/include/pd_dau.h @@ -106,7 +106,9 @@ enum DAU_P_CMD /* 命令类型. */ enum DAU_SEND_TYPE { - DAU_SEND_PRPS = 1, + DAU_SEND_ADD = 1, + DAU_SEND_RESET = 2, + DAU_SEND_PRPS = 3, DAU_SEND_MAX }; diff --git a/app/lib/a_process/pd_dau.c b/app/lib/a_process/pd_dau.c index ac343df..00e4c26 100755 --- a/app/lib/a_process/pd_dau.c +++ b/app/lib/a_process/pd_dau.c @@ -110,7 +110,8 @@ void _dau_recv_connect(dau_t *dau, uint16_t recv_len) dau_pkt_head_t *head = (dau_pkt_head_t*)dau->buf_recv; dau_contact_t *pnet = (dau_contact_t*)(dau->buf_recv + sizeof(dau_pkt_head_t)); dau_ack_t *ack = (dau_ack_t*)(dau->buf_recv + sizeof(dau_pkt_head_t)); - + dau_contact_t *info = NULL; + /* 复制设备信息 */ memcpy(&dau->info, pnet, sizeof(dau_contact_t)); @@ -124,7 +125,25 @@ void _dau_recv_connect(dau_t *dau, uint16_t recv_len) head_data.pkt_id = head->pkt_id; head_data.pkt = dau->buf_recv; head_data.len = sizeof(dau_pkt_head_t) + sizeof(dau_ack_t); - dau_data_send(dau, &head_data); + dau_data_send(dau, &head_data); + + /* 给后台发送添加信息 */ + /* 申请内存 */ + info = XMALLOC(MTYPE_CSG, sizeof(dau_contact_t)); + if (!info) + { + DBG(DBG_M_PD_DAU_ERR, "XMALLOC ERROR!\r\n"); + return; + } + + /* 复制设备信息 */ + memcpy(info, &dau->info, sizeof(dau_contact_t)); + + /* 发送给后台 */ + if (dau_msg_send_cmd(DAU_SEND_ADD, info) != E_NONE) + { + XFREE(MTYPE_CSG, info); + } return; } diff --git a/app/lib/a_process/pd_hf.c b/app/lib/a_process/pd_hf.c index 9d7f54b..5ea51d3 100755 --- a/app/lib/a_process/pd_hf.c +++ b/app/lib/a_process/pd_hf.c @@ -59,12 +59,13 @@ /* Private function prototypes -----------------------------------------------*/ -extern void _hf_heartbeat_recv(uint8_t slot, char *pkt, uint16_t len); -extern void _hf_prps_get_recv(uint8_t slot, char *pkt, uint16_t len); -extern void _hf_trend_recv(uint8_t slot, char *pkt, uint16_t len); -extern void _hf_event_recv(uint8_t slot, char *pkt, uint16_t len); +extern void _hf_send_reset(uint8_t slot, void *data); +extern void _hf_send_prps_get(uint8_t slot, void *data); -extern void _hf_prps_get_send(uint8_t slot, void *data); +extern void _hf_recv_heartbeat(uint8_t slot, char *pkt, uint16_t len); +extern void _hf_recv_prps_get(uint8_t slot, char *pkt, uint16_t len); +extern void _hf_recv_trend(uint8_t slot, char *pkt, uint16_t len); +extern void _hf_recv_event(uint8_t slot, char *pkt, uint16_t len); // 命令映射表 static dau_recv_fun_cb _hf_command[] = @@ -79,7 +80,7 @@ static dau_recv_fun_cb _hf_command[] = NULL, // DAU_C_DEV_INFO_GET 7 NULL, // 8 NULL, // DAU_C_UPDATE_RESULT 9 - _hf_heartbeat_recv, // DAU_C_HEARTBEAT 10 + _hf_recv_heartbeat, // DAU_C_HEARTBEAT 10 }; // 命令映射表 @@ -90,26 +91,46 @@ static dau_recv_fun_cb _hf_prv_command[] = NULL, // DAU_P_CONFIG_GET 2 NULL, // DAU_P_CONFIG_PORT_SET 3 NULL, // DAU_P_CONFIG_PORT_GET 4 - _hf_prps_get_recv, // DAU_P_CONFIG_REAL_WAVE 5 + _hf_recv_prps_get, // DAU_P_CONFIG_REAL_WAVE 5 NULL, // 6 NULL, // 7 NULL, // 8 NULL, // 9 - _hf_trend_recv, // DAU_P_TREND 10 + _hf_recv_trend, // DAU_P_TREND 10 NULL, // DAU_P_REAL_PRPS 11 - _hf_event_recv, // DAU_P_EVENT 12 + _hf_recv_event, // DAU_P_EVENT 12 }; // 命令映射表 static dau_send_fun_cb _hf_send_command[] = { NULL, // 0 - _hf_prps_get_send, // DAU_SEND_PRPS 1 + NULL, // DAU_SEND_ADD 1 + _hf_send_reset, // DAU_SEND_RESET 2 + _hf_send_prps_get, // DAU_SEND_PRPS 3 }; /* Interface functions -------------------------------------------------------*/ +/* PRPS 重启发送 */ +void _hf_send_reset(uint8_t slot, void *data) +{ + dau_head_init_t head_data; + dau_t *dau = &daus[slot]; + + /* 回复报文 */ + head_data.cmd_type = DAU_REQUEST; + head_data.cmd = DAU_C_RESET; + head_data.pkt_id = dau->pkt_id++; + head_data.pkt = dau->buf_send; + head_data.len = sizeof(dau_pkt_head_t); + + dau_data_send(dau, &head_data); + + return; +} + /* PRPS 关注报文发送 */ -void _hf_prps_get_send(uint8_t slot, void *data) +void _hf_send_prps_get(uint8_t slot, void *data) { dau_head_init_t head_data; dau_t *dau = &daus[slot]; @@ -129,8 +150,35 @@ void _hf_prps_get_send(uint8_t slot, void *data) return; } +/* 重启报文接收 */ +void _hf_recv_reset(uint8_t slot, char *pkt, uint16_t len) +{ + hf_ack_t *ack = (hf_ack_t*)(pkt + sizeof(dau_pkt_head_t)); + hf_ack_t *data = NULL; + + /* 申请内存 */ + data = XMALLOC(MTYPE_CSG, sizeof(hf_ack_t)); + if (!data) + { + DBG(DBG_M_PD_HF_ERR, "XMALLOC ERROR!\r\n"); + return; + } + + /* 装填数据 */ + data->result = ack->result; + data->slot = slot; + + /* 发送给后台 */ + if (dau_msg_send_cmd(DAU_SEND_RESET, data) != E_NONE) + { + XFREE(MTYPE_CSG, data); + } + + return; +} + /* 心跳报文接收 */ -void _hf_heartbeat_recv(uint8_t slot, char *pkt, uint16_t len) +void _hf_recv_heartbeat(uint8_t slot, char *pkt, uint16_t len) { dau_head_init_t head_data; dau_t *dau = &daus[slot]; @@ -154,7 +202,7 @@ void _hf_heartbeat_recv(uint8_t slot, char *pkt, uint16_t len) } /* 心跳报文接收 */ -void _hf_prps_get_recv(uint8_t slot, char *pkt, uint16_t len) +void _hf_recv_prps_get(uint8_t slot, char *pkt, uint16_t len) { hf_ack_t *ack = (hf_ack_t*)(pkt + sizeof(dau_pkt_head_t)); hf_ack_t *data = NULL; @@ -181,7 +229,7 @@ void _hf_prps_get_recv(uint8_t slot, char *pkt, uint16_t len) } /* 趋势报文接收 */ -void _hf_trend_recv(uint8_t slot, char *pkt, uint16_t len) +void _hf_recv_trend(uint8_t slot, char *pkt, uint16_t len) { dau_head_init_t head_data; dau_t *dau = &daus[slot]; @@ -251,7 +299,7 @@ void _hf_trend_recv(uint8_t slot, char *pkt, uint16_t len) } /* 事件报文接收 */ -void _hf_event_recv(uint8_t slot, char *pkt, uint16_t len) +void _hf_recv_event(uint8_t slot, char *pkt, uint16_t len) { dau_head_init_t head_data; dau_t *dau = &daus[slot];