Program Listing for File WiFiEventHandler.h

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

#ifndef NETWORK_WIFI_EVENT_HANDLER_H
#define NETWORK_WIFI_EVENT_HANDLER_H

#include <memory>

#include <esp_event.h>
#include <esp_wifi.h>
#include <esp_netif.h>

namespace network {

class WiFiEventHandler
{
public:
    WiFiEventHandler();

    virtual esp_err_t staScanDone(wifi_event_sta_scan_done_t* info);

    virtual esp_err_t staStart();

    virtual esp_err_t staStop();

    virtual esp_err_t staConnected(wifi_event_sta_connected_t* info);

    virtual esp_err_t staDisconnected(wifi_event_sta_disconnected_t* info);

    virtual esp_err_t staAuthChange(wifi_event_sta_authmode_change_t* info);

    virtual esp_err_t staGotIp(ip_event_got_ip_t* info);

    virtual esp_err_t apStart();

    virtual esp_err_t apStop();

    virtual esp_err_t apStaConnected(wifi_event_ap_staconnected_t* info);

    virtual esp_err_t apStaDisconnected(wifi_event_ap_stadisconnected_t* info);

    void setNextHandler(std::unique_ptr<WiFiEventHandler>&& next_handler)
    {
        m_next_handler = std::move(next_handler);
    }

    esp_err_t eventDispatcher(std::int32_t event_id, void* event_data);

private:
    std::unique_ptr<WiFiEventHandler> m_next_handler;
};

} // namespace network

#endif // NETWORK_WIFI_EVENT_HANDLER_H