Program Listing for File WiFiEventHandler.cpp

Return to documentation for file (components/Network/src/WiFiEventHandler.cpp)

#include "WiFiEventHandler.h"

#include <esp_err.h>
#include <esp_log.h>
#include <esp_wifi.h>

static const char* TAG = "WiFiEventHandler";

namespace network {

WiFiEventHandler::WiFiEventHandler()
    : m_next_handler(nullptr)
{
}

esp_err_t WiFiEventHandler::staScanDone(wifi_event_sta_scan_done_t* info)
{
    ESP_LOGD(TAG, "default staScanDone");
    return ESP_OK;
}

esp_err_t WiFiEventHandler::staStart()
{
    ESP_LOGD(TAG, "default staStart");
    return ESP_OK;
}

esp_err_t WiFiEventHandler::staStop()
{
    ESP_LOGD(TAG, "default staStop");
    return ESP_OK;
}

esp_err_t WiFiEventHandler::staConnected(wifi_event_sta_connected_t* info)
{
    ESP_LOGD(TAG, "default staConnected");
    return ESP_OK;
}

esp_err_t WiFiEventHandler::staDisconnected(wifi_event_sta_disconnected_t* info)
{
    ESP_LOGD(TAG, "default staDisconnected");
    return ESP_OK;
}

esp_err_t WiFiEventHandler::staAuthChange(wifi_event_sta_authmode_change_t* info)
{
    ESP_LOGD(TAG, "default staAuthChange");
    return ESP_OK;
}

esp_err_t WiFiEventHandler::staGotIp(ip_event_got_ip_t* info)
{
    ESP_LOGD(TAG, "default staGotIp");
    return ESP_OK;
}

esp_err_t WiFiEventHandler::apStart()
{
    ESP_LOGD(TAG, "default apStart");
    return ESP_OK;
}

esp_err_t WiFiEventHandler::apStop()
{
    ESP_LOGD(TAG, "default apStop");
    return ESP_OK;
}
esp_err_t WiFiEventHandler::apStaConnected(wifi_event_ap_staconnected_t* info)
{
    ESP_LOGD(TAG, "default apStaConnected");
    return ESP_OK;
}

esp_err_t WiFiEventHandler::apStaDisconnected(wifi_event_ap_stadisconnected_t* info)
{
    ESP_LOGD(TAG, "default apStaDisconnected");
    return ESP_OK;
}

esp_err_t WiFiEventHandler::eventDispatcher(std::int32_t event_id,
                                            void* event_data)
{
    ESP_LOGD(TAG, "eventHandler called, event = 0x%x", event_id);

    // Call the necessary event handler
    switch (event_id) {
    case WIFI_EVENT_SCAN_DONE:
        return staScanDone(reinterpret_cast<wifi_event_sta_scan_done_t*>(event_data));

    case WIFI_EVENT_STA_START:
        return staStart();

    case WIFI_EVENT_STA_STOP:
        return staStop();

    case WIFI_EVENT_STA_CONNECTED:
        return staConnected(reinterpret_cast<wifi_event_sta_connected_t*>(event_data));

    case WIFI_EVENT_STA_DISCONNECTED:
        return staDisconnected(reinterpret_cast<wifi_event_sta_disconnected_t*>(event_data));

    case WIFI_EVENT_STA_AUTHMODE_CHANGE:
        return staAuthChange(reinterpret_cast<wifi_event_sta_authmode_change_t*>(event_data));

    case IP_EVENT_STA_GOT_IP:
        return staGotIp(reinterpret_cast<ip_event_got_ip_t*>(event_data));

    case WIFI_EVENT_AP_START:
        return apStart();

    case WIFI_EVENT_AP_STOP:
        return apStop();

    case WIFI_EVENT_AP_STACONNECTED:
        return apStaConnected(reinterpret_cast<wifi_event_ap_staconnected_t*>(event_data));

    case WIFI_EVENT_AP_STADISCONNECTED:
        return apStaDisconnected(reinterpret_cast<wifi_event_ap_stadisconnected_t*>(event_data));

    default:
        ESP_LOGD(TAG, "Unknown event = %d", event_id);
        break;
    }

    if (m_next_handler) {
        ESP_LOGD(TAG, "Dispatching event to the next_handler");
        return m_next_handler->eventDispatcher(event_id, event_data);
    }

    return ESP_OK;
}

} // namespace network