X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=unit%2Fmanager-api.c;h=40ad3704e61efa7fde57a6b3529f9cf2b18ed000;hb=af22afbaf54aaadb85d6df5d60c5b43f37ea5fc0;hp=02bf58abdefea575565874eb05b81bd7f4e3726d;hpb=237f8824bd0fe26951eebdf7b77eb9dd175d22bc;p=framework%2Fconnectivity%2Fconnman.git diff --git a/unit/manager-api.c b/unit/manager-api.c index 02bf58a..40ad370 100644 --- a/unit/manager-api.c +++ b/unit/manager-api.c @@ -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) @@ -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; +}