WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
diag_pkt.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2021-2021. All rights reserved.
3 * Description: zdiag pkt
4 * This file should be changed only infrequently and with great care.
5 */
6#ifndef __ZDIAG_PKT_H__
7#define __ZDIAG_PKT_H__
8#include "diag_common.h"
9#include "diag.h"
10
11
16
23
24#define DIAG_PKT_DATA_ATTRIBUTE_SINGLE_TASK 0x1
25#define DIAG_PKT_DATA_ATTRIBUTE_DYN_MEM 0x2
26
31
32typedef struct {
34 uint16_t data_len[DIAG_PKT_DATA_ID_USR_MAX];
35 uint8_t data_cnt : 2;
36 uint8_t need_free : 1; /* true:pkt有数据需要释放 false:pkt无数据需要释放 */
37 uint8_t single_task : 1; /* true:pkt有数据无法跨任务传递 false:pkt无数据无法跨任务传递 */
38 uint8_t critical : 1; /* 非调度报文,如:死机 */
40
48typedef struct {
49 uint16_t sn;
51 uint8_t ctrl;
53 uint8_t pad;
54 uint16_t cmd_id;
56 uint16_t param_size;
58 uint8_t *param;
61
63errcode_t zdiag_check_hcc_pkt(const uint8_t *data, uint16_t size);
64void diag_pkt_handle_init(diag_pkt_handle_t *pkt, uint8_t data_cnt);
66void diag_pkt_handle_set_data(diag_pkt_handle_t *pkt, uint8_t idx, uint8_t *data,
67 uint16_t data_len, diag_pkt_data_type_t attribute);
68
69void zdiag_mk_log_pkt(diag_cmd_log_layer_ind_stru_t *log_pkt, uint32_t module_id, uint32_t msg_id);
70void zdiag_mk_log_pkt_sn(diag_cmd_log_layer_ind_stru_t *log_pkt, uint32_t module_id, uint32_t msg_id, uint32_t sn);
71void diag_mk_ind_header(msp_diag_head_ind_stru_t *ind, uint16_t cmd_id, uint16_t packet_size);
72void diag_mk_req_header(msp_diag_head_req_stru_t *req, uint16_t cmd_id, uint16_t packet_size);
74void diag_mk_mux_header_1(msp_mux_packet_head_stru_t *mux, uint8_t type, uint16_t cmd_id, uint16_t pkt_size);
75void diag_mk_mux_header_2(msp_mux_packet_head_stru_t *mux, diag_addr dst, uint16_t crc16);
76
77static inline msp_mux_packet_head_stru_t *diag_pkt_handle_get_mux(const diag_pkt_handle_t *pkt)
78{
79 return (msp_mux_packet_head_stru_t *)pkt->data[0];
80}
81
82static inline msp_diag_head_ind_stru_t *diag_receive_pkt_handle_get_ind(const diag_pkt_handle_t *pkt)
83{
85}
86
87static inline uint8_t *diag_receive_pkt_handle_get_ind_data(const diag_pkt_handle_t *pkt)
88{
90}
91
92static inline msp_diag_head_req_stru_t *diag_receive_pkt_handle_get_req(const diag_pkt_handle_t *pkt)
93{
95}
96
97static inline uint8_t *diag_receive_pkt_handle_get_req_data(const diag_pkt_handle_t *pkt)
98{
100}
101
102static inline uint32_t diag_pkt_handle_get_total_size(const diag_pkt_handle_t *pkt)
103{
104 uint32_t total_size = 0;
105 for (int i = 0; i < pkt->data_cnt; i++) {
106 total_size += (uint32_t)pkt->data_len[i];
107 }
108 return total_size;
109}
110
111static inline void diag_pkt_handle_clean(diag_pkt_handle_t *pkt)
112{
113 pkt->need_free = false;
114 for (int i = 0; i < pkt->data_cnt; i++) {
115 pkt->data[i] = NULL;
116 pkt->data_len[i] = 0;
117 }
118 pkt->data_cnt = 0;
119}
120
121static inline void diag_pkt_cnt_increase(diag_pkt_handle_t *pkt, uint8_t cnt)
122{
123 pkt->data_cnt += cnt;
124}
125
126#endif
#define NULL
Definition common_def.h:21
uint8_t diag_addr
Definition dfx_resource_id.h:35
#define DIAG_MUX_HEADER_SIZE
Definition diag_common.h:91
#define DIAG_REQ_HEADER_SIZE
Definition diag_common.h:54
#define DIAG_IND_HEADER_SIZE
Definition diag_common.h:61
void diag_pkt_handle_set_data(diag_pkt_handle_t *pkt, uint8_t idx, uint8_t *data, uint16_t data_len, diag_pkt_data_type_t attribute)
Definition zdiag_pkt.c:47
void diag_mk_mux_header_1(msp_mux_packet_head_stru_t *mux, uint8_t type, uint16_t cmd_id, uint16_t pkt_size)
Definition zdiag_pkt.c:110
diag_pkt_mem_type_t
Definition diag_pkt.h:12
@ DIAG_PKT_MEM_TYPE_HEAD_STACK_DATA_STACK
Definition diag_pkt.h:13
@ DIAG_PKT_MEM_TYPE_HEAD_DATA_DFX_MALLOC
Definition diag_pkt.h:14
void diag_mk_ind_header(msp_diag_head_ind_stru_t *ind, uint16_t cmd_id, uint16_t packet_size)
Definition zdiag_pkt.c:103
void zdiag_mk_log_pkt_sn(diag_cmd_log_layer_ind_stru_t *log_pkt, uint32_t module_id, uint32_t msg_id, uint32_t sn)
Definition zdiag_pkt.c:75
void diag_pkt_handle_init(diag_pkt_handle_t *pkt, uint8_t data_cnt)
Definition zdiag_pkt.c:36
void diag_mk_req_header(msp_diag_head_req_stru_t *req, uint16_t cmd_id, uint16_t packet_size)
Definition zdiag_pkt.c:94
errcode_t zdiag_check_hcc_pkt(const uint8_t *data, uint16_t size)
Definition zdiag_pkt.c:28
#define DIAG_PKT_DATA_ATTRIBUTE_DYN_MEM
Definition diag_pkt.h:25
void diag_mk_mux_header_2(msp_mux_packet_head_stru_t *mux, diag_addr dst, uint16_t crc16)
Definition zdiag_pkt.c:124
void diag_mk_cnf_header(msp_diag_head_cnf_stru_t *cnf, msp_diag_ack_param_t *ack)
Definition zdiag_pkt.c:84
void diag_pkt_set_critical(diag_pkt_handle_t *pkt)
Definition zdiag_pkt.c:42
diag_pkt_data_type_t
Definition diag_pkt.h:27
@ DIAG_PKT_DATA_DFX_MALLOC
Definition diag_pkt.h:29
@ DIAG_PKT_DATA_STACK
Definition diag_pkt.h:28
errcode_t zdiag_check_mux_pkt(msp_mux_packet_head_stru_t *mux, uint16_t size)
Definition zdiag_pkt.c:13
diag_pkt_data_id_t
Definition diag_pkt.h:17
@ DIAG_PKT_DATA_ID_DATA_2
Definition diag_pkt.h:20
@ DIAG_PKT_DATA_ID_DATA_0
Definition diag_pkt.h:18
@ DIAG_PKT_DATA_ID_DATA_1
Definition diag_pkt.h:19
@ DIAG_PKT_DATA_ID_USR_MAX
Definition diag_pkt.h:21
void zdiag_mk_log_pkt(diag_cmd_log_layer_ind_stru_t *log_pkt, uint32_t module_id, uint32_t msg_id)
Definition zdiag_pkt.c:65
#define DIAG_PKT_DATA_ATTRIBUTE_SINGLE_TASK
Definition diag_pkt.h:24
uint32_t errcode_t
Definition of error code.
Definition errcode.h:30
osal_u8 type
Definition oal_net.h:0
Definition diag_common.h:36
Definition diag_pkt.h:32
uint8_t critical
Definition diag_pkt.h:38
uint8_t * data[DIAG_PKT_DATA_ID_USR_MAX]
Definition diag_pkt.h:33
uint8_t data_cnt
Definition diag_pkt.h:35
uint8_t need_free
Definition diag_pkt.h:36
uint16_t data_len[DIAG_PKT_DATA_ID_USR_MAX]
Definition diag_pkt.h:34
uint8_t single_task
Definition diag_pkt.h:37
diag应答结构体
Definition soc_zdiag.h:93
Definition diag_common.h:63
Definition diag_common.h:56
Definition diag_common.h:46
Definition diag_common.h:73
Definition hal_uart_v151_regs_def.h:38