All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrejs Hanins <andrejs.hanins@ubnt.com>
To: "linux-bluetooth@vger.kernel.org"
	<linux-bluetooth@vger.kernel.org>,
	marcin.kraglak@tieto.com, szymon.janc@tieto.com
Subject: Non-consecutive handle values in GATT
Date: Wed, 04 Mar 2015 20:45:44 +0200	[thread overview]
Message-ID: <54F752D8.1000605@ubnt.com> (raw)

Hello,

     I'm experimenting with an LE peripheral device which provides GATT 
services described by attributes with non-consecutive handle values, 
i.e. there are "gaps" between handle values. According to the Bluetooth 
Core specification 4.0 (Volume 3, Part G, "2.5.1 Overview") it is allowed:

      Although the Attribute Handle values are in increasing order, 
following Attribute Handle values may differ by more than one.

     Based on my experiments, BlueZ 5.28 and also git-master as of today 
does not support non-consecutive handle values GATT table. As a result, 
I can't connect to my device because gatt-client fails to initialize 
properly. The failing place is in discover_descs():

       if (gatt_db_attribute_get_handle(attr) !=
                             chrc_data->value_handle)
             goto failed;

     The value of chrc_data->value_handle is correct and matches GATT 
table one the device, but the attr->handle has the value of previous 
attribute (Primary Service UUID in my case) +2. This handle value 
calculation happens in gatt_db_service_add_characteristic() which has 
strange code:

     /* We set handle of characteristic value, which will be added next */
     put_le16(get_handle_at_index(service, i - 1) + 2, &value[1]);

     Before trying to fix the problem by myself it would be great to 
hear some comments about this issue. Does it seem like a bug or I missed 
something?

     As a note, I can successfully connect to my LE peripheral from an 
iPhone LightBlue app, which does not posses any issues during GATT 
discovery and can read/write the characteristic on the device.


BR, Andrey

             reply	other threads:[~2015-03-04 18:45 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-04 18:45 Andrejs Hanins [this message]
2015-03-04 21:39 ` Non-consecutive handle values in GATT Arman Uguray
2015-03-04 22:21   ` Lukasz Rymanowski
2015-03-04 22:34     ` Andrejs Hanins
2015-03-05  8:39       ` Luiz Augusto von Dentz
2015-03-16 11:05         ` Luiz Augusto von Dentz
2015-03-16 13:20           ` Andrejs Hanins
2015-03-16 13:54             ` Andrejs Hanins
2015-03-16 14:13               ` Luiz Augusto von Dentz
2015-03-16 14:22                 ` Andrejs Hanins
2015-03-17 13:07                   ` Luiz Augusto von Dentz
2015-03-17 13:33                     ` Andrejs Hanins
2015-03-17 15:01                       ` Luiz Augusto von Dentz
2015-03-18 13:27                         ` Luiz Augusto von Dentz
2015-03-18 13:54                           ` Andrejs Hanins

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54F752D8.1000605@ubnt.com \
    --to=andrejs.hanins@ubnt.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=marcin.kraglak@tieto.com \
    --cc=szymon.janc@tieto.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.