[Systeminfo] Get status and mac address if WiFi is off 70/143570/1
authorTomasz Marciniak <t.marciniak@samsung.com>
Thu, 10 Aug 2017 08:26:32 +0000 (10:26 +0200)
committerTomasz Marciniak <t.marciniak@samsung.com>
Thu, 10 Aug 2017 10:46:00 +0000 (12:46 +0200)
[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 <t.marciniak@samsung.com>
src/systeminfo/systeminfo_properties_manager.cc

index 75bb33c31ad1c3c825e9b922146cc90e02f65556..724e0f127fb218b9d21809178dc8940b77b23bc1 100644 (file)
@@ -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<std::remove_pointer<wifi_manager_ap_h>::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)));