]> granicus.if.org Git - esp-idf/commitdiff
lwip/esp32: move the extern wifi calls into esp_wifi_internal.h
authorliuzhifu <liuzhifu@espressif.com>
Wed, 26 Oct 2016 05:23:35 +0000 (13:23 +0800)
committerliuzhifu <liuzhifu@espressif.com>
Wed, 26 Oct 2016 05:23:35 +0000 (13:23 +0800)
1. Add esp_wifi_internal.h
2. Rename system_pp_recycle_rx_pkt to esp_wifi_internal_free_rx_buffer
3. rename esp_wifi_tx_is_stop to esp_wifi_internal_tx_is_stop
4. rename ieee80211_output to esp_wifi_internal_tx

components/esp32/include/esp_wifi_internal.h [new file with mode: 0644]
components/lwip/api/sockets.c
components/lwip/core/pbuf.c
components/lwip/include/lwip/port/netif/wlanif.h
components/lwip/port/netif/wlanif.c

diff --git a/components/esp32/include/esp_wifi_internal.h b/components/esp32/include/esp_wifi_internal.h
new file mode 100644 (file)
index 0000000..5100010
--- /dev/null
@@ -0,0 +1,80 @@
+// Copyright 2015-2016 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.
+
+/*
+ * All the APIs declared here are internal only APIs, it can only be used by 
+ * espressif internal modules, such as SSC, LWIP, TCPIP adapter etc, espressif 
+ * customers are not recommended to use them.
+ *
+ * If someone really want to use specified APIs declared in here, please contact
+ * espressif AE/developer to make sure you know the limitations or risk of 
+ * the API, otherwise you may get unexpected behavior!!!
+ *
+ */
+
+
+#ifndef __ESP_WIFI_INTERNAL_H__
+#define __ESP_WIFI_INTERNAL_H__
+
+#include <stdint.h>
+#include <stdbool.h>
+#include "freertos/FreeRTOS.h"
+#include "freertos/queue.h"
+#include "rom/queue.h"
+#include "esp_err.h"
+#include "esp_wifi_types.h"
+#include "esp_event.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+  * @brief  get whether the wifi driver is allowed to transmit data or not
+  *
+  * @param  none
+  *
+  * @return    true  : upper layer should stop to transmit data to wifi driver
+  * @return    false : upper layer can transmit data to wifi driver
+  */
+bool esp_wifi_internal_tx_is_stop(void);
+
+/**
+  * @brief  free the rx buffer which allocated by wifi driver
+  *
+  * @param  void* buffer: rx buffer pointer
+  *
+  * @return    nonoe
+  */
+void esp_wifi_internal_free_rx_buffer(void* buffer);
+
+/**
+  * @brief  free the rx buffer which allocated by wifi driver
+  *
+  * @attention1 TODO should modify the return type from bool to int
+  * 
+  * @param  wifi_interface_t wifi_if : wifi interface id
+  * @param  void *buffer : the buffer to be tansmit
+  * @param  u16_t len : the length of buffer
+  *
+  * @return True : success transmit the buffer to wifi driver
+  *         False : failed to transmit the buffer to wifi driver
+  */
+bool esp_wifi_internal_tx(wifi_interface_t wifi_if, void *buffer, u16_t len);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ESP_WIFI_H__ */
index 350847b57c4f44a63037ae1a68930f66e0a866dd..47f25bb076ab40fae3007a6685b8dc316ea7380e 100755 (executable)
@@ -388,10 +388,8 @@ static void lwip_socket_drop_registered_memberships(int s);
 #endif /* LWIP_IGMP */
 
 #ifdef LWIP_ESP8266
-
-/* Since esp_wifi_tx_is_stop/system_get_free_heap_size are not an public wifi API, so extern them here*/
-extern size_t system_get_free_heap_size(void);
-extern bool esp_wifi_tx_is_stop(void);
+#include "esp_wifi_internal.h"
+#include "esp_system.h"
 
 /* Please be notified that this flow control is just a workaround for fixing wifi Q full issue. 
  * Under UDP/TCP pressure test, we found that the sockets may cause wifi tx queue full if the socket
@@ -404,7 +402,7 @@ static inline void esp32_tx_flow_ctrl(void)
 {
   uint8_t _wait_delay = 0;
 
-  while ((system_get_free_heap_size() < HEAP_HIGHWAT) || esp_wifi_tx_is_stop()){
+  while ((system_get_free_heap_size() < HEAP_HIGHWAT) || esp_wifi_internal_tx_is_stop()){
      vTaskDelay(_wait_delay/portTICK_RATE_MS);
      if (_wait_delay < 64) _wait_delay *= 2;
   }
index e35f8a6b7fb2c1f7658265ca05ad3e1f44efe841..044d765cdb42efbafca6a0056a2ccaeebac362cb 100755 (executable)
@@ -83,6 +83,7 @@ static const char mem_debug_file[] ICACHE_RODATA_ATTR STORE_ATTR = __FILE__;
 #endif
 
 #ifdef LWIP_ESP8266
+#include "esp_wifi_internal.h"
 #define EP_OFFSET 0
 #endif
 
@@ -764,8 +765,7 @@ pbuf_free(struct pbuf *p)
         } else if (type == PBUF_ROM || type == PBUF_REF) {
         
 #ifdef LWIP_ESP8266
-          extern void system_pp_recycle_rx_pkt(void*);
-          if (type == PBUF_REF && p->eb != NULL ) system_pp_recycle_rx_pkt(p->eb);
+          if (type == PBUF_REF && p->eb != NULL ) esp_wifi_internal_free_rx_buffer(p->eb);
 #endif
 
             memp_free(MEMP_PBUF, p);
index 7eb303eab46a5d447c7523da51b689755f9c220e..c6f7831b3d3b081134e289fd2c3a4eef7c7f531e 100755 (executable)
@@ -8,6 +8,8 @@
 
 #include "esp_wifi.h"
 
+#include "esp_wifi_internal.h"
+
 #include "lwip/err.h"
 
 #ifdef __cplusplus
@@ -18,8 +20,6 @@ err_t wlanif_init(struct netif *netif);
 
 void wlanif_input(struct netif *netif, void *buffer, u16_t len, void* eb);
 
-bool ieee80211_output(wifi_interface_t wifi_if, void *buffer, u16_t len);
-
 wifi_interface_t wifi_get_interface(void *dev);
 
 void netif_reg_addr_change_cb(void* cb);
index 9832c41aff0fd3863d62c60f9296d03bc1f235c6..0b4fe70baddface215a5feb89008d1fa63dec6e9 100755 (executable)
@@ -150,12 +150,12 @@ low_level_output(struct netif *netif, struct pbuf *p)
         }
     }
     
-    ieee80211_output(wifi_if, q->payload, pbuf_x_len);
+    esp_wifi_internal_tx(wifi_if, q->payload, pbuf_x_len);
     return ERR_OK;
     
 #else
     for(q = p; q != NULL; q = q->next) {
-        ieee80211_output(wifi_if, q->payload, q->len);
+        esp_wifi_internal_tx(wifi_if, q->payload, q->len);
     }
 #endif