From: Tomasz Marciniak Date: Thu, 10 Aug 2017 08:26:32 +0000 (+0200) Subject: [Systeminfo] Get status and mac address if WiFi is off X-Git-Tag: submit/tizen_3.0/20170810.110358~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F70%2F143570%2F1;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Systeminfo] Get status and mac address if WiFi is off [Feature] Status and mac address of the WiFi interface were retrieved only if device was connected to some AP. Now they are retrieved always. [Verification] Code compiles. TCT pass rate 100% Change-Id: Ia16d22f204a71d4084e13ce5ab647b60c7acee60 Signed-off-by: Tomasz Marciniak --- diff --git a/src/systeminfo/systeminfo_properties_manager.cc b/src/systeminfo/systeminfo_properties_manager.cc index 75bb33c3..724e0f12 100644 --- a/src/systeminfo/systeminfo_properties_manager.cc +++ b/src/systeminfo/systeminfo_properties_manager.cc @@ -681,106 +681,98 @@ PlatformResult SysteminfoPropertiesManager::ReportWifiNetwork(picojson::object* }; // check if wifi is activated - bool activated = false; - error = wifi_manager_is_activated(wifi_manager, &activated); + error = wifi_manager_is_activated(wifi_manager, &result_status); if (WIFI_MANAGER_ERROR_NONE != error) { std::string log_msg = "Checking if wifi is activated failed: " + std::string(get_error_message(error)); return LogAndCreateResult( ErrorCode::UNKNOWN_ERR, log_msg, ("wifi_manager_is_activated error: %d (%s)", error, get_error_message(error))); + } + + //gathering mac address + char* mac = nullptr; + error = wifi_manager_get_mac_address(wifi_manager, &mac); + if (WIFI_MANAGER_ERROR_NONE == error && nullptr != mac) { + SLoggerD("MAC address fetched: %s", mac); + result_mac_address = mac; + free(mac); } else { - LoggerD("WIFI activated check succeed"); + std::string log_msg = "Failed to get mac address: " + std::string(get_error_message(error)); + return LogAndCreateResult( + ErrorCode::UNKNOWN_ERR, log_msg, + ("wifi_manager_get_mac_address error: %d (%s)", error, get_error_message(error))); } wifi_manager_ap_h wifi_ap_handle = nullptr; - if (activated) { + if (result_status) { LoggerD("Wifi is activated"); error = wifi_manager_get_connected_ap(wifi_manager, &wifi_ap_handle); - if (WIFI_MANAGER_ERROR_NONE != error) { + if (WIFI_MANAGER_ERROR_NONE != error && WIFI_MANAGER_ERROR_NO_CONNECTION != error) { LoggerD("Error while wifi_get_connnected_ap: %s", get_error_message(error)); - // in case of no connection, ignore error and leave status as false - if (WIFI_MANAGER_ERROR_NO_CONNECTION != error) { - std::string log_msg = "Cannot get connected access point handle: " + + std::string log_msg = "Cannot get connected access point handle: " + std::string(get_error_message(error)); return LogAndCreateResult( ErrorCode::UNKNOWN_ERR, log_msg, ("wifi_manager_get_connected_ap error: %d (%s)", error, get_error_message(error))); } - } else { - //if getting connected AP succeed, set status on true - result_status = true; - } - } - if (result_status) { std::unique_ptr::type, int(*)(wifi_manager_ap_h)> wifi_ap_handle_ptr(wifi_ap_handle, &wifi_manager_ap_destroy); // automatically release the memory - //gathering mac address - char* mac = nullptr; - error = wifi_manager_get_mac_address(wifi_manager, &mac); - if (WIFI_MANAGER_ERROR_NONE == error && nullptr != mac) { - SLoggerD("MAC address fetched: %s", mac); - result_mac_address = mac; - free(mac); - } else { - std::string log_msg = "Failed to get mac address: " + std::string(get_error_message(error)); - return LogAndCreateResult( - ErrorCode::UNKNOWN_ERR, log_msg, - ("wifi_manager_get_mac_address error: %d (%s)", error, get_error_message(error))); - } - - //refreshing access point information - error = wifi_manager_ap_refresh(wifi_ap_handle); - if (WIFI_MANAGER_ERROR_NONE != error) { - std::string log_msg = "Failed to refresh access point information: " + - std::string(get_error_message(error)); - return LogAndCreateResult( - ErrorCode::UNKNOWN_ERR, log_msg, - ("wifi_manager_ap_refresh error: %d (%s)", error, get_error_message(error))); - } - - //gathering ssid - char* essid = nullptr; - error = wifi_manager_ap_get_essid(wifi_ap_handle, &essid); - if (WIFI_MANAGER_ERROR_NONE == error) { - result_ssid = essid; - free(essid); - } else { - std::string log_msg = "Failed to get network ssid: " + std::string(get_error_message(error)); - return LogAndCreateResult( - ErrorCode::UNKNOWN_ERR, log_msg, - ("wifi_manager_ap_get_essid error: %d (%s)", error, get_error_message(error))); - } - - //gathering ips - PlatformResult ret = GetIpsWifi(wifi_ap_handle, &result_ip_address, &result_ipv6_address); - if (ret.IsError()) { - return ret; - } + if (WIFI_MANAGER_ERROR_NO_CONNECTION != error) { + //refreshing access point information + error = wifi_manager_ap_refresh(wifi_ap_handle); + if (WIFI_MANAGER_ERROR_NONE != error) { + std::string log_msg = "Failed to refresh access point information: " + + std::string(get_error_message(error)); + return LogAndCreateResult( + ErrorCode::UNKNOWN_ERR, log_msg, + ("wifi_manager_ap_refresh error: %d (%s)", error, get_error_message(error))); + } - //gathering strength - wifi_manager_rssi_level_e rssi_level = manager_.GetWifiLevel(); - // this mean that level was not initialized or wifi not connected - if (WIFI_MANAGER_RSSI_LEVEL_0 == rssi_level) { - // so try to gather rssi level with dedicated function - int rssi = 0; - error = wifi_manager_ap_get_rssi(wifi_ap_handle, &rssi); + //gathering ssid + char* essid = nullptr; + error = wifi_manager_ap_get_essid(wifi_ap_handle, &essid); if (WIFI_MANAGER_ERROR_NONE == error) { - result_signal_strength = ((double) abs(rssi))/kWifiSignalStrengthDivideValue; + result_ssid = essid; + free(essid); } else { - std::string log_msg = "Failed to get signal strength: " + - std::string(get_error_message(error)); + std::string log_msg = "Failed to get network ssid: " + std::string(get_error_message(error)); return LogAndCreateResult( - ErrorCode::UNKNOWN_ERR, log_msg, - ("wifi_manager_ap_get_rssi error: %d (%s)", error, get_error_message(error))); + ErrorCode::UNKNOWN_ERR, log_msg, + ("wifi_manager_ap_get_essid error: %d (%s)", error, get_error_message(error))); + } + + //gathering ips + PlatformResult ret = GetIpsWifi(wifi_ap_handle, &result_ip_address, &result_ipv6_address); + if (ret.IsError()) { + return ret; + } + + //gathering strength + wifi_manager_rssi_level_e rssi_level = manager_.GetWifiLevel(); + // this mean that level was not initialized or wifi not connected + if (WIFI_MANAGER_RSSI_LEVEL_0 == rssi_level) { + // so try to gather rssi level with dedicated function + int rssi = 0; + error = wifi_manager_ap_get_rssi(wifi_ap_handle, &rssi); + if (WIFI_MANAGER_ERROR_NONE == error) { + result_signal_strength = ((double) abs(rssi))/kWifiSignalStrengthDivideValue; + } else { + std::string log_msg = "Failed to get signal strength: " + + std::string(get_error_message(error)); + return LogAndCreateResult( + ErrorCode::UNKNOWN_ERR, log_msg, + ("wifi_manager_ap_get_rssi error: %d (%s)", error, get_error_message(error))); + } + } else { + result_signal_strength = ((double) rssi_level)/WIFI_MANAGER_RSSI_LEVEL_4; } - } else { - result_signal_strength = ((double) rssi_level)/WIFI_MANAGER_RSSI_LEVEL_4; } } + //building result object out->insert(std::make_pair("status", picojson::value(result_status ? kWifiStatusOn : kWifiStatusOff))); out->insert(std::make_pair("ssid", picojson::value(result_ssid)));