Message ID | 1440067295-8238-1-git-send-email-n.chaprana@samsung.com |
---|---|
State | Superseded |
Headers | show |
On 08/20/2015 12:41 PM, Nishant Chaprana wrote: > Signed-off-by: Nishant Chaprana <n.chaprana@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; > } > >
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* * 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; }
Signed-off-by: Nishant Chaprana <n.chaprana@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(-)