../../components/soc/esp32/include/soc/touch_channel.h \
../../components/soc/esp32/include/soc/uart_channel.h \
../../components/soc/esp32/include/soc/rtc_gpio_channel.h \
+ ## tcpip_adapter - API Reference
+ ../../components/tcpip_adapter/include/tcpip_adapter.h \
##
## Protocols - API Reference
##
ESP-MESH
========
-This guide provides information regarding the ESP-MESH protocol. Please see the :doc:`MESH API Reference<../api-reference/mesh/esp_mesh>` for more information about API usage.
+This guide provides information regarding the ESP-MESH protocol. Please see the
+:doc:`MESH API Reference<../api-reference/network/esp_mesh>` for more information
+about API usage.
.. ------------------------------- Overview -----------------------------------
- nvs (2) is for the :doc:`Non-Volatile Storage (NVS) API <../api-reference/storage/nvs_flash>`.
- NVS is used to store per-device PHY calibration data (different to initialisation data).
- - NVS is used to store WiFi data if the :doc:`esp_wifi_set_storage(WIFI_STORAGE_FLASH) <../api-reference/wifi/esp_wifi>` initialisation function is used.
+ - NVS is used to store WiFi data if the :doc:`esp_wifi_set_storage(WIFI_STORAGE_FLASH) <../api-reference/network/esp_wifi>` initialisation function is used.
- The NVS API can also be used for other application data.
- It is strongly recommended that you include an NVS partition of at least 0x3000 bytes in your project.
- If using NVS API to store a lot of data, increase the NVS partition size from the default 0x6000 bytes.
+++ /dev/null
-Ethernet API
-************
-
-.. toctree::
- :maxdepth: 1
-
- Ethernet <esp_eth>
-
-
-Example code for this API section is provided in :example:`ethernet` directory of ESP-IDF examples.
.. toctree::
:maxdepth: 2
- Wi-Fi <wifi/index>
- Mesh <mesh/index>
Bluetooth <bluetooth/index>
- Ethernet <ethernet/index>
+ Networking <network/index>
Peripherals <peripherals/index>
Protocols <protocols/index>
Provisioning <provisioning/index>
+++ /dev/null
-Mesh API
-*********
-
-.. toctree::
- :maxdepth: 1
-
- ESP Mesh <esp_mesh>
-
-Example code for this API section is provided in :example:`mesh` directory of ESP-IDF examples.
-ETHERNET
+Ethernet
========
Application Example
--- /dev/null
+Networking APIs
+***************
+
+Wi-Fi
+=====
+
+.. toctree::
+ :maxdepth: 1
+
+ Wi-Fi <esp_wifi>
+ Smart Config <esp_smartconfig>
+ ESP-NOW <esp_now>
+ ESP Mesh <esp_mesh>
+
+Example code for the Wi-Fi API is provided in :example:`wifi` directory of ESP-IDF examples.
+
+Example code for ESP Mesh is provided in :example:`mesh` directory of ESP-IDF examples.
+
+Ethernet
+========
+
+.. toctree::
+ :maxdepth: 1
+
+ Ethernet <esp_eth>
+
+Example code for the Ethernet API is provided in :example:`ethernet` directory of ESP-IDF examples.
+
+IP Network Layer
+================
+
+.. toctree::
+ :maxdepth: 1
+
+ TCP/IP Adapter <tcpip_adapter.rst>
+
+Example code for TCP/IP socket APIs is provided in :example:`protocols/sockets` directory of ESP-IDF examples.
+
+Application Layer
+=================
+
+Documentation for application layer network protocols (above the IP network layer) is provided in :doc:`../protocols/index`.
--- /dev/null
+lwIP TCP/IP API
+***************
+
+Application Example
+-------------------
+
+Example code for TCP/IP socket APIs is provided in :example:`protocols/sockets` directory of ESP-IDF examples.
+
--- /dev/null
+TCP/IP Adapter
+==============
+
+The purpose of TCP/IP Adapter library is twofold. First, it provides an abstraction layer for the application on top of the IP stack, to allow applications to choose between IP stacks in the future. Second, the APIs it provides are thread safe, even if the underlying IP stack APIs are not.
+
+In many cases, application does not need to call TCP/IP Adapter APIs itself. A few cases when such calls are needed are related to :doc:`event handling <../../api-guides/event-handling>`.
+
+
+The aim of this adapter is to provide an abstraction layer between the TCP/IP stack and the network interface layer (currently Wi-Fi or Ethernet), and general network interface management.
+
+ESP-IDF currently implements TCP/IP Adapter for the :doc:`lwIP <lwip>` TCP/IP stack only. However, the adapter itself is TCP/IP implementation agnostic and different implementations are possible.
+
+Some TCP/IP Adapter API functions are intended to be called by application code, for example to get/set interface IP addresses, configure DHCP. Other functions are intended for internal ESP-IDF use by the network driver layer.
+
+
+API Reference
+-------------
+
+.. include:: /_build/inc/tcpip_adapter.inc
+.. include:: /_build/inc/tcpip_adapter_lwip.inc
-Protocols API
-*************
+Application Protocols
+*********************
.. toctree::
:maxdepth: 1
Modbus slave <modbus>
Example code for this API section is provided in :example:`protocols` directory of ESP-IDF examples.
+
+
+IP Network Layer
+================
+
+Documentation for IP Network Layer protocols (below the Application Protocol layer) is provided in :doc:`../network/index`.
+++ /dev/null
-Wi-Fi API
-*********
-
-.. toctree::
- :maxdepth: 1
-
- Wi-Fi <esp_wifi>
- Smart Config <esp_smartconfig>
- ESPNOW <esp_now>
-
-
-Example code for this API section is provided in :example:`wifi` directory of ESP-IDF examples.
+++ /dev/null
-.. include:: ../../../en/api-reference/ethernet/esp_eth.rst
\ No newline at end of file
+++ /dev/null
-.. include:: ../../../en/api-reference/ethernet/index.rst
\ No newline at end of file
+++ /dev/null
-.. include:: ../../../en/api-reference/mesh/esp_mesh.rst
+++ /dev/null
-.. include:: ../../../en/api-reference/mesh/index.rst
\ No newline at end of file
--- /dev/null
+.. include:: ../../../en/api-reference/network/esp_eth.rst
--- /dev/null
+.. include:: ../../../en/api-reference/network/esp_mesh.rst
--- /dev/null
+.. include:: ../../../en/api-reference/network/esp_now.rst
--- /dev/null
+.. include:: ../../../en/api-reference/network/esp_smartconfig.rst
--- /dev/null
+.. include:: ../../../en/api-reference/network/esp_wifi.rst
--- /dev/null
+.. include:: ../../../en/api-reference/network/index.rst
\ No newline at end of file
+++ /dev/null
-.. include:: ../../../en/api-reference/wifi/esp_now.rst
\ No newline at end of file
+++ /dev/null
-.. include:: ../../../en/api-reference/wifi/esp_smartconfig.rst
\ No newline at end of file
+++ /dev/null
-.. include:: ../../../en/api-reference/wifi/esp_wifi.rst
\ No newline at end of file
+++ /dev/null
-.. include:: ../../../en/api-reference/wifi/index.rst
\ No newline at end of file