Ejemplo n.º 1
0
    def test_extended_pack_data(self):
        # test if extended encoder gets correct values for input and output
        # conversion.
        n_frames = 10
        frame_size = 32

        data = np.random.randint(0, 2, n_frames * frame_size)
        data.dtype = np.uint8
        packed_data = np.packbits(data)

        tb = gr.top_block()

        src = blocks.vector_source_b(data)
        snk0 = blocks.vector_sink_b(1)
        snk1 = blocks.vector_sink_b(1)
        snk2 = blocks.vector_sink_b(1)
        snk3 = blocks.vector_sink_b(1)

        packer = blocks.pack_k_bits_bb(8)
        tb.connect(src, packer, snk0)

        enc_unpacked = fec.dummy_encoder_make(frame_size, False, False)
        ext_enc_unp = extended_encoder(enc_unpacked,
                                       threading='none',
                                       puncpat='11')
        tb.connect(src, ext_enc_unp, snk1)

        enc_pack = fec.dummy_encoder_make(frame_size // 8, True, False)
        ext_enc_pack = extended_encoder(enc_pack,
                                        threading='none',
                                        puncpat='11')
        tb.connect(src, ext_enc_pack, snk2)

        enc_packed_bits = fec.dummy_encoder_make(frame_size // 8, False, True)
        ext_enc_packed_bits = extended_encoder(enc_packed_bits,
                                               threading='none',
                                               puncpat='11')
        tb.connect(packer, ext_enc_packed_bits, snk3)

        tb.run()

        r0 = snk0.data()
        r1 = snk1.data()
        r2 = snk2.data()
        r3 = snk3.data()

        data = list(data)
        packed_data = list(packed_data)
        self.assertListEqual(packed_data, r0)
        self.assertListEqual(data, r1)
        self.assertListEqual(packed_data, r2)
        self.assertListEqual(data, r3)
Ejemplo n.º 2
0
    def test_parallelism1_05(self):
        frame_size = 30
        dims = 5
        enc = list(map((lambda a: fec.dummy_encoder_make(frame_size*8)), list(range(0,dims))))
        #dec = list(map((lambda a: fec.dummy_decoder.make(frame_size*8)), range(0,dims)))
        threading = 'capillary'

        self.assertRaises(AttributeError, lambda: extended_encoder(enc, threading=threading, puncpat="11"))
Ejemplo n.º 3
0
    def test_parallelism1_05(self):
        frame_size = 30
        dims = 5
        enc = list(map((lambda a: fec.dummy_encoder_make(frame_size*8)), list(range(0,dims))))
        #dec = map((lambda a: fec.dummy_decoder.make(frame_size*8)), range(0,dims))
        threading = 'capillary'

        self.assertRaises(AttributeError, lambda: extended_encoder(enc, threading=threading, puncpat="11"))
Ejemplo n.º 4
0
    def test_extended_pack_data(self):
        # test if extended encoder gets correct values for input and output conversion.
        n_frames = 10
        frame_size = 32

        data = np.random.randint(0, 2, n_frames * frame_size)
        data.dtype = np.uint8
        packed_data = np.packbits(data)

        tb = gr.top_block()

        src = blocks.vector_source_b(data)
        snk0 = blocks.vector_sink_b(1)
        snk1 = blocks.vector_sink_b(1)
        snk2 = blocks.vector_sink_b(1)
        snk3 = blocks.vector_sink_b(1)

        packer = blocks.pack_k_bits_bb(8)
        tb.connect(src, packer, snk0)

        enc_unpacked = fec.dummy_encoder_make(frame_size, False, False)
        ext_enc_unp = extended_encoder(enc_unpacked, threading='none', puncpat='11')
        tb.connect(src, ext_enc_unp, snk1)

        enc_pack = fec.dummy_encoder_make(frame_size // 8, True, False)
        ext_enc_pack = extended_encoder(enc_pack, threading='none', puncpat='11')
        tb.connect(src, ext_enc_pack, snk2)

        enc_packed_bits = fec.dummy_encoder_make(frame_size // 8, False, True)
        ext_enc_packed_bits = extended_encoder(enc_packed_bits, threading='none', puncpat='11')
        tb.connect(packer, ext_enc_packed_bits, snk3)

        tb.run()

        r0 = snk0.data()
        r1 = snk1.data()
        r2 = snk2.data()
        r3 = snk3.data()

        data = tuple(data)
        packed_data = tuple(packed_data)
        self.assertTupleEqual(packed_data, r0)
        self.assertTupleEqual(data, r1)
        self.assertTupleEqual(packed_data, r2)
        self.assertTupleEqual(data, r3)
Ejemplo n.º 5
0
    def test_parallelism1_01(self):
        frame_size = 30
        enc = list(map((lambda a: fec.dummy_encoder_make(frame_size*8)), list(range(0,1))))
        dec = list(map((lambda a: fec.dummy_decoder.make(frame_size*8)), list(range(0,1))))
        threading = 'ordinary'
        self.test = _qa_helper(10*frame_size, enc, dec, threading)
        self.tb.connect(self.test)
        self.tb.run()

        data_in = self.test.snk_input.data()
        data_out =self.test.snk_output.data()

        self.assertEqual(data_in, data_out)
Ejemplo n.º 6
0
    def test_parallelism1_01(self):
        frame_size = 30
        enc = list(map((lambda a: fec.dummy_encoder_make(frame_size*8)), list(range(0,1))))
        dec = list(map((lambda a: fec.dummy_decoder.make(frame_size*8)), list(range(0,1))))
        threading = 'ordinary'
        self.test = _qa_helper(10*frame_size, enc, dec, threading)
        self.tb.connect(self.test)
        self.tb.run()

        data_in = self.test.snk_input.data()
        data_out =self.test.snk_output.data()

        self.assertEqual(data_in, data_out)
Ejemplo n.º 7
0
    def test_parallelism0_02(self):
        frame_size = 30
        enc = fec.dummy_encoder_make(frame_size*8)
        dec = fec.dummy_decoder.make(frame_size*8)
        threading = 'capillary'
        self.test = _qa_helper(10*frame_size, enc, dec, threading)
        self.tb.connect(self.test)
        self.tb.run()

        data_in = self.test.snk_input.data()
        data_out =self.test.snk_output.data()

        self.assertEqual(data_in, data_out)
Ejemplo n.º 8
0
    def test_parallelism0_02(self):
        frame_size = 30
        enc = fec.dummy_encoder_make(frame_size*8)
        dec = fec.dummy_decoder.make(frame_size*8)
        threading = 'capillary'
        self.test = _qa_helper(10*frame_size, enc, dec, threading)
        self.tb.connect(self.test)
        self.tb.run()

        data_in = self.test.snk_input.data()
        data_out =self.test.snk_output.data()

        self.assertEqual(data_in, data_out)
Ejemplo n.º 9
0
    def test_parallelism1_04(self):
        frame_size = 30
        dims = 16
        enc = list(
            map((lambda a: fec.dummy_encoder_make(frame_size * 8)),
                list(range(0, dims))))
        dec = list(
            map((lambda a: fec.dummy_decoder.make(frame_size * 8)),
                list(range(0, dims))))
        threading = 'capillary'
        self.test = _qa_helper(dims * frame_size, enc, dec, threading)
        self.tb.connect(self.test)
        self.tb.run()

        data_in = self.test.snk_input.data()
        data_out = self.test.snk_output.data()

        self.assertSequenceEqualGR(data_in, data_out)
Ejemplo n.º 10
0
    def __init__(self,
                 modulation,
                 code_rate,
                 num_samples,
                 code_type="convolutional"):
        gr.top_block.__init__(self, "Modulation and Coding Scheme")

        ##################################################
        # Variables
        ##################################################
        self.modulation = modulation
        self.code_rate = code_rate
        self.num_samples = num_samples
        self.code_type = code_type
        self.enc_cc = fec.dummy_encoder_make(2048)
        if code_rate != '1':
            self.enc_cc = fec.cc_encoder_make(2048, 7, 2, ([79, 109]), 0,
                                              fec.CC_STREAMING, False)
        self.const = digital.constellation_bpsk().base()
        self.puncpat = '11'
        self.snr_db = 10

        self.get_constellation_from_string(modulation)
        self.get_puncpat_from_string(code_rate)

        ##################################################
        # Blocks
        ##################################################
        self.fec_extended_encoder_0 = fec.extended_encoder(
            encoder_obj_list=self.enc_cc,
            threading='capillary',
            puncpat=self.puncpat)
        self.digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bc(
            (self.const.points()), 1)
        self.blocks_probe_signal_vx_0 = blocks.probe_signal_vc(
            self.num_samples)
        self.blocks_stream_to_vector_0 = blocks.stream_to_vector(
            gr.sizeof_gr_complex * 1, self.num_samples)
        self.analog_random_source_x_0 = blocks.vector_source_b(
            map(int, np.random.randint(0, 256, 100000)), True)
        self.channels_channel_model_0 = channels.channel_model(
            noise_voltage=np.sqrt(10.0**(-self.snr_db / 10.0) / 2.0),
            frequency_offset=0.0,
            epsilon=1.0,
            taps=(1.0, ),
            noise_seed=0,
            block_tags=False)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_random_source_x_0, 0),
                     (self.fec_extended_encoder_0, 0))
        self.connect((self.fec_extended_encoder_0, 0),
                     (self.digital_chunks_to_symbols_xx_0, 0))
        self.connect((self.digital_chunks_to_symbols_xx_0, 0),
                     (self.channels_channel_model_0, 0))
        self.connect((self.channels_channel_model_0, 0),
                     (self.blocks_stream_to_vector_0, 0))
        self.connect((self.blocks_stream_to_vector_0, 0),
                     (self.blocks_probe_signal_vx_0, 0))
Ejemplo n.º 11
0
    def __init__(self,
                 hdr_const=digital.constellation_calcdist(
                     (digital.psk_2()[0]), (digital.psk_2()[1]), 2, 1).base(),
                 hdr_enc=fec.dummy_encoder_make(8000),
                 hdr_format=digital.header_format_default(
                     digital.packet_utils.default_access_code, 0),
                 pld_const=digital.constellation_calcdist(
                     (digital.psk_2()[0]), (digital.psk_2()[1]), 2, 1).base(),
                 pld_enc=fec.dummy_encoder_make(8000),
                 psf_taps=[
                     0,
                 ],
                 sps=2):
        gr.hier_block2.__init__(
            self,
            "Packet Tx",
            gr.io_signature(0, 0, 0),
            gr.io_signaturev(3, 3, [
                gr.sizeof_gr_complex * 1, gr.sizeof_gr_complex * 1,
                gr.sizeof_gr_complex * 1
            ]),
        )
        self.message_port_register_hier_in("in")
        self.message_port_register_hier_out("postcrc")

        ##################################################
        # Parameters
        ##################################################
        self.hdr_const = hdr_const
        self.hdr_enc = hdr_enc
        self.hdr_format = hdr_format
        self.pld_const = pld_const
        self.pld_enc = pld_enc
        self.psf_taps = psf_taps
        self.sps = sps

        ##################################################
        # Variables
        ##################################################
        self.nfilts = nfilts = 32
        self.taps_per_filt = taps_per_filt = len(psf_taps) / nfilts
        self.filt_delay = filt_delay = int(1 + (taps_per_filt - 1) // 2)

        ##################################################
        # Blocks
        ##################################################
        self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf(sps,
                                                             taps=psf_taps,
                                                             flt_size=nfilts)
        self.pfb_arb_resampler_xxx_0.declare_sample_delay(filt_delay)
        self.fec_async_encoder_0_0 = fec.async_encoder(hdr_enc, True, False,
                                                       False, 1500)
        self.fec_async_encoder_0 = fec.async_encoder(pld_enc, True, False,
                                                     False, 1500)
        self.digital_protocol_formatter_async_0 = digital.protocol_formatter_async(
            hdr_format)
        self.digital_map_bb_1_0 = digital.map_bb(pld_const.pre_diff_code())
        self.digital_map_bb_1 = digital.map_bb(hdr_const.pre_diff_code())
        self.digital_crc32_async_bb_1 = digital.crc32_async_bb(False)
        self.digital_chunks_to_symbols_xx_0_0 = digital.chunks_to_symbols_bc(
            pld_const.points(), 1)
        self.digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bc(
            hdr_const.points(), 1)
        self.blocks_tagged_stream_mux_0 = blocks.tagged_stream_mux(
            gr.sizeof_gr_complex * 1, 'packet_len', 0)
        self.blocks_tagged_stream_multiply_length_0 = blocks.tagged_stream_multiply_length(
            gr.sizeof_gr_complex * 1, 'packet_len', sps)
        self.blocks_repack_bits_bb_0_0 = blocks.repack_bits_bb(
            8, pld_const.bits_per_symbol(), 'packet_len', False,
            gr.GR_MSB_FIRST)
        self.blocks_repack_bits_bb_0 = blocks.repack_bits_bb(
            8, hdr_const.bits_per_symbol(), 'packet_len', False,
            gr.GR_MSB_FIRST)
        self.blocks_pdu_to_tagged_stream_0_0 = blocks.pdu_to_tagged_stream(
            blocks.byte_t, 'packet_len')
        self.blocks_pdu_to_tagged_stream_0 = blocks.pdu_to_tagged_stream(
            blocks.byte_t, 'packet_len')

        ##################################################
        # Connections
        ##################################################
        self.msg_connect((self.digital_crc32_async_bb_1, 'out'),
                         (self.fec_async_encoder_0, 'in'))
        self.msg_connect((self.digital_crc32_async_bb_1, 'out'),
                         (self, 'postcrc'))
        self.msg_connect((self.digital_protocol_formatter_async_0, 'payload'),
                         (self.blocks_pdu_to_tagged_stream_0, 'pdus'))
        self.msg_connect((self.digital_protocol_formatter_async_0, 'header'),
                         (self.fec_async_encoder_0_0, 'in'))
        self.msg_connect((self.fec_async_encoder_0, 'out'),
                         (self.digital_protocol_formatter_async_0, 'in'))
        self.msg_connect((self.fec_async_encoder_0_0, 'out'),
                         (self.blocks_pdu_to_tagged_stream_0_0, 'pdus'))
        self.msg_connect((self, 'in'), (self.digital_crc32_async_bb_1, 'in'))
        self.connect((self.blocks_pdu_to_tagged_stream_0, 0),
                     (self.blocks_repack_bits_bb_0_0, 0))
        self.connect((self.blocks_pdu_to_tagged_stream_0_0, 0),
                     (self.blocks_repack_bits_bb_0, 0))
        self.connect((self.blocks_repack_bits_bb_0, 0),
                     (self.digital_map_bb_1, 0))
        self.connect((self.blocks_repack_bits_bb_0_0, 0),
                     (self.digital_map_bb_1_0, 0))
        self.connect((self.blocks_tagged_stream_multiply_length_0, 0),
                     (self, 0))
        self.connect((self.blocks_tagged_stream_mux_0, 0), (self, 1))
        self.connect((self.blocks_tagged_stream_mux_0, 0), (self, 2))
        self.connect((self.blocks_tagged_stream_mux_0, 0),
                     (self.pfb_arb_resampler_xxx_0, 0))
        self.connect((self.digital_chunks_to_symbols_xx_0, 0),
                     (self.blocks_tagged_stream_mux_0, 0))
        self.connect((self.digital_chunks_to_symbols_xx_0_0, 0),
                     (self.blocks_tagged_stream_mux_0, 1))
        self.connect((self.digital_map_bb_1, 0),
                     (self.digital_chunks_to_symbols_xx_0, 0))
        self.connect((self.digital_map_bb_1_0, 0),
                     (self.digital_chunks_to_symbols_xx_0_0, 0))
        self.connect((self.pfb_arb_resampler_xxx_0, 0),
                     (self.blocks_tagged_stream_multiply_length_0, 0))
    def __init__(self,
                 Np,
                 P,
                 modulation,
                 code_rate,
                 code_type="convolutional"
                 ):
        gr.top_block.__init__(self, "Modulation and Coding Scheme")

        ##################################################
        # Variables
        ##################################################
        self.Np = Np
        self.P = P
        self.samp_rate = 100000
        self.puncpat = '11'
        self.snr_db = 10
        if code_rate == '1':
            self.enc_cc = fec.dummy_encoder_make(128)
        else:
            self.enc_cc = fec.cc_encoder_make(128, 7, 2, ([79, 109]), 0, fec.CC_STREAMING, False)
        self.const = digital.constellation_bpsk().base()
        self.get_constellation_from_string(modulation)
        self.get_puncpat_from_string(code_rate)


        ##################################################
        # Blocks
        ##################################################
        self.specest_cyclo_fam_0 = specest.cyclo_fam(self.Np, self.P, self.Np/4)
        self.interp_fir_filter_xxx_0 = filter.interp_fir_filter_ccc(4, (firdes.low_pass_2(1, 1, 1/8.0, 1/16.0, 80)))
        self.interp_fir_filter_xxx_0.declare_sample_delay(0)
        self.fec_extended_encoder_0 = fec.extended_encoder(encoder_obj_list=self.enc_cc, threading='capillary', puncpat='11')
        self.digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bc((self.const.points()), 1)
        self.channels_channel_model_0 = channels.channel_model(
            noise_voltage=10.0**(-self.snr_db/20.0),
            frequency_offset=0.0,
            epsilon=1.0,
            taps=(1.0, ),
            noise_seed=0,
            block_tags=False
        )
        self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, self.samp_rate,True)
        self.blocks_repack_bits_bb_0 = blocks.repack_bits_bb(1, int(np.log2(self.const.arity())), "", False, gr.GR_LSB_FIRST)
        self.blocks_null_source_0 = blocks.null_source(gr.sizeof_float*1)
        self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_float*2*self.Np)
        self.blocks_multiply_xx_0 = blocks.multiply_vcc(1)
        self.blocks_float_to_complex_0 = blocks.float_to_complex(1)
        self.blocks_complex_to_real_0 = blocks.complex_to_real(1)
        self.analog_sig_source_x_0 = analog.sig_source_c(self.samp_rate, analog.GR_COS_WAVE, self.samp_rate/4, 1, 0)
        self.analog_random_source_x_0 = blocks.vector_source_b(map(int, numpy.random.randint(0, 256, 1000000)), True)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_random_source_x_0, 0), (self.fec_extended_encoder_0, 0))
        self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1))
        self.connect((self.blocks_complex_to_real_0, 0), (self.blocks_float_to_complex_0, 0))
        self.connect((self.blocks_float_to_complex_0, 0), (self.specest_cyclo_fam_0, 0))
        self.connect((self.blocks_multiply_xx_0, 0), (self.channels_channel_model_0, 0))
        self.connect((self.blocks_null_source_0, 0), (self.blocks_float_to_complex_0, 1))
        self.connect((self.blocks_repack_bits_bb_0, 0), (self.digital_chunks_to_symbols_xx_0, 0))
        self.connect((self.blocks_throttle_0, 0), (self.blocks_complex_to_real_0, 0))
        self.connect((self.channels_channel_model_0, 0), (self.blocks_throttle_0, 0))
        self.connect((self.digital_chunks_to_symbols_xx_0, 0), (self.interp_fir_filter_xxx_0, 0))
        self.connect((self.fec_extended_encoder_0, 0), (self.blocks_repack_bits_bb_0, 0))
        self.connect((self.interp_fir_filter_xxx_0, 0), (self.blocks_multiply_xx_0, 0))
        self.connect((self.specest_cyclo_fam_0, 0), (self.blocks_null_sink_0, 0))
Ejemplo n.º 13
0
    def __init__(self):
        gr.top_block.__init__(self, "Ber Curve Gen")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Ber Curve Gen")
        qtgui.util.check_set_qss()
        try:
            self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
        except:
            pass
        self.top_scroll_layout = Qt.QVBoxLayout()
        self.setLayout(self.top_scroll_layout)
        self.top_scroll = Qt.QScrollArea()
        self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
        self.top_scroll_layout.addWidget(self.top_scroll)
        self.top_scroll.setWidgetResizable(True)
        self.top_widget = Qt.QWidget()
        self.top_scroll.setWidget(self.top_widget)
        self.top_layout = Qt.QVBoxLayout(self.top_widget)
        self.top_grid_layout = Qt.QGridLayout()
        self.top_layout.addLayout(self.top_grid_layout)

        self.settings = Qt.QSettings("GNU Radio", "ber_curve_gen")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Variables
        ##################################################
        self.rate = rate = 2
        self.polys = polys = [79, 109]
        self.k = k = 7
        self.framebits = framebits = 4096
        self.esno_0 = esno_0 = numpy.arange(0, 8, .5)
        self.samp_rate_0 = samp_rate_0 = 35000000

        self.enc_tpc = enc_tpc = map((lambda b: map(
            (lambda a: fec.tpc_encoder_make(
                ([3]), ([43]), 26, 6, 9, 3)), range(0, 1))),
                                     range(0, len(esno_0)))

        self.enc_rep = enc_rep = map((lambda b: map(
            (lambda a: fec.repetition_encoder_make(framebits, 3)), range(0, 1))
                                      ), range(0, len(esno_0)))

        self.enc_ldpc = enc_ldpc = map((lambda b: map(
            (lambda a: fec.ldpc_encoder_make(
                '/usr/share/gnuradio/fec/ldpc/271.127.3.112')), range(0, 1))),
                                       range(0, len(esno_0)))

        self.enc_dummy = enc_dummy = map((lambda b: map(
            (lambda a: fec.dummy_encoder_make(framebits)), range(0, 1))),
                                         range(0, len(esno_0)))

        self.enc_cc = enc_cc = map((lambda b: map(
            (lambda a: fec.cc_encoder_make(framebits, k, rate, (
                polys), 0, fec.CC_STREAMING, False)), range(0, 1))),
                                   range(0, len(esno_0)))

        self.dec_tpc = dec_tpc = map((lambda b: map(
            (lambda a: fec.tpc_decoder_make(
                ([3]), ([43]), 26, 6, 9, 3, 6, 1)), range(0, 1))),
                                     range(0, len(esno_0)))

        self.dec_rep = dec_rep = map((lambda b: map(
            (lambda a: fec.repetition_decoder.make(framebits, 3, 0.5)),
            range(0, 1))), range(0, len(esno_0)))

        self.dec_ldpc = dec_ldpc = map((lambda b: map(
            (lambda a: fec.ldpc_decoder.make(
                '/usr/share/gnuradio/fec/ldpc/271.127.3.112', 0.5, 50)),
            range(0, 1))), range(0, len(esno_0)))

        self.dec_dummy = dec_dummy = map((lambda b: map(
            (lambda a: fec.dummy_decoder.make(framebits)), range(0, 1))),
                                         range(0, len(esno_0)))

        self.dec_cc = dec_cc = map((lambda b: map(
            (lambda a: fec.cc_decoder.make(framebits, k, rate, (
                polys), 0, -1, fec.CC_STREAMING, False)), range(0, 1))),
                                   range(0, len(esno_0)))

        ##################################################
        # Blocks
        ##################################################
        self.qtgui_bercurve_sink_0 = qtgui.ber_sink_b(
            esno_0,  #range of esnos
            5,  #number of curves
            1000,  #ensure at least
            -10,  #cutoff
            [],  #indiv. curve names
        )
        self.qtgui_bercurve_sink_0.set_update_time(0.10)
        self.qtgui_bercurve_sink_0.set_y_axis(-10, 0)
        self.qtgui_bercurve_sink_0.set_x_axis(esno_0[0], esno_0[-1])

        labels = [
            'None', 'Rep. (Rate=3)', 'CC (K=7, Rate=2)', 'LDPC', 'TPC', '', '',
            '', '', ''
        ]
        widths = [2, 2, 2, 2, 2, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "magenta", "dark red", "Dark Blue", "red", "red",
            "red", "red", "red"
        ]
        styles = [1, 2, 5, 5, 4, 0, 0, 0, 0, 0]
        markers = [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
        alphas = [1, 1, 1, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
        for i in xrange(5):
            if len(labels[i]) == 0:
                self.qtgui_bercurve_sink_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_bercurve_sink_0.set_line_label(i, labels[i])
            self.qtgui_bercurve_sink_0.set_line_width(i, widths[i])
            self.qtgui_bercurve_sink_0.set_line_color(i, colors[i])
            self.qtgui_bercurve_sink_0.set_line_style(i, styles[i])
            self.qtgui_bercurve_sink_0.set_line_marker(i, markers[i])
            self.qtgui_bercurve_sink_0.set_line_alpha(i, alphas[i])

        self._qtgui_bercurve_sink_0_win = sip.wrapinstance(
            self.qtgui_bercurve_sink_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_bercurve_sink_0_win)
        self.fec_bercurve_generator_0_1_0 = fec.bercurve_generator(
            enc_tpc,  #size
            dec_tpc,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        self.fec_bercurve_generator_0_1 = fec.bercurve_generator(
            enc_ldpc,  #size
            dec_ldpc,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        self.fec_bercurve_generator_0_0_0 = fec.bercurve_generator(
            enc_dummy,  #size
            dec_dummy,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        self.fec_bercurve_generator_0_0 = fec.bercurve_generator(
            enc_rep,  #size
            dec_rep,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        self.fec_bercurve_generator_0 = fec.bercurve_generator(
            enc_cc,  #size
            dec_cc,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        ##################################################
        # Connections
        ##################################################
        self.connect((self.fec_bercurve_generator_0, 0),
                     (self.qtgui_bercurve_sink_0, 64))
        self.connect((self.fec_bercurve_generator_0, 1),
                     (self.qtgui_bercurve_sink_0, 65))
        self.connect((self.fec_bercurve_generator_0, 2),
                     (self.qtgui_bercurve_sink_0, 66))
        self.connect((self.fec_bercurve_generator_0, 3),
                     (self.qtgui_bercurve_sink_0, 67))
        self.connect((self.fec_bercurve_generator_0, 4),
                     (self.qtgui_bercurve_sink_0, 68))
        self.connect((self.fec_bercurve_generator_0, 5),
                     (self.qtgui_bercurve_sink_0, 69))
        self.connect((self.fec_bercurve_generator_0, 6),
                     (self.qtgui_bercurve_sink_0, 70))
        self.connect((self.fec_bercurve_generator_0, 7),
                     (self.qtgui_bercurve_sink_0, 71))
        self.connect((self.fec_bercurve_generator_0, 8),
                     (self.qtgui_bercurve_sink_0, 72))
        self.connect((self.fec_bercurve_generator_0, 9),
                     (self.qtgui_bercurve_sink_0, 73))
        self.connect((self.fec_bercurve_generator_0, 10),
                     (self.qtgui_bercurve_sink_0, 74))
        self.connect((self.fec_bercurve_generator_0, 11),
                     (self.qtgui_bercurve_sink_0, 75))
        self.connect((self.fec_bercurve_generator_0, 12),
                     (self.qtgui_bercurve_sink_0, 76))
        self.connect((self.fec_bercurve_generator_0, 13),
                     (self.qtgui_bercurve_sink_0, 77))
        self.connect((self.fec_bercurve_generator_0, 14),
                     (self.qtgui_bercurve_sink_0, 78))
        self.connect((self.fec_bercurve_generator_0, 15),
                     (self.qtgui_bercurve_sink_0, 79))
        self.connect((self.fec_bercurve_generator_0, 16),
                     (self.qtgui_bercurve_sink_0, 80))
        self.connect((self.fec_bercurve_generator_0, 17),
                     (self.qtgui_bercurve_sink_0, 81))
        self.connect((self.fec_bercurve_generator_0, 18),
                     (self.qtgui_bercurve_sink_0, 82))
        self.connect((self.fec_bercurve_generator_0, 19),
                     (self.qtgui_bercurve_sink_0, 83))
        self.connect((self.fec_bercurve_generator_0, 20),
                     (self.qtgui_bercurve_sink_0, 84))
        self.connect((self.fec_bercurve_generator_0, 21),
                     (self.qtgui_bercurve_sink_0, 85))
        self.connect((self.fec_bercurve_generator_0, 22),
                     (self.qtgui_bercurve_sink_0, 86))
        self.connect((self.fec_bercurve_generator_0, 23),
                     (self.qtgui_bercurve_sink_0, 87))
        self.connect((self.fec_bercurve_generator_0, 24),
                     (self.qtgui_bercurve_sink_0, 88))
        self.connect((self.fec_bercurve_generator_0, 25),
                     (self.qtgui_bercurve_sink_0, 89))
        self.connect((self.fec_bercurve_generator_0, 26),
                     (self.qtgui_bercurve_sink_0, 90))
        self.connect((self.fec_bercurve_generator_0, 27),
                     (self.qtgui_bercurve_sink_0, 91))
        self.connect((self.fec_bercurve_generator_0, 28),
                     (self.qtgui_bercurve_sink_0, 92))
        self.connect((self.fec_bercurve_generator_0, 29),
                     (self.qtgui_bercurve_sink_0, 93))
        self.connect((self.fec_bercurve_generator_0, 30),
                     (self.qtgui_bercurve_sink_0, 94))
        self.connect((self.fec_bercurve_generator_0, 31),
                     (self.qtgui_bercurve_sink_0, 95))
        self.connect((self.fec_bercurve_generator_0_0, 0),
                     (self.qtgui_bercurve_sink_0, 32))
        self.connect((self.fec_bercurve_generator_0_0, 1),
                     (self.qtgui_bercurve_sink_0, 33))
        self.connect((self.fec_bercurve_generator_0_0, 2),
                     (self.qtgui_bercurve_sink_0, 34))
        self.connect((self.fec_bercurve_generator_0_0, 3),
                     (self.qtgui_bercurve_sink_0, 35))
        self.connect((self.fec_bercurve_generator_0_0, 4),
                     (self.qtgui_bercurve_sink_0, 36))
        self.connect((self.fec_bercurve_generator_0_0, 5),
                     (self.qtgui_bercurve_sink_0, 37))
        self.connect((self.fec_bercurve_generator_0_0, 6),
                     (self.qtgui_bercurve_sink_0, 38))
        self.connect((self.fec_bercurve_generator_0_0, 7),
                     (self.qtgui_bercurve_sink_0, 39))
        self.connect((self.fec_bercurve_generator_0_0, 8),
                     (self.qtgui_bercurve_sink_0, 40))
        self.connect((self.fec_bercurve_generator_0_0, 9),
                     (self.qtgui_bercurve_sink_0, 41))
        self.connect((self.fec_bercurve_generator_0_0, 10),
                     (self.qtgui_bercurve_sink_0, 42))
        self.connect((self.fec_bercurve_generator_0_0, 11),
                     (self.qtgui_bercurve_sink_0, 43))
        self.connect((self.fec_bercurve_generator_0_0, 12),
                     (self.qtgui_bercurve_sink_0, 44))
        self.connect((self.fec_bercurve_generator_0_0, 13),
                     (self.qtgui_bercurve_sink_0, 45))
        self.connect((self.fec_bercurve_generator_0_0, 14),
                     (self.qtgui_bercurve_sink_0, 46))
        self.connect((self.fec_bercurve_generator_0_0, 15),
                     (self.qtgui_bercurve_sink_0, 47))
        self.connect((self.fec_bercurve_generator_0_0, 16),
                     (self.qtgui_bercurve_sink_0, 48))
        self.connect((self.fec_bercurve_generator_0_0, 17),
                     (self.qtgui_bercurve_sink_0, 49))
        self.connect((self.fec_bercurve_generator_0_0, 18),
                     (self.qtgui_bercurve_sink_0, 50))
        self.connect((self.fec_bercurve_generator_0_0, 19),
                     (self.qtgui_bercurve_sink_0, 51))
        self.connect((self.fec_bercurve_generator_0_0, 20),
                     (self.qtgui_bercurve_sink_0, 52))
        self.connect((self.fec_bercurve_generator_0_0, 21),
                     (self.qtgui_bercurve_sink_0, 53))
        self.connect((self.fec_bercurve_generator_0_0, 22),
                     (self.qtgui_bercurve_sink_0, 54))
        self.connect((self.fec_bercurve_generator_0_0, 23),
                     (self.qtgui_bercurve_sink_0, 55))
        self.connect((self.fec_bercurve_generator_0_0, 24),
                     (self.qtgui_bercurve_sink_0, 56))
        self.connect((self.fec_bercurve_generator_0_0, 25),
                     (self.qtgui_bercurve_sink_0, 57))
        self.connect((self.fec_bercurve_generator_0_0, 26),
                     (self.qtgui_bercurve_sink_0, 58))
        self.connect((self.fec_bercurve_generator_0_0, 27),
                     (self.qtgui_bercurve_sink_0, 59))
        self.connect((self.fec_bercurve_generator_0_0, 28),
                     (self.qtgui_bercurve_sink_0, 60))
        self.connect((self.fec_bercurve_generator_0_0, 29),
                     (self.qtgui_bercurve_sink_0, 61))
        self.connect((self.fec_bercurve_generator_0_0, 30),
                     (self.qtgui_bercurve_sink_0, 62))
        self.connect((self.fec_bercurve_generator_0_0, 31),
                     (self.qtgui_bercurve_sink_0, 63))
        self.connect((self.fec_bercurve_generator_0_0_0, 0),
                     (self.qtgui_bercurve_sink_0, 0))
        self.connect((self.fec_bercurve_generator_0_0_0, 1),
                     (self.qtgui_bercurve_sink_0, 1))
        self.connect((self.fec_bercurve_generator_0_0_0, 2),
                     (self.qtgui_bercurve_sink_0, 2))
        self.connect((self.fec_bercurve_generator_0_0_0, 3),
                     (self.qtgui_bercurve_sink_0, 3))
        self.connect((self.fec_bercurve_generator_0_0_0, 4),
                     (self.qtgui_bercurve_sink_0, 4))
        self.connect((self.fec_bercurve_generator_0_0_0, 5),
                     (self.qtgui_bercurve_sink_0, 5))
        self.connect((self.fec_bercurve_generator_0_0_0, 6),
                     (self.qtgui_bercurve_sink_0, 6))
        self.connect((self.fec_bercurve_generator_0_0_0, 7),
                     (self.qtgui_bercurve_sink_0, 7))
        self.connect((self.fec_bercurve_generator_0_0_0, 8),
                     (self.qtgui_bercurve_sink_0, 8))
        self.connect((self.fec_bercurve_generator_0_0_0, 9),
                     (self.qtgui_bercurve_sink_0, 9))
        self.connect((self.fec_bercurve_generator_0_0_0, 10),
                     (self.qtgui_bercurve_sink_0, 10))
        self.connect((self.fec_bercurve_generator_0_0_0, 11),
                     (self.qtgui_bercurve_sink_0, 11))
        self.connect((self.fec_bercurve_generator_0_0_0, 12),
                     (self.qtgui_bercurve_sink_0, 12))
        self.connect((self.fec_bercurve_generator_0_0_0, 13),
                     (self.qtgui_bercurve_sink_0, 13))
        self.connect((self.fec_bercurve_generator_0_0_0, 14),
                     (self.qtgui_bercurve_sink_0, 14))
        self.connect((self.fec_bercurve_generator_0_0_0, 15),
                     (self.qtgui_bercurve_sink_0, 15))
        self.connect((self.fec_bercurve_generator_0_0_0, 16),
                     (self.qtgui_bercurve_sink_0, 16))
        self.connect((self.fec_bercurve_generator_0_0_0, 17),
                     (self.qtgui_bercurve_sink_0, 17))
        self.connect((self.fec_bercurve_generator_0_0_0, 18),
                     (self.qtgui_bercurve_sink_0, 18))
        self.connect((self.fec_bercurve_generator_0_0_0, 19),
                     (self.qtgui_bercurve_sink_0, 19))
        self.connect((self.fec_bercurve_generator_0_0_0, 20),
                     (self.qtgui_bercurve_sink_0, 20))
        self.connect((self.fec_bercurve_generator_0_0_0, 21),
                     (self.qtgui_bercurve_sink_0, 21))
        self.connect((self.fec_bercurve_generator_0_0_0, 22),
                     (self.qtgui_bercurve_sink_0, 22))
        self.connect((self.fec_bercurve_generator_0_0_0, 23),
                     (self.qtgui_bercurve_sink_0, 23))
        self.connect((self.fec_bercurve_generator_0_0_0, 24),
                     (self.qtgui_bercurve_sink_0, 24))
        self.connect((self.fec_bercurve_generator_0_0_0, 25),
                     (self.qtgui_bercurve_sink_0, 25))
        self.connect((self.fec_bercurve_generator_0_0_0, 26),
                     (self.qtgui_bercurve_sink_0, 26))
        self.connect((self.fec_bercurve_generator_0_0_0, 27),
                     (self.qtgui_bercurve_sink_0, 27))
        self.connect((self.fec_bercurve_generator_0_0_0, 28),
                     (self.qtgui_bercurve_sink_0, 28))
        self.connect((self.fec_bercurve_generator_0_0_0, 29),
                     (self.qtgui_bercurve_sink_0, 29))
        self.connect((self.fec_bercurve_generator_0_0_0, 30),
                     (self.qtgui_bercurve_sink_0, 30))
        self.connect((self.fec_bercurve_generator_0_0_0, 31),
                     (self.qtgui_bercurve_sink_0, 31))
        self.connect((self.fec_bercurve_generator_0_1, 0),
                     (self.qtgui_bercurve_sink_0, 96))
        self.connect((self.fec_bercurve_generator_0_1, 1),
                     (self.qtgui_bercurve_sink_0, 97))
        self.connect((self.fec_bercurve_generator_0_1, 2),
                     (self.qtgui_bercurve_sink_0, 98))
        self.connect((self.fec_bercurve_generator_0_1, 3),
                     (self.qtgui_bercurve_sink_0, 99))
        self.connect((self.fec_bercurve_generator_0_1, 4),
                     (self.qtgui_bercurve_sink_0, 100))
        self.connect((self.fec_bercurve_generator_0_1, 5),
                     (self.qtgui_bercurve_sink_0, 101))
        self.connect((self.fec_bercurve_generator_0_1, 6),
                     (self.qtgui_bercurve_sink_0, 102))
        self.connect((self.fec_bercurve_generator_0_1, 7),
                     (self.qtgui_bercurve_sink_0, 103))
        self.connect((self.fec_bercurve_generator_0_1, 8),
                     (self.qtgui_bercurve_sink_0, 104))
        self.connect((self.fec_bercurve_generator_0_1, 9),
                     (self.qtgui_bercurve_sink_0, 105))
        self.connect((self.fec_bercurve_generator_0_1, 10),
                     (self.qtgui_bercurve_sink_0, 106))
        self.connect((self.fec_bercurve_generator_0_1, 11),
                     (self.qtgui_bercurve_sink_0, 107))
        self.connect((self.fec_bercurve_generator_0_1, 12),
                     (self.qtgui_bercurve_sink_0, 108))
        self.connect((self.fec_bercurve_generator_0_1, 13),
                     (self.qtgui_bercurve_sink_0, 109))
        self.connect((self.fec_bercurve_generator_0_1, 14),
                     (self.qtgui_bercurve_sink_0, 110))
        self.connect((self.fec_bercurve_generator_0_1, 15),
                     (self.qtgui_bercurve_sink_0, 111))
        self.connect((self.fec_bercurve_generator_0_1, 16),
                     (self.qtgui_bercurve_sink_0, 112))
        self.connect((self.fec_bercurve_generator_0_1, 17),
                     (self.qtgui_bercurve_sink_0, 113))
        self.connect((self.fec_bercurve_generator_0_1, 18),
                     (self.qtgui_bercurve_sink_0, 114))
        self.connect((self.fec_bercurve_generator_0_1, 19),
                     (self.qtgui_bercurve_sink_0, 115))
        self.connect((self.fec_bercurve_generator_0_1, 20),
                     (self.qtgui_bercurve_sink_0, 116))
        self.connect((self.fec_bercurve_generator_0_1, 21),
                     (self.qtgui_bercurve_sink_0, 117))
        self.connect((self.fec_bercurve_generator_0_1, 22),
                     (self.qtgui_bercurve_sink_0, 118))
        self.connect((self.fec_bercurve_generator_0_1, 23),
                     (self.qtgui_bercurve_sink_0, 119))
        self.connect((self.fec_bercurve_generator_0_1, 24),
                     (self.qtgui_bercurve_sink_0, 120))
        self.connect((self.fec_bercurve_generator_0_1, 25),
                     (self.qtgui_bercurve_sink_0, 121))
        self.connect((self.fec_bercurve_generator_0_1, 26),
                     (self.qtgui_bercurve_sink_0, 122))
        self.connect((self.fec_bercurve_generator_0_1, 27),
                     (self.qtgui_bercurve_sink_0, 123))
        self.connect((self.fec_bercurve_generator_0_1, 28),
                     (self.qtgui_bercurve_sink_0, 124))
        self.connect((self.fec_bercurve_generator_0_1, 29),
                     (self.qtgui_bercurve_sink_0, 125))
        self.connect((self.fec_bercurve_generator_0_1, 30),
                     (self.qtgui_bercurve_sink_0, 126))
        self.connect((self.fec_bercurve_generator_0_1, 31),
                     (self.qtgui_bercurve_sink_0, 127))
        self.connect((self.fec_bercurve_generator_0_1_0, 0),
                     (self.qtgui_bercurve_sink_0, 128))
        self.connect((self.fec_bercurve_generator_0_1_0, 1),
                     (self.qtgui_bercurve_sink_0, 129))
        self.connect((self.fec_bercurve_generator_0_1_0, 2),
                     (self.qtgui_bercurve_sink_0, 130))
        self.connect((self.fec_bercurve_generator_0_1_0, 3),
                     (self.qtgui_bercurve_sink_0, 131))
        self.connect((self.fec_bercurve_generator_0_1_0, 4),
                     (self.qtgui_bercurve_sink_0, 132))
        self.connect((self.fec_bercurve_generator_0_1_0, 5),
                     (self.qtgui_bercurve_sink_0, 133))
        self.connect((self.fec_bercurve_generator_0_1_0, 6),
                     (self.qtgui_bercurve_sink_0, 134))
        self.connect((self.fec_bercurve_generator_0_1_0, 7),
                     (self.qtgui_bercurve_sink_0, 135))
        self.connect((self.fec_bercurve_generator_0_1_0, 8),
                     (self.qtgui_bercurve_sink_0, 136))
        self.connect((self.fec_bercurve_generator_0_1_0, 9),
                     (self.qtgui_bercurve_sink_0, 137))
        self.connect((self.fec_bercurve_generator_0_1_0, 10),
                     (self.qtgui_bercurve_sink_0, 138))
        self.connect((self.fec_bercurve_generator_0_1_0, 11),
                     (self.qtgui_bercurve_sink_0, 139))
        self.connect((self.fec_bercurve_generator_0_1_0, 12),
                     (self.qtgui_bercurve_sink_0, 140))
        self.connect((self.fec_bercurve_generator_0_1_0, 13),
                     (self.qtgui_bercurve_sink_0, 141))
        self.connect((self.fec_bercurve_generator_0_1_0, 14),
                     (self.qtgui_bercurve_sink_0, 142))
        self.connect((self.fec_bercurve_generator_0_1_0, 15),
                     (self.qtgui_bercurve_sink_0, 143))
        self.connect((self.fec_bercurve_generator_0_1_0, 16),
                     (self.qtgui_bercurve_sink_0, 144))
        self.connect((self.fec_bercurve_generator_0_1_0, 17),
                     (self.qtgui_bercurve_sink_0, 145))
        self.connect((self.fec_bercurve_generator_0_1_0, 18),
                     (self.qtgui_bercurve_sink_0, 146))
        self.connect((self.fec_bercurve_generator_0_1_0, 19),
                     (self.qtgui_bercurve_sink_0, 147))
        self.connect((self.fec_bercurve_generator_0_1_0, 20),
                     (self.qtgui_bercurve_sink_0, 148))
        self.connect((self.fec_bercurve_generator_0_1_0, 21),
                     (self.qtgui_bercurve_sink_0, 149))
        self.connect((self.fec_bercurve_generator_0_1_0, 22),
                     (self.qtgui_bercurve_sink_0, 150))
        self.connect((self.fec_bercurve_generator_0_1_0, 23),
                     (self.qtgui_bercurve_sink_0, 151))
        self.connect((self.fec_bercurve_generator_0_1_0, 24),
                     (self.qtgui_bercurve_sink_0, 152))
        self.connect((self.fec_bercurve_generator_0_1_0, 25),
                     (self.qtgui_bercurve_sink_0, 153))
        self.connect((self.fec_bercurve_generator_0_1_0, 26),
                     (self.qtgui_bercurve_sink_0, 154))
        self.connect((self.fec_bercurve_generator_0_1_0, 27),
                     (self.qtgui_bercurve_sink_0, 155))
        self.connect((self.fec_bercurve_generator_0_1_0, 28),
                     (self.qtgui_bercurve_sink_0, 156))
        self.connect((self.fec_bercurve_generator_0_1_0, 29),
                     (self.qtgui_bercurve_sink_0, 157))
        self.connect((self.fec_bercurve_generator_0_1_0, 30),
                     (self.qtgui_bercurve_sink_0, 158))
        self.connect((self.fec_bercurve_generator_0_1_0, 31),
                     (self.qtgui_bercurve_sink_0, 159))
Ejemplo n.º 14
0
    def __init__(self):
        gr.top_block.__init__(self, "Ber Curve Gen Ldpc")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Ber Curve Gen Ldpc")
        qtgui.util.check_set_qss()
        try:
            self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
        except:
            pass
        self.top_scroll_layout = Qt.QVBoxLayout()
        self.setLayout(self.top_scroll_layout)
        self.top_scroll = Qt.QScrollArea()
        self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
        self.top_scroll_layout.addWidget(self.top_scroll)
        self.top_scroll.setWidgetResizable(True)
        self.top_widget = Qt.QWidget()
        self.top_scroll.setWidget(self.top_widget)
        self.top_layout = Qt.QVBoxLayout(self.top_widget)
        self.top_grid_layout = Qt.QGridLayout()
        self.top_layout.addLayout(self.top_grid_layout)

        self.settings = Qt.QSettings("GNU Radio", "ber_curve_gen_ldpc")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Variables
        ##################################################
        self.framebits = framebits = 4096
        self.esno_0 = esno_0 = numpy.arange(0, 8.1, .5)
        self.H = H = fec.ldpc_H_matrix(
            gr.prefix() +
            "/share/gnuradio/fec/ldpc/n_1800_k_0902_gap_28.alist", 28)
        self.G = G = fec.ldpc_G_matrix(
            gr.prefix() + "/share/gnuradio/fec/ldpc/simple_g_matrix.alist")
        self.samp_rate_0 = samp_rate_0 = 35000000
        self.k = k = 7

        self.enc_rep = enc_rep = map((lambda b: map(
            (lambda a: fec.repetition_encoder_make(framebits, 3)), range(0, 1))
                                      ), range(0, len(esno_0)))

        self.enc_ldpc_G = enc_ldpc_G = map((lambda b: map(
            (lambda a: fec.ldpc_gen_mtrx_encoder_make(G)), range(0, 1))),
                                           range(0, len(esno_0)))

        self.enc_ldpc = enc_ldpc = map((lambda b: map(
            (lambda a: fec.ldpc_par_mtrx_encoder_make_H(H)), range(0, 1))),
                                       range(0, len(esno_0)))

        self.enc_dummy = enc_dummy = map((lambda b: map(
            (lambda a: fec.dummy_encoder_make(framebits)), range(0, 1))),
                                         range(0, len(esno_0)))

        self.dec_rep = dec_rep = map((lambda b: map(
            (lambda a: fec.repetition_decoder.make(framebits, 3, 0.5)),
            range(0, 1))), range(0, len(esno_0)))

        self.dec_ldpc_G = dec_ldpc_G = map((lambda b: map(
            (lambda a: fec.ldpc_bit_flip_decoder.make(G.get_base_sptr(), 100)),
            range(0, 1))), range(0, len(esno_0)))

        self.dec_ldpc = dec_ldpc = map((lambda b: map(
            (lambda a: fec.ldpc_bit_flip_decoder.make(H.get_base_sptr(), 100)),
            range(0, 1))), range(0, len(esno_0)))

        self.dec_dummy = dec_dummy = map((lambda b: map(
            (lambda a: fec.dummy_decoder.make(framebits)), range(0, 1))),
                                         range(0, len(esno_0)))

        ##################################################
        # Blocks
        ##################################################
        self.qtgui_bercurve_sink_0 = qtgui.ber_sink_b(
            esno_0,  #range of esnos
            4,  #number of curves
            1000,  #ensure at least
            -10,  #cutoff
            [],  #indiv. curve names
        )
        self.qtgui_bercurve_sink_0.set_update_time(0.10)
        self.qtgui_bercurve_sink_0.set_y_axis(-10, 0)
        self.qtgui_bercurve_sink_0.set_x_axis(esno_0[0], esno_0[-1])

        labels = [
            'None', 'Rep. (Rate=3)', 'LDPC (H matrix)', 'LDPC (Gen. matrix)',
            '', '', '', '', '', ''
        ]
        widths = [2, 2, 2, 2, 1, 1, 1, 1, 1, 1]
        colors = [
            "black", "blue", "green", "red", "red", "red", "red", "red", "red",
            "red"
        ]
        styles = [3, 2, 4, 1, 0, 0, 0, 0, 0, 0]
        markers = [8, 1, 2, 0, 0, 0, 0, 0, 0, 0]
        alphas = [1, 1, 1, 1, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
        for i in xrange(4):
            if len(labels[i]) == 0:
                self.qtgui_bercurve_sink_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_bercurve_sink_0.set_line_label(i, labels[i])
            self.qtgui_bercurve_sink_0.set_line_width(i, widths[i])
            self.qtgui_bercurve_sink_0.set_line_color(i, colors[i])
            self.qtgui_bercurve_sink_0.set_line_style(i, styles[i])
            self.qtgui_bercurve_sink_0.set_line_marker(i, markers[i])
            self.qtgui_bercurve_sink_0.set_line_alpha(i, alphas[i])

        self._qtgui_bercurve_sink_0_win = sip.wrapinstance(
            self.qtgui_bercurve_sink_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_bercurve_sink_0_win)
        self.fec_bercurve_generator_1 = fec.bercurve_generator(
            enc_ldpc,  #size
            dec_ldpc,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        self.fec_bercurve_generator_0_0_0 = fec.bercurve_generator(
            enc_dummy,  #size
            dec_dummy,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        self.fec_bercurve_generator_0_0 = fec.bercurve_generator(
            enc_rep,  #size
            dec_rep,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        self.fec_bercurve_generator_0 = fec.bercurve_generator(
            enc_ldpc_G,  #size
            dec_ldpc_G,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        ##################################################
        # Connections
        ##################################################
        self.connect((self.fec_bercurve_generator_0, 0),
                     (self.qtgui_bercurve_sink_0, 102))
        self.connect((self.fec_bercurve_generator_0, 1),
                     (self.qtgui_bercurve_sink_0, 103))
        self.connect((self.fec_bercurve_generator_0, 2),
                     (self.qtgui_bercurve_sink_0, 104))
        self.connect((self.fec_bercurve_generator_0, 3),
                     (self.qtgui_bercurve_sink_0, 105))
        self.connect((self.fec_bercurve_generator_0, 4),
                     (self.qtgui_bercurve_sink_0, 106))
        self.connect((self.fec_bercurve_generator_0, 5),
                     (self.qtgui_bercurve_sink_0, 107))
        self.connect((self.fec_bercurve_generator_0, 6),
                     (self.qtgui_bercurve_sink_0, 108))
        self.connect((self.fec_bercurve_generator_0, 7),
                     (self.qtgui_bercurve_sink_0, 109))
        self.connect((self.fec_bercurve_generator_0, 8),
                     (self.qtgui_bercurve_sink_0, 110))
        self.connect((self.fec_bercurve_generator_0, 9),
                     (self.qtgui_bercurve_sink_0, 111))
        self.connect((self.fec_bercurve_generator_0, 10),
                     (self.qtgui_bercurve_sink_0, 112))
        self.connect((self.fec_bercurve_generator_0, 11),
                     (self.qtgui_bercurve_sink_0, 113))
        self.connect((self.fec_bercurve_generator_0, 12),
                     (self.qtgui_bercurve_sink_0, 114))
        self.connect((self.fec_bercurve_generator_0, 13),
                     (self.qtgui_bercurve_sink_0, 115))
        self.connect((self.fec_bercurve_generator_0, 14),
                     (self.qtgui_bercurve_sink_0, 116))
        self.connect((self.fec_bercurve_generator_0, 15),
                     (self.qtgui_bercurve_sink_0, 117))
        self.connect((self.fec_bercurve_generator_0, 16),
                     (self.qtgui_bercurve_sink_0, 118))
        self.connect((self.fec_bercurve_generator_0, 17),
                     (self.qtgui_bercurve_sink_0, 119))
        self.connect((self.fec_bercurve_generator_0, 18),
                     (self.qtgui_bercurve_sink_0, 120))
        self.connect((self.fec_bercurve_generator_0, 19),
                     (self.qtgui_bercurve_sink_0, 121))
        self.connect((self.fec_bercurve_generator_0, 20),
                     (self.qtgui_bercurve_sink_0, 122))
        self.connect((self.fec_bercurve_generator_0, 21),
                     (self.qtgui_bercurve_sink_0, 123))
        self.connect((self.fec_bercurve_generator_0, 22),
                     (self.qtgui_bercurve_sink_0, 124))
        self.connect((self.fec_bercurve_generator_0, 23),
                     (self.qtgui_bercurve_sink_0, 125))
        self.connect((self.fec_bercurve_generator_0, 24),
                     (self.qtgui_bercurve_sink_0, 126))
        self.connect((self.fec_bercurve_generator_0, 25),
                     (self.qtgui_bercurve_sink_0, 127))
        self.connect((self.fec_bercurve_generator_0, 26),
                     (self.qtgui_bercurve_sink_0, 128))
        self.connect((self.fec_bercurve_generator_0, 27),
                     (self.qtgui_bercurve_sink_0, 129))
        self.connect((self.fec_bercurve_generator_0, 28),
                     (self.qtgui_bercurve_sink_0, 130))
        self.connect((self.fec_bercurve_generator_0, 29),
                     (self.qtgui_bercurve_sink_0, 131))
        self.connect((self.fec_bercurve_generator_0, 30),
                     (self.qtgui_bercurve_sink_0, 132))
        self.connect((self.fec_bercurve_generator_0, 31),
                     (self.qtgui_bercurve_sink_0, 133))
        self.connect((self.fec_bercurve_generator_0, 32),
                     (self.qtgui_bercurve_sink_0, 134))
        self.connect((self.fec_bercurve_generator_0, 33),
                     (self.qtgui_bercurve_sink_0, 135))
        self.connect((self.fec_bercurve_generator_0_0, 0),
                     (self.qtgui_bercurve_sink_0, 34))
        self.connect((self.fec_bercurve_generator_0_0, 1),
                     (self.qtgui_bercurve_sink_0, 35))
        self.connect((self.fec_bercurve_generator_0_0, 2),
                     (self.qtgui_bercurve_sink_0, 36))
        self.connect((self.fec_bercurve_generator_0_0, 3),
                     (self.qtgui_bercurve_sink_0, 37))
        self.connect((self.fec_bercurve_generator_0_0, 4),
                     (self.qtgui_bercurve_sink_0, 38))
        self.connect((self.fec_bercurve_generator_0_0, 5),
                     (self.qtgui_bercurve_sink_0, 39))
        self.connect((self.fec_bercurve_generator_0_0, 6),
                     (self.qtgui_bercurve_sink_0, 40))
        self.connect((self.fec_bercurve_generator_0_0, 7),
                     (self.qtgui_bercurve_sink_0, 41))
        self.connect((self.fec_bercurve_generator_0_0, 8),
                     (self.qtgui_bercurve_sink_0, 42))
        self.connect((self.fec_bercurve_generator_0_0, 9),
                     (self.qtgui_bercurve_sink_0, 43))
        self.connect((self.fec_bercurve_generator_0_0, 10),
                     (self.qtgui_bercurve_sink_0, 44))
        self.connect((self.fec_bercurve_generator_0_0, 11),
                     (self.qtgui_bercurve_sink_0, 45))
        self.connect((self.fec_bercurve_generator_0_0, 12),
                     (self.qtgui_bercurve_sink_0, 46))
        self.connect((self.fec_bercurve_generator_0_0, 13),
                     (self.qtgui_bercurve_sink_0, 47))
        self.connect((self.fec_bercurve_generator_0_0, 14),
                     (self.qtgui_bercurve_sink_0, 48))
        self.connect((self.fec_bercurve_generator_0_0, 15),
                     (self.qtgui_bercurve_sink_0, 49))
        self.connect((self.fec_bercurve_generator_0_0, 16),
                     (self.qtgui_bercurve_sink_0, 50))
        self.connect((self.fec_bercurve_generator_0_0, 17),
                     (self.qtgui_bercurve_sink_0, 51))
        self.connect((self.fec_bercurve_generator_0_0, 18),
                     (self.qtgui_bercurve_sink_0, 52))
        self.connect((self.fec_bercurve_generator_0_0, 19),
                     (self.qtgui_bercurve_sink_0, 53))
        self.connect((self.fec_bercurve_generator_0_0, 20),
                     (self.qtgui_bercurve_sink_0, 54))
        self.connect((self.fec_bercurve_generator_0_0, 21),
                     (self.qtgui_bercurve_sink_0, 55))
        self.connect((self.fec_bercurve_generator_0_0, 22),
                     (self.qtgui_bercurve_sink_0, 56))
        self.connect((self.fec_bercurve_generator_0_0, 23),
                     (self.qtgui_bercurve_sink_0, 57))
        self.connect((self.fec_bercurve_generator_0_0, 24),
                     (self.qtgui_bercurve_sink_0, 58))
        self.connect((self.fec_bercurve_generator_0_0, 25),
                     (self.qtgui_bercurve_sink_0, 59))
        self.connect((self.fec_bercurve_generator_0_0, 26),
                     (self.qtgui_bercurve_sink_0, 60))
        self.connect((self.fec_bercurve_generator_0_0, 27),
                     (self.qtgui_bercurve_sink_0, 61))
        self.connect((self.fec_bercurve_generator_0_0, 28),
                     (self.qtgui_bercurve_sink_0, 62))
        self.connect((self.fec_bercurve_generator_0_0, 29),
                     (self.qtgui_bercurve_sink_0, 63))
        self.connect((self.fec_bercurve_generator_0_0, 30),
                     (self.qtgui_bercurve_sink_0, 64))
        self.connect((self.fec_bercurve_generator_0_0, 31),
                     (self.qtgui_bercurve_sink_0, 65))
        self.connect((self.fec_bercurve_generator_0_0, 32),
                     (self.qtgui_bercurve_sink_0, 66))
        self.connect((self.fec_bercurve_generator_0_0, 33),
                     (self.qtgui_bercurve_sink_0, 67))
        self.connect((self.fec_bercurve_generator_0_0_0, 0),
                     (self.qtgui_bercurve_sink_0, 0))
        self.connect((self.fec_bercurve_generator_0_0_0, 1),
                     (self.qtgui_bercurve_sink_0, 1))
        self.connect((self.fec_bercurve_generator_0_0_0, 2),
                     (self.qtgui_bercurve_sink_0, 2))
        self.connect((self.fec_bercurve_generator_0_0_0, 3),
                     (self.qtgui_bercurve_sink_0, 3))
        self.connect((self.fec_bercurve_generator_0_0_0, 4),
                     (self.qtgui_bercurve_sink_0, 4))
        self.connect((self.fec_bercurve_generator_0_0_0, 5),
                     (self.qtgui_bercurve_sink_0, 5))
        self.connect((self.fec_bercurve_generator_0_0_0, 6),
                     (self.qtgui_bercurve_sink_0, 6))
        self.connect((self.fec_bercurve_generator_0_0_0, 7),
                     (self.qtgui_bercurve_sink_0, 7))
        self.connect((self.fec_bercurve_generator_0_0_0, 8),
                     (self.qtgui_bercurve_sink_0, 8))
        self.connect((self.fec_bercurve_generator_0_0_0, 9),
                     (self.qtgui_bercurve_sink_0, 9))
        self.connect((self.fec_bercurve_generator_0_0_0, 10),
                     (self.qtgui_bercurve_sink_0, 10))
        self.connect((self.fec_bercurve_generator_0_0_0, 11),
                     (self.qtgui_bercurve_sink_0, 11))
        self.connect((self.fec_bercurve_generator_0_0_0, 12),
                     (self.qtgui_bercurve_sink_0, 12))
        self.connect((self.fec_bercurve_generator_0_0_0, 13),
                     (self.qtgui_bercurve_sink_0, 13))
        self.connect((self.fec_bercurve_generator_0_0_0, 14),
                     (self.qtgui_bercurve_sink_0, 14))
        self.connect((self.fec_bercurve_generator_0_0_0, 15),
                     (self.qtgui_bercurve_sink_0, 15))
        self.connect((self.fec_bercurve_generator_0_0_0, 16),
                     (self.qtgui_bercurve_sink_0, 16))
        self.connect((self.fec_bercurve_generator_0_0_0, 17),
                     (self.qtgui_bercurve_sink_0, 17))
        self.connect((self.fec_bercurve_generator_0_0_0, 18),
                     (self.qtgui_bercurve_sink_0, 18))
        self.connect((self.fec_bercurve_generator_0_0_0, 19),
                     (self.qtgui_bercurve_sink_0, 19))
        self.connect((self.fec_bercurve_generator_0_0_0, 20),
                     (self.qtgui_bercurve_sink_0, 20))
        self.connect((self.fec_bercurve_generator_0_0_0, 21),
                     (self.qtgui_bercurve_sink_0, 21))
        self.connect((self.fec_bercurve_generator_0_0_0, 22),
                     (self.qtgui_bercurve_sink_0, 22))
        self.connect((self.fec_bercurve_generator_0_0_0, 23),
                     (self.qtgui_bercurve_sink_0, 23))
        self.connect((self.fec_bercurve_generator_0_0_0, 24),
                     (self.qtgui_bercurve_sink_0, 24))
        self.connect((self.fec_bercurve_generator_0_0_0, 25),
                     (self.qtgui_bercurve_sink_0, 25))
        self.connect((self.fec_bercurve_generator_0_0_0, 26),
                     (self.qtgui_bercurve_sink_0, 26))
        self.connect((self.fec_bercurve_generator_0_0_0, 27),
                     (self.qtgui_bercurve_sink_0, 27))
        self.connect((self.fec_bercurve_generator_0_0_0, 28),
                     (self.qtgui_bercurve_sink_0, 28))
        self.connect((self.fec_bercurve_generator_0_0_0, 29),
                     (self.qtgui_bercurve_sink_0, 29))
        self.connect((self.fec_bercurve_generator_0_0_0, 30),
                     (self.qtgui_bercurve_sink_0, 30))
        self.connect((self.fec_bercurve_generator_0_0_0, 31),
                     (self.qtgui_bercurve_sink_0, 31))
        self.connect((self.fec_bercurve_generator_0_0_0, 32),
                     (self.qtgui_bercurve_sink_0, 32))
        self.connect((self.fec_bercurve_generator_0_0_0, 33),
                     (self.qtgui_bercurve_sink_0, 33))
        self.connect((self.fec_bercurve_generator_1, 0),
                     (self.qtgui_bercurve_sink_0, 68))
        self.connect((self.fec_bercurve_generator_1, 1),
                     (self.qtgui_bercurve_sink_0, 69))
        self.connect((self.fec_bercurve_generator_1, 2),
                     (self.qtgui_bercurve_sink_0, 70))
        self.connect((self.fec_bercurve_generator_1, 3),
                     (self.qtgui_bercurve_sink_0, 71))
        self.connect((self.fec_bercurve_generator_1, 4),
                     (self.qtgui_bercurve_sink_0, 72))
        self.connect((self.fec_bercurve_generator_1, 5),
                     (self.qtgui_bercurve_sink_0, 73))
        self.connect((self.fec_bercurve_generator_1, 6),
                     (self.qtgui_bercurve_sink_0, 74))
        self.connect((self.fec_bercurve_generator_1, 7),
                     (self.qtgui_bercurve_sink_0, 75))
        self.connect((self.fec_bercurve_generator_1, 8),
                     (self.qtgui_bercurve_sink_0, 76))
        self.connect((self.fec_bercurve_generator_1, 9),
                     (self.qtgui_bercurve_sink_0, 77))
        self.connect((self.fec_bercurve_generator_1, 10),
                     (self.qtgui_bercurve_sink_0, 78))
        self.connect((self.fec_bercurve_generator_1, 11),
                     (self.qtgui_bercurve_sink_0, 79))
        self.connect((self.fec_bercurve_generator_1, 12),
                     (self.qtgui_bercurve_sink_0, 80))
        self.connect((self.fec_bercurve_generator_1, 13),
                     (self.qtgui_bercurve_sink_0, 81))
        self.connect((self.fec_bercurve_generator_1, 14),
                     (self.qtgui_bercurve_sink_0, 82))
        self.connect((self.fec_bercurve_generator_1, 15),
                     (self.qtgui_bercurve_sink_0, 83))
        self.connect((self.fec_bercurve_generator_1, 16),
                     (self.qtgui_bercurve_sink_0, 84))
        self.connect((self.fec_bercurve_generator_1, 17),
                     (self.qtgui_bercurve_sink_0, 85))
        self.connect((self.fec_bercurve_generator_1, 18),
                     (self.qtgui_bercurve_sink_0, 86))
        self.connect((self.fec_bercurve_generator_1, 19),
                     (self.qtgui_bercurve_sink_0, 87))
        self.connect((self.fec_bercurve_generator_1, 20),
                     (self.qtgui_bercurve_sink_0, 88))
        self.connect((self.fec_bercurve_generator_1, 21),
                     (self.qtgui_bercurve_sink_0, 89))
        self.connect((self.fec_bercurve_generator_1, 22),
                     (self.qtgui_bercurve_sink_0, 90))
        self.connect((self.fec_bercurve_generator_1, 23),
                     (self.qtgui_bercurve_sink_0, 91))
        self.connect((self.fec_bercurve_generator_1, 24),
                     (self.qtgui_bercurve_sink_0, 92))
        self.connect((self.fec_bercurve_generator_1, 25),
                     (self.qtgui_bercurve_sink_0, 93))
        self.connect((self.fec_bercurve_generator_1, 26),
                     (self.qtgui_bercurve_sink_0, 94))
        self.connect((self.fec_bercurve_generator_1, 27),
                     (self.qtgui_bercurve_sink_0, 95))
        self.connect((self.fec_bercurve_generator_1, 28),
                     (self.qtgui_bercurve_sink_0, 96))
        self.connect((self.fec_bercurve_generator_1, 29),
                     (self.qtgui_bercurve_sink_0, 97))
        self.connect((self.fec_bercurve_generator_1, 30),
                     (self.qtgui_bercurve_sink_0, 98))
        self.connect((self.fec_bercurve_generator_1, 31),
                     (self.qtgui_bercurve_sink_0, 99))
        self.connect((self.fec_bercurve_generator_1, 32),
                     (self.qtgui_bercurve_sink_0, 100))
        self.connect((self.fec_bercurve_generator_1, 33),
                     (self.qtgui_bercurve_sink_0, 101))
Ejemplo n.º 15
0
    def __init__(self):
        gr.top_block.__init__(self, "Novo")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Novo")
        qtgui.util.check_set_qss()
        try:
            self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
        except:
            pass
        self.top_scroll_layout = Qt.QVBoxLayout()
        self.setLayout(self.top_scroll_layout)
        self.top_scroll = Qt.QScrollArea()
        self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
        self.top_scroll_layout.addWidget(self.top_scroll)
        self.top_scroll.setWidgetResizable(True)
        self.top_widget = Qt.QWidget()
        self.top_scroll.setWidget(self.top_widget)
        self.top_layout = Qt.QVBoxLayout(self.top_widget)
        self.top_grid_layout = Qt.QGridLayout()
        self.top_layout.addLayout(self.top_grid_layout)

        self.settings = Qt.QSettings("GNU Radio", "novo")
        self.restoreGeometry(
            self.settings.value("geometry", type=QtCore.QByteArray))

        ##################################################
        # Variables
        ##################################################
        self.sps = sps = 2
        self.nfilts = nfilts = 32
        self.eb = eb = 0.22

        self.tx_rrc_taps = tx_rrc_taps = firdes.root_raised_cosine(
            nfilts, nfilts, 1.0, eb, 5 * sps * nfilts)

        self.Const_HDR = Const_HDR = digital.constellation_calcdist(
            (digital.psk_2()[0]), (digital.psk_2()[1]), 2, 1).base()

        self.Const_HDR.gen_soft_dec_lut(8)
        self.taps_per_filt = taps_per_filt = len(tx_rrc_taps) / nfilts
        self.rxmod = rxmod = digital.generic_mod(Const_HDR, False, sps, True,
                                                 eb, False, False)
        self.preamble = preamble = [
            0xac, 0xdd, 0xa4, 0xe2, 0xf2, 0x8c, 0x20, 0xfc
        ]
        self.mark_delays = mark_delays = [0, 0, 34, 56, 87, 119]
        self.snc_threshold = snc_threshold = 0.9
        self.samp_rate = samp_rate = 32000

        self.rx_rrc_taps = rx_rrc_taps = firdes.root_raised_cosine(
            nfilts, sps * nfilts, 1.0, eb, 11 * sps * nfilts)

        self.packet_len_tag_key = packet_len_tag_key = "packet_length"
        self.packet_len = packet_len = 100
        self.ntaps = ntaps = len(tx_rrc_taps)
        self.noise_voltage = noise_voltage = 1
        self.modulated_sync_word = modulated_sync_word = digital.modulate_vector_bc(
            rxmod.to_basic_block(), (preamble), ([1]))
        self.mark_delay = mark_delay = mark_delays[sps]

        self.hdr_format = hdr_format = digital.header_format_default(
            digital.packet_utils.default_access_code, 1, 1)

        self.freq_offset = freq_offset = 0
        self.filt_delay = filt_delay = 1 + (taps_per_filt - 1) / 2

        self.enc_hdr = enc_hdr = fec.dummy_encoder_make(8000)

        self.enc = enc = fec.dummy_encoder_make(8000)

        self.dec_hdr = dec_hdr = fec.dummy_decoder.make(8000)

        self.Const_PLD = Const_PLD = digital.constellation_calcdist(
            (digital.psk_2()[0]), (digital.psk_2()[1]), 2, 1).base()

        self.Const_PLD.gen_soft_dec_lut(8)

        ##################################################
        # Blocks
        ##################################################
        self._noise_voltage_range = Range(0, 8, .05, 1, 200)
        self._noise_voltage_win = RangeWidget(self._noise_voltage_range,
                                              self.set_noise_voltage,
                                              'Noise Amplitude',
                                              "counter_slider", float)
        self.top_grid_layout.addWidget(self._noise_voltage_win)
        self._freq_offset_range = Range(-30, 30, .1, 0, 200)
        self._freq_offset_win = RangeWidget(
            self._freq_offset_range, self.set_freq_offset,
            'Frequency Offset (Multiples of Sub-carrier spacing)',
            "counter_slider", float)
        self.top_grid_layout.addWidget(self._freq_offset_win)
        self._snc_threshold_range = Range(0, 1, .05, 0.9, 200)
        self._snc_threshold_win = RangeWidget(self._snc_threshold_range,
                                              self.set_snc_threshold,
                                              'S&C Threshold',
                                              "counter_slider", float)
        self.top_grid_layout.addWidget(self._snc_threshold_win)
        self.qtgui_time_sink_x_0_0 = qtgui.time_sink_f(
            packet_len * 3,  #size
            samp_rate,  #samp_rate
            'Tx Data',  #name
            1  #number of inputs
        )
        self.qtgui_time_sink_x_0_0.set_update_time(0.10)
        self.qtgui_time_sink_x_0_0.set_y_axis(-1, 256)

        self.qtgui_time_sink_x_0_0.set_y_label('Amplitude', "")

        self.qtgui_time_sink_x_0_0.enable_tags(-1, True)
        self.qtgui_time_sink_x_0_0.set_trigger_mode(qtgui.TRIG_MODE_FREE,
                                                    qtgui.TRIG_SLOPE_POS, 0.0,
                                                    0, 0, '')
        self.qtgui_time_sink_x_0_0.enable_autoscale(False)
        self.qtgui_time_sink_x_0_0.enable_grid(True)
        self.qtgui_time_sink_x_0_0.enable_axis_labels(True)
        self.qtgui_time_sink_x_0_0.enable_control_panel(False)
        self.qtgui_time_sink_x_0_0.enable_stem_plot(False)

        if not True:
            self.qtgui_time_sink_x_0_0.disable_legend()

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "blue"
        ]
        styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

        for i in xrange(1):
            if len(labels[i]) == 0:
                self.qtgui_time_sink_x_0_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_time_sink_x_0_0.set_line_label(i, labels[i])
            self.qtgui_time_sink_x_0_0.set_line_width(i, widths[i])
            self.qtgui_time_sink_x_0_0.set_line_color(i, colors[i])
            self.qtgui_time_sink_x_0_0.set_line_style(i, styles[i])
            self.qtgui_time_sink_x_0_0.set_line_marker(i, markers[i])
            self.qtgui_time_sink_x_0_0.set_line_alpha(i, alphas[i])

        self._qtgui_time_sink_x_0_0_win = sip.wrapinstance(
            self.qtgui_time_sink_x_0_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_0_win)
        self.qtgui_time_sink_x_0 = qtgui.time_sink_f(
            packet_len * 2,  #size
            samp_rate,  #samp_rate
            'Rx Data',  #name
            1  #number of inputs
        )
        self.qtgui_time_sink_x_0.set_update_time(0.10)
        self.qtgui_time_sink_x_0.set_y_axis(-1, 1)

        self.qtgui_time_sink_x_0.set_y_label('Amplitude', "")

        self.qtgui_time_sink_x_0.enable_tags(-1, True)
        self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_TAG,
                                                  qtgui.TRIG_SLOPE_POS, 0.0, 0,
                                                  0, 'packet_length_tag_key')
        self.qtgui_time_sink_x_0.enable_autoscale(True)
        self.qtgui_time_sink_x_0.enable_grid(True)
        self.qtgui_time_sink_x_0.enable_axis_labels(True)
        self.qtgui_time_sink_x_0.enable_control_panel(False)
        self.qtgui_time_sink_x_0.enable_stem_plot(False)

        if not True:
            self.qtgui_time_sink_x_0.disable_legend()

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "blue"
        ]
        styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

        for i in xrange(1):
            if len(labels[i]) == 0:
                self.qtgui_time_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_time_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_time_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_time_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_time_sink_x_0.set_line_style(i, styles[i])
            self.qtgui_time_sink_x_0.set_line_marker(i, markers[i])
            self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_time_sink_x_0_win = sip.wrapinstance(
            self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_win)
        self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c(
            1024,  #size
            firdes.WIN_BLACKMAN_hARRIS,  #wintype
            0,  #fc
            samp_rate,  #bw
            'Rx Spectrum',  #name
            1  #number of inputs
        )
        self.qtgui_freq_sink_x_0.set_update_time(0.10)
        self.qtgui_freq_sink_x_0.set_y_axis(-60, 10)
        self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dB')
        self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0,
                                                  "")
        self.qtgui_freq_sink_x_0.enable_autoscale(False)
        self.qtgui_freq_sink_x_0.enable_grid(True)
        self.qtgui_freq_sink_x_0.set_fft_average(1.0)
        self.qtgui_freq_sink_x_0.enable_axis_labels(True)
        self.qtgui_freq_sink_x_0.enable_control_panel(False)

        if not True:
            self.qtgui_freq_sink_x_0.disable_legend()

        if "complex" == "float" or "complex" == "msg_float":
            self.qtgui_freq_sink_x_0.set_plot_pos_half(not True)

        labels = ['Rx Spectrum', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "dark blue"
        ]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
        for i in xrange(1):
            if len(labels[i]) == 0:
                self.qtgui_freq_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_freq_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_freq_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_freq_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_freq_sink_x_0_win = sip.wrapinstance(
            self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_freq_sink_x_0_win)
        self.pfb_arb_resampler_xxx_0_0 = pfb.arb_resampler_ccf(
            sps, taps=(tx_rrc_taps), flt_size=nfilts)
        self.pfb_arb_resampler_xxx_0_0.declare_sample_delay(filt_delay)

        self.digital_protocol_parser_b_0 = digital.protocol_parser_b(
            hdr_format)
        self.digital_protocol_formatter_bb_0 = digital.protocol_formatter_bb(
            hdr_format, packet_len_tag_key)
        self.digital_pfb_clock_sync_xxx_0_1 = digital.pfb_clock_sync_ccf(
            sps, 6.28 / 400.0, (rx_rrc_taps), nfilts, nfilts / 2, 1.5, 1)
        self.digital_map_bb_1_0 = digital.map_bb((Const_PLD.pre_diff_code()))
        self.digital_map_bb_1 = digital.map_bb((Const_HDR.pre_diff_code()))
        self.digital_header_payload_demux_0 = digital.header_payload_demux(
            hdr_format.header_nbits() / Const_HDR.bits_per_symbol(),
            1,
            0,
            "payload symbols",
            "time_est",
            True,
            gr.sizeof_gr_complex,
            "rx_time",
            sps,
            "",
            0,
        )
        self.digital_corr_est_cc_0_0 = digital.corr_est_cc(
            (modulated_sync_word), 1, mark_delay, 0.999)
        self.digital_constellation_soft_decoder_cf_0_1 = digital.constellation_soft_decoder_cf(
            Const_PLD)
        self.digital_constellation_soft_decoder_cf_0_0 = digital.constellation_soft_decoder_cf(
            Const_HDR)
        self.digital_chunks_to_symbols_xx_0_0 = digital.chunks_to_symbols_bc(
            (Const_PLD.points()), 1)
        self.digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bc(
            (Const_HDR.points()), 1)
        self.digital_burst_shaper_xx_0_0 = digital.burst_shaper_cc(
            (firdes.window(firdes.WIN_HANN, 20, 0)), 0, filt_delay, True,
            packet_len_tag_key)
        (self.digital_burst_shaper_xx_0_0).set_block_alias("burst_shaper0")
        self.digital_binary_slicer_fb_0_0 = digital.binary_slicer_fb()
        self.digital_binary_slicer_fb_0 = digital.binary_slicer_fb()
        self.channels_channel_model_0 = channels.channel_model(
            noise_voltage=0,
            frequency_offset=freq_offset * 1.0 / packet_len,
            epsilon=1.0,
            taps=(1.0 + 1.0j, ),
            noise_seed=0,
            block_tags=True)
        self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1,
                                                 samp_rate, True)
        self.blocks_tagged_stream_mux_0 = blocks.tagged_stream_mux(
            gr.sizeof_gr_complex * 1, packet_len_tag_key, 0)
        self.blocks_tagged_stream_multiply_length_0_1 = blocks.tagged_stream_multiply_length(
            gr.sizeof_gr_complex * 1, packet_len_tag_key, sps)
        self.blocks_tag_debug_0_0_0 = blocks.tag_debug(gr.sizeof_char * 1,
                                                       'TAGGED', "")
        self.blocks_tag_debug_0_0_0.set_display(True)
        self.blocks_tag_debug_0_0 = blocks.tag_debug(gr.sizeof_gr_complex * 1,
                                                     'MUX', "")
        self.blocks_tag_debug_0_0.set_display(True)
        self.blocks_stream_to_tagged_stream_0_0 = blocks.stream_to_tagged_stream(
            gr.sizeof_char, 1, packet_len, packet_len_tag_key)
        self.blocks_repack_bits_bb_1_0 = blocks.repack_bits_bb(
            1, 8, "", False, gr.GR_MSB_FIRST)
        self.blocks_repack_bits_bb_1 = blocks.repack_bits_bb(
            1, 8, "", False, gr.GR_MSB_FIRST)
        self.blocks_repack_bits_bb_0_0 = blocks.repack_bits_bb(
            8, Const_PLD.bits_per_symbol(), packet_len_tag_key, False,
            gr.GR_MSB_FIRST)
        self.blocks_repack_bits_bb_0 = blocks.repack_bits_bb(
            8, Const_HDR.bits_per_symbol(), packet_len_tag_key, False,
            gr.GR_MSB_FIRST)
        self.blocks_file_source_0 = blocks.file_source(
            gr.sizeof_char * 1, '/home/andre/Desktop/trasmit_1_mb.txt', True)
        self.blocks_file_source_0.set_begin_tag(pmt.PMT_NIL)
        self.blocks_file_sink_0_0_0_0 = blocks.file_sink(
            gr.sizeof_char * 1, 'depois.txt', False)
        self.blocks_file_sink_0_0_0_0.set_unbuffered(False)
        self.blocks_char_to_float_1_0_0 = blocks.char_to_float(1, 1)
        self.blocks_char_to_float_1_0 = blocks.char_to_float(1, 1)

        ##################################################
        # Connections
        ##################################################
        self.msg_connect((self.digital_protocol_parser_b_0, 'info'),
                         (self.digital_header_payload_demux_0, 'header_data'))
        self.connect((self.blocks_char_to_float_1_0, 0),
                     (self.qtgui_time_sink_x_0, 0))
        self.connect((self.blocks_char_to_float_1_0_0, 0),
                     (self.qtgui_time_sink_x_0_0, 0))
        self.connect((self.blocks_file_source_0, 0),
                     (self.blocks_stream_to_tagged_stream_0_0, 0))
        self.connect((self.blocks_repack_bits_bb_0, 0),
                     (self.digital_map_bb_1, 0))
        self.connect((self.blocks_repack_bits_bb_0_0, 0),
                     (self.digital_map_bb_1_0, 0))
        self.connect((self.blocks_repack_bits_bb_1, 0),
                     (self.blocks_char_to_float_1_0, 0))
        self.connect((self.blocks_repack_bits_bb_1, 0),
                     (self.blocks_file_sink_0_0_0_0, 0))
        self.connect((self.blocks_repack_bits_bb_1_0, 0),
                     (self.digital_protocol_parser_b_0, 0))
        self.connect((self.blocks_stream_to_tagged_stream_0_0, 0),
                     (self.blocks_char_to_float_1_0_0, 0))
        self.connect((self.blocks_stream_to_tagged_stream_0_0, 0),
                     (self.blocks_repack_bits_bb_0_0, 0))
        self.connect((self.blocks_stream_to_tagged_stream_0_0, 0),
                     (self.digital_protocol_formatter_bb_0, 0))
        self.connect((self.blocks_tagged_stream_multiply_length_0_1, 0),
                     (self.channels_channel_model_0, 0))
        self.connect((self.blocks_tagged_stream_mux_0, 0),
                     (self.blocks_tag_debug_0_0, 0))
        self.connect((self.blocks_tagged_stream_mux_0, 0),
                     (self.digital_burst_shaper_xx_0_0, 0))
        self.connect((self.blocks_throttle_0, 0),
                     (self.digital_corr_est_cc_0_0, 0))
        self.connect((self.blocks_throttle_0, 0),
                     (self.qtgui_freq_sink_x_0, 0))
        self.connect((self.channels_channel_model_0, 0),
                     (self.blocks_throttle_0, 0))
        self.connect((self.digital_binary_slicer_fb_0, 0),
                     (self.blocks_repack_bits_bb_1, 0))
        self.connect((self.digital_binary_slicer_fb_0_0, 0),
                     (self.blocks_repack_bits_bb_1_0, 0))
        self.connect((self.digital_burst_shaper_xx_0_0, 0),
                     (self.pfb_arb_resampler_xxx_0_0, 0))
        self.connect((self.digital_chunks_to_symbols_xx_0, 0),
                     (self.blocks_tagged_stream_mux_0, 0))
        self.connect((self.digital_chunks_to_symbols_xx_0_0, 0),
                     (self.blocks_tagged_stream_mux_0, 1))
        self.connect((self.digital_constellation_soft_decoder_cf_0_0, 0),
                     (self.digital_binary_slicer_fb_0_0, 0))
        self.connect((self.digital_constellation_soft_decoder_cf_0_1, 0),
                     (self.digital_binary_slicer_fb_0, 0))
        self.connect((self.digital_corr_est_cc_0_0, 0),
                     (self.digital_pfb_clock_sync_xxx_0_1, 0))
        self.connect((self.digital_header_payload_demux_0, 0),
                     (self.digital_constellation_soft_decoder_cf_0_0, 0))
        self.connect((self.digital_header_payload_demux_0, 1),
                     (self.digital_constellation_soft_decoder_cf_0_1, 0))
        self.connect((self.digital_map_bb_1, 0),
                     (self.digital_chunks_to_symbols_xx_0, 0))
        self.connect((self.digital_map_bb_1_0, 0),
                     (self.digital_chunks_to_symbols_xx_0_0, 0))
        self.connect((self.digital_pfb_clock_sync_xxx_0_1, 0),
                     (self.digital_header_payload_demux_0, 0))
        self.connect((self.digital_protocol_formatter_bb_0, 0),
                     (self.blocks_repack_bits_bb_0, 0))
        self.connect((self.digital_protocol_formatter_bb_0, 0),
                     (self.blocks_tag_debug_0_0_0, 0))
        self.connect((self.pfb_arb_resampler_xxx_0_0, 0),
                     (self.blocks_tagged_stream_multiply_length_0_1, 0))
Ejemplo n.º 16
0
    def __init__(self, frame_size=30, puncpat='11'):
        gr.top_block.__init__(self, "Fecapi Async Encoders")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Fecapi Async Encoders")
        try:
            self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
        except:
            pass
        self.top_scroll_layout = Qt.QVBoxLayout()
        self.setLayout(self.top_scroll_layout)
        self.top_scroll = Qt.QScrollArea()
        self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
        self.top_scroll_layout.addWidget(self.top_scroll)
        self.top_scroll.setWidgetResizable(True)
        self.top_widget = Qt.QWidget()
        self.top_scroll.setWidget(self.top_widget)
        self.top_layout = Qt.QVBoxLayout(self.top_widget)
        self.top_grid_layout = Qt.QGridLayout()
        self.top_layout.addLayout(self.top_grid_layout)

        self.settings = Qt.QSettings("GNU Radio", "fecapi_async_encoders")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Parameters
        ##################################################
        self.frame_size = frame_size
        self.puncpat = puncpat

        ##################################################
        # Variables
        ##################################################
        self.rate = rate = 2
        self.polys = polys = [109, 79]
        self.k = k = 7
        self.samp_rate = samp_rate = 50000

        self.enc_rep_0 = enc_rep_0 = fec.repetition_encoder_make(8000, 3)

        self.enc_rep = enc_rep = fec.repetition_encoder_make(8000, 3)

        self.enc_dummy_0 = enc_dummy_0 = fec.dummy_encoder_make(8000)

        self.enc_dummy = enc_dummy = fec.dummy_encoder_make(8000)

        self.enc_cc_0 = enc_cc_0 = fec.cc_encoder_make(8000, k, rate, (polys),
                                                       0, fec.CC_STREAMING,
                                                       False)

        self.enc_cc = enc_cc = fec.cc_encoder_make(8000, k, rate, (polys), 0,
                                                   fec.CC_STREAMING, False)

        ##################################################
        # Blocks
        ##################################################
        self.qtgui_time_sink_x_0 = qtgui.time_sink_f(
            2048,  #size
            1,  #samp_rate
            '',  #name
            2  #number of inputs
        )
        self.qtgui_time_sink_x_0.set_update_time(0.01)
        self.qtgui_time_sink_x_0.set_y_axis(-1, 2)

        self.qtgui_time_sink_x_0.set_y_label('Amplitude', "")

        self.qtgui_time_sink_x_0.enable_tags(-1, True)
        self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE,
                                                  qtgui.TRIG_SLOPE_POS, 0.0, 0,
                                                  0, "")
        self.qtgui_time_sink_x_0.enable_autoscale(False)
        self.qtgui_time_sink_x_0.enable_grid(False)
        self.qtgui_time_sink_x_0.enable_axis_labels(True)
        self.qtgui_time_sink_x_0.enable_control_panel(False)

        if not True:
            self.qtgui_time_sink_x_0.disable_legend()

        labels = [
            'Async Encoder', 'Tagged Encoder', 'Rep. (Rate=3)',
            'CC (K=7, Rate=2)', 'CCSDS', '', '', '', '', ''
        ]
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "blue"
        ]
        styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
        alphas = [1.0, 0.6, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

        for i in xrange(2):
            if len(labels[i]) == 0:
                self.qtgui_time_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_time_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_time_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_time_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_time_sink_x_0.set_line_style(i, styles[i])
            self.qtgui_time_sink_x_0.set_line_marker(i, markers[i])
            self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_time_sink_x_0_win = sip.wrapinstance(
            self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget)
        self.top_layout.addWidget(self._qtgui_time_sink_x_0_win)
        self.fec_extended_tagged_encoder_0 = fec.extended_tagged_encoder(
            encoder_obj_list=enc_cc,
            puncpat=puncpat,
            lentagname='pkt_len',
            mtu=1500)
        self.fec_async_encoder_0 = fec.async_encoder(enc_cc, True, True, True,
                                                     1500)
        self.blocks_vector_source_x_0_1_0 = blocks.vector_source_b(
            (frame_size / 15) *
            [0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127], True, 1, [])
        self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char * 1, samp_rate,
                                                 True)
        self.blocks_tagged_stream_to_pdu_0 = blocks.tagged_stream_to_pdu(
            blocks.byte_t, 'pkt_len')
        self.blocks_stream_to_tagged_stream_0_0 = blocks.stream_to_tagged_stream(
            gr.sizeof_char, 1, frame_size, 'pkt_len')
        self.blocks_repack_bits_bb_0_0 = blocks.repack_bits_bb(
            8, 1, 'pkt_len', False, gr.GR_LSB_FIRST)
        self.blocks_repack_bits_bb_0 = blocks.repack_bits_bb(
            8, 1, 'pkt_len', True, gr.GR_LSB_FIRST)
        self.blocks_pdu_to_tagged_stream_0 = blocks.pdu_to_tagged_stream(
            blocks.byte_t, 'pkt_len')
        self.blocks_message_debug_0 = blocks.message_debug()
        self.blocks_char_to_float_1 = blocks.char_to_float(1, 1)
        self.blocks_char_to_float_0_1 = blocks.char_to_float(1, 1)

        ##################################################
        # Connections
        ##################################################
        self.msg_connect((self.blocks_tagged_stream_to_pdu_0, 'pdus'),
                         (self.fec_async_encoder_0, 'in'))
        self.msg_connect((self.fec_async_encoder_0, 'out'),
                         (self.blocks_message_debug_0, 'print_pdu'))
        self.msg_connect((self.fec_async_encoder_0, 'out'),
                         (self.blocks_pdu_to_tagged_stream_0, 'pdus'))
        self.connect((self.blocks_char_to_float_0_1, 0),
                     (self.qtgui_time_sink_x_0, 0))
        self.connect((self.blocks_char_to_float_1, 0),
                     (self.qtgui_time_sink_x_0, 1))
        self.connect((self.blocks_pdu_to_tagged_stream_0, 0),
                     (self.blocks_repack_bits_bb_0, 0))
        self.connect((self.blocks_repack_bits_bb_0, 0),
                     (self.blocks_char_to_float_0_1, 0))
        self.connect((self.blocks_repack_bits_bb_0_0, 0),
                     (self.fec_extended_tagged_encoder_0, 0))
        self.connect((self.blocks_stream_to_tagged_stream_0_0, 0),
                     (self.blocks_repack_bits_bb_0_0, 0))
        self.connect((self.blocks_stream_to_tagged_stream_0_0, 0),
                     (self.blocks_tagged_stream_to_pdu_0, 0))
        self.connect((self.blocks_throttle_0, 0),
                     (self.blocks_stream_to_tagged_stream_0_0, 0))
        self.connect((self.blocks_vector_source_x_0_1_0, 0),
                     (self.blocks_throttle_0, 0))
        self.connect((self.fec_extended_tagged_encoder_0, 0),
                     (self.blocks_char_to_float_1, 0))
Ejemplo n.º 17
0
    def __init__(self, frame_size=30, puncpat='11'):
        gr.top_block.__init__(self, "Fecapi Decoders")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Fecapi Decoders")
        qtgui.util.check_set_qss()
        try:
            self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
        except:
            pass
        self.top_scroll_layout = Qt.QVBoxLayout()
        self.setLayout(self.top_scroll_layout)
        self.top_scroll = Qt.QScrollArea()
        self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
        self.top_scroll_layout.addWidget(self.top_scroll)
        self.top_scroll.setWidgetResizable(True)
        self.top_widget = Qt.QWidget()
        self.top_scroll.setWidget(self.top_widget)
        self.top_layout = Qt.QVBoxLayout(self.top_widget)
        self.top_grid_layout = Qt.QGridLayout()
        self.top_layout.addLayout(self.top_grid_layout)

        self.settings = Qt.QSettings("GNU Radio", "fecapi_decoders")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Parameters
        ##################################################
        self.frame_size = frame_size
        self.puncpat = puncpat

        ##################################################
        # Variables
        ##################################################
        self.rate = rate = 2
        self.polys = polys = [109, 79]
        self.k = k = 7
        self.samp_rate = samp_rate = 50000

        self.enc_rep = enc_rep = fec.repetition_encoder_make(frame_size * 8, 3)

        self.enc_dummy = enc_dummy = fec.dummy_encoder_make(frame_size * 8)

        self.enc_ccsds = enc_ccsds = fec.ccsds_encoder_make(
            frame_size * 8, 0, fec.CC_TAILBITING)

        self.dec_rep = dec_rep = fec.repetition_decoder.make(
            frame_size * 8, 3, 0.5)

        self.dec_dummy = dec_dummy = fec.dummy_decoder.make(frame_size * 8)

        self.dec_cc = dec_cc = fec.cc_decoder.make(frame_size * 8, k, rate,
                                                   (polys), 0, -1,
                                                   fec.CC_TAILBITING, False)

        ##################################################
        # Blocks
        ##################################################
        self.qtgui_time_sink_x_0 = qtgui.time_sink_f(
            2048,  #size
            samp_rate,  #samp_rate
            '',  #name
            4  #number of inputs
        )
        self.qtgui_time_sink_x_0.set_update_time(0.01)
        self.qtgui_time_sink_x_0.set_y_axis(-0.5, 1.5)

        self.qtgui_time_sink_x_0.set_y_label('Amplitude', "")

        self.qtgui_time_sink_x_0.enable_tags(-1, True)
        self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE,
                                                  qtgui.TRIG_SLOPE_POS, 0.0, 0,
                                                  0, "")
        self.qtgui_time_sink_x_0.enable_autoscale(False)
        self.qtgui_time_sink_x_0.enable_grid(False)
        self.qtgui_time_sink_x_0.enable_axis_labels(True)
        self.qtgui_time_sink_x_0.enable_control_panel(False)
        self.qtgui_time_sink_x_0.enable_stem_plot(False)

        if not True:
            self.qtgui_time_sink_x_0.disable_legend()

        labels = [
            'Input', 'Dummy', 'Rep. (Rate=3)', 'CC (K=7, Rate=2)', 'CCSDS', '',
            '', '', '', ''
        ]
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "blue"
        ]
        styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
        alphas = [1.0, 0.6, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

        for i in xrange(4):
            if len(labels[i]) == 0:
                self.qtgui_time_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_time_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_time_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_time_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_time_sink_x_0.set_line_style(i, styles[i])
            self.qtgui_time_sink_x_0.set_line_marker(i, markers[i])
            self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_time_sink_x_0_win = sip.wrapinstance(
            self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_win)
        self.fec_extended_encoder_1_0_0 = fec.extended_encoder(
            encoder_obj_list=enc_dummy, threading='capillary', puncpat=puncpat)
        self.fec_extended_encoder_1_0 = fec.extended_encoder(
            encoder_obj_list=enc_rep, threading='capillary', puncpat=puncpat)
        self.fec_extended_encoder_1 = fec.extended_encoder(
            encoder_obj_list=enc_ccsds, threading='capillary', puncpat=puncpat)
        self.fec_extended_decoder_0_1_0 = fec.extended_decoder(
            decoder_obj_list=dec_dummy,
            threading=None,
            ann=None,
            puncpat=puncpat,
            integration_period=10000)
        self.fec_extended_decoder_0_1 = fec.extended_decoder(
            decoder_obj_list=dec_rep,
            threading=None,
            ann=None,
            puncpat=puncpat,
            integration_period=10000)
        self.fec_extended_decoder_0 = fec.extended_decoder(
            decoder_obj_list=dec_cc,
            threading=None,
            ann=None,
            puncpat=puncpat,
            integration_period=10000)
        self.digital_map_bb_0_0_0_0 = digital.map_bb(([-1, 1]))
        self.digital_map_bb_0_0_0 = digital.map_bb(([-1, 1]))
        self.digital_map_bb_0_0 = digital.map_bb(([-1, 1]))
        self.blocks_vector_source_x_0_1_0 = blocks.vector_source_b(
            (frame_size / 15) *
            [0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127], True, 1, [])
        self.blocks_unpack_k_bits_bb_0 = blocks.unpack_k_bits_bb(8)
        self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char * 1, samp_rate,
                                                 True)
        self.blocks_char_to_float_0_2_0 = blocks.char_to_float(1, 1)
        self.blocks_char_to_float_0_2 = blocks.char_to_float(1, 1)
        self.blocks_char_to_float_0_1 = blocks.char_to_float(1, 1)
        self.blocks_char_to_float_0_0_0_0 = blocks.char_to_float(1, 1)
        self.blocks_char_to_float_0_0_0 = blocks.char_to_float(1, 1)
        self.blocks_char_to_float_0_0 = blocks.char_to_float(1, 1)
        self.blocks_char_to_float_0 = blocks.char_to_float(1, 1)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.blocks_char_to_float_0, 0),
                     (self.fec_extended_decoder_0, 0))
        self.connect((self.blocks_char_to_float_0_0, 0),
                     (self.qtgui_time_sink_x_0, 3))
        self.connect((self.blocks_char_to_float_0_0_0, 0),
                     (self.qtgui_time_sink_x_0, 2))
        self.connect((self.blocks_char_to_float_0_0_0_0, 0),
                     (self.qtgui_time_sink_x_0, 1))
        self.connect((self.blocks_char_to_float_0_1, 0),
                     (self.qtgui_time_sink_x_0, 0))
        self.connect((self.blocks_char_to_float_0_2, 0),
                     (self.fec_extended_decoder_0_1, 0))
        self.connect((self.blocks_char_to_float_0_2_0, 0),
                     (self.fec_extended_decoder_0_1_0, 0))
        self.connect((self.blocks_throttle_0, 0),
                     (self.blocks_unpack_k_bits_bb_0, 0))
        self.connect((self.blocks_unpack_k_bits_bb_0, 0),
                     (self.blocks_char_to_float_0_1, 0))
        self.connect((self.blocks_unpack_k_bits_bb_0, 0),
                     (self.fec_extended_encoder_1, 0))
        self.connect((self.blocks_unpack_k_bits_bb_0, 0),
                     (self.fec_extended_encoder_1_0, 0))
        self.connect((self.blocks_unpack_k_bits_bb_0, 0),
                     (self.fec_extended_encoder_1_0_0, 0))
        self.connect((self.blocks_vector_source_x_0_1_0, 0),
                     (self.blocks_throttle_0, 0))
        self.connect((self.digital_map_bb_0_0, 0),
                     (self.blocks_char_to_float_0, 0))
        self.connect((self.digital_map_bb_0_0_0, 0),
                     (self.blocks_char_to_float_0_2, 0))
        self.connect((self.digital_map_bb_0_0_0_0, 0),
                     (self.blocks_char_to_float_0_2_0, 0))
        self.connect((self.fec_extended_decoder_0, 0),
                     (self.blocks_char_to_float_0_0, 0))
        self.connect((self.fec_extended_decoder_0_1, 0),
                     (self.blocks_char_to_float_0_0_0, 0))
        self.connect((self.fec_extended_decoder_0_1_0, 0),
                     (self.blocks_char_to_float_0_0_0_0, 0))
        self.connect((self.fec_extended_encoder_1, 0),
                     (self.digital_map_bb_0_0, 0))
        self.connect((self.fec_extended_encoder_1_0, 0),
                     (self.digital_map_bb_0_0_0, 0))
        self.connect((self.fec_extended_encoder_1_0_0, 0),
                     (self.digital_map_bb_0_0_0_0, 0))
Ejemplo n.º 18
0
    def __init__(self):
        gr.top_block.__init__(self, "Uhd Packet Tx")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Uhd Packet Tx")
        qtgui.util.check_set_qss()
        try:
            self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
        except:
            pass
        self.top_scroll_layout = Qt.QVBoxLayout()
        self.setLayout(self.top_scroll_layout)
        self.top_scroll = Qt.QScrollArea()
        self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
        self.top_scroll_layout.addWidget(self.top_scroll)
        self.top_scroll.setWidgetResizable(True)
        self.top_widget = Qt.QWidget()
        self.top_scroll.setWidget(self.top_widget)
        self.top_layout = Qt.QVBoxLayout(self.top_widget)
        self.top_grid_layout = Qt.QGridLayout()
        self.top_layout.addLayout(self.top_grid_layout)

        self.settings = Qt.QSettings("GNU Radio", "uhd_packet_tx")
        self.restoreGeometry(
            self.settings.value("geometry", type=QtCore.QByteArray))

        ##################################################
        # Variables
        ##################################################
        self.sps = sps = 2
        self.nfilts = nfilts = 32
        self.eb = eb = 0.22

        self.tx_rrc_taps = tx_rrc_taps = firdes.root_raised_cosine(
            nfilts, nfilts, 1.0, eb, 5 * sps * nfilts)

        self.rate = rate = 2
        self.polys = polys = [109, 79]
        self.k = k = 7

        self.Const_PLD = Const_PLD = digital.constellation_calcdist(
            (digital.psk_2()[0]), (digital.psk_2()[1]), 2, 1).base()

        self.Const_PLD.gen_soft_dec_lut(8)
        self.samp_rate = samp_rate = 1000e3
        self.rep = rep = 3
        self.ntaps = ntaps = len(tx_rrc_taps)
        self.hdr_format = hdr_format = digital.header_format_counter(
            digital.packet_utils.default_access_code, 3,
            Const_PLD.bits_per_symbol())
        self.gain = gain = 50
        self.freq = freq = 483e6 - 300

        self.enc_hdr = enc_hdr = fec.dummy_encoder_make(8000)

        self.enc = enc = fec.cc_encoder_make(1500 * 8, k, rate, (polys), 0,
                                             fec.CC_TERMINATED, False)

        self.amp = amp = 0.5

        self.Const_HDR = Const_HDR = digital.constellation_calcdist(
            (digital.psk_2()[0]), (digital.psk_2()[1]), 2, 1).base()

        self.Const_HDR.gen_soft_dec_lut(8)

        ##################################################
        # Blocks
        ##################################################
        self.tab0 = Qt.QTabWidget()
        self.tab0_widget_0 = Qt.QWidget()
        self.tab0_layout_0 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom,
                                           self.tab0_widget_0)
        self.tab0_grid_layout_0 = Qt.QGridLayout()
        self.tab0_layout_0.addLayout(self.tab0_grid_layout_0)
        self.tab0.addTab(self.tab0_widget_0, 'Time')
        self.tab0_widget_1 = Qt.QWidget()
        self.tab0_layout_1 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom,
                                           self.tab0_widget_1)
        self.tab0_grid_layout_1 = Qt.QGridLayout()
        self.tab0_layout_1.addLayout(self.tab0_grid_layout_1)
        self.tab0.addTab(self.tab0_widget_1, 'Freq.')
        self.tab0_widget_2 = Qt.QWidget()
        self.tab0_layout_2 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom,
                                           self.tab0_widget_2)
        self.tab0_grid_layout_2 = Qt.QGridLayout()
        self.tab0_layout_2.addLayout(self.tab0_grid_layout_2)
        self.tab0.addTab(self.tab0_widget_2, 'Const.')
        self.top_grid_layout.addWidget(self.tab0, 2, 0, 1, 2)
        for r in range(2, 3):
            self.top_grid_layout.setRowStretch(r, 1)
        for c in range(0, 2):
            self.top_grid_layout.setColumnStretch(c, 1)
        self._samp_rate_range = Range(200e3, 10e6, 200e3, 1000e3, 200)
        self._samp_rate_win = RangeWidget(self._samp_rate_range,
                                          self.set_samp_rate, 'Sample Rate',
                                          "counter_slider", float)
        self.top_grid_layout.addWidget(self._samp_rate_win, 0, 0, 1, 1)
        for r in range(0, 1):
            self.top_grid_layout.setRowStretch(r, 1)
        for c in range(0, 1):
            self.top_grid_layout.setColumnStretch(c, 1)
        self._gain_range = Range(0, 83, 1, 50, 200)
        self._gain_win = RangeWidget(self._gain_range, self.set_gain, 'Gain',
                                     "counter_slider", float)
        self.top_grid_layout.addWidget(self._gain_win, 1, 0, 1, 1)
        for r in range(1, 2):
            self.top_grid_layout.setRowStretch(r, 1)
        for c in range(0, 1):
            self.top_grid_layout.setColumnStretch(c, 1)
        self._freq_range = Range(50e6, 3e9, 500e3, 483e6 - 300, 200)
        self._freq_win = RangeWidget(self._freq_range, self.set_freq,
                                     'Frequency', "counter_slider", float)
        self.top_grid_layout.addWidget(self._freq_win, 0, 1, 1, 1)
        for r in range(0, 1):
            self.top_grid_layout.setRowStretch(r, 1)
        for c in range(1, 2):
            self.top_grid_layout.setColumnStretch(c, 1)
        self._amp_range = Range(0, 0.9, 0.005, 0.5, 200)
        self._amp_win = RangeWidget(self._amp_range, self.set_amp, 'Amplitude',
                                    "counter_slider", float)
        self.top_grid_layout.addWidget(self._amp_win, 1, 1, 1, 1)
        for r in range(1, 2):
            self.top_grid_layout.setRowStretch(r, 1)
        for c in range(1, 2):
            self.top_grid_layout.setColumnStretch(c, 1)
        self.uhd_usrp_sink_0 = uhd.usrp_sink(
            ",".join(("", "")),
            uhd.stream_args(
                cpu_format="fc32",
                channels=range(1),
            ),
            'packet_len',
        )
        self.uhd_usrp_sink_0.set_samp_rate(samp_rate)
        self.uhd_usrp_sink_0.set_center_freq(
            uhd.tune_request(freq, samp_rate / 2.0), 0)
        self.uhd_usrp_sink_0.set_gain(gain, 0)
        self.uhd_usrp_sink_0.set_antenna('TX/RX', 0)
        self.qtgui_time_sink_x_1 = qtgui.time_sink_c(
            2500,  #size
            1,  #samp_rate
            "",  #name
            1  #number of inputs
        )
        self.qtgui_time_sink_x_1.set_update_time(0.10)
        self.qtgui_time_sink_x_1.set_y_axis(-2, 2)

        self.qtgui_time_sink_x_1.set_y_label('Amplitude', "")

        self.qtgui_time_sink_x_1.enable_tags(-1, True)
        self.qtgui_time_sink_x_1.set_trigger_mode(qtgui.TRIG_MODE_FREE,
                                                  qtgui.TRIG_SLOPE_POS, 0.0, 0,
                                                  0, 'packet_len')
        self.qtgui_time_sink_x_1.enable_autoscale(False)
        self.qtgui_time_sink_x_1.enable_grid(False)
        self.qtgui_time_sink_x_1.enable_axis_labels(True)
        self.qtgui_time_sink_x_1.enable_control_panel(False)
        self.qtgui_time_sink_x_1.enable_stem_plot(False)

        if not False:
            self.qtgui_time_sink_x_1.disable_legend()

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "blue"
        ]
        styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

        for i in xrange(2):
            if len(labels[i]) == 0:
                if (i % 2 == 0):
                    self.qtgui_time_sink_x_1.set_line_label(
                        i, "Re{{Data {0}}}".format(i / 2))
                else:
                    self.qtgui_time_sink_x_1.set_line_label(
                        i, "Im{{Data {0}}}".format(i / 2))
            else:
                self.qtgui_time_sink_x_1.set_line_label(i, labels[i])
            self.qtgui_time_sink_x_1.set_line_width(i, widths[i])
            self.qtgui_time_sink_x_1.set_line_color(i, colors[i])
            self.qtgui_time_sink_x_1.set_line_style(i, styles[i])
            self.qtgui_time_sink_x_1.set_line_marker(i, markers[i])
            self.qtgui_time_sink_x_1.set_line_alpha(i, alphas[i])

        self._qtgui_time_sink_x_1_win = sip.wrapinstance(
            self.qtgui_time_sink_x_1.pyqwidget(), Qt.QWidget)
        self.tab0_grid_layout_0.addWidget(self._qtgui_time_sink_x_1_win)
        self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c(
            1024,  #size
            firdes.WIN_BLACKMAN_hARRIS,  #wintype
            0,  #fc
            1,  #bw
            "",  #name
            1  #number of inputs
        )
        self.qtgui_freq_sink_x_0.set_update_time(0.10)
        self.qtgui_freq_sink_x_0.set_y_axis(-140, 10)
        self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dB')
        self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0,
                                                  "")
        self.qtgui_freq_sink_x_0.enable_autoscale(False)
        self.qtgui_freq_sink_x_0.enable_grid(False)
        self.qtgui_freq_sink_x_0.set_fft_average(1.0)
        self.qtgui_freq_sink_x_0.enable_axis_labels(True)
        self.qtgui_freq_sink_x_0.enable_control_panel(False)

        if not False:
            self.qtgui_freq_sink_x_0.disable_legend()

        if "complex" == "float" or "complex" == "msg_float":
            self.qtgui_freq_sink_x_0.set_plot_pos_half(not True)

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "dark blue"
        ]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
        for i in xrange(1):
            if len(labels[i]) == 0:
                self.qtgui_freq_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_freq_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_freq_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_freq_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_freq_sink_x_0_win = sip.wrapinstance(
            self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget)
        self.tab0_grid_layout_1.addWidget(self._qtgui_freq_sink_x_0_win)
        self.qtgui_const_sink_x_0 = qtgui.const_sink_c(
            1024,  #size
            "",  #name
            1  #number of inputs
        )
        self.qtgui_const_sink_x_0.set_update_time(0.10)
        self.qtgui_const_sink_x_0.set_y_axis(-2, 2)
        self.qtgui_const_sink_x_0.set_x_axis(-2, 2)
        self.qtgui_const_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE,
                                                   qtgui.TRIG_SLOPE_POS, 0.0,
                                                   0, 'packet_len')
        self.qtgui_const_sink_x_0.enable_autoscale(False)
        self.qtgui_const_sink_x_0.enable_grid(False)
        self.qtgui_const_sink_x_0.enable_axis_labels(True)

        if not False:
            self.qtgui_const_sink_x_0.disable_legend()

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "red", "red", "red", "red", "red", "red", "red",
            "red"
        ]
        styles = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        markers = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
        for i in xrange(1):
            if len(labels[i]) == 0:
                self.qtgui_const_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_const_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_const_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_const_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_const_sink_x_0.set_line_style(i, styles[i])
            self.qtgui_const_sink_x_0.set_line_marker(i, markers[i])
            self.qtgui_const_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_const_sink_x_0_win = sip.wrapinstance(
            self.qtgui_const_sink_x_0.pyqwidget(), Qt.QWidget)
        self.tab0_grid_layout_2.addWidget(self._qtgui_const_sink_x_0_win)
        self.packet_tx_0 = packet_tx(
            hdr_const=Const_HDR,
            hdr_enc=enc_hdr,
            hdr_format=digital.header_format_default(
                digital.packet_utils.default_access_code, 0),
            pld_const=Const_PLD,
            pld_enc=enc,
            psf_taps=tx_rrc_taps,
            sps=sps,
        )
        self.blocks_random_pdu_0 = blocks.random_pdu(15, 150, chr(0xff), 1)
        self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((amp, ))
        self.blocks_message_strobe_0 = blocks.message_strobe(
            pmt.intern("TEST"), 2000)
        self.blocks_message_debug_0 = blocks.message_debug()

        ##################################################
        # Connections
        ##################################################
        self.msg_connect((self.blocks_message_strobe_0, 'strobe'),
                         (self.blocks_random_pdu_0, 'generate'))
        self.msg_connect((self.blocks_random_pdu_0, 'pdus'),
                         (self.packet_tx_0, 'in'))
        self.msg_connect((self.packet_tx_0, 'postcrc'),
                         (self.blocks_message_debug_0, 'print_pdu'))
        self.connect((self.blocks_multiply_const_vxx_0, 0),
                     (self.qtgui_const_sink_x_0, 0))
        self.connect((self.blocks_multiply_const_vxx_0, 0),
                     (self.qtgui_freq_sink_x_0, 0))
        self.connect((self.blocks_multiply_const_vxx_0, 0),
                     (self.qtgui_time_sink_x_1, 0))
        self.connect((self.blocks_multiply_const_vxx_0, 0),
                     (self.uhd_usrp_sink_0, 0))
        self.connect((self.packet_tx_0, 0),
                     (self.blocks_multiply_const_vxx_0, 0))
Ejemplo n.º 19
0
    def __init__(self,
                 spread_seq=(1, -1),
                 esno_db=20,
                 modulation='bpsk',
                 code_rate='1'
                 ):
        gr.top_block.__init__(self, "Variable Symbol Rate Modulation BER Test")

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = 10000000
        self.spread_seq = spread_seq
        self.esno_db = esno_db
        self.puncpat = '11'
        if code_rate == '1':
            self.enc = fec.dummy_encoder_make(2048)
            self.dec = fec.dummy_decoder.make(2048)
        else:
            self.enc = fec.cc_encoder_make(2048, 7, 2, ([79, 109]), 0, fec.CC_STREAMING, False)
            self.dec = fec.cc_decoder.make(2048, 7, 2, ([79, 109]), 0, -1, fec.CC_STREAMING, False)

        self.const = digital.constellation_bpsk().base()
        self.get_constellation_from_string(modulation)
        self.get_puncpat_from_string(code_rate)

        ##################################################
        # Blocks
        ##################################################
        self.vsrm_mod_0 = vsrm_mod(
            spread_seq=spread_seq,
        )
        self.vsrm_demod_0 = vsrm_demod(
            delay=0,
            spread_seq=spread_seq,
        )
        self.fec_extended_encoder_0 = fec.extended_encoder(encoder_obj_list=self.enc, threading='capillary', puncpat=self.puncpat)
        self.fec_extended_decoder_0 = fec.extended_decoder(decoder_obj_list=self.dec, threading='capillary', ann=None, puncpat=self.puncpat, integration_period=10000)
        self.fec_ber_bf_0 = fec.ber_bf(True, 400, -7.5)
        self.digital_map_bb_0 = digital.map_bb((-1, 1))
        self.digital_constellation_decoder_cb_0 = digital.constellation_decoder_cb(self.const)
        self.digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bc((self.const.points()), 1)
        self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, self.samp_rate,True)
        self.blocks_repack_bits_bb_0_0_0_0_0 = blocks.repack_bits_bb(int(np.log2(self.const.arity())), 1, "", False, gr.GR_LSB_FIRST)
        self.blocks_repack_bits_bb_0_0_0_0 = blocks.repack_bits_bb(1, 8, "", False, gr.GR_LSB_FIRST)
        self.blocks_repack_bits_bb_0_0_0 = blocks.repack_bits_bb(1, 8, "", False, gr.GR_LSB_FIRST)
        self.blocks_repack_bits_bb_0 = blocks.repack_bits_bb(1, int(np.log2(self.const.arity())), "", False, gr.GR_LSB_FIRST)
        self.blocks_probe_signal_x_0 = blocks.probe_signal_f()
        self.blocks_delay_0 = blocks.delay(gr.sizeof_char*1, 0)
        self.blocks_char_to_float_0_1 = blocks.char_to_float(1, 1)
        self.blocks_add_xx_0 = blocks.add_vcc(1)
        self.analog_random_source_x_0 = blocks.vector_source_b(map(int, np.random.randint(0, 2, 10000000)), True)
        self.analog_fastnoise_source_x_0 = analog.fastnoise_source_c(analog.GR_GAUSSIAN, 10.0**(-esno_db/20.0), 0, 8192*1000)


        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_fastnoise_source_x_0, 0), (self.blocks_add_xx_0, 1))
        self.connect((self.analog_random_source_x_0, 0), (self.blocks_delay_0, 0))
        self.connect((self.analog_random_source_x_0, 0), (self.fec_extended_encoder_0, 0))
        self.connect((self.blocks_add_xx_0, 0), (self.vsrm_demod_0, 0))
        self.connect((self.blocks_char_to_float_0_1, 0), (self.fec_extended_decoder_0, 0))
        self.connect((self.blocks_delay_0, 0), (self.blocks_repack_bits_bb_0_0_0, 0))
        self.connect((self.blocks_repack_bits_bb_0, 0), (self.digital_chunks_to_symbols_xx_0, 0))
        self.connect((self.blocks_repack_bits_bb_0_0_0, 0), (self.fec_ber_bf_0, 1))
        self.connect((self.blocks_repack_bits_bb_0_0_0_0, 0), (self.fec_ber_bf_0, 0))
        self.connect((self.blocks_repack_bits_bb_0_0_0_0_0, 0), (self.digital_map_bb_0, 0))
        self.connect((self.blocks_throttle_0, 0), (self.blocks_add_xx_0, 0))
        self.connect((self.digital_chunks_to_symbols_xx_0, 0), (self.vsrm_mod_0, 0))
        self.connect((self.digital_constellation_decoder_cb_0, 0), (self.blocks_repack_bits_bb_0_0_0_0_0, 0))
        self.connect((self.digital_map_bb_0, 0), (self.blocks_char_to_float_0_1, 0))
        self.connect((self.fec_ber_bf_0, 0), (self.blocks_probe_signal_x_0, 0))
        self.connect((self.fec_extended_decoder_0, 0), (self.blocks_repack_bits_bb_0_0_0_0, 0))
        self.connect((self.fec_extended_encoder_0, 0), (self.blocks_repack_bits_bb_0, 0))
        self.connect((self.vsrm_demod_0, 0), (self.digital_constellation_decoder_cb_0, 0))
        self.connect((self.vsrm_mod_0, 0), (self.blocks_throttle_0, 0))
Ejemplo n.º 20
0
    def __init__(self):
        gr.top_block.__init__(self, "Ber Curve Gen")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Ber Curve Gen")
        try:
            self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
        except:
            pass
        self.top_scroll_layout = Qt.QVBoxLayout()
        self.setLayout(self.top_scroll_layout)
        self.top_scroll = Qt.QScrollArea()
        self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
        self.top_scroll_layout.addWidget(self.top_scroll)
        self.top_scroll.setWidgetResizable(True)
        self.top_widget = Qt.QWidget()
        self.top_scroll.setWidget(self.top_widget)
        self.top_layout = Qt.QVBoxLayout(self.top_widget)
        self.top_grid_layout = Qt.QGridLayout()
        self.top_layout.addLayout(self.top_grid_layout)

        self.settings = Qt.QSettings("GNU Radio", "ber_curve_gen")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Variables
        ##################################################
        self.framebits = framebits = 4096
        self.samp_rate_0 = samp_rate_0 = 35000000
        self.rate = rate = 2
        self.polys = polys = [79, 109]
        self.k = k = 7
        self.esno_0 = esno_0 = numpy.arange(0, 8, .5)

        self.enc_ldpc = enc_ldpc = map((lambda b: map(
            (lambda a: ldpc.ldpc_encoder(
                "/home/john/gnuradio/gnuradio-ldpc/examples/408.pmat")),
            range(0, 1))), range(0, 16))

        self.enc_dummy = enc_dummy = map((lambda b: map(
            (lambda a: fec.dummy_encoder_make(framebits)), range(0, 1))),
                                         range(0, 16))

        self.dec_ldpc = dec_ldpc = map((lambda b: map(
            (lambda a: ldpc.ldpc_decoder(
                "/home/john/gnuradio/gnuradio-ldpc/examples/408.pcmat", 50, 0)
             ), range(0, 1))), range(0, 16))

        self.dec_dummy = dec_dummy = map((lambda b: map(
            (lambda a: fec.dummy_decoder.make(framebits)), range(0, 1))),
                                         range(0, 16))

        ##################################################
        # Blocks
        ##################################################
        self.qtgui_bercurve_sink_0 = qtgui.ber_sink_b(
            esno_0,  #range of esnos
            2,  #number of curves
            1000,  #ensure at least
            -10,  #cutoff
            [],  #indiv. curve names
        )
        self.qtgui_bercurve_sink_0.set_update_time(0.10)
        self.qtgui_bercurve_sink_0.set_y_axis(-10, 0)
        self.qtgui_bercurve_sink_0.set_x_axis(esno_0[0], esno_0[-1])

        labels = [
            "None", "LDPC", "CC (K=7, Rate=2)", "", "", "", "", "", "", ""
        ]
        widths = [2, 2, 2, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "magenta", "red", "red", "red", "red", "red", "red",
            "red"
        ]
        styles = [1, 2, 5, 0, 0, 0, 0, 0, 0, 0]
        markers = [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
        alphas = [1, 1, 1, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
        for i in xrange(2):
            if len(labels[i]) == 0:
                self.qtgui_bercurve_sink_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_bercurve_sink_0.set_line_label(i, labels[i])
            self.qtgui_bercurve_sink_0.set_line_width(i, widths[i])
            self.qtgui_bercurve_sink_0.set_line_color(i, colors[i])
            self.qtgui_bercurve_sink_0.set_line_style(i, styles[i])
            self.qtgui_bercurve_sink_0.set_line_marker(i, markers[i])
            self.qtgui_bercurve_sink_0.set_line_alpha(i, alphas[i])

        self._qtgui_bercurve_sink_0_win = sip.wrapinstance(
            self.qtgui_bercurve_sink_0.pyqwidget(), Qt.QWidget)
        self.top_layout.addWidget(self._qtgui_bercurve_sink_0_win)
        self.fec_bercurve_generator_0_0_0 = fec.bercurve_generator(
            enc_dummy,  #size
            dec_dummy,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        self.fec_bercurve_generator_0_0 = fec.bercurve_generator(
            enc_ldpc,  #size
            dec_ldpc,  #name
            esno_0,  #range of esnos
            samp_rate_0,  #throttle
            "capillary",  #threading mode
            '11',  #puncture pattern
            -100  # noise gen. seed
        )

        ##################################################
        # Connections
        ##################################################
        self.connect((self.fec_bercurve_generator_0_0, 0),
                     (self.qtgui_bercurve_sink_0, 32))
        self.connect((self.fec_bercurve_generator_0_0, 1),
                     (self.qtgui_bercurve_sink_0, 33))
        self.connect((self.fec_bercurve_generator_0_0, 2),
                     (self.qtgui_bercurve_sink_0, 34))
        self.connect((self.fec_bercurve_generator_0_0, 3),
                     (self.qtgui_bercurve_sink_0, 35))
        self.connect((self.fec_bercurve_generator_0_0, 4),
                     (self.qtgui_bercurve_sink_0, 36))
        self.connect((self.fec_bercurve_generator_0_0, 5),
                     (self.qtgui_bercurve_sink_0, 37))
        self.connect((self.fec_bercurve_generator_0_0, 6),
                     (self.qtgui_bercurve_sink_0, 38))
        self.connect((self.fec_bercurve_generator_0_0, 7),
                     (self.qtgui_bercurve_sink_0, 39))
        self.connect((self.fec_bercurve_generator_0_0, 8),
                     (self.qtgui_bercurve_sink_0, 40))
        self.connect((self.fec_bercurve_generator_0_0, 9),
                     (self.qtgui_bercurve_sink_0, 41))
        self.connect((self.fec_bercurve_generator_0_0, 10),
                     (self.qtgui_bercurve_sink_0, 42))
        self.connect((self.fec_bercurve_generator_0_0, 11),
                     (self.qtgui_bercurve_sink_0, 43))
        self.connect((self.fec_bercurve_generator_0_0, 12),
                     (self.qtgui_bercurve_sink_0, 44))
        self.connect((self.fec_bercurve_generator_0_0, 13),
                     (self.qtgui_bercurve_sink_0, 45))
        self.connect((self.fec_bercurve_generator_0_0, 14),
                     (self.qtgui_bercurve_sink_0, 46))
        self.connect((self.fec_bercurve_generator_0_0, 15),
                     (self.qtgui_bercurve_sink_0, 47))
        self.connect((self.fec_bercurve_generator_0_0, 16),
                     (self.qtgui_bercurve_sink_0, 48))
        self.connect((self.fec_bercurve_generator_0_0, 17),
                     (self.qtgui_bercurve_sink_0, 49))
        self.connect((self.fec_bercurve_generator_0_0, 18),
                     (self.qtgui_bercurve_sink_0, 50))
        self.connect((self.fec_bercurve_generator_0_0, 19),
                     (self.qtgui_bercurve_sink_0, 51))
        self.connect((self.fec_bercurve_generator_0_0, 20),
                     (self.qtgui_bercurve_sink_0, 52))
        self.connect((self.fec_bercurve_generator_0_0, 21),
                     (self.qtgui_bercurve_sink_0, 53))
        self.connect((self.fec_bercurve_generator_0_0, 22),
                     (self.qtgui_bercurve_sink_0, 54))
        self.connect((self.fec_bercurve_generator_0_0, 23),
                     (self.qtgui_bercurve_sink_0, 55))
        self.connect((self.fec_bercurve_generator_0_0, 24),
                     (self.qtgui_bercurve_sink_0, 56))
        self.connect((self.fec_bercurve_generator_0_0, 25),
                     (self.qtgui_bercurve_sink_0, 57))
        self.connect((self.fec_bercurve_generator_0_0, 26),
                     (self.qtgui_bercurve_sink_0, 58))
        self.connect((self.fec_bercurve_generator_0_0, 27),
                     (self.qtgui_bercurve_sink_0, 59))
        self.connect((self.fec_bercurve_generator_0_0, 28),
                     (self.qtgui_bercurve_sink_0, 60))
        self.connect((self.fec_bercurve_generator_0_0, 29),
                     (self.qtgui_bercurve_sink_0, 61))
        self.connect((self.fec_bercurve_generator_0_0, 30),
                     (self.qtgui_bercurve_sink_0, 62))
        self.connect((self.fec_bercurve_generator_0_0, 31),
                     (self.qtgui_bercurve_sink_0, 63))
        self.connect((self.fec_bercurve_generator_0_0_0, 0),
                     (self.qtgui_bercurve_sink_0, 0))
        self.connect((self.fec_bercurve_generator_0_0_0, 1),
                     (self.qtgui_bercurve_sink_0, 1))
        self.connect((self.fec_bercurve_generator_0_0_0, 2),
                     (self.qtgui_bercurve_sink_0, 2))
        self.connect((self.fec_bercurve_generator_0_0_0, 3),
                     (self.qtgui_bercurve_sink_0, 3))
        self.connect((self.fec_bercurve_generator_0_0_0, 4),
                     (self.qtgui_bercurve_sink_0, 4))
        self.connect((self.fec_bercurve_generator_0_0_0, 5),
                     (self.qtgui_bercurve_sink_0, 5))
        self.connect((self.fec_bercurve_generator_0_0_0, 6),
                     (self.qtgui_bercurve_sink_0, 6))
        self.connect((self.fec_bercurve_generator_0_0_0, 7),
                     (self.qtgui_bercurve_sink_0, 7))
        self.connect((self.fec_bercurve_generator_0_0_0, 8),
                     (self.qtgui_bercurve_sink_0, 8))
        self.connect((self.fec_bercurve_generator_0_0_0, 9),
                     (self.qtgui_bercurve_sink_0, 9))
        self.connect((self.fec_bercurve_generator_0_0_0, 10),
                     (self.qtgui_bercurve_sink_0, 10))
        self.connect((self.fec_bercurve_generator_0_0_0, 11),
                     (self.qtgui_bercurve_sink_0, 11))
        self.connect((self.fec_bercurve_generator_0_0_0, 12),
                     (self.qtgui_bercurve_sink_0, 12))
        self.connect((self.fec_bercurve_generator_0_0_0, 13),
                     (self.qtgui_bercurve_sink_0, 13))
        self.connect((self.fec_bercurve_generator_0_0_0, 14),
                     (self.qtgui_bercurve_sink_0, 14))
        self.connect((self.fec_bercurve_generator_0_0_0, 15),
                     (self.qtgui_bercurve_sink_0, 15))
        self.connect((self.fec_bercurve_generator_0_0_0, 16),
                     (self.qtgui_bercurve_sink_0, 16))
        self.connect((self.fec_bercurve_generator_0_0_0, 17),
                     (self.qtgui_bercurve_sink_0, 17))
        self.connect((self.fec_bercurve_generator_0_0_0, 18),
                     (self.qtgui_bercurve_sink_0, 18))
        self.connect((self.fec_bercurve_generator_0_0_0, 19),
                     (self.qtgui_bercurve_sink_0, 19))
        self.connect((self.fec_bercurve_generator_0_0_0, 20),
                     (self.qtgui_bercurve_sink_0, 20))
        self.connect((self.fec_bercurve_generator_0_0_0, 21),
                     (self.qtgui_bercurve_sink_0, 21))
        self.connect((self.fec_bercurve_generator_0_0_0, 22),
                     (self.qtgui_bercurve_sink_0, 22))
        self.connect((self.fec_bercurve_generator_0_0_0, 23),
                     (self.qtgui_bercurve_sink_0, 23))
        self.connect((self.fec_bercurve_generator_0_0_0, 24),
                     (self.qtgui_bercurve_sink_0, 24))
        self.connect((self.fec_bercurve_generator_0_0_0, 25),
                     (self.qtgui_bercurve_sink_0, 25))
        self.connect((self.fec_bercurve_generator_0_0_0, 26),
                     (self.qtgui_bercurve_sink_0, 26))
        self.connect((self.fec_bercurve_generator_0_0_0, 27),
                     (self.qtgui_bercurve_sink_0, 27))
        self.connect((self.fec_bercurve_generator_0_0_0, 28),
                     (self.qtgui_bercurve_sink_0, 28))
        self.connect((self.fec_bercurve_generator_0_0_0, 29),
                     (self.qtgui_bercurve_sink_0, 29))
        self.connect((self.fec_bercurve_generator_0_0_0, 30),
                     (self.qtgui_bercurve_sink_0, 30))
        self.connect((self.fec_bercurve_generator_0_0_0, 31),
                     (self.qtgui_bercurve_sink_0, 31))
Ejemplo n.º 21
0
    def __init__(self, MTU=10000, bw=100e3, frequency_rx=2.4505e9 + 1e6, frequency_tx=2.4505e9, ip_pub='tcp://192.168.5.134:7001', ip_sub='tcp://192.168.5.109:7000', offset=-250e3):
        gr.top_block.__init__(self, "Lora Side1")

        ##################################################
        # Parameters
        ##################################################
        self.MTU = MTU
        self.bw = bw
        self.frequency_rx = frequency_rx
        self.frequency_tx = frequency_tx
        self.ip_pub = ip_pub
        self.ip_sub = ip_sub
        self.offset = offset

        ##################################################
        # Variables
        ##################################################
        self.rep = rep = 3
        self.spreading_factor = spreading_factor = 8
        self.samp_rate = samp_rate = 500e3
        self.ldr = ldr = True
        self.header = header = False


        self.enc_rep = enc_rep = fec.repetition_encoder_make(480, rep)



        self.enc_dummy = enc_dummy = fec.dummy_encoder_make(MTU*8)



        self.enc_ccsds = enc_ccsds = fec.ccsds_encoder_make(MTU*8, 0, fec.CC_TERMINATED)



        self.dec_rep = dec_rep = fec.repetition_decoder.make(480, rep, 0.5)



        self.dec_dummy = dec_dummy = fec.dummy_decoder.make(MTU*8)



        self.dec_cc = dec_cc = fec.cc_decoder.make(8000, 7, 2, ([109,79]), 0, -1, fec.CC_TERMINATED, False)

        self.code_rate = code_rate = 4

        ##################################################
        # Blocks
        ##################################################
        self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, ip_pub, 100, False, -1)
        self.zeromq_pull_source_0 = zeromq.pull_source(gr.sizeof_gr_complex, 1, ip_sub, 100, False, -1)
        self.pfb_arb_resampler_xxx_0_0 = pfb.arb_resampler_ccf(
        	  bw/samp_rate,
                  taps=None,
        	  flt_size=32)
        self.pfb_arb_resampler_xxx_0_0.declare_sample_delay(0)

        self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf(
        	  samp_rate/bw,
                  taps=None,
        	  flt_size=32)
        self.pfb_arb_resampler_xxx_0.declare_sample_delay(0)

        self.lora_mod_0 = lora.mod(spreading_factor, 0x12)
        self.lora_encode_0 = lora.encode(spreading_factor, code_rate, ldr, header)
        self.lora_demod_0 = lora.demod(spreading_factor, ldr, 25.0, 2)
        self.lora_decode_0 = lora.decode(spreading_factor, code_rate, ldr, header)
        self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu('tap0', MTU, False)
        self.blocks_message_debug_0 = blocks.message_debug()

        ##################################################
        # Connections
        ##################################################
        self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.lora_encode_0, 'in'))
        self.msg_connect((self.lora_decode_0, 'out'), (self.blocks_message_debug_0, 'print_pdu'))
        self.msg_connect((self.lora_decode_0, 'out'), (self.blocks_tuntap_pdu_0, 'pdus'))
        self.msg_connect((self.lora_demod_0, 'out'), (self.lora_decode_0, 'in'))
        self.msg_connect((self.lora_encode_0, 'out'), (self.lora_mod_0, 'in'))
        self.connect((self.lora_mod_0, 0), (self.pfb_arb_resampler_xxx_0, 0))
        self.connect((self.pfb_arb_resampler_xxx_0, 0), (self.zeromq_push_sink_0, 0))
        self.connect((self.pfb_arb_resampler_xxx_0_0, 0), (self.lora_demod_0, 0))
        self.connect((self.zeromq_pull_source_0, 0), (self.pfb_arb_resampler_xxx_0_0, 0))