Files
edgetx-gx12/radio/util/hw_defs/json_index.py
T
Raphael CoefficandGitHub 574369aca4 fix: Use keysGetMaxTrims() instead of MAX_TRIMS (#3860)
* fix: use keysGetMaxTrims() instead of MAX_TRIMS

* feat: add support for virtual trims

This is necessary for radios like X-lite where half of the trims are simulated
2023-07-30 14:18:58 +10:00

93 lines
1.9 KiB
Python

#
# These methods are used to build helper indexes on JSON structures
#
def build_adc_index(adc_inputs):
i = 0
index = {}
for adc_input in adc_inputs['inputs']:
name = adc_input['name']
index[name] = i
i = i + 1
return index
def append_to_index(d, key, val):
if key not in d:
d[key] = []
d[key].append(val)
def build_adc_gpio_port_index(adc_inputs):
i = 0
gpios = {}
for adc_input in adc_inputs['inputs']:
if adc_input['adc'] == 'SPI':
continue
gpio = adc_input['gpio']
if gpio is None:
i = i + 1
continue
if gpio not in gpios:
gpios[gpio] = []
pin = {
'pin': adc_input['pin'],
'idx': i
}
gpios[gpio].append(pin)
i = i + 1
return gpios
def build_switch_gpio_port_index(switches):
i = 0
gpios = {}
for switch in switches:
sw_type = switch['type']
if sw_type == '2POS' or sw_type == 'FSWITCH':
append_to_index(gpios, switch['gpio'], switch['pin'])
elif sw_type == '3POS':
append_to_index(gpios, switch['gpio_high'], switch['pin_high'])
append_to_index(gpios, switch['gpio_low'], switch['pin_low'])
return gpios
def build_trim_gpio_port_index(trims):
def index_contact(gpios, contact):
gpio = contact['gpio']
pin = contact['pin']
if gpio and pin:
append_to_index(gpios, contact['gpio'], contact['pin'])
i = 0
gpios = {}
for trim in trims:
dec = trim.get('dec')
inc = trim.get('inc')
if dec and inc:
index_contact(gpios, dec)
index_contact(gpios, inc)
return gpios
def build_key_gpio_port_index(keys):
i = 0
gpios = {}
for key in keys:
append_to_index(gpios, key['gpio'], key['pin'])
return gpios