]> granicus.if.org Git - esp-idf/commitdiff
esp_system: remove link time dependency on WiFi stack
authorIvan Grokhotkov <ivan@espressif.com>
Thu, 15 Jun 2017 10:00:49 +0000 (18:00 +0800)
committerIvan Grokhotkov <ivan@espressif.com>
Thu, 15 Jun 2017 10:15:36 +0000 (18:15 +0800)
- esp_restart will not pull in WiFi stack (if it is not used otherwise)
- esp_restore is moved into a separate file to break link time
  dependency

components/esp32/restore.c [new file with mode: 0644]
components/esp32/system_api.c

diff --git a/components/esp32/restore.c b/components/esp32/restore.c
new file mode 100644 (file)
index 0000000..e17f1ab
--- /dev/null
@@ -0,0 +1,24 @@
+// Copyright 2013-2017 Espressif Systems (Shanghai) PTE LTD
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "esp_system.h"
+#include "esp_wifi.h"
+
+/* This function is in a separate file from the reset of system APIs because
+ * it causes link time dependency on WiFi stack.
+ */
+void system_restore(void)
+{
+    esp_wifi_restore();
+}
index 30f6a684c0e2609aae9b2296ec110a6729d4bf13..c797f30bdcb4f48bcc040c7d2244d28b51599351 100644 (file)
@@ -228,6 +228,16 @@ esp_err_t esp_read_mac(uint8_t* mac, esp_mac_type_t type)
 
 void esp_restart_noos() __attribute__ ((noreturn));
 
+/* Dummy function to be used instead of esp_wifi_stop if WiFi stack is not
+ * linked in (even though CONFIG_WIFI_ENABLED is set).
+ */
+esp_err_t wifi_stop_noop()
+{
+    return ESP_OK;
+}
+
+esp_err_t esp_wifi_stop(void) __attribute((weak, alias("wifi_stop_noop")));
+
 void IRAM_ATTR esp_restart(void)
 {
 #ifdef CONFIG_WIFI_ENABLED
@@ -320,11 +330,6 @@ void IRAM_ATTR esp_restart_noos()
 
 void system_restart(void) __attribute__((alias("esp_restart")));
 
-void system_restore(void)
-{
-    esp_wifi_restore();
-}
-
 uint32_t esp_get_free_heap_size(void)
 {
     return xPortGetFreeHeapSize();