OSDN Git Service

device: Add function to find a given service
authorMikel Astiz <mikel.astiz@bmw-carit.de>
Tue, 7 May 2013 16:58:13 +0000 (18:58 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Wed, 8 May 2013 07:13:28 +0000 (10:13 +0300)
Search within the list of services for a given remote UUID.

src/device.c
src/device.h

index ff4c553..14c3e81 100644 (file)
@@ -4376,6 +4376,22 @@ static void service_state_changed(struct btd_service *service,
                device_profile_disconnected(device, profile, err);
 }
 
+struct btd_service *btd_device_get_service(struct btd_device *dev,
+                                               const char *remote_uuid)
+{
+       GSList *l;
+
+       for (l = dev->services; l != NULL; l = g_slist_next(l)) {
+               struct btd_service *service = l->data;
+               struct btd_profile *p = btd_service_get_profile(service);
+
+               if (g_str_equal(p->remote_uuid, remote_uuid))
+                       return service;
+       }
+
+       return NULL;
+}
+
 void btd_device_init(void)
 {
        dbus_conn = btd_get_dbus_connection();
index 7cd11af..70e1502 100644 (file)
@@ -121,5 +121,8 @@ unsigned int device_wait_for_svc_complete(struct btd_device *dev,
 bool device_remove_svc_complete_callback(struct btd_device *dev,
                                                        unsigned int id);
 
+struct btd_service *btd_device_get_service(struct btd_device *dev,
+                                               const char *remote_uuid);
+
 void btd_device_init(void);
 void btd_device_cleanup(void);