• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  * Description: Header file of HAL external public interfaces .
15  * Create: 2022-2-19
16  */
17 
18 #ifndef __HAL_EXT_IF_DEVICE_H__
19 #define __HAL_EXT_IF_DEVICE_H__
20 
21 /*****************************************************************************
22   1 其他头文件包含
23 *****************************************************************************/
24 #include "hal_ext_if_device_rom.h"
25 
26 #ifdef __cplusplus
27 #if __cplusplus
28 extern "C" {
29 #endif
30 #endif
31 
32 /*****************************************************************************
33   2 宏定义
34 *****************************************************************************/
35 
36 #define HAL_TX_QEUEU_MAX_PPDU_NUM   2 /* DMAC也有一套,建议合并放入SPEC中 */
37 
38 
39 #define HAL_ANT_SWITCH_RSSI_HIGH_CNT             1000 /* 维持10帧都超过阈值则切换 */
40 #define HAL_ANT_SWITCH_RSSI_LOW_CNT              10
41 
42 #define HAL_ANT_SWITCH_RSSI_MGMT_STRONG_TH       10  /* 强信号下管理帧ant0与ant1相差10dB时切换到SISO */
43 #define HAL_ANT_SWITCH_RSSI_MGMT_WEAK_TH         3   /* 弱信号下管理帧ant0与ant1相差3dB时切换到SISO */
44 
45 #define HAL_ANT_SWITCH_RSSI_TBTT_CNT_TH          50   /* 50个tbtt中断触发一次探测 */
46 #define HAL_ANT_SWITCH_RSSI_MIMO_TBTT_OPEN_TH    50   /* 50个tbtt中断触发一次探测 */
47 #define HAL_ANT_SWITCH_RSSI_MIMO_TBTT_CLOSE_TH   10   /* 50个tbtt中断触发一次探测 */
48 #define HAL_ANT_SWITCH_RSSI_HT_DIFF_TH           10   /* HT协议下20M的差值门限,MCS12灵敏度-MCS7灵敏度 */
49 #define HAL_ANT_SWITCH_RSSI_VHT_DIFF_TH          12   /* VHT协议下20M的差值门限,双流MCS4灵敏度-单流MCS9灵敏度 */
50 #define HAL_ANT_SWITCH_RSSI_HT_MIN_TH           (-86)  /* HT协议下的最小值门限,MCS11的灵敏度+3db */
51 #define HAL_ANT_SWITCH_RSSI_VHT_MIN_TH          (-82)  /* VHT协议下的最小值门限,双流MCS4的灵敏度+3db */
52 
53 #define HAL_CCA_OPT_ED_LOW_TH_DSSS_DEF     (-76) /* CCA DSSS 检测门限寄存器默认值 */
54 #define HAL_CCA_OPT_ED_LOW_TH_DSSS_MIN     (-88) /* CCA DSSS 检测门限寄存器最小值 */
55 #define HAL_CCA_OPT_ED_LOW_TH_OFDM_DEF     (-82) /* CCA OFDM 检测门限寄存器默认值 */
56 #define HAL_CCA_OPT_ED_LOW_TH_OFDM_MIN     (-88) /* CCA OFDM 检测门限寄存器最小值 */
57 
58 #define HAL_CCA_OPT_ED_HYST_20TH_DEF       (-62)        /* CCA 20M 空闲概率检测门限 */
59 #define HAL_CCA_OPT_ED_HYST_40TH_DEF       (-59)        /* CCA 40M 空闲概率检测门限 */
60 
61 #define HAL_CCA_OPT_ED_HYST_STEP_20TH_DEF       (2)        /* CCA 20M 空闲概率检测安全门限 */
62 #define HAL_CCA_OPT_ED_HYST_STEP_40TH_DEF       (2)        /* CCA 40M 空闲概率检测安全门限 */
63 
64 /*****************************************************************************
65   8 UNION定义
66 *****************************************************************************/
67 
68 /* MIMO/SISO状态机状态枚举 */
69 typedef enum {
70     HAL_M2S_STATE_IDLE = 0,         /* 初始运行状态 */
71     HAL_M2S_STATE_SISO = 1,         /* SISO状态,软件和硬件都是单通道 */
72     HAL_M2S_STATE_MIMO = 2,         /* MIMO状态,软件和硬件都是双通道 */
73     HAL_M2S_STATE_MISO = 3,         /* MISO探测态,软件单通道,硬件双通道 */
74     HAL_M2S_STATE_SIMO = 4,         /* SIMO状态,软件双通道,硬件单通道 */
75 
76     HAL_M2S_STATE_BUTT              /* 最大状态 */
77 } hal_m2s_state;
78 typedef osal_u8 hal_m2s_state_uint8;
79 
80 /* MIMO/SISO状态机事件枚举 */
81 typedef enum {
82     /* 1.RSSI模块 */
83     HAL_M2S_EVENT_ANT_RSSI_MIMO_TO_MISO_C0,
84     HAL_M2S_EVENT_ANT_RSSI_MIMO_TO_MISO_C1,
85     HAL_M2S_EVENT_ANT_RSSI_MISO_C1_TO_MISO_C0,
86     HAL_M2S_EVENT_ANT_RSSI_MISO_C0_TO_MISO_C1,
87     HAL_M2S_EVENT_ANT_RSSI_MISO_TO_MIMO,
88 
89     /* 2.test模块 */
90     HAL_M2S_EVENT_TEST_MIMO_TO_SISO_C0 = 10,
91     HAL_M2S_EVENT_TEST_MIMO_TO_SISO_C1,
92     HAL_M2S_EVENT_TEST_MIMO_TO_MISO_C0,    /* MISO硬件是mimo的,miso要切分c0还是c1,便于切siso时区分出c0还是c1 */
93     HAL_M2S_EVENT_TEST_MIMO_TO_MISO_C1,
94     HAL_M2S_EVENT_TEST_MISO_TO_MIMO,       /* miso此时不区分c0或者c1 */
95     HAL_M2S_EVENT_TEST_SISO_TO_MIMO,
96     HAL_M2S_EVENT_TEST_SISO_TO_MISO_C0,
97     HAL_M2S_EVENT_TEST_SISO_TO_MISO_C1,
98     HAL_M2S_EVENT_TEST_SISO_C0_TO_SISO_C1,
99     HAL_M2S_EVENT_TEST_SISO_C1_TO_SISO_C0,
100     HAL_M2S_EVENT_TEST_MISO_TO_SISO_C0 = 20,
101     HAL_M2S_EVENT_TEST_MISO_TO_SISO_C1,
102     HAL_M2S_EVENT_TEST_MISO_C0_TO_MISO_C1,
103     HAL_M2S_EVENT_TEST_MISO_C1_TO_MISO_C0,
104     HAL_M2S_EVENT_TEST_IDLE_TO_SISO_C0,
105     HAL_M2S_EVENT_TEST_IDLE_TO_SISO_C1,
106     HAL_M2S_EVENT_TEST_IDLE_TO_MIMO,
107     HAL_M2S_EVENT_TEST_IDLE_TO_MISO_C0,
108     HAL_M2S_EVENT_TEST_IDLE_TO_MISO_C1,
109 
110     /* 3.BT模块 */
111     HAL_M2S_EVENT_BT_MIMO_TO_SISO_C1 = 40,
112     HAL_M2S_EVENT_BT_SISO_TO_MIMO,
113     HAL_M2S_EVENT_BT_SISO_C0_TO_SISO_C1,
114     HAL_M2S_EVENT_BT_MISO_TO_SISO_C1,
115 
116     /* 4.hal device抛来的同步事件 */
117     HAL_M2S_EVENT_IDLE_BEGIN = 50,
118     HAL_M2S_EVENT_WORK_BEGIN,
119     HAL_M2S_EVENT_SCAN_BEGIN,
120     HAL_M2S_EVENT_SCAN_PREPARE,
121     HAL_M2S_EVENT_SCAN_CHANNEL_BACK, // scan切回home channel事件
122     HAL_M2S_EVENT_SCAN_END,
123 
124     /* 6.上层模块 */
125     HAL_M2S_EVENT_COMMAND_MIMO_TO_SISO_C0 = 70,
126     HAL_M2S_EVENT_COMMAND_MIMO_TO_SISO_C1,
127     HAL_M2S_EVENT_COMMAND_MIMO_TO_MISO_C0,    /* MISO硬件是mimo的,miso要切分c0还是c1,便于切siso时区分出c0还是c1 */
128     HAL_M2S_EVENT_COMMAND_MIMO_TO_MISO_C1,
129     HAL_M2S_EVENT_COMMAND_MISO_TO_MIMO,       /* miso此时不区分c0或者c1 */
130     HAL_M2S_EVENT_COMMAND_SISO_TO_MIMO,       /* siso此时不区分c0或者c1 */
131     HAL_M2S_EVENT_COMMAND_SISO_TO_MISO_SCAN_BEGIN,  /* 专门用于并发扫描未开,mss下的特殊扫描,当前是c0 siso mss */
132     HAL_M2S_EVENT_COMMAND_MISO_TO_SISO_SCAN_END,  /* 专门用于并发扫描未开,mss下的特殊扫描,当前是c0 siso mss */
133     HAL_M2S_EVENT_COMMAND_SISO_C0_TO_SISO_C1,
134     HAL_M2S_EVENT_COMMAND_SISO_C1_TO_SISO_C0,
135     HAL_M2S_EVENT_COMMAND_MISO_TO_SISO_C0,
136     HAL_M2S_EVENT_COMMAND_MISO_TO_SISO_C1,
137     HAL_M2S_EVENT_COMMAND_MISO_C0_TO_MISO_C1,
138     HAL_M2S_EVENT_COMMAND_MISO_C1_TO_MISO_C0,
139     HAL_M2S_EVENT_COMMAND_IDLE_TO_SISO_C0,
140     HAL_M2S_EVENT_COMMAND_IDLE_TO_SISO_C1,
141     HAL_M2S_EVENT_COMMAND_IDLE_TO_MIMO,
142     HAL_M2S_EVENT_COMMAND_IDLE_TO_MISO_C0,
143     HAL_M2S_EVENT_COMMAND_IDLE_TO_MISO_C1,
144 
145     /* 7.SISO静态启动模块 */
146     HAL_M2S_EVENT_CUSTOM_MIMO_TO_SISO_C0 = 100,   /* 当前蓝牙使用主天线,静态启动默认启动到C0上;开关wifi才能恢复 */
147     /* 优先级最高,AP模式下使用,不涉及dbdc,mss和test返回,rssi不涉及,并发扫描返回;蓝牙来的话,切C1siso */
148     HAL_M2S_EVENT_CUSTOM_SISO_C0_TO_SISO_C1,
149     HAL_M2S_EVENT_CUSTOM_SISO_C1_TO_SISO_C0,      /* 保持custom优先级最高,根据蓝牙业务触发切c0还是c1 siso */
150 
151     /* 8.SISO硬件规格静态启动模块, 不允许蓝牙等业务切换 */
152     HAL_M2S_EVENT_SPEC_MIMO_TO_SISO_C0 = 110,     /* 硬件规格,从双天线工作到单天线工作 */
153     HAL_M2S_EVENT_SPEC_MIMO_TO_SISO_C1,           /* 硬件规格,从双天线工作到单天线工作 */
154     HAL_M2S_EVENT_SPEC_SISO_TO_MIMO,              /* 硬件规格,从单天线工作到双天线工作 */
155     HAL_M2S_EVENT_SPEC_MISO_TO_SISO_C0,           /* 硬件规格,从双天线工作到单天线工作 */
156     HAL_M2S_EVENT_SPEC_SISO_C1_TO_SISO_C0,   /* 2g c1 siso切换到5g c0 siso,异频dbac的处理方式,其他场景去关联要先回mimo */
157 
158     /* 初始化 */
159     HAL_M2S_EVENT_FSM_INIT = 255,
160 
161     HAL_M2S_EVENT_BUTT
162 } hal_m2s_event_tpye;
163 typedef osal_u16 hal_m2s_event_tpye_uint16;
164 
165 #ifdef _PRE_WLAN_FEATURE_DAQ
166 typedef struct {
167     osal_u32 diag_basic_start_addr;
168     osal_u32 diag_basic_end_addr;
169     osal_u32 diag_sample_addr;
170     osal_u32 diag_mode;
171     osal_u32 diag_num;
172     osal_u32 diag_cycle;
173     osal_u32 diag_read_addr;
174     osal_u32 diag_source;
175     osal_u32 diag_phy_event_en;
176     osal_u32 diag_phy_event_cnt;
177 } hal_mac_test_diag_stru;
178 
179 typedef struct  {
180     hal_mac_test_diag_stru diag_param;
181 } hal_to_dmac_device_mac_test_stru;
182 
183 /* 设置用户配置参数 */
184 typedef struct {
185     osal_s32 function_index;
186     osal_s32 value;
187     osal_s32 mode;
188 } mac_cfg_mct_set_diag_stru;
189 enum {
190     HAL_DIAG_TEST_FUNCTION_INDEX0 = 0,
191     HAL_DIAG_TEST_FUNCTION_INDEX1,
192     HAL_DIAG_TEST_FUNCTION_INDEX2,
193     HAL_DIAG_TEST_FUNCTION_INDEX12 = 12, // 0-12 MAC数采
194     HAL_DIAG_TEST_FUNCTION_INDEX20 = 20,
195     HAL_DIAG_TEST_FUNCTION_INDEX50 = 50, // 20-50 ADC数采 待定
196     HAL_DIAG_TEST_FUNCTION_INDEX100 = 100,
197     HAL_DIAG_TEST_FUNCTION_INDEX500 = 500
198 };
199 enum {
200     HAL_TEST_DIAG_PHY_SAMPLE_MODE_FIX_LEN,
201     HAL_TEST_DIAG_PHY_SAMPLE_MODE_DEBUG_WITHOUT_DELAY,
202     HAL_TEST_DIAG_PHY_SAMPLE_MODE_DEBUG_WITH_DELAY,
203     HAL_TEST_DIAG_PHY_SAMPLE_MODE_DEBUG_FIX_LEN,
204     HAL_TEST_DIAG_PHY_SAMPLE_MODE_BUTT
205 };
206 enum {
207     HAL_TEST_DIAG_PHY_SAMPLE_WITHOUT_MAC,
208     HAL_TEST_DIAG_PHY_SAMPLE_WITH_MAC_TSF_ONLY,
209     HAL_TEST_DIAG_PHY_SAMPLE_WITH_MAC_INFO_ALL,
210     HAL_TEST_DIAG_PHY_SAMPLE_MAC_BUTT
211 };
212 enum {
213     HAL_TEST_DIAG_PHY_SAMPLE_CFG_MODE_RECOVERY,
214     HAL_TEST_DIAG_PHY_SAMPLE_CFG_MODE_BEGIN,
215     HAL_TEST_DIAG_PHY_SAMPLE_CFG_MODE_QUERY,
216     HAL_TEST_DIAG_PHY_SAMPLE_CFG_MODE_SAVE,
217     HAL_TEST_DIAG_PHY_SAMPLE_CFG_MODE_BUTT
218 };
219 typedef struct {
220     osal_u32 cfg_sample_node_sel : 16;          // 选择PHY内部节点 参考节点信号说明
221     osal_u32 cfg_sample_length : 16;            // 配置数采长度 单位: 4Byte
222     osal_u32 cfg_debug_sample_len : 1;          // 配置触发定长数采模式 1: 触发定长 可以不需要
223     osal_u32 cfg_with_sample_delay_en : 1;      // 配置触发延时终止
224     osal_u32 cfg_debug_sample_start_mode : 6;   // debug模式数采开始条件选择
225     osal_u32 cfg_debug_sample_end_mode : 6;     // debug模式数采结束条件选择
226     osal_u32 cfg_debug_sample_delay : 8;        // 配置延时样点个数
227     osal_u32 cfg_with_mac_tsf_en : 1;           // 配置同时采样mac tsf信息 1: 开启
228     osal_u32 cfg_with_mac_info_en : 1;          // 配置同时采样mac信息 1: 开启
229     osal_u32 cfg_sample_mode : 3;               // 数采模式 0: 定长 1: 触发即刻停止 2: 触发延时停止 3: 触发定长
230     osal_u32 cfg_op_mode : 2;                   // 数采操作模式 0:执行关闭 1:执行开启 2:查询执行情况
231     osal_u32 extend_mode : 1;                   // 拓展模式 支持tsf mac以及延时配置 0: 不支持(liteos)  1: 支持(linux)
232     osal_u32 resv : 2;
233     osal_u32 event_rpt_addr;                    // phy事件上报地址
234     osal_u32 save_msg_addr;                     // 保存消息的地址
235 } hal_to_phy_test_diag_stru;
236 #endif
237 
238 typedef struct  {
239     /* tx dscr tx_count0/1/2/3 */
240     osal_u16 tx_count0 : 3,
241            tx_count1 : 3,
242            tx_count2 : 3,
243            tx_count3 : 3,
244            rsv : 4;
245 }hal_hw_retry_num_stru;
246 
247 #ifdef __cplusplus
248 #if __cplusplus
249 }
250 #endif
251 #endif
252 
253 #endif /* end of hal_ext_if_device.h */
254