Refactor: Modularize Wi-Fi functionality into separate STA and AP components
Signed-off-by: YoungSoo Shin <shinys000114@gmail.com>
This commit is contained in:
127
main/wifi/wifi_helper.c
Normal file
127
main/wifi/wifi_helper.c
Normal file
@@ -0,0 +1,127 @@
|
||||
//
|
||||
// Created by shinys on 25. 9. 1.
|
||||
//
|
||||
|
||||
#include "priv_wifi.h"
|
||||
#include <time.h>
|
||||
#include "esp_log.h"
|
||||
#include "esp_sntp.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();
|
||||
}
|
||||
Reference in New Issue
Block a user