summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMilind Murhekar <m.murhekar@samsung.com>2018-09-21 19:36:20 +0530
committerMilind Murhekar <m.murhekar@samsung.com>2018-10-05 14:30:51 +0530
commit3c5d316b64f60ee6fb7b2bb85c22fad385cb0f91 (patch)
tree4eabf0d0bfb9780fdecb13938ff16660d6652e06 /src
parent071fe548f78efbfa84ee6841c013713903a7e28c (diff)
downloadconnman-3c5d316b64f60ee6fb7b2bb85c22fad385cb0f91.tar.gz
connman-3c5d316b64f60ee6fb7b2bb85c22fad385cb0f91.tar.bz2
connman-3c5d316b64f60ee6fb7b2bb85c22fad385cb0f91.zip
Add IEEE 802.11 protocol(b/g/n/a/ac) Modes of APs
This patch appends the IEEE 802.11b/g/n/a/ac PHY protocol modes of scanned Access Points using internal logic. Following logic is used to determine WLAN HW protocol:- 1) If “Supported rates” is only till 11 Mbps, and frequency is in 2.4GHz band, then protocol is 802.11B. 2) If “Supported rates” is till 54Mbps or “Extended supported rates” are present, and frequency is in 2.4GHz band, then protocol is 802.11G. 3) If “Supported rates” is only till 54 Mbps, frequency is in 5GHz band , then protocol is 802.11A. 4) If “HT capabilities” is supported , then protocol is 802.11N. 5) If “HT capabilities” & “VHT” is supported and frequency is in 5 GHz band, then protocol is 802.11AC. Change-Id: I1156ef249cf4a8052a883d31da66788c7d2de22f
Diffstat (limited to 'src')
-rw-r--r--src/connman.h1
-rwxr-xr-xsrc/network.c30
-rw-r--r--src/service.c4
3 files changed, 35 insertions, 0 deletions
diff --git a/src/connman.h b/src/connman.h
index 905467e8..610f63bc 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -26,6 +26,7 @@
#define CONNMAN_API_SUBJECT_TO_CHANGE
#if defined TIZEN_EXT
#define WIFI_COUNTRY_CODE_LEN 2
+#define WIFI_PHY_MODE_LEN 18
#endif
#include <connman/dbus.h>
diff --git a/src/network.c b/src/network.c
index 85eb0fdd..b7103683 100755
--- a/src/network.c
+++ b/src/network.c
@@ -122,6 +122,8 @@ struct connman_network {
char *phase1;
unsigned char country_code[WIFI_COUNTRY_CODE_LEN];
GSList *bssid_list;
+ ieee80211_modes_e phy_mode;
+ connection_mode_e connection_mode;
#endif
} wifi;
@@ -2130,6 +2132,34 @@ int connman_network_set_bssid_list(struct connman_network *network,
return 0;
}
+int connman_network_set_phy_mode(struct connman_network *network,
+ ieee80211_modes_e mode)
+{
+ DBG("network %p phy mode %d", network, mode);
+ network->wifi.phy_mode = mode;
+
+ return 0;
+}
+
+ieee80211_modes_e connman_network_get_phy_mode(struct connman_network *network)
+{
+ return network->wifi.phy_mode;
+}
+
+int connman_network_set_connection_mode(struct connman_network *network,
+ connection_mode_e mode)
+{
+ DBG("network %p connection mode %d", network, mode);
+ network->wifi.connection_mode = mode;
+
+ return 0;
+}
+
+connection_mode_e connman_network_get_connection_mode(struct connman_network *network)
+{
+ return network->wifi.connection_mode;
+}
+
void *connman_network_get_bssid_list(struct connman_network *network)
{
return network->wifi.bssid_list;
diff --git a/src/service.c b/src/service.c
index 614be706..d6c03223 100644
--- a/src/service.c
+++ b/src/service.c
@@ -3262,6 +3262,7 @@ static void append_wifi_ext_info(DBusMessageIter *dict,
char country_code_buff[WIFI_COUNTRY_CODE_LEN + 1] = {0,};
char *country_code_str = country_code_buff;
unsigned char *country_code;
+ uint16_t connection_mode;
ssid = connman_network_get_blob(network, "WiFi.SSID", &ssid_len);
bssid = connman_network_get_bssid(network);
@@ -3272,6 +3273,7 @@ static void append_wifi_ext_info(DBusMessageIter *dict,
passpoint = connman_network_get_bool(network, "WiFi.HS20AP");
keymgmt = connman_network_get_keymgmt(network);
country_code = connman_network_get_countrycode(network);
+ connection_mode = connman_network_get_connection_mode(network);
snprintf(bssid_str, WIFI_BSSID_STR_LEN, "%02x:%02x:%02x:%02x:%02x:%02x",
bssid[0], bssid[1], bssid[2],
@@ -3299,6 +3301,8 @@ static void append_wifi_ext_info(DBusMessageIter *dict,
DBUS_TYPE_UINT32, &keymgmt);
connman_dbus_dict_append_basic(dict, "Country", DBUS_TYPE_STRING,
&country_code_str);
+ connman_dbus_dict_append_basic(dict, "ConnMode",
+ DBUS_TYPE_UINT16, &connection_mode);
str = connman_network_get_string(network, "WiFi.Security");
if (str != NULL && g_str_equal(str, "ieee8021x") == TRUE) {