static gboolean get_target(const GDBusPropertyTable *property, DBusMessageIter *iter, void *data) { struct obex_session *os = data; char *uuid; uuid = target2str(os->service->target); dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &uuid); g_free(uuid); return TRUE; }
static DBusMessage *get_properties(DBusConnection *conn, DBusMessage *msg, void *data) { struct obex_session *os = data; DBusMessage *reply; DBusMessageIter iter; DBusMessageIter dict; char *uuid; const char *root; reply = dbus_message_new_method_return(msg); if (!reply) return NULL; dbus_message_iter_init_append(reply, &iter); dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); /* Target */ uuid = target2str(os->service->target); dbus_message_iter_append_dict_entry(&dict, "Target", DBUS_TYPE_STRING, &uuid); g_free(uuid); /* Root folder */ root = obex_option_root_folder(); dbus_message_iter_append_dict_entry(&dict, "Root", DBUS_TYPE_STRING, &root); /* FIXME: Added Remote Address or USB */ dbus_message_iter_close_container(&iter, &dict); return reply; }