summaryrefslogtreecommitdiffstats
path: root/src/handsfree-audio.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2013-02-26 13:48:46 -0600
committerDenis Kenzior <denkenz@gmail.com>2013-02-26 14:14:46 -0600
commitb76bb56daef4d649f339d742c8d11120682ad9ba (patch)
treea7d4d4253524a32ddebc6fd2dd6dc943d3059eec /src/handsfree-audio.c
parent1c759123808fe1c59a69ce0e3934c1b9a2ff9b74 (diff)
downloadofono-b76bb56daef4d649f339d742c8d11120682ad9ba.tar.bz2
handsfree-audio: Implement the GetCards method
Diffstat (limited to 'src/handsfree-audio.c')
-rw-r--r--src/handsfree-audio.c45
1 files changed, 44 insertions, 1 deletions
diff --git a/src/handsfree-audio.c b/src/handsfree-audio.c
index 4f083cac..6be23634 100644
--- a/src/handsfree-audio.c
+++ b/src/handsfree-audio.c
@@ -208,10 +208,53 @@ static void agent_disconnect(DBusConnection *conn, void *user_data)
agent = NULL;
}
+static void append_card(void *data, void *userdata)
+{
+ struct ofono_handsfree_card *card = data;
+ struct DBusMessageIter *array = userdata;
+ DBusMessageIter entry, dict;
+
+ dbus_message_iter_open_container(array, DBUS_TYPE_STRUCT,
+ NULL, &entry);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_OBJECT_PATH,
+ &card->path);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_ARRAY,
+ OFONO_PROPERTIES_ARRAY_SIGNATURE,
+ &dict);
+
+ card_append_properties(card, &dict);
+
+ dbus_message_iter_close_container(&entry, &dict);
+ dbus_message_iter_close_container(array, &entry);
+}
+
static DBusMessage *am_get_cards(DBusConnection *conn,
DBusMessage *msg, void *user_data)
{
- return __ofono_error_not_implemented(msg);
+ DBusMessage *reply;
+ DBusMessageIter iter;
+ DBusMessageIter array;
+
+ reply = dbus_message_new_method_return(msg);
+ if (reply == NULL)
+ return NULL;
+
+ dbus_message_iter_init_append(reply, &iter);
+
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
+ DBUS_STRUCT_BEGIN_CHAR_AS_STRING
+ DBUS_TYPE_OBJECT_PATH_AS_STRING
+ DBUS_TYPE_ARRAY_AS_STRING
+ DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
+ DBUS_TYPE_STRING_AS_STRING
+ DBUS_TYPE_VARIANT_AS_STRING
+ DBUS_DICT_ENTRY_END_CHAR_AS_STRING
+ DBUS_STRUCT_END_CHAR_AS_STRING,
+ &array);
+ g_slist_foreach(card_list, append_card, &array);
+ dbus_message_iter_close_container(&iter, &array);
+
+ return reply;
}
static DBusMessage *am_agent_register(DBusConnection *conn,