From b98bb6c1027b2a6af85465b418f0ee893946a0fd Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Tue, 13 May 2014 15:05:01 +0300 Subject: [PATCH] core: Export API to request services to be connected This API reuses the existing serialized profile connection creation and its primary user is the reconnection policy. --- src/device.c | 23 +++++++++++++++++++++++ src/device.h | 1 + 2 files changed, 24 insertions(+) diff --git a/src/device.c b/src/device.c index 289d522f4..41637b3aa 100644 --- a/src/device.c +++ b/src/device.c @@ -1331,6 +1331,29 @@ static GSList *create_pending_list(struct btd_device *dev, const char *uuid) return dev->pending; } +int btd_device_connect_services(struct btd_device *dev, GSList *services) +{ + GSList *l; + + if (dev->pending || dev->connect || dev->browse) + return -EBUSY; + + if (!btd_adapter_get_powered(dev->adapter)) + return -ENETDOWN; + + if (!dev->bredr_state.svc_resolved) + return -ENOENT; + + for (l = services; l; l = g_slist_next(l)) { + struct btd_service *service = l->data; + + dev->pending = g_slist_append(dev->pending, + btd_service_ref(service)); + } + + return connect_next(dev); +} + static DBusMessage *connect_profiles(struct btd_device *dev, uint8_t bdaddr_type, DBusMessage *msg, const char *uuid) { diff --git a/src/device.h b/src/device.h index 30e2d5dd4..8cb69803d 100644 --- a/src/device.h +++ b/src/device.h @@ -146,6 +146,7 @@ struct btd_service *btd_device_get_service(struct btd_device *dev, const char *remote_uuid); int device_discover_services(struct btd_device *device); +int btd_device_connect_services(struct btd_device *dev, GSList *services); void btd_device_init(void); void btd_device_cleanup(void); -- 2.47.3