TCPIP Adapter¶
API Reference¶
Header File¶
Functions¶
-
void
tcpip_adapter_init
(void)¶ Initialize tcpip adapter.
This will initialize TCPIP stack inside.
-
esp_err_t
tcpip_adapter_start
(tcpip_adapter_if_t tcpip_if, uint8_t *mac, tcpip_adapter_ip_info_t *ip_info)¶ Start the Wi-Fi station/AP interface with specific MAC and IP.
Station/AP interface will be initialized, connect WiFi stack with TCPIP stack.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS ESP_ERR_NO_MEM
- Parameters
[in] tcpip_if
: Station/AP interface[in] mac
: set MAC address of this interface[in] ip_info
: set IP address of this interface
-
esp_err_t
tcpip_adapter_stop
(tcpip_adapter_if_t tcpip_if)¶ Stop an interface.
The interface will be cleanup in this API, if DHCP server/client are started, will be stopped.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY
- Parameters
[in] tcpip_if
: the interface which will be started
-
esp_err_t
tcpip_adapter_up
(tcpip_adapter_if_t tcpip_if)¶ Bring up an interface.
Only station interface need to be brought up, since station interface will be shut down when disconnect.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY
- Parameters
[in] tcpip_if
: the interface which will be up
-
esp_err_t
tcpip_adapter_down
(tcpip_adapter_if_t tcpip_if)¶ Shut down an interface.
Only station interface need to be shut down, since station interface will be brought up when connect.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY
- Parameters
[in] tcpip_if
: the interface which will be down
-
esp_err_t
tcpip_adapter_get_ip_info
(tcpip_adapter_if_t tcpip_if, tcpip_adapter_ip_info_t *ip_info)¶ Get interface’s IP information.
There has an IP information copy in adapter library, if interface is up, get IP information from interface, otherwise get from copy.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS
- Parameters
[in] tcpip_if
: the interface which we want to get IP information[out] ip_info
: If successful, IP information will be returned in this argument.
-
esp_err_t
tcpip_adapter_set_ip_info
(tcpip_adapter_if_t tcpip_if, tcpip_adapter_ip_info_t *ip_info)¶ Set interface’s IP information.
There has an IP information copy in adapter library, if interface is up, also set interface’s IP. DHCP client/server should be stopped before set new IP information.
This function is mainly used for setting static IP.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS
- Parameters
[in] tcpip_if
: the interface which we want to set IP information[in] ip_info
: store the IP information which needs to be set to specified interface
-
esp_err_t
tcpip_adapter_set_dns_info
(tcpip_adapter_if_t tcpip_if, tcpip_adapter_dns_type_t type, tcpip_adapter_dns_info_t *dns)¶ Set DNS Server’s information.
There has an DNS Server information copy in adapter library, set DNS Server for appointed interface and type.
1.In station mode, if dhcp client is enabled, then only the fallback DNS server can be set(TCPIP_ADAPTER_DNS_FALLBACK). Fallback DNS server is only used if no DNS servers are set via DHCP. If dhcp client is disabled, then need to set main/backup dns server(TCPIP_ADAPTER_DNS_MAIN, TCPIP_ADAPTER_DNS_BACKUP).
2.In soft-AP mode, the DNS Server’s main dns server offered to the station is the IP address of soft-AP, if the application don’t want to use the IP address of soft-AP, they can set the main dns server.
This function is mainly used for setting static or Fallback DNS Server.
- Return
ESP_OK on success
ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS invalid params
- Parameters
[in] tcpip_if
: the interface which we want to set DNS Server information[in] type
: the type of DNS Server,including TCPIP_ADAPTER_DNS_MAIN, TCPIP_ADAPTER_DNS_BACKUP, TCPIP_ADAPTER_DNS_FALLBACK[in] dns
: the DNS Server address to be set
-
esp_err_t
tcpip_adapter_get_dns_info
(tcpip_adapter_if_t tcpip_if, tcpip_adapter_dns_type_t type, tcpip_adapter_dns_info_t *dns)¶ Get DNS Server’s information.
When set the DNS Server information successfully, can get the DNS Server’s information via the appointed tcpip_if and type
This function is mainly used for getting DNS Server information.
- Return
ESP_OK on success
ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS invalid params
- Parameters
[in] tcpip_if
: the interface which we want to get DNS Server information[in] type
: the type of DNS Server,including TCPIP_ADAPTER_DNS_MAIN, TCPIP_ADAPTER_DNS_BACKUP, TCPIP_ADAPTER_DNS_FALLBACK[in] dns
: the DNS Server address to be get
-
esp_err_t
tcpip_adapter_get_old_ip_info
(tcpip_adapter_if_t tcpip_if, tcpip_adapter_ip_info_t *ip_info)¶ Get interface’s old IP information.
When the interface successfully gets a valid IP from DHCP server or static configured, a copy of the IP information is set to the old IP information. When IP lost timer expires, the old IP information is reset to 0.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS
- Parameters
[in] tcpip_if
: the interface which we want to get old IP information[out] ip_info
: If successful, IP information will be returned in this argument.
-
esp_err_t
tcpip_adapter_set_old_ip_info
(tcpip_adapter_if_t tcpip_if, tcpip_adapter_ip_info_t *ip_info)¶ Set interface’s old IP information.
When the interface successfully gets a valid IP from DHCP server or static configured, a copy of the IP information is set to the old IP information. When IP lost timer expires, the old IP information is reset to 0.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS
- Parameters
[in] tcpip_if
: the interface which we want to set old IP information[in] ip_info
: store the IP information which needs to be set to specified interface
-
esp_err_t
tcpip_adapter_create_ip6_linklocal
(tcpip_adapter_if_t tcpip_if)¶ create interface’s linklocal IPv6 information
- Note
this function will create a linklocal IPv6 address about input interface, if this address status changed to preferred, will call event call back , notify user linklocal IPv6 address has been verified
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS
- Parameters
[in] tcpip_if
: the interface which we want to set IP information
-
esp_err_t
tcpip_adapter_dhcps_get_status
(tcpip_adapter_if_t tcpip_if, tcpip_adapter_dhcp_status_t *status)¶ Get DHCP server’s status.
- Return
ESP_OK
- Parameters
[in] tcpip_if
: the interface which we will get status of DHCP server[out] status
: If successful, the status of DHCP server will be return in this argument.
-
esp_err_t
tcpip_adapter_dhcps_option
(tcpip_adapter_option_mode_t opt_op, tcpip_adapter_option_id_t opt_id, void *opt_val, uint32_t opt_len)¶ Set or Get DHCP server’s option.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STARTED
- Parameters
[in] opt_op
: option operate type, 1 for SET, 2 for GET.[in] opt_id
: option index, 32 for ROUTER, 50 for IP POLL, 51 for LEASE TIME, 52 for REQUEST TIME[in] opt_val
: option parameter[in] opt_len
: option length
-
esp_err_t
tcpip_adapter_dhcps_start
(tcpip_adapter_if_t tcpip_if)¶ Start DHCP server.
- Note
Currently DHCP server is bind to softAP interface.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STARTED
- Parameters
[in] tcpip_if
: the interface which we will start DHCP server
-
esp_err_t
tcpip_adapter_dhcps_stop
(tcpip_adapter_if_t tcpip_if)¶ Stop DHCP server.
- Note
Currently DHCP server is bind to softAP interface.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPED ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY
- Parameters
[in] tcpip_if
: the interface which we will stop DHCP server
-
esp_err_t
tcpip_adapter_dhcpc_get_status
(tcpip_adapter_if_t tcpip_if, tcpip_adapter_dhcp_status_t *status)¶ Get DHCP client status.
- Return
ESP_OK
- Parameters
[in] tcpip_if
: the interface which we will get status of DHCP client[out] status
: If successful, the status of DHCP client will be return in this argument.
-
esp_err_t
tcpip_adapter_dhcpc_option
(tcpip_adapter_option_mode_t opt_op, tcpip_adapter_option_id_t opt_id, void *opt_val, uint32_t opt_len)¶ Set or Get DHCP client’s option.
- Note
This function is not implement now.
- Return
ESP_OK
- Parameters
[in] opt_op
: option operate type, 1 for SET, 2 for GET.[in] opt_id
: option index, 32 for ROUTER, 50 for IP POLL, 51 for LEASE TIME, 52 for REQUEST TIME[in] opt_val
: option parameter[in] opt_len
: option length
-
esp_err_t
tcpip_adapter_dhcpc_start
(tcpip_adapter_if_t tcpip_if)¶ Start DHCP client.
- Note
Currently DHCP client is bind to station interface.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STARTED ESP_ERR_TCPIP_ADAPTER_DHCPC_START_FAILED
- Parameters
[in] tcpip_if
: the interface which we will start DHCP client
-
esp_err_t
tcpip_adapter_dhcpc_stop
(tcpip_adapter_if_t tcpip_if)¶ Stop DHCP client.
- Note
Currently DHCP client is bind to station interface.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPED ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY
- Parameters
[in] tcpip_if
: the interface which we will stop DHCP client
-
esp_err_t
tcpip_adapter_eth_input
(void *buffer, uint16_t len, void *eb)¶
-
esp_err_t
tcpip_adapter_sta_input
(void *buffer, uint16_t len, void *eb)¶ Get data from station interface.
This function should be installed by esp_wifi_reg_rxcb, so WiFi packets will be forward to TCPIP stack.
- Return
ESP_OK
- Parameters
[in] buffer
: the received data point[in] len
: the received data length[in] eb
: parameter
-
esp_err_t
tcpip_adapter_ap_input
(void *buffer, uint16_t len, void *eb)¶ Get data from softAP interface.
This function should be installed by esp_wifi_reg_rxcb, so WiFi packets will be forward to TCPIP stack.
- Return
ESP_OK
- Parameters
[in] buffer
: the received data point[in] len
: the received data length[in] eb
: parameter
-
esp_interface_t
tcpip_adapter_get_esp_if
(void *dev)¶ Get WiFi interface index.
Get WiFi interface from TCPIP interface struct pointer.
- Return
ESP_IF_WIFI_STA ESP_IF_WIFI_AP ESP_IF_ETH ESP_IF_MAX
- Parameters
[in] dev
: adapter interface
-
esp_err_t
tcpip_adapter_get_sta_list
(wifi_sta_list_t *wifi_sta_list, tcpip_adapter_sta_list_t *tcpip_sta_list)¶ Get the station information list.
- Return
ESP_OK ESP_ERR_TCPIP_ADAPTER_NO_MEM ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS
- Parameters
[in] wifi_sta_list
: station list info[out] tcpip_sta_list
: station list info
-
esp_err_t
tcpip_adapter_set_hostname
(tcpip_adapter_if_t tcpip_if, const char *hostname)¶ Set the hostname to the interface.
- Return
ESP_OK:success ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY:interface status error ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS:parameter error
- Parameters
[in] tcpip_if
: the interface which we will set the hostname[in] hostname
: the host name for set the interface, the max length of hostname is 32 bytes
-
esp_err_t
tcpip_adapter_get_hostname
(tcpip_adapter_if_t tcpip_if, const char **hostname)¶ Get the hostname from the interface.
- Return
ESP_OK:success ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY:interface status error ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS:parameter error
- Parameters
[in] tcpip_if
: the interface which we will get the hostname[in] hostname
: the host name from the interface
-
esp_err_t
tcpip_adapter_get_netif
(tcpip_adapter_if_t tcpip_if, void **netif)¶ Get the LwIP netif* that is assigned to the interface.
- Return
ESP_OK:success ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY:interface status error ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS:parameter error
- Parameters
[in] tcpip_if
: the interface which we will get the hostname[out] netif
: pointer to fill the resulting interface
-
bool
tcpip_adapter_is_netif_up
(tcpip_adapter_if_t tcpip_if)¶ Test if supplied interface is up or down.
- Return
true: tcpip_if is UP false: tcpip_if id DOWN
- Parameters
[in] tcpip_if
: the interface which we will get the hostname
-
esp_err_t
tcpip_adapter_set_default_wifi_handlers
()¶ Install default event handlers for Wi-Fi interfaces (station and AP)
- Return
ESP_OK on success
one of the errors from esp_event on failure
-
esp_err_t
tcpip_adapter_clear_default_wifi_handlers
()¶ Uninstall default event handlers for Wi-Fi interfaces (station and AP)
- Return
ESP_OK on success
one of the errors from esp_event on failure
-
int
tcpip_adapter_get_netif_index
(tcpip_adapter_if_t tcpip_if)¶ Search nefit index through netif interface.
- Return
netif_index on success
-1 if an invalid parameter is supplied
- Parameters
[in] tcpip_if
: Interface to search for netif index
Structures¶
-
struct
tcpip_adapter_ip_info_t
¶ TCP-IP adapter IPV4 address information.
-
struct
tcpip_adapter_ip6_info_t
¶ TCP-IP adapter IPV6 address information if disable IPV6 of LwIP.
Public Members
-
uint32_t
addr
[4]¶ TCP-IP adatpter IPV4 addresss data
-
struct tcpip_adapter_ip6_info_t::[anonymous]
ip
¶ TCP-IP adatpter IPV4 addresss
-
uint32_t
-
struct
tcpip_adapter_sta_info_t
¶ TCP-IP adapter station information.
-
struct
tcpip_adapter_sta_list_t
¶ TCP-IP adapter station information table.
Public Members
-
tcpip_adapter_sta_info_t
sta
[ESP_WIFI_MAX_CONN_NUM
]¶ adapter station information array
-
int
num
¶ adapter station information number
-
tcpip_adapter_sta_info_t
-
struct
tcpip_adapter_dns_info_t
¶ TCP-IP adapter DNS server information.
Public Members
-
ip_addr_t
ip
¶ DNS IP addresss
-
ip_addr_t
-
struct
ip_event_ap_staipassigned_t
¶ Event structure for IP_EVENT_AP_STAIPASSIGNED event
Public Members
-
ip4_addr_t
ip
¶ IP address which was assigned to the station
-
ip4_addr_t
-
struct
ip_event_got_ip_t
¶ Event structure for IP_EVENT_STA_GOT_IP, IP_EVENT_ETH_GOT_IP events
Public Members
-
tcpip_adapter_if_t
if_index
¶ Interface for which the event is received
-
tcpip_adapter_ip_info_t
ip_info
¶ IP address, netmask, gatway IP address
-
bool
ip_changed
¶ Whether the assigned IP has changed or not
-
tcpip_adapter_if_t
-
struct
ip_event_got_ip6_t
¶ Event structure for IP_EVENT_GOT_IP6 event
Public Members
-
tcpip_adapter_if_t
if_index
¶ Interface for which the event is received
-
tcpip_adapter_ip6_info_t
ip6_info
¶ IPv6 address of the interface
-
tcpip_adapter_if_t
-
struct
tcpip_adapter_api_msg_s
¶ TCP-IP adapter async messsage.
Public Members
-
int
type
¶ TCP-IP adatpter API message type
-
int
ret
¶ TCP-IP adatpter API message process result
-
tcpip_adapter_api_fn
api_fn
¶ TCP-IP adatpter API message function
-
tcpip_adapter_if_t
tcpip_if
¶ TCP-IP adatpter API message interface type
-
tcpip_adapter_ip_info_t *
ip_info
¶ TCP-IP adatpter API message IP information
-
uint8_t *
mac
¶ TCP-IP adatpter API message MAC address
-
void *
data
¶ TCP-IP adatpter API message MAC private data
-
int
-
struct
tcpip_adapter_dns_param_s
¶ TCP-IP adapter DNS parameters.
Public Members
-
tcpip_adapter_dns_type_t
dns_type
¶ DNS type
-
tcpip_adapter_dns_info_t *
dns_info
¶ DNS information
-
tcpip_adapter_dns_type_t
Macros¶
-
CONFIG_TCPIP_LWIP
¶ TCPIP adapter library.
The aim of this adapter is to provide an abstract layer upon TCPIP stack. With this layer, switch to other TCPIP stack is possible and easy in ESP8266_RTOS_SDK.
If users want to use other TCPIP stack, all those functions should be implemented by using the specific APIs of that stack.
tcpip_adapter_init should be called in the start of app_main for only once.
Currently most adapter APIs are called in event_default_handlers.c.
We recommend users only use set/get IP APIs, DHCP server/client APIs, get free station list APIs in application side. Other APIs are used in ESP8266_RTOS_SDK internal, otherwise the state maybe wrong.
TODO: ipv6 support will be added, use menuconfig to disable CONFIG_TCPIP_LWIP
-
CONFIG_DHCP_STA_LIST
¶
-
TCPIP_ADAPTER_IPV6
¶
-
IP2STR
(ipaddr)¶
-
IPSTR
¶
-
IPV62STR
(ipaddr)¶
-
IPV6STR
¶
-
ESP_ERR_TCPIP_ADAPTER_BASE
¶
-
ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS
¶
-
ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY
¶
-
ESP_ERR_TCPIP_ADAPTER_DHCPC_START_FAILED
¶
-
ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STARTED
¶
-
ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED
¶
-
ESP_ERR_TCPIP_ADAPTER_NO_MEM
¶
-
ESP_ERR_TCPIP_ADAPTER_DHCP_NOT_STOPPED
¶
-
TCPIP_ADAPTER_TRHEAD_SAFE
¶
-
TCPIP_ADAPTER_IPC_LOCAL
¶
-
TCPIP_ADAPTER_IPC_REMOTE
¶
-
TCPIP_HOSTNAME_MAX_SIZE
¶
Type Definitions¶
-
typedef dhcps_lease_t
tcpip_adapter_dhcps_lease_t
¶
-
typedef int (*
tcpip_adapter_api_fn
)(struct tcpip_adapter_api_msg_s *msg)¶
-
typedef struct tcpip_adapter_api_msg_s
tcpip_adapter_api_msg_t
¶ TCP-IP adapter async messsage.
-
typedef struct tcpip_adapter_dns_param_s
tcpip_adapter_dns_param_t
¶ TCP-IP adapter DNS parameters.
-
typedef struct tcpip_adatper_ip_lost_timer_s
tcpip_adapter_ip_lost_timer_t
¶ TCP-IP adapter IP lost checking timer.
Enumerations¶
-
enum
tcpip_adapter_if_t
¶ Values:
-
TCPIP_ADAPTER_IF_STA
= 0¶ Wi-Fi STA (station) interface
-
TCPIP_ADAPTER_IF_AP
¶ Wi-Fi soft-AP interface
-
TCPIP_ADAPTER_IF_ETH
¶ Ethernet interface
-
TCPIP_ADAPTER_IF_TEST
¶ tcpip stack test interface
-
TCPIP_ADAPTER_IF_MAX
¶
-
-
enum
tcpip_adapter_dns_type_t
¶ Values:
-
TCPIP_ADAPTER_DNS_MAIN
= 0¶
-
TCPIP_ADAPTER_DNS_BACKUP
¶ DNS main server address
-
TCPIP_ADAPTER_DNS_FALLBACK
¶ DNS backup server address,for STA only,support soft-AP in future
-
TCPIP_ADAPTER_DNS_MAX
¶ DNS fallback server address,for STA only Max DNS
-
-
enum
tcpip_adapter_dhcp_status_t
¶ Values:
-
TCPIP_ADAPTER_DHCP_INIT
= 0¶ DHCP client/server in initial state
-
TCPIP_ADAPTER_DHCP_STARTED
¶ DHCP client/server already been started
-
TCPIP_ADAPTER_DHCP_STOPPED
¶ DHCP client/server already been stopped
-
TCPIP_ADAPTER_DHCP_STATUS_MAX
¶
-
-
enum
tcpip_adapter_option_mode_t
¶ Values:
-
TCPIP_ADAPTER_OP_START
= 0¶
-
TCPIP_ADAPTER_OP_SET
¶ set option mode
-
TCPIP_ADAPTER_OP_GET
¶ get option mode
-
TCPIP_ADAPTER_OP_MAX
¶
-
-
enum
tcpip_adapter_option_id_t
¶ Values:
-
TCPIP_ADAPTER_SUBNET_MASK
= 1¶ network mask
-
TCPIP_ADAPTER_DOMAIN_NAME_SERVER
= 6¶ domain name server
-
TCPIP_ADAPTER_ROUTER_SOLICITATION_ADDRESS
= 32¶ solicitation router address
-
TCPIP_ADAPTER_REQUESTED_IP_ADDRESS
= 50¶ request IP address pool
-
TCPIP_ADAPTER_IP_ADDRESS_LEASE_TIME
= 51¶ request IP address lease time
-
TCPIP_ADAPTER_IP_REQUEST_RETRY_TIME
= 52¶ request IP address retry counter
-
-
enum
ip_event_t
¶ IP event declarations
Values:
-
IP_EVENT_STA_GOT_IP
¶ station got IP from connected AP
-
IP_EVENT_STA_LOST_IP
¶ station lost IP and the IP is reset to 0
-
IP_EVENT_AP_STAIPASSIGNED
¶ soft-AP assign an IP to a connected station
-
IP_EVENT_GOT_IP6
¶ station or ap or ethernet interface v6IP addr is preferred
-