P2P: Add D-Bus signal GroupFormationFailure
[mech_eap.git] / wpa_supplicant / notify.c
index c60d404..4ece411 100644 (file)
@@ -17,6 +17,7 @@
 #include "dbus/dbus_old.h"
 #include "dbus/dbus_new.h"
 #include "rsn_supp/wpa.h"
+#include "fst/fst.h"
 #include "driver_i.h"
 #include "scan.h"
 #include "p2p_supplicant.h"
@@ -88,6 +89,16 @@ void wpas_notify_state_changed(struct wpa_supplicant *wpa_s,
        /* notify the new DBus API */
        wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_STATE);
 
+#ifdef CONFIG_FST
+       if (wpa_s->fst && !is_zero_ether_addr(wpa_s->bssid)) {
+               if (new_state == WPA_COMPLETED)
+                       fst_notify_peer_connected(wpa_s->fst, wpa_s->bssid);
+               else if (old_state >= WPA_ASSOCIATED &&
+                        new_state < WPA_ASSOCIATED)
+                       fst_notify_peer_disconnected(wpa_s->fst, wpa_s->bssid);
+       }
+#endif /* CONFIG_FST */
+
        if (new_state == WPA_COMPLETED)
                wpas_p2p_notif_connected(wpa_s);
        else if (old_state >= WPA_ASSOCIATED && new_state < WPA_ASSOCIATED)
@@ -646,6 +657,14 @@ void wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s,
 }
 
 
+void wpas_notify_p2p_group_formation_failure(struct wpa_supplicant *wpa_s,
+                                            const char *reason)
+{
+       /* Notify a group formation failed */
+       wpas_dbus_signal_p2p_group_formation_failure(wpa_s, reason);
+}
+
+
 void wpas_notify_p2p_wps_failed(struct wpa_supplicant *wpa_s,
                                struct wps_event_fail *fail)
 {
@@ -790,10 +809,12 @@ void wpas_notify_network_type_changed(struct wpa_supplicant *wpa_s,
                ssid->disabled = 0;
                wpas_dbus_unregister_network(wpa_s, ssid->id);
                ssid->disabled = 2;
+               ssid->p2p_persistent_group = 1;
                wpas_dbus_register_persistent_group(wpa_s, ssid);
        } else {
                /* Changed from persistent group to normal network profile */
                wpas_dbus_unregister_persistent_group(wpa_s, ssid->id);
+               ssid->p2p_persistent_group = 0;
                wpas_dbus_register_network(wpa_s, ssid);
        }
 #endif /* CONFIG_P2P */