(1, 1): 3, # Mode 3
}
+class SamplerateError(Exception):
+ pass
+
+class MissingDataError(Exception):
+ pass
+
class Decoder(srd.Decoder):
api_version = 2
id = 'spi'
self.handle_bit(miso, mosi, clk, cs)
def decode(self, ss, es, data):
- if self.samplerate is None:
- raise Exception("Cannot decode without samplerate.")
+ if not self.samplerate:
+ raise SamplerateError("Cannot decode without samplerate.")
# Either MISO or MOSI can be omitted (but not both). CS# is optional.
for (self.samplenum, pins) in data:
# Either MISO or MOSI (but not both) can be omitted.
if not (self.have_miso or self.have_mosi):
- raise Exception('Either MISO or MOSI (or both) pins required.')
+ raise MissingDataError('Either MISO or MOSI (or both) pins required.')
self.find_clk_edge(miso, mosi, clk, cs)
input spi/spi-count-lsb.sr
output spi annotation class mosi-data match spi_count_miso_lsb.output
+test exception_samplerate
+ protocol-decoder spi
+ input misc/no-samplerate.sr
+ output spi exception match SamplerateError
+
+test exception_missing_datapins
+ protocol-decoder spi channel cs=1 channel clk=0
+ input spi/spi-count-msb.sr
+ output spi exception match MissingDataError
+