From 84765ac4db89173181e136043e31c0f0171f43fd Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Mon, 3 Nov 2014 15:37:08 -0600 Subject: [PATCH] wiphy: Add GetNetworks method --- src/wiphy.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/wiphy.c b/src/wiphy.c index 8834d69e..2b8b1451 100644 --- a/src/wiphy.c +++ b/src/wiphy.c @@ -389,6 +389,40 @@ static struct l_dbus_message *device_scan(struct l_dbus *dbus, return NULL; } +static void append_network_properties(const void *key, void *value, + void *user_data) +{ + struct network *network = value; + struct l_dbus_message_builder *builder = user_data; + + l_dbus_message_builder_enter_dict(builder, "oa{sv}"); + l_dbus_message_builder_append_basic(builder, 'o', + iwd_network_get_path(network)); + __iwd_network_append_properties(network, builder); + l_dbus_message_builder_leave_dict(builder); +} + +static struct l_dbus_message *device_get_networks(struct l_dbus *dbus, + struct l_dbus_message *message, + void *user_data) +{ + struct netdev *netdev = user_data; + struct l_dbus_message *reply; + struct l_dbus_message_builder *builder; + + reply = l_dbus_message_new_method_return(message); + builder = l_dbus_message_builder_new(reply); + + l_dbus_message_builder_enter_array(builder, "{oa{sv}}"); + l_hashmap_foreach(netdev->networks, append_network_properties, builder); + l_dbus_message_builder_leave_array(builder); + + l_dbus_message_builder_finalize(builder); + l_dbus_message_builder_destroy(builder); + + return reply; +} + static void setup_device_interface(struct l_dbus_interface *interface) { l_dbus_interface_method(interface, "GetProperties", 0, @@ -399,6 +433,9 @@ static void setup_device_interface(struct l_dbus_interface *interface) "", "sv", "name", "value"); l_dbus_interface_method(interface, "Scan", 0, device_scan, "", ""); + l_dbus_interface_method(interface, "GetNetworks", 0, + device_get_networks, + "a{oa{sv}}", "", "networks"); l_dbus_interface_signal(interface, "PropertyChanged", 0, "sv", "name", "value");