summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@nokia.com>2007-05-18 18:26:56 +0000
committerJohan Hedberg <johan.hedberg@nokia.com>2007-05-18 18:26:56 +0000
commitfb1612c37310e09e8503a113c0114c0ba9584c99 (patch)
treefb20e401b193bb9d3966b5787d25bcb6d492e12e
parent00a7a482ac18b339a311c0afb89741d6b3978f0e (diff)
Update code to match more closely to API description
-rw-r--r--audio/headset.c16
-rw-r--r--audio/headset.h2
-rw-r--r--audio/manager.c49
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" },