diff --git a/profiles/audio/avctp.c b/profiles/audio/avctp.c
index db03456..314dbfb 100644
--- a/profiles/audio/avctp.c
+++ b/profiles/audio/avctp.c
uint8_t key_quirks[256];
struct key_pressed key;
+ bool initiator;
};
struct avctp_passthrough_handler {
}
session->control = avctp_channel_create(session, io, NULL);
+ session->initiator = true;
g_io_channel_unref(io);
return session;
{
return avctp_get_internal(device->btd_dev);
}
+
+bool avctp_is_initiator(struct avctp *session)
+{
+ return session->initiator;
+}
diff --git a/profiles/audio/avctp.h b/profiles/audio/avctp.h
index 0a414af..cd575cc 100644
--- a/profiles/audio/avctp.h
+++ b/profiles/audio/avctp.h
struct avctp *avctp_connect(struct audio_device *device);
struct avctp *avctp_get(struct audio_device *device);
+bool avctp_is_initiator(struct avctp *session);
int avctp_connect_browsing(struct avctp *session);
void avctp_disconnect(struct avctp *session);
diff --git a/profiles/audio/avrcp.c b/profiles/audio/avrcp.c
index 4acf396..4558407 100644
--- a/profiles/audio/avrcp.c
+++ b/profiles/audio/avrcp.c
server->sessions = g_slist_append(server->sessions, session);
- if (dev->sink && !dev->source)
+ /* If sink and source are not supported assume the controller must
+ * be the initiator
+ */
+ if (dev->sink == NULL && dev->source == NULL)
+ session->target = !avctp_is_initiator(session->conn);
+ else if (dev->sink && !dev->source)
session->target = TRUE;
else if (dev->source && !dev->sink)
session->target = FALSE;