diff --git a/profiles/audio/a2dp.c b/profiles/audio/a2dp.c
index e424be4..2fae233 100644
--- a/profiles/audio/a2dp.c
+++ b/profiles/audio/a2dp.c
#include "a2dp-codecs.h"
#include "sdpd.h"
#include "../src/manager.h"
+#include "../src/device.h"
/* The duration that streams without users are allowed to stay in
* STREAMING state. */
static struct audio_device *a2dp_get_dev(struct avdtp *session)
{
- bdaddr_t src, dst;
+ struct btd_adapter *adapter = avdtp_get_adapter(session);
+ struct btd_device *device = avdtp_get_device(session);
- avdtp_get_peers(session, &src, &dst);
-
- return manager_find_device(NULL, &src, &dst, NULL, FALSE);
+ return manager_find_device(NULL, adapter_get_address(adapter),
+ device_get_address(device), NULL,
+ FALSE);
}
static struct a2dp_setup *setup_new(struct avdtp *session)
struct a2dp_server *server;
struct a2dp_sep *sep;
GSList *l;
- bdaddr_t src;
- avdtp_get_peers(session, &src, NULL);
- server = find_server(servers, manager_find_adapter(&src));
+ server = find_server(servers, avdtp_get_adapter(session));
if (!server)
return NULL;
struct avdtp_service_capability *cap;
struct avdtp_media_codec_capability *codec_cap = NULL;
int posix_err;
- bdaddr_t src;
- avdtp_get_peers(session, &src, NULL);
- server = find_server(servers, manager_find_adapter(&src));
+ server = find_server(servers, avdtp_get_adapter(session));
if (!server)
return 0;
diff --git a/profiles/audio/avdtp.c b/profiles/audio/avdtp.c
index 20fdf25..690294c 100644
--- a/profiles/audio/avdtp.c
+++ b/profiles/audio/avdtp.c
{
GSList *l;
struct audio_device *dev;
- bdaddr_t src, dst;
avdtp_session_state_t old_state = session->state;
+ struct btd_adapter *adapter = avdtp_get_adapter(session);
+ struct btd_device *device = avdtp_get_device(session);
session->state = new_state;
- avdtp_get_peers(session, &src, &dst);
- dev = manager_get_device(&src, &dst, FALSE);
+ dev = manager_get_device(adapter_get_address(adapter),
+ device_get_address(device), FALSE);
if (dev == NULL) {
error("%s(): No matching audio device", __func__);
return;
struct avdtp_stream *stream;
uint8_t err, category = 0x00;
struct audio_device *dev;
- bdaddr_t src, dst;
GSList *l;
+ struct btd_adapter *adapter = avdtp_get_adapter(session);
+ struct btd_device *device = avdtp_get_device(session);
if (size < sizeof(struct setconf_req)) {
error("Too short getcap request");
goto failed;
}
- avdtp_get_peers(session, &src, &dst);
- dev = manager_get_device(&src, &dst, FALSE);
+ dev = manager_get_device(adapter_get_address(adapter),
+ device_get_address(device), FALSE);
if (!dev) {
error("Unable to get a audio device object");
err = AVDTP_BAD_STATE;
return sep->state;
}
-void avdtp_get_peers(struct avdtp *session, bdaddr_t *src, bdaddr_t *dst)
+struct btd_adapter *avdtp_get_adapter(struct avdtp *session)
+{
+ return session->server->adapter;
+}
+
+struct btd_device *avdtp_get_device(struct avdtp *session)
{
- if (src)
- bacpy(src, adapter_get_address(session->server->adapter));
- if (dst)
- bacpy(dst, device_get_address(session->device));
+ return session->device;
}
int avdtp_init(struct btd_adapter *adapter, GKeyFile *config)
diff --git a/profiles/audio/avdtp.h b/profiles/audio/avdtp.h
index dbdf8f4..8f0d7e6 100644
--- a/profiles/audio/avdtp.h
+++ b/profiles/audio/avdtp.h
int avdtp_error_error_code(struct avdtp_error *err);
int avdtp_error_posix_errno(struct avdtp_error *err);
-void avdtp_get_peers(struct avdtp *session, bdaddr_t *src, bdaddr_t *dst);
+struct btd_adapter *avdtp_get_adapter(struct avdtp *session);
+struct btd_device *avdtp_get_device(struct avdtp *session);
gboolean avdtp_stream_setup_active(struct avdtp *session);
void avdtp_set_device_disconnect(struct avdtp *session, gboolean dev_dc);