FIX | 添加命令回复功能

main
yuliang 1 week ago
parent 694ceed487
commit a719e39a92

@ -214,7 +214,8 @@ extern dau_t daus[PD_SLOTS_MAX];
/* Extern functions ----------------------------------------------------------*/ /* Extern functions ----------------------------------------------------------*/
extern int32_t dau_handle_init(void); extern int32_t dau_handle_init(void);
extern int32_t dau_handle_init_after(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
#endif #endif
/************************ (C) COPYRIGHT LandPower ***** END OF FILE ****/ /************************ (C) COPYRIGHT LandPower ***** END OF FILE ****/

@ -28,7 +28,8 @@ typedef struct
typedef struct typedef struct
{ {
uint8_t result; // 应答结果. 0:失败 1:成功 uint8_t result; // 应答结果. 0:失败 1:成功
uint8_t reserved[3]; // 保留 uint8_t slot; // slot id
uint8_t reserved[2]; // 保留
} hf_ack_t; } hf_ack_t;
typedef struct typedef struct

@ -39,7 +39,6 @@ dau_t daus[PD_SLOTS_MAX];
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
/* Internal functions --------------------------------------------------------*/ /* Internal functions --------------------------------------------------------*/
/* 包头填充 */ /* 包头填充 */
void _dau_head_init(dau_t *dau, dau_head_init_t *head_data) 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_id = head->pkt_id;
head_data.pkt = dau->buf_recv; head_data.pkt = dau->buf_recv;
head_data.len = sizeof(dau_pkt_head_t) + sizeof(dau_ack_t); 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; 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; 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 #endif

@ -124,7 +124,7 @@ void _hf_prps_get_send(uint8_t slot, void *data)
memcpy(param, data, sizeof(hf_prps_get_t)); memcpy(param, data, sizeof(hf_prps_get_t));
dau_send_data(dau, &head_data); dau_data_send(dau, &head_data);
return; return;
} }
@ -148,7 +148,7 @@ void _hf_heartbeat_recv(uint8_t slot, char *pkt, uint16_t len)
head_data.pkt = pkt; head_data.pkt = pkt;
head_data.len = sizeof(dau_pkt_head_t) + 4; head_data.len = sizeof(dau_pkt_head_t) + 4;
*timestamp = time(NULL); *timestamp = time(NULL);
dau_send_data(dau, &head_data); dau_data_send(dau, &head_data);
return; 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) 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; return;
} }
@ -224,7 +245,7 @@ void _hf_trend_recv(uint8_t slot, char *pkt, uint16_t len)
ack.result = 0; ack.result = 0;
ack.boosterpack = head_trend->boosterpack; ack.boosterpack = head_trend->boosterpack;
memcpy(ack_p, &ack, sizeof(hf_trend_ack_t)); memcpy(ack_p, &ack, sizeof(hf_trend_ack_t));
dau_send_data(dau, &head_data); dau_data_send(dau, &head_data);
return; return;
} }
@ -287,7 +308,7 @@ void _hf_event_recv(uint8_t slot, char *pkt, uint16_t len)
ack.result = 0; ack.result = 0;
ack.boosterpack = head_event->boosterpack; ack.boosterpack = head_event->boosterpack;
memcpy(ack_p, &ack, sizeof(hf_event_ack_t)); memcpy(ack_p, &ack, sizeof(hf_event_ack_t));
dau_send_data(dau, &head_data); dau_data_send(dau, &head_data);
return; return;
} }

Loading…
Cancel
Save