Re: [RFC] Health Thermometer Profile API

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

 



Hi mike,

2011/6/28 mike tsai <mikeyhtsai@xxxxxxxxx>:
> On Tue, Jun 28, 2011 at 5:25 AM, Santiago Carot-Nemesio
> <sancane@xxxxxxxxx> wrote:
>> ---
>>  doc/thermometer.txt |  125 +++++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 files changed, 125 insertions(+), 0 deletions(-)
>>  create mode 100644 doc/thermometer.txt
>>
>> diff --git a/doc/thermometer.txt b/doc/thermometer.txt
>> new file mode 100644
>> index 0000000..9afd2b2
>> --- /dev/null
>> +++ b/doc/thermometer.txt
>> @@ -0,0 +1,125 @@
>> +BlueZ D-Bus Thermomether API description
>> +****************************************
>> +
>> +       Santiago Carot-Nemesio <sancane@xxxxxxxxx>
>> +
>> +Health Thermomether Profile hierarchy
>> +=====================================
>> +
>> +Service                org.bluez
>> +Interface      org.bluez.Thermometer
>> +Object path    [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX
>> +
>> +
>> +Methods                void SetProperty(string name, variant value)
>> +
>> +                       Changes the value of the specified property. Only
>> +                       read-write properties can be changed. On success
>> +                       this will emit a PropertyChanged signal.
>> +
>> +                       Possible Errors: org.bluez.Error.InvalidArguments
>> +
>> +               dict GetProperties()
>> +
>> +                       Returns all properties for the interface. See the
>> +                       Properties section for the available properties.
>> +
>> +               RegisterThermometerWatcher(object agent)
>> +
>> +                       Registers a watcher to monitor scanned measures.The agent
>> +                       will be notified about final.
>> +
>> +                       Possible Errors: org.bluez.Error.InvalidArguments
>> +
>> +               UnregisterThermometerWatcher(object agent)
>> +
>> +                       Unregisters a watcher.
>> +
>> +                       Final and intermediate temperatures won't be notified to
>> +                       this agent any more.
>> +
>> +                       Possible Errors: org.bluez.Error.InvalidArguments
>> +                                       org.bluez.Error.NotFound
>> +
>> +               EnableIntermediateMeasures(object agent)
>> +
>> +                       Enables intermediate measure notifications for this agent
>> +                       if the thermometer supports it.
>> +
>> +                       Possible Errors: org.bluez.Error.InvalidArguments
>> +                                       org.bluez.Error.NotSupported
>> +
>> +               DisableIntermediateMeasures(object agent)
>> +
>> +                       Disables intermediate measure notifications for this
>> +                       agent. It will disable notifications in the thermometer
>> +                       when the last agent removes the watcher for intermediate
>> +                       measures.
>> +
>> +                       Possible Errors: org.bluez.Error.InvalidArguments
>> +                                       org.bluez.Error.NotFound
>> +
>> +Signals                PropertyChanged(string name, variant value)
>> +
>> +                       This signal indicates a changed value of the given
>> +                       property.
>> +
>> +Properties     boolean Intermediate [readonly]
>> +
>> +                       True if the thermometer supports intermediate measure
>> +                       notifications.
>> +
>> +               uint16 Interval (optional) [readwrite]
>> +
>> +                       The Measurement Interval defines the time (in seconds)
>> +                       between measurements. This interval is not related to
>> +                       the intermediates measures and must be defined into
>> +                       a valid range. Setting it to zero meaning that no
>> +                       periodic measurements will be taken.
>> +
>> +               uint16 Minimum (optional) [readonly]
>> +
>> +                       Defines the maximum value allowed for the interval
>> +                       between periodic measurements.
>> +
>> +               uint16 Maximum (optional) [readonly]
>> +
>> +                       Defines the minimuum value allowed for the interval
>> +                       between periodic measurements.
>> +
>> +
>> +Health Thermometer Watcher hierarchy
>> +====================================
>> +Service                unique name
>> +Interface      org.bluez.ThermometerWatcher
>> +Object path    freely definable
>> +
>> +Methods                void MeasureReceived(dict measure)
>> +
>> +                       This callback gets called when a measure has been
>> +                       scanned in the thermometer. The Time entry in the dict
>> +                       will be only present if the device supports storing of
>> +                       data. The time value is expressed in seconds since epoch.
>> +                       The value represented is (mantissa) x (10**exponent)
>> +                       See foot note for special values when treating with
>> +                       health devices.
>> +
>> +                       Dict is defined as below:
>> +                       {
>> +                               "Exponent" : int8,
>> +                               "Mantissa" : int32,
>> +                               "Unit" : ("Celsius" or "Fahrenheit"),
>> +                               "Time" : uint64,
>> +                               "Type" : ("Armpit", "Body", "Ear", "Finger",
>> +                                       "Intestines", "Mouth", "Rectum", "Toe",
>> +                                       "Tympanum"),
>> +                               "Measurement" : ("Final" or "Intermediate"),
>> +                       }
>> +
>> +                       For special cases, the exponent shall always be zero and
>> +                       the mantissa should be one of following values:
>> +
>> +                       NRes = -(2**23)
>> +                       NaN = +(2**23-1)
>> +                       INFINITY = (2**23-2)
>> +                       -INFINITY = -(2**23-2)
>> --
>> 1.7.5.2
>>
>> --
>
> Is this proposal going to use reference count for property setting of
> notification/indication? and if one of the applications enables
> immediate alert notification, then all other applications will receive
> the notification even if they have not registered it?

Yes, the idea is just the same as suggested by Anderson. We will use a
reference counter to enable/disable indications and notification.
Applications won't manage characteristics and properties directly, the
plugin will do it based on the number of watchers subscribed.

With respect to second question, no, only agents which enable
intermediate notifications will be notified. Rest of agents only will
be notified about final measures.

Regards.
--
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