Espressif Esp32 Wifi Driver SoftAP+Sta mode ...设置配置界面?
Espressif Esp32 Wifi Driver SoftAP+Sta mode ... set config interface?
esp_wifi_set_config 方法需要类型为 wifi_interface_t 的接口参数。
这是一个具有值 [WIFI_IF_STA || 的枚举WIFI_IF_AP]
我将我的配置从 esp32 示例页面上的两个示例与必要的配置参数合并。但是我不确定我打算从上面传递什么接口模式来设置配置。我希望有 WIFI_IF_AP_STA 之类的东西。
wifi_config_t wifi_config = {
.ap = {
.ssid = ESP_AP_WIFI_SSID,
.ssid_len = strlen(ESP_AP_WIFI_SSID),
.channel = ESP_AP_WIFI_CHANNEL,
.password = ESP_AP_WIFI_PASS,
.max_connection = AP_MAX_STA_CONN,
.authmode = WIFI_AUTH_WPA_WPA2_PSK
},
.sta = {
.ssid = ESP_STA_WIFI_SSID,
.password = ESP_STA_WIFI_PASS,
.threshold.authmode = WIFI_AUTH_WPA2_PSK,
.pmf_cfg = {
.capable = true,
.required = false
},
},
};
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_APSTA));
ESP_ERROR_CHECK(esp_wifi_set_config(
**WHAT DO I PUT HERE? [WIFI_IF_STA : WIFI_IF_AP]
, &wifi_config));
ESP_ERROR_CHECK(esp_wifi_start());
首先,请注意 wifi_config_t
不是一个有两个成员的结构。这是一个联合,意味着您可以存储 AP 或 STA 配置,但不能同时存储两者。所以你需要创建两个不同的配置结构,每个模式一个。
至于你的困惑,根据示例 here 你调用了 esp_wifi_set_config()
两次 - 一次用于 AP,一次用于 STA。
wifi_config_t ap_config = {
.ap = {
.ssid = ESP_AP_WIFI_SSID,
.ssid_len = strlen(ESP_AP_WIFI_SSID),
.channel = ESP_AP_WIFI_CHANNEL,
.password = ESP_AP_WIFI_PASS,
.max_connection = AP_MAX_STA_CONN,
.authmode = WIFI_AUTH_WPA_WPA2_PSK
}
};
wifi_config_t sta_config = {
.sta = {
.ssid = ESP_STA_WIFI_SSID,
.password = ESP_STA_WIFI_PASS,
.threshold.authmode = WIFI_AUTH_WPA2_PSK,
.pmf_cfg = {
.capable = true,
.required = false
}
}
};
...
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &ap_config));
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &sta_config));
esp_wifi_set_config 方法需要类型为 wifi_interface_t 的接口参数。 这是一个具有值 [WIFI_IF_STA || 的枚举WIFI_IF_AP]
我将我的配置从 esp32 示例页面上的两个示例与必要的配置参数合并。但是我不确定我打算从上面传递什么接口模式来设置配置。我希望有 WIFI_IF_AP_STA 之类的东西。
wifi_config_t wifi_config = {
.ap = {
.ssid = ESP_AP_WIFI_SSID,
.ssid_len = strlen(ESP_AP_WIFI_SSID),
.channel = ESP_AP_WIFI_CHANNEL,
.password = ESP_AP_WIFI_PASS,
.max_connection = AP_MAX_STA_CONN,
.authmode = WIFI_AUTH_WPA_WPA2_PSK
},
.sta = {
.ssid = ESP_STA_WIFI_SSID,
.password = ESP_STA_WIFI_PASS,
.threshold.authmode = WIFI_AUTH_WPA2_PSK,
.pmf_cfg = {
.capable = true,
.required = false
},
},
};
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_APSTA));
ESP_ERROR_CHECK(esp_wifi_set_config(
**WHAT DO I PUT HERE? [WIFI_IF_STA : WIFI_IF_AP]
, &wifi_config));
ESP_ERROR_CHECK(esp_wifi_start());
首先,请注意 wifi_config_t
不是一个有两个成员的结构。这是一个联合,意味着您可以存储 AP 或 STA 配置,但不能同时存储两者。所以你需要创建两个不同的配置结构,每个模式一个。
至于你的困惑,根据示例 here 你调用了 esp_wifi_set_config()
两次 - 一次用于 AP,一次用于 STA。
wifi_config_t ap_config = {
.ap = {
.ssid = ESP_AP_WIFI_SSID,
.ssid_len = strlen(ESP_AP_WIFI_SSID),
.channel = ESP_AP_WIFI_CHANNEL,
.password = ESP_AP_WIFI_PASS,
.max_connection = AP_MAX_STA_CONN,
.authmode = WIFI_AUTH_WPA_WPA2_PSK
}
};
wifi_config_t sta_config = {
.sta = {
.ssid = ESP_STA_WIFI_SSID,
.password = ESP_STA_WIFI_PASS,
.threshold.authmode = WIFI_AUTH_WPA2_PSK,
.pmf_cfg = {
.capable = true,
.required = false
}
}
};
...
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &ap_config));
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &sta_config));