self.bytesreceived = 0
self.samplenum = -1
+ # Set protocol decoder option defaults.
+ self.cs_active_low = Decoder.options['cs_active_low'][1]
+ self.clock_polarity = Decoder.options['clock_polarity'][1]
+ self.clock_phase = Decoder.options['clock_phase'][1]
+ self.bit_order = Decoder.options['bit_order'][1]
+ self.word_size = Decoder.options['word_size'][1]
+
def start(self, metadata):
self.out_proto = self.add(srd.OUTPUT_PROTO, 'spi')
self.out_ann = self.add(srd.OUTPUT_ANN, 'spi')
if self.bitcount == 0:
self.start_sample = samplenum
- # Receive bit into our shift register.
- if mosi == 1:
- self.mosidata |= 1 << (7 - self.bitcount)
- if miso == 1:
- self.misodata |= 1 << (7 - self.bitcount)
+ # Receive MOSI bit into our shift register.
+ if self.bit_order == MSB_FIRST:
+ self.mosidata |= mosi << (self.wordsize - 1 - self.bitcount)
+ else:
+ self.mosidata |= mosi << self.bitcount
+
+ # Receive MISO bit into our shift register.
+ if self.bit_order == MSB_FIRST:
+ self.misodata |= miso << (self.wordsize - 1 - self.bitcount)
+ else:
+ self.misodata |= miso << self.bitcount
self.bitcount += 1
# Continue to receive if not a byte yet.
- if self.bitcount != 8:
+ if self.bitcount != self.wordsize:
continue
self.put(self.start_sample, self.samplenum, self.out_proto,