From a719e39a92465dd53aebfea647332a0227b8e0b9 Mon Sep 17 00:00:00 2001 From: yuliang Date: Tue, 1 Jul 2025 08:59:27 +0800 Subject: [PATCH] =?UTF-8?q?FIX=20|=20=E6=B7=BB=E5=8A=A0=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/include/pd_dau.h | 3 ++- app/include/pd_hf.h | 3 ++- app/lib/a_process/pd_dau.c | 24 +++++++++++++++++++++--- app/lib/a_process/pd_hf.c | 29 +++++++++++++++++++++++++---- 4 files changed, 50 insertions(+), 9 deletions(-) diff --git a/app/include/pd_dau.h b/app/include/pd_dau.h index 2f88baf..00a86bd 100755 --- a/app/include/pd_dau.h +++ b/app/include/pd_dau.h @@ -214,7 +214,8 @@ extern dau_t daus[PD_SLOTS_MAX]; /* Extern functions ----------------------------------------------------------*/ extern int32_t dau_handle_init(void); extern int32_t dau_handle_init_after(void); -extern void dau_send_data(dau_t *dau, dau_head_init_t *head_data); +extern void dau_data_send(dau_t *dau, dau_head_init_t *head_data); +extern int32_t dau_msg_send_cmd(uint32_t type, void *data); #endif #endif /************************ (C) COPYRIGHT LandPower ***** END OF FILE ****/ diff --git a/app/include/pd_hf.h b/app/include/pd_hf.h index 2c4528d..029c4b4 100755 --- a/app/include/pd_hf.h +++ b/app/include/pd_hf.h @@ -28,7 +28,8 @@ typedef struct typedef struct { uint8_t result; // 应答结果. 0:失败 1:成功 - uint8_t reserved[3]; // 保留 + uint8_t slot; // slot id + uint8_t reserved[2]; // 保留 } hf_ack_t; typedef struct diff --git a/app/lib/a_process/pd_dau.c b/app/lib/a_process/pd_dau.c index 88d573b..ac343df 100755 --- a/app/lib/a_process/pd_dau.c +++ b/app/lib/a_process/pd_dau.c @@ -39,7 +39,6 @@ dau_t daus[PD_SLOTS_MAX]; /* Private function prototypes -----------------------------------------------*/ /* Internal functions --------------------------------------------------------*/ - /* 包头填充 */ void _dau_head_init(dau_t *dau, dau_head_init_t *head_data) { @@ -125,7 +124,7 @@ 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_send_data(dau, &head_data); + dau_data_send(dau, &head_data); return; } @@ -274,7 +273,7 @@ int32_t dau_handle_init_after(void) } /* 数据发送 */ -void dau_send_data(dau_t *dau, dau_head_init_t *head_data) +void dau_data_send(dau_t *dau, dau_head_init_t *head_data) { int32_t rv = 0; @@ -288,4 +287,23 @@ void dau_send_data(dau_t *dau, dau_head_init_t *head_data) } } +/* 发送数据到后台通讯进程. */ +int32_t dau_msg_send_cmd(uint32_t type, void *data) +{ + dau_send_msg_t msg; + + /* 封装消息. */ + msg.type = type; + msg.data = data; + + /* 发送消息 */ + if (fifo_write(csg.fifo_cmd_id, (void*)(&msg), sizeof(dau_send_msg_t)) != sizeof(dau_send_msg_t)) + { + DBG(DBG_M_PD_DAU_ERR, "DAU write ERROR! type=%d\r\n", type); + return E_ERROR; + } + + return E_NONE; +} + #endif diff --git a/app/lib/a_process/pd_hf.c b/app/lib/a_process/pd_hf.c index 18c7458..9d7f54b 100755 --- a/app/lib/a_process/pd_hf.c +++ b/app/lib/a_process/pd_hf.c @@ -124,7 +124,7 @@ void _hf_prps_get_send(uint8_t slot, void *data) memcpy(param, data, sizeof(hf_prps_get_t)); - dau_send_data(dau, &head_data); + dau_data_send(dau, &head_data); return; } @@ -148,7 +148,7 @@ void _hf_heartbeat_recv(uint8_t slot, char *pkt, uint16_t len) head_data.pkt = pkt; head_data.len = sizeof(dau_pkt_head_t) + 4; *timestamp = time(NULL); - dau_send_data(dau, &head_data); + dau_data_send(dau, &head_data); return; } @@ -156,6 +156,27 @@ 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) { + 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_PRPS, data) != E_NONE) + { + XFREE(MTYPE_CSG, data); + } + return; } @@ -224,7 +245,7 @@ void _hf_trend_recv(uint8_t slot, char *pkt, uint16_t len) ack.result = 0; ack.boosterpack = head_trend->boosterpack; memcpy(ack_p, &ack, sizeof(hf_trend_ack_t)); - dau_send_data(dau, &head_data); + dau_data_send(dau, &head_data); return; } @@ -287,7 +308,7 @@ void _hf_event_recv(uint8_t slot, char *pkt, uint16_t len) ack.result = 0; ack.boosterpack = head_event->boosterpack; memcpy(ack_p, &ack, sizeof(hf_event_ack_t)); - dau_send_data(dau, &head_data); + dau_data_send(dau, &head_data); return; }