aboutsummaryrefslogtreecommitdiffstats
path: root/meta-ivi/recipes-connectivity/bluez5/bluez5/0021-core-service-Add-btd_service_get_version.patch
blob: 444ab5fbcbcf938f98a8b5a8ac7d386d02899134 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
From 5d58c98b9e3b9024d33fcacd282a379931b670e5 Mon Sep 17 00:00:00 2001
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date: Fri, 7 Feb 2014 15:23:52 +0200
Subject: [PATCH 1/7] core/service: Add btd_service_get_version

This adds btd_service_get_version which can be use to query service
version.

Conflicts:
	src/service.c
---
 src/service.c | 23 +++++++++++++++++++++++
 src/service.h |  1 +
 2 files changed, 24 insertions(+)

diff --git a/src/service.c b/src/service.c
index f7912f5..506c741 100644
--- a/src/service.c
+++ b/src/service.c
@@ -38,6 +38,7 @@
 
 #include "lib/bluetooth.h"
 #include "lib/sdp.h"
+#include "lib/sdp_lib.h"
 
 #include "log.h"
 #include "backtrace.h"
@@ -319,6 +320,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 c1f97f6..b95bd58 100644
--- a/src/service.h
+++ b/src/service.h
@@ -59,6 +59,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);
-- 
1.9.1