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