D-Bus: Add signal to notify WPS timeout event
authorSaurav Babu <saurav.babu@samsung.com>
Thu, 28 May 2015 03:53:06 +0000 (09:23 +0530)
committerJouni Malinen <j@w1.fi>
Sun, 27 Sep 2015 09:47:47 +0000 (12:47 +0300)
Signed-off-by: Saurav Babu <saurav.babu@samsung.com>
doc/dbus.doxygen
wpa_supplicant/dbus/dbus_new.c
wpa_supplicant/wps_supplicant.c

index 912bc7c..806289a 100644 (file)
@@ -919,7 +919,7 @@ Interface for performing WPS (Wi-Fi Simple Config) operations.
          "pbc-overlap".</dd>
          <dt>a{sv} : args</dt>
          <dd>
-           Event arguments. Empty for success and pbc-voerlap events, one entry ( "msg" : i ) for fail event and following entries for m2d event:
+           Event arguments. Empty for success and pbc-overlap events, error information ( "msg" : i, "config_error" : i, "error_indication" : i ) for fail event and following entries for m2d event:
            <table>
              <tr><th>config_methods</th><th>Value type</th>
              <tr><td>manufacturer</td><td>q</td>
index f594959..9e7de03 100644 (file)
@@ -633,6 +633,10 @@ void wpas_dbus_signal_wps_event_fail(struct wpa_supplicant *wpa_s,
        if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &key) ||
            !wpa_dbus_dict_open_write(&iter, &dict_iter) ||
            !wpa_dbus_dict_append_int32(&dict_iter, "msg", fail->msg) ||
+           !wpa_dbus_dict_append_int32(&dict_iter, "config_error",
+                                       fail->config_error) ||
+           !wpa_dbus_dict_append_int32(&dict_iter, "error_indication",
+                                       fail->error_indication) ||
            !wpa_dbus_dict_close_write(&iter, &dict_iter))
                wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
        else
index 2db7914..e612ca3 100644 (file)
@@ -955,8 +955,20 @@ static void wpas_clear_wps(struct wpa_supplicant *wpa_s)
 static void wpas_wps_timeout(void *eloop_ctx, void *timeout_ctx)
 {
        struct wpa_supplicant *wpa_s = eloop_ctx;
+       union wps_event_data data;
+
        wpa_msg(wpa_s, MSG_INFO, WPS_EVENT_TIMEOUT "Requested operation timed "
                "out");
+       os_memset(&data, 0, sizeof(data));
+       data.fail.config_error = WPS_CFG_MSG_TIMEOUT;
+       data.fail.error_indication = WPS_EI_NO_ERROR;
+       /*
+        * Call wpas_notify_wps_event_fail() directly instead of through
+        * wpa_supplicant_wps_event() which would end up registering unnecessary
+        * timeouts (those are only for the case where the failure happens
+        * during an EAP-WSC exchange).
+        */
+       wpas_notify_wps_event_fail(wpa_s, &data.fail);
        wpas_clear_wps(wpa_s);
 }