[PATCH] P2P: Add D-Bus GroupFormationFailure to notify P2P-GROUP-FORMATION-FAILURE
Arend van Spriel
arend
Thu Aug 20 03:49:23 PDT 2015
On 08/20/2015 12:41 PM, Nishant Chaprana wrote:
> Signed-off-by: Nishant Chaprana <n.chaprana at samsung.com>
> ---
> wpa_supplicant/dbus/dbus_new.c | 42 ++++++++++++++++++++++++++++++++++++++++-
> wpa_supplicant/dbus/dbus_new.h | 2 ++
> wpa_supplicant/notify.c | 8 ++++++++
> wpa_supplicant/notify.h | 2 ++
> wpa_supplicant/p2p_supplicant.c | 3 +++
> 5 files changed, 56 insertions(+), 1 deletion(-)
>
> diff --git a/wpa_supplicant/dbus/dbus_new.c b/wpa_supplicant/dbus/dbus_new.c
> index 1959ea7..b746eb4 100644
> --- a/wpa_supplicant/dbus/dbus_new.c
> +++ b/wpa_supplicant/dbus/dbus_new.c
> @@ -600,7 +600,7 @@ void wpas_dbus_signal_wps_event_success(struct wpa_supplicant *wpa_s)
> }
>
>
> -/**
> +/*reason*
What is this strange comment style?
Regards,
Arend
> * wpas_dbus_signal_wps_event_fail - Signals Fail WPS event
> * @wpa_s: %wpa_supplicant network interface data
> * @fail: WPS failure information
> @@ -1857,6 +1857,40 @@ void wpas_dbus_signal_p2p_wps_failed(struct wpa_supplicant *wpa_s,
> dbus_message_unref(msg);
> }
>
> +/**
> + * wpas_dbus_signal_p2p_group_formation_failure - Signals GroupFormationFailure event
> + * @wpa_s: %wpa_supplicant network interface data
> + * @reason: indicates the reason code for group formation failure
> + *
> + * Sends Event dbus signal and string reason code when available
> + */
> +void wpas_dbus_signal_p2p_group_formation_failure(struct wpa_supplicant *wpa_s,
> + const char* reason)
> +{
> + DBusMessage *msg;
> + struct wpas_dbus_priv *iface;
> +
> + iface = wpa_s->global->dbus;
> +
> + /* Do nothing if the control interface is not turned on */
> + if (iface == NULL)
> + return;
> +
> + msg = dbus_message_new_signal(wpa_s->dbus_new_path,
> + WPAS_DBUS_NEW_IFACE_P2PDEVICE,
> + "GroupFormationFailure");
> + if (msg == NULL)
> + return;
> +
> + if (dbus_message_append_args(msg, DBUS_TYPE_STRING, &reason,
> + DBUS_TYPE_INVALID))
> + dbus_connection_send(iface->con, msg, NULL);
> + else
> + wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
> +
> + dbus_message_unref(msg);
> +}
> +
> #endif /* CONFIG_P2P */
>
>
> @@ -3172,6 +3206,12 @@ static const struct wpa_dbus_signal_desc wpas_dbus_interface_signals[] = {
> END_ARGS
> }
> },
> + { "GroupFormationFailure", WPAS_DBUS_NEW_IFACE_P2PDEVICE,
> + {
> + { "reason", "s", ARG_OUT },
> + END_ARGS
> + }
> + },
> { "GONegotiationSuccess", WPAS_DBUS_NEW_IFACE_P2PDEVICE,
> {
> { "properties", "a{sv}", ARG_OUT },
> diff --git a/wpa_supplicant/dbus/dbus_new.h b/wpa_supplicant/dbus/dbus_new.h
> index 7503348..8516495 100644
> --- a/wpa_supplicant/dbus/dbus_new.h
> +++ b/wpa_supplicant/dbus/dbus_new.h
> @@ -191,6 +191,8 @@ void wpas_dbus_signal_p2p_go_neg_req(struct wpa_supplicant *wpa_s,
> void wpas_dbus_signal_p2p_group_started(struct wpa_supplicant *wpa_s,
> const struct wpa_ssid *ssid,
> int client, int network_id);
> +void wpas_dbus_signal_p2p_group_formation_failure(struct wpa_supplicant *wpa_s,
> + const char *reason);
> void wpas_dbus_register_p2p_group(struct wpa_supplicant *wpa_s,
> struct wpa_ssid *ssid);
> void wpas_dbus_signal_p2p_go_neg_resp(struct wpa_supplicant *wpa_s,
> diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
> index aa8c214..4ece411 100644
> --- a/wpa_supplicant/notify.c
> +++ b/wpa_supplicant/notify.c
> @@ -657,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)
> {
> diff --git a/wpa_supplicant/notify.h b/wpa_supplicant/notify.h
> index 1aeec47..6860671 100644
> --- a/wpa_supplicant/notify.h
> +++ b/wpa_supplicant/notify.h
> @@ -114,6 +114,8 @@ void wpas_notify_p2p_provision_discovery(struct wpa_supplicant *wpa_s,
> void wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s,
> struct wpa_ssid *ssid, int network_id,
> int client);
> +void wpas_notify_p2p_group_formation_failure(struct wpa_supplicant *wpa_s,
> + const char *reason);
> void wpas_notify_persistent_group_added(struct wpa_supplicant *wpa_s,
> struct wpa_ssid *ssid);
> void wpas_notify_persistent_group_removed(struct wpa_supplicant *wpa_s,
> diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
> index 3fa2c43..6b49957 100644
> --- a/wpa_supplicant/p2p_supplicant.c
> +++ b/wpa_supplicant/p2p_supplicant.c
> @@ -1286,6 +1286,7 @@ static void wpas_group_formation_completed(struct wpa_supplicant *wpa_s,
> if (!success) {
> wpa_msg_global(wpa_s->parent, MSG_INFO,
> P2P_EVENT_GROUP_FORMATION_FAILURE);
> + wpas_notify_p2p_group_formation_failure(wpa_s, "");
> if (already_deleted)
> return;
> wpas_p2p_group_delete(wpa_s,
> @@ -4407,6 +4408,7 @@ static void wpas_p2p_check_join_scan_limit(struct wpa_supplicant *wpa_s)
> }
> wpa_msg_global(wpa_s->parent, MSG_INFO,
> P2P_EVENT_GROUP_FORMATION_FAILURE);
> + wpas_notify_p2p_group_formation_failure(wpa_s, "");
> }
> }
>
> @@ -4632,6 +4634,7 @@ static void wpas_p2p_scan_res_join(struct wpa_supplicant *wpa_s,
> wpa_msg_global(wpa_s->parent, MSG_INFO,
> P2P_EVENT_GROUP_FORMATION_FAILURE
> "reason=FREQ_CONFLICT");
> + wpas_notify_p2p_group_formation_failure(wpa_s, "FREQ_CONFLICT");
> return;
> }
>
>
More information about the Hostap
mailing list