From 4949527cf4c954beb6e57156bfccc30552734dd7 Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Sun, 7 Aug 2016 13:47:30 +0200 Subject: Replace own flowgraph by generated one --- README.md | 4 +- amplitude_ramp.py | 193 +--- dual_tone.grc | 3037 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 3074 insertions(+), 160 deletions(-) create mode 100644 dual_tone.grc diff --git a/README.md b/README.md index 8a27f87..574c7dd 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,9 @@ against the source signal. The measurements are written into a CSV file. It's your job to ensure you don't overload the B200 input signal power (-15dBm last time I checked). -First step is to gather some measurements: +Before you can start, use gnuradio-companion to generate dual_tone.py from dual_tone.grc + +Then gather some measurements ./amplitude_ramp.py --ampl-start 0.15 --ampl-stop 0.5 --ampl-step 0.01 --num-meas 300 --txgain 77 diff --git a/amplitude_ramp.py b/amplitude_ramp.py index 334bb86..6ae9326 100755 --- a/amplitude_ramp.py +++ b/amplitude_ramp.py @@ -31,13 +31,14 @@ import socket import struct import threading from Queue import Queue +from dual_tone import dual_tone # our flowgraph! # TCP ports used to communicate between the flowgraph and the python script # The flowgraph interleaves 3 float streams : # generator magnitude # phase difference # feedback magnitude -TCP_PORT = 47009 +TCP_PORT = 47009 # must be the same as in dual_tone! def xrange(start, stop, step): x = start @@ -45,145 +46,6 @@ def xrange(start, stop, step): yield x x += step -class amplitude_ramp(gr.top_block): - def __init__(self, options): - gr.top_block.__init__(self, "Amplitude Ramp") - - self.txgain = float(options.txgain) - self.source_ampl = float(options.ampl_start) - - self.samp_rate = 4e6 - self.rxgain = 0 - self.freq = 222e6 - self.decim = 4000 - - # Two-tone signal generator at 1kHz and 2kHz - self.analog_sig_source_x_0 = analog.sig_source_c( - self.samp_rate, analog.GR_COS_WAVE, 1000, self.source_ampl, 0) - self.analog_sig_source_x_1 = analog.sig_source_c( - self.samp_rate, analog.GR_COS_WAVE, 2000, self.source_ampl, 0) - self.blocks_add_xx_0 = blocks.add_vcc(1) - - # Connects to both USRP output, mag and phase converter - - self.uhd_usrp_sink_0 = uhd.usrp_sink( - "", - uhd.stream_args( - cpu_format="fc32", - channels=range(1), - ), - ) - self.uhd_usrp_sink_0.set_samp_rate(self.samp_rate) - self.uhd_usrp_sink_0.set_center_freq(self.freq, 0) - self.uhd_usrp_sink_0.set_gain(self.txgain, 0) - - self.blocks_complex_to_mag_squared_0 = blocks.complex_to_mag_squared(1) - - self.blocks_multiply_conjugate_cc_0 = blocks.multiply_conjugate_cc(1) - self.blocks_complex_to_arg_0 = blocks.complex_to_arg(1) - - # mag goes to TCP interleaver, phase goes to complex multiplier - # and complex-to-arg - - # Feedback from the USRP, goes to the subtractor after mag/phase - self.blocks_complex_to_mag_squared_1 = blocks.complex_to_mag_squared(1) - self.uhd_usrp_source_0 = uhd.usrp_source( - "", - uhd.stream_args( - cpu_format="fc32", - channels=range(1), - ), - ) - self.uhd_usrp_source_0.set_samp_rate(self.samp_rate) - self.uhd_usrp_source_0.set_center_freq(self.freq, 0) - self.uhd_usrp_source_0.set_gain(self.rxgain, 0) - - # The interleaved takes gen mag, phase diff and feedback mag - # signals and puts them together. We need to decimate before we interleave - self.blocks_moving_average_gen = blocks.moving_average_ff(self.decim, 1, 4000) - self.fir_filter_gen = filter.fir_filter_fff(self.decim, ([1])) - self.fir_filter_gen.declare_sample_delay(0) - - self.blocks_moving_average_phase = blocks.moving_average_ff(self.decim, 1, 4000) - self.fir_filter_phase = filter.fir_filter_fff(self.decim, ([1])) - self.fir_filter_phase.declare_sample_delay(0) - - self.blocks_moving_average_feedback = blocks.moving_average_ff(self.decim, 1, 4000) - self.fir_filter_feedback = filter.fir_filter_fff(self.decim, ([1])) - self.fir_filter_feedback.declare_sample_delay(0) - - self.blocks_interleave = blocks.interleave(gr.sizeof_float*1, 1) - - self.blks2_tcp_sink_0 = grc_blks2.tcp_sink( - itemsize=gr.sizeof_float*1, - addr="127.0.0.1", - port=TCP_PORT, - server=True, - ) - - # Connect outgoing - self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx_0, 1)) - self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx_0, 0)) - self.connect((self.blocks_add_xx_0, 0), (self.blocks_complex_to_mag_squared_0, 0)) - self.connect((self.blocks_add_xx_0, 0), (self.uhd_usrp_sink_0, 0)) - self.connect((self.blocks_add_xx_0, 0), (self.blocks_multiply_conjugate_cc_0, 0)) - - self.connect((self.blocks_complex_to_mag_squared_0, 0), - (self.blocks_moving_average_gen, 0)) - self.connect((self.blocks_moving_average_gen, 0), - (self.fir_filter_gen, 0)) - self.connect((self.fir_filter_gen, 0), (self.blocks_interleave, 0)) - - # Connect feedback - self.connect((self.uhd_usrp_source_0, 0), - (self.blocks_complex_to_mag_squared_1, 0)) - self.connect((self.uhd_usrp_source_0, 0), - (self.blocks_multiply_conjugate_cc_0, 1)) - - # Connect phase comparator - self.connect((self.blocks_multiply_conjugate_cc_0, 0), - (self.blocks_complex_to_arg_0, 0)) - self.connect((self.blocks_complex_to_arg_0, 0), - (self.blocks_moving_average_phase, 0)) - self.connect((self.blocks_moving_average_phase, 0), (self.fir_filter_phase, 0)) - self.connect((self.fir_filter_phase, 0), (self.blocks_interleave, 1)) - - self.connect((self.blocks_complex_to_mag_squared_1, 0), - (self.blocks_moving_average_feedback, 0)) - self.connect((self.blocks_moving_average_feedback, 0), - (self.fir_filter_feedback, 0)) - self.connect((self.fir_filter_feedback, 0), - (self.blocks_interleave, 2)) - - # connect interleaver output to TCP socket - self.connect((self.blocks_interleave, 0), (self.blks2_tcp_sink_0, 0)) - - - def get_txgain(self): - return self.txgain - - def set_txgain(self, txgain): - self.txgain = txgain - self.uhd_usrp_sink_0.set_gain(self.txgain, 0) - - def get_source_ampl(self): - return self.source_ampl - - def set_source_ampl(self, source_ampl): - print("Set amplitude to {}".format(source_ampl)) - self.source_ampl = source_ampl - self.analog_sig_source_x_0.set_amplitude(self.source_ampl) - self.analog_sig_source_x_1.set_amplitude(self.source_ampl) - - def get_freq(self): - return self.freq - - def set_freq(self, freq): - self.freq = freq - self.uhd_usrp_sink_0.set_center_freq(self.freq, 0) - self.uhd_usrp_source_0.set_center_freq(self.freq, 0) - - class RampGenerator(threading.Thread): def __init__(self, options): threading.Thread.__init__(self) @@ -293,6 +155,11 @@ parser.add_argument('--num-meas-to-skip', help='After each amplitude change, ignore num-meas-to-skip measurements', required=False) +parser.add_argument('--decim', + default='4000', + help='Interval in samples between when to take the average of the measurements', + required=False) + cli_args = parser.parse_args() rampgen = RampGenerator(cli_args) @@ -300,27 +167,35 @@ rampgen.start() # this blocks until the flowgraph is up and running, i.e. all sockets # got a connection -top = amplitude_ramp(cli_args) +top = dual_tone() + +top.set_decim(int(cli_args.decim)) +top.set_txgain = float(cli_args.txgain) +top.set_rxgain = 0 top.set_source_ampl(float(cli_args.ampl_start)) + +time.sleep(.5) + top.start() -while True: - event = rampgen.wait_on_event() - if event == "done": - measurements = rampgen.wait_on_event() - fd = open("measurements.csv", "w") - for m in measurements: - fd.write(",".join("{}".format(x) for x in m) + "\n") - fd.close() - break - elif event == "quit": - break - else: - top.set_source_ampl(event) - rampgen.confirm_source_ampl_updated() - -top.stop() -print("Wait for completion") -top.wait() +try: + while True: + event = rampgen.wait_on_event() + if event == "done": + measurements = rampgen.wait_on_event() + fd = open("measurements.csv", "w") + for m in measurements: + fd.write(",".join("{}".format(x) for x in m) + "\n") + fd.close() + break + elif event == "quit": + break + else: + top.set_source_ampl(event) + rampgen.confirm_source_ampl_updated() +finally: + top.stop() + print("Wait for completion") + top.wait() print("Done") diff --git a/dual_tone.grc b/dual_tone.grc new file mode 100644 index 0000000..87acc38 --- /dev/null +++ b/dual_tone.grc @@ -0,0 +1,3037 @@ + + + + Wed Oct 28 18:49:28 2015 + + options + + author + + + + window_size + + + + category + Custom + + + comment + + + + description + + + + _enabled + True + + + _coordinate + (8, 8) + + + _rotation + 0 + + + generate_options + no_gui + + + hier_block_src_path + .: + + + id + dual_tone + + + max_nouts + 0 + + + qt_qss_theme + + + + realtime_scheduling + + + + run_command + {python} -u {filename} + + + run_options + prompt + + + run + True + + + thread_safe_setters + + + + title + + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 165) + + + _rotation + 0 + + + id + decim + + + value + 4000 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (88, 237) + + + _rotation + 0 + + + id + freq + + + value + 222e6 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 301) + + + _rotation + 0 + + + id + rxgain + + + value + 0 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 85) + + + _rotation + 0 + + + id + samp_rate + + + value + 4e6 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (88, 165) + + + _rotation + 0 + + + id + source_ampl + + + value + 0 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 237) + + + _rotation + 0 + + + id + txgain + + + value + 0 + + + + analog_sig_source_x + + amp + source_ampl + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + freq + 2000 + + + _coordinate + (240, 160) + + + _rotation + 0 + + + id + analog_sig_source_x_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + offset + 0 + + + type + complex + + + samp_rate + samp_rate + + + waveform + analog.GR_COS_WAVE + + + + analog_sig_source_x + + amp + source_ampl + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + freq + 1000 + + + _coordinate + (240, 48) + + + _rotation + 0 + + + id + analog_sig_source_x_0_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + offset + 0 + + + type + complex + + + samp_rate + samp_rate + + + waveform + analog.GR_COS_WAVE + + + + blks2_tcp_sink + + addr + 127.0.0.1 + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1064, 358) + + + _rotation + 0 + + + id + blks2_tcp_sink_0 + + + type + float + + + server + True + + + port + 47009 + + + vlen + 1 + + + + blocks_add_xx + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (448, 161) + + + _rotation + 0 + + + id + blocks_add_xx_0 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + num_inputs + 2 + + + vlen + 1 + + + + blocks_complex_to_arg + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (744, 289) + + + _rotation + 0 + + + id + blocks_complex_to_arg_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_complex_to_mag_squared + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (552, 177) + + + _rotation + 0 + + + id + blocks_complex_to_mag_squared_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_complex_to_mag_squared + + alias + + + + comment + + + + affinity + + + + _enabled + 1 + + + _coordinate + (376, 457) + + + _rotation + 0 + + + id + blocks_complex_to_mag_squared_0_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_interleave + + alias + + + + blocksize + 1 + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (944, 345) + + + _rotation + 0 + + + id + blocks_interleave_0 + + + type + float + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + num_streams + 3 + + + vlen + 1 + + + + blocks_moving_average_xx + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (552, 358) + + + _rotation + 0 + + + id + blocks_moving_average_xx_0 + + + length + decim + + + max_iter + 4000 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + scale + 1 + + + type + float + + + + blocks_moving_average_xx + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (728, 158) + + + _rotation + 0 + + + id + blocks_moving_average_xx_0_0 + + + length + decim + + + max_iter + 4000 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + scale + 1 + + + type + float + + + + blocks_moving_average_xx + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (552, 438) + + + _rotation + 0 + + + id + blocks_moving_average_xx_0_1 + + + length + decim + + + max_iter + 4000 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + scale + 1 + + + type + float + + + + blocks_multiply_conjugate_cc + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (568, 273) + + + _rotation + 0 + + + id + blocks_multiply_conjugate_cc_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + fir_filter_xxx + + alias + + + + comment + + + + affinity + + + + decim + decim + + + _enabled + True + + + _coordinate + (712, 365) + + + _rotation + 0 + + + id + fir_filter_xxx_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + samp_delay + 0 + + + taps + [1] + + + type + fff + + + + fir_filter_xxx + + alias + + + + comment + + + + affinity + + + + decim + decim + + + _enabled + True + + + _coordinate + (888, 165) + + + _rotation + 0 + + + id + fir_filter_xxx_0_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + samp_delay + 0 + + + taps + [1] + + + type + fff + + + + fir_filter_xxx + + alias + + + + comment + + + + affinity + + + + decim + decim + + + _enabled + True + + + _coordinate + (712, 445) + + + _rotation + 0 + + + id + fir_filter_xxx_0_1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + samp_delay + 0 + + + taps + [1] + + + type + fff + + + + uhd_usrp_sink + + alias + + + + ant0 + + + + bw0 + 0 + + + center_freq0 + freq + + + norm_gain0 + False + + + gain0 + txgain + + + ant10 + + + + bw10 + 0 + + + center_freq10 + 0 + + + norm_gain10 + False + + + gain10 + 0 + + + ant11 + + + + bw11 + 0 + + + center_freq11 + 0 + + + norm_gain11 + False + + + gain11 + 0 + + + ant12 + + + + bw12 + 0 + + + center_freq12 + 0 + + + norm_gain12 + False + + + gain12 + 0 + + + ant13 + + + + bw13 + 0 + + + center_freq13 + 0 + + + norm_gain13 + False + + + gain13 + 0 + + + ant14 + + + + bw14 + 0 + + + center_freq14 + 0 + + + norm_gain14 + False + + + gain14 + 0 + + + ant15 + + + + bw15 + 0 + + + center_freq15 + 0 + + + norm_gain15 + False + + + gain15 + 0 + + + ant16 + + + + bw16 + 0 + + + center_freq16 + 0 + + + norm_gain16 + False + + + gain16 + 0 + + + ant17 + + + + bw17 + 0 + + + center_freq17 + 0 + + + norm_gain17 + False + + + gain17 + 0 + + + ant18 + + + + bw18 + 0 + + + center_freq18 + 0 + + + norm_gain18 + False + + + gain18 + 0 + + + ant19 + + + + bw19 + 0 + + + center_freq19 + 0 + + + norm_gain19 + False + + + gain19 + 0 + + + ant1 + + + + bw1 + 0 + + + center_freq1 + 0 + + + norm_gain1 + False + + + gain1 + 0 + + + ant20 + + + + bw20 + 0 + + + center_freq20 + 0 + + + norm_gain20 + False + + + gain20 + 0 + + + ant21 + + + + bw21 + 0 + + + center_freq21 + 0 + + + norm_gain21 + False + + + gain21 + 0 + + + ant22 + + + + bw22 + 0 + + + center_freq22 + 0 + + + norm_gain22 + False + + + gain22 + 0 + + + ant23 + + + + bw23 + 0 + + + center_freq23 + 0 + + + norm_gain23 + False + + + gain23 + 0 + + + ant24 + + + + bw24 + 0 + + + center_freq24 + 0 + + + norm_gain24 + False + + + gain24 + 0 + + + ant25 + + + + bw25 + 0 + + + center_freq25 + 0 + + + norm_gain25 + False + + + gain25 + 0 + + + ant26 + + + + bw26 + 0 + + + center_freq26 + 0 + + + norm_gain26 + False + + + gain26 + 0 + + + ant27 + + + + bw27 + 0 + + + center_freq27 + 0 + + + norm_gain27 + False + + + gain27 + 0 + + + ant28 + + + + bw28 + 0 + + + center_freq28 + 0 + + + norm_gain28 + False + + + gain28 + 0 + + + ant29 + + + + bw29 + 0 + + + center_freq29 + 0 + + + norm_gain29 + False + + + gain29 + 0 + + + ant2 + + + + bw2 + 0 + + + center_freq2 + 0 + + + norm_gain2 + False + + + gain2 + 0 + + + ant30 + + + + bw30 + 0 + + + center_freq30 + 0 + + + norm_gain30 + False + + + gain30 + 0 + + + ant31 + + + + bw31 + 0 + + + center_freq31 + 0 + + + norm_gain31 + False + + + gain31 + 0 + + + ant3 + + + + bw3 + 0 + + + center_freq3 + 0 + + + norm_gain3 + False + + + gain3 + 0 + + + ant4 + + + + bw4 + 0 + + + center_freq4 + 0 + + + norm_gain4 + False + + + gain4 + 0 + + + ant5 + + + + bw5 + 0 + + + center_freq5 + 0 + + + norm_gain5 + False + + + gain5 + 0 + + + ant6 + + + + bw6 + 0 + + + center_freq6 + 0 + + + norm_gain6 + False + + + gain6 + 0 + + + ant7 + + + + bw7 + 0 + + + center_freq7 + 0 + + + norm_gain7 + False + + + gain7 + 0 + + + ant8 + + + + bw8 + 0 + + + center_freq8 + 0 + + + norm_gain8 + False + + + gain8 + 0 + + + ant9 + + + + bw9 + 0 + + + center_freq9 + 0 + + + norm_gain9 + False + + + gain9 + 0 + + + clock_rate + 0.0 + + + comment + + + + affinity + + + + dev_addr + "" + + + dev_args + "" + + + _enabled + True + + + _coordinate + (560, 63) + + + _rotation + 0 + + + id + uhd_usrp_sink_0 + + + type + fc32 + + + clock_source0 + + + + sd_spec0 + + + + time_source0 + + + + clock_source1 + + + + sd_spec1 + + + + time_source1 + + + + clock_source2 + + + + sd_spec2 + + + + time_source2 + + + + clock_source3 + + + + sd_spec3 + + + + time_source3 + + + + clock_source4 + + + + sd_spec4 + + + + time_source4 + + + + clock_source5 + + + + sd_spec5 + + + + time_source5 + + + + clock_source6 + + + + sd_spec6 + + + + time_source6 + + + + clock_source7 + + + + sd_spec7 + + + + time_source7 + + + + nchan + 1 + + + num_mboards + 1 + + + samp_rate + samp_rate + + + hide_cmd_port + False + + + stream_args + + + + stream_chans + [] + + + sync + + + + len_tag_name + + + + otw + + + + + uhd_usrp_source + + alias + + + + ant0 + + + + bw0 + 0 + + + center_freq0 + freq + + + dc_offs_enb0 + "" + + + iq_imbal_enb0 + "" + + + norm_gain0 + False + + + gain0 + rxgain + + + ant10 + + + + bw10 + 0 + + + center_freq10 + 0 + + + dc_offs_enb10 + "" + + + iq_imbal_enb10 + "" + + + norm_gain10 + False + + + gain10 + 0 + + + ant11 + + + + bw11 + 0 + + + center_freq11 + 0 + + + dc_offs_enb11 + "" + + + iq_imbal_enb11 + "" + + + norm_gain11 + False + + + gain11 + 0 + + + ant12 + + + + bw12 + 0 + + + center_freq12 + 0 + + + dc_offs_enb12 + "" + + + iq_imbal_enb12 + "" + + + norm_gain12 + False + + + gain12 + 0 + + + ant13 + + + + bw13 + 0 + + + center_freq13 + 0 + + + dc_offs_enb13 + "" + + + iq_imbal_enb13 + "" + + + norm_gain13 + False + + + gain13 + 0 + + + ant14 + + + + bw14 + 0 + + + center_freq14 + 0 + + + dc_offs_enb14 + "" + + + iq_imbal_enb14 + "" + + + norm_gain14 + False + + + gain14 + 0 + + + ant15 + + + + bw15 + 0 + + + center_freq15 + 0 + + + dc_offs_enb15 + "" + + + iq_imbal_enb15 + "" + + + norm_gain15 + False + + + gain15 + 0 + + + ant16 + + + + bw16 + 0 + + + center_freq16 + 0 + + + dc_offs_enb16 + "" + + + iq_imbal_enb16 + "" + + + norm_gain16 + False + + + gain16 + 0 + + + ant17 + + + + bw17 + 0 + + + center_freq17 + 0 + + + dc_offs_enb17 + "" + + + iq_imbal_enb17 + "" + + + norm_gain17 + False + + + gain17 + 0 + + + ant18 + + + + bw18 + 0 + + + center_freq18 + 0 + + + dc_offs_enb18 + "" + + + iq_imbal_enb18 + "" + + + norm_gain18 + False + + + gain18 + 0 + + + ant19 + + + + bw19 + 0 + + + center_freq19 + 0 + + + dc_offs_enb19 + "" + + + iq_imbal_enb19 + "" + + + norm_gain19 + False + + + gain19 + 0 + + + ant1 + + + + bw1 + 0 + + + center_freq1 + 0 + + + dc_offs_enb1 + "" + + + iq_imbal_enb1 + "" + + + norm_gain1 + False + + + gain1 + 0 + + + ant20 + + + + bw20 + 0 + + + center_freq20 + 0 + + + dc_offs_enb20 + "" + + + iq_imbal_enb20 + "" + + + norm_gain20 + False + + + gain20 + 0 + + + ant21 + + + + bw21 + 0 + + + center_freq21 + 0 + + + dc_offs_enb21 + "" + + + iq_imbal_enb21 + "" + + + norm_gain21 + False + + + gain21 + 0 + + + ant22 + + + + bw22 + 0 + + + center_freq22 + 0 + + + dc_offs_enb22 + "" + + + iq_imbal_enb22 + "" + + + norm_gain22 + False + + + gain22 + 0 + + + ant23 + + + + bw23 + 0 + + + center_freq23 + 0 + + + dc_offs_enb23 + "" + + + iq_imbal_enb23 + "" + + + norm_gain23 + False + + + gain23 + 0 + + + ant24 + + + + bw24 + 0 + + + center_freq24 + 0 + + + dc_offs_enb24 + "" + + + iq_imbal_enb24 + "" + + + norm_gain24 + False + + + gain24 + 0 + + + ant25 + + + + bw25 + 0 + + + center_freq25 + 0 + + + dc_offs_enb25 + "" + + + iq_imbal_enb25 + "" + + + norm_gain25 + False + + + gain25 + 0 + + + ant26 + + + + bw26 + 0 + + + center_freq26 + 0 + + + dc_offs_enb26 + "" + + + iq_imbal_enb26 + "" + + + norm_gain26 + False + + + gain26 + 0 + + + ant27 + + + + bw27 + 0 + + + center_freq27 + 0 + + + dc_offs_enb27 + "" + + + iq_imbal_enb27 + "" + + + norm_gain27 + False + + + gain27 + 0 + + + ant28 + + + + bw28 + 0 + + + center_freq28 + 0 + + + dc_offs_enb28 + "" + + + iq_imbal_enb28 + "" + + + norm_gain28 + False + + + gain28 + 0 + + + ant29 + + + + bw29 + 0 + + + center_freq29 + 0 + + + dc_offs_enb29 + "" + + + iq_imbal_enb29 + "" + + + norm_gain29 + False + + + gain29 + 0 + + + ant2 + + + + bw2 + 0 + + + center_freq2 + 0 + + + dc_offs_enb2 + "" + + + iq_imbal_enb2 + "" + + + norm_gain2 + False + + + gain2 + 0 + + + ant30 + + + + bw30 + 0 + + + center_freq30 + 0 + + + dc_offs_enb30 + "" + + + iq_imbal_enb30 + "" + + + norm_gain30 + False + + + gain30 + 0 + + + ant31 + + + + bw31 + 0 + + + center_freq31 + 0 + + + dc_offs_enb31 + "" + + + iq_imbal_enb31 + "" + + + norm_gain31 + False + + + gain31 + 0 + + + ant3 + + + + bw3 + 0 + + + center_freq3 + 0 + + + dc_offs_enb3 + "" + + + iq_imbal_enb3 + "" + + + norm_gain3 + False + + + gain3 + 0 + + + ant4 + + + + bw4 + 0 + + + center_freq4 + 0 + + + dc_offs_enb4 + "" + + + iq_imbal_enb4 + "" + + + norm_gain4 + False + + + gain4 + 0 + + + ant5 + + + + bw5 + 0 + + + center_freq5 + 0 + + + dc_offs_enb5 + "" + + + iq_imbal_enb5 + "" + + + norm_gain5 + False + + + gain5 + 0 + + + ant6 + + + + bw6 + 0 + + + center_freq6 + 0 + + + dc_offs_enb6 + "" + + + iq_imbal_enb6 + "" + + + norm_gain6 + False + + + gain6 + 0 + + + ant7 + + + + bw7 + 0 + + + center_freq7 + 0 + + + dc_offs_enb7 + "" + + + iq_imbal_enb7 + "" + + + norm_gain7 + False + + + gain7 + 0 + + + ant8 + + + + bw8 + 0 + + + center_freq8 + 0 + + + dc_offs_enb8 + "" + + + iq_imbal_enb8 + "" + + + norm_gain8 + False + + + gain8 + 0 + + + ant9 + + + + bw9 + 0 + + + center_freq9 + 0 + + + dc_offs_enb9 + "" + + + iq_imbal_enb9 + "" + + + norm_gain9 + False + + + gain9 + 0 + + + clock_rate + 0.0 + + + comment + + + + affinity + + + + dev_addr + "" + + + dev_args + "" + + + _enabled + True + + + _coordinate + (240, 286) + + + _rotation + 0 + + + id + uhd_usrp_source_0 + + + maxoutbuf + 0 + + + clock_source0 + + + + sd_spec0 + + + + time_source0 + + + + clock_source1 + + + + sd_spec1 + + + + time_source1 + + + + clock_source2 + + + + sd_spec2 + + + + time_source2 + + + + clock_source3 + + + + sd_spec3 + + + + time_source3 + + + + clock_source4 + + + + sd_spec4 + + + + time_source4 + + + + clock_source5 + + + + sd_spec5 + + + + time_source5 + + + + clock_source6 + + + + sd_spec6 + + + + time_source6 + + + + clock_source7 + + + + sd_spec7 + + + + time_source7 + + + + minoutbuf + 0 + + + nchan + 1 + + + num_mboards + 1 + + + type + fc32 + + + samp_rate + samp_rate + + + hide_cmd_port + False + + + stream_args + + + + stream_chans + [] + + + sync + + + + otw + + + + + analog_sig_source_x_0 + blocks_add_xx_0 + 0 + 1 + + + analog_sig_source_x_0_0 + blocks_add_xx_0 + 0 + 0 + + + blocks_add_xx_0 + blocks_complex_to_mag_squared_0 + 0 + 0 + + + blocks_add_xx_0 + blocks_multiply_conjugate_cc_0 + 0 + 0 + + + blocks_add_xx_0 + uhd_usrp_sink_0 + 0 + 0 + + + blocks_complex_to_arg_0 + blocks_moving_average_xx_0 + 0 + 0 + + + blocks_complex_to_mag_squared_0 + blocks_moving_average_xx_0_0 + 0 + 0 + + + blocks_complex_to_mag_squared_0_0 + blocks_moving_average_xx_0_1 + 0 + 0 + + + blocks_interleave_0 + blks2_tcp_sink_0 + 0 + 0 + + + blocks_moving_average_xx_0 + fir_filter_xxx_0 + 0 + 0 + + + blocks_moving_average_xx_0_0 + fir_filter_xxx_0_0 + 0 + 0 + + + blocks_moving_average_xx_0_1 + fir_filter_xxx_0_1 + 0 + 0 + + + blocks_multiply_conjugate_cc_0 + blocks_complex_to_arg_0 + 0 + 0 + + + fir_filter_xxx_0 + blocks_interleave_0 + 0 + 1 + + + fir_filter_xxx_0_0 + blocks_interleave_0 + 0 + 0 + + + fir_filter_xxx_0_1 + blocks_interleave_0 + 0 + 2 + + + uhd_usrp_source_0 + blocks_complex_to_mag_squared_0_0 + 0 + 0 + + + uhd_usrp_source_0 + blocks_multiply_conjugate_cc_0 + 0 + 1 + + -- cgit v1.2.3