From: Andrejs Hanins <andrejs.hanins@ubnt.com>
To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: Lukasz Rymanowski <lukasz.rymanowski@gmail.com>,
Arman Uguray <armansito@chromium.org>,
"linux-bluetooth@vger.kernel.org"
<linux-bluetooth@vger.kernel.org>,
Marcin Kraglak <marcin.kraglak@tieto.com>,
Szymon Janc <szymon.janc@tieto.com>
Subject: Re: Non-consecutive handle values in GATT
Date: Wed, 18 Mar 2015 15:54:37 +0200 [thread overview]
Message-ID: <5509839D.3080506@ubnt.com> (raw)
In-Reply-To: <CABBYNZLK-rf8Mw-5GuW-UEi1SwRw6R9c-OOd4VwL3wY9c1q++g@mail.gmail.com>
Hi Luiz,
On 2015.03.18. 15:27, Luiz Augusto von Dentz wrote:
> Hi Andrejs,
>
> On Tue, Mar 17, 2015 at 5:01 PM, Luiz Augusto von Dentz
> <luiz.dentz@gmail.com> wrote:
>> Hi Andrejs,
>>
>> On Tue, Mar 17, 2015 at 3:33 PM, Andrejs Hanins <andrejs.hanins@ubnt.com> wrote:
>>> Hi Luiz,
>>>
>>> On 2015.03.17. 15:07, Luiz Augusto von Dentz wrote:
>>>> Hi Andrejs,
>>>>
>>>>
>>>>>>>> ACL data: handle 64 flags 0x02 dlen 20
>>>>>>> ATT: Read By Type resp (0x09)
>>>>>>> length: 7
>>>>>>> handle 0x0110, value 0x02 0x11 0x01 0x00 0x2a
>>>>>>> handle 0x0120, value 0x02 0x21 0x01 0x01 0x2a
>>>>>>> < ACL data: handle 64 flags 0x00 dlen 11
>>>>>>> ATT: Read By Type req (0x08)
>>>>>>> start 0x0121, end 0x0121
>>>>>>> type-uuid 0x2803 <--- as without patch, this seems to be suspicious. Single att read request with wrong UUID.
>>>>>>
>>>>>> Maybe this is off by 1 error except if start 0x0100, end 0x0121 range
>>>>>> actually exclude the last, but it would be still wrong the start
>>>>>> 0x0121, end 0x0121, anyway this seems to be some other problem.
>>>>
>>>> Actually this is fine, we are discovering the characteristics since
>>>> they may not fit in a single frame we just continue from where we stop
>>>> at 0x0121 until the end of the service range with just happen to be
>>>> 0x0121.
>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> HCI Event: Number of Completed Packets (0x13) plen 5
>>>>>>> handle 64 packets 2
>>>>>>>> ACL data: handle 64 flags 0x02 dlen 9
>>>>>>> ATT: Error (0x01)
>>>>>>> Error: Attribute not found (10)
>>>>>>> Read By Type req (0x08) on handle 0x0121
>>>>>>> < ACL data: handle 64 flags 0x00 dlen 9
>>>>>>> ATT: Find Information req (0x04)
>>>>>>> start 0x0112, end 0x011f
>>>>>>>> ACL data: handle 64 flags 0x02 dlen 9
>>>>>>> ATT: Error (0x01)
>>>>>>> Error: Attribute not found (10)
>>>>>>> Find Information req (0x04) on handle 0x0112
>>>>>>> < ACL data: handle 64 flags 0x00 dlen 11
>>>>>>> ATT: Read By Type req (0x08)
>>>>>>> start 0x0300, end 0x0320
>>>>>>> type-uuid 0x2803
>>>>>>>> HCI Event: Number of Completed Packets (0x13) plen 5
>>>>>>> handle 64 packets 1
>>>>>>>> ACL data: handle 64 flags 0x02 dlen 27
>>>>>>> ATT: Read By Type resp (0x09)
>>>>>>> length: 21
>>>>>>> handle 0x0310, value 0x3e 0x11 0x03 0x34 0x5b 0xe2 0x12 0x5e 0xb1 0x45 0x03 0xb6 0x29 0x24 0x55 0x8a 0x11 0x1e 0x36
>>>>>>> < ACL data: handle 64 flags 0x00 dlen 11
>>>>>>> ATT: Read By Type req (0x08)
>>>>>>> start 0x0311, end 0x0320
>>>>>>> type-uuid 0x2803
>>>>>>>> HCI Event: Number of Completed Packets (0x13) plen 5
>>>>>>> handle 64 packets 2
>>>>>>>> ACL data: handle 64 flags 0x02 dlen 9
>>>>>>> ATT: Error (0x01)
>>>>>>> Error: Attribute not found (10)
>>>>>>> Read By Type req (0x08) on handle 0x0311
>>>>>>
>>>>>> Can you collect the trace in binary format, e.g. btmon -w <file>, I
>>>>>> can perhaps try to create the very same database for unit tests, also
>>>>>> it would be good to have bluetoothd traces.
>>>>> Traces attached.
>>>>
>>>> Can you please enable bt_gatt_client debug with the following patch:
>>>>
>>>> diff --git a/src/device.c b/src/device.c
>>>> index aaa9f43..6a23adc 100644
>>>> --- a/src/device.c
>>>> +++ b/src/device.c
>>>> @@ -3989,6 +3989,11 @@ static void
>>>> gatt_client_service_changed(uint16_t start_handle,
>>>> DBG("start 0x%04x, end: 0x%04x", start_handle, end_handle);
>>>> }
>>>>
>>>> +static void gatt_debug(const char *str, void *user_data)
>>>> +{
>>>> + DBG("%s", str);
>>>> +}
>>>> +
>>>> static void gatt_client_init(struct btd_device *device)
>>>> {
>>>> gatt_client_cleanup(device);
>>>> @@ -4000,6 +4005,8 @@ static void gatt_client_init(struct btd_device *device)
>>>> return;
>>>> }
>>>>
>>>> + bt_gatt_client_set_debug(device->client, gatt_debug, NULL, NULL);
>>>> +
>>>> /* Notify attio so it can react to notifications */
>>>> g_slist_foreach(device->attios, attio_connected, device->attrib);
>>>>
>>>>
>>> See attachments. Fresh dumps from both btmon and daemon. With your patch "shared/gatt-client: Fix handling of services" applied.
>>
>> Still not sure what is going own, it seems the 10 is
>> BT_ATT_ERROR_ATTRIBUTE_NOT_FOUND but I suspect there is something else
>> wrong since in this case we should just proceed to the next operation.
>> Anyway I will send some cleanup patches and Im also planning to have
>> proper errors so in future we can tell what is going on.
>
> Can you confirm that you have the following attributes:
>
> bluetoothd[12005]: src/device.c:gatt_debug() Primary services found: 3
> bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0100, end:
> 0x0121, uuid: 00001800-0000-1000-8000-00805f9b34fb
> bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0200, end:
> 0x0200, uuid: 00001801-0000-1000-8000-00805f9b34fb
> bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0300, end:
> 0x0320, uuid: 8832ab08-ba2d-0184-004c-68c08e2190bf
> bluetoothd[12005]: src/device.c:gatt_debug() Characteristics found: 2
> bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0110, end:
> 0x011f, value: 0x0111, props: 0x02, uuid: 00002a00-0000-1
> bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0120, end:
> 0x0121, value: 0x0121, props: 0x02, uuid: 00002a01-0000-1
> bluetoothd[12005]: src/device.c:gatt_debug() Characteristics found: 1
> bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0310, end:
> 0x0320, value: 0x0311, props: 0x3e, uuid: 361e118a-5524-2
Full UUID should be { 0x361e118a, 0x5524, 0x29b6, { 0x03, 0x45, 0xb1, 0x5e, 0x12, 0xe2, 0x5b, 0x34 } }. I guess, it is just truncated output.
There should be also a CCC (UUID 0x2902) with handle 0x0320 for this characteristic.
Otherwise is OK.
>
> Anything missing?
>
prev parent reply other threads:[~2015-03-18 13:54 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-04 18:45 Non-consecutive handle values in GATT Andrejs Hanins
2015-03-04 21:39 ` 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 [this message]
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=5509839D.3080506@ubnt.com \
--to=andrejs.hanins@ubnt.com \
--cc=armansito@chromium.org \
--cc=linux-bluetooth@vger.kernel.org \
--cc=luiz.dentz@gmail.com \
--cc=lukasz.rymanowski@gmail.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox