feat(log): add esp_log to internal wifi lib

This commit is contained in:
Zhang Jun Hao
2019-01-28 15:03:51 +08:00
parent 54d31061c1
commit 965fc47ff8
8 changed files with 289 additions and 2 deletions

View File

@ -288,6 +288,127 @@ config WIFI_TX_RATE_SEQUENCE_FROM_HIGH
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.
config ESP8266_WIFI_DEBUG_LOG_ENABLE
bool "Enable WiFi debug log"
default n
help
Select this option to enable WiFi debug log
choice ESP8266_WIFI_DEBUG_LOG_LEVEL
depends on ESP8266_WIFI_DEBUG_LOG_ENABLE
prompt "The DEBUG level is enabled"
default ESP8266_WIFI_DEBUG_LOG_ERROR
help
The WiFi log is divided into the following levels: ERROR,WARNING,INFO,DEBUG,VERBOSE.
The ERROR level is enabled by default, and the WARNING,INFO,DEBUG,VERBOSE levels can be enabled here.
config ESP8266_WIFI_DEBUG_LOG_ERROR
bool "Error"
config ESP8266_WIFI_DEBUG_LOG_WARNING
bool "Warning"
config ESP8266_WIFI_DEBUG_LOG_INFO
bool "Info"
config ESP8266_WIFI_DEBUG_LOG_DEBUG
bool "Debug"
config ESP8266_WIFI_DEBUG_LOG_VERBOSE
bool "Verbose"
endchoice
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE
depends on ESP8266_WIFI_DEBUG_LOG_ENABLE
bool "WiFi debug log submodule"
default n
help
Enable this option to set the WiFi debug log submodule.
Currently the log submodule contains the following parts: INIT,IOCTL,CONN,SCAN.
The INIT submodule indicates the initialization process.The IOCTL submodule indicates the API calling
process.
The CONN submodule indicates the connecting process.The SCAN submodule indicates the scaning process.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_CORE
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "core"
default n
help
When this option is enabled, log for core module will be enabled..
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_SCAN
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "scan"
default n
help
When this option is enabled, log for scan module will be enabled.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_PM
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "power management"
default n
help
When this option is enabled, log for power management module will be enabled.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_NVS
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "NVS"
default n
help
When this option is enabled, log for NVS module will be enabled.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_TRC
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "TRC"
default n
help
When this option is enabled, log for TRC module will be enabled.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_EBUF
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "EBUF"
default n
help
When this option is enabled, log for EBUF module will be enabled.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_NET80211
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "NET80211"
default n
help
When this option is enabled, log for net80211 module will be enabled.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_TIMER
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "TIMER"
default n
help
When this option is enabled, log for timer module will be enabled.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_ESPNOW
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "ESPNOW"
default n
help
When this option is enabled, log for espnow module will be enabled.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_MAC
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "MAC layer"
default n
help
When this option is enabled, log for mac layer module will be enabled.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_WPA
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "wpa"
default n
help
When this option is enabled, log for wpa module will be enabled.
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_WPS
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
bool "wps"
default n
help
When this option is enabled, log for wps module will be enabled.
endmenu
menu PHY

View File

@ -11,8 +11,13 @@ COMPONENT_SRCDIRS := driver source
LIBS ?=
ifndef CONFIG_NO_BLOBS
ifndef CONFIG_ESP8266_WIFI_DEBUG_LOG_ENABLE
LIBS += gcc hal core net80211 \
phy pp smartconfig ssc wpa espnow wps
else
LIBS += gcc hal core_dbg net80211_dbg \
phy pp_dbg smartconfig ssc wpa_dbg espnow_dbg wps_dbg
endif
endif
#Linker scripts used to link the final application.

View File

@ -24,6 +24,36 @@ typedef enum {
WIFI_RX_PBUF_DRAM, /** save rx buffer to dram and upload to tcpip */
} wifi_rx_pbuf_mem_type_t;
/**
* @brief WiFi log level
*
*/
typedef enum {
WIFI_LOG_ERROR = 0, /*enabled by default*/
WIFI_LOG_WARNING, /*can be set in menuconfig*/
WIFI_LOG_INFO, /*can be set in menuconfig*/
WIFI_LOG_DEBUG, /*can be set in menuconfig*/
WIFI_LOG_VERBOSE, /*can be set in menuconfig*/
} wifi_log_level_t;
/**
* @brief WiFi log submodule definition
*
*/
#define WIFI_LOG_SUBMODULE_NULL (0)
#define WIFI_LOG_SUBMODULE_CORE (1<<0)
#define WIFI_LOG_SUBMODULE_SCAN (1<<1)
#define WIFI_LOG_SUBMODULE_PM (1<<2)
#define WIFI_LOG_SUBMODULE_NVS (1<<3)
#define WIFI_LOG_SUBMODULE_TRC (1<<4)
#define WIFI_LOG_SUBMODULE_EBUF (1<<5)
#define WIFI_LOG_SUBMODULE_NET80211 (1<<6)
#define WIFI_LOG_SUBMODULE_TIMER (1<<7)
#define WIFI_LOG_SUBMODULE_ESPNOW (1<<8)
#define WIFI_LOG_SUBMODULE_MAC (1<<9)
#define WIFI_LOG_SUBMODULE_WPA (1<<10)
#define WIFI_LOG_SUBMODULE_WPS (1<<11)
/**
* @brief Set WIFI received TCP/IP data cache ram type
*
@ -106,6 +136,41 @@ typedef esp_err_t (*wifi_rxcb_t)(void *buffer, uint16_t len, void *eb);
*/
esp_err_t esp_wifi_internal_reg_rxcb(wifi_interface_t ifx, wifi_rxcb_t fn);
/**
* @brief Set current WiFi log level
*
* @param level Log level.
*
* @return
* - ESP_OK: succeed
* - ESP_FAIL: level is invalid
*/
esp_err_t esp_wifi_internal_set_log_level(wifi_log_level_t level);
/**
* @brief Set current log module and submodule
*
* @param module Log module
* @param submodule Log submodule
*
* @return
* - ESP_OK: succeed
* - ESP_ERR_WIFI_NOT_INIT: WiFi is not initialized by esp_wifi_init
* - ESP_ERR_WIFI_ARG: invalid argument
*/
esp_err_t esp_wifi_internal_set_log_mod(uint32_t submodule);
/**
* @brief Get current WiFi log info
*
* @param log_level the return log level.
* @param log_mod the return log module and submodule
*
* @return
* - ESP_OK: succeed
*/
esp_err_t esp_wifi_internal_get_log(wifi_log_level_t *log_level, uint32_t *log_mod);
#ifdef __cplusplus
}
#endif

View File

@ -106,7 +106,11 @@ SECTIONS
*(.init)
*(.iram1 .iram1.*)
*libspi_flash.a:spi_flash_raw.o(.literal .text .literal.* .text.*)
#ifdef CONFIG_ESP8266_WIFI_DEBUG_LOG_ENABLE
*libpp_dbg.a:(.literal .text .literal.* .text.*)
#else
*libpp.a:(.literal .text .literal.* .text.*)
#endif
*libphy.a:(.literal .text .literal.* .text.*)
*(.literal .text .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
*(.fini.literal)
@ -122,8 +126,12 @@ SECTIONS
#endif
#ifdef CONFIG_ESP8266_CORE_GLOBAL_DATA_LINK_IRAM
#ifdef CONFIG_ESP8266_WIFI_DEBUG_LOG_ENABLE
*libcore_dbg.a:(.bss .data .bss.* .data.* COMMON)
#else
*libcore.a:(.bss .data .bss.* .data.* COMMON)
#endif
#endif
#ifdef CONFIG_FREERTOS_GLOBAL_DATA_LINK_IRAM
*libfreertos.a:tasks.o(.bss .data .bss.* .data.* COMMON)
@ -157,7 +165,11 @@ SECTIONS
.rodata : ALIGN(4)
{
_rodata_start = ABSOLUTE(.);
#ifdef CONFIG_ESP8266_WIFI_DEBUG_LOG_ENABLE
*libpp_dbg.a:(.rodata.* .rodata)
#else
*libpp.a:(.rodata.* .rodata)
#endif
*liblog.a:(.rodata.* .rodata)
*(.gnu.linkonce.r.*)
*(.rodata1)

View File

@ -23,6 +23,68 @@ const size_t _g_esp_wifi_ppt_task_stk_size = CONFIG_WIFI_PPT_TASKSTACK_SIZE;
esp_err_t esp_wifi_init_internal(const wifi_init_config_t *config);
static void esp_wifi_set_debug_log()
{
/* set WiFi log level and module */
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_ENABLE
uint32_t wifi_log_level = WIFI_LOG_ERROR;
uint32_t wifi_log_submodule = WIFI_LOG_SUBMODULE_NULL;
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_WARNING
wifi_log_level = WIFI_LOG_WARNING;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_INFO
wifi_log_level = WIFI_LOG_INFO;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_DEBUG
wifi_log_level = WIFI_LOG_DEBUG;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_VERBOSE
wifi_log_level = WIFI_LOG_VERBOSE;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_CORE
wifi_log_submodule |= WIFI_LOG_SUBMODULE_CORE;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_SCAN
wifi_log_submodule |= WIFI_LOG_SUBMODULE_SCAN;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_PM
wifi_log_submodule |= WIFI_LOG_SUBMODULE_PM;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_NVS
wifi_log_submodule |= WIFI_LOG_SUBMODULE_NVS;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_TRC
wifi_log_submodule |= WIFI_LOG_SUBMODULE_TRC;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_EBUF
wifi_log_submodule |= WIFI_LOG_SUBMODULE_EBUF;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_NET80211
wifi_log_submodule |= WIFI_LOG_SUBMODULE_NET80211;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_TIMER
wifi_log_submodule |= WIFI_LOG_SUBMODULE_TIMER;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_ESPNOW
wifi_log_submodule |= WIFI_LOG_SUBMODULE_ESPNOW;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_MAC
wifi_log_submodule |= WIFI_LOG_SUBMODULE_MAC;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_WPA
wifi_log_submodule |= WIFI_LOG_SUBMODULE_WPA;
#endif
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_WPS
wifi_log_submodule |= WIFI_LOG_SUBMODULE_WPS;
#endif
esp_wifi_internal_set_log_level(wifi_log_level);
esp_wifi_internal_set_log_mod(wifi_log_submodule);
#else
esp_wifi_internal_set_log_level(WIFI_LOG_ERROR);
esp_wifi_internal_set_log_mod(WIFI_LOG_SUBMODULE_NULL);
#endif /* CONFIG_ESP8266_WIFI_DEBUG_LOG_ENABLE*/
}
/**
* @brief Init WiFi
* Alloc resource for WiFi driver, such as WiFi control structure, RX/TX buffer,
@ -45,7 +107,11 @@ esp_err_t esp_wifi_init_internal(const wifi_init_config_t *config);
esp_err_t esp_wifi_init(const wifi_init_config_t *config)
{
esp_event_set_default_wifi_handlers();
return esp_wifi_init_internal(config);
esp_err_t result = esp_wifi_init_internal(config);
if (result == ESP_OK) {
esp_wifi_set_debug_log();
}
return result;
}
void esp_deep_sleep_set_rf_option(uint8_t option)