/* * SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include "sdkconfig.h" #if CONFIG_SOC_WIFI_HE_SUPPORT #include <stdint.h> #include <stdbool.h> #include "esp_err.h" #include "esp_wifi_types.h" #include "esp_wifi_he_types.h" #include "esp_wifi_he_types_private.h" #ifdef __cplusplus extern "C" { #endif float esp_test_get_bfr_avgsnr(void); void esp_test_enable_edca_tx(esp_wifi_aci_t aci); void esp_test_disable_edca_tx(esp_wifi_aci_t aci); esp_err_t esp_wifi_enable_htc_uph(bool enable); esp_err_t esp_wifi_set_htc_omc(const esp_wifi_htc_omc_t *om); void esp_wifi_enable_rx_stbc(bool enable); void esp_wifi_enable_su_bmfmee(bool enable); esp_err_t esp_wifi_set_tf_padding_duration(int tf_padding_duration); void hal_he_set_ul_mu(bool ul_mu_disable, bool ul_mu_data_disable); void hal_he_set_bf_report_rate(sig_mode_t sig_mode, wifi_phy_rate_t rate, bool ersu, bool dcm); void dbg_read_muedca_timer(uint8_t aci); void dbg_read_axtb_diag(void); void dbg_read_ax_diag(bool verbose); void dbg_read_tx_mplen(const void*, uint8_t ac); void dbg_tb_ignore_cca_enable(bool enable); esp_err_t esp_wifi_sta_report_bsscolor_collision(void); esp_err_t esp_wifi_sta_report_bsscolor_inuse(void); /* RX */ esp_err_t esp_test_clr_rx_error_occurs(void); esp_err_t esp_test_get_rx_error_occurs(esp_test_rx_error_occurs_t *err_occurs); /* HW */ void esp_test_clr_hw_statistics(void); esp_err_t esp_test_get_hw_rx_statistics(esp_test_hw_rx_statistics_t *hw_rx_stats); esp_err_t esp_test_get_hw_tb_statistics(esp_test_hw_tb_statistics_t *hw_tb_stats); /** * @brief Get tx stats enabled ACI bitmap * * @return * - acibitmap */ uint8_t esp_wifi_get_tx_statistics_ena_acibitmap(void); /** * @brief Clear DL MU-MIMO and DL OFDMA reception statistics. * * @return * - ESP_OK * - ESP_FAIL */ esp_err_t esp_wifi_clr_rx_mu_statistics(void); /** * @brief Get the DL MU-MIMO and DL OFDMA reception statistics. * * @param[in] mu_stats the DL MU-MIMO and DL OFDMA reception statistics * * @return * - ESP_OK * - ESP_FAIL */ esp_err_t esp_wifi_get_rx_mu_statistics(esp_test_rx_mu_statistics_t *mu_stats); /** * @brief Clear the reception statistics excluding DL MU-MIMO and DL OFDMA. * * @param[in] tid the traffic id, accept tid = 0, tid = 7 and tid = 8. tid = 8 will clear reception statistics for both tid = 0 and tid = 7 * * @return * - ESP_OK * - ESP_FAIL */ esp_err_t esp_wifi_clr_rx_statistics(uint8_t tid); /** * @brief Get the reception statistics excluding DL MU-MIMO and DL OFDMA. * * @param[in] tid the traffic id, only accept tid = 0 or tid = 7 * @param[in] rx_stats the reception statistics * * @return * - ESP_OK * - ESP_FAIL */ esp_err_t esp_wifi_get_rx_statistics(uint8_t tid, esp_test_rx_statistics_t *rx_stats); /** * @brief Clear the transmission statistics. * * @param[in] aci access category id. * Generally, for data frames, aci = ESP_WIFI_ACI_BE; for management frames, aci = ESP_WIFI_ACI_VO. * * @return * - ESP_OK * - ESP_FAIL */ esp_err_t esp_wifi_clr_tx_statistics(esp_wifi_aci_t aci); /** * @brief Get the transmission statistics. * * @param[in] aci access category id. * @param[in] tx_stats the transmission statistics * @param[in] tx_fail the common failure state and reason * * @return * - ESP_OK * - ESP_FAIL */ esp_err_t esp_wifi_get_tx_statistics(esp_wifi_aci_t aci, esp_test_tx_statistics_t *tx_stats, esp_test_tx_fail_statistics_t *tx_fail); /** * @brief Clear the TB PPDU transmission statistics. * * @param[in] aci access category id. * Generally, for data frames, aci = ESP_WIFI_ACI_BE; for management frames, aci = ESP_WIFI_ACI_VO. * * @return * - ESP_OK * - ESP_FAIL */ esp_err_t esp_wifi_clr_tx_tb_statistics(esp_wifi_aci_t aci); /** * @brief Get the TB PPDU transmission statistics. * * @param[in] aci access category id. * @param[in] tb_stats TB PPDU statistics. * * @return * - ESP_OK * - ESP_FAIL */ esp_err_t esp_wifi_get_tx_tb_statistics(esp_wifi_aci_t aci, esp_test_tx_tb_statistics_t *tb_stats); /** * @brief Add BSS color change announcement IE * * @attention This API should be called after esp_wifi_start(). * * @param color new bss color, 0 means disable. * * @return * - ESP_OK: succeed * - others: failed */ esp_err_t esp_wifi_softap_add_color_change_announcement(uint8_t color); /** * @brief Add bss max idle ie * * @attention This API should be called after esp_wifi_start(). * * @param[in] bss_max_idle_enable enable bss max idle * @param[in] bss_max_idle_period_secs bss max idle period, unit seconds * @param[in] protected_keep_alive using protected/unprotected frame to keep alive * * @return * - ESP_OK: succeed * - others: failed */ esp_err_t esp_wifi_softap_set_bss_max_idle(bool bss_max_idle_enable, uint16_t bss_max_idle_period_secs, bool protected_keep_alive); /** * @brief Reset MU EDCA Timer * * @attention This API should be called after esp_wifi_start(). * * @param aci_bitmap bit0: BK * bit1: BE * bit2: VI * bit3: VO * * @return * - ESP_OK: succeed * - others: failed */ esp_err_t esp_wifi_sta_reset_muedca_timer(uint8_t aci_bitmap); /** * @brief Set bss color collision detection duration and frame threshold. * * @param[in] threshold the number of HE frames with the same BSS color as STA but in different BSSs. * @param[in] duration duration of the detection. If the number of frames that STA detects reaches threshold, * STA will report BSS Color Collision to the associated AP. Unit seconds. * * @return * - ESP_OK: succeed * - ESP_ERR_INVALID_ARG: invalid argument */ esp_err_t esp_wifi_sta_set_bss_color_collision_detection(int threshold, int duration); esp_err_t esp_test_clr_rx_ctrls(void); esp_err_t esp_test_get_rx_ctrls(esp_test_rx_ctrl_t* rx); void hal_set_tx_pwr(wifi_phy_rate_t rate, int8_t max_pwr); int8_t hal_get_tx_pwr(wifi_phy_rate_t rate); #ifdef __cplusplus } #endif #endif // CONFIG_SOC_WIFI_HE_SUPPORT