Skip to content

Commit 4d86276

Browse files
committed
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.
1 parent 3851b0c commit 4d86276

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

decoders/adf435x/pd.py

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ def disabled_enabled(v):
2626
def output_power(v):
2727
return '{:+d}dBm'.format([-4, -1, 2, 5][v])
2828

29+
# Notes on the implementation:
30+
# - Bit fields' width in registers determines the range of indices in
31+
# table/tuple lookups. Keep the implementation as robust as possible
32+
# during future maintenance. Avoid Python runtime errors when adjusting
33+
# the decoder.
2934
regs = {
3035
# reg: name offset width parser
3136
0: [
@@ -45,23 +50,33 @@ def output_power(v):
4550
('PD Polarity', 6, 1, lambda v: ['Negative', 'Positive'][v]),
4651
('LDP', 7, 1, lambda v: ['10ns', '6ns'][v]),
4752
('LDF', 8, 1, lambda v: ['FRAC-N', 'INT-N'][v]),
48-
('Charge Pump Current Setting', 9, 4, lambda v: '{:0.2f}mA @ 5.1kΩ'.format(
49-
[0.31, 0.63, 0.94, 1.25, 1.56, 1.88, 2.19, 2.50,
50-
2.81, 3.13, 3.44, 3.75, 4.06, 4.38, 4.69, 5.00][v])),
53+
('Charge Pump Current Setting', 9, 4, lambda v: '{curr:0.2f}mA @ 5.1kΩ'.format(
54+
curr = (
55+
0.31, 0.63, 0.94, 1.25, 1.56, 1.88, 2.19, 2.50,
56+
2.81, 3.13, 3.44, 3.75, 4.06, 4.38, 4.69, 5.00,
57+
)[v])),
5158
('Double Buffer', 13, 1, disabled_enabled),
5259
('R Counter', 14, 10, None),
5360
('RDIV2', 24, 1, disabled_enabled),
5461
('Reference Doubler', 25, 1, disabled_enabled),
55-
('MUXOUT', 26, 3, lambda v:
56-
['Three-State Output', 'DVdd', 'DGND', 'R Counter Output', 'N Divider Output',
57-
'Analog Lock Detect', 'Digital Lock Detect', 'Reserved'][v]),
58-
('Low Noise and Low Spur Modes', 29, 2, lambda v:
59-
['Low Noise Mode', 'Reserved', 'Reserved', 'Low Spur Mode'][v])
62+
('MUXOUT', 26, 3, lambda v: '{text}'.format(
63+
text = (
64+
'Three-State Output', 'DVdd', 'DGND',
65+
'R Counter Output', 'N Divider Output',
66+
'Analog Lock Detect', 'Digital Lock Detect',
67+
'Reserved'
68+
)[v])),
69+
('Low Noise and Low Spur Modes', 29, 2, lambda v: '{text}'.format(
70+
text = (
71+
'Low Noise Mode', 'Reserved', 'Reserved', 'Low Spur Mode'
72+
)[v])),
6073
],
6174
3: [
6275
('Clock Divider', 3, 12, None),
63-
('Clock Divider Mode', 15, 2, lambda v:
64-
['Clock Divider Off', 'Fast Lock Enable', 'Resync Enable', 'Reserved'][v]),
76+
('Clock Divider Mode', 15, 2, lambda v: '{text}'.format(
77+
text = (
78+
'Clock Divider Off', 'Fast Lock Enable', 'Resync Enable', 'Reserved'
79+
)[v])),
6580
('CSR Enable', 18, 1, disabled_enabled),
6681
('Charge Cancellation', 21, 1, disabled_enabled),
6782
('ABP', 22, 1, lambda v: ['6ns (FRAC-N)', '3ns (INT-N)'][v]),
@@ -81,8 +96,10 @@ def output_power(v):
8196
('Feedback Select', 23, 1, lambda v: ['Divided', 'Fundamental'][v]),
8297
],
8398
5: [
84-
('LD Pin Mode', 22, 2, lambda v:
85-
['Low', 'Digital Lock Detect', 'Low', 'High'][v])
99+
('LD Pin Mode', 22, 2, lambda v: '{text}'.format(
100+
text = (
101+
'Low', 'Digital Lock Detect', 'Low', 'High',
102+
)[v])),
86103
]
87104
}
88105

0 commit comments

Comments
 (0)