gsupplicant: Implement network properties changes notification
authorSamuel Ortiz <sameo@linux.intel.com>
Thu, 8 Sep 2011 06:00:49 +0000 (08:00 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 12 Sep 2011 10:06:01 +0000 (12:06 +0200)
This is only used for propagatong signal changes for now.

gsupplicant/gsupplicant.h
gsupplicant/supplicant.c

index 5c453aa..c39d596 100644 (file)
@@ -208,6 +208,8 @@ struct _GSupplicantCallbacks {
        void (*scan_finished) (GSupplicantInterface *interface);
        void (*network_added) (GSupplicantNetwork *network);
        void (*network_removed) (GSupplicantNetwork *network);
+       void (*network_changed) (GSupplicantNetwork *network,
+                                       const char *property);
        void (*debug) (const char *str);
 };
 
index 55e0abe..30bdd81 100644 (file)
@@ -408,6 +408,18 @@ static void callback_network_removed(GSupplicantNetwork *network)
        callbacks_pointer->network_removed(network);
 }
 
+static void callback_network_changed(GSupplicantNetwork *network,
+                                       const char *property)
+{
+       if (callbacks_pointer == NULL)
+               return;
+
+       if (callbacks_pointer->network_changed == NULL)
+               return;
+
+       callbacks_pointer->network_changed(network, property);
+}
+
 static void remove_interface(gpointer data)
 {
        GSupplicantInterface *interface = data;
@@ -1028,6 +1040,7 @@ done:
        if (bss->signal > network->signal) {
                network->signal = bss->signal;
                network->best_bss = bss;
+               callback_network_changed(network, "Signal");
        }
 
        g_hash_table_replace(interface->bss_mapping, bss->path, network);
@@ -1896,6 +1909,8 @@ static void signal_bss_changed(const char *path, DBusMessageIter *iter)
        }
 
        SUPPLICANT_DBG("New network signal for %s %d dBm", network->ssid, network->signal);
+
+       callback_network_changed(network, "Signal");
 }
 
 static void wps_credentials(const char *key, DBusMessageIter *iter,