[PATCHv3] Dbus: Created New event DeviceFoundProperties to provide peer properties of Discovered peers.
Dan Williams
dcbw at redhat.com
Thu Jun 23 10:08:35 PDT 2016
On Mon, 2016-06-20 at 10:18 +0530, Nishant Chaprana wrote:
> This event will be sending peer properties to applications for
> Discovered peers.
> Signature of this event will be "oa{sv}".
> This event is required because current event DeviceFound provides
> only peer object path.
> If there are many peers in range then there will be many DeviceFound
> event and
> for each DeviceFOund applicaions would be required to GetAll peer
> properties
> many time will be creating extra load over applicaiton as well as
> over wpa_supplicant.
> So it will be better to send peer properties in a event using which
> applications
> can extract found peer information.
LGTM now, thanks.
Dan
> The issue will not be over CTRL interface because P2P-DEVICE-FOUND
> event sends peer info in it.
> But over Dbus interface DeviceFound provides only peer object.
>
> Signed-off-by: Nishant Chaprana <n.chaprana at samsung.com>
> ---
> doc/dbus.doxygen | 13 +++++++++++++
> wpa_supplicant/dbus/dbus_new.c | 25 ++++++++++++++++++++-----
> 2 files changed, 33 insertions(+), 5 deletions(-)
>
> diff --git a/doc/dbus.doxygen b/doc/dbus.doxygen
> index 28ee371..b95b814 100644
> --- a/doc/dbus.doxygen
> +++ b/doc/dbus.doxygen
> @@ -1630,6 +1630,19 @@ Interface for performing P2P (Wi-Fi Peer-to-
> Peer) P2P Device operations.
> <li>
> <h3>DeviceFound ( o : path )</h3>
> </li>
> + <li>
> + <h3>DeviceFoundProperties ( o : path, a{sv} : properties )</h3>
> + <p>A new peer device has been found.</p>
> + <h4>Arguments</h4>
> + <dl>
> + <dt>o : path</dt>
> + <dd>A D-Bus path to an object representing the found peer
> device.</dd>
> + </dl>
> + <dl>
> + <dt>a{sv} : properties</dt>
> + <dd>A dictionary containing properties of found peer
> device.</dd>
> + </dl>
> + </li>
>
> <li>
> <h3>DeviceLost ( o : path )</h3>
> diff --git a/wpa_supplicant/dbus/dbus_new.c
> b/wpa_supplicant/dbus/dbus_new.c
> index 0263b2c..a60492d 100644
> --- a/wpa_supplicant/dbus/dbus_new.c
> +++ b/wpa_supplicant/dbus/dbus_new.c
> @@ -3352,6 +3352,13 @@ static const struct wpa_dbus_signal_desc
> wpas_dbus_interface_signals[] = {
> END_ARGS
> }
> },
> + { "DeviceFoundProperties", WPAS_DBUS_NEW_IFACE_P2PDEVICE,
> + {
> + { "path", "o", ARG_OUT },
> + { "properties", "a{sv}", ARG_OUT },
> + END_ARGS
> + }
> + },
> { "DeviceLost", WPAS_DBUS_NEW_IFACE_P2PDEVICE,
> {
> { "path", "o", ARG_OUT },
> @@ -3800,12 +3807,13 @@ static const struct wpa_dbus_signal_desc
> wpas_dbus_p2p_peer_signals[] = {
> * In case of peer objects, it would be emitted by either
> * the "interface object" or by "peer objects"
> * @sig_name: signal name - DeviceFound
> + * @properties: determines if add second argument with object
> properties
> *
> - * Notify listeners about event related with newly found p2p peer
> device
> + * Notify listeners about event related with p2p peer device
> */
> static void wpas_dbus_signal_peer(struct wpa_supplicant *wpa_s,
> const u8 *dev_addr, const char
> *interface,
> - const char *sig_name)
> + const char *sig_name, int
> properties)
> {
> struct wpas_dbus_priv *iface;
> DBusMessage *msg;
> @@ -3833,7 +3841,10 @@ static void wpas_dbus_signal_peer(struct
> wpa_supplicant *wpa_s,
> dbus_message_iter_init_append(msg, &iter);
> path = peer_obj_path;
> if (!dbus_message_iter_append_basic(&iter,
> DBUS_TYPE_OBJECT_PATH,
> - &path))
> + &path) ||
> + (properties && !wpa_dbus_get_object_properties(
> + iface, peer_obj_path,
> WPAS_DBUS_NEW_IFACE_P2P_PEER,
> + &iter)))
> wpa_printf(MSG_ERROR, "dbus: Failed to construct
> signal");
> else
> dbus_connection_send(iface->con, msg, NULL);
> @@ -3854,7 +3865,11 @@ void wpas_dbus_signal_peer_device_found(struct
> wpa_supplicant *wpa_s,
> {
> wpas_dbus_signal_peer(wpa_s, dev_addr,
> WPAS_DBUS_NEW_IFACE_P2PDEVICE,
> - "DeviceFound");
> + "DeviceFound", FALSE);
> +
> + wpas_dbus_signal_peer(wpa_s, dev_addr,
> + WPAS_DBUS_NEW_IFACE_P2PDEVICE,
> + "DeviceFoundProperties", TRUE);
> }
>
> /**
> @@ -3869,7 +3884,7 @@ void wpas_dbus_signal_peer_device_lost(struct
> wpa_supplicant *wpa_s,
> {
> wpas_dbus_signal_peer(wpa_s, dev_addr,
> WPAS_DBUS_NEW_IFACE_P2PDEVICE,
> - "DeviceLost");
> + "DeviceLost", FALSE);
> }
>
> /**
More information about the Hostap
mailing list