if (!wifi || !wifi->network)
return;
- if (connman_setting_get_bool("WifiRoaming")) {
- struct connman_network *network = wifi->network;
- bssid_list = connman_network_get_bssid_list(network);
+ if (!connman_setting_get_bool("WifiRoaming"))
+ return;
- if (g_slist_length(bssid_list) <= 1)
- return;
+ struct connman_network *network = wifi->network;
+ bssid_list = connman_network_get_bssid_list(network);
- if (!connman_network_get_connected(network))
- return;
+ if (g_slist_length(bssid_list) <= 1)
+ return;
- if (connman_network_get_bool(network, "WiFi.Roaming"))
- return;
+ if (!connman_network_get_connected(network))
+ return;
- uint16_t cur_freq = connman_network_get_frequency(network);
- uint8_t cur_strength = connman_network_get_strength(network);
- unsigned int cur_est_throughput = connman_network_get_est_throughput(network);
+ if (connman_network_get_bool(network, "WiFi.Roaming"))
+ return;
- if (!need_bss_transition(
- cur_freq,
- connman_network_get_snr(network),
- cur_strength))
- return;
+ uint16_t cur_freq = connman_network_get_frequency(network);
+ uint8_t cur_strength = connman_network_get_strength(network);
+ unsigned int cur_est_throughput = connman_network_get_est_throughput(network);
- unsigned char *cur_bssid = connman_network_get_bssid(network);
+ if (!need_bss_transition(
+ cur_freq,
+ connman_network_get_snr(network),
+ cur_strength))
+ return;
- for (; bssid_list; bssid_list = bssid_list->next) {
- struct g_connman_bssids *bssid = bssid_list->data;
+ unsigned char *cur_bssid = connman_network_get_bssid(network);
- if (memcmp(cur_bssid, bssid->bssid, WIFI_BSSID_LEN_MAX) == 0)
- continue;
+ for (; bssid_list; bssid_list = bssid_list->next) {
+ struct g_connman_bssids *bssid = bssid_list->data;
- if (check_bss_condition(
- bssid->frequency, bssid->strength, bssid->est_throughput,
- cur_freq, cur_strength, cur_est_throughput)) {
- roaming_ap_found = true;
+ if (memcmp(cur_bssid, bssid->bssid, WIFI_BSSID_LEN_MAX) == 0)
+ continue;
- char bssid_buff[WIFI_BSSID_STR_LEN] = {0,};
- char *bssid_str = bssid_buff;
+ if (check_bss_condition(
+ bssid->frequency, bssid->strength, bssid->est_throughput,
+ cur_freq, cur_strength, cur_est_throughput)) {
+ roaming_ap_found = true;
- snprintf(bssid_str, WIFI_BSSID_STR_LEN, MACSTR, MAC2STR(bssid->bssid));
- connman_network_set_string(network,
- "WiFi.RoamingDstBSSID", bssid_str);
- break;
- }
- }
-
- if (roaming_ap_found) {
char bssid_buff[WIFI_BSSID_STR_LEN] = {0,};
char *bssid_str = bssid_buff;
- unsigned char *bssid;
- bssid = connman_network_get_bssid(network);
- snprintf(bssid_str, WIFI_BSSID_STR_LEN, MACSTR, MAC2STR(bssid));
+ snprintf(bssid_str, WIFI_BSSID_STR_LEN, MACSTR, MAC2STR(bssid->bssid));
connman_network_set_string(network,
- "WiFi.RoamingCurBSSID", bssid_str);
-
- network_disconnect(network);
- wifi->pending_network = network;
- connman_network_set_bool(network, "WiFi.Roaming", true);
+ "WiFi.RoamingDstBSSID", bssid_str);
+ break;
}
}
-}
+ if (roaming_ap_found) {
+ char bssid_buff[WIFI_BSSID_STR_LEN] = {0,};
+ char *bssid_str = bssid_buff;
+ unsigned char *bssid;
+
+ bssid = connman_network_get_bssid(network);
+ snprintf(bssid_str, WIFI_BSSID_STR_LEN, MACSTR, MAC2STR(bssid));
+ connman_network_set_string(network,
+ "WiFi.RoamingCurBSSID", bssid_str);
+
+ network_disconnect(network);
+ wifi->pending_network = network;
+ connman_network_set_bool(network, "WiFi.Roaming", true);
+ }
+}
#endif
static void scan_callback(int result, GSupplicantInterface *interface,