Merge "Sorting netlink scan result by signal strength" into tizen accepted/tizen/unified/20200609.153656 submit/tizen/20200608.073147
authorcheoleun moon <chleun.moon@samsung.com>
Mon, 8 Jun 2020 07:31:20 +0000 (07:31 +0000)
committerGerrit Code Review <gerrit@review>
Mon, 8 Jun 2020 07:31:20 +0000 (07:31 +0000)
src/wifi-netlink-scan.c

index d74ab84..856de47 100755 (executable)
 
 static GSList *bss_info_list = NULL;
 
+static gint __netconfig_compare_bss_by_rssi(gconstpointer a, gconstpointer b)
+{
+       struct bss_scan_info_t *entry_a = (struct bss_scan_info_t *) a;
+       struct bss_scan_info_t *entry_b = (struct bss_scan_info_t *) b;
+
+       if (entry_a->signal > entry_b->signal)
+               return -1;
+
+       if (entry_a->signal < entry_b->signal)
+               return 1;
+
+       return 0;
+}
+
 void __netconfig_notify_netlink_scan_done(void)
 {
        GVariantBuilder *builder = NULL;
@@ -48,6 +62,8 @@ void __netconfig_notify_netlink_scan_done(void)
        const char *prop_sec = "security";
        const char *prop_enc = "encryption";
 
+       bss_info_list = g_slist_sort(bss_info_list, __netconfig_compare_bss_by_rssi);
+
        builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
        for (list = bss_info_list; list != NULL; list = list->next) {
                struct bss_scan_info_t *bss_info = (struct bss_scan_info_t *)list->data;