Skip to content

Commit

Permalink
Add dictionary key translations for demodulator and deframer addition…
Browse files Browse the repository at this point in the history
…al options

This allows us to add new additional options more easily
  • Loading branch information
daniestevez committed Nov 5, 2020
1 parent d2b1f7b commit 49edced
Showing 1 changed file with 15 additions and 11 deletions.
26 changes: 15 additions & 11 deletions python/core/gr_satellites_flowgraph.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,16 @@ def try_add_options(x, parser):
"""
if hasattr(x, 'add_options'):
x.add_options(parser)

def filter_translate_dict(d, key_translation):
"""
Filter and translate the keys of a dictionary
Args:
d: a dictionary to filter and translate
keys_translation: a dictionary of key translations
"""
return {key_translation[k] : v for k,v in d.items() if k in key_translation}

class gr_satellites_flowgraph(gr.hier_block2):
"""
Expand Down Expand Up @@ -149,18 +159,12 @@ def __init__(self, file = None, name = None, norad = None, samp_rate = None, iq
self._deframers = dict()
for key, transmitter in satyaml['transmitters'].items():
baudrate = transmitter['baudrate']
demodulator_additional_options = dict()
try:
demodulator_additional_options['deviation'] = transmitter['deviation']
demodulator_additional_options['af_carrier'] = transmitter['af_carrier']
except KeyError:
pass
demod_options = ['deviation', 'af_carrier']
demod_options = {k : k for k in demod_options}
demodulator_additional_options = filter_translate_dict(transmitter, demod_options)
demodulator = self.get_demodulator(transmitter['modulation'])(baudrate = baudrate, samp_rate = samp_rate, iq = iq, dump_path = dump_path, options = options, **demodulator_additional_options)
deframer_additional_options = dict()
try:
deframer_additional_options['frame_size'] = transmitter['frame size']
except KeyError:
pass
deframe_options = {'frame size' : 'frame_size'}
deframer_additional_options = filter_translate_dict(transmitter, deframe_options)
deframer = self.get_deframer(transmitter['framing'])(options = options, **deframer_additional_options)
self.connect(self, demodulator, deframer)
self._demodulators[key] = demodulator
Expand Down

0 comments on commit 49edced

Please sign in to comment.