diff options
author | Jaehyun Kim <jeik01.kim@samsung.com> | 2021-12-20 12:11:43 +0900 |
---|---|---|
committer | Jaehyun Kim <jeik01.kim@samsung.com> | 2021-12-28 22:21:51 +0900 |
commit | a0f49e57059d59d8b3124554a16238c968f158c7 (patch) | |
tree | f998d7344ec9da7e5b1e25d8a3f0613bfa5432d1 /src/network.c | |
parent | d4fbe50ed65c256d0592cd61496eda3e0bac5389 (diff) | |
download | connman-a0f49e57059d59d8b3124554a16238c968f158c7.tar.gz connman-a0f49e57059d59d8b3124554a16238c968f158c7.tar.bz2 connman-a0f49e57059d59d8b3124554a16238c968f158c7.zip |
Start wifi roaming when better BSS is found
If better BSS is found after roaming scan, roaming starts.
Change-Id: I9812f3a0205021e1cecb9696ebc29947fd44dae4
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
Diffstat (limited to 'src/network.c')
-rwxr-xr-x | src/network.c | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/src/network.c b/src/network.c index d72d40a0..b1643e72 100755 --- a/src/network.c +++ b/src/network.c @@ -145,6 +145,10 @@ struct connman_network { void *transition_mode_ssid; int transition_mode_ssid_len; unsigned char transition_mode_bssid[WIFI_BSSID_LEN_MAX]; + bool roaming_progress; + char *roaming_cur_bssid; + char *roaming_dst_bssid; + int snr; #endif } wifi; @@ -2347,6 +2351,9 @@ int connman_network_set_bssid(struct connman_network *network, if (bssid == NULL) return -EINVAL; + if (network->connected) + return -EPERM; + if (!simplified_log) DBG("network %p bssid %02x:%02x:%02x:%02x:%02x:%02x", network, bssid[0], bssid[1], bssid[2], @@ -2643,6 +2650,16 @@ GHashTable *connman_network_get_assoc_reject_table(struct connman_network *netwo return network->wifi.assoc_reject_table; } + +int connman_network_get_snr(struct connman_network *network) +{ + return network->wifi.snr; +} + +void connman_network_set_snr(struct connman_network *network, int snr) +{ + network->wifi.snr = snr; +} #endif int connman_network_set_nameservers(struct connman_network *network, @@ -2852,6 +2869,12 @@ int connman_network_set_string(struct connman_network *network, } else if (g_str_equal(key, "WiFi.NetAccessKey")) { g_free(network->wifi.net_access_key); network->wifi.net_access_key = g_strdup(value); + } else if (g_str_equal(key, "WiFi.RoamingCurBSSID")) { + g_free(network->wifi.roaming_cur_bssid); + network->wifi.roaming_cur_bssid = g_strdup(value); + } else if (g_str_equal(key, "WiFi.RoamingDstBSSID")) { + g_free(network->wifi.roaming_dst_bssid); + network->wifi.roaming_dst_bssid = g_strdup(value); #endif } else { return -EINVAL; @@ -2879,15 +2902,7 @@ const char *connman_network_get_string(struct connman_network *network, else if (g_str_equal(key, "WiFi.Mode")) return network->wifi.mode; else if (g_str_equal(key, "WiFi.Security")) -#if defined TIZEN_EXT - if (network->wifi.rsn_mode != true || - g_str_equal(network->wifi.security, "ieee8021x")) - return network->wifi.security; - else - return "rsn"; -#else return network->wifi.security; -#endif else if (g_str_equal(key, "WiFi.Passphrase")) return network->wifi.passphrase; else if (g_str_equal(key, "WiFi.EAP")) @@ -2925,6 +2940,10 @@ const char *connman_network_get_string(struct connman_network *network, return network->wifi.c_sign_key; else if (g_str_equal(key, "WiFi.NetAccessKey")) return network->wifi.net_access_key; + else if (g_str_equal(key, "WiFi.RoamingCurBSSID")) + return network->wifi.roaming_cur_bssid; + else if (g_str_equal(key, "WiFi.RoamingDstBSSID")) + return network->wifi.roaming_dst_bssid; #endif return NULL; @@ -2956,6 +2975,9 @@ int connman_network_set_bool(struct connman_network *network, network->wifi.isHS20AP = value; else if (g_strcmp0(key, "WiFi.TRANSITION_MODE") == 0) network->wifi.owe_transition_mode = value; + else if (g_strcmp0(key, "WiFi.Roaming") == 0) { + network->wifi.roaming_progress = value; + } #endif return -EINVAL; @@ -2984,8 +3006,10 @@ bool connman_network_get_bool(struct connman_network *network, return network->default_internet; else if (g_str_equal(key, "WiFi.HS20AP")) return network->wifi.isHS20AP; - else if (g_strcmp0(key, "WiFi.TRANSITION_MODE")) + else if (g_str_equal(key, "WiFi.TRANSITION_MODE")) return network->wifi.owe_transition_mode; + else if (g_str_equal(key, "WiFi.Roaming")) + return network->wifi.roaming_progress; #endif return false; |