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