diff options
author | Gerhard Sittig <gerhard.sittig@gmx.net> | 2022-12-30 15:28:07 +0100 |
---|---|---|
committer | Gerhard Sittig <gerhard.sittig@gmx.net> | 2023-01-09 20:13:35 +0100 |
commit | 4d86276d6434f9bcdd96bc2ddaa316a9a01da461 (patch) | |
tree | 01ef869f646831b39db9f97281d9ed77e4e2f34e /decoders | |
parent | 3851b0c084bc358b134069ba829b7ce1f4c410ff (diff) | |
download | libsigrokdecode-4d86276d6434f9bcdd96bc2ddaa316a9a01da461.tar.gz libsigrokdecode-4d86276d6434f9bcdd96bc2ddaa316a9a01da461.zip |
adf435x: rephrase table lookups for display texts
Try a different presentation of exising information in the register
fields' display text construction (extra parsers for known fields).
Attempt a source code format which hopefully better lends itself to
index range verification during review.
Make the number of available expansion texts stand out more visually,
so that readers can compare their count to the register field's width.
Address those register fields with four or more expansion values, keep
the simple single bit cases as they are. Add a comment for awareness.
Diffstat (limited to 'decoders')
-rw-r--r-- | decoders/adf435x/pd.py | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/decoders/adf435x/pd.py b/decoders/adf435x/pd.py index d6d737e..0da106e 100644 --- a/decoders/adf435x/pd.py +++ b/decoders/adf435x/pd.py @@ -26,6 +26,11 @@ def disabled_enabled(v): def output_power(v): return '{:+d}dBm'.format([-4, -1, 2, 5][v]) +# Notes on the implementation: +# - Bit fields' width in registers determines the range of indices in +# table/tuple lookups. Keep the implementation as robust as possible +# during future maintenance. Avoid Python runtime errors when adjusting +# the decoder. regs = { # reg: name offset width parser 0: [ @@ -45,23 +50,33 @@ regs = { ('PD Polarity', 6, 1, lambda v: ['Negative', 'Positive'][v]), ('LDP', 7, 1, lambda v: ['10ns', '6ns'][v]), ('LDF', 8, 1, lambda v: ['FRAC-N', 'INT-N'][v]), - ('Charge Pump Current Setting', 9, 4, lambda v: '{:0.2f}mA @ 5.1kΩ'.format( - [0.31, 0.63, 0.94, 1.25, 1.56, 1.88, 2.19, 2.50, - 2.81, 3.13, 3.44, 3.75, 4.06, 4.38, 4.69, 5.00][v])), + ('Charge Pump Current Setting', 9, 4, lambda v: '{curr:0.2f}mA @ 5.1kΩ'.format( + curr = ( + 0.31, 0.63, 0.94, 1.25, 1.56, 1.88, 2.19, 2.50, + 2.81, 3.13, 3.44, 3.75, 4.06, 4.38, 4.69, 5.00, + )[v])), ('Double Buffer', 13, 1, disabled_enabled), ('R Counter', 14, 10, None), ('RDIV2', 24, 1, disabled_enabled), ('Reference Doubler', 25, 1, disabled_enabled), - ('MUXOUT', 26, 3, lambda v: - ['Three-State Output', 'DVdd', 'DGND', 'R Counter Output', 'N Divider Output', - 'Analog Lock Detect', 'Digital Lock Detect', 'Reserved'][v]), - ('Low Noise and Low Spur Modes', 29, 2, lambda v: - ['Low Noise Mode', 'Reserved', 'Reserved', 'Low Spur Mode'][v]) + ('MUXOUT', 26, 3, lambda v: '{text}'.format( + text = ( + 'Three-State Output', 'DVdd', 'DGND', + 'R Counter Output', 'N Divider Output', + 'Analog Lock Detect', 'Digital Lock Detect', + 'Reserved' + )[v])), + ('Low Noise and Low Spur Modes', 29, 2, lambda v: '{text}'.format( + text = ( + 'Low Noise Mode', 'Reserved', 'Reserved', 'Low Spur Mode' + )[v])), ], 3: [ ('Clock Divider', 3, 12, None), - ('Clock Divider Mode', 15, 2, lambda v: - ['Clock Divider Off', 'Fast Lock Enable', 'Resync Enable', 'Reserved'][v]), + ('Clock Divider Mode', 15, 2, lambda v: '{text}'.format( + text = ( + 'Clock Divider Off', 'Fast Lock Enable', 'Resync Enable', 'Reserved' + )[v])), ('CSR Enable', 18, 1, disabled_enabled), ('Charge Cancellation', 21, 1, disabled_enabled), ('ABP', 22, 1, lambda v: ['6ns (FRAC-N)', '3ns (INT-N)'][v]), @@ -81,8 +96,10 @@ regs = { ('Feedback Select', 23, 1, lambda v: ['Divided', 'Fundamental'][v]), ], 5: [ - ('LD Pin Mode', 22, 2, lambda v: - ['Low', 'Digital Lock Detect', 'Low', 'High'][v]) + ('LD Pin Mode', 22, 2, lambda v: '{text}'.format( + text = ( + 'Low', 'Digital Lock Detect', 'Low', 'High', + )[v])), ] } |