Re: [PATCH 2/3] profiles/battery: Add Bluetooth LE Battery service

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

 



Hi Bastien,

On Tue, Oct 24, 2017 at 3:30 PM, Bastien Nocera <hadess@xxxxxxxxxx> wrote:
> On Tue, 2017-10-24 at 14:58 +0300, Luiz Augusto von Dentz wrote:
>> Hi Bastien,
>>
>> On Sat, Oct 21, 2017 at 2:03 AM, Bastien Nocera <hadess@xxxxxxxxxx>
>> wrote:
>> > Only the Battery Level characteristic was tested with a
>> > Microsoft Arc Touch Mouse SE.
>> >
>> > This patch however hopes to support both the Battery Level and
>> > the Battery Power State characteristics.
>> > ---
>> >  Makefile.plugins           |   3 +
>> >  doc/battery-api.txt        |  36 +++
>> >  profiles/battery/battery.c | 568
>> > +++++++++++++++++++++++++++++++++++++++++++++
>> >  3 files changed, 607 insertions(+)
>> >  create mode 100644 doc/battery-api.txt
>> >  create mode 100644 profiles/battery/battery.c
>> >
>> > diff --git a/Makefile.plugins b/Makefile.plugins
>> > index 73377e532..1f3b5b552 100644
>> > --- a/Makefile.plugins
>> > +++ b/Makefile.plugins
>> > @@ -100,6 +100,9 @@ builtin_sources += profiles/midi/midi.c \
>> >  builtin_ldadd += @ALSA_LIBS@
>> >  endif
>> >
>> > +builtin_modules += battery
>> > +builtin_sources += profiles/battery/battery.c
>> > +
>> >  if SIXAXIS
>> >  plugin_LTLIBRARIES += plugins/sixaxis.la
>> >  plugins_sixaxis_la_SOURCES = plugins/sixaxis.c
>> > diff --git a/doc/battery-api.txt b/doc/battery-api.txt
>> > new file mode 100644
>> > index 000000000..6d28f7b17
>> > --- /dev/null
>> > +++ b/doc/battery-api.txt
>> > @@ -0,0 +1,36 @@
>> > +BlueZ D-Bus Battery API description
>> > +***********************************
>> > +
>> > +
>> > +Battery hierarchy
>> > +=================
>> > +
>> > +Service                org.bluez
>> > +Interface      org.bluez.Battery1
>> > +Object path    [variable
>> > prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX
>> > +
>> > +Properties     boolean Present [readonly]
>> > +
>> > +                       Whether the device has a battery present.
>>
>> Not sure why would we have this as a property, if the battery is not
>> present then we should not even publish the interface.
>
> UPower has a "present" property as well, so this matches both the
> service and the UPower properties. It avoids logic bugs where the
> battery presence changes but we'd forget to export/unexport the
> interface (or races). Finally, it's useful information for devices
> which have another means of power (I can imagine some devices having
> batteries, but also working wired, with a removable battery).

Not sure what another power source has to do with it? Power and
battery are 2 different things. About race conditions, if you do have
the interface it means it is battery powered if we do set its presence
to false all other properties should be invalidated as well and the
same should go when battery is plugged again all properties have to be
fetched once again, so imo it easier to add and remove the entire
interface to avoid having properties in inconsistent state. Btw,
forgetting to export/unexport may happen either way if the device
decides to remove the entire service that is what should happen, in
fact is what I would do if implementing the service so there is no
chance the remote side would maintain a subscription for something
that is not actually present anymore.

>> > +               boolean Rechargeable [readonly]
>> > +
>> > +                       Whether the battery built into the device
>> > is rechargeable
>> > +                       or not.
>
> We wouldn't be able to export this property either if the battery
> wasn't present above, and we did hide the interface.
> <snip>
>> > +       /* Values explained at:
>> > +        * https://www.bluetooth.com/specifications/gatt/viewer?att
>> > ributeXmlFile=org.bluetooth.characteristic.battery_power_state.xml
>> > */
>>
>> I guess it is better to quote the actual text instead of the link
>> here.
>
> Sure. I'll send an updated patch with that.
>
> <snip>
>> > --
>> > 2.14.2
>>
>> Otherwise looks good.
>
> Great!



-- 
Luiz Augusto von Dentz
--
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