Example #1
0
    def test_001_t (self):
        if os.path.exists("debug/transmission_frame.dat") and os.path.exists("debug/transmission_frame_trigger.dat"):
            self.dab_params = dab.parameters.dab_parameters(1, 208.064e6, True)
            self.src01 = blocks.file_source_make(gr.sizeof_float * 2 * self.dab_params.num_carriers,
                                                 "debug/transmission_frame.dat")
            self.src02 = blocks.file_source_make(gr.sizeof_char, "debug/transmission_frame_trigger.dat")
            self.dabplus = dab.dabplus_audio_decoder_ff(self.dab_params, 112, 54, 84, 2, True, False, True)
            self.wav_sink = blocks.wavfile_sink_make("debug/music.wav", 2, 32000)
            self.file_sink_left = blocks.file_sink_make(gr.sizeof_float, "debug/PCM_left.dat")
            self.file_sink_right = blocks.file_sink_make(gr.sizeof_float, "debug/PCM_right.dat")
            self.tb.connect(self.src01, (self.dabplus, 0), self.file_sink_left)
            self.tb.connect(self.src02, (self.dabplus, 1), self.file_sink_right)
            self.tb.connect((self.dabplus, 0), (self.wav_sink, 0))
            self.tb.connect((self.dabplus, 1), (self.wav_sink, 1))
            self.audio = audio.sink_make(32000)

            self.tb.connect((self.dabplus, 0), (self.audio, 0))
            self.tb.connect((self.dabplus, 1), (self.audio, 1))


            self.tb.run()
        else:
            log = gr.logger("log")
            log.debug("debug file not found - skipped test")
            log.set_level("WARN")
        pass
    def test_001_t (self):
        if os.path.exists("debug/transmission_frame.dat") and os.path.exists("debug/transmission_frame_trigger.dat"):
            self.dab_params = grdab.parameters.dab_parameters(1, 208.064e6, True)
            self.src01 = blocks.file_source_make(gr.sizeof_float * 2 * self.dab_params.num_carriers,
                                                 "debug/transmission_frame.dat")
            self.src02 = blocks.file_source_make(gr.sizeof_char, "debug/transmission_frame_trigger.dat")
            self.dabplus = grdab.dabplus_audio_decoder_ff(self.dab_params, 112, 54, 84, 2, True, False, True)
            self.wav_sink = blocks.wavfile_sink_make("debug/music.wav", 2, 32000)
            self.file_sink_left = blocks.file_sink_make(gr.sizeof_float, "debug/PCM_left.dat")
            self.file_sink_right = blocks.file_sink_make(gr.sizeof_float, "debug/PCM_right.dat")
            self.tb.connect(self.src01, (self.dabplus, 0), self.file_sink_left)
            self.tb.connect(self.src02, (self.dabplus, 1), self.file_sink_right)
            self.tb.connect((self.dabplus, 0), (self.wav_sink, 0))
            self.tb.connect((self.dabplus, 1), (self.wav_sink, 1))
            self.audio = audio.sink_make(32000)

            self.tb.connect((self.dabplus, 0), (self.audio, 0))
            self.tb.connect((self.dabplus, 1), (self.audio, 1))


            self.tb.run()
        else:
            log = gr.logger("log")
            log.debug("debug file not found - skipped test")
            log.set_level("WARN")
        pass
Example #3
0
 def test_001_t(self):
     log = gr.logger("log")
     if os.path.exists("debug/transmission_frame.dat") and os.path.exists(
             "debug/transmission_frame_trigger.dat"):
         self.dab_params = dab.parameters.dab_parameters(1, 208.064e6, True)
         self.src01 = blocks.file_source_make(
             gr.sizeof_float * 2 * self.dab_params.num_carriers,
             "debug/transmission_frame.dat")
         self.src02 = blocks.file_source_make(
             gr.sizeof_char, "debug/transmission_frame_trigger.dat")
         self.msc = dab.msc_decode(self.dab_params, 54, 84, 2, 1, 1)
         self.firecode = dab.firecode_check_bb_make(14)
         self.file_sink_subch_decoded = blocks.file_sink_make(
             gr.sizeof_char, "debug/subch_decoded.dat")
         self.file_sink_firecode_checked = blocks.file_sink_make(
             gr.sizeof_char, "debug/checked_firecode.dat")
         self.tb.connect(self.src01, (self.msc, 0), self.firecode,
                         self.file_sink_firecode_checked)
         self.tb.connect(self.src02, (self.msc, 1))
         self.tb.connect(self.msc, self.file_sink_subch_decoded)
         self.tb.run()
     else:
         log.debug("debug file not found - skipped test")
         log.set_level("WARN")
     pass
Example #4
0
    def test_001_t(self):
        if os.path.exists("debug/PCM_left.dat") and os.path.exists(
                "debug/PCM_right.dat"):
            self.src_left = blocks.file_source_make(gr.sizeof_float,
                                                    "debug/PCM_left.dat")
            self.src_right = blocks.file_source_make(gr.sizeof_float,
                                                     "debug/PCM_right.dat")
            self.f2s_1 = blocks.float_to_short_make(1, 32767)
            self.f2s_2 = blocks.float_to_short_make(1, 32767)
            self.mp4_encode = dab.mp4_encode_sb_make(14, 2, 32000, 1)
            self.mp4_decode = dab.mp4_decode_bs_make(14)
            self.s2f_1 = blocks.short_to_float_make(1, 32767)
            self.s2f_2 = blocks.short_to_float_make(1, 32767)
            self.audio = audio.sink_make(32000)

            self.tb.connect(self.src_left, self.f2s_1, (self.mp4_encode, 0))
            self.tb.connect(self.src_right, self.f2s_2, (self.mp4_encode, 1))
            self.tb.connect(self.mp4_encode, self.mp4_decode, self.s2f_1,
                            (self.audio, 0))
            self.tb.connect((self.mp4_decode, 1), self.s2f_2, (self.audio, 1))
            self.tb.run()
            # check data
        else:
            log = gr.logger("log")
            log.debug("debug file not found - skipped test")
            log.set_level("WARN")
    def test_001_t (self):
        log = gr.logger("log")
        if os.path.exists("debug/rs_encoded.dat") and os.path.exists("debug/rs_encoded.dat"):
            self.dp = dab.parameters.dab_parameters(1, 208.064e6, True)

            # sources
            self.fib_src = dab.fib_source_b_make(1, 1, 'Galaxy_News', 'Wasteland_Radio', 'Country_Mix01', 0x09, [2], [14])
            self.fib_pack = blocks.unpacked_to_packed_bb_make(1, gr.GR_MSB_FIRST)
            self.subch_src01 = blocks.file_source_make(gr.sizeof_char, "debug/rs_encoded.dat", True)
            self.subch_src02 = blocks.file_source_make(gr.sizeof_char, "debug/rs_encoded_2.dat", True)

            # encoder
            self.fib_enc = dab.fic_encode(self.dp)
            self.msc_encoder = dab.msc_encode(self.dp, 14, 2)
            self.msc_encoder2 = dab.msc_encode(self.dp, 14, 2)

            # multiplexer
            self.mux = dab.dab_transmission_frame_mux_bb_make(1, 2, [84, 84])

            # mapper
            self.unpack = blocks.packed_to_unpacked_bb_make(1, gr.GR_MSB_FIRST)
            self.map = dab.mapper_bc_make(self.dp.num_carriers)

            # demapper
            self.s2v = blocks.stream_to_vector_make(gr.sizeof_gr_complex, self.dp.num_carriers)
            self.soft_interleaver = dab.complex_to_interleaved_float_vcf_make(self.dp.num_carriers)

            # decode
            self.fic_decoder = dab.fic_decode(self.dp)
            self.msc_dec = dab.dabplus_audio_decoder_ff(self.dp, 112, 0, 84, 2, True)

            # audio sink
            self.audio = audio.sink_make(32000)

            # control stream
            self.trigger_src = blocks.vector_source_b([1] + [0] * 74, True)

            # connect everything
            self.tb.connect(self.fib_src, self.fib_enc, (self.mux, 0))
            self.tb.connect(self.subch_src01, self.msc_encoder, (self.mux, 1))
            self.tb.connect(self.subch_src02, self.msc_encoder2, (self.mux, 2))
            self.tb.connect((self.mux, 0), self.unpack, self.map, self.s2v, self.soft_interleaver, (self.msc_dec, 0))
            self.tb.connect(self.soft_interleaver, (self.fic_decoder, 0))
            self.tb.connect(self.trigger_src, (self.fic_decoder, 1))
            self.tb.connect(self.trigger_src, (self.msc_dec, 1))
            self.tb.connect((self.msc_dec, 0), (self.audio, 0))
            self.tb.connect((self.msc_dec, 1), (self.audio, 1))

            self.tb.run ()
            pass
        else:
            log.debug("debug file not found - skipped test")
            log.set_level("WARN")
            pass
Example #6
0
 def test_001_t (self):
     log = gr.logger("log")
     if os.path.exists("debug/transmission_frame.dat") and os.path.exists("debug/transmission_frame_trigger.dat"):
         self.dab_params = grdab.parameters.dab_parameters(1 , 208.064e6, True)
         self.src01 = blocks.file_source_make(gr.sizeof_float * 2*self.dab_params.num_carriers, "debug/transmission_frame.dat")
         self.src02 = blocks.file_source_make(gr.sizeof_char, "debug/transmission_frame_trigger.dat")
         self.msc = grdab.msc_decode(self.dab_params, 54, 84, 2, 1, 1)
         self.firecode = grdab.firecode_check_bb_make(14)
         self.file_sink_subch_decoded = blocks.file_sink_make(gr.sizeof_char, "debug/subch_decoded.dat")
         self.file_sink_firecode_checked = blocks.file_sink_make(gr.sizeof_char, "debug/checked_firecode.dat")
         self.tb.connect(self.src01, (self.msc, 0), self.firecode, self.file_sink_firecode_checked)
         self.tb.connect(self.src02, (self.msc, 1))
         self.tb.connect(self.msc, self.file_sink_subch_decoded)
         self.tb.run ()
     else:
         log.debug("debug file not found - skipped test")
         log.set_level("WARN")
     pass
Example #7
0
 def test_001_t(self):
     if os.path.exists("debug/PCM_piano_left.dat") and os.path.exists(
             "debug/PCM_piano_right.dat"):
         self.src_left = blocks.file_source_make(
             gr.sizeof_short, "debug/PCM_piano_left.dat")
         self.src_right = blocks.file_source_make(
             gr.sizeof_short, "debug/PCM_piano_right.dat")
         self.mp2 = dab.mp2_encode_sb_make(14, 2, 48000)
         self.file_sink = blocks.file_sink_make(gr.sizeof_char,
                                                "debug/mp2_encoded.mp2")
         self.tb.connect(self.src_left, (self.mp2, 0), self.file_sink)
         self.tb.connect(self.src_right, (self.mp2, 1))
         self.tb.run()
         # check data
     else:
         log = gr.logger("log")
         log.debug("debug file not found - skipped test")
         log.set_level("WARN")
     pass
Example #8
0
 def test_001_t (self):
     if os.path.exists("debug/mp2_encoded.dat"):
         self.src_mp2 = blocks.file_source_make(gr.sizeof_char, "debug/mp2_encoded.dat")
         self.unpack = blocks.packed_to_unpacked_bb_make(1, gr.GR_MSB_FIRST)
         self.mp2_decode = grdab.mp2_decode_bs_make(14)
         self.sink_left = blocks.file_sink_make(gr.sizeof_short, "debug/mp2_decoded_left.dat")
         self.sink_right = blocks.file_sink_make(gr.sizeof_short, "debug/mp2_decoded_right.dat")
         self.tb.connect(self.src_mp2, self.unpack, (self.mp2_decode, 0), self.sink_left)
         self.tb.connect((self.mp2_decode, 1), self.sink_right)
         self.tb.run()
     else:
         log = gr.logger("log")
         log.debug("debug file not found - skipped test")
         log.set_level("WARN")
     pass
Example #9
0
    def test_001_t (self):
        if os.path.exists("debug/reed_solomon_repaired.dat"):
            self.src = blocks.file_source_make(gr.sizeof_char, "debug/reed_solomon_repaired.dat")
            self.mp4 = grdab.mp4_decode_bs_make(14)
            self.s2f_left = blocks.short_to_float_make(1, 32767)
            self.s2f_right = blocks.short_to_float_make(1, 32767)
            self.audio = audio.sink_make(32000)

            self.tb.connect(self.src, (self.mp4, 0), self.s2f_left, (self.audio, 0))
            self.tb.connect((self.mp4, 1), self.s2f_right, (self.audio, 1))
            self.tb.run()
        else:
            log = gr.logger("log")
            log.debug("debug file not found - skipped test")
            log.set_level("WARN")
        pass
Example #10
0
 def test_001_t(self):
     if os.path.exists("debug/mp2_encoded.dat"):
         self.src_mp2 = blocks.file_source_make(gr.sizeof_char,
                                                "debug/mp2_encoded.dat")
         self.unpack = blocks.packed_to_unpacked_bb_make(1, gr.GR_MSB_FIRST)
         self.mp2_decode = dab.mp2_decode_bs_make(14)
         self.sink_left = blocks.file_sink_make(
             gr.sizeof_short, "debug/mp2_decoded_left.dat")
         self.sink_right = blocks.file_sink_make(
             gr.sizeof_short, "debug/mp2_decoded_right.dat")
         self.tb.connect(self.src_mp2, self.unpack, (self.mp2_decode, 0),
                         self.sink_left)
         self.tb.connect((self.mp2_decode, 1), self.sink_right)
         self.tb.run()
     else:
         log = gr.logger("log")
         log.debug("debug file not found - skipped test")
         log.set_level("WARN")
     pass
Example #11
0
    def __init__(self,
                 dab_mode,
                 frequency,
                 bit_rate,
                 address,
                 size,
                 protection,
                 audio_bit_rate,
                 dabplus,
                 use_usrp,
                 src_path,
                 sink_path="None"):
        gr.top_block.__init__(self)

        self.dab_mode = dab_mode
        self.verbose = False
        self.sample_rate = 2e6
        self.dabplus = dabplus
        self.use_usrp = use_usrp
        self.src_path = src_path
        self.sink_path = sink_path
        gr.log.set_level("warn")

        ########################
        # source
        ########################
        if self.use_usrp:
            self.src = uhd.usrp_source("", uhd.io_type.COMPLEX_FLOAT32, 1)
            self.src.set_samp_rate(self.sample_rate)
            self.src.set_antenna("TX/RX")
        else:
            print "using file source"
            self.src = blocks.file_source_make(gr.sizeof_gr_complex,
                                               self.src_path, False)

        # set paramters to default mode
        self.softbits = True
        self.filter_input = True
        self.autocorrect_sample_rate = False
        self.resample_fixed = 1
        self.correct_ffe = True
        self.equalize_magnitude = True
        self.frequency = frequency
        self.dab_params = dab.parameters.dab_parameters(
            self.dab_mode, self.sample_rate, self.verbose)
        self.rx_params = dab.parameters.receiver_parameters(
            self.dab_mode, self.softbits, self.filter_input,
            self.autocorrect_sample_rate, self.resample_fixed, self.verbose,
            self.correct_ffe, self.equalize_magnitude)
        ########################
        # FFT and waterfall plot
        ########################
        self.fft_plot = qtgui.freq_sink_c_make(1024,
                                               fft.window.WIN_BLACKMAN_HARRIS,
                                               self.frequency, 2e6, "FFT")
        self.waterfall_plot = qtgui.waterfall_sink_c_make(
            1024, fft.window.WIN_BLACKMAN_HARRIS, self.frequency, 2e6,
            "Waterfall")
        #self.time_plot = qtgui.time_sink_c_make(1024, 2e6, "Time")

        ########################
        # OFDM demod
        ########################
        self.demod = dab.ofdm_demod(self.dab_params, self.rx_params,
                                    self.verbose)

        ########################
        # SNR measurement
        ########################
        self.v2s_snr = blocks.vector_to_stream_make(
            gr.sizeof_gr_complex, self.dab_params.num_carriers)
        self.snr_measurement = digital.mpsk_snr_est_cc_make(
            digital.SNR_EST_SIMPLE, 10000)
        self.constellation_plot = qtgui.const_sink_c_make(1024, "", 1)

        ########################
        # FIC decoder
        ########################
        self.fic_dec = dab.fic_decode(self.dab_params)

        ########################
        # MSC decoder
        ########################
        if self.dabplus:
            self.dabplus = dab.dabplus_audio_decoder_ff(
                self.dab_params, bit_rate, address, size, protection, True)
        else:
            self.msc_dec = dab.msc_decode(self.dab_params, address, size,
                                          protection)
            self.unpack = blocks.packed_to_unpacked_bb_make(1, gr.GR_MSB_FIRST)
            self.mp2_dec = dab.mp2_decode_bs_make(bit_rate / 8)
            self.s2f_left = blocks.short_to_float_make(1, 32767)
            self.s2f_right = blocks.short_to_float_make(1, 32767)
            self.gain_left = blocks.multiply_const_ff(1, 1)
            self.gain_right = blocks.multiply_const_ff(1, 1)

        ########################
        # audio sink
        ########################
        self.valve_left = dab.valve_ff_make(True)
        self.valve_right = dab.valve_ff_make(True)
        self.audio = audio.sink_make(audio_bit_rate)
        self.wav_sink = blocks.wavfile_sink_make("dab_audio.wav", 2,
                                                 audio_bit_rate)

        ########################
        # Connections
        ########################
        self.connect(self.src, self.fft_plot)
        self.connect(self.src, self.waterfall_plot)
        self.connect(self.src, self.demod, (self.fic_dec, 0))
        self.connect((self.demod, 1), (self.fic_dec, 1))
        if self.dabplus:
            self.connect((self.demod, 0), (self.dabplus, 0))
            self.connect((self.demod, 1), (self.dabplus, 1))
        else:
            self.connect((self.demod, 0), (self.msc_dec, 0), self.unpack,
                         self.mp2_dec)
            self.connect((self.demod, 1), (self.msc_dec, 1))
            self.connect((self.mp2_dec, 0), self.s2f_left, self.gain_left)
            self.connect((self.mp2_dec, 1), self.s2f_right, self.gain_right)
        self.connect((self.demod, 0), self.v2s_snr, self.snr_measurement,
                     self.constellation_plot)
        # connect audio to sound card and file sink
        if self.dabplus:
            self.connect((self.dabplus, 0), (self.audio, 0))
            self.connect((self.dabplus, 1), (self.audio, 1))
            self.connect((self.dabplus, 0), self.valve_left,
                         (self.wav_sink, 0))
            self.connect((self.dabplus, 1), self.valve_right,
                         (self.wav_sink, 1))
        else:
            self.connect(self.gain_left, (self.audio, 0))
            self.connect(self.gain_right, (self.audio, 1))
            self.connect(self.gain_left, self.valve_left, (self.wav_sink, 0))
            self.connect(self.gain_right, self.valve_right, (self.wav_sink, 1))

        # tune USRP frequency
        if self.use_usrp:
            self.set_freq(self.frequency)
            # set gain
            # if no gain was specified, use the mid-point in dB
            g = self.src.get_gain_range()
            self.rx_gain = float(g.start() + g.stop()) / 2
            self.src.set_gain(self.rx_gain)
Example #12
0
    def __init__(self, frequency, bit_rate, address, size, protection, use_usrp, src_path, record_audio = False, sink_path = "None"):
        gr.top_block.__init__(self)

        self.dab_mode = 1
        self.verbose = False
        self.sample_rate = 2e6
        self.use_usrp = use_usrp
        self.src_path = src_path
        self.record_audio = record_audio
        self.sink_path = sink_path

        ########################
        # source
        ########################
        if self.use_usrp:
            self.src = uhd.usrp_source("", uhd.io_type.COMPLEX_FLOAT32, 1)
            self.src.set_samp_rate(self.sample_rate)
            self.src.set_antenna("TX/RX")
        else:
            print "using file source"
            self.src = blocks.file_source_make(gr.sizeof_gr_complex, self.src_path, True)

        # set paramters to default mode
        self.softbits = True
        self.filter_input = True
        self.autocorrect_sample_rate = False
        self.resample_fixed = 1
        self.correct_ffe = True
        self.equalize_magnitude = True
        self.frequency = frequency
        self.dab_params = dab.parameters.dab_parameters(self.dab_mode, self.sample_rate, self.verbose)
        self.rx_params = dab.parameters.receiver_parameters(self.dab_mode, self.softbits,
                                                            self.filter_input,
                                                            self.autocorrect_sample_rate,
                                                            self.resample_fixed,
                                                            self.verbose, self.correct_ffe,
                                                            self.equalize_magnitude)

        ########################
        # OFDM demod
        ########################
        self.demod = dab.ofdm_demod(self.dab_params, self.rx_params, self.verbose)

        ########################
        # SNR measurement
        ########################
        self.v2s_snr = blocks.vector_to_stream_make(gr.sizeof_gr_complex, 1536)
        self.snr_measurement = digital.mpsk_snr_est_cc_make(digital.SNR_EST_SIMPLE, 10000)
        self.null_sink_snr = blocks.null_sink_make(gr.sizeof_gr_complex)

        ########################
        # FIC decoder
        ########################
        self.fic_dec = dab.fic_decode(self.dab_params)

        ########################
        # MSC decoder and audio sink
        ########################
        self.dabplus = dab.dabplus_audio_decoder_ff(self.dab_params, bit_rate, address, size, protection, True)
        self.audio = audio.sink_make(32000)

        ########################
        # Connections
        ########################
        self.connect(self.src, self.demod, (self.fic_dec, 0))
        self.connect((self.demod, 1), (self.fic_dec, 1))
        self.connect((self.demod, 0), (self.dabplus, 0))
        self.connect((self.demod, 1), (self.dabplus, 1))
        self.connect((self.demod, 0), self.v2s_snr, self.snr_measurement, self.null_sink_snr)
        # connect audio to sound card
        # left stereo channel
        self.connect((self.dabplus, 0), (self.audio, 0))
        # right stereo channel
        self.connect((self.dabplus, 1), (self.audio, 1))
        # connect file sink if recording is selected
        if self.record_audio:
            self.sink = blocks.wavfile_sink_make("dab_audio.wav", 2, 32000)
            self.connect((self.dabplus, 0), (self.sink, 0))
            self.connect((self.dabplus, 1), (self.sink, 1))

        # tune USRP frequency
        if self.use_usrp:
            self.set_freq(self.frequency)
            # set gain
            # if no gain was specified, use the mid-point in dB
            g = self.src.get_gain_range()
            self.rx_gain = float(g.start() + g.stop()) / 2
            self.src.set_gain(self.rx_gain)