summaryrefslogtreecommitdiffstats
path: root/audio/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/main.c')
-rw-r--r--audio/main.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/audio/main.c b/audio/main.c
index 846866a8..0e5afc42 100644
--- a/audio/main.c
+++ b/audio/main.c
@@ -38,6 +38,7 @@
#include <dbus/dbus.h>
#include "glib-helper.h"
+#include "btio.h"
#include "plugin.h"
#include "logging.h"
#include "unix.h"
@@ -64,19 +65,28 @@ static GKeyFile *load_config_file(const char *file)
return keyfile;
}
-static void sco_server_cb(GIOChannel *chan, int err, const bdaddr_t *src,
- const bdaddr_t *dst, gpointer data)
+static void sco_server_cb(GIOChannel *chan, GError *err, gpointer data)
{
int sk;
struct audio_device *device;
char addr[18];
+ bdaddr_t dst;
- if (err < 0) {
- error("accept: %s (%d)", strerror(-err), -err);
+ if (err) {
+ error("sco_server_cb: %s", err->message);
return;
}
- device = manager_find_device(dst, NULL, FALSE);
+ bt_io_get(chan, BT_IO_SCO, &err,
+ BT_IO_OPT_DEST_BDADDR, &dst,
+ BT_IO_OPT_DEST, addr,
+ BT_IO_OPT_INVALID);
+ if (err) {
+ error("bt_io_get: %s", err->message);
+ goto drop;
+ }
+
+ device = manager_find_device(&dst, NULL, FALSE);
if (!device)
goto drop;
@@ -85,8 +95,6 @@ static void sco_server_cb(GIOChannel *chan, int err, const bdaddr_t *src,
goto drop;
}
- ba2str(dst, addr);
-
if (!get_hfp_active(device)) {
error("Refusing non-HFP SCO connect attempt from %s", addr);
goto drop;
@@ -104,7 +112,6 @@ static void sco_server_cb(GIOChannel *chan, int err, const bdaddr_t *src,
drop:
g_io_channel_close(chan);
- g_io_channel_unref(chan);
}
static DBusConnection *connection;
@@ -129,7 +136,9 @@ static int audio_init(void)
return -EIO;
}
- sco_server = bt_sco_listen(BDADDR_ANY, 0, sco_server_cb, NULL);
+ sco_server = bt_io_listen(BT_IO_SCO, sco_server_cb, NULL, NULL,
+ NULL, NULL,
+ BT_IO_OPT_INVALID);
if (!sco_server) {
error("Unable to start SCO server socket");
return -EIO;