// // Created by shinys on 25. 9. 1. // #include #include "esp_log.h" #include "esp_sntp.h" #include "priv_wifi.h" #include "wifi.h" static const char* TAG = "WIFI_HELPER"; const char* auth_mode_str(wifi_auth_mode_t mode) { switch (mode) { case WIFI_AUTH_OPEN: return "OPEN"; case WIFI_AUTH_WEP: return "WEP"; case WIFI_AUTH_WPA_PSK: return "WPA_PSK"; case WIFI_AUTH_WPA2_PSK: return "WPA2_PSK"; case WIFI_AUTH_WPA_WPA2_PSK: return "WPA_WPA2_PSK"; case WIFI_AUTH_ENTERPRISE: return "ENTERPRISE"; case WIFI_AUTH_WPA3_PSK: return "WPA3_PSK"; case WIFI_AUTH_WPA2_WPA3_PSK: return "WPA2_WPA3_PSK"; case WIFI_AUTH_WAPI_PSK: return "WAPI_PSK"; case WIFI_AUTH_OWE: return "OWE"; case WIFI_AUTH_WPA3_ENT_192: return "WPA3_ENT_192"; case WIFI_AUTH_WPA3_EXT_PSK: return "WPA3_EXT_PSK"; case WIFI_AUTH_WPA3_EXT_PSK_MIXED_MODE: return "WPA3_EXT_PSK_MIXED_MODE"; case WIFI_AUTH_DPP: return "DPP"; case WIFI_AUTH_WPA3_ENTERPRISE: return "WPA3_ENTERPRISE"; case WIFI_AUTH_WPA2_WPA3_ENTERPRISE: return "WPA2_WPA3_ENTERPRISE"; default: return "UNKNOWN"; } } const char* wifi_reason_str(wifi_err_reason_t reason) { switch (reason) { case WIFI_REASON_UNSPECIFIED: return "UNSPECIFIED"; case WIFI_REASON_AUTH_EXPIRE: return "AUTH_EXPIRE"; case WIFI_REASON_AUTH_LEAVE: return "AUTH_LEAVE"; case WIFI_REASON_ASSOC_EXPIRE: return "ASSOC_EXPIRE"; case WIFI_REASON_ASSOC_TOOMANY: return "ASSOC_TOOMANY"; case WIFI_REASON_NOT_AUTHED: return "NOT_AUTHED"; case WIFI_REASON_NOT_ASSOCED: return "NOT_ASSOCED"; case WIFI_REASON_ASSOC_LEAVE: return "ASSOC_LEAVE"; case WIFI_REASON_ASSOC_NOT_AUTHED: return "ASSOC_NOT_AUTHED"; case WIFI_REASON_DISASSOC_PWRCAP_BAD: return "DISASSOC_PWRCAP_BAD"; case WIFI_REASON_DISASSOC_SUPCHAN_BAD: return "DISASSOC_SUPCHAN_BAD"; case WIFI_REASON_IE_INVALID: return "IE_INVALID"; case WIFI_REASON_MIC_FAILURE: return "MIC_FAILURE"; case WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT: return "4WAY_HANDSHAKE_TIMEOUT"; case WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT: return "GROUP_KEY_UPDATE_TIMEOUT"; case WIFI_REASON_IE_IN_4WAY_DIFFERS: return "IE_IN_4WAY_DIFFERS"; case WIFI_REASON_GROUP_CIPHER_INVALID: return "GROUP_CIPHER_INVALID"; case WIFI_REASON_PAIRWISE_CIPHER_INVALID: return "PAIRWISE_CIPHER_INVALID"; case WIFI_REASON_AKMP_INVALID: return "AKMP_INVALID"; case WIFI_REASON_UNSUPP_RSN_IE_VERSION: return "UNSUPP_RSN_IE_VERSION"; case WIFI_REASON_INVALID_RSN_IE_CAP: return "INVALID_RSN_IE_CAP"; case WIFI_REASON_802_1X_AUTH_FAILED: return "802_1X_AUTH_FAILED"; case WIFI_REASON_CIPHER_SUITE_REJECTED: return "CIPHER_SUITE_REJECTED"; case WIFI_REASON_INVALID_PMKID: return "INVALID_PMKID"; case WIFI_REASON_BEACON_TIMEOUT: return "BEACON_TIMEOUT"; case WIFI_REASON_NO_AP_FOUND: return "NO_AP_FOUND"; case WIFI_REASON_AUTH_FAIL: return "AUTH_FAIL"; case WIFI_REASON_ASSOC_FAIL: return "ASSOC_FAIL"; case WIFI_REASON_HANDSHAKE_TIMEOUT: return "HANDSHAKE_TIMEOUT"; case WIFI_REASON_CONNECTION_FAIL: return "CONNECTION_FAIL"; case WIFI_REASON_AP_TSF_RESET: return "AP_TSF_RESET"; case WIFI_REASON_ROAMING: return "ROAMING"; default: return "UNKNOWN"; } } // Callback function for time synchronization void time_sync_notification_cb(struct timeval* tv) { ESP_LOGI(TAG, "Time synchronized"); // Set timezone to UTC setenv("TZ", "UTC", 1); tzset(); char strftime_buf[64]; time_t now; struct tm timeinfo; time(&now); localtime_r(&now, &timeinfo); strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo); ESP_LOGI(TAG, "The current date/time in KST is: %s", strftime_buf); } void initialize_sntp(void) { ESP_LOGI(TAG, "Initializing SNTP service"); esp_sntp_setoperatingmode(SNTP_OPMODE_POLL); esp_sntp_setservername(0, "pool.ntp.org"); sntp_set_time_sync_notification_cb(time_sync_notification_cb); } void sync_time() { if (esp_sntp_enabled()) { esp_sntp_stop(); } ESP_LOGI(TAG, "Starting SNTP synchronization"); esp_sntp_init(); }