- fix kernel panic when calling init_http_server_task() after provisioning finished

- add menuconfig options for provisioning SSID and password
This commit is contained in:
Karl Osterseher
2023-01-24 22:03:44 +01:00
Unverified
parent 7fca2eebf0
commit 8571c487f6
5 changed files with 39 additions and 38 deletions

View File

@@ -5,6 +5,20 @@ menu "Wifi Configuration"
help
Enable WiFi provisioning so espressif APP can be used to provison WiFi credentials
config WIFI_PROVISIONING_SSID
string "WiFi provisioning SSID"
default "prov_snapclient"
depends on ENABLE_WIFI_PROVISIONING
help
SSID (network name) to use for provisioning access point. Shouldn't be longer than 20 characters.
config WIFI_PROVISIONING_PASSWORD
string "WiFi provisioning password"
default "12345678"
depends on ENABLE_WIFI_PROVISIONING
help
WiFi password (WPA or WPA2) to use for provisioning access point
config WIFI_SSID
string "WiFi SSID"
default "myssid"

View File

@@ -20,6 +20,11 @@
#include <wifi_provisioning/scheme_softap.h>
#endif
#if ENABLE_WIFI_PROVISIONING
static const char *provPwd = CONFIG_WIFI_PROVISIONING_PASSWORD;
static const char *provSsid = CONFIG_WIFI_PROVISIONING_SSID;
#endif
static const char *TAG = "WIFI";
char mac_address[18];
@@ -95,7 +100,7 @@ static void event_handler(void *arg, esp_event_base_t event_base, int event_id,
break;
case WIFI_PROV_END:
/* De-initialize manager once provisioning is finished */
wifi_prov_mgr_deinit();
ESP_LOGI(TAG, "Provisioning end");
break;
default:
break;
@@ -108,9 +113,11 @@ static void event_handler(void *arg, esp_event_base_t event_base, int event_id,
#if ENABLE_WIFI_PROVISIONING
static void get_device_service_name(char *service_name, size_t max) {
uint8_t eth_mac[6];
const char *ssid_prefix = "PROV_";
const char *ssid_prefix = provSsid;
esp_wifi_get_mac(WIFI_IF_STA, eth_mac);
snprintf(service_name, max, "%s%02X%02X%02X", ssid_prefix, eth_mac[3],
snprintf(service_name, max, "%s_%02X%02X%02X", ssid_prefix, eth_mac[3],
eth_mac[4], eth_mac[5]);
}
#endif
@@ -169,7 +176,7 @@ void wifi_init(void) {
ESP_LOGI(TAG, "Starting provisioning");
// Wi-Fi SSID when scheme is wifi_prov_scheme_softap
char service_name[12];
char service_name[27];
get_device_service_name(service_name, sizeof(service_name));
/* What is the security level that we want (0 or 1):
@@ -191,7 +198,7 @@ void wifi_init(void) {
* - Wi-Fi password when scheme is wifi_prov_scheme_softap
* - simply ignored when scheme is wifi_prov_scheme_ble
*/
const char *service_key = "12345678";
const char *service_key = provPwd;
/* An optional endpoint that applications can create if they expect to
* get some additional custom data during provisioning workflow.
@@ -214,8 +221,8 @@ void wifi_init(void) {
* then release the resources of the manager. Since in this case
* de-initialization is triggered by the default event loop handler, we
* don't need to call the following */
// wifi_prov_mgr_wait();
// wifi_prov_mgr_deinit();
wifi_prov_mgr_wait();
wifi_prov_mgr_deinit();
} else {
ESP_LOGI(TAG, "Already provisioned, starting Wi-Fi STA");

View File

@@ -2676,9 +2676,9 @@ void app_main(void) {
#if CONFIG_SNAPCLIENT_ENABLE_ETHERNET
// ethernet pcb reset pin
gpio_config_t cfg = {.pin_bit_mask = BIT64(GPIO_NUM_17),
.mode = GPIO_MODE_DEF_INPUT,
.mode = GPIO_MODE_DEF_OUTPUT,
.pull_up_en = GPIO_PULLUP_DISABLE,
.pull_down_en = GPIO_PULLDOWN_ENABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE};
gpio_config(&cfg);
#endif

View File

@@ -190,19 +190,7 @@ CONFIG_USE_BIQUAD_ASM=y
#
# Snapclient Ethernet Configuration
#
CONFIG_SNAPCLIENT_ENABLE_ETHERNET=y
CONFIG_SNAPCLIENT_USE_INTERNAL_ETHERNET=y
# CONFIG_SNAPCLIENT_USE_DM9051 is not set
# CONFIG_SNAPCLIENT_USE_W5500 is not set
# CONFIG_SNAPCLIENT_ETH_PHY_IP101 is not set
# CONFIG_SNAPCLIENT_ETH_PHY_RTL8201 is not set
CONFIG_SNAPCLIENT_ETH_PHY_LAN8720=y
# CONFIG_SNAPCLIENT_ETH_PHY_DP83848 is not set
# CONFIG_SNAPCLIENT_ETH_PHY_KSZ8041 is not set
CONFIG_SNAPCLIENT_ETH_MDC_GPIO=23
CONFIG_SNAPCLIENT_ETH_MDIO_GPIO=18
CONFIG_SNAPCLIENT_ETH_PHY_RST_GPIO=17
CONFIG_SNAPCLIENT_ETH_PHY_ADDR=0
# CONFIG_SNAPCLIENT_ENABLE_ETHERNET is not set
# end of Snapclient Ethernet Configuration
#
@@ -216,6 +204,8 @@ CONFIG_SNTP_SERVER="pool.ntp.org"
# Wifi Configuration
#
CONFIG_ENABLE_WIFI_PROVISIONING=y
CONFIG_WIFI_PROVISIONING_SSID="prov_snapclient"
CONFIG_WIFI_PROVISIONING_PASSWORD="12345678"
CONFIG_WIFI_MAXIMUM_RETRY=0
# end of Wifi Configuration
@@ -490,7 +480,7 @@ CONFIG_ETH_PHY_INTERFACE_RMII=y
CONFIG_ETH_RMII_CLK_INPUT=y
# CONFIG_ETH_RMII_CLK_OUTPUT is not set
CONFIG_ETH_RMII_CLK_IN_GPIO=0
CONFIG_ETH_DMA_BUFFER_SIZE=1024
CONFIG_ETH_DMA_BUFFER_SIZE=512
CONFIG_ETH_DMA_RX_BUFFER_NUM=30
CONFIG_ETH_DMA_TX_BUFFER_NUM=5
# CONFIG_ETH_SOFT_FLOW_CONTROL is not set

View File

@@ -190,19 +190,7 @@ CONFIG_USE_BIQUAD_ASM=y
#
# Snapclient Ethernet Configuration
#
CONFIG_SNAPCLIENT_ENABLE_ETHERNET=y
CONFIG_SNAPCLIENT_USE_INTERNAL_ETHERNET=y
# CONFIG_SNAPCLIENT_USE_DM9051 is not set
# CONFIG_SNAPCLIENT_USE_W5500 is not set
CONFIG_SNAPCLIENT_ETH_PHY_IP101=y
# CONFIG_SNAPCLIENT_ETH_PHY_RTL8201 is not set
# CONFIG_SNAPCLIENT_ETH_PHY_LAN8720 is not set
# CONFIG_SNAPCLIENT_ETH_PHY_DP83848 is not set
# CONFIG_SNAPCLIENT_ETH_PHY_KSZ8041 is not set
CONFIG_SNAPCLIENT_ETH_MDC_GPIO=23
CONFIG_SNAPCLIENT_ETH_MDIO_GPIO=18
CONFIG_SNAPCLIENT_ETH_PHY_RST_GPIO=17
CONFIG_SNAPCLIENT_ETH_PHY_ADDR=0
# CONFIG_SNAPCLIENT_ENABLE_ETHERNET is not set
# end of Snapclient Ethernet Configuration
#
@@ -215,7 +203,9 @@ CONFIG_SNTP_SERVER="pool.ntp.org"
#
# Wifi Configuration
#
CONFIG_ENABLE_WIFI_PROVISIONING=y
# CONFIG_ENABLE_WIFI_PROVISIONING is not set
CONFIG_WIFI_SSID="myssid"
CONFIG_WIFI_PASSWORD="mypassword"
CONFIG_WIFI_MAXIMUM_RETRY=0
# end of Wifi Configuration
@@ -490,7 +480,7 @@ CONFIG_ETH_PHY_INTERFACE_RMII=y
CONFIG_ETH_RMII_CLK_INPUT=y
# CONFIG_ETH_RMII_CLK_OUTPUT is not set
CONFIG_ETH_RMII_CLK_IN_GPIO=0
CONFIG_ETH_DMA_BUFFER_SIZE=1024
CONFIG_ETH_DMA_BUFFER_SIZE=512
CONFIG_ETH_DMA_RX_BUFFER_NUM=30
CONFIG_ETH_DMA_TX_BUFFER_NUM=5
# CONFIG_ETH_SOFT_FLOW_CONTROL is not set