a liitle more stable

This commit is contained in:
j3d1 2023-02-12 06:53:41 +01:00
parent baf6f8bb45
commit aa32239740
11 changed files with 221 additions and 136 deletions

View file

@ -146,9 +146,6 @@ extern "C" void wifi_task(void *pvParameters) {
sysparam_get_int8("wifi_ap_enable", &wifi_ap_enable);
wifi_ap_enable = 0;
if(!wifi_sta_enable)
wifi_ap_enable = 1;
int8_t wifi_sta_disabled_restarts = 0;
sysparam_get_int8("wifi_sta_disabled_restarts", &wifi_sta_disabled_restarts);
if(wifi_sta_disabled_restarts > 0) {
@ -176,6 +173,9 @@ extern "C" void wifi_task(void *pvParameters) {
wifi_sta_enable = 0;
}
if(!wifi_sta_enable)
wifi_ap_enable = 1;
if(wifi_ap_enable) {
/* Default AP ssid and password. */
if(!wifi_ap_ssid && wificfg_default_ssid) {
@ -352,37 +352,43 @@ extern "C" void wifi_task(void *pvParameters) {
uint8_t status = 0;
uint8_t retries = 30;
while (1) {
if(wifi_sta_enable) {
while (1) {
retries = 30;
while ((status != STATION_GOT_IP) && (retries)) {
status = sdk_wifi_station_get_connect_status();
printf("%s: status = %d [%d retries left]\n\r", __func__, status, retries);
if(status == STATION_WRONG_PASSWORD) {
printf("WiFi: wrong password\n\r");
break;
} else if(status == STATION_NO_AP_FOUND) {
printf("WiFi: AP not found\n\r");
break;
} else if(status == STATION_CONNECT_FAIL) {
printf("WiFi: connection failed\r\n");
break;
retries = 30;
while ((status != STATION_GOT_IP) && (retries)) {
status = sdk_wifi_station_get_connect_status();
printf("%s: status = %d [%d retries left]\n\r", __func__, status, retries);
if(status == STATION_WRONG_PASSWORD) {
printf("WiFi: wrong password\n\r");
break;
} else if(status == STATION_NO_AP_FOUND) {
printf("WiFi: AP not found\n\r");
break;
} else if(status == STATION_CONNECT_FAIL) {
printf("WiFi: connection failed\r\n");
break;
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
--retries;
}
if(status == STATION_GOT_IP) {
printf("WiFi: Connected\n\r");
xSemaphoreGive(wifi_alive);
taskYIELD();
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
--retries;
}
if(status == STATION_GOT_IP) {
printf("WiFi: Connected\n\r");
xSemaphoreGive(wifi_alive);
taskYIELD();
}
while ((status = sdk_wifi_station_get_connect_status()) == STATION_GOT_IP) {
xSemaphoreGive(wifi_alive);
taskYIELD();
while ((status = sdk_wifi_station_get_connect_status()) == STATION_GOT_IP) {
xSemaphoreGive(wifi_alive);
taskYIELD();
}
printf("WiFi: disconnected\n\r");
sdk_wifi_station_disconnect();
vTaskDelay(10000 / portTICK_PERIOD_MS);
}
} else {
while(1) {
vTaskDelay(10000 / portTICK_PERIOD_MS);
}
printf("WiFi: disconnected\n\r");
sdk_wifi_station_disconnect();
vTaskDelay(10000 / portTICK_PERIOD_MS);
}
}