diff options
| author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-02-07 15:23:52 +0200 |
|---|---|---|
| committer | Pedro Alvarez <pedro.alvarez@codethink.co.uk> | 2014-04-10 14:15:09 +0000 |
| commit | 534d39d50ae31db2a80e56da73177ca139e5a8ae (patch) | |
| tree | c2b59ab65c8b0d2012d2d3d1c146e0051de4a345 | |
| parent | d9a384a32032e8dd34ab69c99c4f31950790910a (diff) | |
| download | bluez-534d39d50ae31db2a80e56da73177ca139e5a8ae.tar.gz | |
core/service: Add btd_service_get_version
This adds btd_service_get_version which can be use to query service
version.
| -rw-r--r-- | src/service.c | 24 | ||||
| -rw-r--r-- | src/service.h | 1 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c index 7a480d6da..529217a8b 100644 --- a/src/service.c +++ b/src/service.c @@ -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; diff --git a/src/service.h b/src/service.h index 5230115cb..1a4a1a66e 100644 --- a/src/service.h +++ b/src/service.h @@ -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); |
