This will be useful for the Manager API GetPeers() method and
PeersChanged() signal.
Note that State and IPv4 are provided, but as disconnected for the
first, and empty for the second.
---
src/connman.h | 2 ++
src/peer.c | 36 ++++++++++++++++++++++++++++++++++++
2 files changed, 38 insertions(+)
diff --git a/src/connman.h b/src/connman.h
index f671173..fef8872 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -776,6 +776,8 @@ void __connman_service_counter_unregister(const char
*counter);
int __connman_peer_init(void);
void __connman_peer_cleanup(void);
+void __connman_peer_list_struct(DBusMessageIter *array);
+
#include <connman/session.h>
typedef void (* service_iterate_cb) (struct connman_service *service,
diff --git a/src/peer.c b/src/peer.c
index 733ce0f..77a71f2 100644
--- a/src/peer.c
+++ b/src/peer.c
@@ -44,6 +44,37 @@ static void peer_free(gpointer data)
connman_peer_destroy(peer);
}
+static void append_properties(DBusMessageIter *iter, struct connman_peer *peer)
+{
+ const char *state = "disconnected";
+ DBusMessageIter dict;
+
+ connman_dbus_dict_open(iter, &dict);
+
+ connman_dbus_dict_append_basic(&dict, "State",
+ DBUS_TYPE_STRING, &state);
+ connman_dbus_dict_append_basic(&dict, "Name",
+ DBUS_TYPE_STRING, &peer->name);
+ connman_dbus_dict_append_dict(&dict, "IPv4", NULL, NULL);
+
+ connman_dbus_dict_close(iter, &dict);
+}
+
+static void append_peer_struct(gpointer key, gpointer value,
+ gpointer user_data)
+{
+ DBusMessageIter *array = user_data;
+ struct connman_peer *peer = value;
+ DBusMessageIter entry;
+
+ dbus_message_iter_open_container(array, DBUS_TYPE_STRUCT,
+ NULL, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_OBJECT_PATH,
+ &peer->path);
+ append_properties(&entry, peer);
+ dbus_message_iter_close_container(array, &entry);
+}
+
struct connman_peer *connman_peer_create(const char *identifier)
{
struct connman_peer *peer;
@@ -130,6 +161,11 @@ struct connman_peer *connman_peer_get(const char
*identifier)
return peer;
}
+void __connman_peer_list_struct(DBusMessageIter *array)
+{
+ g_hash_table_foreach(peers_table, append_peer_struct, array);
+}
+
int __connman_peer_init(void)
{
DBG("");
--
1.8.3.2
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman