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;
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;