summaryrefslogtreecommitdiff
path: root/decoders/parallel
diff options
context:
space:
mode:
Diffstat (limited to 'decoders/parallel')
-rw-r--r--decoders/parallel/pd.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/decoders/parallel/pd.py b/decoders/parallel/pd.py
index 96741e7..1e31208 100644
--- a/decoders/parallel/pd.py
+++ b/decoders/parallel/pd.py
@@ -257,7 +257,10 @@ class Decoder(srd.Decoder):
# This results in robust operation for low-oversampled input.
in_reset = False
while True:
- pins = self.wait(conds)
+ try:
+ pins = self.wait(conds)
+ except EOFError as e:
+ break
clock_edge = cond_idx_clock is not None and self.matched[cond_idx_clock]
data_edge = cond_idx_data_0 is not None and [idx for idx in range(cond_idx_data_0, cond_idx_data_N) if self.matched[idx]]
reset_edge = cond_idx_reset is not None and self.matched[cond_idx_reset]
@@ -275,3 +278,8 @@ class Decoder(srd.Decoder):
data_bits = data_bits[:num_item_bits]
item = bitpack(data_bits)
self.handle_bits(self.samplenum, item, num_item_bits)
+
+ self.handle_bits(self.samplenum, None, num_item_bits)
+ # TODO Determine whether a WARN annotation needs to get emitted.
+ # The decoder has not seen the end of the last accumulated item.
+ # Instead it just ran out of input data.