101 lines
2.5 KiB
C
101 lines
2.5 KiB
C
#ifndef WIFI_MANAGER_H
|
|
#define WIFI_MANAGER_H
|
|
|
|
#include "esp_wifi.h"
|
|
#include "esp_event.h"
|
|
#include "esp_netif.h"
|
|
#include "esp_err.h"
|
|
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/event_groups.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
/**
|
|
* @brief WiFi connection status
|
|
*/
|
|
typedef enum
|
|
{
|
|
WIFI_STATUS_DISCONNECTED = 0,
|
|
WIFI_STATUS_CONNECTING,
|
|
WIFI_STATUS_CONNECTED,
|
|
WIFI_STATUS_ERROR
|
|
} wifi_status_t;
|
|
|
|
/**
|
|
* @brief WiFi event callback function type
|
|
*
|
|
* @param status Current WiFi status
|
|
* @param ip_address IP address string (only valid when status is CONNECTED)
|
|
*/
|
|
typedef void (*wifi_event_callback_t)(wifi_status_t status, const char *ip_address);
|
|
|
|
/**
|
|
* @brief Initialize WiFi manager
|
|
*
|
|
* @param ssid WiFi network name
|
|
* @param password WiFi password
|
|
* @param event_callback Optional callback function for WiFi events
|
|
* @return esp_err_t ESP_OK on success, error code on failure
|
|
*/
|
|
esp_err_t wifi_manager_init(const char *ssid, const char *password, wifi_event_callback_t event_callback);
|
|
|
|
/**
|
|
* @brief Start WiFi connection
|
|
*
|
|
* @return esp_err_t ESP_OK on success, error code on failure
|
|
*/
|
|
esp_err_t wifi_manager_start(void);
|
|
|
|
/**
|
|
* @brief Stop WiFi connection
|
|
*
|
|
* @return esp_err_t ESP_OK on success, error code on failure
|
|
*/
|
|
esp_err_t wifi_manager_stop(void);
|
|
|
|
/**
|
|
* @brief Get current WiFi connection status
|
|
*
|
|
* @return wifi_status_t Current WiFi status
|
|
*/
|
|
wifi_status_t wifi_manager_get_status(void);
|
|
|
|
/**
|
|
* @brief Wait for WiFi connection with timeout
|
|
*
|
|
* @param timeout_ms Timeout in milliseconds (0 for indefinite wait)
|
|
* @return true if connected, false if timeout
|
|
*/
|
|
bool wifi_manager_wait_for_connection(uint32_t timeout_ms);
|
|
|
|
/**
|
|
* @brief Get current IP address
|
|
*
|
|
* @param ip_str Buffer to store IP address string (minimum 16 chars)
|
|
* @param buffer_size Size of the buffer
|
|
* @return esp_err_t ESP_OK on success, error code on failure
|
|
*/
|
|
esp_err_t wifi_manager_get_ip_address(char *ip_str, size_t buffer_size);
|
|
|
|
/**
|
|
* @brief Deinitialize WiFi manager
|
|
*
|
|
* @return esp_err_t ESP_OK on success, error code on failure
|
|
*/
|
|
esp_err_t wifi_manager_deinit(void);
|
|
|
|
/**
|
|
* @brief Check if WiFi is connected
|
|
*
|
|
* @return true if connected, false otherwise
|
|
*/
|
|
bool wifi_manager_is_connected(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // WIFI_MANAGER_H
|