ALiWifiConfig 类构造函数:智能配置和 AP 模式 WiFi 连接
ALiWifiConfig 类构造函数:智能配置和 AP 模式 WiFi 连接
该代码是 ALiWifiConfig 类的构造函数。在初始化函数 Init() 之后,它会检查是否存在一个名为 'ALI_WIFI_SMARTCONFIG_FLG' 的文件。如果存在,表明设备正在通过 SmartConfig 模式连接 WiFi。因此,config_mode_ 会被设置为 WCM_SMART,并删除该标志文件。如果标志文件不存在,则表明设备正在通过 AP 模式连接 WiFi,config_mode_ 会被设置为 WCM_AP,并创建并写入一个值为 1 的标志文件。
接着,代码检查 is_ap_mode_ 和 boot_netconfig_ 的值。如果 is_ap_mode_ 为 true 且 boot_netconfig_ 为 true 且 WIFI_CONFIG_FLG 文件不存在,则表明设备正在 AP 模式下,需要进行网络配置,因此会调用 ResetWifi() 函数进行 WiFi 重置。最后,会输出 is_ap_mode_ 的值。
#define ALI_WIFI_SMARTCONFIG_FLG "/tmp/smartconfig_flag"
ALiWifiConfig* ALiWifiConfig::instance_ = nullptr;
ALiWifiConfig::ALiWifiConfig() : LDObject(OBJECT_ID_WIFI_CONFIG) {
Init();
if(FILEOP::FileDirectoryExists(ALI_WIFI_SMARTCONFIG_FLG)){
config_mode_ = WifiResetReal::WCM_SMART;
FILEOP::RemoveFile(ALI_WIFI_SMARTCONFIG_FLG);
} else {
config_mode_ = WifiResetReal::WCM_AP;
std::string str_tmp = '1';
FILEOP::WriteStrToFile(ALI_WIFI_SMARTCONFIG_FLG, str_tmp);
// boot_netconfig_ = false;
}
LOGI("is_ap_mode_ = %d", is_ap_mode_);
if (is_ap_mode_ && boot_netconfig_) {
if (!FILEOP::FileDirectoryExists(WIFI_CONFIG_FLG)) {
LOGI("AP mode, config network");
ResetWifi();
}
}
}
代码说明:
- ALI_WIFI_SMARTCONFIG_FLG: 用于标识设备是否通过 SmartConfig 模式连接 WiFi 的文件路径。
- config_mode_: 用于存储当前 WiFi 连接模式的变量,可以是 WCM_SMART 或 WCM_AP。
- is_ap_mode_: 用于指示设备是否处于 AP 模式的变量。
- boot_netconfig_: 用于指示是否需要进行网络配置的变量。
- WIFI_CONFIG_FLG: 用于指示设备是否已配置过网络的标志文件路径。
- ResetWifi(): 用于重置 WiFi 连接的函数。
代码功能:
- 通过检查
ALI_WIFI_SMARTCONFIG_FLG文件的存在情况来判断设备是通过 SmartConfig 模式还是 AP 模式连接 WiFi。 - 根据连接模式设置
config_mode_变量。 - 检查
is_ap_mode_和boot_netconfig_的值,如果需要进行网络配置,则调用ResetWifi()函数进行 WiFi 重置。
注意:
- 代码中使用的
FILEOP类可能需要根据实际情况进行修改。 - 代码中使用的
WifiResetReal类可能需要根据实际情况进行修改。 - 代码中使用的
LOGI函数可能需要根据实际情况进行修改。
原文地址: https://www.cveoy.top/t/topic/npnL 著作权归作者所有。请勿转载和采集!