DA: Modify INS score source code 28/283628/1
authorJaehyun Kim <jeik01.kim@samsung.com>
Mon, 31 Oct 2022 13:03:14 +0000 (22:03 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Mon, 31 Oct 2022 13:03:14 +0000 (22:03 +0900)
1. Modify wrong INS source code & add debug log
2. If INS score is same, align according to the signal strength.

Change-Id: I7dc469ab13c5dbf6bbae020ba711e5f15acd1fb4
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
gsupplicant/supplicant.c
src/service.c

index 2538333..1cecf6c 100755 (executable)
@@ -2232,6 +2232,13 @@ static gint cmp_bss(gconstpointer a, gconstpointer b)
        if (entry_a->ins_score < entry_b->ins_score)
                return 1;
 
+       if (entry_a->ins_score == entry_b->ins_score) {
+               if (entry_a->strength >= entry_b->strength)
+                       return -1;
+               else
+                       return 1;
+       }
+
        return 0;
 }
 
@@ -2240,11 +2247,16 @@ static void print_bssid_sort(gpointer data, gpointer user_data)
 {
        struct g_connman_bssids *bssids = data;
 
-       SUPPLICANT_DBG("bssid[" MACSTR "] total[%2d] freq[%2d] "
-                       "last_conn[%2d] assoc_reject[%2d] strength[%2d]",
-                       MAC2STR(bssids->bssid), bssids->ins_score,
+       GSupplicantNetwork *network = (GSupplicantNetwork *) user_data;
+
+       if (!bssids || !network)
+               return;
+
+       SUPPLICANT_DBG("ssid [%-20s] bssid[" MACSTR "] total[%2d] freq[%2d] "
+                       "last_conn[%2d] assoc_reject[%2d] strength[%2d] rssi[%2d]",
+                       network->ssid, MAC2STR(bssids->bssid), bssids->ins_score,
                        bssids->score_frequency, bssids->score_last_connected_bssid,
-                       bssids->score_assoc_reject, bssids->score_strength);
+                       bssids->score_assoc_reject, bssids->score_strength, bssids->strength - 120);
 }
 #endif
 
@@ -2263,7 +2275,7 @@ void *g_supplicant_network_get_bssid_list(GSupplicantNetwork *network)
        g_hash_table_foreach(network->bss_table, update_bssid_list, &bssid_data);
        bssid_data.bssid_list = g_slist_sort(bssid_data.bssid_list, cmp_bss);
 #if defined TIZEN_EXT_INS
-       g_slist_foreach(bssid_data.bssid_list, print_bssid_sort, NULL);
+       g_slist_foreach(bssid_data.bssid_list, print_bssid_sort, (gpointer)network);
 #endif
 
        return bssid_data.bssid_list;
index 6a6da36..ef86e27 100755 (executable)
@@ -8100,14 +8100,16 @@ static int calculate_score_last_connected(struct connman_service *service)
        frequency = connman_network_get_frequency(service->network);
 
        if (ins_settings.last_connected) {
-               if (g_strcmp0(last_connected_ident, service->identifier) == 0 &&
-                               (((frequency >= FREQ_RANGE_24GHZ_CHANNEL_1 &&
-                               frequency <= FREQ_RANGE_24GHZ_CHANNEL_14) &&
-                               service->strength >= ins_settings.signal_level3_24ghz) ||
-                               ((frequency >= FREQ_RANGE_5GHZ_CHANNEL_32 &&
-                               frequency <= FREQ_RANGE_5GHZ_CHANNEL_165) &&
-                               service->strength >= ins_settings.signal_level3_5ghz))) {
-                       score += ins_settings.last_connected_score;
+               if (ins_settings.last_connected) {
+                       if (g_strcmp0(last_connected_ident, service->identifier) == 0 &&
+                                       (((frequency >= FREQ_RANGE_24GHZ_CHANNEL_1 &&
+                                       frequency <= FREQ_RANGE_24GHZ_CHANNEL_14) &&
+                                       service->strength >= ins_settings.signal_level3_24ghz) ||
+                                       ((frequency >= FREQ_RANGE_5GHZ_CHANNEL_32 &&
+                                       frequency <= FREQ_RANGE_5GHZ_CHANNEL_165) &&
+                                       service->strength >= ins_settings.signal_level3_5ghz))) {
+                               score += ins_settings.last_connected_score;
+                       }
                }
        }
 
@@ -8257,6 +8259,7 @@ static gint service_compare(gconstpointer a, gconstpointer b)
 #if defined TIZEN_EXT && defined TIZEN_EXT_INS
        int score_a;
        int score_b;
+       gint strength = 0;
 #else /* defined TIZEN_EXT && defined TIZEN_EXT_INS */
        gint strength;
 #endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */
@@ -8383,6 +8386,11 @@ static gint service_compare(gconstpointer a, gconstpointer b)
        score_b = calculate_score(service_b);
        if (score_b != score_a)
                return score_b - score_a;
+       else if (score_b == score_a) {
+               strength = (gint) service_b->strength - (gint) service_a->strength;
+               if (strength)
+                       return strength;
+       }
 #else /* defined TIZEN_EXT && defined TIZEN_EXT_INS */
        strength = (gint) service_b->strength - (gint) service_a->strength;
        if (strength)