summaryrefslogtreecommitdiffstats
path: root/audio/headset.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/headset.c')
-rw-r--r--audio/headset.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/audio/headset.c b/audio/headset.c
index ca7cc189..6599e1d7 100644
--- a/audio/headset.c
+++ b/audio/headset.c
@@ -59,6 +59,8 @@
#include "headset.h"
#include "glib-helper.h"
#include "dbus-common.h"
+#include "../src/adapter.h"
+#include "../src/device.h"
#define DC_TIMEOUT 3000
@@ -1810,8 +1812,8 @@ static GDBusSignalTable headset_signals[] = {
{ NULL, NULL }
};
-static void headset_set_channel(struct headset *headset, sdp_record_t *record,
- uint16_t svc)
+static void headset_set_channel(struct headset *headset,
+ const sdp_record_t *record, uint16_t svc)
{
int ch;
sdp_list_t *protos;
@@ -1835,9 +1837,15 @@ static void headset_set_channel(struct headset *headset, sdp_record_t *record,
error("Unable to get RFCOMM channel from Headset record");
}
-void headset_update(struct audio_device *dev, sdp_record_t *record, uint16_t svc)
+void headset_update(struct audio_device *dev, uint16_t svc,
+ const char *uuidstr)
{
struct headset *headset = dev->headset;
+ const sdp_record_t *record;
+
+ record = btd_device_get_record(dev->btd_dev, uuidstr);
+ if (!record)
+ return;
switch (svc) {
case HANDSFREE_SVCLASS_ID:
@@ -1918,10 +1926,11 @@ void headset_unregister(struct audio_device *dev)
AUDIO_HEADSET_INTERFACE);
}
-struct headset *headset_init(struct audio_device *dev, sdp_record_t *record,
- uint16_t svc)
+struct headset *headset_init(struct audio_device *dev, uint16_t svc,
+ const char *uuidstr)
{
struct headset *hs;
+ const sdp_record_t *record;
hs = g_new0(struct headset, 1);
hs->rfcomm_ch = -1;
@@ -1931,6 +1940,7 @@ struct headset *headset_init(struct audio_device *dev, sdp_record_t *record,
hs->hfp_active = FALSE;
hs->cli_active = FALSE;
+ record = btd_device_get_record(dev->btd_dev, uuidstr);
if (!record)
goto register_iface;