dundee: Watch for signals only on DUNDEE_SERVICE
[framework/connectivity/connman.git] / unit / manager-api.c
index 5b6c676..40ad370 100644 (file)
@@ -96,6 +96,38 @@ DBusMessage *manager_get_services(DBusConnection *connection)
        return reply;
 }
 
+DBusMessage *manager_get_properties(DBusConnection *connection)
+{
+       DBusMessage *message, *reply;
+       DBusError error;
+
+       message = dbus_message_new_method_call(CONNMAN_SERVICE,
+                                               CONNMAN_MANAGER_PATH,
+                                               CONNMAN_MANAGER_INTERFACE,
+                                                       "GetProperties");
+       if (message == NULL)
+               return NULL;
+
+       dbus_error_init(&error);
+
+       reply = dbus_connection_send_with_reply_and_block(connection,
+                                                       message, -1, &error);
+       if (reply == NULL) {
+               if (dbus_error_is_set(&error) == TRUE) {
+                       LOG("%s", error.message);
+                       dbus_error_free(&error);
+               } else {
+                       LOG("%s", error.message);
+               }
+               dbus_message_unref(message);
+               return NULL;
+       }
+
+       dbus_message_unref(message);
+
+       return reply;
+}
+
 DBusMessage *manager_create_session(DBusConnection *connection,
                                        struct test_session_info *info,
                                        const char *notifier_path)
@@ -117,7 +149,7 @@ DBusMessage *manager_create_session(DBusConnection *connection,
 
        connman_dbus_dict_open(&array, &dict);
 
-       /* session_append_settings(&dict, info); */
+       session_append_settings(&dict, info);
 
        connman_dbus_dict_close(&array, &dict);
 
@@ -187,3 +219,44 @@ DBusMessage *manager_set_session_mode(DBusConnection *connection,
        return set_property(connection, "SessionMode",
                                DBUS_TYPE_BOOLEAN, &enable);
 }
+
+int manager_parse_properties(DBusMessage *msg,
+                               struct test_manager *manager)
+{
+       DBusMessageIter iter, array;
+
+       dbus_message_iter_init(msg, &iter);
+       dbus_message_iter_recurse(&iter, &array);
+
+       while (dbus_message_iter_get_arg_type(&array) == DBUS_TYPE_DICT_ENTRY) {
+               DBusMessageIter entry, value;
+               const char *key;
+
+               dbus_message_iter_recurse(&array, &entry);
+               dbus_message_iter_get_basic(&entry, &key);
+
+               dbus_message_iter_next(&entry);
+               dbus_message_iter_recurse(&entry, &value);
+
+               switch (dbus_message_iter_get_arg_type(&value)) {
+               case DBUS_TYPE_STRING:
+                       if (g_str_equal(key, "State") == TRUE) {
+                               const char *val;
+                               dbus_message_iter_get_basic(&value, &val);
+
+                               if (manager->state != NULL)
+                                       g_free(manager->state);
+
+                               LOG("State %s", val);
+
+                               manager->state = g_strdup(val);
+                       }
+                       break;
+               default:
+                       break;
+               }
+               dbus_message_iter_next(&array);
+       }
+
+       return 0;
+}