implemented AP on/off control

This commit is contained in:
Bogdan Pilyugin 2023-06-26 16:24:21 +02:00
parent c6035b15d7
commit 7a032ac452
4 changed files with 177 additions and 125 deletions

View File

@ -56,7 +56,7 @@
#define SCRATCH_BUFSIZE 4096
#define AUTH_DATA_MAX_LENGTH 16
#define HTTP_SERVER_DEBUG_LEVEL 1
#define HTTP_SERVER_DEBUG_LEVEL 0
typedef enum
{

View File

@ -61,6 +61,9 @@ void StartTimeGet(void);
void WiFiStart(void);
void WiFiDisconnect(void);
void WiFiScan(void);
void WiFiStop();
void WiFiStopAP();
void WiFiStartAP();
void EthStart(void);
void WiFiTransportTask(void *prm);

View File

@ -270,6 +270,22 @@ static HTTP_IO_RESULT HTTPPostAdaptersSettings(httpd_req_t *req, char *PostData)
}
}
if (httpd_query_key_value(PostData, "wifistart", tmp, 4) == ESP_OK)
{
if (!strcmp(tmp, (const char*) "prs"))
{
WiFiStartAP();
}
}
if (httpd_query_key_value(PostData, "wifistop", tmp, 4) == ESP_OK)
{
if (!strcmp(tmp, (const char*) "prs"))
{
WiFiStopAP();
}
}
if (httpd_query_key_value(PostData, "wifisave", tmp, 4) == ESP_OK)
{
if (!strcmp(tmp, (const char*) "prs"))

View File

@ -45,6 +45,7 @@ static const char *TAG = "WiFiTransport";
#define EXAMPLE_ESP_WIFI_CHANNEL 6
#define EXAMPLE_MAX_STA_CONN 10
static bool isWiFiRunning = false;
static bool isWiFiConnected = false;
static bool isWiFiGotIp = false;
static bool isWiFiFail = false;
@ -503,8 +504,9 @@ static void WiFiControlTask(void *arg)
xTaskCreate(wifi_init_apsta, "InitSoftAPSTATask", 1024 * 4, (void*) 0, 3, NULL);
break;
}
isWiFiRunning = true;
//WiFi in work service
while (1)
while (isWiFiRunning)
{
vTaskDelay(pdMS_TO_TICKS(1000));
if (isWiFiConnected)
@ -530,6 +532,15 @@ static void WiFiControlTask(void *arg)
}
}
}
if (isWiFiConnected)
{
ESP_ERROR_CHECK(esp_wifi_disconnect());
}
ESP_ERROR_CHECK(esp_wifi_stop());
ESP_ERROR_CHECK(esp_wifi_deinit());
esp_netif_destroy(ap_netif);
vTaskDelete(NULL);
}
void WiFiStart(void)
@ -537,6 +548,28 @@ void WiFiStart(void)
xTaskCreate(WiFiControlTask, "WiFiCtrlTask", 1024 * 4, (void*) 0, 3, NULL);
}
void WiFiStop()
{
isWiFiRunning = false;
}
void WiFiStopAP()
{
if (GetSysConf()->wifiSettings.WiFiMode == WIFI_MODE_APSTA || GetSysConf()->wifiSettings.WiFiMode == WIFI_MODE_STA)
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
else
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_NULL));
}
void WiFiStartAP()
{
if (GetSysConf()->wifiSettings.WiFiMode == WIFI_MODE_APSTA)
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_APSTA));
else if (GetSysConf()->wifiSettings.WiFiMode == WIFI_MODE_STA)
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
else
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));
}
static void wifi_scan(void *arg)
{
uint16_t number = DEFAULT_SCAN_LIST_SIZE;