}
message = netconfig_invoke_dbus_method(SUPPLICANT_SERVICE, if_path,
- SUPPLICANT_INTERFACE ".Interface", "SignalPoll", NULL);
-
- g_free(if_path);
+ SUPPLICANT_INTERFACE ".Interface", "SignalPoll", NULL);
if (message == NULL) {
ERR("Fail to get SignalPoll from wpa_supplicant");
+ g_free(if_path);
return 0;
}
g_variant_get(message, "(v)", &value);
g_variant_get(value, "a{sv}", &iter);
- if (iter == NULL) {
- ERR("Fail to get list from SignalPoll");
- return 0;
- }
-
while (g_variant_iter_loop(iter, "{sv}", &key, &variant)) {
key_value = g_variant_get_int32(variant);
if (value)
g_variant_unref(value);
+ g_variant_unref(message);
+
+ g_free(if_path);
+
netconfig_wifi_rssi = rssi_dbm;
return rssi_dbm;
}
-int netconfig_wifi_rssi_level(const int rssi_dbm)
+static int __netconfig_wifi_convert_dbm_to_level_24(int rssi_dbm)
{
- int snr_level = 0;
+ int rssi_level = 0;
- /* Wi-Fi Signal Strength Display
+ /* Wi-Fi Signal Strength Display (for 2.4G (dB))
*
- * Excellent : -63 ~
- * Good: -74 ~ -64
- * Weak: -82 ~ -75
- * Very weak: ~ -83
+ * Excellent : ~ -63
+ * Good : -64 ~ -74
+ * Weak : -75 ~ -82
+ * Very weak : -83 ~ -88
+ * No signal : -89 ~
*/
+
if (rssi_dbm >= -63)
- snr_level = 4;
+ rssi_level = 4;
else if (rssi_dbm >= -74)
- snr_level = 3;
+ rssi_level = 3;
else if (rssi_dbm >= -82)
- snr_level = 2;
+ rssi_level = 2;
+ else if (rssi_dbm >= -88)
+ rssi_level = 1;
+ else
+ rssi_level = 0;
+
+ return rssi_level;
+}
+
+static int __netconfig_wifi_convert_dbm_to_level_50(int rssi_dbm)
+{
+ int rssi_level = 0;
+
+ /* Wi-Fi Signal Strength Display (for 5G (dB))
+ *
+ * Excellent : ~ -72
+ * Good : -73 ~ -78
+ * Weak : -79 ~ -83
+ * Very weak : -84 ~ -88
+ * No signal : -89 ~
+ */
+
+ if (rssi_dbm >= -72)
+ rssi_level = 4;
+ else if (rssi_dbm >= -78)
+ rssi_level = 3;
+ else if (rssi_dbm >= -83)
+ rssi_level = 2;
+ else if (rssi_dbm >= -88)
+ rssi_level = 1;
+ else
+ rssi_level = 0;
+
+ return rssi_level;
+}
+
+int netconfig_wifi_rssi_level(const int rssi_dbm)
+{
+ int snr_level = 0;
+ int freq = 0;
+ int ret = 0;
+
+ ret = netconfig_vconf_get_int("memory/private/wifi/frequency", &freq);
+
+ if (!ret && freq > 4900)
+ snr_level = __netconfig_wifi_convert_dbm_to_level_50(rssi_dbm);
else
- snr_level = 1;
+ snr_level = __netconfig_wifi_convert_dbm_to_level_24(rssi_dbm);
return snr_level;
}