Re: [RFC] Health Thermometer Profile API
From: Santiago Carot <hidden>
Date: 2011-06-29 08:45:36
Hi Anderson, 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.txtdiff --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 descriptionTypo: Thermomether -> Thermometerquoted
+**************************************** + + Santiago Carot-Nemesio [off-list ref] + +Health Thermomether Profile hierarchy +=====================================Typo: Thermomether -> Thermometerquoted
+ +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 agentTypo: measures -> measurementsquoted
+ 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 agentTypo: measure -> measurementquoted
+ 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 ?quoted
+ + Disables intermediate measure notifications for thisTypo: measure -> measurementquoted
+ agent. It will disable notifications in the thermometer + when the last agent removes the watcher for intermediate + measures.Typo: measures -> measurementsquoted
+ + 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 measureTypo: measure -> measurementquoted
+ 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 intoTypo: intermediates -> intermediate Typo: measures -> measurementsquoted
+ a valid range. Setting it to zero meaning that noTypo: meaning -> meansquoted
+ 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 intervalTypo: minimuum -> minimumquoted
+ 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.htmlRegards,
Thanks for your notes. I'll submit a patch fixing this issues during the day if nobody has more comments about this API. Best regards.