Wifi plugin will need to find the peer to check whether it supports WPS
PBC or PIN method while connectin, and action upon it.
---
 gsupplicant/gsupplicant.h |  2 ++
 gsupplicant/supplicant.c  | 45 +++++++++++++++++++++++++++------------------
 2 files changed, 29 insertions(+), 18 deletions(-)

diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h
index ff56001..a6b2db7 100644
--- a/gsupplicant/gsupplicant.h
+++ b/gsupplicant/gsupplicant.h
@@ -265,6 +265,8 @@ int g_supplicant_interface_set_country(GSupplicantInterface 
*interface,
 bool g_supplicant_interface_has_p2p(GSupplicantInterface *interface);
 int g_supplicant_interface_set_p2p_device_config(GSupplicantInterface 
*interface,
                                                const char *device_name);
+GSupplicantPeer *g_supplicant_interface_peer_lookup(GSupplicantInterface 
*interface,
+                                               const char *identifier);
 
 /* Network and Peer API */
 struct _GSupplicantNetwork;
diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index 7fd9dcd..cfb6754 100644
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -3171,6 +3171,29 @@ int 
g_supplicant_interface_set_p2p_device_config(GSupplicantInterface *interface
        return ret;
 }
 
+static gboolean peer_lookup_by_identifier(gpointer key, gpointer value,
+                                                       gpointer user_data)
+{
+       const GSupplicantPeer *peer = value;
+       const char *identifier = user_data;
+
+       if (!g_strcmp0(identifier, peer->identifier))
+               return TRUE;
+
+       return FALSE;
+}
+
+GSupplicantPeer *g_supplicant_interface_peer_lookup(GSupplicantInterface 
*interface,
+                                                       const char *identifier)
+{
+       GSupplicantPeer *peer;
+
+       peer = g_hash_table_find(interface->peer_table,
+                                       peer_lookup_by_identifier,
+                                       (void *) identifier);
+       return peer;
+}
+
 struct interface_data {
        GSupplicantInterface *interface;
        char *path; /* Interface path cannot be taken from interface (above) as
@@ -4685,18 +4708,6 @@ static void interface_p2p_connect_params(DBusMessageIter 
*iter, void *user_data)
        supplicant_dbus_dict_close(iter, &dict);
 }
 
-static gboolean peer_lookup_by_identifier(gpointer key, gpointer value,
-                                                       gpointer user_data)
-{
-       const GSupplicantPeer *peer = value;
-       const char *identifier = user_data;
-
-       if (!g_strcmp0(identifier, peer->identifier))
-               return TRUE;
-
-       return FALSE;
-}
-
 int g_supplicant_interface_p2p_connect(GSupplicantInterface *interface,
                                        GSupplicantPeerParams *peer_params,
                                        GSupplicantInterfaceCallback callback,
@@ -4713,9 +4724,8 @@ int 
g_supplicant_interface_p2p_connect(GSupplicantInterface *interface,
        if (!peer_params->path) {
                GSupplicantPeer *peer;
 
-               peer = g_hash_table_find(interface->peer_table,
-                                       peer_lookup_by_identifier,
-                                       (void *) peer_params->identifier);
+               peer = g_supplicant_interface_peer_lookup(interface,
+                                               peer_params->identifier);
                if (!peer)
                        return -ENODEV;
 
@@ -4754,9 +4764,8 @@ int 
g_supplicant_interface_p2p_disconnect(GSupplicantInterface *interface,
        if (!interface->p2p_support)
                return -ENOTSUP;
 
-       peer = g_hash_table_find(interface->peer_table,
-                                       peer_lookup_by_identifier,
-                                       (void *) peer_params->identifier);
+       peer = g_supplicant_interface_peer_lookup(interface,
+                                               peer_params->identifier);
        if (!peer)
                return -ENODEV;
 
-- 
1.8.5.5

_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to