diff options
author | Gerhard Sittig <gerhard.sittig@gmx.net> | 2017-06-18 13:38:15 +0200 |
---|---|---|
committer | Gerhard Sittig <gerhard.sittig@gmx.net> | 2017-06-20 23:10:03 +0200 |
commit | eff37627aa217defa784337c4f4aa309477311fc (patch) | |
tree | 71a86cd441640c17f30ae3c117a96bdf45ea425d | |
parent | 0172a1661a3addc958269d4251246d2d03cf6368 (diff) | |
download | libsigrokdecode-eff37627aa217defa784337c4f4aa309477311fc.tar.gz libsigrokdecode-eff37627aa217defa784337c4f4aa309477311fc.zip |
pwm: Eliminate more decoder "state"
Move more items from the Python object's members to local variables of the
decode() method, as they are used there exclusively.
Mark a spot where the binary output references suspicious "sample numbers".
-rw-r--r-- | decoders/pwm/pd.py | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/decoders/pwm/pd.py b/decoders/pwm/pd.py index a2fbb0f..d6411ae 100644 --- a/decoders/pwm/pd.py +++ b/decoders/pwm/pd.py @@ -50,11 +50,7 @@ class Decoder(srd.Decoder): def __init__(self): self.ss_block = self.es_block = None - self.first_samplenum = None - self.start_samplenum = None - self.end_samplenum = None self.num_cycles = 0 - self.average = 0 def metadata(self, key, value): if key == srd.SRD_CONF_SAMPLERATE: @@ -88,9 +84,14 @@ class Decoder(srd.Decoder): self.put(self.ss_block, self.es_block, self.out_ann, [1, [period_s]]) def putb(self, data): + # TODO Are these ss/es specs appropriate? It's the same value, + # which represents a mere period counter, not sample numbers. + # Probably should be: + # self.put(self.ss_block, self.es_block, self.out_binary, data) self.put(self.num_cycles, self.num_cycles, self.out_binary, data) def decode(self): + average = 0 # Wait for an "active" edge (depends on config). This starts # the first full period of the inspected signal waveform. @@ -103,16 +104,16 @@ class Decoder(srd.Decoder): # Get the next two edges. Setup some variables that get # referenced in the calculation and in put() routines. - self.start_samplenum = self.samplenum + start_samplenum = self.samplenum pins = self.wait({0: 'e'}) - self.end_samplenum = self.samplenum + end_samplenum = self.samplenum pins = self.wait({0: 'e'}) - self.ss_block = self.start_samplenum + self.ss_block = start_samplenum self.es_block = self.samplenum # Calculate the period, the duty cycle, and its ratio. - period = self.samplenum - self.start_samplenum - duty = self.end_samplenum - self.start_samplenum + period = self.samplenum - start_samplenum + duty = end_samplenum - start_samplenum ratio = float(duty / period) # Report the duty cycle in percent. @@ -128,6 +129,6 @@ class Decoder(srd.Decoder): # Update and report the new duty cycle average. self.num_cycles += 1 - self.average += percent + average += percent self.put(self.first_samplenum, self.es_block, self.out_average, - float(self.average / self.num_cycles)) + float(average / self.num_cycles)) |