This will let the interface being discoverable and replying to P2P
frames. It will be useful once we have, at least, one p2p service to
advertize about without the will to be a standalone GO.
---
 gsupplicant/gsupplicant.h |  3 +++
 gsupplicant/supplicant.c  | 38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h
index 9a619b8..e820381 100644
--- a/gsupplicant/gsupplicant.h
+++ b/gsupplicant/gsupplicant.h
@@ -240,6 +240,9 @@ int g_supplicant_interface_p2p_connect(GSupplicantInterface 
*interface,
 int g_supplicant_interface_p2p_disconnect(GSupplicantInterface *interface,
                                        GSupplicantPeerParams *peer_params);
 
+int g_supplicant_interface_p2p_listen(GSupplicantInterface *interface,
+                                               int period, int interval);
+
 int g_supplicant_interface_p2p_add_service(GSupplicantInterface *interface,
                                GSupplicantInterfaceCallback callback,
                                GSupplicantP2PServiceParams *p2p_service_params,
diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index b35ea5f..4f8ebce 100644
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -4950,6 +4950,44 @@ int 
g_supplicant_interface_p2p_del_service(GSupplicantInterface *interface,
        return -EINPROGRESS;
 }
 
+struct p2p_listen_data {
+       int period;
+       int interval;
+};
+
+static void interface_p2p_listen_params(DBusMessageIter *iter, void *user_data)
+{
+       struct p2p_listen_data *params = user_data;
+       DBusMessageIter dict;
+
+       supplicant_dbus_dict_open(iter, &dict);
+
+       supplicant_dbus_dict_append_basic(&dict, "period",
+                                       DBUS_TYPE_INT32, &params->period);
+       supplicant_dbus_dict_append_basic(&dict, "interval",
+                                       DBUS_TYPE_INT32, &params->interval);
+       supplicant_dbus_dict_close(iter, &dict);
+}
+
+int g_supplicant_interface_p2p_listen(GSupplicantInterface *interface,
+                                               int period, int interval)
+{
+       struct p2p_listen_data params;
+
+       SUPPLICANT_DBG("");
+
+       if (!interface->p2p_support)
+               return -ENOTSUP;
+
+       params.period = period;
+       params.interval = interval;
+
+       return supplicant_dbus_method_call(interface->path,
+                       SUPPLICANT_INTERFACE ".Interface.P2PDevice",
+                       "ExtendedListen", interface_p2p_listen_params,
+                       NULL, &params, NULL);
+}
+
 static const char *g_supplicant_rule0 = "type=signal,"
                                        "path=" DBUS_PATH_DBUS ","
                                        "sender=" DBUS_SERVICE_DBUS ","
-- 
1.8.5.5

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to