From 27cc60987f997cc2ca310238cc127a4374f00ecb Mon Sep 17 00:00:00 2001 From: Tim Kourt Date: Thu, 6 Apr 2017 11:59:37 -0700 Subject: [PATCH] client: handle managed objects --- client/dbus-proxy.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/client/dbus-proxy.c b/client/dbus-proxy.c index 7fced957..5eace548 100644 --- a/client/dbus-proxy.c +++ b/client/dbus-proxy.c @@ -27,6 +27,7 @@ #include #include "dbus-proxy.h" +#include "display.h" #define IWD_SERVICE "net.connman.iwd" #define IWD_ROOT_PATH "/" @@ -36,6 +37,24 @@ static struct l_dbus *dbus; static struct l_queue *proxy_interfaces; static struct l_queue *proxy_interface_types; +static bool dbus_message_has_error(struct l_dbus_message *message) +{ + const char *name; + const char *text; + + if (l_dbus_message_get_error(message, &name, &text)) { + display_error(text); + return true; + } + + return false; +} + +static void proxy_interface_create(const char *path, + struct l_dbus_message_iter *interfaces) +{ +} + static void interfaces_added_callback(struct l_dbus_message *message, void *user_data) { @@ -49,6 +68,21 @@ static void interfaces_removed_callback(struct l_dbus_message *message, static void get_managed_objects_callback(struct l_dbus_message *message, void *user_data) { + struct l_dbus_message_iter objects; + struct l_dbus_message_iter object; + const char *path; + + if (dbus_message_has_error(message)) { + l_error("Failed to retrieve IWD dbus objects"); + + return; + } + + l_dbus_message_get_arguments(message, "a{oa{sa{sv}}}", &objects); + + while (l_dbus_message_iter_next_entry(&objects, &path, &object)) + proxy_interface_create(path, &object); + } static void service_appeared_callback(struct l_dbus *dbus, void *user_data)