implement reset via back button
Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
@@ -29,6 +29,31 @@ static EventGroupHandle_t s_wifi_event_group;
|
||||
|
||||
static const char *TAG = "wifi_manager";
|
||||
|
||||
static void wifi_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data)
|
||||
{
|
||||
if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START)
|
||||
{
|
||||
ESP_LOGI(TAG, "WIFI_EVENT_STA_START: Connecting to AP...");
|
||||
esp_wifi_connect();
|
||||
}
|
||||
else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED)
|
||||
{
|
||||
ESP_LOGW(TAG, "WIFI_EVENT_STA_DISCONNECTED: Verbindung verloren, versuche erneut...");
|
||||
xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
|
||||
}
|
||||
else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP)
|
||||
{
|
||||
ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data;
|
||||
ESP_LOGI(TAG, "IP_EVENT_STA_GOT_IP: IP-Adresse erhalten: " IPSTR, IP2STR(&event->ip_info.ip));
|
||||
xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
|
||||
}
|
||||
else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_LOST_IP)
|
||||
{
|
||||
ESP_LOGW(TAG, "IP_EVENT_STA_LOST_IP: IP-Adresse verloren!");
|
||||
xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
|
||||
}
|
||||
}
|
||||
|
||||
static void wifi_create_ap()
|
||||
{
|
||||
ESP_ERROR_CHECK(esp_wifi_stop());
|
||||
@@ -58,6 +83,13 @@ void wifi_manager_init()
|
||||
ESP_ERROR_CHECK(esp_netif_init());
|
||||
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||
|
||||
// Default WiFi Station
|
||||
esp_netif_t *sta_netif = esp_netif_create_default_wifi_sta();
|
||||
|
||||
// Event Handler registrieren
|
||||
ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL, NULL));
|
||||
ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL, NULL));
|
||||
|
||||
// Try to load stored WiFi configuration
|
||||
persistence_manager_t pm;
|
||||
char ssid[33] = {0};
|
||||
@@ -97,9 +129,9 @@ void wifi_manager_init()
|
||||
EventBits_t bits;
|
||||
do
|
||||
{
|
||||
esp_wifi_connect();
|
||||
ESP_LOGI(TAG, "Warte auf IP-Adresse (DHCP)...");
|
||||
bits = xEventGroupWaitBits(s_wifi_event_group, WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, pdFALSE, pdFALSE,
|
||||
5000 / portTICK_PERIOD_MS);
|
||||
10000 / portTICK_PERIOD_MS);
|
||||
if (bits & WIFI_CONNECTED_BIT)
|
||||
{
|
||||
led_behavior_t led_behavior = {
|
||||
@@ -108,7 +140,7 @@ void wifi_manager_init()
|
||||
.mode = LED_MODE_SOLID,
|
||||
};
|
||||
led_status_set_behavior(led_behavior);
|
||||
ESP_LOGI(TAG, "WiFi connection established successfully");
|
||||
ESP_LOGI(TAG, "WiFi connection established successfully (mit IP)");
|
||||
break;
|
||||
}
|
||||
retries++;
|
||||
@@ -116,7 +148,9 @@ void wifi_manager_init()
|
||||
|
||||
if (!(bits & WIFI_CONNECTED_BIT))
|
||||
{
|
||||
ESP_LOGW(TAG, "WiFi connection failed, switching to Access Point mode");
|
||||
ESP_LOGW(TAG, "WiFi connection failed (keine IP?), switching to Access Point mode");
|
||||
// AP-Netzwerkschnittstelle initialisieren, falls noch nicht geschehen
|
||||
esp_netif_create_default_wifi_ap();
|
||||
wifi_create_ap();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user