This will be necessary for connecting or disconnecting a peer.
---
 include/peer.h |  8 ++++++++
 src/peer.c     | 20 ++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/include/peer.h b/include/peer.h
index 0304438..5c1d1ec 100644
--- a/include/peer.h
+++ b/include/peer.h
@@ -43,6 +43,14 @@ void connman_peer_unregister(struct connman_peer *peer);
 struct connman_peer *connman_peer_get(struct connman_device *device,
                                                const char *identifier);
 
+struct connman_peer_driver {
+       int (*connect) (struct connman_peer *peer);
+       int (*disconnect) (struct connman_peer *peer);
+};
+
+int connman_peer_driver_register(struct connman_peer_driver *driver);
+void connman_peer_driver_unregister(struct connman_peer_driver *driver);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/peer.c b/src/peer.c
index f531a70..a8a459a 100644
--- a/src/peer.c
+++ b/src/peer.c
@@ -32,6 +32,8 @@ static DBusConnection *connection = NULL;
 
 static GHashTable *peers_table = NULL;
 
+static struct connman_peer_driver *peer_driver;
+
 struct connman_peer {
        struct connman_device *device;
        char *identifier;
@@ -324,6 +326,24 @@ struct connman_peer *connman_peer_get(struct 
connman_device *device,
        return peer;
 }
 
+int connman_peer_driver_register(struct connman_peer_driver *driver)
+{
+       if (peer_driver && peer_driver != driver)
+               return -EINVAL;
+
+       peer_driver = driver;
+
+       return 0;
+}
+
+void connman_peer_driver_unregister(struct connman_peer_driver *driver)
+{
+       if (peer_driver != driver)
+               return;
+
+       peer_driver = NULL;
+}
+
 void __connman_peer_list_struct(DBusMessageIter *array)
 {
        g_hash_table_foreach(peers_table, append_peer_struct, array);
-- 
1.8.5.5

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

Reply via email to