diff options
Diffstat (limited to 'audio')
-rw-r--r-- | audio/avdtp.c | 10 | ||||
-rw-r--r-- | audio/control.c | 2 | ||||
-rw-r--r-- | audio/manager.c | 51 | ||||
-rw-r--r-- | audio/manager.h | 3 |
4 files changed, 32 insertions, 34 deletions
diff --git a/audio/avdtp.c b/audio/avdtp.c index 1c6f8e67..affc7fe7 100644 --- a/audio/avdtp.c +++ b/audio/avdtp.c @@ -42,7 +42,9 @@ #include "logging.h" -#include "adapter.h" +#include "../src/adapter.h" +#include "../src/device.h" + #include "device.h" #include "manager.h" #include "control.h" @@ -1061,7 +1063,7 @@ static gboolean avdtp_setconf_cmd(struct avdtp *session, } avdtp_get_peers(session, &src, &dst); - dev = manager_get_device(&src, &dst, NULL); + dev = manager_get_device(&src, &dst); if (!dev) { error("Unable to get a audio device object"); goto failed; @@ -1070,7 +1072,7 @@ static gboolean avdtp_setconf_cmd(struct avdtp *session, switch (sep->info.type) { case AVDTP_SEP_TYPE_SOURCE: if (!dev->sink) - dev->sink = sink_init(dev); + btd_device_add_uuid(dev->btd_dev, A2DP_SINK_UUID); break; case AVDTP_SEP_TYPE_SINK: /* Do source_init() here when it's implemented */ @@ -2804,7 +2806,7 @@ static void avdtp_server_cb(GIOChannel *chan, int err, const bdaddr_t *src, goto drop; } - dev = manager_get_device(src, dst, NULL); + dev = manager_get_device(src, dst); if (!dev) { error("Unable to get audio device object for %s", address); goto drop; diff --git a/audio/control.c b/audio/control.c index 8b3b2d8a..c8480197 100644 --- a/audio/control.c +++ b/audio/control.c @@ -686,7 +686,7 @@ static void avctp_server_cb(GIOChannel *chan, int err, const bdaddr_t *src, goto drop; } - dev = manager_get_device(src, dst, NULL); + dev = manager_get_device(src, dst); if (!dev) { error("Unable to get audio device object for %s", address); goto drop; diff --git a/audio/manager.c b/audio/manager.c index bb7a457a..a73d7e0c 100644 --- a/audio/manager.c +++ b/audio/manager.c @@ -476,12 +476,12 @@ static void ag_io_cb(GIOChannel *chan, int err, const bdaddr_t *src, svclass = HANDSFREE_SVCLASS_ID; } - device = manager_get_device(src, dst, NULL); + device = manager_get_device(src, dst); if (!device) goto drop; if (!device->headset) - device->headset = headset_init(device, svclass, remote_uuid); + btd_device_add_uuid(device->btd_dev, remote_uuid); if (headset_get_state(device) > HEADSET_STATE_DISCONNECTED) { debug("Refusing new connection since one already exists"); @@ -666,21 +666,18 @@ static int gateway_server_init(struct audio_adapter *adapter) static int audio_probe(struct btd_device *device, GSList *uuids) { struct btd_adapter *adapter = device_get_adapter(device); - const gchar *path = device_get_path(device); bdaddr_t src, dst; struct audio_device *audio_dev; adapter_get_address(adapter, &src); device_get_address(device, &dst); - audio_dev = manager_get_device(&src, &dst, path); + audio_dev = manager_get_device(&src, &dst); if (!audio_dev) { debug("audio_probe: unable to get a device object"); return -1; } - audio_dev->btd_dev = device; - g_slist_foreach(uuids, (GFunc) handle_uuid, audio_dev); return 0; @@ -1048,44 +1045,44 @@ struct audio_device *manager_find_device(const bdaddr_t *bda, const char *interf } struct audio_device *manager_get_device(const bdaddr_t *src, - const bdaddr_t *dst, - const char *path) + const bdaddr_t *dst) { struct audio_device *dev; + struct btd_adapter *adapter; + struct btd_device *device; + char addr[18]; + const char *path; dev = manager_find_device(dst, NULL, FALSE); if (dev) return dev; - if (!path) { - struct btd_adapter *adapter; - struct btd_device *device; - char addr[18]; - ba2str(src, addr); + ba2str(src, addr); - adapter = manager_find_adapter(src); - if (!adapter) { - error("Unable to get a btd_adapter object for %s", - addr); - return NULL; - } + adapter = manager_find_adapter(src); + if (!adapter) { + error("Unable to get a btd_adapter object for %s", + addr); + return NULL; + } - ba2str(dst, addr); + ba2str(dst, addr); - device = adapter_get_device(connection, adapter, addr); - if (!device) { - error("Unable to get btd_device object for %s", addr); - return NULL; - } - - path = device_get_path(device); + device = adapter_get_device(connection, adapter, addr); + if (!device) { + error("Unable to get btd_device object for %s", addr); + return NULL; } + path = device_get_path(device); + dev = device_register(connection, path, src, dst); if (!dev) return NULL; + dev->btd_dev = device; + devices = g_slist_append(devices, dev); return dev; diff --git a/audio/manager.h b/audio/manager.h index 3d712f41..3af580ff 100644 --- a/audio/manager.h +++ b/audio/manager.h @@ -39,5 +39,4 @@ struct audio_device *manager_find_device(const bdaddr_t *bda, const char *interf gboolean connected); struct audio_device *manager_get_device(const bdaddr_t *src, - const bdaddr_t *dst, - const char *path); + const bdaddr_t *dst); |