]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/lm75/pd.py
avr_isp: Add more parts
[libsigrokdecode.git] / decoders / lm75 / pd.py
index bdd8cb0a43317298e37aa6f00ace9b2a9a10561c..d59fa5f4a6f8a32aa0b03cd23b0b82acf048587d 100644 (file)
@@ -14,8 +14,7 @@
 ## GNU General Public License for more details.
 ##
 ## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+## along with this program; if not, see <http://www.gnu.org/licenses/>.
 ##
 
 # TODO: Better support for various LM75 compatible devices.
@@ -40,34 +39,38 @@ ft = {
 }
 
 class Decoder(srd.Decoder):
-    api_version = 1
+    api_version = 3
     id = 'lm75'
     name = 'LM75'
     longname = 'National LM75'
     desc = 'National LM75 (and compatibles) temperature sensor.'
     license = 'gplv2+'
     inputs = ['i2c']
-    outputs = ['lm75']
+    outputs = []
+    tags = ['Sensor']
     options = (
-        {'id': 'sensor', 'desc': 'Sensor type', 'default': 'lm75'},
-        {'id': 'resolution', 'desc': 'Resolution', 'default': 9,
+        {'id': 'sensor', 'desc': 'Sensor type', 'default': 'lm75',
+            'values': ('lm75',)},
+        {'id': 'resolution', 'desc': 'Resolution (bits)', 'default': 9,
             'values': (9, 10, 11, 12)},
     )
     annotations = (
-        ('celsius', 'Temperature in degrees Celsius'),
-        ('kelvin', 'Temperature in Kelvin'),
-        ('text-verbose', 'Human-readable text (verbose)'),
-        ('text', 'Human-readable text'),
-        ('warnings', 'Human-readable warnings'),
+        ('celsius', 'Temperature / °C'),
+        ('kelvin', 'Temperature / Kelvin'),
+        ('text-verbose', 'Text (verbose)'),
+        ('text', 'Text'),
+        ('warning', 'Warning'),
     )
 
-    def __init__(self, **kwargs):
+    def __init__(self):
+        self.reset()
+
+    def reset(self):
         self.state = 'IDLE'
         self.reg = 0x00 # Currently selected register
         self.databytes = []
 
     def start(self):
-        # self.out_python = self.register(srd.OUTPUT_PYTHON)
         self.out_ann = self.register(srd.OUTPUT_ANN)
 
     def putx(self, data):
@@ -76,7 +79,7 @@ class Decoder(srd.Decoder):
 
     def putb(self, data):
         # Helper for annotations which span a block of I²C packets.
-        self.put(self.block_start, self.block_end, self.out_ann, data)
+        self.put(self.ss_block, self.es_block, self.out_ann, data)
 
     def warn_upon_invalid_slave(self, addr):
         # LM75 and compatible devices have a 7-bit I²C slave address where
@@ -102,11 +105,11 @@ class Decoder(srd.Decoder):
     def handle_temperature_reg(self, b, s, rw):
         # Common helper for the temperature/T_HYST/T_OS registers.
         if len(self.databytes) == 0:
-            self.block_start = self.ss
+            self.ss_block = self.ss
             self.databytes.append(b)
             return
         self.databytes.append(b)
-        self.block_end = self.es
+        self.es_block = self.es
         self.output_temperature(s, rw)
         self.databytes = []
 
@@ -181,6 +184,3 @@ class Decoder(srd.Decoder):
             else:
                 # self.putx([0, ['Ignoring: %s (data=%s)' % (cmd, databyte)]])
                 pass
-        else:
-            raise Exception('Invalid state: %s' % self.state)
-