Add support for ConnectedTechnologies property
[platform/upstream/connman.git] / src / manager.c
index 999c7ad..580fe52 100644 (file)
@@ -125,15 +125,58 @@ static void append_connections(DBusMessageIter *dict)
        dbus_message_iter_close_container(dict, &entry);
 }
 
-static void append_technologies(gboolean powered, DBusMessageIter *dict)
+static void append_available_technologies(DBusMessageIter *dict)
 {
        DBusMessageIter entry, value, iter;
-       const char *key;
+       const char *key = "AvailableTechnologies";
 
-       if (powered)
-               key = "EnabledTechnologies";
-       else
-               key = "AvailableTechnologies";
+       dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
+                                                               NULL, &entry);
+
+       dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
+
+       dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT,
+                       DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_STRING_AS_STRING,
+                                                               &value);
+
+       dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
+                                       DBUS_TYPE_STRING_AS_STRING, &iter);
+       __connman_notifier_list_registered(&iter);
+       dbus_message_iter_close_container(&value, &iter);
+
+       dbus_message_iter_close_container(&entry, &value);
+
+       dbus_message_iter_close_container(dict, &entry);
+}
+
+static void append_enabled_technologies(DBusMessageIter *dict)
+{
+       DBusMessageIter entry, value, iter;
+       const char *key = "EnabledTechnologies";
+
+       dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
+                                                               NULL, &entry);
+
+       dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
+
+       dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT,
+                       DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_STRING_AS_STRING,
+                                                               &value);
+
+       dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
+                                       DBUS_TYPE_STRING_AS_STRING, &iter);
+       __connman_notifier_list_enabled(&iter);
+       dbus_message_iter_close_container(&value, &iter);
+
+       dbus_message_iter_close_container(&entry, &value);
+
+       dbus_message_iter_close_container(dict, &entry);
+}
+
+static void append_connected_technologies(DBusMessageIter *dict)
+{
+       DBusMessageIter entry, value, iter;
+       const char *key = "ConnectedTechnologies";
 
        dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
                                                                NULL, &entry);
@@ -146,7 +189,7 @@ static void append_technologies(gboolean powered, DBusMessageIter *dict)
 
        dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
                                        DBUS_TYPE_STRING_AS_STRING, &iter);
-       __connman_notifier_list(powered, &iter);
+       __connman_notifier_list_connected(&iter);
        dbus_message_iter_close_container(&value, &iter);
 
        dbus_message_iter_close_container(&entry, &value);
@@ -200,8 +243,9 @@ static DBusMessage *get_properties(DBusConnection *conn,
        connman_dbus_dict_append_variant(&dict, "OfflineMode",
                                DBUS_TYPE_BOOLEAN, &global_offlinemode);
 
-       append_technologies(FALSE, &dict);
-       append_technologies(TRUE, &dict);
+       append_available_technologies(&dict);
+       append_enabled_technologies(&dict);
+       append_connected_technologies(&dict);
 
        dbus_message_iter_close_container(&array, &dict);