2012-08-30 11:26:19

by Ganir, Chen

[permalink] [raw]
Subject: [PATCH RFC] Add Generic Device Battery API

From: Chen Ganir <[email protected]>

This API proposal allows exposing peer device battery information to the D-Bus
clients. Profiles supporting peer device battery information (such as AVRCP,
LE Battery client) may use the internal API (next patch set) to register or
unregister batteries to be listed under the device object path. These batteries
have multiple read-only prpoerties that can be read by the D-Bus clients. In
addition, the new org.bluez.Battery interface allows sending PropertyChanged for
battery properties (such as Battery level).

Battery properties currently include the battery level, namespace and
description (currently used by the LE battery client). More properties can be
added or removed as we see fit in the future.

Comments on this patch will be appreciated.

Chen Ganir (1):
battery: Add generic device battery interface

doc/battery-api.txt | 34 ++++++++++++++++++++++++++++++++++
doc/device-api.txt | 5 +++++
2 files changed, 39 insertions(+)
create mode 100644 doc/battery-api.txt

--
1.7.9.5



2012-08-30 11:26:20

by Ganir, Chen

[permalink] [raw]
Subject: [PATCH RFC] battery: Add generic device battery interface

From: Chen Ganir <[email protected]>

Add the D-Bus API documentation for the new generic device battery
interface. This API provides generic access to peer devcice
batteries.
---
doc/battery-api.txt | 34 ++++++++++++++++++++++++++++++++++
doc/device-api.txt | 5 +++++
2 files changed, 39 insertions(+)
create mode 100644 doc/battery-api.txt

diff --git a/doc/battery-api.txt b/doc/battery-api.txt
new file mode 100644
index 0000000..da82024
--- /dev/null
+++ b/doc/battery-api.txt
@@ -0,0 +1,34 @@
+BlueZ D-Bus Battery API description
+****************************************
+
+ Texas Instruments, Inc. <[email protected]>
+
+Device Battery hierarchy
+=====================================
+
+Service org.bluez
+Interface org.bluez.Battery
+Object path [variable prefix]/{hci0,..}/dev_XX_XX_XX_XX_XX_XX/BATTYYYY
+YYYY is numeric value between 0 and 9999.
+
+Methods dict GetProperties()
+
+ Returns all properties for the interface. See the
+ Properties section for the available properties.
+
+Signals PropertyChanged(string name, variant value)
+
+ This signal indicates a changed value of the given
+ property.
+
+Properties uint16 Level [readonly]
+
+ Battery level (0-100).
+
+ uint16 Description [readonly]
+
+ Battery description.
+
+ uint16 Namespace [readonly]
+
+ Battery Namespace.
diff --git a/doc/device-api.txt b/doc/device-api.txt
index 1f0dc96..c98d539 100644
--- a/doc/device-api.txt
+++ b/doc/device-api.txt
@@ -179,3 +179,8 @@ Properties string Address [readonly]
Note that this property can exhibit false-positives
in the case of Bluetooth 2.1 (or newer) devices that
have disabled Extended Inquiry Response support.
+
+ array{object} Batteries [readonly]
+
+ List of device battery object paths that represents the available
+ batteries on the remote device.
--
1.7.9.5


2012-09-10 13:24:26

by Claudio Takahasi

[permalink] [raw]
Subject: Re: [PATCH RFC] battery: Add generic device battery interface

Hi Chen Ganir:

On Sun, Sep 9, 2012 at 2:59 AM, Chen Ganir <[email protected]> wrote:
> Claudio,
>
>
> On 09/06/2012 10:34 PM, Claudio Takahasi wrote:
>>
>> Hi Chen Ganir:
>>
>> On Thu, Aug 30, 2012 at 8:26 AM, <[email protected]> wrote:
>>>
>>> From: Chen Ganir <[email protected]>
>>>
>>> Add the D-Bus API documentation for the new generic device battery
>>> interface. This API provides generic access to peer devcice
>>> batteries.
>>> ---
>>> doc/battery-api.txt | 34 ++++++++++++++++++++++++++++++++++
>>> doc/device-api.txt | 5 +++++
>>> 2 files changed, 39 insertions(+)
>>> create mode 100644 doc/battery-api.txt
>>>
>>> diff --git a/doc/battery-api.txt b/doc/battery-api.txt
>>> new file mode 100644
>>> index 0000000..da82024
>>> --- /dev/null
>>> +++ b/doc/battery-api.txt
>>> @@ -0,0 +1,34 @@
>>> +BlueZ D-Bus Battery API description
>>> +****************************************
>>> +
>>> + Texas Instruments, Inc. <[email protected]>
>>> +
>>> +Device Battery hierarchy
>>> +=====================================
>>> +
>>> +Service org.bluez
>>> +Interface org.bluez.Battery
>>> +Object path [variable
>>> prefix]/{hci0,..}/dev_XX_XX_XX_XX_XX_XX/BATTYYYY
>>> +YYYY is numeric value between 0 and 9999.
>>> +
>>> +Methods dict GetProperties()
>>> +
>>> + Returns all properties for the interface. See the
>>> + Properties section for the available properties.
>>> +
>>> +Signals PropertyChanged(string name, variant value)
>>> +
>>> + This signal indicates a changed value of the given
>>> + property.
>>> +
>>> +Properties uint16 Level [readonly]
>>> +
>>> + Battery level (0-100).
>>> +
>>> + uint16 Description [readonly]
>>> +
>>> + Battery description.
>>> +
>>> + uint16 Namespace [readonly]
>>> +
>>> + Battery Namespace.
>>
>>
>> IMO "Description" and "Namespace" should be string:
>> http://developer.bluetooth.org/gatt/Pages/GattNamespaceDescriptors.aspx
>>
>> For BLE Presentation Format is mandatory(Namespace and Description).
>> For AVRCP, probably it doesn't make sense. I recommend to include
>> additional description for these fields.
>>
> After discussing this issue with Johan, we decided to remove the Namespace
> and Description properties from the generic battery. Do you think we should
> have those properties or can we exclude them ? Do you see any use case for
> those properties?
>

IMO, we can remove them. It is easier to extend the API later than
remove properties from the API.
Those properties could be useful for PTS testing or qualification, but
we can use gatttool to discover and read descriptors.

Regards,
Claudio

2012-09-09 05:59:32

by Ganir, Chen

[permalink] [raw]
Subject: Re: [PATCH RFC] battery: Add generic device battery interface

Claudio,

On 09/06/2012 10:34 PM, Claudio Takahasi wrote:
> Hi Chen Ganir:
>
> On Thu, Aug 30, 2012 at 8:26 AM, <[email protected]> wrote:
>> From: Chen Ganir <[email protected]>
>>
>> Add the D-Bus API documentation for the new generic device battery
>> interface. This API provides generic access to peer devcice
>> batteries.
>> ---
>> doc/battery-api.txt | 34 ++++++++++++++++++++++++++++++++++
>> doc/device-api.txt | 5 +++++
>> 2 files changed, 39 insertions(+)
>> create mode 100644 doc/battery-api.txt
>>
>> diff --git a/doc/battery-api.txt b/doc/battery-api.txt
>> new file mode 100644
>> index 0000000..da82024
>> --- /dev/null
>> +++ b/doc/battery-api.txt
>> @@ -0,0 +1,34 @@
>> +BlueZ D-Bus Battery API description
>> +****************************************
>> +
>> + Texas Instruments, Inc. <[email protected]>
>> +
>> +Device Battery hierarchy
>> +=====================================
>> +
>> +Service org.bluez
>> +Interface org.bluez.Battery
>> +Object path [variable prefix]/{hci0,..}/dev_XX_XX_XX_XX_XX_XX/BATTYYYY
>> +YYYY is numeric value between 0 and 9999.
>> +
>> +Methods dict GetProperties()
>> +
>> + Returns all properties for the interface. See the
>> + Properties section for the available properties.
>> +
>> +Signals PropertyChanged(string name, variant value)
>> +
>> + This signal indicates a changed value of the given
>> + property.
>> +
>> +Properties uint16 Level [readonly]
>> +
>> + Battery level (0-100).
>> +
>> + uint16 Description [readonly]
>> +
>> + Battery description.
>> +
>> + uint16 Namespace [readonly]
>> +
>> + Battery Namespace.
>
> IMO "Description" and "Namespace" should be string:
> http://developer.bluetooth.org/gatt/Pages/GattNamespaceDescriptors.aspx
>
> For BLE Presentation Format is mandatory(Namespace and Description).
> For AVRCP, probably it doesn't make sense. I recommend to include
> additional description for these fields.
>
After discussing this issue with Johan, we decided to remove the
Namespace and Description properties from the generic battery. Do you
think we should have those properties or can we exclude them ? Do you
see any use case for those properties?

>> diff --git a/doc/device-api.txt b/doc/device-api.txt
>> index 1f0dc96..c98d539 100644
>> --- a/doc/device-api.txt
>> +++ b/doc/device-api.txt
>> @@ -179,3 +179,8 @@ Properties string Address [readonly]
>> Note that this property can exhibit false-positives
>> in the case of Bluetooth 2.1 (or newer) devices that
>> have disabled Extended Inquiry Response support.
>> +
>> + array{object} Batteries [readonly]
>> +
>> + List of device battery object paths that represents the available
>> + batteries on the remote device.
>> --
>> 1.7.9.5
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
>> the body of a message to [email protected]
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
> Are you planning to implement the Battery Service on BlueZ? (using UPower)
> It seems to be straightforward.
>
The plan is to add a generic Battery implemented into the BlueZ stack,
but no UPower integration is planned at the moment - maybe later.


> Regards,
> Claudio
>


BR,
Chen Ganir


2012-09-06 19:34:20

by Claudio Takahasi

[permalink] [raw]
Subject: Re: [PATCH RFC] battery: Add generic device battery interface

Hi Chen Ganir:

On Thu, Aug 30, 2012 at 8:26 AM, <[email protected]> wrote:
> From: Chen Ganir <[email protected]>
>
> Add the D-Bus API documentation for the new generic device battery
> interface. This API provides generic access to peer devcice
> batteries.
> ---
> doc/battery-api.txt | 34 ++++++++++++++++++++++++++++++++++
> doc/device-api.txt | 5 +++++
> 2 files changed, 39 insertions(+)
> create mode 100644 doc/battery-api.txt
>
> diff --git a/doc/battery-api.txt b/doc/battery-api.txt
> new file mode 100644
> index 0000000..da82024
> --- /dev/null
> +++ b/doc/battery-api.txt
> @@ -0,0 +1,34 @@
> +BlueZ D-Bus Battery API description
> +****************************************
> +
> + Texas Instruments, Inc. <[email protected]>
> +
> +Device Battery hierarchy
> +=====================================
> +
> +Service org.bluez
> +Interface org.bluez.Battery
> +Object path [variable prefix]/{hci0,..}/dev_XX_XX_XX_XX_XX_XX/BATTYYYY
> +YYYY is numeric value between 0 and 9999.
> +
> +Methods dict GetProperties()
> +
> + Returns all properties for the interface. See the
> + Properties section for the available properties.
> +
> +Signals PropertyChanged(string name, variant value)
> +
> + This signal indicates a changed value of the given
> + property.
> +
> +Properties uint16 Level [readonly]
> +
> + Battery level (0-100).
> +
> + uint16 Description [readonly]
> +
> + Battery description.
> +
> + uint16 Namespace [readonly]
> +
> + Battery Namespace.

IMO "Description" and "Namespace" should be string:
http://developer.bluetooth.org/gatt/Pages/GattNamespaceDescriptors.aspx

For BLE Presentation Format is mandatory(Namespace and Description).
For AVRCP, probably it doesn't make sense. I recommend to include
additional description for these fields.

> diff --git a/doc/device-api.txt b/doc/device-api.txt
> index 1f0dc96..c98d539 100644
> --- a/doc/device-api.txt
> +++ b/doc/device-api.txt
> @@ -179,3 +179,8 @@ Properties string Address [readonly]
> Note that this property can exhibit false-positives
> in the case of Bluetooth 2.1 (or newer) devices that
> have disabled Extended Inquiry Response support.
> +
> + array{object} Batteries [readonly]
> +
> + List of device battery object paths that represents the available
> + batteries on the remote device.
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

Are you planning to implement the Battery Service on BlueZ? (using UPower)
It seems to be straightforward.

Regards,
Claudio