diff --git a/audio/gateway.c b/audio/gateway.c index 4b86c4e..895c772 100644 --- a/audio/gateway.c +++ b/audio/gateway.c @@ -543,6 +543,11 @@ static void rfcomm_connect_cb(GIOChannel * chan, int err, const bdaddr_t * src, gateway_close(gw); } +void gateway_start_service(struct audio_device *device) +{ + rfcomm_connect_cb(device->gateway->rfcomm, 0, NULL, NULL, device); +} + static void get_record_cb(sdp_list_t * recs, int err, gpointer user_data) { struct audio_device *dev = user_data; diff --git a/audio/gateway.h b/audio/gateway.h index f217544..3546cd4 100644 --- a/audio/gateway.h +++ b/audio/gateway.h @@ -38,4 +38,4 @@ int gateway_config_stream(struct audio_device *dev, gateway_stream_cb_t cb, gboolean gateway_cancel_stream(struct audio_device *dev, unsigned int id); int gateway_get_sco_fd(struct audio_device *dev); void gateway_suspend_stream(struct audio_device *dev); - +void gateway_start_service(struct audio_device *device); diff --git a/audio/manager.c b/audio/manager.c index 178de73..36d7f87 100644 --- a/audio/manager.c +++ b/audio/manager.c @@ -498,8 +498,20 @@ drop: static void gateway_auth_cb(DBusError *derr, void *user_data) { + struct audio_device *device = user_data; + if (derr && dbus_error_is_set(derr)) error("Access denied: %s", derr->message); + else { + char ag_address[18]; + + ba2str(&device->dst, ag_address); + debug("Accepted AG connection from %s for %s", + ag_address, device->path); + debug("in gateway_auth_cb, src is %d", device->src); + + gateway_start_service(device); + } } static void hf_io_cb(GIOChannel *chan, int err, const bdaddr_t *src,