WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
hmac_ftm.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2020-2020. All rights reserved.
3 * Description: dmac ftm head
4 * Create: 2020-7-5
5 */
6
7#ifndef HMAC_FTM_H
8#define HMAC_FTM_H
9
10/*****************************************************************************
11 其他头文件包含
12*****************************************************************************/
13#include "mac_vap_ext.h"
14#include "hmac_feature_main.h"
15#include "mac_frame.h"
16#include "hal_ext_if.h"
17
18#ifdef __cplusplus
19#if __cplusplus
20extern "C" {
21#endif
22#endif
23
24/*****************************************************************************
25 宏定义
26*****************************************************************************/
27#ifdef _PRE_WLAN_FEATURE_FTM
28#define MAC_FTM_TIMER_CNT 4
29#define MAX_FTM_RANGE_ENTRY_COUNT 15
30#define MAX_FTM_ERROR_ENTRY_COUNT 11
31#define MAX_MINIMUN_AP_COUNT 14
32#define MAX_REPEATER_NUM 3 /* 支持的最大定位ap数量 */
33
34/* FTM命令使能标志位 */
35#define FTM_INITIATOR BIT0
36#define FTM_ENABLE BIT1
37#define FTM_CALI BIT2
38#define FTM_RESPONDER BIT3
39#define FTM_SEND_FTM BIT4
40#define FTM_SEND_IFTMR BIT5
41#define FTM_SET_CORRECT_TIME BIT6
42#define FTM_SET_M2S BIT7
43#define FTM_DBG_AUTO_BANDWIDTH BIT8
44#define FTM_RANGE BIT9
45#define FTM_SEND_RANGE BIT10
46#define FTM_ADD_TSF BIT11
47
48#define PERIOD_OF_FTM_TIMER 12 // 80M:12500 160M:6250 /* 皮秒 当前为fpga版本*/
49
50#define PHY_TX_ADJUTST_VAL 0 /* 发送phy至connector时间 */
51#define PHY_RX_ADJUTST_VAL 0 /* 接收connector至phy时间 */
52
53#define T1_FINE_ADJUST_VAL 0 /* 实际测量校准值 */
54#define T2_FINE_ADJUST_VAL 0
55#define T3_FINE_ADJUST_VAL 0
56#define T4_FINE_ADJUST_VAL 0
57
58#define FTM_FRAME_DIALOG_TOKEN_OFFSET 2 /* ftm帧dialog token偏移 */
59#define FTM_FRAME_IE_OFFSET 3 /* ftm req帧ie偏移 */
60#define FTM_FRAME_FOLLOWUP_DIALOG_TOKEN_OFFSET 3 /* ftm帧follow up dialog token偏移 */
61#define FTM_FRAME_TOD_OFFSET 4 /* ftm帧tod偏移 */
62#define FTM_FRAME_TOA_OFFSET 10 /* ftm帧toa偏移 */
63#define FTM_FRAME_OPTIONAL_IE_OFFSET 20
64#define FTM_FRAME_TSF_SYNC_INFO_OFFSET 3
65#define FTM_RANGE_IE_OFFSET 3
66#define FTM_REQ_TRIGGER_OFFSET 2 /* ftm req帧Trigger偏移 */
67
68#define FTM_WAIT_TIMEOUT 1000 /* 等待接收FTM_1的时间 */
69#define FTM_MAX_SESSION_TIMEOUT 4000 /* 会话有效时间 */
70
71#define FTM_MIN_DETECTABLE_DISTANCE 0 /* FTM最小可检测范围 */
72#define FTM_MAX_DETECTABLE_DISTANCE 8192000 /* FTM最大可检测范围 2km 换算单位为1/4096m */
73
74#define FTM_FRAME_TOD_LENGTH 6
75#define FTM_FRAME_TOA_LENGTH 6
76#define FTM_FRAME_TOD_ERROR_LENGTH 2
77#define FTM_FRAME_TOA_ERROR_LENGTH 2
78#define FTM_TMIE_MASK 0xFFFFFFFFFFFF /* 48位 */
79
80/* 默认ftm交互的参数 */
81/* 一个会话ftm的帧 */
82#define FTM_PER_BURST 2
83/* FTM帧之间的间隙 */
84#define FTM_MIN_DELTA 200 /* 单位100us,即20ms */
85/* FTM 一个会话中ftm有效交互时间 */
86#define FTM_BURST_DURATION 15 /* No preference */ // 11 /*128ms*/
87/* FTM 一个会话时间 */
88#define FTM_BURST_PERIOD 4 /* 单位100ms,即400ms */
89/* FTM 时钟同步时,t1时间记录点(每个回合的第二帧) */
90#define FTM_TIME_SYNC_FTM2 2
91/* 最大FTM同时在线的会话 */
92#define MAX_FTM_SESSION 8
93/* 默认FTM同时在线的会话 */
94#define DEFAULT_FTM_SESSION 4
95
96/*****************************************************************************
97 枚举定义
98*****************************************************************************/
99typedef enum {
100 MAC_FTM_DISABLE_MODE = 0,
101 MAC_FTM_RESPONDER_MODE = 1,
102 MAC_FTM_INITIATOR_MODE = 2,
103 MAC_FTM_MIX_MODE = 3,
104
105 MAC_FTM_MODE_BUTT,
106} mac_ftm_mode_enum;
107typedef osal_u8 mac_ftm_mode_enum_uint8;
108
109typedef enum {
110 FTM_BW_20M = 0,
111 FTM_BW_40M = 1,
112 FTM_BW_80M = 2,
113 FTM_BW_160M = 3,
114
115 FTM_BW_BUTT,
116} ftm_time_enum;
117
118typedef enum {
119 FTM_FORMAT_NO_PREFERENCE = 0,
120 FTM_FORMAT_NO_HT_5M = 4,
121 FTM_FORMAT_NO_HT_10M = 6,
122 FTM_FORMAT_NO_HT_20M = 8,
123 FTM_FORMAT_HT_MIXED_20M,
124 FTM_FORMAT_VHT_20M,
125 FTM_FORMAT_HT_MIXED_40M,
126 FTM_FORMAT_VHT_40M,
127 FTM_FORMAT_VHT_80M,
128 FTM_FORMAT_VHT_80PLUS80M,
129 FTM_FORMAT_VHT_160M_TWO_RF,
130 FTM_FORMAT_VHT_160M_SINGLE_RF,
131 FTM_FORMAT_DMG_2160 = 31
132} ftm_format_and_bandwidth_enum;
133
134typedef enum {
135 NO_LOCATION = 0,
136 ROOT_AP = 1,
137 REPEATER = 2,
138 STA = 3,
139 LOCATION_TYPE_BUTT
140} oal_location_type_enum;
141typedef osal_u8 oal_location_type_enum_uint8;
142
143typedef struct {
144 osal_u64 t1;
145 osal_u64 t2;
146 osal_u64 t3;
147 osal_u64 t4;
148
149 osal_u8 dialog_token;
150 osal_char rssi_dbm;
151 osal_u8 rsv[2]; /* 保留2个字节用于对齐 */
152
153 union {
154 osal_u32 reg_value;
155 struct {
156 osal_u32 rpt_ftm_phase_incr : 13;
157 osal_u32 reserved0 : 3;
158 osal_u32 rpt_ftm_snr : 13;
159 osal_u32 reserved1 : 3;
160 } reg0;
161 } ftm_rpt_reg0;
162
163 union {
164 osal_u32 reg_value;
165 struct {
166 osal_u32 rpt_ftm_max_power : 13;
167 osal_u32 reserved0 : 3;
168 osal_u32 rpt_ftm_max_pre_power : 13;
169 osal_u32 reserved1 : 3;
170 } reg1;
171 } ftm_rpt_reg1;
172
173 union {
174 osal_u32 reg_value;
175 struct {
176 osal_u32 rpt_ftm_max_next_power : 13;
177 osal_u32 reserved0 : 3;
178 osal_u32 rpt_ftm_max_pre1_power : 13;
179 osal_u32 reserved1 : 3;
180 } reg2;
181 } ftm_rpt_reg2;
182
183 union {
184 osal_u32 reg_value;
185 struct {
186 osal_u32 rpt_ftm_max_pre2_power : 13;
187 osal_u32 reserved0 : 3;
188 osal_u32 rpt_ftm_max_pre3_power : 13;
189 osal_u32 reserved1 : 3;
190 } reg3;
191 } ftm_rpt_reg3;
192
193 union {
194 osal_u32 reg_value;
195 struct {
196 osal_u32 rpt_ftm_max_pre4_power : 13;
197 osal_u32 reserved0 : 3;
198 osal_u32 rpt_ftm_max_pre5_power : 13;
199 osal_u32 reserved1 : 3;
200 } reg4;
201 } ftm_rpt_reg4;
202} ftm_timer_stru;
203
204typedef struct {
205 osal_void *hmac_vap;
206 osal_u8 session_id;
207 osal_u8 auc_resv[3]; /* 保留3个字节用于对齐 */
208} ftm_timeout_arg_stru;
209
210typedef struct {
211 /* 获取帧体内容 */
212 osal_u16 burst_cnt; /* 回合个数 */
213 osal_u8 min_delta_ftm; /* FTM帧之间的间隙 */
214 osal_u8 burst_duration; /* FTM 一个会话中ftm有效交互时间 */
215
216 osal_u64 time_syn_delta_t1;
217 osal_u8 dialog_token;
218 osal_u8 follow_up_dialog_token;
219 osal_u8 bssid[WLAN_MAC_ADDR_LEN]; /* FTM交互AP的BSSID */
220
221 osal_u32 tsf_sync_info;
222
223 osal_u16 partial_tsf_timer;
224 osal_u16 burst_period; /* FTM 一个会话时间 */
225
226 osal_u8 prot_format : 4; /* 指示 协议类型 */
227 osal_u8 band_cap : 4; /* 指示 带宽 */
228
229 osal_u8 ftms_per_burst : 5; /* 每个回合FTM帧的个数 */
230 osal_u8 asap : 1; /* ?? as soon as posible */
231 osal_u8 en_asap : 1; /* 指示 as soon as posible 能力 */
232
233 /* 命令控制 */
234 osal_u8 ftm_initiator : 1; /* STA that supports fine timing measurement as an initiator */
235 osal_u8 lci_ie : 1; /* 指示 携带LCI Measurement request/response elements */
236 osal_u8 location_civic_ie : 1; /* 指示 携带Location Civic Measurement request/response elements */
237 osal_u8 ftms_per_burst_cmd : 5; /* 命令设置每个回合FTM帧的个数 */
238
239 /* 其他 */
240 osal_u8 iftmr : 1; /* 将要发送的是第一帧ftm req */
241 osal_u8 ftm_trigger : 1; /* 将要发送的是后面ftm req */
242 osal_u8 timer_syn : 1; /* 是否启用同步功能 0:measure disstance 1: time syn */
243 osal_u8 clock_calibrated : 1; /* 标记是否做过时钟校准 */
244 osal_u8 time_syn_count : 5; /* 时钟同步时,接收FTM帧个数 */
245 osal_u32 range; /* 记录本次测量的距离和误差 */
246
247 frw_timeout_stru ftm_tsf_timer; /* ftm回合开始定时器 */
248 frw_timeout_stru ftm_all_burst; /* ftm整个回合时器 */
249 mac_channel_stru channel_ftm; /* FTM交互所在信道 */
250
251 ftm_timer_stru ftm_timer[MAC_FTM_TIMER_CNT]; /* 记录时间 */
252 ftm_timeout_arg_stru arg; /* 定时器超时函数的入参 */
253} hmac_ftm_initiator_stru;
254
255typedef struct {
256 /* 获取帧体内容 */
257 osal_u16 burst_cnt; /* 回合个数 */
258 osal_u8 min_delta_ftm; /* FTM帧之间的间隙 */
259 osal_u8 burst_duration; /* FTM 一个会话中ftm有效交互时间 */
260
262 osal_u8 dialog_token;
263 osal_u8 follow_up_dialog_token;
264
265 osal_u16 burst_period; /* FTM 一个会话时间 */
266 osal_u8 dialog_token_ack; /* 指示 发送完成中断对应的ftm帧 */
267 osal_u8 prot_format : 4; /* 指示 协议类型 */
268 osal_u8 band_cap : 4; /* 指示 带宽 */
269
270 osal_u8 ftms_per_burst : 5; /* 每个回合FTM帧的个数 */
271 osal_u8 asap : 1; /* 指示 as soon as posible */
272 osal_u8 received_iftmr : 1; /* 指示 是否接受过第一帧ftm req */
273
274 /* 命令控制 */
275 osal_u8 lci_ie : 1;
276
277 osal_u8 location_civic_ie : 1;
278 osal_u8 ftm_parameters : 1;
279 osal_u8 ftm_synchronization_information : 1;
280 osal_u8 ftm_responder : 1; /* STA that supports fine timing measurement as an responder */
281 osal_u8 resv0 : 4;
282
283 /* 其他 */
284 osal_u8 ftms_per_burst_varied : 5; /* 每个回合FTM帧的个数,用于发送 */
285 osal_u8 resv1 : 3;
287
288 mac_channel_stru channel_ftm; /* FTM交互所在信道 */
289 frw_timeout_stru ftm_tsf_timer; /* ftm回合开始定时器 */
290 frw_timeout_stru ftm_all_burst; /* ftm整个回合时器 */
291 osal_u64 tod; /* 填写tod */
292 osal_u64 toa; /* 填写toa */
293
294 osal_u16 tod_error; /* 填写tod_error */
295 osal_u16 toa_error; /* 填写toa_error */
296
297 osal_u32 tsf; /* 填写tsf */
298 ftm_timer_stru ftm_timer[MAC_FTM_TIMER_CNT]; /* 记录时间 */
299 ftm_timeout_arg_stru arg; /* 定时器超时函数的入参 */
300} hmac_ftm_responder_stru;
301
302typedef struct {
303 osal_u32 measurement_start_time;
305 osal_u8 resv[2]; /* 保留2个字节用于对齐 */
306 osal_u32 range : 24;
307 osal_u32 max_range_error_exponent : 8;
308} ftm_range_entry_stru;
309
310typedef struct {
311 osal_u32 measurement_start_time;
313 osal_u8 error_code;
314 osal_u8 resv[1]; /* 保留1个字节用于对齐 */
315} ftm_error_entry_stru;
316
317typedef struct {
318 osal_u8 range_entry_count;
319 osal_u8 error_entry_count;
320 osal_u8 resv[2]; /* 保留2个字节用于对齐 */
321
322 ftm_range_entry_stru ftm_range_entry[MAX_FTM_RANGE_ENTRY_COUNT];
323 ftm_error_entry_stru ftm_error_entry[MAX_FTM_ERROR_ENTRY_COUNT];
324} ftm_range_rpt_stru;
325
326typedef struct {
328 osal_u8 dialog_token;
329 osal_u8 meas_token;
330
331 osal_u16 num_rpt;
332 osal_u16 start_delay;
333
334 osal_u8 bssid[MAX_MINIMUN_AP_COUNT][WLAN_MAC_ADDR_LEN];
335 osal_u8 channel[MAX_MINIMUN_AP_COUNT];
336 osal_u8 minimum_ap_count;
337 osal_u8 resv[1]; /* 保留1个字节用于对齐 */
338} ftm_range_req_stru;
339
340typedef struct {
341 hmac_ftm_initiator_stru *ftm_init;
342 hmac_ftm_responder_stru *ftm_rspder;
344 osal_u8 cali_phy_freq; /* 记录射频校准时,phy时钟频率 */
345 osal_u8 cali_adc_freq; /* 记录射频校准时,adc采样频率 */
346 oal_bool_enum_uint8 auto_bandwidth; /* 使用协商模式和速率发帧,还是OFMD格式和6M速率发帧 */
347 ftm_range_req_stru send_ftm_range; /* 设置ftm range命令 */
348 ftm_range_rpt_stru ftm_range_rpt;
349 osal_s16 add_tsf; /* 认证预留 tsf时间 */
350 osal_u8 initor_session_id;
351 osal_u8 tx_chain_selection;
352 osal_u8 session_num; /* 记录session申请的个数 */
353 osal_u8 auc_resv[3]; /* 保留3个字节用于对齐 */
354
355 osal_u32 ftm_cali_time;
356} hmac_ftm_stru;
357
358typedef struct {
359 /* 测距 */
360 osal_u64 ftm_rtt; /* FTM帧传输时间 */
361 osal_u64 distance; /* FTM传输距离 */
362 /* 同步 */
363 osal_u64 t1_delta; /* 两个burst之间的时间 */
364 osal_u64 time_offset; /* 两个设备的时钟偏差 */
365 osal_s64 clock_time; /* 两个设备的晶振偏差 */
366 osal_u8 time_sync; /* 时间同步标志位 */
367 osal_u8 auc_resv[3]; /* 保留3个字节用于对齐 */
368} hmac_ftm_data_report;
369/* FTM调试开关相关的结构体 */
370typedef struct {
371 osal_u8 channel_num;
372 osal_u8 burst_num;
373 oal_bool_enum_uint8 measure_req;
374 osal_u8 ftms_per_burst;
375
377 osal_u8 resv[1];
379} mac_send_iftmr_stru;
380
381typedef struct {
382 osal_u8 resv[2];
384} mac_send_ftm_stru;
385
386typedef struct {
387 oal_bool_enum_uint8 enable;
388 osal_u8 session_num;
389 osal_u8 reserve[2]; /* 预留2字节对齐 */
390} mac_ftm_enable_stru;
391
392typedef struct {
393 osal_u8 tx_chain_selection;
394 oal_bool_enum_uint8 is_mimo;
395 osal_u8 reserve[2]; /* 预留2字节对齐 */
396} ftm_m2s_stru;
397
398typedef struct {
400 osal_u8 dialog_token;
401 osal_u8 meas_token;
402 osal_u16 num_rpt;
403 osal_u16 start_delay;
404 osal_u8 bssid[MAX_MINIMUN_AP_COUNT][WLAN_MAC_ADDR_LEN];
405 osal_u8 channel[MAX_MINIMUN_AP_COUNT];
406 osal_u8 minimum_ap_count;
407 osal_u8 resv[1];
408} mac_send_ftm_range_req_stru;
409
410typedef struct {
411 osal_u32 ftm_correct_time1;
412 osal_u32 ftm_correct_time2;
413 osal_u32 ftm_correct_time3;
414 osal_u32 ftm_correct_time4;
415} mac_set_ftm_time_stru;
416
417typedef struct {
418 osal_u32 cmd_bit_map;
419 oal_bool_enum_uint8 ftm_initiator; /* ftm_initiator命令 */
420 oal_bool_enum_uint8 cali; /* FTM 环回 */
421 oal_bool_enum_uint8 auto_bandwidth; /* FTM使能协商带宽发帧 */
422 oal_bool_enum_uint8 ftm_resp; /* ftm_resp命令 */
423 oal_bool_enum_uint8 ftm_range; /* ftm_range命令 */
424 osal_u8 resv[1]; /* 预留1字节对齐 */
425 osal_s16 add_tsf; /* 认证预留 增加的tsf时间 */
426
427 mac_ftm_enable_stru ftm_enable; /* 使能FTM */
428 mac_send_ftm_stru send_ftm; /* 发送ftm命令 */
429 mac_send_iftmr_stru send_iftmr; /* 发送iftmr命令 */
430 mac_set_ftm_time_stru ftm_time; /* 设置ftm校准时间 */
431 mac_send_ftm_range_req_stru send_ftm_range; /* 设置ftm range命令 */
432 ftm_m2s_stru m2s;
433} mac_ftm_debug_switch_stru;
434
435/*****************************************************************************
436 函数声明
437*****************************************************************************/
438osal_s32 hmac_config_ftm_dbg(hmac_vap_stru *hmac_vap, frw_msg *msg);
439osal_u32 hmac_config_d2h_ftm_info(const hmac_vap_stru *hmac_vap, const hmac_ftm_data_report *d2h_data);
440osal_s32 hmac_process_ftm_ack_complete(hmac_vap_stru *hmac_vap, frw_msg *msg);
441osal_s32 hmac_process_send_ftm_complete(hmac_vap_stru *hmac_vap, frw_msg *msg);
442osal_u32 hmac_save_tx_ftm_complete_time(hmac_vap_stru *hmac_vap, osal_u8 session_id, osal_u64 ftm_t1,
443 osal_u64 ftm_t4);
444osal_u32 hmac_process_ftm_ack_complete_process(hmac_ftm_initiator_stru *ftm_init,
445 hmac_vap_stru *hmac_vap, const hal_wlan_ftm_t2t3_rx_event_stru *ftm_t2t3, osal_u8 index);
446osal_char hmac_ftm_interpolate(osal_u16 right, osal_u16 max, osal_u16 left);
447osal_u32 hmac_ftm_get_distance(hmac_vap_stru *hmac_vap, osal_u64 *distance, osal_u8 session_id);
448osal_u32 hmac_ftm_get_delta(hmac_vap_stru *hmac_vap, osal_u8 session_id);
449osal_u32 hmac_ftm_initor_rx_ftm(hmac_vap_stru *hmac_vap, const oal_netbuf_stru *netbuf);
450osal_void hmac_ftm_handle_freq(hmac_vap_stru *hmac_vap,
451 osal_u32 *time_sync_enable, osal_u32 *phy_freq, osal_u32 *intp_freq);
452osal_u32 hmac_check_tx_ftm_complete(hmac_vap_stru *hmac_vap, dmac_tx_ftm_frame_stru *ftm_info);
453osal_u32 hmac_ftm_initor_send_ftm_req(hmac_vap_stru *hmac_vap, osal_u8 session_id);
454osal_u32 hmac_ftm_rspder_send_ftm(hmac_vap_stru *hmac_vap, osal_u8 session_id);
455osal_u32 hmac_ftm_initor_send_trigger(hmac_vap_stru *hmac_vap, osal_u8 session_id);
456osal_u32 hmac_ftm_initor_wait_start_burst_timeout(osal_void *arg);
457osal_u16 hmac_encap_ftm_mgmt(hmac_vap_stru *hmac_vap, const oal_netbuf_stru *buffer, osal_u8 session_id);
458osal_void hmac_ftm_rspder_rx_ftm_req(hmac_vap_stru *hmac_vap, const oal_netbuf_stru *netbuf);
459osal_void hmac_tx_set_ftm_ctrl_dscr(hmac_vap_stru *hmac_vap, hal_tx_dscr_stru *tx_dscr, const oal_netbuf_stru *netbuf);
460osal_void hmac_ftm_start_cali(hmac_vap_stru *hmac_vap, wlan_phy_protocol_enum prot_format,
461 wlan_bw_cap_enum band_cap);
462osal_u32 hmac_set_ftm_correct_time(mac_set_ftm_time_stru ftm_time);
463osal_u32 hmac_ftm_rspder_set_parameter(hmac_vap_stru *hmac_vap, osal_u8 session_id);
464osal_void hmac_ftm_initor_start_bust(hmac_vap_stru *hmac_vap, osal_u8 session_id);
465osal_u32 hmac_vap_ftm_init(hmac_vap_stru *hmac_vap, osal_u8 session_num);
466osal_void hmac_vap_ftm_deinit(hmac_vap_stru *hmac_vap);
467osal_s8 hmac_ftm_find_session_index(hmac_vap_stru *hmac_vap, mac_ftm_mode_enum_uint8 ftm_mode,
468 const osal_u8 peer_mac[WLAN_MAC_ADDR_LEN]);
469osal_void hmac_ftm_enable_session_index(hmac_vap_stru *hmac_vap, mac_ftm_mode_enum_uint8 ftm_mode,
470 const osal_u8 peer_mac[WLAN_MAC_ADDR_LEN], osal_u8 session_id);
471oal_bool_enum_uint8 hmac_check_ftm_switch_channel(hmac_vap_stru *hmac_vap, osal_u8 chan_number);
472osal_u32 hmac_ftm_rspder_send(hmac_vap_stru *hmac_vap, const osal_u8 mac[WLAN_MAC_ADDR_LEN],
473 wlan_phy_protocol_enum prot_format, wlan_bw_cap_enum band_cap);
474wlan_phy_protocol_enum_uint8 hmac_ftm_get_phy_mode(wlan_protocol_enum_uint8 protocol,
476wlan_bw_cap_enum_uint8 hmac_ftm_get_band_cap(wlan_channel_bandwidth_enum_uint8 en_bandwidth);
477osal_u32 hmac_ftm_initor_send(hmac_vap_stru *hmac_vap, mac_send_iftmr_stru *send_iftmr);
478osal_void hmac_ftm_initor_wait_end_ftm(hmac_vap_stru *hmac_vap, osal_u8 session_id);
479osal_void hmac_ftm_initor_end_session(hmac_ftm_initiator_stru *ftm_init);
480osal_void hmac_ftm_rspder_end_session(hmac_ftm_responder_stru *ftm_rspder);
481osal_void hmac_ftm_get_cali(hmac_vap_stru *hmac_vap, osal_u32 phy_freq, osal_u32 intp_freq);
482osal_void hmac_set_ftm_m2s(hmac_vap_stru *hmac_vap, ftm_m2s_stru m2s);
483
484osal_u32 hmac_save_ftm_range(hmac_vap_stru *hmac_vap, osal_u8 session_id);
485osal_u32 hmac_ftm_rrm_proc_rm_request(hmac_vap_stru *hmac_vap, oal_netbuf_stru *netbuf);
486osal_u32 hmac_save_error_ftm_session(hmac_vap_stru *hmac_vap, mac_ftm_parameters_ie_stru *mac_ftmp,
487 osal_u8 session_id, osal_u8 *data);
488osal_u32 hmac_send_ftm_range_req(hmac_vap_stru *hmac_vap, mac_send_ftm_range_req_stru *ftm_range);
489osal_u32 hmac_send_ftm_req_adjust_param(hmac_vap_stru *hmac_vap, hmac_ftm_initiator_stru *ftm_init,
490 osal_u8 session_id);
491
492static INLINE__ mac_ftm_mode_enum_uint8 mac_check_ftm_enable(const hmac_vap_stru *hmac_vap)
493{
494 if ((mac_mib_get_fine_timing_msmt_init_activated(hmac_vap) == OSAL_FALSE) &&
495 (mac_mib_get_fine_timing_msmt_resp_activated(hmac_vap) == OSAL_FALSE)) {
496 return MAC_FTM_DISABLE_MODE;
497 } else if ((mac_mib_get_fine_timing_msmt_init_activated(hmac_vap) == OSAL_FALSE) &&
498 (mac_mib_get_fine_timing_msmt_resp_activated(hmac_vap) == OSAL_TRUE)) {
499 return MAC_FTM_RESPONDER_MODE;
500 } else if ((mac_mib_get_fine_timing_msmt_init_activated(hmac_vap) == OSAL_TRUE) &&
501 (mac_mib_get_fine_timing_msmt_resp_activated(hmac_vap) == OSAL_FALSE)) {
502 return MAC_FTM_INITIATOR_MODE;
503 } else {
504 return MAC_FTM_MIX_MODE;
505 }
506}
507#endif /* _PRE_WLAN_FEATURE_FTM */
508
509#ifdef __cplusplus
510#if __cplusplus
511}
512#endif
513#endif
514
515#endif /* end of hmac_ftm.h */
#define max(x, y)
Definition common_def.h:33
#define WLAN_MAC_ADDR_LEN
Definition mac_addr.c:28
osal_u16 resv2
Definition oal_net.h:3
osal_u8 resv1
Definition oal_net.h:1
osal_u8 rsv[3]
Definition oal_net.h:2
osal_u8 oal_bool_enum_uint8
Definition oal_types_device_rom.h:45
#define INLINE__
Definition osal_list.h:25
int osal_s32
Definition osal_types.h:19
unsigned char osal_u8
Definition osal_types.h:11
signed char osal_s8
Definition osal_types.h:17
#define OSAL_FALSE
Definition osal_types.h:56
char osal_char
Definition osal_types.h:16
unsigned long long osal_u64
Definition osal_types.h:14
short osal_s16
Definition osal_types.h:18
long long osal_s64
Definition osal_types.h:20
void osal_void
Definition osal_types.h:29
#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 frw_msg_rom.h:74
Definition frw_ext_common_rom.h:20
Definition mac_vap_ext.h:2019
Definition wlan_types_base_rom.h:258
Definition oal_skbuff.h:82
Definition hal_ops_common_rom.h:213
Definition hal_uart_v151_regs_def.h:38
wlan_phy_protocol_enum
Definition wlan_spec_type_rom.h:22
osal_u8 wlan_phy_protocol_enum_uint8
Definition wlan_spec_type_rom.h:33
wlan_bw_cap_enum
Definition wlan_types.h:442
osal_u8 wlan_bw_cap_enum_uint8
Definition wlan_types.h:455
td_u8 wlan_protocol_enum_uint8
Definition wlan_types.h:488
osal_u8 wlan_channel_bandwidth_enum_uint8
Definition wlan_types_base_rom.h:237
osal_u8 wlan_channel_band_enum_uint8
Definition wlan_types_base_rom.h:97