WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
hmac_radar.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2020-2020. All rights reserved.
3 * Description: dmaradar
4 * Create: 2020-7-5
5 */
6
7#ifndef __HMAC_RADAR_H__
8#define __HMAC_RADAR_H__
9
10#if defined(_PRE_WLAN_FEATURE_DFS_OPTIMIZE) || defined(_PRE_WLAN_FEATURE_DFS_ENABLE)
11/*****************************************************************************
12 1 其他头文件包含
13*****************************************************************************/
14#include "hal_ext_if.h"
15#include "mac_device_ext.h"
16#endif
17
18#ifdef __cplusplus
19#if __cplusplus
20extern "C" {
21#endif
22#endif
23
24#if defined(_PRE_WLAN_FEATURE_DFS_OPTIMIZE) || defined(_PRE_WLAN_FEATURE_DFS_ENABLE)
25#undef THIS_FILE_ID
26#define THIS_FILE_ID OAM_FILE_ID_DMAC_RADAR_H
27
28/*****************************************************************************
29 2 宏定义
30*****************************************************************************/
31#define STAGGER_MAX_DURATION 100 /* STAGGER类型雷达最大宽度 */
32#define STAGGER_PULSE_MARGIN 4 /* STAGGER类型雷达相同脉冲间隔误差 */
33#define RADAR_PULSE_MARGIN_ETSI 4 /* ETSI脉冲间隔最小误差 */
34#define RADAR_PULSE_MARGIN_FCC 3 /* FCC脉冲间隔最小误差 */
35#define RADAR_PULSE_MARGIN_FCC_LOW_TYPE 3 /* FCC TYPE0~TYPE2脉冲间隔最小误差 */
36
37#define RADAR_PULSE_DURATION_MARGIN 20 /* 脉冲宽度最小误差 */
38#define RADAR_PULSE_POWER_MARGIN 20 /* 脉冲功率最小误差 */
39#define RADAR_PULSE_DURATION_MARGIN_ERROR 100 /* 脉冲宽度最大误差 */
40#define RADAR_FCC_CHIRP_PULSE_DURATION_MARGIN 5 /* 脉冲宽度最小误差 */
41
42#define MAX_RADAR_NORMAL_PULSE_ANA_CNT 5 /* 非chirp雷达脉冲信息分析最大个数 */
43#define MAX_RADAR_NORMAL_PULSE_ANA_CNT_ETSI_TYPE3 8 /* ETSI type3雷达脉冲信息分析最大个数 */
44#define EXTRA_PULSE_CNT 3 /* buf中额外查询的脉冲个数 */
45
46#define MAX_RADAR_STAGGER_NUM 3 /* STAGGER类型脉冲最大个数 */
47#define MIN_RADAR_STAGGER_DURATION 9 /* STAGGER类型脉冲最小宽度 */
48#define MEAN_RADAR_STAGGER_DURATION 80 /* STAGGER类型脉冲最大宽度 */
49
50#define MIN_RADAR_NORMAL_DURATION 9 /* normal类型脉冲最小宽度 */
51#define MIN_RADAR_NORMAL_DURATION_MKK 8 /* normal类型脉冲最小宽度 */
52
53#define MIN_RADAR_NORMAL_DURATION_ETSI_TYPE3 180 /* ETSI TYPE3 最小宽度 */
54#define MAX_RADAR_NORMAL_DURATION_FCC_TYPE2 110 /* FCC TYPE2 最大宽度 */
55#define MIN_RADAR_NORMAL_DURATION_FCC_TYPE4 40 /* FCC TYPE4 最小宽度 */
56
57#define MIN_RADAR_PULSE_PRI 148 /* 雷达脉冲最小间距(us) */
58#define MIN_ETSI_PULSE_PRI 248 /* ETSI雷达脉冲最小间距(us) */
59
60#define MIN_ETSI_CHIRP_PRI 245 /* ETSI chirp雷达最小脉冲间隔(us) */
61#define MIN_FCC_CHIRP_PRI 990 /* FCC chirp雷达最小脉冲间隔(us) */
62#define MIN_MKK_CHIRP_PRI 990 /* MKK chirp雷达最小脉冲间隔(us) */
63#define MIN_ETSI_CHIRP_PRI_NUM 4 /* ETSI chirp雷达最小脉冲间隔个数 */
64#define MIN_FCC_CHIRP_PRI_NUM 1 /* FCC chirp雷达最小脉冲间隔个数 */
65#define MIN_MKK_CHIRP_PRI_NUM 1 /* MKK chirp雷达最小脉冲间隔个数 */
66
67#define MIN_RADAR_PULSE_POWER 394 /* 脉冲power最小值 */
68#define MIN_RADAR_PULSE_POWER_FCC_TYPE0 390 /* FCC type0脉冲power最小值 */
69#define MIN_RADAR_PULSE_POWER_ETSI_STAGGER 394 /* ETSI Stagger脉冲power最小值 */
70
71#define RADAR_NORMAL_PULSE_TYPE 0 /* 非chirp雷达脉冲类型 */
72#define RADAR_CHIRP_PULSE_TYPE 1 /* chirp雷达脉冲类型 */
73
74#define MAX_PULSE_TIMES 4 /* 脉冲间隔之间最大倍数 */
75
76#define MAX_STAGGER_PULSE_TIMES 4 /* stagger脉冲间隔相差的最大倍数关系 */
77#define MIN_FCC_TOW_TIMES_INT_PRI 100 // 200 /* FCC chirp雷达两次中断的最小时间间隔(ms) */
78#define MAX_FCC_TOW_TIMES_INT_PRI 8000 /* FCC chirp雷达两次中断的最大时间间隔(ms) */
79#define MAX_FCC_CHIRP_PULSE_CNT_IN_600US 5 /* FCC chirp雷达一个中断600ms内最大脉冲个数 */
80#define MAX_FCC_CHIRP_EQ_DURATION_NUM 3 /* FCC chirp连续相同duration的最大个数 */
81
82#define RADAR_PULSE_NO_PERIOD 0 /* 脉冲不具备周期性 */
83#define RADAR_PULSE_NORMAL_PERIOD 1 /* 脉冲具备周期性 */
84#define RADAR_PULSE_BIG_PERIOD 2 /* 脉冲间隔相差较大 */
85#define RADAR_PULSE_ONE_DIFF_PRI 3 /* 等间隔脉冲中出现一个不等间隔 */
86
87#define RADAR_ETSI_PPS_MARGIN 2
88#define RADAR_ETSI_TYPE5_MIN_PPS_DIFF (20 - RADAR_ETSI_PPS_MARGIN) /* ETSI type5不同PRI之间最小PPS偏差度 */
89#define RADAR_ETSI_TYPE5_MAX_PPS_DIFF (50 + RADAR_ETSI_PPS_MARGIN) /* ETSI type5不同PRI之间最大PPS偏差度 */
90#define RADAR_ETSI_TYPE6_MIN_PPS_DIFF (80 - RADAR_ETSI_PPS_MARGIN) /* ETSI type6不同PRI之间最小PPS偏差度 */
91#define RADAR_ETSI_TYPE6_MAX_PSS_DIFF (400 + RADAR_ETSI_PPS_MARGIN) /* ETSI type6不同PRI之间最大PPS偏差度 */
92
93#define RADAR_ONE_SEC_IN_US 1000000
94
95#define TWO_TIMES_STAGGER_PULSE_MARGIN (2 * STAGGER_PULSE_MARGIN)
96#define THREE_TIMES_STAGGER_PULSE_MARGIN (3 * STAGGER_PULSE_MARGIN)
97#define FOUR_TIMES_STAGGER_PULSE_MARGIN (4 * STAGGER_PULSE_MARGIN)
98
99/* chirp crazy repot */
100#define MAX_IRQ_CNT_IN_CHIRP_CRAZY_REPORT_DET_FCC 100
101#define MAX_IRQ_CNT_IN_CHIRP_CRAZY_REPORT_DET_ETSI 40
102
103/*****************************************************************************
104 3 枚举定义
105*****************************************************************************/
106/* stagger模式周期检测类型 */
107typedef enum {
108 HMAC_RADAR_STAGGER_PERIOD_PRI_EQUAL, /* 存在相同的PRI,且PRI符合范围要求 */
109 HMAC_RADAR_STAGGER_PERIOD_PRI_ERR, /* 存在相同的PRI,但PRI不符合范围要求 */
110 HMAC_RADAR_STAGGER_PERIOD_NOT_DEC, /* 不存在相同的PRI,无法确定周期性,需做进一步检查 */
111
112 HMAC_RADAR_STAGGER_PERIOD_BUTT
113} hmac_radar_stagger_period_enum;
114
115typedef osal_u8 hmac_radar_stagger_period_enum_uint8;
116
117/* stagger模式radar类型 */
118typedef enum {
119 HMAC_RADAR_STAGGER_TYPE_INVALID,
120 HMAC_RADAR_STAGGER_TYPE5,
121 HMAC_RADAR_STAGGER_TYPE6,
122
123 HMAC_RADAR_STAGGER_TYPE_BUTT
124} hmac_radar_stagger_type_enum;
125
126typedef osal_u8 hmac_radar_stagger_type_enum_uint8;
127
128/*****************************************************************************
129 7 STRUCT定义
130*****************************************************************************/
131/* 脉冲信息分析结果 */
132typedef struct {
133 osal_u32 min_pri; /* 最小脉冲间隔 */
134 osal_u16 min_duration; /* 最小脉冲宽度 */
135 osal_u16 max_power; /* 脉冲power最大值 */
136 osal_u32 pri[MAX_RADAR_PULSE_NUM]; /* 所有脉冲间隔 */
137
138 osal_u8 pri_cnt; /* 脉冲间隔个数 */
139 osal_u8 stagger_cnt; /* stagger脉冲数目 */
140 osal_u8 begin; /* 分析脉冲信息的起始index */
141 osal_u8 resv1[1]; /* 保留位 */
142
143 osal_u16 avrg_power; /* 平均脉冲功率 */
144 osal_u16 duration_diff; /* 最小脉冲宽度 */
145 osal_u32 extra_pri; /* stagger type6额外读取一个pri */
146 osal_u32 pri_diff; /* 最小脉冲间隔 */
147
148 osal_u16 power_diff; /* 脉冲power最大值 */
149 osal_u16 avrg_duration; /* 平均脉冲间隔 */
150} hmac_radar_pulse_analysis_result_stru;
151
152typedef struct {
153 osal_u8 stagger_cnt;
154 osal_u16 min_duration;
155 osal_u16 max_duration;
156 osal_u32 min_pri;
157 osal_u32 max_pri;
158 osal_u16 max_power;
159 osal_u16 min_power;
160 osal_u8 index;
161 osal_u32 sum_power;
162 osal_u32 sum_duration;
163} hmac_radar_pulse_analysis_info;
164
165/*****************************************************************************
166 8 内联函数
167*****************************************************************************/
168static INLINE__ osal_u8 check_radar_etsi_type1_pri(osal_u32 val)
169{
170 return ((val >= 998 && val <= 5002) ? OSAL_TRUE : OSAL_FALSE);
171}
172
173static INLINE__ osal_u8 check_radar_etsi_type2_pri(osal_u32 val)
174{
175 return ((val >= 623 && val <= 5002) ? OSAL_TRUE : OSAL_FALSE);
176}
177
178static INLINE__ osal_u8 check_radar_etsi_type3_pri(osal_u32 val)
179{
180 return ((val >= 248 && val <= 500) ? OSAL_TRUE : OSAL_FALSE);
181}
182
183static INLINE__ osal_u8 check_radar_etsi_type5_pri(osal_u32 val)
184{
185 return ((val >= 2500 && val <= 3333) ? OSAL_TRUE : OSAL_FALSE);
186}
187
188static INLINE__ osal_u8 check_radar_etsi_type6_pri(osal_u32 val)
189{
190 return ((val >= 833 && val <= 2500) ? OSAL_TRUE : OSAL_FALSE);
191}
192
193static INLINE__ osal_u8 check_radar_etsi_stagger_pri(osal_u32 val)
194{
195 return ((val >= 833 && val <= 3333) ? OSAL_TRUE : OSAL_FALSE);
196}
197
198static INLINE__ osal_u8 check_radar_etsi_type6_duration_diff(osal_u16 val)
199{
200 return ((val <= 47) ? OSAL_TRUE : OSAL_FALSE);
201}
202
203static INLINE__ osal_u8 check_radar_etsi_short_pulse(osal_u16 val)
204{
205 return ((val >= 10 && val <= 30) ? OSAL_TRUE : OSAL_FALSE);
206}
207
208static INLINE__ osal_u8 check_radar_fcc_type0_pri(osal_u32 val)
209{
210 return ((val >= 1426 && val <= 1430) ? OSAL_TRUE : OSAL_FALSE);
211}
212
213static INLINE__ osal_u8 check_radar_fcc_type3_pri(osal_u32 val)
214{
215 return ((val >= 198 && val <= 502) ? OSAL_TRUE : OSAL_FALSE);
216}
217
218static INLINE__ osal_u8 check_radar_fcc_type4_pri(osal_u32 val)
219{
220 return ((val >= 198 && val <= 502) ? OSAL_TRUE : OSAL_FALSE);
221}
222
223static INLINE__ osal_u8 check_radar_fcc_type4_pri_small(osal_u32 val)
224{
225 return (((val >= 233 && val <= 330) || (val >= 336 && val <= 502)) ? OSAL_TRUE : OSAL_FALSE);
226}
227
228static INLINE__ osal_u8 check_radar_fcc_type5_pri(osal_u32 val)
229{
230 return ((val >= 998 && val <= (2002 * 2)) ? OSAL_TRUE : OSAL_FALSE);
231}
232
233static INLINE__ osal_u8 check_radar_fcc_type6_pri(osal_u32 val)
234{
235 return ((val >= 331 && val <= 335) ? OSAL_TRUE : OSAL_FALSE);
236}
237
238static INLINE__ osal_u8 check_radar_fcc_type2_pri_small(osal_u32 val)
239{
240 return ((val >= 148 && val <= 198) ? OSAL_TRUE : OSAL_FALSE);
241}
242
243static INLINE__ osal_u8 check_radar_fcc_chirp_total_cnt(osal_u8 val)
244{
245 return ((val >= 3 && val <= 15) ? OSAL_TRUE : OSAL_FALSE);
246}
247
248static INLINE__ osal_u8 check_radar_fcc_type4_duration(osal_u16 val)
249{
250 return ((val >= 5 && val <= 220) ? OSAL_TRUE : OSAL_FALSE);
251}
252
253static INLINE__ osal_u8 check_radar_fcc_chirp_pow_diff(osal_u16 val)
254{
255 return ((val <= 65) ? OSAL_TRUE : OSAL_FALSE);
256}
257
258static INLINE__ osal_u32 two_times(osal_u32 val)
259{
260 return (val << 1);
261}
262
263static INLINE__ osal_u8 check_radar_etsi_type2_hw(hal_dfs_radar_type_enum_uint8 radar_type, osal_u8 radar_type_num)
264{
265 return ((radar_type_num == 2) && (radar_type == HAL_DFS_RADAR_TYPE_ETSI));
266}
267
268static INLINE__ osal_u8 check_radar_etsi_type3_hw(hal_dfs_radar_type_enum_uint8 radar_type, osal_u8 radar_type_num)
269{
270 return ((radar_type_num == 3) && (radar_type == HAL_DFS_RADAR_TYPE_ETSI));
271}
272
273static INLINE__ osal_u8 check_radar_fcc_type3_hw(hal_dfs_radar_type_enum_uint8 radar_type, osal_u8 radar_type_num)
274{
275 return ((radar_type_num == 3) && (radar_type == HAL_DFS_RADAR_TYPE_FCC));
276}
277
278static INLINE__ osal_u8 check_radar_fcc_type4_hw(hal_dfs_radar_type_enum_uint8 radar_type, osal_u8 radar_type_num)
279{
280 return ((radar_type_num == 4) && (radar_type == HAL_DFS_RADAR_TYPE_FCC));
281}
282
283static INLINE__ osal_u8 check_radar_etsi_type23_or_fcc_type34_hw(
284 hal_dfs_radar_type_enum_uint8 radar_type, osal_u8 radar_type_num)
285{
286 return (check_radar_etsi_type2_hw(radar_type, radar_type_num) ||
287 check_radar_etsi_type3_hw(radar_type, radar_type_num) ||
288 check_radar_fcc_type3_hw(radar_type, radar_type_num) ||
289 check_radar_fcc_type4_hw(radar_type, radar_type_num));
290}
291
292static INLINE__ osal_u8 check_radar_etsi_type2_irq_num(osal_u8 num_a, osal_u8 num_b)
293{
294 return ((num_a >= 1 && num_a <= 3 && (0 == num_b || (num_b >= 1 && num_b <= 8))) ? OSAL_TRUE : OSAL_FALSE);
295}
296
297static INLINE__ osal_u8 check_radar_etsi_type3_irq_num(osal_u8 num_a, osal_u8 num_b)
298{
299 return ((num_a >= 1 && num_a <= 5 && (0 == num_b || (num_b >= 1 && num_b <= 8))) ? OSAL_TRUE : OSAL_FALSE);
300}
301
302static INLINE__ osal_u8 check_radar_fcc_type4_irq_num(osal_u8 num_a, osal_u8 num_b)
303{
304 return ((num_a >= 1 && num_a <= 3 && (0 == num_b || (num_b >= 1 && num_b <= 4))) ? OSAL_TRUE : OSAL_FALSE);
305}
306
307static INLINE__ osal_u8 check_radar_fcc_type3_irq_num(osal_u8 num_a, osal_u8 num_b)
308{
309 return ((num_a >= 1 && num_a <= 4 && (0 == num_b || (num_b >= 1 && num_b <= 4))) ? OSAL_TRUE : OSAL_FALSE);
310}
311
312/*****************************************************************************
313 9 OTHERS定义
314*****************************************************************************/
315oal_bool_enum_uint8 hmac_radar_filter(hmac_device_stru *hmac_device, hal_radar_det_event_stru *radar_det_info);
316oal_bool_enum_uint8 hmac_radar_crazy_report_det_timer(hal_to_dmac_device_stru *hal_device);
317
318#endif /* _PRE_WLAN_FEATURE_DFS_OPTIMIZE */
319
320#ifdef __cplusplus
321#if __cplusplus
322}
323#endif
324#endif
325
326#endif /* end of hmac_radar.h */
osal_u8 hal_dfs_radar_type_enum_uint8
Definition hal_commom_ops_type_rom.h:116
@ HAL_DFS_RADAR_TYPE_ETSI
Definition hal_commom_ops_type_rom.h:110
@ HAL_DFS_RADAR_TYPE_FCC
Definition hal_commom_ops_type_rom.h:109
#define MAX_RADAR_PULSE_NUM
Definition hal_common_ops_device.h:191
osal_u8 resv1
Definition oal_net.h:1
osal_u8 oal_bool_enum_uint8
Definition oal_types_device_rom.h:45
#define INLINE__
Definition osal_list.h:25
unsigned char osal_u8
Definition osal_types.h:11
#define OSAL_FALSE
Definition osal_types.h:56
#define OSAL_TRUE
Definition osal_types.h:57
unsigned int osal_u32
Definition osal_types.h:13
unsigned short osal_u16
Definition osal_types.h:12
Definition hal_common_ops_device.h:202
Definition mac_device_ext.h:856
Definition hal_ops_common_rom.h:529