2017-01-23 16:44:51

by yon ar c'hall

[permalink] [raw]
Subject: Blood Pressure GATT LE profile

Hello,

The Blood Pressure LE profile is not listed on the
http://www.bluez.org/profiles web page; can you please confirm whether this
information is up to date or not regarding Bluez 5.43 ?

Note : we downloaded the last Bluez source archive, and tried to
understand how the GATT LE profiles were implemented, e.g. for the
Health Thermometer profile, but we are missing some points of the
bluez's user-space architecture (are the "doc/*-api.txt" and the
"plugin/gatt-example.c" files still valid ? Is it just a matter of
D-BUS configuration/declaration as we can see in
"test/test-thermometer.py" ?). If it turns out that we have to
implement the Blood Pressure profile, could we get a pointer to some
programming information, please ?

Thanks.
-Yon


2017-01-24 19:19:58

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: Blood Pressure GATT LE profile

Hi,

On Tue, Jan 24, 2017 at 9:02 PM, Felipe Ferreri Tonello
<[email protected]> wrote:
> Hi Yon,
>
> On 24/01/17 15:53, yon ar c'hall wrote:
>> Hi Felipe,
>>
>> On Tue, Jan 24, 2017 at 3:45 PM, Felipe Ferreri Tonello
>> <[email protected]> wrote:
>>
>>> plugin/gatt-example.c is not in the repository, as it is relevant
>>> anymore. gatt-example implemented a gatt-server using older deprecated API.
>>
>> Oops, I made a typo : the sub-folder is "plugins" (with "s"), not
>> "plugin", and it's still in the bluez archive (5.43).
>
> That is true, but it is still not usable anymore. From git log:
>
> commit cc80afff47938a2c93aff0f7904fd937e6333908
> Author: Luiz Augusto von Dentz <[email protected]>
> Date: Tue Nov 8 11:00:28 2016 +0200
>
> build: Remove gatt-example plugin
>
> This examples can be done over D-Bus already so it makes no sense to
> have
> it as a plugin and in fact it currently it doesn't even work since
> it was
> never ported to the new code under src/shared.
>
>>
>>> Anyway, there are two ways to implement a GATT client profile (Central
>>> role). As a generic bluetoothd plugin that will export an API to
>>> applications via D-Bus, more likely.
>>
>> We didn't find any source of a bluetoothd plugin implementing a GATT
>> LE profile (such as those listed on http://www.bluez.org/profiles/ :
>> HTP, HoG,...). Sorry, we're still missing something... Would there be
>> any piece of doc that could help for creating a bluetoothd plugin, as
>> it looks to be the correct way to proceed ?
>
> Not really. Just source code.
>
> You can check profile implementations under profiles/ and then just
> check the code there.
>
>>
>>> Or in your own application using the GATT D-Bus API that bluetoothd exports.
>>> test/example-gatt-client implements the Heart Rate profile quite simply
>>> using the D-Bus API.
>>
>> We do understand the Python code of test/example-gatt-client :-) It
>> clearly helps to get the whole picture.
>> Thanks for the pointer.
>>

In case you are looking for C examples, take a look at bluetoothctl
code under client/, it is pretty complete generic GATT client.


--
Luiz Augusto von Dentz

2017-01-24 19:02:15

by Felipe Ferreri Tonello

[permalink] [raw]
Subject: Re: Blood Pressure GATT LE profile

Hi Yon,

On 24/01/17 15:53, yon ar c'hall wrote:
> Hi Felipe,
>
> On Tue, Jan 24, 2017 at 3:45 PM, Felipe Ferreri Tonello
> <[email protected]> wrote:
>
>> plugin/gatt-example.c is not in the repository, as it is relevant
>> anymore. gatt-example implemented a gatt-server using older deprecated API.
>
> Oops, I made a typo : the sub-folder is "plugins" (with "s"), not
> "plugin", and it's still in the bluez archive (5.43).

That is true, but it is still not usable anymore. From git log:

commit cc80afff47938a2c93aff0f7904fd937e6333908
Author: Luiz Augusto von Dentz <[email protected]>
Date: Tue Nov 8 11:00:28 2016 +0200

build: Remove gatt-example plugin

This examples can be done over D-Bus already so it makes no sense to
have
it as a plugin and in fact it currently it doesn't even work since
it was
never ported to the new code under src/shared.

>
>> Anyway, there are two ways to implement a GATT client profile (Central
>> role). As a generic bluetoothd plugin that will export an API to
>> applications via D-Bus, more likely.
>
> We didn't find any source of a bluetoothd plugin implementing a GATT
> LE profile (such as those listed on http://www.bluez.org/profiles/ :
> HTP, HoG,...). Sorry, we're still missing something... Would there be
> any piece of doc that could help for creating a bluetoothd plugin, as
> it looks to be the correct way to proceed ?

Not really. Just source code.

You can check profile implementations under profiles/ and then just
check the code there.

>
>> Or in your own application using the GATT D-Bus API that bluetoothd exports.
>> test/example-gatt-client implements the Heart Rate profile quite simply
>> using the D-Bus API.
>
> We do understand the Python code of test/example-gatt-client :-) It
> clearly helps to get the whole picture.
> Thanks for the pointer.
>

--
Felipe


Attachments:
0x92698E6A.asc (7.01 kB)

2017-01-24 15:53:07

by yon ar c'hall

[permalink] [raw]
Subject: Re: Blood Pressure GATT LE profile

Hi Felipe,

On Tue, Jan 24, 2017 at 3:45 PM, Felipe Ferreri Tonello
<[email protected]> wrote:

> plugin/gatt-example.c is not in the repository, as it is relevant
> anymore. gatt-example implemented a gatt-server using older deprecated API.

Oops, I made a typo : the sub-folder is "plugins" (with "s"), not
"plugin", and it's still in the bluez archive (5.43).

> Anyway, there are two ways to implement a GATT client profile (Central
> role). As a generic bluetoothd plugin that will export an API to
> applications via D-Bus, more likely.

We didn't find any source of a bluetoothd plugin implementing a GATT
LE profile (such as those listed on http://www.bluez.org/profiles/ :
HTP, HoG,...). Sorry, we're still missing something... Would there be
any piece of doc that could help for creating a bluetoothd plugin, as
it looks to be the correct way to proceed ?

> Or in your own application using the GATT D-Bus API that bluetoothd exports.
> test/example-gatt-client implements the Heart Rate profile quite simply
> using the D-Bus API.

We do understand the Python code of test/example-gatt-client :-) It
clearly helps to get the whole picture.
Thanks for the pointer.

-Yon

2017-01-24 14:45:32

by Felipe Ferreri Tonello

[permalink] [raw]
Subject: Re: Blood Pressure GATT LE profile

Hi Yon,

On 23/01/17 16:44, yon ar c'hall wrote:
> Hello,
>
> The Blood Pressure LE profile is not listed on the
> http://www.bluez.org/profiles web page; can you please confirm whether this
> information is up to date or not regarding Bluez 5.43 ?

Yes.

>
> Note : we downloaded the last Bluez source archive, and tried to
> understand how the GATT LE profiles were implemented, e.g. for the
> Health Thermometer profile, but we are missing some points of the
> bluez's user-space architecture (are the "doc/*-api.txt" and the
> "plugin/gatt-example.c" files still valid ?

plugin/gatt-example.c is not in the repository, as it is relevant
anymore. gatt-example implemented a gatt-server using older deprecated API.

Anyway, there are two ways to implement a GATT client profile (Central
role). As a generic bluetoothd plugin that will export an API to
applications via D-Bus, more likely. Or in your own application using
the GATT D-Bus API that bluetoothd exports.

> Is it just a matter of
> D-BUS configuration/declaration as we can see in
> "test/test-thermometer.py" ?). If it turns out that we have to
> implement the Blood Pressure profile, could we get a pointer to some
> programming information, please ?

test/example-gatt-client implements the Heart Rate profile quite simply
using the D-Bus API.

--
Felipe


Attachments:
0x92698E6A.asc (7.01 kB)