Thread (7 messages) flat view 7 messages, 3 authors, 2011-06-29

Re: [RFC] Health Thermometer Profile API

From: Santiago Carot <hidden>
Date: 2011-06-28 14:03:56

Hello,

2011/6/28 Anderson Lizardo [off-list ref]:
Hi Santiago,

On Tue, Jun 28, 2011 at 8:25 AM, Santiago Carot-Nemesio
[off-list ref] wrote:
quoted
---
 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
Typo: Thermomether -> Thermometer
quoted
+****************************************
+
+       Santiago Carot-Nemesio [off-list ref]
+
+Health Thermomether Profile hierarchy
+=====================================
Typo: Thermomether -> Thermometer
quoted
+
+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
Typo: measures -> measurements
quoted
+                       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
Typo: measure -> measurement
quoted
+                       if the thermometer supports it.
+
+                       Possible Errors: org.bluez.Error.InvalidArguments
+                                       org.bluez.Error.NotSupported
+
+               DisableIntermediateMeasures(object agent)
What about a second argument to RegisterThermometerWatcher() that
enables/disables intermediate measurements ?
The idea is that applications can enable/disable intermediate
measurement notifications without have to unregister from the
thermometer service. If we use only a method for that purpose we are
forcing to applications to register and unregister themself from the
service even if they only want to disable this feature but remain
receiving final measures.

In any case comments about it are welcome.
quoted
+
+                       Disables intermediate measure notifications for this
Typo: measure -> measurement
quoted
+                       agent. It will disable notifications in the thermometer
+                       when the last agent removes the watcher for intermediate
+                       measures.
Typo: measures -> measurements
quoted
+
+                       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
Typo: measure -> measurement
quoted
+                       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
Typo: intermediates -> intermediate
Typo: measures -> measurements
quoted
+                       a valid range. Setting it to zero meaning that no
Typo: meaning -> means
quoted
+                       periodic measurements will be taken.
+
+               uint16 Minimum (optional) [readonly]
This is inverted with Maximum.
quoted
+
+                       Defines the maximum value allowed for the interval
+                       between periodic measurements.
+
+               uint16 Maximum (optional) [readonly]
+
+                       Defines the minimuum value allowed for the interval
Typo: minimuum -> minimum
quoted
+                       between periodic measurements.
+
+
+Health Thermometer Watcher hierarchy
+====================================
+Service                unique name
+Interface      org.bluez.ThermometerWatcher
+Object path    freely definable
+
+Methods                void MeasureReceived(dict measure)
typo (measure vs. measurement)
quoted
+
+                       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.
IIRC, the "Type" value is also optional.
quoted
+
+                       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

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Regards,
--
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help