]> sigrok.org Git - libsigrokdecode.git/commitdiff
spi: Fix binary output for wordsizes > 8.
authorUwe Hermann <redacted>
Sun, 23 Oct 2016 19:01:08 +0000 (21:01 +0200)
committerUwe Hermann <redacted>
Sun, 23 Oct 2016 19:48:09 +0000 (21:48 +0200)
For wordsizes > 8, multiple bytes are used (big-endian).

This fixes bug #686.

decoders/spi/pd.py

index fc8c7d0024bf8169c431566cb87245211b6d2ed0..ce007e231b0866d11d7a44bfce9432d1cd5effdf 100644 (file)
@@ -152,6 +152,7 @@ class Decoder(srd.Decoder):
         self.out_binary = self.register(srd.OUTPUT_BINARY)
         self.out_bitrate = self.register(srd.OUTPUT_META,
                 meta=(int, 'Bitrate', 'Bitrate during transfers'))
+        self.bw = (self.options['wordsize'] + 7) // 8
 
     def putw(self, data):
         self.put(self.ss_block, self.samplenum, self.out_ann, data)
@@ -165,10 +166,12 @@ class Decoder(srd.Decoder):
 
         if self.have_miso:
             ss, es = self.misobits[-1][1], self.misobits[0][2]
-            self.put(ss, es, self.out_binary, [0, bytes([so])])
+            bdata = so.to_bytes(self.bw, byteorder='big')
+            self.put(ss, es, self.out_binary, [0, bdata])
         if self.have_mosi:
             ss, es = self.mosibits[-1][1], self.mosibits[0][2]
-            self.put(ss, es, self.out_binary, [1, bytes([si])])
+            bdata = si.to_bytes(self.bw, byteorder='big')
+            self.put(ss, es, self.out_binary, [1, bdata])
 
         self.put(ss, es, self.out_python, ['BITS', si_bits, so_bits])
         self.put(ss, es, self.out_python, ['DATA', si, so])