new module
This commit is contained in:
@@ -25,8 +25,8 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// Config
|
||||
// -----------------------------------------------------------------------------
|
||||
#define AP_SSID "plx-%02x%02x%02x" // SSID do AP (usa 3 bytes do MAC)
|
||||
#define MDNS_SSID "plx%02x" // hostname mDNS (usa 2 bytes do MAC)
|
||||
#define AP_SSID "plx-%02x%02x%02x" // SSID do AP (usa 3 bytes do MAC)
|
||||
#define MDNS_SSID "plx%02x" // hostname mDNS (usa 2 bytes do MAC)
|
||||
|
||||
#define NVS_NAMESPACE "wifi"
|
||||
#define NVS_ENABLED "enabled"
|
||||
@@ -125,6 +125,17 @@ static void event_handler(void *arg, esp_event_base_t event_base, int32_t event_
|
||||
esp_wifi_connect();
|
||||
break;
|
||||
}
|
||||
case WIFI_EVENT_STA_CONNECTED:
|
||||
{
|
||||
ESP_LOGI(TAG, "STA associated (L2 connected)");
|
||||
// dispara evento genérico de STA_CONNECTED
|
||||
esp_event_post(NETWORK_EVENTS,
|
||||
NETWORK_EVENT_STA_CONNECTED,
|
||||
NULL,
|
||||
0,
|
||||
portMAX_DELAY);
|
||||
break;
|
||||
}
|
||||
case WIFI_EVENT_STA_DISCONNECTED:
|
||||
{
|
||||
xEventGroupClearBits(wifi_event_group, WIFI_STA_CONNECTED_BIT);
|
||||
@@ -133,6 +144,13 @@ static void event_handler(void *arg, esp_event_base_t event_base, int32_t event_
|
||||
wifi_event_sta_disconnected_t *ev = (wifi_event_sta_disconnected_t *)event_data;
|
||||
ESP_LOGW(TAG, "STA disconnected, reason=%d", ev ? ev->reason : -1);
|
||||
|
||||
// dispara evento genérico de “STA desconectou”
|
||||
esp_event_post(NETWORK_EVENTS,
|
||||
NETWORK_EVENT_STA_DISCONNECTED,
|
||||
ev,
|
||||
ev ? sizeof(*ev) : 0,
|
||||
portMAX_DELAY);
|
||||
|
||||
// NÃO bloquear o event loop com vTaskDelay
|
||||
if (s_retry_count < s_retry_max)
|
||||
{
|
||||
@@ -166,6 +184,13 @@ static void event_handler(void *arg, esp_event_base_t event_base, int32_t event_
|
||||
xEventGroupClearBits(wifi_event_group, WIFI_STA_DISCONNECTED_BIT);
|
||||
xEventGroupSetBits(wifi_event_group, WIFI_STA_CONNECTED_BIT);
|
||||
s_retry_count = 0;
|
||||
|
||||
// Dispara evento “STA GOT IP”
|
||||
esp_event_post(NETWORK_EVENTS,
|
||||
NETWORK_EVENT_STA_GOT_IP,
|
||||
&event->ip_info,
|
||||
sizeof(event->ip_info),
|
||||
portMAX_DELAY);
|
||||
}
|
||||
else if (event_id == IP_EVENT_GOT_IP6)
|
||||
{
|
||||
@@ -174,6 +199,16 @@ static void event_handler(void *arg, esp_event_base_t event_base, int32_t event_
|
||||
xEventGroupClearBits(wifi_event_group, WIFI_STA_DISCONNECTED_BIT);
|
||||
xEventGroupSetBits(wifi_event_group, WIFI_STA_CONNECTED_BIT);
|
||||
s_retry_count = 0;
|
||||
// se quiseres, podes também propagar um NETWORK_EVENT_STA_GOT_IP aqui
|
||||
}
|
||||
else if (event_id == IP_EVENT_STA_LOST_IP)
|
||||
{
|
||||
ESP_LOGW(TAG, "STA lost IP");
|
||||
esp_event_post(NETWORK_EVENTS,
|
||||
NETWORK_EVENT_STA_LOST_IP,
|
||||
NULL,
|
||||
0,
|
||||
portMAX_DELAY);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -390,7 +425,7 @@ uint16_t wifi_scan(wifi_scan_ap_t *scan_aps)
|
||||
for (int i = 0; (i < WIFI_SCAN_SCAN_LIST_SIZE) && (i < ap_count); i++)
|
||||
{
|
||||
// garante que scan_aps[i].ssid tenha pelo menos 33 bytes
|
||||
snprintf(scan_aps[i].ssid, SSID_BUF_SZ, "%s", (const char *)ap_info[i].ssid);
|
||||
snprintf(scan_aps[i].ssid, sizeof(scan_aps[i].ssid), "%s", (const char *)ap_info[i].ssid);
|
||||
scan_aps[i].rssi = ap_info[i].rssi;
|
||||
scan_aps[i].auth = ap_info[i].authmode != WIFI_AUTH_OPEN;
|
||||
}
|
||||
@@ -464,4 +499,4 @@ bool wifi_is_ap(void)
|
||||
|
||||
EventBits_t bits = xEventGroupGetBits(wifi_event_group);
|
||||
return (bits & WIFI_AP_MODE_BIT) != 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user