Re: Non-consecutive handle values in GATT

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

 



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@xxxxxxxxx> wrote:
>> Hi Andrejs,
>>
>> On Tue, Mar 17, 2015 at 3:33 PM, Andrejs Hanins <andrejs.hanins@xxxxxxxx> 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?
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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