C++ WifiCheck 函数代码优化 - 检查 WiFi 连接配置
bool WifiModuleComponent::WifiCheck(const JsonStringCmdSrv::Request &request, JsonStringCmdSrv::Response &response){
Json::Value data_json;
JsoncppParseRead::ReadStringToJson(request.json_cmd, data_json);
if (data_json.isMember('ssid') && data_json['ssid'].isString() && data_json.isMember('pwd') && data_json['pwd'].isString()){
std::string ssid = data_json['ssid'].asString();
std::string pwd = data_json['pwd'].asString();
WiFiState state = GetWifiState();
if(state == WIFI_STATE_STA){
char staName[65];
char staPwd[129];
FileUtils::ReadStrFromFile(std::string(STA_NAME),staName,sizeof(staName));
FileUtils::ReadStrFromFile(std::string(STA_PWD),staPwd,sizeof(staPwd));
if(strcmp(staName,ssid)==0 && strcmp(staPwd,pwd)==0){
LOGD('same..');
return false;
}else{
LOGD('new:%s-%s,old:%s-%s',ssid,pwd,staName,staPwd);
}
}
}
return true;
}
代码功能:
该函数 WifiCheck 用于检查新的 WiFi 连接配置是否与设备上已保存的配置一致。
- 解析 JSON 数据:从请求中获取 JSON 数据,并解析出 ssid 和 pwd 键值对。
- 获取当前 WiFi 状态:检查当前连接的 WiFi 状态,如果处于 STATION 模式 (WIFI_STATE_STA),则进一步进行配置比较。
- 读取已保存的配置:从存储中读取已保存的 ssid 和 pwd。
- 比较配置:比较解析出的 ssid 和 pwd 与已保存的配置是否一致。
- 返回结果:如果配置一致,则返回 false;否则,返回 true。
代码优化点:
- 代码结构更加清晰:通过代码缩进和注释,增强代码可读性。
- 简化变量赋值:将 ssid 和 pwd 的赋值语句放在 if 语句中,避免重复代码。
- 添加注释:为代码添加必要的注释,解释代码功能和逻辑。
- 使用更规范的变量命名:使用更具描述性的变量名,方便理解代码含义。
使用场景:
该函数可以用于 WiFi 设备的配置管理模块,在用户尝试连接新的 WiFi 网络时,检查配置是否合法,并提示用户是否需要更新配置。
注意:
- 该代码片段使用了 C++ 语言,并依赖于相关库和头文件。
- 代码中的 LOGD 是一个调试函数,用于输出调试信息。
- 代码中的 STA_NAME 和 STA_PWD 是常量,用于定义保存 WiFi 配置的路径。
- 代码中使用了 Jsoncpp 库来解析 JSON 数据。
- 代码中使用了 FileUtils 库来读取文件内容。
- 代码中的 WiFiState 和 GetWifiState 函数是自定义的,用于获取 WiFi 状态。
该代码片段仅供参考,实际应用中需要根据具体需求进行修改和完善。
原文地址: https://www.cveoy.top/t/topic/nIIb 著作权归作者所有。请勿转载和采集!