diff options
-rw-r--r-- | decoders/spi/pd.py | 12 | ||||
-rw-r--r-- | decoders/spi/test/test.conf | 10 |
2 files changed, 19 insertions, 3 deletions
diff --git a/decoders/spi/pd.py b/decoders/spi/pd.py index 1ddb119..4e5627b 100644 --- a/decoders/spi/pd.py +++ b/decoders/spi/pd.py @@ -60,6 +60,12 @@ spi_mode = { (1, 1): 3, # Mode 3 } +class SamplerateError(Exception): + pass + +class MissingDataError(Exception): + pass + class Decoder(srd.Decoder): api_version = 2 id = 'spi' @@ -258,8 +264,8 @@ class Decoder(srd.Decoder): 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: @@ -273,7 +279,7 @@ class Decoder(srd.Decoder): # 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) diff --git a/decoders/spi/test/test.conf b/decoders/spi/test/test.conf index 57e0be7..53edfeb 100644 --- a/decoders/spi/test/test.conf +++ b/decoders/spi/test/test.conf @@ -31,3 +31,13 @@ test count_miso_lsb 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 + |