esp_netif_defaults.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. /*
  2. * SPDX-FileCopyrightText: 2015-2021 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. } \
  26. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  27. #define ESP_NETIF_INHERENT_DEFAULT_WIFI_AP() \
  28. { \
  29. .flags = (esp_netif_flags_t)(ESP_NETIF_DHCP_SERVER | ESP_NETIF_FLAG_AUTOUP), \
  30. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \
  31. .ip_info = &_g_esp_netif_soft_ap_ip, \
  32. .get_ip_event = 0, \
  33. .lost_ip_event = 0, \
  34. .if_key = "WIFI_AP_DEF", \
  35. .if_desc = "ap", \
  36. .route_prio = 10 \
  37. };
  38. #endif
  39. #define ESP_NETIF_INHERENT_DEFAULT_ETH() \
  40. { \
  41. .flags = (esp_netif_flags_t)(ESP_NETIF_DHCP_CLIENT | ESP_NETIF_FLAG_GARP | ESP_NETIF_FLAG_EVENT_IP_MODIFIED), \
  42. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \
  43. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \
  44. .get_ip_event = IP_EVENT_ETH_GOT_IP, \
  45. .lost_ip_event = IP_EVENT_ETH_LOST_IP, \
  46. .if_key = "ETH_DEF", \
  47. .if_desc = "eth", \
  48. .route_prio = 50 \
  49. };
  50. #define ESP_NETIF_INHERENT_DEFAULT_PPP() \
  51. { \
  52. .flags = ESP_NETIF_FLAG_IS_PPP, \
  53. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \
  54. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \
  55. .get_ip_event = IP_EVENT_PPP_GOT_IP, \
  56. .lost_ip_event = IP_EVENT_PPP_LOST_IP, \
  57. .if_key = "PPP_DEF", \
  58. .if_desc = "ppp", \
  59. .route_prio = 20 \
  60. };
  61. #define ESP_NETIF_INHERENT_DEFAULT_OPENTHREAD() \
  62. { \
  63. .flags = 0, \
  64. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \
  65. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \
  66. .get_ip_event = 0, \
  67. .lost_ip_event = 0, \
  68. .if_key = "OT_DEF", \
  69. .if_desc = "openthread", \
  70. .route_prio = 15 \
  71. };
  72. #define ESP_NETIF_INHERENT_DEFAULT_SLIP() \
  73. { \
  74. .flags = ESP_NETIF_FLAG_IS_SLIP, \
  75. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \
  76. ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \
  77. .get_ip_event = 0, \
  78. .lost_ip_event = 0, \
  79. .if_key = "SLP_DEF", \
  80. .if_desc = "slip", \
  81. .route_prio = 16 \
  82. };
  83. /**
  84. * @brief Default configuration reference of ethernet interface
  85. */
  86. #define ESP_NETIF_DEFAULT_ETH() \
  87. { \
  88. .base = ESP_NETIF_BASE_DEFAULT_ETH, \
  89. .driver = NULL, \
  90. .stack = ESP_NETIF_NETSTACK_DEFAULT_ETH, \
  91. }
  92. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  93. /**
  94. * @brief Default configuration reference of WIFI AP
  95. */
  96. #define ESP_NETIF_DEFAULT_WIFI_AP() \
  97. { \
  98. .base = ESP_NETIF_BASE_DEFAULT_WIFI_AP, \
  99. .driver = NULL, \
  100. .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_AP, \
  101. }
  102. #endif
  103. /**
  104. * @brief Default configuration reference of WIFI STA
  105. */
  106. #define ESP_NETIF_DEFAULT_WIFI_STA() \
  107. { \
  108. .base = ESP_NETIF_BASE_DEFAULT_WIFI_STA, \
  109. .driver = NULL, \
  110. .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA, \
  111. }
  112. /**
  113. * @brief Default configuration reference of PPP client
  114. */
  115. #define ESP_NETIF_DEFAULT_PPP() \
  116. { \
  117. .base = ESP_NETIF_BASE_DEFAULT_PPP, \
  118. .driver = NULL, \
  119. .stack = ESP_NETIF_NETSTACK_DEFAULT_PPP, \
  120. }
  121. /**
  122. * @brief Default configuration reference of SLIP client
  123. */
  124. #define ESP_NETIF_DEFAULT_SLIP() \
  125. { \
  126. .base = ESP_NETIF_BASE_DEFAULT_SLIP, \
  127. .driver = NULL, \
  128. .stack = ESP_NETIF_NETSTACK_DEFAULT_SLIP, \
  129. }
  130. /**
  131. * @brief Default base config (esp-netif inherent) of WIFI STA
  132. */
  133. #define ESP_NETIF_BASE_DEFAULT_WIFI_STA &_g_esp_netif_inherent_sta_config
  134. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  135. /**
  136. * @brief Default base config (esp-netif inherent) of WIFI AP
  137. */
  138. #define ESP_NETIF_BASE_DEFAULT_WIFI_AP &_g_esp_netif_inherent_ap_config
  139. #endif
  140. /**
  141. * @brief Default base config (esp-netif inherent) of ethernet interface
  142. */
  143. #define ESP_NETIF_BASE_DEFAULT_ETH &_g_esp_netif_inherent_eth_config
  144. /**
  145. * @brief Default base config (esp-netif inherent) of ppp interface
  146. */
  147. #define ESP_NETIF_BASE_DEFAULT_PPP &_g_esp_netif_inherent_ppp_config
  148. /**
  149. * @brief Default base config (esp-netif inherent) of slip interface
  150. */
  151. #define ESP_NETIF_BASE_DEFAULT_SLIP &_g_esp_netif_inherent_slip_config
  152. #define ESP_NETIF_NETSTACK_DEFAULT_ETH _g_esp_netif_netstack_default_eth
  153. #define ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA _g_esp_netif_netstack_default_wifi_sta
  154. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  155. #define ESP_NETIF_NETSTACK_DEFAULT_WIFI_AP _g_esp_netif_netstack_default_wifi_ap
  156. #endif
  157. #define ESP_NETIF_NETSTACK_DEFAULT_PPP _g_esp_netif_netstack_default_ppp
  158. #define ESP_NETIF_NETSTACK_DEFAULT_SLIP _g_esp_netif_netstack_default_slip
  159. #define ESP_NETIF_NETSTACK_DEFAULT_OPENTHREAD _g_esp_netif_netstack_default_openthread
  160. //
  161. // Include default network stacks configs
  162. // - Network stack configurations are provided in a specific network stack
  163. // implementation that is invisible to user API
  164. // - Here referenced only as opaque pointers
  165. //
  166. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_eth;
  167. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_wifi_sta;
  168. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  169. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_wifi_ap;
  170. #endif
  171. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_ppp;
  172. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_slip;
  173. //
  174. // Include default common configs inherent to esp-netif
  175. // - These inherent configs are defined in esp_netif_defaults.c and describe
  176. // common behavioural patterns for common interfaces such as STA, AP, ETH, PPP
  177. //
  178. extern const esp_netif_inherent_config_t _g_esp_netif_inherent_sta_config;
  179. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  180. extern const esp_netif_inherent_config_t _g_esp_netif_inherent_ap_config;
  181. #endif
  182. extern const esp_netif_inherent_config_t _g_esp_netif_inherent_eth_config;
  183. extern const esp_netif_inherent_config_t _g_esp_netif_inherent_ppp_config;
  184. extern const esp_netif_inherent_config_t _g_esp_netif_inherent_slip_config;
  185. #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT
  186. extern const esp_netif_ip_info_t _g_esp_netif_soft_ap_ip;
  187. #endif
  188. #if CONFIG_OPENTHREAD_ENABLED
  189. /**
  190. * @brief Default configuration reference of SLIP client
  191. */
  192. #define ESP_NETIF_DEFAULT_OPENTHREAD() \
  193. { \
  194. .base = ESP_NETIF_BASE_DEFAULT_OPENTHREAD, \
  195. .driver = NULL, \
  196. .stack = ESP_NETIF_NETSTACK_DEFAULT_OPENTHREAD, \
  197. }
  198. /**
  199. * @brief Default base config (esp-netif inherent) of openthread interface
  200. */
  201. #define ESP_NETIF_BASE_DEFAULT_OPENTHREAD &_g_esp_netif_inherent_openthread_config
  202. extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_openthread;
  203. extern const esp_netif_inherent_config_t _g_esp_netif_inherent_openthread_config;
  204. #endif // CONFIG_OPENTHREAD_ENABLED
  205. #ifdef __cplusplus
  206. }
  207. #endif
  208. #endif //_ESP_NETIF_DEFAULTS_H