## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##
-#
# Melexis MLX90614 Infrared Thermometer protocol decoder
-#
import sigrokdecode as srd
id = 'mlx90614'
name = 'MLX90614'
longname = 'Melexis MLX90614'
- desc = 'TODO.'
- longdesc = 'TODO.'
+ desc = 'Infrared Thermometer protocol.'
license = 'gplv2+'
inputs = ['i2c']
outputs = ['mlx90614']
probes = []
- extra_probes = []
+ optional_probes = []
options = {}
annotations = [
['Celsius', 'Temperature in degrees Celsius'],
# Quick hack implementation! This needs to be improved a lot!
def decode(self, ss, es, data):
- cmd, databyte, ack = data
+ cmd, databyte = data
# State machine.
if self.state == 'IGNORE START REPEAT':
return
self.state = 'GET TEMPERATURE'
elif self.state == 'GET TEMPERATURE':
+ if cmd != 'DATA WRITE':
+ return
if len(self.data) == 0:
- self.data += [databyte]
+ self.data.append(databyte)
self.ss = ss
elif len(self.data) == 1:
- self.data += [databyte]
+ self.data.append(databyte)
self.es = es
else:
kelvin = (self.data[0] | (self.data[1] << 8)) * 0.02
celsius = kelvin - 273.15
- self.putx([0, ['Temperature: %d °C' % celsius]])
- self.putx([1, ['Temperature: %d °K' % kelvin]])
+ self.putx([0, ['Temperature: %3.2f °C' % celsius]])
+ self.putx([1, ['Temperature: %3.2f °K' % kelvin]])
self.state = 'IGNORE START REPEAT'
self.data = []
else: