]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/onewire_link/pd.py
onewire_link: Use defaults for the PD options.
[libsigrokdecode.git] / decoders / onewire_link / pd.py
index b8757706e53f7ae740b69d6eedc71543ca0c534a..e7bf8b3b034e128e7588d16143b9d861d06a0f15 100644 (file)
@@ -39,19 +39,22 @@ class Decoder(srd.Decoder):
     ]
     options = {
         'overdrive': ['Overdrive', 1],
-        # Time options (specified in number of samplerate periods):
-        'cnt_normal_bit': ['Normal mode sample bit time', 0],
-        'cnt_normal_slot': ['Normal mode data slot time', 0],
-        'cnt_normal_presence': ['Normal mode sample presence time', 0],
-        'cnt_normal_reset': ['Normal mode reset time', 0],
-        'cnt_overdrive_bit': ['Overdrive mode sample bit time', 0],
-        'cnt_overdrive_slot': ['Overdrive mode data slot time', 0],
-        'cnt_overdrive_presence': ['Overdrive mode sample presence time', 0],
-        'cnt_overdrive_reset': ['Overdrive mode reset time', 0],
+        # Time options (specified in microseconds):
+        'cnt_normal_bit': ['Normal mode sample bit time (us)', 15],
+        'cnt_normal_slot': ['Normal mode data slot time (us)', 60],
+        'cnt_normal_presence': ['Normal mode sample presence time (us)', 75],
+        'cnt_normal_reset': ['Normal mode reset time (us)', 480],
+        'cnt_overdrive_bit': ['Overdrive mode sample bit time (us)', 2],
+        # 'cnt_overdrive_slot': ['Overdrive mode data slot time (us)', 7.3],
+        'cnt_overdrive_slot': ['Overdrive mode data slot time (us)', 7],
+        'cnt_overdrive_presence': ['Overdrive mode sample presence time (us)', 10],
+        'cnt_overdrive_reset': ['Overdrive mode reset time (us)', 48],
     }
     annotations = [
-        ['Text', 'Human-readable text'],
-        ['Warnings', 'Human-readable warnings'],
+        ['bit', 'Bit'],
+        ['warnings', 'Warnings'],
+        ['reset', 'Reset/presence'],
+        ['overdrive', 'Overdrive mode notifications'],
     ]
 
     def putm(self, data):
@@ -102,38 +105,23 @@ class Decoder(srd.Decoder):
         # The default 1-Wire time base is 30us. This is used to calculate
         # sampling times.
         samplerate = float(self.samplerate)
-        if self.options['cnt_normal_bit']:
-            self.cnt_normal_bit = self.options['cnt_normal_bit']
-        else:
-            self.cnt_normal_bit = int(samplerate * 0.000015) - 1 # 15ns
-        if self.options['cnt_normal_slot']:
-            self.cnt_normal_slot = self.options['cnt_normal_slot']
-        else:
-            self.cnt_normal_slot = int(samplerate * 0.000060) - 1 # 60ns
-        if self.options['cnt_normal_presence']:
-            self.cnt_normal_presence = self.options['cnt_normal_presence']
-        else:
-            self.cnt_normal_presence = int(samplerate * 0.000075) - 1 # 75ns
-        if self.options['cnt_normal_reset']:
-            self.cnt_normal_reset = self.options['cnt_normal_reset']
-        else:
-            self.cnt_normal_reset = int(samplerate * 0.000480) - 1 # 480ns
-        if self.options['cnt_overdrive_bit']:
-            self.cnt_overdrive_bit = self.options['cnt_overdrive_bit']
-        else:
-            self.cnt_overdrive_bit = int(samplerate * 0.000002) - 1 # 2ns
-        if self.options['cnt_overdrive_slot']:
-            self.cnt_overdrive_slot = self.options['cnt_overdrive_slot']
-        else:
-            self.cnt_overdrive_slot = int(samplerate * 0.0000073) - 1 # 6ns+1.3ns
-        if self.options['cnt_overdrive_presence']:
-            self.cnt_overdrive_presence = self.options['cnt_overdrive_presence']
-        else:
-            self.cnt_overdrive_presence = int(samplerate * 0.000010) - 1 # 10ns
-        if self.options['cnt_overdrive_reset']:
-            self.cnt_overdrive_reset = self.options['cnt_overdrive_reset']
-        else:
-            self.cnt_overdrive_reset = int(samplerate * 0.000048) - 1 # 48ns
+
+        x = float(self.options['cnt_normal_bit']) / 1000000.0
+        self.cnt_normal_bit = int(samplerate * x) - 1
+        x = float(self.options['cnt_normal_slot']) / 1000000.0
+        self.cnt_normal_slot = int(samplerate * x) - 1
+        x = float(self.options['cnt_normal_presence']) / 1000000.0
+        self.cnt_normal_presence = int(samplerate * x) - 1
+        x = float(self.options['cnt_normal_reset']) / 1000000.0
+        self.cnt_normal_reset = int(samplerate * x) - 1
+        x = float(self.options['cnt_overdrive_bit']) / 1000000.0
+        self.cnt_overdrive_bit = int(samplerate * x) - 1
+        x = float(self.options['cnt_overdrive_slot']) / 1000000.0
+        self.cnt_overdrive_slot = int(samplerate * x) - 1
+        x = float(self.options['cnt_overdrive_presence']) / 1000000.0
+        self.cnt_overdrive_presence = int(samplerate * x) - 1
+        x = float(self.options['cnt_overdrive_reset']) / 1000000.0
+        self.cnt_overdrive_reset = int(samplerate * x) - 1
 
         # Organize values into lists.
         self.cnt_bit = [self.cnt_normal_bit, self.cnt_overdrive_bit]
@@ -211,7 +199,7 @@ class Decoder(srd.Decoder):
                 if self.bit_cnt <= 8:
                     self.command |= (self.bit << self.bit_cnt)
                 elif self.bit_cnt == 8 and self.command in [0x3c, 0x69]:
-                    self.putx([0, ['Entering overdrive mode']])
+                    self.putx([3, ['Entering overdrive mode']])
                 # Increment the bit counter.
                 self.bit_cnt += 1
                 # Wait for next slot.
@@ -229,7 +217,7 @@ class Decoder(srd.Decoder):
                     self.state = 'WAIT FOR PRESENCE DETECT'
                     # Exit overdrive mode.
                     if self.overdrive:
-                        self.putx([0, ['Exiting overdrive mode']])
+                        self.putx([3, ['Exiting overdrive mode']])
                         self.overdrive = 0
                     # Clear command bit counter and data register.
                     self.bit_cnt = 0
@@ -259,7 +247,7 @@ class Decoder(srd.Decoder):
                     continue
 
                 p = 'false' if self.present else 'true'
-                self.putb([0, ['Reset/presence: %s' % p]])
+                self.putb([2, ['Reset/presence: %s' % p]])
                 self.putpb(['RESET/PRESENCE', not self.present])
 
                 # Wait for next slot.