mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-07 20:17:04 +03:00
Don't turn on AP mode if connect was initially a success.
This commit is contained in:
@@ -79,10 +79,10 @@ Contains the freeRTOS task and all necessary support
|
||||
#define FREE_AND_NULL(p) if(p!=NULL){ free(p); p=NULL;}
|
||||
/* objects used to manipulate the main queue of events */
|
||||
QueueHandle_t wifi_manager_queue;
|
||||
|
||||
SemaphoreHandle_t wifi_manager_json_mutex = NULL;
|
||||
SemaphoreHandle_t wifi_manager_sta_ip_mutex = NULL;
|
||||
char *wifi_manager_sta_ip = NULL;
|
||||
bool bHasConnected=false;
|
||||
uint16_t ap_num = MAX_AP_NUM;
|
||||
wifi_ap_record_t *accessp_records=NULL;
|
||||
cJSON * accessp_cjson=NULL;
|
||||
@@ -154,6 +154,43 @@ const int WIFI_MANAGER_SCAN_BIT = BIT7;
|
||||
/* @brief When set, means user requested for a disconnect */
|
||||
const int WIFI_MANAGER_REQUEST_DISCONNECT_BIT = BIT8;
|
||||
|
||||
char * get_disconnect_code_desc(uint8_t reason){
|
||||
switch (reason) {
|
||||
case 1 : return "UNSPECIFIED"; break;
|
||||
case 2 : return "AUTH_EXPIRE"; break;
|
||||
case 3 : return "AUTH_LEAVE"; break;
|
||||
case 4 : return "ASSOC_EXPIRE"; break;
|
||||
case 5 : return "ASSOC_TOOMANY"; break;
|
||||
case 6 : return "NOT_AUTHED"; break;
|
||||
case 7 : return "NOT_ASSOCED"; break;
|
||||
case 8 : return "ASSOC_LEAVE"; break;
|
||||
case 9 : return "ASSOC_NOT_AUTHED"; break;
|
||||
case 10 : return "DISASSOC_PWRCAP_BAD"; break;
|
||||
case 11 : return "DISASSOC_SUPCHAN_BAD"; break;
|
||||
case 12 : return "<n/a>"; break;
|
||||
case 13 : return "IE_INVALID"; break;
|
||||
case 14 : return "MIC_FAILURE"; break;
|
||||
case 15 : return "4WAY_HANDSHAKE_TIMEOUT"; break;
|
||||
case 16 : return "GROUP_KEY_UPDATE_TIMEOUT"; break;
|
||||
case 17 : return "IE_IN_4WAY_DIFFERS"; break;
|
||||
case 18 : return "GROUP_CIPHER_INVALID"; break;
|
||||
case 19 : return "PAIRWISE_CIPHER_INVALID"; break;
|
||||
case 20 : return "AKMP_INVALID"; break;
|
||||
case 21 : return "UNSUPP_RSN_IE_VERSION"; break;
|
||||
case 22 : return "INVALID_RSN_IE_CAP"; break;
|
||||
case 23 : return "802_1X_AUTH_FAILED"; break;
|
||||
case 24 : return "CIPHER_SUITE_REJECTED"; break;
|
||||
case 200 : return "BEACON_TIMEOUT"; break;
|
||||
case 201 : return "NO_AP_FOUND"; break;
|
||||
case 202 : return "AUTH_FAIL"; break;
|
||||
case 203 : return "ASSOC_FAIL"; break;
|
||||
case 204 : return "HANDSHAKE_TIMEOUT"; break;
|
||||
default: return "UNKNOWN"; break;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
bool isGroupBitSet(uint8_t bit){
|
||||
EventBits_t uxBits= xEventGroupGetBits(wifi_manager_event_group);
|
||||
return (uxBits & bit);
|
||||
@@ -174,7 +211,7 @@ void wifi_manager_disconnect_async(){
|
||||
void wifi_manager_init_wifi(){
|
||||
/* event handler and event group for the wifi driver */
|
||||
wifi_manager_event_group = xEventGroupCreate();
|
||||
|
||||
bHasConnected=false;
|
||||
// Now Initialize the Wifi Stack
|
||||
tcpip_adapter_init();
|
||||
wifi_manager_event_group = xEventGroupCreate();
|
||||
@@ -679,7 +716,7 @@ static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_
|
||||
// reason of disconnection
|
||||
wifi_event_sta_disconnected_t * s =(wifi_event_sta_disconnected_t*)event_data;
|
||||
char * bssid = get_mac_string(s->bssid);
|
||||
ESP_LOGI(TAG, "WIFI_EVENT_STA_DISCONNECTED. From BSSID: %s, reason code: %d", STR_OR_BLANK(bssid),s->reason);
|
||||
ESP_LOGI(TAG, "WIFI_EVENT_STA_DISCONNECTED. From BSSID: %s, reason code: %d (%s)", STR_OR_BLANK(bssid),s->reason, get_disconnect_code_desc(s->reason));
|
||||
FREE_AND_NULL(bssid);
|
||||
if(last_connected>0) total_connected_time+=((esp_timer_get_time()-last_connected)/(1000*1000));
|
||||
last_connected = 0;
|
||||
@@ -918,7 +955,6 @@ void wifi_manager_register_handlers(){
|
||||
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_STOP, &event_handler, NULL));
|
||||
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_CONNECTED, &event_handler, NULL));
|
||||
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &event_handler, NULL));
|
||||
// ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT, &event_handler, NULL));
|
||||
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL));
|
||||
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_LOST_IP, &event_handler, NULL));
|
||||
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_AP_STAIPASSIGNED, &event_handler, NULL));
|
||||
@@ -1190,7 +1226,7 @@ void wifi_manager( void * pvParameters ){
|
||||
else{
|
||||
memcpy(&disc_event,(wifi_event_sta_disconnected_t*)msg.param,sizeof(disc_event));
|
||||
free(msg.param);
|
||||
ESP_LOGI(TAG, "MESSAGE: EVENT_STA_DISCONNECTED with Reason code: %d", disc_event.reason);
|
||||
ESP_LOGI(TAG, "MESSAGE: EVENT_STA_DISCONNECTED with Reason code: %d (%s)", disc_event.reason, get_disconnect_code_desc(disc_event.reason));
|
||||
}
|
||||
|
||||
/* this even can be posted in numerous different conditions
|
||||
@@ -1291,7 +1327,7 @@ void wifi_manager( void * pvParameters ){
|
||||
|
||||
if(retries < WIFI_MANAGER_MAX_RETRY){
|
||||
ESP_LOGD(TAG, "Issuing ORDER_CONNECT_STA to retry connection.");
|
||||
retries++;
|
||||
if(!bHasConnected) retries++;
|
||||
wifi_manager_send_message(ORDER_CONNECT_STA, (void*)CONNECTION_REQUEST_AUTO_RECONNECT);
|
||||
}
|
||||
else{
|
||||
@@ -1366,6 +1402,7 @@ void wifi_manager( void * pvParameters ){
|
||||
/* bring down DNS hijack */
|
||||
ESP_LOGD(TAG,"Stopping dns server.");
|
||||
dns_server_stop();
|
||||
bHasConnected=true;
|
||||
|
||||
/* callback */
|
||||
if(cb_ptr_arr[msg.code]) (*cb_ptr_arr[msg.code])(NULL);
|
||||
|
||||
Reference in New Issue
Block a user