spi: Create the out_bitrate annotation unconditionally
authorJosef Gajdusek <atx@atx.name>
Fri, 17 Aug 2018 14:35:50 +0000 (16:35 +0200)
committerUwe Hermann <uwe@hermann-uwe.de>
Thu, 30 Aug 2018 09:49:32 +0000 (11:49 +0200)
The start() method is called before the metadata() method, which results in the
the out_bitrate instance variable never getting created and ending up as an
AttributeError when decoding.

(observed with sigrok-cli and VCD file as the input)

decoders/spi/pd.py

index 9beb4e63b2642358b7447881e22a2fe0376208ed..85bb1cb9e3195464fc55a983d3e87ecc78cf0baf 100644 (file)
@@ -137,19 +137,18 @@ class Decoder(srd.Decoder):
         self.cs_was_deasserted = False
         self.have_cs = self.have_miso = self.have_mosi = None
 
-    def metadata(self, key, value):
-        if key == srd.SRD_CONF_SAMPLERATE:
-            self.samplerate = value
-
     def start(self):
         self.out_python = self.register(srd.OUTPUT_PYTHON)
         self.out_ann = self.register(srd.OUTPUT_ANN)
         self.out_binary = self.register(srd.OUTPUT_BINARY)
-        if self.samplerate:
-            self.out_bitrate = self.register(srd.OUTPUT_META,
-                    meta=(int, 'Bitrate', 'Bitrate during transfers'))
+        self.out_bitrate = self.register(srd.OUTPUT_META,
+                meta=(int, 'Bitrate', 'Bitrate during transfers'))
         self.bw = (self.options['wordsize'] + 7) // 8
 
+    def metadata(self, key, value):
+       if key == srd.SRD_CONF_SAMPLERATE:
+            self.samplerate = value
+
     def putw(self, data):
         self.put(self.ss_block, self.samplenum, self.out_ann, data)