summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--decoders/usb_signalling/pd.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/decoders/usb_signalling/pd.py b/decoders/usb_signalling/pd.py
index 75069f4..70ada37 100644
--- a/decoders/usb_signalling/pd.py
+++ b/decoders/usb_signalling/pd.py
@@ -40,6 +40,11 @@ symbols_fs = {
(1, 1): 'SE1',
}
+bitrates = {
+ 'low-speed': 1500000, # 1.5Mb/s (+/- 1.5%)
+ 'full-speed': 12000000, # 12Mb/s (+/- 0.25%)
+}
+
class Decoder(srd.Decoder):
api_version = 1
id = 'usb_signalling'
@@ -67,12 +72,15 @@ class Decoder(srd.Decoder):
self.scount = 0
self.packet = ''
self.syms = []
+ self.bitrate = None
+ self.bitwidth = None
self.oldpins = None
def start(self, metadata):
- self.samplerate = metadata['samplerate']
self.out_proto = self.add(srd.OUTPUT_PROTO, 'usb_signalling')
self.out_ann = self.add(srd.OUTPUT_ANN, 'usb_signalling')
+ self.bitrate = bitrates[self.options['signalling']]
+ self.bitwidth = float(metadata['samplerate']) / float(self.bitrate)
def report(self):
pass
@@ -117,11 +125,7 @@ class Decoder(srd.Decoder):
# How many bits since the last transition?
if self.packet != '' or self.sym != 'J':
- if self.options['signalling'] == 'low-speed':
- bitrate = 1500000 # 1.5Mb/s (+/- 1.5%)
- elif self.options['signalling'] == 'full-speed':
- bitrate = 12000000 # 12Mb/s (+/- 0.25%)
- bitcount = int((self.scount - 1) * bitrate / self.samplerate)
+ bitcount = int((self.scount - 1) / self.bitwidth)
else:
bitcount = 0