From 0dde9cbc8ba9b6ab85e822f2400b44082f7fa8d9 Mon Sep 17 00:00:00 2001 From: Bogdan Pilyugin Date: Tue, 27 Jun 2023 12:15:42 +0200 Subject: [PATCH] added temporarily AP activation mechanism --- include/NetTransport.h | 1 + src/HTTPPostSystem.c | 2 +- src/WiFiTransport.c | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/include/NetTransport.h b/include/NetTransport.h index 9c2d535..b64f56f 100644 --- a/include/NetTransport.h +++ b/include/NetTransport.h @@ -64,6 +64,7 @@ void WiFiScan(void); void WiFiStop(); void WiFiStopAP(); void WiFiStartAP(); +void WiFiStartAPTemp(int seconds); void EthStart(void); void WiFiTransportTask(void *prm); diff --git a/src/HTTPPostSystem.c b/src/HTTPPostSystem.c index 5c7d9c3..3b38176 100644 --- a/src/HTTPPostSystem.c +++ b/src/HTTPPostSystem.c @@ -274,7 +274,7 @@ static HTTP_IO_RESULT HTTPPostAdaptersSettings(httpd_req_t *req, char *PostData) { if (!strcmp(tmp, (const char*) "prs")) { - WiFiStartAP(); + WiFiStartAPTemp(120); } } if (httpd_query_key_value(PostData, "wifistop", tmp, 4) == ESP_OK) diff --git a/src/WiFiTransport.c b/src/WiFiTransport.c index 13daddc..ad80336 100644 --- a/src/WiFiTransport.c +++ b/src/WiFiTransport.c @@ -40,6 +40,7 @@ esp_netif_t *ap_netif; static const char *TAG = "WiFiTransport"; #define WIFI_CONNECT_AFTER_FAIL_DELAY 40 +#define WIFI_AP_ONBOOT_TIME 300 #define EXAMPLE_ESP_MAXIMUM_RETRY 5 #define EXAMPLE_ESP_WIFI_CHANNEL 6 @@ -49,6 +50,7 @@ static bool isWiFiRunning = false; static bool isWiFiConnected = false; static bool isWiFiGotIp = false; static bool isWiFiFail = false; +static int TempAPCounter = WIFI_AP_ONBOOT_TIME; #define DEFAULT_SCAN_LIST_SIZE 20 static wifi_ap_record_t ap_info[DEFAULT_SCAN_LIST_SIZE]; @@ -531,6 +533,15 @@ static void WiFiControlTask(void *arg) reconnect_counter = RECONNECT_INTERVAL; } } + if (TempAPCounter > 0) + { + if (--TempAPCounter <= 0) + { + WiFiStopAP(); + ESP_LOGI(TAG, "WiFi AP stopped after temporarily activity"); + } + } + } if (isWiFiConnected) @@ -570,6 +581,13 @@ void WiFiStartAP() ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP)); } +void WiFiStartAPTemp(int seconds) +{ + TempAPCounter = seconds; + WiFiStartAP(); + ESP_LOGI(TAG, "WiFi AP started temporarily for %u seconds", seconds); +} + static void wifi_scan(void *arg) { uint16_t number = DEFAULT_SCAN_LIST_SIZE;