All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 BlueZ] tools/gatt-service: Add reference implementation for Included Service
       [not found] <CGME20180320125349epcas1p1998e73353a1929039aecbfb98dfa4b51@epcas1p1.samsung.com>
@ 2018-03-20 12:53 ` Avichal Agarwal
       [not found]   ` <CGME20180320125349epcas1p1998e73353a1929039aecbfb98dfa4b51@epcms5p4>
  0 siblings, 1 reply; 3+ messages in thread
From: Avichal Agarwal @ 2018-03-20 12:53 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: sachin.dev, anupam.r, Avichal Agarwal

Created two new primary services which will act as includes services for
first  primary service
---
 tools/gatt-service.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 92 insertions(+), 2 deletions(-)

diff --git a/tools/gatt-service.c b/tools/gatt-service.c
index 6bd5576..2ce8a1f 100644
--- a/tools/gatt-service.c
+++ b/tools/gatt-service.c
@@ -47,9 +47,17 @@
 /* Immediate Alert Service UUID */
 #define IAS_UUID			"00001802-0000-1000-8000-00805f9b34fb"
 #define ALERT_LEVEL_CHR_UUID		"00002a06-0000-1000-8000-00805f9b34fb"
+#define IAS_UUID1   "A00B"
+#define IAS_UUID2   "A00C"
+#define IAS_UUID3   "A00D"
+#define ALERT_LEVEL_CHR_UUID1		"00002b06-0000-1000-8000-00805f9b34fb"
+#define ALERT_LEVEL_CHR_UUID2		"00002c07-0000-1000-8000-00805f9b34fb"
+/* Random UUID for testing purpose */
 
 /* Random UUID for testing purpose */
 #define READ_WRITE_DESCRIPTOR_UUID	"8260c653-1a54-426b-9e36-e84c238bc669"
+#define READ_WRITE_DESCRIPTOR_UUID1 "0260c653-1a54-426b-9e36-e84c238bc669"
+#define READ_WRITE_DESCRIPTOR_UUID2 "FFFF"
 
 static GMainLoop *main_loop;
 static GSList *services;
@@ -335,18 +343,45 @@ static gboolean service_get_includes(const GDBusPropertyTable *property,
 					DBusMessageIter *iter, void *user_data)
 {
 	const char *uuid = user_data;
+	char service_path[100] = {0,};
+	DBusMessageIter array;
+	char *p = NULL;
 
+	snprintf(service_path, 100, "/service3");
 	printf("Get Includes: %s\n", uuid);
 
+	p = service_path;
+
+	printf("Includes path: %s\n", p);
+
+	dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
+			DBUS_TYPE_OBJECT_PATH_AS_STRING, &array);
+
+	dbus_message_iter_append_basic(&array, DBUS_TYPE_OBJECT_PATH,
+							&p);
+
+	snprintf(service_path, 100, "/service2");
+	p = service_path;
+	printf("Get Includes: %s\n", p);
+
+	dbus_message_iter_append_basic(&array, DBUS_TYPE_OBJECT_PATH,
+							&p);
+	dbus_message_iter_close_container(iter, &array);
+
+
 	return TRUE;
+
 }
 
+
 static gboolean service_exist_includes(const GDBusPropertyTable *property,
 							void *user_data)
 {
 	const char *uuid = user_data;
 
 	printf("Exist Includes: %s\n", uuid);
+	if (strncmp(uuid, "00001802", 8) == 0)
+		return TRUE;
 
 	return FALSE;
 }
@@ -624,7 +659,7 @@ static char *register_service(const char *uuid)
 	return path;
 }
 
-static void create_services()
+static void create_services_one(void)
 {
 	char *service_path;
 	uint8_t level = 0;
@@ -651,6 +686,59 @@ static void create_services()
 	printf("Registered service: %s\n", service_path);
 }
 
+
+static void create_services_two(void)
+{
+	char *service_path;
+	uint8_t level = 0;
+
+	service_path = register_service(IAS_UUID2);
+	if (!service_path)
+		return;
+
+	if (!register_characteristic(ALERT_LEVEL_CHR_UUID2,
+						&level, sizeof(level),
+						ias_alert_level_props,
+						READ_WRITE_DESCRIPTOR_UUID2,
+						desc_props,
+						service_path)) {
+		printf("Couldn't register Alert Level characteristic (IAS)\n");
+		g_dbus_unregister_interface(connection, service_path,
+							GATT_SERVICE_IFACE);
+		g_free(service_path);
+		return;
+	}
+	services = g_slist_prepend(services, service_path);
+	printf("Registered service: %s\n", service_path);
+}
+
+static void create_services_three(void)
+{
+	char *service_path;
+	uint8_t level = 0;
+
+	service_path = register_service(IAS_UUID3);
+	if (!service_path)
+		return;
+
+	if (!register_characteristic(ALERT_LEVEL_CHR_UUID1,
+						&level, sizeof(level),
+						ias_alert_level_props,
+						READ_WRITE_DESCRIPTOR_UUID1,
+						desc_props,
+						service_path)) {
+		printf("Couldn't register Alert Level characteristic (IAS)\n");
+		g_dbus_unregister_interface(connection, service_path,
+							GATT_SERVICE_IFACE);
+		g_free(service_path);
+		return;
+	}
+
+
+	services = g_slist_prepend(services, service_path);
+	printf("Registered service: %s\n", service_path);
+}
+
 static void register_app_reply(DBusMessage *reply, void *user_data)
 {
 	DBusError derr;
@@ -789,7 +877,9 @@ int main(int argc, char *argv[])
 	printf("gatt-service unique name: %s\n",
 				dbus_bus_get_unique_name(connection));
 
-	create_services();
+	create_services_one();
+	create_services_two();
+	create_services_three();
 
 	client = g_dbus_client_new(connection, "org.bluez", "/");
 
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* RE: [PATCH v2 BlueZ] tools/gatt-service: Add reference implementation for Included Service
       [not found]   ` <CGME20180320125349epcas1p1998e73353a1929039aecbfb98dfa4b51@epcms5p4>
@ 2018-05-15 14:21     ` Avichal Agarwal
  2018-05-16 12:46       ` Luiz Augusto von Dentz
  0 siblings, 1 reply; 3+ messages in thread
From: Avichal Agarwal @ 2018-05-15 14:21 UTC (permalink / raw)
  To: linux-bluetooth

=C2=A0=0D=0A=0D=0A=C2=A0=0D=0Aping=0D=0A-----Original=C2=A0Message-----=0D=
=0AFrom:=C2=A0linux-bluetooth-owner=40vger.kernel.org=C2=A0=5Bmailto:linux-=
bluetooth-owner=40vger.kernel.org=5D=C2=A0On=C2=A0Behalf=C2=A0Of=C2=A0Avich=
al=C2=A0Agarwal=0D=0ASent:=C2=A0Tuesday,=C2=A0March=C2=A020,=C2=A02018=C2=
=A06:23=C2=A0PM=0D=0ATo:=C2=A0linux-bluetooth=40vger.kernel.org=0D=0ACc:=C2=
=A0sachin.dev=40samsung.com;=C2=A0anupam.r=40samsung.com;=C2=A0Avichal=C2=
=A0Agarwal=0D=0ASubject:=C2=A0=5BPATCH=C2=A0v2=C2=A0BlueZ=5D=C2=A0tools/gat=
t-service:=C2=A0Add=C2=A0reference=C2=A0implementation=C2=A0for=C2=A0Includ=
ed=C2=A0Service=0D=0A=C2=A0=0D=0ACreated=C2=A0two=C2=A0new=C2=A0primary=C2=
=A0services=C2=A0which=C2=A0will=C2=A0act=C2=A0as=C2=A0includes=C2=A0servic=
es=C2=A0for=C2=A0first=C2=A0=C2=A0primary=C2=A0service=0D=0A---=0D=0A=C2=A0=
tools/gatt-service.c=C2=A0=7C=C2=A094=C2=A0++++++++++++++++++++++++++++++++=
++++++++++++++++++--=0D=0A=C2=A01=C2=A0file=C2=A0changed,=C2=A092=C2=A0inse=
rtions(+),=C2=A02=C2=A0deletions(-)=0D=0A=C2=A0=0D=0Adiff=C2=A0--git=C2=A0a=
/tools/gatt-service.c=C2=A0b/tools/gatt-service.c=C2=A0index=C2=A06bd5576..=
2ce8a1f=C2=A0100644=0D=0A---=C2=A0a/tools/gatt-service.c=0D=0A+++=C2=A0b/to=
ols/gatt-service.c=0D=0A=40=40=C2=A0-47,9=C2=A0+47,17=C2=A0=40=40=0D=0A=C2=
=A0/*=C2=A0Immediate=C2=A0Alert=C2=A0Service=C2=A0UUID=C2=A0*/=0D=0A=C2=A0=
=23define=C2=A0IAS_UUID=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=2200001802-0000-1000-8000-00805f9b34fb=22=0D=0A=C2=A0=23=
define=C2=A0ALERT_LEVEL_CHR_UUID=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=2200002a06-0000-1000=
-8000-00805f9b34fb=22=0D=0A+=23define=C2=A0IAS_UUID1=C2=A0=C2=A0=C2=A0=22A0=
0B=22=0D=0A+=23define=C2=A0IAS_UUID2=C2=A0=C2=A0=C2=A0=22A00C=22=0D=0A+=23d=
efine=C2=A0IAS_UUID3=C2=A0=C2=A0=C2=A0=22A00D=22=0D=0A+=23define=C2=A0ALERT=
_LEVEL_CHR_UUID1=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=2200002b06-0000-1000-8000-00805f9b3=
4fb=22=0D=0A+=23define=C2=A0ALERT_LEVEL_CHR_UUID2=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=22=
00002c07-0000-1000-8000-00805f9b34fb=22=0D=0A+/*=C2=A0Random=C2=A0UUID=C2=
=A0for=C2=A0testing=C2=A0purpose=C2=A0*/=0D=0A=C2=A0=0D=0A=C2=A0/*=C2=A0Ran=
dom=C2=A0UUID=C2=A0for=C2=A0testing=C2=A0purpose=C2=A0*/=0D=0A=C2=A0=23defi=
ne=C2=A0READ_WRITE_DESCRIPTOR_UUID=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=228260c653-1a54-426b-9e36-e84c238bc669=22=0D=0A+=23define=C2=A0RE=
AD_WRITE_DESCRIPTOR_UUID1=C2=A0=220260c653-1a54-426b-9e36-e84c238bc669=22=
=0D=0A+=23define=C2=A0READ_WRITE_DESCRIPTOR_UUID2=C2=A0=22FFFF=22=0D=0A=C2=
=A0=0D=0A=C2=A0static=C2=A0GMainLoop=C2=A0*main_loop;=0D=0A=C2=A0static=C2=
=A0GSList=C2=A0*services;=0D=0A=40=40=C2=A0-335,18=C2=A0+343,45=C2=A0=40=40=
=C2=A0static=C2=A0gboolean=C2=A0service_get_includes(const=C2=A0GDBusProper=
tyTable=C2=A0*property,=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0DBusMessageIter=C2=A0*it=
er,=C2=A0void=C2=A0*user_data)=C2=A0=C2=A0=7B=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0const=C2=A0char=C2=A0*uuid=C2=A0=3D=C2=A0user=
_data;=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0char=C2=A0serv=
ice_path=5B100=5D=C2=A0=3D=C2=A0=7B0,=7D;=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0DBusMessageIter=C2=A0array;=0D=0A+=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0char=C2=A0*p=C2=A0=3D=C2=A0NULL;=0D=0A=C2=A0=
=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0snprintf(service_pat=
h,=C2=A0100,=C2=A0=22/service3=22);=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0printf(=22Get=C2=A0Includes:=C2=A0%s=5Cn=22,=C2=A0uuid=
);=0D=0A=C2=A0=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0p=C2=
=A0=3D=C2=A0service_path;=0D=0A+=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0printf(=22Includes=C2=A0path:=C2=A0%s=5Cn=22,=C2=A0p);=0D=0A+=
=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0dbus_message_iter_op=
en_container(iter,=C2=A0DBUS_TYPE_ARRAY,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0DBUS_TYPE_OBJECT_PATH_AS_STRING,=
=C2=A0&array);=0D=0A+=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0dbus_message_iter_append_basic(&array,=C2=A0DBUS_TYPE_OBJECT_PATH,=0D=0A=
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&p);=0D=0A+=0D=0A+=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0snprintf(service_path,=C2=A0100,=C2=A0=22/ser=
vice2=22);=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0p=C2=A0=3D=
=C2=A0service_path;=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0p=
rintf(=22Get=C2=A0Includes:=C2=A0%s=5Cn=22,=C2=A0p);=0D=0A+=0D=0A+=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0dbus_message_iter_append_basic(&arra=
y,=C2=A0DBUS_TYPE_OBJECT_PATH,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
&p);=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0dbus_message_ite=
r_close_container(iter,=C2=A0&array);=0D=0A+=0D=0A+=0D=0A=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return=C2=A0TRUE;=0D=0A+=0D=0A=C2=A0=7D=
=0D=0A=C2=A0=0D=0A+=0D=0A=C2=A0static=C2=A0gboolean=C2=A0service_exist_incl=
udes(const=C2=A0GDBusPropertyTable=C2=A0*property,=0D=0A=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0void=C2=A0*user_data)=0D=0A=C2=A0=7B=0D=0A=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0const=C2=A0char=C2=A0*uuid=C2=
=A0=3D=C2=A0user_data;=0D=0A=C2=A0=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0printf(=22Exist=C2=A0Includes:=C2=A0%s=5Cn=22,=C2=A0uu=
id);=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if=C2=A0(strncmp=
(uuid,=C2=A0=2200001802=22,=C2=A08)=C2=A0=3D=3D=C2=A00)=0D=0A+=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0return=C2=A0TRUE;=0D=0A=C2=A0=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0return=C2=A0FALSE;=0D=0A=C2=A0=7D=0D=0A=40=40=C2=A0=
-624,7=C2=A0+659,7=C2=A0=40=40=C2=A0static=C2=A0char=C2=A0*register_service=
(const=C2=A0char=C2=A0*uuid)=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0return=C2=A0path;=0D=0A=C2=A0=7D=0D=0A=C2=A0=0D=0A-static=C2=
=A0void=C2=A0create_services()=0D=0A+static=C2=A0void=C2=A0create_services_=
one(void)=0D=0A=C2=A0=7B=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0char=C2=A0*service_path;=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0uint8_t=C2=A0level=C2=A0=3D=C2=A00;=0D=0A=40=40=C2=A0-651=
,6=C2=A0+686,59=C2=A0=40=40=C2=A0static=C2=A0void=C2=A0create_services()=0D=
=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0printf(=22Register=
ed=C2=A0service:=C2=A0%s=5Cn=22,=C2=A0service_path);=C2=A0=C2=A0=7D=0D=0A=
=C2=A0=0D=0A+=0D=0A+static=C2=A0void=C2=A0create_services_two(void)=0D=0A+=
=7B=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0char=C2=A0*servic=
e_path;=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0uint8_t=C2=A0=
level=C2=A0=3D=C2=A00;=0D=0A+=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0service_path=C2=A0=3D=C2=A0register_service(IAS_UUID2);=0D=0A+=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if=C2=A0(=21service_path)=0D=
=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0return;=0D=0A+=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0if=C2=A0(=21register_characteristic(ALERT_LEVEL_CHR_UU=
ID2,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
&level,=C2=A0sizeof(level),=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0ias_alert_level_props,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0READ_WRITE_DESCRIPTOR_UUID2,=0D=
=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0desc_p=
rops,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
service_path))=C2=A0=7B=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0printf(=22Couldn't=C2=A0=
register=C2=A0Alert=C2=A0Level=C2=A0characteristic=C2=A0(IAS)=5Cn=22);=0D=
=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0g_dbus_unregister_interface(connection,=C2=A0ser=
vice_path,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0GATT_SERVICE_IFACE);=
=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0g_free(service_path);=0D=0A+=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0return;=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=7D=0D=
=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0services=C2=A0=3D=C2=A0=
g_slist_prepend(services,=C2=A0service_path);=0D=0A+=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0printf(=22Registered=C2=A0service:=C2=A0%s=5Cn=
=22,=C2=A0service_path);=C2=A0=7D=0D=0A+=0D=0A+static=C2=A0void=C2=A0create=
_services_three(void)=C2=A0=7B=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0char=C2=A0*service_path;=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0uint8_t=C2=A0level=C2=A0=3D=C2=A00;=0D=0A+=0D=0A+=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0service_path=C2=A0=3D=C2=A0regist=
er_service(IAS_UUID3);=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0if=C2=A0(=21service_path)=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return;=0D=0A+=0D=
=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if=C2=A0(=21register_ch=
aracteristic(ALERT_LEVEL_CHR_UUID1,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&level,=C2=A0sizeof(level),=0D=0A+=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0ias_alert_level_props=
,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0REA=
D_WRITE_DESCRIPTOR_UUID1,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0desc_props,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0service_path))=C2=A0=7B=0D=0A+=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0printf(=22Couldn't=C2=A0register=C2=A0Alert=C2=A0Level=C2=A0characterist=
ic=C2=A0(IAS)=5Cn=22);=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0g_dbus_unregister_interf=
ace(connection,=C2=A0service_path,=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0GATT_SERVICE_IFACE);=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0g_free(service_path);=0D=
=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0return;=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=7D=0D=0A+=0D=0A+=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0services=C2=A0=3D=C2=A0g_slist_prepend(services,=C2=A0service_p=
ath);=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0printf(=22Regis=
tered=C2=A0service:=C2=A0%s=5Cn=22,=C2=A0service_path);=C2=A0=7D=0D=0A+=0D=
=0A=C2=A0static=C2=A0void=C2=A0register_app_reply(DBusMessage=C2=A0*reply,=
=C2=A0void=C2=A0*user_data)=C2=A0=C2=A0=7B=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0DBusError=C2=A0derr;=0D=0A=40=40=C2=A0-789,7=C2=
=A0+877,9=C2=A0=40=40=C2=A0int=C2=A0main(int=C2=A0argc,=C2=A0char=C2=A0*arg=
v=5B=5D)=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0printf(=
=22gatt-service=C2=A0unique=C2=A0name:=C2=A0%s=5Cn=22,=0D=0A=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0dbus_bus_get_unique_name(connection));=0D=
=0A=C2=A0=0D=0A-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0create_serv=
ices();=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0create_servic=
es_one();=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0create_serv=
ices_two();=0D=0A+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0create_se=
rvices_three();=0D=0A=C2=A0=0D=0A=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0client=C2=A0=3D=C2=A0g_dbus_client_new(connection,=C2=A0=22org.=
bluez=22,=C2=A0=22/=22);=0D=0A=C2=A0=0D=0A--=0D=0A2.7.4=0D=0A=C2=A0=0D=0A--=
=0D=0ATo=C2=A0unsubscribe=C2=A0from=C2=A0this=C2=A0list:=C2=A0send=C2=A0the=
=C2=A0line=C2=A0=22unsubscribe=C2=A0linux-bluetooth=22=C2=A0in=C2=A0the=C2=
=A0body=C2=A0of=C2=A0a=C2=A0message=C2=A0to=C2=A0majordomo=40vger.kernel.or=
g=C2=A0More=C2=A0majordomo=C2=A0info=C2=A0at=C2=A0=C2=A0http://vger.kernel.=
org/majordomo-info.html=0D=0A=C2=A0=0D=0A=C2=A0=0D=0A=C2=A0=0D=0A=C2=A0=0D=
=0A=0D=0ARegards=0D=0AAvichal=20Agarwal=0D=0A=C2=A0

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2 BlueZ] tools/gatt-service: Add reference implementation for Included Service
  2018-05-15 14:21     ` Avichal Agarwal
@ 2018-05-16 12:46       ` Luiz Augusto von Dentz
  0 siblings, 0 replies; 3+ messages in thread
From: Luiz Augusto von Dentz @ 2018-05-16 12:46 UTC (permalink / raw)
  To: avichal; +Cc: linux-bluetooth

Hi,
On Tue, May 15, 2018 at 8:39 PM Avichal Agarwal <avichal.a@samsung.com>
wrote:




> ping
> -----Original Message-----
> From: linux-bluetooth-owner@vger.kernel.org [mailto:
linux-bluetooth-owner@vger.kernel.org] On Behalf Of Avichal Agarwal
> Sent: Tuesday, March 20, 2018 6:23 PM
> To: linux-bluetooth@vger.kernel.org
> Cc: sachin.dev@samsung.com; anupam.r@samsung.com; Avichal Agarwal
> Subject: [PATCH v2 BlueZ] tools/gatt-service: Add reference
implementation for Included Service

> Created two new primary services which will act as includes services for
first  primary service
> ---
>   tools/gatt-service.c | 94
++++++++++++++++++++++++++++++++++++++++++++++++++--
>   1 file changed, 92 insertions(+), 2 deletions(-)

> diff --git a/tools/gatt-service.c b/tools/gatt-service.c index
6bd5576..2ce8a1f 100644
> --- a/tools/gatt-service.c
> +++ b/tools/gatt-service.c
> @@ -47,9 +47,17 @@
>   /* Immediate Alert Service UUID */
>   #define IAS_UUID
  "00001802-0000-1000-8000-00805f9b34fb"
>   #define ALERT_LEVEL_CHR_UUID
  "00002a06-0000-1000-8000-00805f9b34fb"
> +#define IAS_UUID1   "A00B"
> +#define IAS_UUID2   "A00C"
> +#define IAS_UUID3   "A00D"
> +#define ALERT_LEVEL_CHR_UUID1
  "00002b06-0000-1000-8000-00805f9b34fb"
> +#define ALERT_LEVEL_CHR_UUID2
  "00002c07-0000-1000-8000-00805f9b34fb"
> +/* Random UUID for testing purpose */

>   /* Random UUID for testing purpose */
>   #define READ_WRITE_DESCRIPTOR_UUID
  "8260c653-1a54-426b-9e36-e84c238bc669"
> +#define READ_WRITE_DESCRIPTOR_UUID1
"0260c653-1a54-426b-9e36-e84c238bc669"
> +#define READ_WRITE_DESCRIPTOR_UUID2 "FFFF"

>   static GMainLoop *main_loop;
>   static GSList *services;
> @@ -335,18 +343,45 @@ static gboolean service_get_includes(const
GDBusPropertyTable *property,
>                                           DBusMessageIter *iter, void
*user_data)  {
>           const char *uuid = user_data;
> +        char service_path[100] = {0,};
> +        DBusMessageIter array;
> +        char *p = NULL;

> +        snprintf(service_path, 100, "/service3");
>           printf("Get Includes: %s\n", uuid);

> +        p = service_path;
> +
> +        printf("Includes path: %s\n", p);
> +
> +        dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
> +                        DBUS_TYPE_OBJECT_PATH_AS_STRING, &array);
> +
> +        dbus_message_iter_append_basic(&array, DBUS_TYPE_OBJECT_PATH,
> +                                                        &p);
> +
> +        snprintf(service_path, 100, "/service2");
> +        p = service_path;
> +        printf("Get Includes: %s\n", p);
> +
> +        dbus_message_iter_append_basic(&array, DBUS_TYPE_OBJECT_PATH,
> +                                                        &p);
> +        dbus_message_iter_close_container(iter, &array);
> +
> +
>           return TRUE;
> +
>   }

> +
>   static gboolean service_exist_includes(const GDBusPropertyTable
*property,
>                                                           void *user_data)
>   {
>           const char *uuid = user_data;

>           printf("Exist Includes: %s\n", uuid);
> +        if (strncmp(uuid, "00001802", 8) == 0)
> +                return TRUE;

>           return FALSE;
>   }
> @@ -624,7 +659,7 @@ static char *register_service(const char *uuid)
>           return path;
>   }

> -static void create_services()
> +static void create_services_one(void)
>   {
>           char *service_path;
>           uint8_t level = 0;
> @@ -651,6 +686,59 @@ static void create_services()
>           printf("Registered service: %s\n", service_path);  }

> +
> +static void create_services_two(void)
> +{
> +        char *service_path;
> +        uint8_t level = 0;
> +
> +        service_path = register_service(IAS_UUID2);
> +        if (!service_path)
> +                return;
> +
> +        if (!register_characteristic(ALERT_LEVEL_CHR_UUID2,
> +                                                &level, sizeof(level),
> +                                                ias_alert_level_props,
> +
  READ_WRITE_DESCRIPTOR_UUID2,
> +                                                desc_props,
> +                                                service_path)) {
> +                printf("Couldn't register Alert Level characteristic
(IAS)\n");
> +                g_dbus_unregister_interface(connection, service_path,
> +
  GATT_SERVICE_IFACE);
> +                g_free(service_path);
> +                return;
> +        }
> +        services = g_slist_prepend(services, service_path);
> +        printf("Registered service: %s\n", service_path); }
> +
> +static void create_services_three(void) {
> +        char *service_path;
> +        uint8_t level = 0;
> +
> +        service_path = register_service(IAS_UUID3);
> +        if (!service_path)
> +                return;
> +
> +        if (!register_characteristic(ALERT_LEVEL_CHR_UUID1,
> +                                                &level, sizeof(level),
> +                                                ias_alert_level_props,
> +
  READ_WRITE_DESCRIPTOR_UUID1,
> +                                                desc_props,
> +                                                service_path)) {
> +                printf("Couldn't register Alert Level characteristic
(IAS)\n");
> +                g_dbus_unregister_interface(connection, service_path,
> +
  GATT_SERVICE_IFACE);
> +                g_free(service_path);
> +                return;
> +        }
> +
> +
> +        services = g_slist_prepend(services, service_path);
> +        printf("Registered service: %s\n", service_path); }
> +
>   static void register_app_reply(DBusMessage *reply, void *user_data)  {
>           DBusError derr;
> @@ -789,7 +877,9 @@ int main(int argc, char *argv[])
>           printf("gatt-service unique name: %s\n",
>                                   dbus_bus_get_unique_name(connection));

> -        create_services();
> +        create_services_one();
> +        create_services_two();
> +        create_services_three();

>           client = g_dbus_client_new(connection, "org.bluez", "/");

> --
> 2.7.4

Applied, thanks.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-05-16 12:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20180320125349epcas1p1998e73353a1929039aecbfb98dfa4b51@epcas1p1.samsung.com>
2018-03-20 12:53 ` [PATCH v2 BlueZ] tools/gatt-service: Add reference implementation for Included Service Avichal Agarwal
     [not found]   ` <CGME20180320125349epcas1p1998e73353a1929039aecbfb98dfa4b51@epcms5p4>
2018-05-15 14:21     ` Avichal Agarwal
2018-05-16 12:46       ` Luiz Augusto von Dentz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.