summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--decoders/spi/pd.py12
-rw-r--r--decoders/spi/test/test.conf10
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
+