mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-23 01:58:24 +08:00
feat(wifi): refactor and add more wifi feature for 11n certificate
This commit is contained in:
@ -323,7 +323,7 @@ config ESP_ERR_TO_NAME_LOOKUP
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
menu WIFI
|
menu Wi-Fi
|
||||||
|
|
||||||
config SCAN_AP_MAX
|
config SCAN_AP_MAX
|
||||||
int "Max scan AP number"
|
int "Max scan AP number"
|
||||||
@ -336,12 +336,84 @@ config SCAN_AP_MAX
|
|||||||
User can use own function "esp_wifi_scan_get_ap_num_max" to determin how many AP to scan , too.
|
User can use own function "esp_wifi_scan_get_ap_num_max" to determin how many AP to scan , too.
|
||||||
|
|
||||||
config WIFI_TX_RATE_SEQUENCE_FROM_HIGH
|
config WIFI_TX_RATE_SEQUENCE_FROM_HIGH
|
||||||
bool "Set wifi tx rate from 54M to 1M"
|
bool "Set WiFi TX rate from 54M to 1M"
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
If this option is enabled, Wifi will try to send packets first from high rate(54M). If it fails, it will
|
If this option is enabled, WiFi will try to send packets first from high rate(54M). If it fails, it will
|
||||||
try at low rate until the transmission is successful.
|
try at low rate until the transmission is successful.
|
||||||
|
|
||||||
|
config ESP8266_WIFI_QOS_ENABLED
|
||||||
|
bool "WiFi QoS"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Select this option to enable QoS feature
|
||||||
|
|
||||||
|
config ESP8266_WIFI_AMPDU_RX_ENABLED
|
||||||
|
bool "WiFi AMPDU RX"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Select this option to enable AMPDU RX feature
|
||||||
|
|
||||||
|
config ESP8266_WIFI_RX_BA_WIN_SIZE
|
||||||
|
int "WiFi AMPDU RX BA window size"
|
||||||
|
depends on ESP8266_WIFI_AMPDU_RX_ENABLED
|
||||||
|
range 0 16
|
||||||
|
default 6
|
||||||
|
help
|
||||||
|
Set the size of WiFi Block Ack RX window. Generally a bigger value means higher throughput and better
|
||||||
|
compatibility but more memory.
|
||||||
|
|
||||||
|
config ESP8266_WIFI_AMSDU_ENABLED
|
||||||
|
bool "WiFi AMSDU RX"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Select this option to enable AMSDU feature
|
||||||
|
|
||||||
|
config ESP8266_WIFI_RX_BUFFER_NUM
|
||||||
|
int "Max number of WiFi RX buffers"
|
||||||
|
range 14 28
|
||||||
|
default 16
|
||||||
|
help
|
||||||
|
Set the number of WiFi RX buffers. Each buffer takes approximately ESP8266_WIFI_RX_BUFFER_LEN bytes of RAM.
|
||||||
|
|
||||||
|
WiFi hardware use these buffers to receive all 802.11 frames.
|
||||||
|
A higher number may allow higher throughput but increases memory use. If ESP8266_WIFI_AMPDU_RX_ENABLED
|
||||||
|
is enabled, this value is recommended to set equal or bigger than 8*1024/ESP8266_WIFI_RX_BUFFER_LEN in order
|
||||||
|
to achieve better throughput and compatibility with both stations and APs.
|
||||||
|
Most of time we should NOT change the default value unless special reason, e.g. test the maximum UDP RX
|
||||||
|
throughput with iperf etc. For iperf test in shieldbox, the recommended value is 26.
|
||||||
|
|
||||||
|
config ESP8266_WIFI_LEFT_CONTINUOUS_RX_BUFFER_NUM
|
||||||
|
int "The min number of WiFi continuous RX buffer"
|
||||||
|
range 0 16
|
||||||
|
default 4
|
||||||
|
help
|
||||||
|
Set the number of WiFi continuous RX buffer num.
|
||||||
|
The smaller the value, the easier RX hang will appear. Most of time we should NOT change the default
|
||||||
|
value unless special reason.
|
||||||
|
|
||||||
|
config ESP8266_WIFI_RX_PKT_NUM
|
||||||
|
int "Max number of WiFi RX packets"
|
||||||
|
range 4 16
|
||||||
|
default 7
|
||||||
|
help
|
||||||
|
Set the max number of signle WiFi packet.
|
||||||
|
|
||||||
|
config ESP8266_WIFI_TX_PKT_NUM
|
||||||
|
int "Max number of WiFi TX packets"
|
||||||
|
range 4 16
|
||||||
|
default 6
|
||||||
|
help
|
||||||
|
Set the number of WiFi TX packets. Each buffer takes approximately 1.6KB of RAM.
|
||||||
|
For some applications especially UDP applications, the upper layer can deliver frames faster than WiFi
|
||||||
|
layer can transmit. In these cases, we may run out of TX packets.
|
||||||
|
|
||||||
|
config ESP8266_WIFI_NVS_ENABLED
|
||||||
|
bool "WiFi NVS flash"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Select this option to enable WiFi NVS flash
|
||||||
|
|
||||||
config ESP8266_WIFI_DEBUG_LOG_ENABLE
|
config ESP8266_WIFI_DEBUG_LOG_ENABLE
|
||||||
bool "Enable WiFi debug log"
|
bool "Enable WiFi debug log"
|
||||||
default n
|
default n
|
||||||
@ -463,6 +535,27 @@ config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_WPS
|
|||||||
help
|
help
|
||||||
When this option is enabled, log for wps module will be enabled.
|
When this option is enabled, log for wps module will be enabled.
|
||||||
|
|
||||||
|
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_AMPDU
|
||||||
|
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
|
||||||
|
bool "ampdu"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
When this option is enabled, log for ampdu module will be enabled.
|
||||||
|
|
||||||
|
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_AMSDU
|
||||||
|
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
|
||||||
|
bool "amsdu"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
When this option is enabled, log for amsdu module will be enabled.
|
||||||
|
|
||||||
|
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_FRAG
|
||||||
|
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
|
||||||
|
bool "fragment"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
When this option is enabled, log for frag module will be enabled.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
menu PHY
|
menu PHY
|
||||||
|
@ -99,38 +99,75 @@ extern "C" {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
system_event_handler_t event_handler; /**< WiFi event handler */
|
system_event_handler_t event_handler; /**< WiFi event handler */
|
||||||
void* osi_funcs; /**< WiFi OS functions */
|
void* osi_funcs; /**< WiFi OS functions */
|
||||||
int static_rx_buf_num; /**< WiFi static RX buffer number */
|
uint8_t qos_enable; /**< WiFi QOS feature enable flag */
|
||||||
int dynamic_rx_buf_num; /**< WiFi dynamic RX buffer number */
|
uint8_t ampdu_rx_enable; /**< WiFi AMPDU RX feature enable flag */
|
||||||
int tx_buf_type; /**< WiFi TX buffer type */
|
uint8_t rx_ba_win; /**< WiFi Block Ack RX window size */
|
||||||
int static_tx_buf_num; /**< WiFi static TX buffer number */
|
uint8_t rx_ampdu_buf_num; /**< WiFi AMPDU RX buffer number */
|
||||||
int dynamic_tx_buf_num; /**< WiFi dynamic TX buffer number */
|
uint32_t rx_ampdu_buf_len; /**< WiFi AMPDU RX buffer length */
|
||||||
int csi_enable; /**< WiFi channel state information enable flag */
|
uint32_t rx_max_single_pkt_len; /**< WiFi RX max single packet size */
|
||||||
int ampdu_rx_enable; /**< WiFi AMPDU RX feature enable flag */
|
uint32_t rx_buf_len; /**< WiFi RX buffer size */
|
||||||
int ampdu_tx_enable; /**< WiFi AMPDU TX feature enable flag */
|
uint8_t amsdu_rx_enable; /**< WiFi AMSDU RX feature enable flag */
|
||||||
int nvs_enable; /**< WiFi NVS flash enable flag */
|
uint8_t rx_buf_num; /**< WiFi RX buffer number */
|
||||||
int nano_enable; /**< Nano option for printf/scan family enable flag */
|
uint8_t rx_pkt_num; /**< WiFi RX packet number */
|
||||||
int tx_ba_win; /**< WiFi Block Ack TX window size */
|
uint8_t left_continuous_rx_buf_num; /**< WiFi Rx left continuous rx buffer number */
|
||||||
int rx_ba_win; /**< WiFi Block Ack RX window size */
|
uint8_t tx_buf_num; /**< WiFi TX buffer number */
|
||||||
int magic; /**< WiFi init magic number, it should be the last field */
|
uint8_t nvs_enable; /**< WiFi NVS flash enable flag */
|
||||||
|
uint8_t nano_enable; /**< Nano option for printf/scan family enable flag */
|
||||||
|
uint32_t magic; /**< WiFi init magic number, it should be the last field */
|
||||||
} wifi_init_config_t;
|
} wifi_init_config_t;
|
||||||
|
|
||||||
|
#if CONFIG_ESP8266_WIFI_AMPDU_RX_ENABLED
|
||||||
|
#define WIFI_AMPDU_RX_ENABLED 1
|
||||||
|
#define WIFI_AMPDU_RX_BA_WIN CONFIG_ESP8266_WIFI_RX_BA_WIN_SIZE
|
||||||
|
#define WIFI_RX_MAX_SINGLE_PKT_LEN 1600
|
||||||
|
#else
|
||||||
|
#define WIFI_AMPDU_RX_ENABLED 0
|
||||||
|
#define WIFI_AMPDU_RX_BA_WIN 0 /* unused if ampdu_rx_enable == false */
|
||||||
|
#define WIFI_RX_MAX_SINGLE_PKT_LEN (1600 - 524)
|
||||||
|
#endif
|
||||||
|
#define WIFI_AMPDU_RX_AMPDU_BUF_LEN 72
|
||||||
|
#define WIFI_AMPDU_RX_AMPDU_BUF_NUM 3
|
||||||
|
#define WIFI_HW_RX_BUFFER_LEN 524
|
||||||
|
|
||||||
|
#if CONFIG_ESP8266_WIFI_QOS_ENABLED
|
||||||
|
#define WIFI_QOS_ENABLED 1
|
||||||
|
#else
|
||||||
|
#define WIFI_QOS_ENABLED 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_ESP8266_WIFI_AMSDU_ENABLED
|
||||||
|
#define WIFI_AMSDU_RX_ENABLED 1
|
||||||
|
#undef WIFI_RX_MAX_SINGLE_PKT_LEN
|
||||||
|
#define WIFI_RX_MAX_SINGLE_PKT_LEN 3000
|
||||||
|
#else
|
||||||
|
#define WIFI_AMSDU_RX_ENABLED 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_ESP8266_WIFI_NVS_ENABLED
|
||||||
|
#define WIFI_NVS_ENABLED 1
|
||||||
|
#else
|
||||||
|
#define WIFI_NVS_ENABLED 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#define WIFI_INIT_CONFIG_MAGIC 0x1F2F3F4F
|
#define WIFI_INIT_CONFIG_MAGIC 0x1F2F3F4F
|
||||||
|
|
||||||
#define WIFI_INIT_CONFIG_DEFAULT() { \
|
#define WIFI_INIT_CONFIG_DEFAULT() { \
|
||||||
.event_handler = &esp_event_send, \
|
.event_handler = &esp_event_send, \
|
||||||
.osi_funcs = NULL, \
|
.osi_funcs = NULL, \
|
||||||
.static_rx_buf_num = 5,\
|
.qos_enable = WIFI_QOS_ENABLED,\
|
||||||
.dynamic_rx_buf_num = 0,\
|
.ampdu_rx_enable = WIFI_AMPDU_RX_ENABLED,\
|
||||||
.tx_buf_type = 0,\
|
.rx_ampdu_buf_len = WIFI_AMPDU_RX_AMPDU_BUF_LEN,\
|
||||||
.static_tx_buf_num = 6,\
|
.rx_ampdu_buf_num = WIFI_AMPDU_RX_AMPDU_BUF_NUM,\
|
||||||
.dynamic_tx_buf_num = 0,\
|
.amsdu_rx_enable = WIFI_AMSDU_RX_ENABLED,\
|
||||||
.csi_enable = 0,\
|
.rx_ba_win = WIFI_AMPDU_RX_BA_WIN,\
|
||||||
.ampdu_rx_enable = 0,\
|
.rx_max_single_pkt_len = WIFI_RX_MAX_SINGLE_PKT_LEN,\
|
||||||
.ampdu_tx_enable = 0,\
|
.rx_buf_len = WIFI_HW_RX_BUFFER_LEN,\
|
||||||
.nvs_enable = 1,\
|
.rx_buf_num = CONFIG_ESP8266_WIFI_RX_BUFFER_NUM,\
|
||||||
|
.left_continuous_rx_buf_num = CONFIG_ESP8266_WIFI_LEFT_CONTINUOUS_RX_BUFFER_NUM,\
|
||||||
|
.rx_pkt_num = CONFIG_ESP8266_WIFI_RX_PKT_NUM,\
|
||||||
|
.tx_buf_num = CONFIG_ESP8266_WIFI_TX_PKT_NUM,\
|
||||||
|
.nvs_enable = WIFI_NVS_ENABLED,\
|
||||||
.nano_enable = 0,\
|
.nano_enable = 0,\
|
||||||
.tx_ba_win = 0,\
|
|
||||||
.rx_ba_win = 0,\
|
|
||||||
.magic = WIFI_INIT_CONFIG_MAGIC\
|
.magic = WIFI_INIT_CONFIG_MAGIC\
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -53,7 +53,9 @@ typedef enum {
|
|||||||
#define WIFI_LOG_SUBMODULE_MAC (1<<9)
|
#define WIFI_LOG_SUBMODULE_MAC (1<<9)
|
||||||
#define WIFI_LOG_SUBMODULE_WPA (1<<10)
|
#define WIFI_LOG_SUBMODULE_WPA (1<<10)
|
||||||
#define WIFI_LOG_SUBMODULE_WPS (1<<11)
|
#define WIFI_LOG_SUBMODULE_WPS (1<<11)
|
||||||
|
#define WIFI_LOG_SUBMODULE_AMPDU (1<<12)
|
||||||
|
#define WIFI_LOG_SUBMODULE_AMSDU (1<<13)
|
||||||
|
#define WIFI_LOG_SUBMODULE_FRAG (1<<14)
|
||||||
/**
|
/**
|
||||||
* @brief Set WIFI received TCP/IP data cache ram type
|
* @brief Set WIFI received TCP/IP data cache ram type
|
||||||
*
|
*
|
||||||
|
@ -76,6 +76,15 @@ static void esp_wifi_set_debug_log()
|
|||||||
#endif
|
#endif
|
||||||
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_WPS
|
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_WPS
|
||||||
wifi_log_submodule |= WIFI_LOG_SUBMODULE_WPS;
|
wifi_log_submodule |= WIFI_LOG_SUBMODULE_WPS;
|
||||||
|
#endif
|
||||||
|
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_AMPDU
|
||||||
|
wifi_log_submodule |= WIFI_LOG_SUBMODULE_AMPDU;
|
||||||
|
#endif
|
||||||
|
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_AMSDU
|
||||||
|
wifi_log_submodule |= WIFI_LOG_SUBMODULE_AMSDU;
|
||||||
|
#endif
|
||||||
|
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_FRAG
|
||||||
|
wifi_log_submodule |= WIFI_LOG_SUBMODULE_FRAG;
|
||||||
#endif
|
#endif
|
||||||
esp_wifi_internal_set_log_level(wifi_log_level);
|
esp_wifi_internal_set_log_level(wifi_log_level);
|
||||||
esp_wifi_internal_set_log_mod(wifi_log_submodule);
|
esp_wifi_internal_set_log_mod(wifi_log_submodule);
|
||||||
|
@ -29,6 +29,8 @@ void phy_afterwake_set_rfoption(uint8_t);
|
|||||||
void write_data_to_rtc(uint8_t *);
|
void write_data_to_rtc(uint8_t *);
|
||||||
|
|
||||||
void get_data_from_rtc(uint8_t *);
|
void get_data_from_rtc(uint8_t *);
|
||||||
|
int register_chipv6_phy(uint8_t* );
|
||||||
|
void phy_disable_agc();
|
||||||
|
|
||||||
uint8_t chip_init(uint8_t* init_data, uint8_t *mac, uint32_t uart_baudrate);
|
uint8_t chip_init(uint8_t* init_data, uint8_t *mac, uint32_t uart_baudrate);
|
||||||
|
|
||||||
|
@ -68,12 +68,7 @@ esp_err_t esp_phy_rf_init(const esp_phy_init_data_t* init_data, esp_phy_calibrat
|
|||||||
{
|
{
|
||||||
esp_err_t status = ESP_OK;
|
esp_err_t status = ESP_OK;
|
||||||
uint8_t sta_mac[6];
|
uint8_t sta_mac[6];
|
||||||
uint8_t* local_init_data = calloc(1, 256);
|
uint8_t *local_init_data = calloc(1, 256);
|
||||||
#ifdef CONFIG_CONSOLE_UART_BAUDRATE
|
|
||||||
const uint32_t uart_baudrate = CONFIG_CONSOLE_UART_BAUDRATE;
|
|
||||||
#else
|
|
||||||
const uint32_t uart_baudrate = 74880; // ROM default baudrate
|
|
||||||
#endif
|
|
||||||
|
|
||||||
memcpy(local_init_data, init_data->params, 128);
|
memcpy(local_init_data, init_data->params, 128);
|
||||||
|
|
||||||
@ -89,9 +84,16 @@ esp_err_t esp_phy_rf_init(const esp_phy_init_data_t* init_data, esp_phy_calibrat
|
|||||||
}
|
}
|
||||||
|
|
||||||
esp_efuse_mac_get_default(sta_mac);
|
esp_efuse_mac_get_default(sta_mac);
|
||||||
chip_init(local_init_data, sta_mac, uart_baudrate);
|
|
||||||
ESP_LOGI(TAG, "phy ver: %d_%d", (READ_PERI_REG(0x6000107C) >> 16) & 0xFFF, READ_PERI_REG(0x6000107C) >> 28);
|
int ret = register_chipv6_phy(local_init_data);
|
||||||
get_data_from_rtc((uint8_t*)calibration_data);
|
if (ret) {
|
||||||
|
ESP_LOGI(TAG, "phy register error, ret:%d", ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
phy_disable_agc();
|
||||||
|
|
||||||
|
ESP_LOGI(TAG, "phy ver: %d_%d", (READ_PERI_REG(0x6000107C)>>16)&0xFFF, READ_PERI_REG(0x6000107C)>>28);
|
||||||
|
get_data_from_rtc((uint8_t *)calibration_data);
|
||||||
|
|
||||||
memcpy(rx_gain_dc_table, calibration_data->rx_gain_dc_table, 4 * 125);
|
memcpy(rx_gain_dc_table, calibration_data->rx_gain_dc_table, 4 * 125);
|
||||||
phy_rx_gain_dc_table = rx_gain_dc_table;
|
phy_rx_gain_dc_table = rx_gain_dc_table;
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "internal/esp_wifi_internal.h"
|
#include "internal/esp_wifi_internal.h"
|
||||||
#include "internal/esp_system_internal.h"
|
#include "internal/esp_system_internal.h"
|
||||||
#include "esp8266/eagle_soc.h"
|
#include "esp8266/eagle_soc.h"
|
||||||
|
#include "esp8266/uart_register.h"
|
||||||
|
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
@ -47,6 +48,7 @@ extern int wifi_timer_init(void);
|
|||||||
extern int wifi_nvs_init(void);
|
extern int wifi_nvs_init(void);
|
||||||
extern esp_err_t esp_pthread_init(void);
|
extern esp_err_t esp_pthread_init(void);
|
||||||
extern void phy_get_bb_evm(void);
|
extern void phy_get_bb_evm(void);
|
||||||
|
extern void uart_div_modify(uint8_t uart_no, uint16_t DivLatchValue);
|
||||||
|
|
||||||
static inline int should_load(uint32_t load_addr)
|
static inline int should_load(uint32_t load_addr)
|
||||||
{
|
{
|
||||||
@ -61,6 +63,19 @@ static inline int should_load(uint32_t load_addr)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void uart_init()
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_CONSOLE_UART_BAUDRATE
|
||||||
|
const uint32_t uart_baudrate = CONFIG_CONSOLE_UART_BAUDRATE;
|
||||||
|
#else
|
||||||
|
const uint32_t uart_baudrate = 74880; // ROM default baudrate
|
||||||
|
#endif
|
||||||
|
while (READ_PERI_REG(UART_STATUS(0)) & (UART_TXFIFO_CNT << UART_TXFIFO_CNT_S));
|
||||||
|
while (READ_PERI_REG(UART_STATUS(1)) & (UART_TXFIFO_CNT << UART_TXFIFO_CNT_S));
|
||||||
|
uart_div_modify(0, UART_CLK_FREQ / uart_baudrate);
|
||||||
|
uart_div_modify(1, UART_CLK_FREQ / uart_baudrate);
|
||||||
|
}
|
||||||
|
|
||||||
static void user_init_entry(void *param)
|
static void user_init_entry(void *param)
|
||||||
{
|
{
|
||||||
void (**func)(void);
|
void (**func)(void);
|
||||||
@ -76,13 +91,16 @@ static void user_init_entry(void *param)
|
|||||||
|
|
||||||
phy_get_bb_evm();
|
phy_get_bb_evm();
|
||||||
|
|
||||||
|
/*enable tsf0 interrupt for pwm*/
|
||||||
|
REG_WRITE(PERIPHS_DPORT_BASEADDR, (REG_READ(PERIPHS_DPORT_BASEADDR) & ~0x1F) | 0x1);
|
||||||
|
REG_WRITE(INT_ENA_WDEV, REG_READ(INT_ENA_WDEV) | WDEV_TSF0_REACH_INT);
|
||||||
|
|
||||||
assert(nvs_flash_init() == 0);
|
assert(nvs_flash_init() == 0);
|
||||||
assert(wifi_nvs_init() == 0);
|
|
||||||
assert(rtc_init() == 0);
|
assert(rtc_init() == 0);
|
||||||
assert(mac_init() == 0);
|
assert(mac_init() == 0);
|
||||||
|
uart_init();
|
||||||
assert(base_gpio_init() == 0);
|
assert(base_gpio_init() == 0);
|
||||||
esp_phy_load_cal_and_init(0);
|
esp_phy_load_cal_and_init(0);
|
||||||
assert(wifi_timer_init() == 0);
|
|
||||||
|
|
||||||
esp_wifi_set_rx_pbuf_mem_type(WIFI_RX_PBUF_DRAM);
|
esp_wifi_set_rx_pbuf_mem_type(WIFI_RX_PBUF_DRAM);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user