Select one of the symbols to view example projects that use it.
 
Outline
#include <string.h>
#include "sdkconfig.h"
#include "esp_log.h"
#include "esp_console.h"
#include "esp_event.h"
#include "esp_eth.h"
#include "esp_netif.h"
#include "ethernet_init.h"
#include "esp_vfs_fat.h"
#include "cmd_system.h"
#include "cmd_ethernet.h"
#include "iperf_cmd.h"
TAG
s_eth_handles
s_eth_port_cnt
#define MOUNT_PATH
#define HISTORY_PATH
initialize_filesystem()
init_ethernet_and_netif()
app_main()
Files
loading...
SourceVuESP-IDF Framework and Examplesiperf samplemain/ethernet_iperf_main.c
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/* * SPDX-FileCopyrightText: 2018-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 *//* ... */ #include <string.h> #include "sdkconfig.h" #include "esp_log.h" #include "esp_console.h" #include "esp_event.h" #include "esp_eth.h" #include "esp_netif.h" #include "ethernet_init.h" #include "esp_vfs_fat.h" #include "cmd_system.h" #include "cmd_ethernet.h" #include "iperf_cmd.h"12 includes static const char *TAG = "eth_example"; static esp_eth_handle_t *s_eth_handles = NULL; static uint8_t s_eth_port_cnt = 0; #if CONFIG_EXAMPLE_STORE_HISTORY #define MOUNT_PATH "/data" #define HISTORY_PATH MOUNT_PATH "/history.txt" static void initialize_filesystem(void) { static wl_handle_t wl_handle; const esp_vfs_fat_mount_config_t mount_config = { .max_files = 4, .format_if_mount_failed = true }{...}; esp_err_t err = esp_vfs_fat_spiflash_mount_rw_wl(MOUNT_PATH, "storage", &mount_config, &wl_handle); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to mount FATFS (%s)", esp_err_to_name(err)); return; }{...} }{ ... } #endif/* ... */ // CONFIG_EXAMPLE_STORE_HISTORY void init_ethernet_and_netif(void) { ESP_ERROR_CHECK(esp_event_loop_create_default()); ESP_ERROR_CHECK(example_eth_init(&s_eth_handles, &s_eth_port_cnt)); ESP_ERROR_CHECK(esp_netif_init()); esp_netif_inherent_config_t esp_netif_config = ESP_NETIF_INHERENT_DEFAULT_ETH(); esp_netif_config_t cfg_spi = { .base = &esp_netif_config, .stack = ESP_NETIF_NETSTACK_DEFAULT_ETH }{...}; char if_key_str[10]; char if_desc_str[10]; char num_str[3]; for (int i = 0; i < s_eth_port_cnt; i++) { itoa(i, num_str, 10); strcat(strcpy(if_key_str, "ETH_"), num_str); strcat(strcpy(if_desc_str, "eth"), num_str); esp_netif_config.if_key = if_key_str; esp_netif_config.if_desc = if_desc_str; esp_netif_config.route_prio -= i*5; esp_netif_t *eth_netif = esp_netif_new(&cfg_spi); // attach Ethernet driver to TCP/IP stack ESP_ERROR_CHECK(esp_netif_attach(eth_netif, esp_eth_new_netif_glue(s_eth_handles[i]))); }{...} for (int i = 0; i < s_eth_port_cnt; i++) { ESP_ERROR_CHECK(esp_eth_start(s_eth_handles[i])); }{...} }{ ... } void app_main(void) { init_ethernet_and_netif(); esp_console_repl_t *repl = NULL; esp_console_repl_config_t repl_config = ESP_CONSOLE_REPL_CONFIG_DEFAULT(); esp_console_dev_uart_config_t uart_config = ESP_CONSOLE_DEV_UART_CONFIG_DEFAULT(); #if CONFIG_EXAMPLE_STORE_HISTORY initialize_filesystem(); repl_config.history_save_path = HISTORY_PATH;/* ... */ #endif repl_config.prompt = "iperf>"; // init console REPL environment ESP_ERROR_CHECK(esp_console_new_repl_uart(&uart_config, &repl_config, &repl)); /* Register commands */ register_system_common(); app_register_iperf_commands(); register_ethernet_commands(); printf("\n =======================================================\n"); printf(" | Steps to Test Ethernet Bandwidth |\n"); printf(" | |\n"); printf(" | 1. Enter 'help', check all supported commands |\n"); printf(" | 2. Wait ESP32 to get IP from DHCP |\n"); printf(" | 3. Enter 'ethernet info', optional |\n"); printf(" | 4. Server: 'iperf -u -s -i 3' |\n"); printf(" | 5. Client: 'iperf -u -c SERVER_IP -t 60 -i 3' |\n"); printf(" | |\n"); printf(" =======================================================\n\n"); // start console REPL ESP_ERROR_CHECK(esp_console_start_repl(repl)); }{ ... }
Details