From 0ca8d32384264dd7f09c6608dbfca9387a9e8421 Mon Sep 17 00:00:00 2001 From: Tim Kourt Date: Thu, 23 Mar 2017 16:32:09 -0700 Subject: [PATCH] client: Subscribe for the dbus events --- client/dbus-proxy.c | 82 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/client/dbus-proxy.c b/client/dbus-proxy.c index 1dcaa805..7fced957 100644 --- a/client/dbus-proxy.c +++ b/client/dbus-proxy.c @@ -28,12 +28,94 @@ #include "dbus-proxy.h" +#define IWD_SERVICE "net.connman.iwd" +#define IWD_ROOT_PATH "/" + +static struct l_dbus *dbus; + +static struct l_queue *proxy_interfaces; +static struct l_queue *proxy_interface_types; + +static void interfaces_added_callback(struct l_dbus_message *message, + void *user_data) +{ +} + +static void interfaces_removed_callback(struct l_dbus_message *message, + void *user_data) +{ +} + +static void get_managed_objects_callback(struct l_dbus_message *message, + void *user_data) +{ +} + +static void service_appeared_callback(struct l_dbus *dbus, void *user_data) +{ + l_dbus_add_signal_watch(dbus, IWD_SERVICE, IWD_ROOT_PATH, + L_DBUS_INTERFACE_OBJECT_MANAGER, + "InterfacesAdded", L_DBUS_MATCH_NONE, + interfaces_added_callback, NULL); + + l_dbus_add_signal_watch(dbus, IWD_SERVICE, IWD_ROOT_PATH, + L_DBUS_INTERFACE_OBJECT_MANAGER, + "InterfacesRemoved", L_DBUS_MATCH_NONE, + interfaces_removed_callback, NULL); + + l_dbus_method_call(dbus, IWD_SERVICE, IWD_ROOT_PATH, + L_DBUS_INTERFACE_OBJECT_MANAGER, + "GetManagedObjects", NULL, + get_managed_objects_callback, + NULL, NULL); +} + +static void service_disappeared_callback(struct l_dbus *dbus, + void *user_data) +{ +} + +static void dbus_disconnect_callback(void *user_data) +{ + l_main_quit(); +} + +static void proxy_interface_destroy(void *data) +{ +} + bool dbus_proxy_init(void) { + if (dbus) + return true; + + dbus = l_dbus_new_default(L_DBUS_SYSTEM_BUS); + if (!dbus) + return false; + + proxy_interface_types = l_queue_new(); + proxy_interfaces = l_queue_new(); + + l_dbus_set_disconnect_handler(dbus, dbus_disconnect_callback, NULL, + NULL); + + l_dbus_add_service_watch(dbus, IWD_SERVICE, service_appeared_callback, + service_disappeared_callback, + NULL, NULL); + return true; } bool dbus_proxy_exit(void) { + l_queue_destroy(proxy_interface_types, NULL); + proxy_interface_types = NULL; + + l_queue_destroy(proxy_interfaces, proxy_interface_destroy); + proxy_interfaces = NULL; + + l_dbus_destroy(dbus); + dbus = NULL; + return true; }