Exemplo n.º 1
0
    def test_004(self):
        ''' Test impulse response - short form, ff '''
        src_data = [1,] + 100*[0,] 
        expected_result = ((-0.029296875), (-0.0302734375),
                           (0.96875), (-0.0302734375),
                           (-0.029296875))

        src = gr.vector_source_f(src_data)
        op = gr.dc_blocker_ff(32, False)
        dst = gr.vector_sink_f()

        self.tb.connect (src, op, dst)
        self.tb.run()

        # only test samples around D-1
        result_data = dst.data()[29:34]
        self.assertFloatTuplesAlmostEqual (expected_result, result_data)
Exemplo n.º 2
0
    def test_003(self):
        ''' Test impulse response - long form, ff '''
        src_data = [1,] + 100*[0,] 
        expected_result = ((-0.02072429656982422), (-0.02081298828125),
                           (0.979156494140625), (-0.02081298828125),
                           (-0.02072429656982422))

        src = gr.vector_source_f(src_data)
        op = gr.dc_blocker_ff(32, True)
        dst = gr.vector_sink_f()

        self.tb.connect (src, op, dst)
        self.tb.run()

        # only test samples around 2D-2
        result_data = dst.data()[60:65]
        self.assertFloatTuplesAlmostEqual (expected_result, result_data)
Exemplo n.º 3
0
    def test_004(self):
        ''' Test impulse response - short form, ff '''
        src_data = [
            1,
        ] + 100 * [
            0,
        ]
        expected_result = ((-0.029296875), (-0.0302734375), (0.96875),
                           (-0.0302734375), (-0.029296875))

        src = gr.vector_source_f(src_data)
        op = gr.dc_blocker_ff(32, False)
        dst = gr.vector_sink_f()

        self.tb.connect(src, op, dst)
        self.tb.run()

        # only test samples around D-1
        result_data = dst.data()[29:34]
        self.assertFloatTuplesAlmostEqual(expected_result, result_data)
Exemplo n.º 4
0
    def test_003(self):
        ''' Test impulse response - long form, ff '''
        src_data = [
            1,
        ] + 100 * [
            0,
        ]
        expected_result = ((-0.02072429656982422), (-0.02081298828125),
                           (0.979156494140625), (-0.02081298828125),
                           (-0.02072429656982422))

        src = gr.vector_source_f(src_data)
        op = gr.dc_blocker_ff(32, True)
        dst = gr.vector_sink_f()

        self.tb.connect(src, op, dst)
        self.tb.run()

        # only test samples around 2D-2
        result_data = dst.data()[60:65]
        self.assertFloatTuplesAlmostEqual(expected_result, result_data)
Exemplo n.º 5
0
	def __init__(self):
		grc_wxgui.top_block_gui.__init__(self, title="Top Block")

		##################################################
		# Variables
		##################################################
		self.threshold = threshold = 1
		self.samp_rate = samp_rate = 48000
		self.rf_freq = rf_freq = 136780000
		self.ch0ifgain = ch0ifgain = 36
		self.ch0gain = ch0gain = 24
		self.audiogain = audiogain = 200

		##################################################
		# Blocks
		##################################################
		_threshold_sizer = wx.BoxSizer(wx.VERTICAL)
		self._threshold_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_threshold_sizer,
			value=self.threshold,
			callback=self.set_threshold,
			label='threshold',
			converter=forms.float_converter(),
			proportion=0,
		)
		self._threshold_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_threshold_sizer,
			value=self.threshold,
			callback=self.set_threshold,
			minimum=0,
			maximum=1000,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.GridAdd(_threshold_sizer, 1, 1, 1, 1)
		_ch0ifgain_sizer = wx.BoxSizer(wx.VERTICAL)
		self._ch0ifgain_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_ch0ifgain_sizer,
			value=self.ch0ifgain,
			callback=self.set_ch0ifgain,
			label="ch0ifgain",
			converter=forms.float_converter(),
			proportion=0,
		)
		self._ch0ifgain_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_ch0ifgain_sizer,
			value=self.ch0ifgain,
			callback=self.set_ch0ifgain,
			minimum=0,
			maximum=42,
			num_steps=42,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.GridAdd(_ch0ifgain_sizer, 4, 1, 1, 1)
		_ch0gain_sizer = wx.BoxSizer(wx.VERTICAL)
		self._ch0gain_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_ch0gain_sizer,
			value=self.ch0gain,
			callback=self.set_ch0gain,
			label='ch0gain',
			converter=forms.float_converter(),
			proportion=0,
		)
		self._ch0gain_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_ch0gain_sizer,
			value=self.ch0gain,
			callback=self.set_ch0gain,
			minimum=-1,
			maximum=42,
			num_steps=43,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.GridAdd(_ch0gain_sizer, 3, 1, 1, 1)
		_audiogain_sizer = wx.BoxSizer(wx.VERTICAL)
		self._audiogain_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_audiogain_sizer,
			value=self.audiogain,
			callback=self.set_audiogain,
			label='audiogain',
			converter=forms.float_converter(),
			proportion=0,
		)
		self._audiogain_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_audiogain_sizer,
			value=self.audiogain,
			callback=self.set_audiogain,
			minimum=0,
			maximum=1000,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.GridAdd(_audiogain_sizer, 2, 1, 1, 1)
		self.wxgui_fftsink2_1 = fftsink2.fft_sink_f(
			self.GetWin(),
			baseband_freq=0,
			y_per_div=10,
			y_divs=10,
			ref_level=20,
			ref_scale=2.0,
			sample_rate=6000,
			fft_size=1024,
			fft_rate=10,
			average=False,
			avg_alpha=None,
			title="Audio",
			peak_hold=False,
		)
		self.GridAdd(self.wxgui_fftsink2_1.win, 6, 1, 1, 1)
		self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
			self.GetWin(),
			baseband_freq=rf_freq,
			y_per_div=10,
			y_divs=10,
			ref_level=0,
			ref_scale=2.0,
			sample_rate=samp_rate*24,
			fft_size=1024,
			fft_rate=5,
			average=False,
			avg_alpha=None,
			title="RF",
			peak_hold=False,
		)
		self.GridAdd(self.wxgui_fftsink2_0.win, 5, 1, 1, 1)
		self.osmosdr_source_c_0 = osmosdr.source_c( args="nchan=" + str(1) + " " + "" )
		self.osmosdr_source_c_0.set_sample_rate(samp_rate*24)
		self.osmosdr_source_c_0.set_center_freq(rf_freq, 0)
		self.osmosdr_source_c_0.set_freq_corr(-32, 0)
		self.osmosdr_source_c_0.set_gain_mode(1, 0)
		self.osmosdr_source_c_0.set_gain(ch0gain, 0)
		self.osmosdr_source_c_0.set_if_gain(ch0ifgain, 0)
			
		self.low_pass_filter_0 = gr.fir_filter_ccf(6, firdes.low_pass(
			1, samp_rate*24, 500000, 150000, firdes.WIN_HAMMING, 6.76))
		self.gr_multiply_const_vxx_0 = gr.multiply_const_vff((audiogain, ))
		self.gr_keep_one_in_n_0 = gr.keep_one_in_n(gr.sizeof_float*1, 8)
		self.gr_dc_blocker_0 = gr.dc_blocker_ff(64, True)
		self.blks2_am_demod_cf_0 = blks2.am_demod_cf(
			channel_rate=samp_rate*4,
			audio_decim=4,
			audio_pass=5000,
			audio_stop=5500,
		)
		self.audio_sink_0 = audio.sink(samp_rate, "", True)
		self.acars_decodeur_0 = acars.decodeur(threshold,"/tmp/log_jmf.txt")

		##################################################
		# Connections
		##################################################
		self.connect((self.osmosdr_source_c_0, 0), (self.wxgui_fftsink2_0, 0))
		self.connect((self.low_pass_filter_0, 0), (self.blks2_am_demod_cf_0, 0))
		self.connect((self.osmosdr_source_c_0, 0), (self.low_pass_filter_0, 0))
		self.connect((self.gr_multiply_const_vxx_0, 0), (self.audio_sink_0, 0))
		self.connect((self.gr_multiply_const_vxx_0, 0), (self.acars_decodeur_0, 0))
		self.connect((self.blks2_am_demod_cf_0, 0), (self.gr_dc_blocker_0, 0))
		self.connect((self.gr_dc_blocker_0, 0), (self.gr_multiply_const_vxx_0, 0))
		self.connect((self.gr_multiply_const_vxx_0, 0), (self.gr_keep_one_in_n_0, 0))
		self.connect((self.gr_keep_one_in_n_0, 0), (self.wxgui_fftsink2_1, 0))