GATT server does not forward written attribute to application

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

During Bluetooth Qualification tests with PTS I found out that if an
attribute provided by a GATT server created by BlueZ 5.50 running on my
IUT is written by remote, the value of this attribute is not provided
by 'bluetoothd' to the upper layer. With a minor modification of
'bluetoothd' I managed to get the tests through, so I'd like to get
feedback from the community, whether this modification was necessary or
may be there's another way of getting attribute write working.

For GATT tests I used 'btgatt-server' application provided by BlueZ. In
order to test writing characteristic value I made "Device Name"
provided by the application writable. It turned out, that the
'gap_device_name_write_cb' function that is called by the daemon upon
writing "Device Name" always receives 'value=NULL' and 'len=0'. The
reason for this is that in the 'gatt_db_attribute_write' call in
'prep_write_cb' in 'gatt-server.c' file in 'bluetoothd' both 'value'
and 'len' are hard-coded to NULL and 0 respectively.

With the following modification in 'gatt-server.c' the callback in
'btgatt-server' application receives the arguments it expects and the
GATT tests can be passed:

--- a/src/shared/gatt-server.c	2018-06-01 10:37:36.000000000 +0200
+++ b/src/shared/gatt-server.c	2019-12-13 12:16:58.000000000 +0100
@@ -1291,7 +1291,7 @@
 	pwcd->length = length;
 	pwcd->server = server;
 
-	status = gatt_db_attribute_write(attr, offset, NULL, 0,
+	status = gatt_db_attribute_write(attr, offset, pwcd->pdu + 4,
pwcd->length - 4,
 						BT_ATT_OP_PREP_WRITE_RE
Q,
 						server->att,
 						prep_write_complete_cb,
pwcd);


Best regards
Konstantin





[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux