esp_netif_defaults.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. /*
  2. * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #ifndef _ESP_NETIF_DEFAULTS_H
  7. #define _ESP_NETIF_DEFAULTS_H
  8. #include "esp_compiler.h"
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. //
  13. // Macros to assemble master configs with partial configs from netif, stack and driver
  14. //
  15. #define ESP_NETIF_INHERENT_DEFAULT_WIFI_STA() \
  16. { \
  17. .flags = (esp_netif_flags_t)(ESP_NETIF_DHCP_CLIENT | ESP_NETIF_FLAG_GARP | ESP_NETIF_FLAG_EVENT_IP_MODIFIED), \
  18. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \
  19. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \
  20. .get_ip_event = IP_EVENT_STA_GOT_IP, \
  21. .lost_ip_event = IP_EVENT_STA_LOST_IP, \
  22. .if_key = "WIFI_STA_DEF", \
  23. .if_desc = "sta", \
  24. .route_prio = 100, \
  25. .bridge_info = NULL \
  26. } \
  27. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  28. #define ESP_NETIF_INHERENT_DEFAULT_WIFI_AP() \
  29. { \
  30. .flags = (esp_netif_flags_t)(ESP_NETIF_DHCP_SERVER | ESP_NETIF_FLAG_AUTOUP), \
  31. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \
  32. .ip_info = &_g_esp_netif_soft_ap_ip, \
  33. .get_ip_event = 0, \
  34. .lost_ip_event = 0, \
  35. .if_key = "WIFI_AP_DEF", \
  36. .if_desc = "ap", \
  37. .route_prio = 10, \
  38. .bridge_info = NULL \
  39. };
  40. #endif
  41. #define ESP_NETIF_INHERENT_DEFAULT_ETH() \
  42. { \
  43. .flags = (esp_netif_flags_t)(ESP_NETIF_DHCP_CLIENT | ESP_NETIF_FLAG_GARP | ESP_NETIF_FLAG_EVENT_IP_MODIFIED), \
  44. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \
  45. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \
  46. .get_ip_event = IP_EVENT_ETH_GOT_IP, \
  47. .lost_ip_event = IP_EVENT_ETH_LOST_IP, \
  48. .if_key = "ETH_DEF", \
  49. .if_desc = "eth", \
  50. .route_prio = 50, \
  51. .bridge_info = NULL \
  52. };
  53. #define ESP_NETIF_INHERENT_DEFAULT_PPP() \
  54. { \
  55. .flags = ESP_NETIF_FLAG_IS_PPP, \
  56. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \
  57. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \
  58. .get_ip_event = IP_EVENT_PPP_GOT_IP, \
  59. .lost_ip_event = IP_EVENT_PPP_LOST_IP, \
  60. .if_key = "PPP_DEF", \
  61. .if_desc = "ppp", \
  62. .route_prio = 20, \
  63. .bridge_info = NULL \
  64. };
  65. #define ESP_NETIF_INHERENT_DEFAULT_BR() \
  66. { \
  67. .flags = (esp_netif_flags_t)(ESP_NETIF_DHCP_CLIENT | ESP_NETIF_FLAG_GARP | ESP_NETIF_FLAG_EVENT_IP_MODIFIED | ESP_NETIF_FLAG_IS_BRIDGE), \
  68. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \
  69. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \
  70. .get_ip_event = IP_EVENT_ETH_GOT_IP, \
  71. .lost_ip_event = IP_EVENT_ETH_LOST_IP, \
  72. .if_key = "BR", \
  73. .if_desc = "br", \
  74. .route_prio = 70, \
  75. .bridge_info = NULL \
  76. };
  77. /**
  78. * @brief Default configuration reference of ethernet interface
  79. */
  80. #define ESP_NETIF_DEFAULT_ETH() \
  81. { \
  82. .base = ESP_NETIF_BASE_DEFAULT_ETH, \
  83. .driver = NULL, \
  84. .stack = ESP_NETIF_NETSTACK_DEFAULT_ETH, \
  85. }
  86. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  87. /**
  88. * @brief Default configuration reference of WIFI AP
  89. */
  90. #define ESP_NETIF_DEFAULT_WIFI_AP() \
  91. { \
  92. .base = ESP_NETIF_BASE_DEFAULT_WIFI_AP, \
  93. .driver = NULL, \
  94. .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_AP, \
  95. }
  96. #endif
  97. /**
  98. * @brief Default configuration reference of WIFI STA
  99. */
  100. #define ESP_NETIF_DEFAULT_WIFI_STA() \
  101. { \
  102. .base = ESP_NETIF_BASE_DEFAULT_WIFI_STA, \
  103. .driver = NULL, \
  104. .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA, \
  105. }
  106. /**
  107. * @brief Default configuration reference of PPP client
  108. */
  109. #define ESP_NETIF_DEFAULT_PPP() \
  110. { \
  111. .base = ESP_NETIF_BASE_DEFAULT_PPP, \
  112. .driver = NULL, \
  113. .stack = ESP_NETIF_NETSTACK_DEFAULT_PPP, \
  114. }
  115. /**
  116. * @brief Default base config (esp-netif inherent) of WIFI STA
  117. */
  118. #define ESP_NETIF_BASE_DEFAULT_WIFI_STA &_g_esp_netif_inherent_sta_config
  119. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  120. /**
  121. * @brief Default base config (esp-netif inherent) of WIFI AP
  122. */
  123. #define ESP_NETIF_BASE_DEFAULT_WIFI_AP &_g_esp_netif_inherent_ap_config
  124. #endif
  125. /**
  126. * @brief Default base config (esp-netif inherent) of ethernet interface
  127. */
  128. #define ESP_NETIF_BASE_DEFAULT_ETH &_g_esp_netif_inherent_eth_config
  129. /**
  130. * @brief Default base config (esp-netif inherent) of ppp interface
  131. */
  132. #define ESP_NETIF_BASE_DEFAULT_PPP &_g_esp_netif_inherent_ppp_config
  133. #define ESP_NETIF_NETSTACK_DEFAULT_ETH _g_esp_netif_netstack_default_eth
  134. #define ESP_NETIF_NETSTACK_DEFAULT_BR _g_esp_netif_netstack_default_br
  135. #define ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA _g_esp_netif_netstack_default_wifi_sta
  136. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  137. #define ESP_NETIF_NETSTACK_DEFAULT_WIFI_AP _g_esp_netif_netstack_default_wifi_ap
  138. #endif
  139. #define ESP_NETIF_NETSTACK_DEFAULT_PPP _g_esp_netif_netstack_default_ppp
  140. //
  141. // Include default network stacks configs
  142. // - Network stack configurations are provided in a specific network stack
  143. // implementation that is invisible to user API
  144. // - Here referenced only as opaque pointers
  145. //
  146. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_eth;
  147. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_br;
  148. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_wifi_sta;
  149. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  150. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_wifi_ap;
  151. #endif
  152. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_ppp;
  153. //
  154. // Include default common configs inherent to esp-netif
  155. // - These inherent configs are defined in esp_netif_defaults.c and describe
  156. // common behavioural patterns for common interfaces such as STA, AP, ETH, PPP
  157. //
  158. extern const esp_netif_inherent_config_t _g_esp_netif_inherent_sta_config;
  159. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  160. extern const esp_netif_inherent_config_t _g_esp_netif_inherent_ap_config;
  161. #endif
  162. extern const esp_netif_inherent_config_t _g_esp_netif_inherent_eth_config;
  163. extern const esp_netif_inherent_config_t _g_esp_netif_inherent_ppp_config;
  164. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  165. extern const esp_netif_ip_info_t _g_esp_netif_soft_ap_ip;
  166. #endif
  167. #ifdef __cplusplus
  168. }
  169. #endif
  170. #endif //_ESP_NETIF_DEFAULTS_H