From fb1612c37310e09e8503a113c0114c0ba9584c99 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Fri, 18 May 2007 18:26:56 +0000 Subject: Update code to match more closely to API description --- audio/headset.c | 16 +++++++++------- audio/headset.h | 2 ++ audio/manager.c | 49 ++++++++++++++++++++++++++++++++++++------------- 3 files changed, 47 insertions(+), 20 deletions(-) diff --git a/audio/headset.c b/audio/headset.c index edd59b4b..dbebf67c 100644 --- a/audio/headset.c +++ b/audio/headset.c @@ -1202,20 +1202,14 @@ static DBusHandlerResult hs_is_connected(DBusConnection *conn, DBusMessage *msg, void *data) { audio_device_t *device = data; - struct headset *hs = device->headset; DBusMessage *reply; dbus_bool_t connected; - assert(hs); - reply = dbus_message_new_method_return(msg); if (!reply) return DBUS_HANDLER_RESULT_NEED_MEMORY; - if (hs->state >= HEADSET_STATE_CONNECTED) - connected = TRUE; - else - connected = FALSE; + connected = headset_is_connected(device->headset); dbus_message_append_args(reply, DBUS_TYPE_BOOLEAN, &connected, DBUS_TYPE_INVALID); @@ -1746,6 +1740,14 @@ static GIOChannel *server_socket(uint8_t *channel) return io; } +gboolean headset_is_connected(headset_t *headset) +{ + if (headset->state >= HEADSET_STATE_CONNECTED) + return TRUE; + else + return FALSE; +} + int headset_server_init(DBusConnection *conn) { uint8_t chan = DEFAULT_HS_AG_CHANNEL; diff --git a/audio/headset.h b/audio/headset.h index b06f1c60..06ee8483 100644 --- a/audio/headset.h +++ b/audio/headset.h @@ -33,6 +33,8 @@ typedef struct headset headset_t; headset_t *headset_init(const char *path); +gboolean headset_is_connected(headset_t *headset); + int headset_server_init(DBusConnection *conn); void headset_exit(void); diff --git a/audio/manager.c b/audio/manager.c index 2d4d22a0..d2f89529 100644 --- a/audio/manager.c +++ b/audio/manager.c @@ -148,8 +148,40 @@ static DBusHandlerResult device_get_address(DBusConnection *conn, DBusMessage *m return send_message_and_unref(conn, reply); } +static DBusHandlerResult device_get_connected(DBusConnection *conn, + DBusMessage *msg, + void *data) +{ + DBusMessageIter iter, array_iter; + audio_device_t *device = data; + DBusMessage *reply; + const char *iface; + + reply = dbus_message_new_method_return(msg); + if (!reply) + return DBUS_HANDLER_RESULT_NEED_MEMORY; + + dbus_message_iter_init_append(reply, &iter); + + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_TYPE_STRING_AS_STRING, &array_iter); + + if (device->headset && headset_is_connected(device->headset)) { + iface = AUDIO_HEADSET_INTERFACE; + dbus_message_iter_append_basic(&array_iter, + DBUS_TYPE_STRING, &iface); + } + + dbus_message_iter_close_container(&iter, &array_iter); + + return send_message_and_unref(conn, reply); +} + static DBusMethodVTable device_methods[] = { - { "GetAddress", device_get_address, "", "s" }, + { "GetAddress", device_get_address, + "", "s" }, + { "GetConnectedInterfaces", device_get_connected, + "", "s" }, { NULL, NULL, NULL, NULL } }; @@ -301,13 +333,6 @@ static DBusHandlerResult am_list_devices(DBusConnection *conn, return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } -static DBusHandlerResult am_connected_devices(DBusConnection *conn, - DBusMessage *msg, - void *data) -{ - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; -} - static DBusHandlerResult am_create_headset(DBusConnection *conn, DBusMessage *msg, void *data) { @@ -536,13 +561,11 @@ static DBusHandlerResult am_change_default_headset(DBusConnection *conn, DBusMes static DBusMethodVTable manager_methods[] = { { "CreateDevice", am_create_device, - "s", "sas" }, + "s", "s" }, { "RemoveDevice", am_remove_device, "s", "" }, { "ListDevices", am_list_devices, - "", "a(sas)" }, - { "GetConnectedDevices", am_connected_devices, - "", "a(sas)" }, + "", "as" }, { "CreateHeadset", am_create_headset, "s", "s" }, { "RemoveHeadset", am_remove_headset, @@ -557,7 +580,7 @@ static DBusMethodVTable manager_methods[] = { }; static DBusSignalVTable manager_signals[] = { - { "DeviceCreated", "sas" }, + { "DeviceCreated", "s" }, { "DeviceRemoved", "s" }, { "HeadsetCreated", "s" }, { "HeadsetRemoved", "s" }, -- cgit