]> granicus.if.org Git - esp-idf/commitdiff
esp32: menuconfig adds some WiFi options
authorLiu Zhi Fu <liuzhifu@espressif.com>
Tue, 21 Feb 2017 06:52:25 +0000 (14:52 +0800)
committerLiu Zhi Fu <liuzhifu@espressif.com>
Thu, 2 Mar 2017 10:13:49 +0000 (18:13 +0800)
1. Add options to enable/disable AMPDU
2. Add options to enable/disable WIFI NVS
3. Add options to configure WiFi RX/TX buffer number

components/esp32/Kconfig
components/esp32/include/esp_task.h
components/esp32/include/esp_wifi.h
components/esp32/lib

index eea04a3327d98196513ea87320feb3b2b10393ee..ab1e04e809b160e635c6b6a881945208019c61a3 100644 (file)
@@ -513,15 +513,61 @@ config SW_COEXIST_ENABLE
         automatically managed, no user intervention is required.
 
 
-config ESP32_WIFI_RX_BUFFER_NUM
-    int "Max number of WiFi RX buffers"
+config ESP32_WIFI_STATIC_RX_BUFFER_NUM
+    int "Max number of WiFi static RX buffers"
     depends on WIFI_ENABLED
     range 2 25
     default 10
     help
-        Set the number of WiFi rx buffers. Each buffer takes approximately 1.6KB of RAM.
-        Larger number for higher throughput but more memory. Smaller number for lower
-        throughput but less memory.
+        Set the number of WiFi static rx buffers. Each buffer takes approximately 1.6KB of RAM.
+        The static rx buffers are allocated when esp_wifi_init is called, they are not freed
+        until esp_wifi_deinit is called. 
+        WiFi hardware use these buffers to receive packets, generally larger number for higher
+        throughput but more memory, smaller number for lower throughput but less memory.
+
+config ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM
+    int "Max number of WiFi dynamic RX buffers"
+    depends on WIFI_ENABLED
+    range 0 64
+    default 0
+    help
+        Set the number of WiFi dynamic rx buffers, 0 means no limitation for dynamic rx buffer
+        allocation. The size of dynamic rx buffers is not fixed.
+        For each received packet in static rx buffers, WiFi driver makes a copy
+        to dynamic rx buffers and then deliver it to high layer stack. The dynamic rx buffer
+        is freed when the application, such as socket, successfully received the packet.
+        For some applications, the WiFi driver receiving speed is faster than application 
+        consuming speed, we may run out of memory if no limitation for the dynamic rx buffer
+        number.  Generally the number of dynamic rx buffer should be no less than static
+        rx buffer number if it is not 0. 
+
+config ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM
+    int "Max number of WiFi dynamic TX buffers"
+    depends on WIFI_ENABLED
+    range 16 64
+    default 32
+    help
+        Set the number of WiFi dynamic tx buffers, 0 means no limitation for dynamic tx buffer
+        allocation. The size of dynamic tx buffers is not fixed.
+        For each tx packet from high layer stack, WiFi driver make a copy of it. For some applications,
+        especially the UDP application, the high layer deliver speed is faster than the WiFi tx
+        speed, we may run out of memory if no limitation for the dynamic tx buffer number. 
+
+
+config ESP32_WIFI_AMPDU_ENABLED
+    bool "WiFi AMPDU"
+    depends on WIFI_ENABLED
+    default y
+    help
+        Select this option to enable AMPDU feature
+
+
+config ESP32_WIFI_NVS_ENABLED
+    bool "WiFi NVS flash"
+    depends on WIFI_ENABLED
+    default y
+    help
+        Select this option to enable WiFi NVS flash
 
 config PHY_ENABLED
        bool
index bb028bf48582635a3cd8590bf840df49ee6e95c5..04f3178a19541a5a1e2236c20cfdb72ba20dfc97 100644 (file)
 #define ESP_TASK_PRIO_MAX (configMAX_PRIORITIES)
 #define ESP_TASK_PRIO_MIN (0)
 
-/* Wifi library task */
-#define ESP_TASKD_WATCHDOG_PRIO       (ESP_TASK_PRIO_MAX - 1)
-#define ESP_TASKD_WATCHDOG_STACK      2048
-#define ESP_TASK_WPA2_PRIO            (ESP_TASK_PRIO_MAX - 1)
-#define ESP_TASK_WPA2_STACK           2048
-#define ESP_TASKD_WIFI_PRIO           (ESP_TASK_PRIO_MAX - 2)
-#define ESP_TASKD_WIFI_STACK          8196
-#define ESP_TASKD_WIFI_TIMER_PRIO     (ESP_TASK_PRIO_MAX - 3)
-#define ESP_TASKD_WIFI_TIMER_STACK    2048
-#define ESP_TASK_WPS_PRIO             (ESP_TASK_PRIO_MIN + 2)
-#define ESP_TASK_WPS_STACK            2048
-
 /* Bt contoller Task */
 /* controller */
 #define ESP_TASK_BT_CONTROLLER_PRIO   (ESP_TASK_PRIO_MAX - 1)
index 9f3b1ed70d2d79711872c24233636db3116114df..2312bc08a207c9c246f21fca4e0af364422c767b 100755 (executable)
@@ -94,14 +94,45 @@ extern "C" {
  * @brief WiFi stack configuration parameters passed to esp_wifi_init call.
  */
 typedef struct {
-    system_event_handler_t event_handler;  /**< WiFi event handler */
-    uint32_t rx_buf_num;  /**< WiFi RX buffer number */
+    system_event_handler_t event_handler;          /**< WiFi event handler */
+    int                    static_rx_buf_num;      /**< WiFi static RX buffer number */
+    int                    dynamic_rx_buf_num;     /**< WiFi dynamic RX buffer number */
+    int                    dynamic_tx_buf_num;     /**< WiFi dynamic TX buffer number */
+    int                    ampdu_enable;           /**< WiFi AMPDU feature enable flag */
+    int                    nvs_enable;             /**< WiFi NVS flash enable flag */
+    int                    nano_enable;            /**< Nano option for printf/scan family enable flag */
+    int                    magic;                  /**< WiFi init magic number, it should be the last field */
 } wifi_init_config_t;
 
+#if CONFIG_ESP32_WIFI_AMPDU_ENABLED
+#define WIFI_AMPDU_ENABLED        1
+#else
+#define WIFI_AMPDU_ENABLED        0
+#endif
+
+#if CONFIG_ESP32_WIFI_NVS_ENABLED
+#define WIFI_NVS_ENABLED          1
+#else
+#define WIFI_NVS_ENABLED          0
+#endif
+
+#if CONFIG_NEWLIB_NANO_FORMAT
+#define WIFI_NANO_FORMAT_ENABLED  1
+#else
+#define WIFI_NANO_FORMAT_ENABLED  0
+#endif
+#define WIFI_INIT_CONFIG_MAGIC    0x1F2F3F4F
 #ifdef CONFIG_WIFI_ENABLED
 #define WIFI_INIT_CONFIG_DEFAULT() { \
     .event_handler = &esp_event_send, \
-    .rx_buf_num = CONFIG_ESP32_WIFI_RX_BUFFER_NUM, \
+    .static_rx_buf_num = CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM,\
+    .dynamic_rx_buf_num = CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM,\
+    .dynamic_tx_buf_num = CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM,\
+    .ampdu_enable = WIFI_AMPDU_ENABLED,\
+    .nvs_enable = WIFI_NVS_ENABLED,\
+    .nano_enable = WIFI_NANO_FORMAT_ENABLED,\
+    .magic = WIFI_INIT_CONFIG_MAGIC\
 };
 #else
 #define WIFI_INIT_CONFIG_DEFAULT #error Wifi is disabled in config, WIFI_INIT_CONFIG_DEFAULT will not work
@@ -113,8 +144,11 @@ typedef struct {
   *         WiFi NVS structure etc, this WiFi also start WiFi task
   *
   * @attention 1. This API must be called before all other WiFi API can be called
-  * @attention 2. event_handler field in cfg should be set to a valid event handler function.
-  *            In most cases, use the WIFI_INIT_CONFIG_DEFAULT macro which sets esp_event_send().
+  * @attention 2. Always use WIFI_INIT_CONFIG_DEFAULT macro to init the config to default values, this can
+  *               guarantee all the fields got correct value when more fields are added into wifi_init_config_t
+  *               in future release. If you want to set your owner initial values, overwrite the default values
+  *               which are set by WIFI_INIT_CONFIG_DEFAULT, please be notified that the field 'magic' of 
+  *               wifi_init_config_t should always be WIFI_INIT_CONFIG_MAGIC!
   *
   * @param  config provide WiFi init configuration
   *
index e22ec1a5140dca2bb44f9bfb3147911fa4ebb8fe..57b2234ed3a501ddbc36bdc032e1714d2838608d 160000 (submodule)
@@ -1 +1 @@
-Subproject commit e22ec1a5140dca2bb44f9bfb3147911fa4ebb8fe
+Subproject commit 57b2234ed3a501ddbc36bdc032e1714d2838608d