#ifndef WIFI_BOARD_H #define WIFI_BOARD_H /** * @file wifi_board.h * @brief WiFi板级管理模块头文件 * * 本文件定义了WiFi板级管理的相关接口,包括WiFi连接管理、 * BluFi蓝牙配网流程控制、网络状态监控等功能。 * 集成了蓝牙配网功能,提供完整的网络连接解决方案。 */ #include "board.h" #include "bluetooth_provisioning.h" #include #include #include // 前向声明 class Application; /** * @class WifiBoard * @brief WiFi板级管理类 * * 继承自Board基类,负责管理ESP32的WiFi连接、BluFi蓝牙配网流程和网络状态监控。 * 提供完整的网络连接解决方案,包括自动连接、配网模式切换、网络状态监控等功能。 */ class WifiBoard : public Board { protected: bool wifi_config_mode_ = false; ///< WiFi配置模式标志,true表示进入配网模式 bool blufi_provisioning_active_ = false; ///< BluFi配网激活状态标志 bool blufi_provisioning_success_ = false; ///< BluFi配网成功状态标志 TickType_t blufi_start_time_ = 0; ///< BluFi配网开始时间戳 static const TickType_t BLUFI_TIMEOUT_MS = 300000; ///< BluFi配网超时时间(5分钟),避免过快重新进入配网 BluetoothProvisioning bluetooth_provisioning_; ///< BluFi蓝牙配网实例对象 /** * @brief 构造函数 * 初始化WiFi板级管理对象,读取配置参数 */ WifiBoard(); /** * @brief 进入WiFi配置模式 * 启动BluFi蓝牙配网流程,等待用户通过手机APP配置WiFi信息 */ void EnterWifiConfigMode(); /** * @brief 广播验证码 * @param code 验证码字符串 * @param application 应用程序实例引用 * 用于在配网过程中向用户显示验证码信息 */ void BroadcastVerificationCode(const std::string& code, Application& application); /** * @brief 启动BluFi蓝牙配网 * @return true 启动成功 * @return false 启动失败 * 初始化并启动BluFi蓝牙配网服务,等待手机连接 */ bool StartBluFiProvisioning(); /** * @brief 监控BluFi配网进程 * 监控配网状态变化,处理超时和异常情况 */ void MonitorBluFiProvisioning(); /** * @brief BluFi配网事件处理函数 * @param event 配网事件类型 * @param data 事件数据指针 * 处理BluFi配网过程中的各种事件 */ void OnBluFiProvisioningEvent(BluetoothProvisioningEvent event, void* data); /** * @brief BluFi配网静态回调函数 * @param event 配网事件类型 * @param data 事件数据指针 * @param user_data 用户数据指针 * 静态回调函数,用于处理BluFi配网事件 */ static void BluFiProvisioningCallback(BluetoothProvisioningEvent event, void* data, void* user_data); /** * @brief 清理现有蓝牙服务 * 在进入配网模式前,清理application.cc中启动的蓝牙服务,避免重复初始化 */ void CleanupExistingBluetoothService(); /** * @brief 清理现有WiFi服务 * 在进入配网模式前,清理现有的WiFi服务,为BluFi重新初始化做准备 */ void CleanupExistingWiFiService(); /** * @brief 获取板级配置JSON字符串 * @return std::string 板级配置的JSON格式字符串 * 重写基类方法,返回WiFi板级的配置信息 */ virtual std::string GetBoardJson() override; public: /** * @brief 获取板级类型 * @return std::string 返回"wifi"字符串 * 重写基类方法,标识当前板级为WiFi类型 */ virtual std::string GetBoardType() override; /** * @brief 启动网络连接 * 根据配置启动WiFi连接或BluFi配网流程 * 重写基类方法,实现WiFi网络的启动逻辑 */ virtual void StartNetwork() override; /** * @brief 创建HTTP客户端对象 * @return Http* HTTP客户端对象指针 * 重写基类方法,创建适用于WiFi网络的HTTP客户端 */ virtual Http* CreateHttp() override; /** * @brief 创建WebSocket客户端对象 * @return WebSocket* WebSocket客户端对象指针 * 重写基类方法,创建适用于WiFi网络的WebSocket客户端 */ virtual WebSocket* CreateWebSocket() override; /** * @brief 创建MQTT客户端对象 * @return Mqtt* MQTT客户端对象指针 * 重写基类方法,创建适用于WiFi网络的MQTT客户端 */ virtual Mqtt* CreateMqtt() override; /** * @brief 创建UDP客户端对象 * @return Udp* UDP客户端对象指针 * 重写基类方法,创建适用于WiFi网络的UDP客户端 */ virtual Udp* CreateUdp() override; /** * @brief 获取网络状态图标 * @return const char* 网络状态图标字符串 * 重写基类方法,返回当前WiFi网络状态对应的图标 */ virtual const char* GetNetworkStateIcon() override; /** * @brief 设置省电模式 * @param enabled true启用省电模式,false禁用省电模式 * 重写基类方法,控制WiFi模块的省电模式 */ virtual void SetPowerSaveMode(bool enabled) override; /** * @brief 重置WiFi配置 * 清除已保存的WiFi凭据,重新进入配网模式 */ virtual void ResetWifiConfiguration(); /** * @brief 检查BluFi配网是否激活 * @return true BluFi配网正在进行中 * @return false BluFi配网未激活 * BluFi配网状态检查方法,用于外部查询配网状态 */ bool IsBluFiProvisioningActive() const { return blufi_provisioning_active_; } }; #endif // WIFI_BOARD_H