core/service: Add btd_service_get_version
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 7 Feb 2014 13:23:52 +0000 (15:23 +0200)
committerMikko Ylinen <mikko.ylinen@intel.com>
Tue, 23 Sep 2014 18:29:21 +0000 (21:29 +0300)
This adds btd_service_get_version which can be use to query service
version.

src/service.c
src/service.h

index 7a480d6..529217a 100644 (file)
@@ -36,6 +36,8 @@
 #include <errno.h>
 
 #include <bluetooth/bluetooth.h>
+#include <bluetooth/sdp.h>
+#include <bluetooth/sdp_lib.h>
 
 #include <glib.h>
 
@@ -282,6 +284,28 @@ int btd_service_get_error(const struct btd_service *service)
        return service->err;
 }
 
+uint16_t btd_service_get_version(const struct btd_service *service)
+{
+       const sdp_record_t *rec;
+       sdp_list_t *list;
+       sdp_profile_desc_t *desc;
+       uint16_t version;
+
+       rec = btd_device_get_record(service->device,
+                                       service->profile->remote_uuid);
+       if (rec == NULL)
+               return 0;
+
+       if (sdp_get_profile_descs(rec, &list) < 0)
+               return 0;
+
+       desc = list->data;
+       version = desc->version;
+       sdp_list_free(list, free);
+
+       return version;
+}
+
 unsigned int btd_service_add_state_cb(btd_service_state_cb cb, void *user_data)
 {
        struct service_state_callback *state_cb;
index 5230115..1a4a1a6 100644 (file)
@@ -57,6 +57,7 @@ struct btd_device *btd_service_get_device(const struct btd_service *service);
 struct btd_profile *btd_service_get_profile(const struct btd_service *service);
 btd_service_state_t btd_service_get_state(const struct btd_service *service);
 int btd_service_get_error(const struct btd_service *service);
+uint16_t btd_service_get_version(const struct btd_service *service);
 
 unsigned int btd_service_add_state_cb(btd_service_state_cb cb,
                                                        void *user_data);