def __init__(self, center_freq, offset_freq, decimate_am=1, play_audio=False): """Configure the RTL-SDR and GNU Radio""" super(rtlsdr_am_stream, self).__init__() audio_rate = 44100 device_rate = audio_rate * 25 output_rate = audio_rate / float(decimate_am) self.rate = output_rate self.osmosdr_source = osmosdr.source_c("") self.osmosdr_source.set_center_freq(freq) self.osmosdr_source.set_sample_rate(device_rate) taps = firdes.low_pass(1, device_rate, 40000, 5000, firdes.WIN_HAMMING, 6.76) self.freq_filter = gr.freq_xlating_fir_filter_ccc(25, taps, -freq_offs, device_rate) self.am_demod = blks2.am_demod_cf( channel_rate=audio_rate, audio_decim=1, audio_pass=5000, audio_stop=5500, ) self.resampler = blks2.rational_resampler_fff( interpolation=1, decimation=decimate_am, ) self.sink = gr_queue.queue_sink_f() self.connect(self.osmosdr_source, self.freq_filter, self.am_demod) self.connect(self.am_demod, self.resampler, self.sink) if play_audio: self.audio_sink = audio.sink(audio_rate, "", True) self.connect(self.am_demod, self.audio_sink)
def __init__(self, center_freq, offset_freq, decimate_am=1, play_audio=False): """Configure the RTL-SDR and GNU Radio""" super(rtlsdr_am_stream, self).__init__() audio_rate = 44100 device_rate = audio_rate * 25 output_rate = audio_rate / float(decimate_am) self.rate = output_rate self.osmosdr_source = osmosdr.source_c("") self.osmosdr_source.set_center_freq(freq) self.osmosdr_source.set_sample_rate(device_rate) taps = firdes.low_pass(1, device_rate, 40000, 5000, firdes.WIN_HAMMING, 6.76) self.freq_filter = gr.freq_xlating_fir_filter_ccc( 25, taps, -freq_offs, device_rate) self.am_demod = blks2.am_demod_cf( channel_rate=audio_rate, audio_decim=1, audio_pass=5000, audio_stop=5500, ) self.resampler = blks2.rational_resampler_fff( interpolation=1, decimation=decimate_am, ) self.sink = gr_queue.queue_sink_f() self.connect(self.osmosdr_source, self.freq_filter, self.am_demod) self.connect(self.am_demod, self.resampler, self.sink) if play_audio: self.audio_sink = audio.sink(audio_rate, "", True) self.connect(self.am_demod, self.audio_sink)
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Amaviation Agc") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.sql_threshold = sql_threshold = -30 self.samp_rate = samp_rate = 1000000 self.frq_offset = frq_offset = 0 self.base_frq = base_frq = 131725000 ################################################## # Blocks ################################################## _sql_threshold_sizer = wx.BoxSizer(wx.VERTICAL) self._sql_threshold_text_box = forms.text_box( parent=self.GetWin(), sizer=_sql_threshold_sizer, value=self.sql_threshold, callback=self.set_sql_threshold, label="Squelch Threshold", converter=forms.float_converter(), proportion=0, ) self._sql_threshold_slider = forms.slider( parent=self.GetWin(), sizer=_sql_threshold_sizer, value=self.sql_threshold, callback=self.set_sql_threshold, minimum=-100, maximum=0, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_sql_threshold_sizer) _frq_offset_sizer = wx.BoxSizer(wx.VERTICAL) self._frq_offset_text_box = forms.text_box( parent=self.GetWin(), sizer=_frq_offset_sizer, value=self.frq_offset, callback=self.set_frq_offset, label="Frequency Offset", converter=forms.float_converter(), proportion=0, ) self._frq_offset_slider = forms.slider( parent=self.GetWin(), sizer=_frq_offset_sizer, value=self.frq_offset, callback=self.set_frq_offset, minimum=-100000, maximum=100000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_frq_offset_sizer) self._base_frq_text_box = forms.text_box( parent=self.GetWin(), value=self.base_frq, callback=self.set_base_frq, label="Base frequency", converter=forms.float_converter(), ) self.Add(self._base_frq_text_box) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.rtl2832_source_0 = baz.rtl_source_c(defer_creation=True) self.rtl2832_source_0.set_verbose(True) self.rtl2832_source_0.set_vid(0x0) self.rtl2832_source_0.set_pid(0x0) self.rtl2832_source_0.set_tuner_name("") self.rtl2832_source_0.set_default_timeout(0) self.rtl2832_source_0.set_use_buffer(True) self.rtl2832_source_0.set_fir_coefficients(([])) if self.rtl2832_source_0.create() == False: raise Exception( "Failed to create RTL2832 Source: rtl2832_source_0") self.rtl2832_source_0.set_bandwidth(300000) self.rtl2832_source_0.set_sample_rate(samp_rate) self.rtl2832_source_0.set_frequency(base_frq + frq_offset) self.rtl2832_source_0.set_gain_mode("sensitive") self.rtl2832_source_0.set_auto_gain_mode(False) self.rtl2832_source_0.set_relative_gain(True) self.rtl2832_source_0.set_gain(30) self.gr_simple_squelch_cc_0 = gr.simple_squelch_cc( sql_threshold, 0.0001) self.gr_agc2_xx_0 = gr.agc2_cc(100e-3, 200e-3, 1.0, 1.0, 2.0) self.blks2_rational_resampler_xxx_0 = blks2.rational_resampler_ccc( interpolation=48, decimation=1000, taps=None, fractional_bw=None, ) self.blks2_am_demod_cf_0 = blks2.am_demod_cf( channel_rate=48000, audio_decim=1, audio_pass=5000, audio_stop=5500, ) self.audio_sink_0 = audio.sink(48000, "pulse", True) ################################################## # Connections ################################################## self.connect((self.rtl2832_source_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.blks2_am_demod_cf_0, 0), (self.audio_sink_0, 0)) self.connect((self.blks2_rational_resampler_xxx_0, 0), (self.gr_simple_squelch_cc_0, 0)) self.connect((self.gr_simple_squelch_cc_0, 0), (self.gr_agc2_xx_0, 0)) self.connect((self.gr_agc2_xx_0, 0), (self.blks2_am_demod_cf_0, 0)) self.connect((self.rtl2832_source_0, 0), (self.blks2_rational_resampler_xxx_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Amaviation Agc") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.sql_threshold = sql_threshold = -30 self.samp_rate = samp_rate = 1000000 self.frq_offset = frq_offset = 0 self.base_frq = base_frq = 131725000 ################################################## # Blocks ################################################## _sql_threshold_sizer = wx.BoxSizer(wx.VERTICAL) self._sql_threshold_text_box = forms.text_box( parent=self.GetWin(), sizer=_sql_threshold_sizer, value=self.sql_threshold, callback=self.set_sql_threshold, label="Squelch Threshold", converter=forms.float_converter(), proportion=0, ) self._sql_threshold_slider = forms.slider( parent=self.GetWin(), sizer=_sql_threshold_sizer, value=self.sql_threshold, callback=self.set_sql_threshold, minimum=-100, maximum=0, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_sql_threshold_sizer) _frq_offset_sizer = wx.BoxSizer(wx.VERTICAL) self._frq_offset_text_box = forms.text_box( parent=self.GetWin(), sizer=_frq_offset_sizer, value=self.frq_offset, callback=self.set_frq_offset, label="Frequency Offset", converter=forms.float_converter(), proportion=0, ) self._frq_offset_slider = forms.slider( parent=self.GetWin(), sizer=_frq_offset_sizer, value=self.frq_offset, callback=self.set_frq_offset, minimum=-100000, maximum=100000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_frq_offset_sizer) self._base_frq_text_box = forms.text_box( parent=self.GetWin(), value=self.base_frq, callback=self.set_base_frq, label="Base frequency", converter=forms.float_converter(), ) self.Add(self._base_frq_text_box) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.rtl2832_source_0 = baz.rtl_source_c(defer_creation=True) self.rtl2832_source_0.set_verbose(True) self.rtl2832_source_0.set_vid(0x0) self.rtl2832_source_0.set_pid(0x0) self.rtl2832_source_0.set_tuner_name("") self.rtl2832_source_0.set_default_timeout(0) self.rtl2832_source_0.set_use_buffer(True) self.rtl2832_source_0.set_fir_coefficients(([])) if self.rtl2832_source_0.create() == False: raise Exception("Failed to create RTL2832 Source: rtl2832_source_0") self.rtl2832_source_0.set_bandwidth(300000) self.rtl2832_source_0.set_sample_rate(samp_rate) self.rtl2832_source_0.set_frequency(base_frq+frq_offset) self.rtl2832_source_0.set_gain_mode("sensitive") self.rtl2832_source_0.set_auto_gain_mode(False) self.rtl2832_source_0.set_relative_gain(True) self.rtl2832_source_0.set_gain(30) self.gr_simple_squelch_cc_0 = gr.simple_squelch_cc(sql_threshold, 0.0001) self.gr_agc2_xx_0 = gr.agc2_cc(100e-3, 200e-3, 1.0, 1.0, 2.0) self.blks2_rational_resampler_xxx_0 = blks2.rational_resampler_ccc( interpolation=48, decimation=1000, taps=None, fractional_bw=None, ) self.blks2_am_demod_cf_0 = blks2.am_demod_cf( channel_rate=48000, audio_decim=1, audio_pass=5000, audio_stop=5500, ) self.audio_sink_0 = audio.sink(48000, "pulse", True) ################################################## # Connections ################################################## self.connect((self.rtl2832_source_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.blks2_am_demod_cf_0, 0), (self.audio_sink_0, 0)) self.connect((self.blks2_rational_resampler_xxx_0, 0), (self.gr_simple_squelch_cc_0, 0)) self.connect((self.gr_simple_squelch_cc_0, 0), (self.gr_agc2_xx_0, 0)) self.connect((self.gr_agc2_xx_0, 0), (self.blks2_am_demod_cf_0, 0)) self.connect((self.rtl2832_source_0, 0), (self.blks2_rational_resampler_xxx_0, 0))
def __init__(self, antenna="TX/RX", rx_gain=30, vor_samp_rate=250e3, com_freq_1=135.275e6, gain=21, vor_freq_1=115e6): grc_wxgui.top_block_gui.__init__(self, title="Simple Trx") ################################################## # Parameters ################################################## self.antenna = antenna self.rx_gain = rx_gain self.vor_samp_rate = vor_samp_rate self.com_freq_1 = com_freq_1 self.gain = gain self.vor_freq_1 = vor_freq_1 ################################################## # Variables ################################################## self.obs_decimation = obs_decimation = 25 self.ils_decimation = ils_decimation = 50 self.am_sample_rate = am_sample_rate = 12.5e3 self.vor_volume_slider = vor_volume_slider = 5 self.vor_ident = vor_ident = False self.vor_freq_entry_1 = vor_freq_entry_1 = vor_freq_1 self.vor_center_freq_0 = vor_center_freq_0 = (117.95e6 - 108.00e6) / 2 + 117.95e6 self.system_center_freq = system_center_freq = 133.9e6 self.squelch_slider = squelch_slider = -85 self.samp_rate = samp_rate = 250e3 self.rxgain = rxgain = 15 self.phase_correction = phase_correction = 5 self.obs_sample_rate = obs_sample_rate = am_sample_rate / obs_decimation self.ils_sample_rate = ils_sample_rate = am_sample_rate / ils_decimation self.gain_slider = gain_slider = gain self.correction_gain = correction_gain = 0.8 self.com_volume_slider = com_volume_slider = 1 self.com_freq_entry_1 = com_freq_entry_1 = com_freq_1 self.com_enable = com_enable = True self.audio_select = audio_select = 0 self.audio_sample_rate = audio_sample_rate = 48e3 self.am_decimation = am_decimation = 1 ################################################## # Blocks ################################################## _vor_volume_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._vor_volume_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_vor_volume_slider_sizer, value=self.vor_volume_slider, callback=self.set_vor_volume_slider, label='vor_volume_slider', converter=forms.float_converter(), proportion=0, ) self._vor_volume_slider_slider = forms.slider( parent=self.GetWin(), sizer=_vor_volume_slider_sizer, value=self.vor_volume_slider, callback=self.set_vor_volume_slider, minimum=0, maximum=10, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_vor_volume_slider_sizer, 1, 4, 1, 1) self._vor_ident_check_box = forms.check_box( parent=self.GetWin(), value=self.vor_ident, callback=self.set_vor_ident, label='vor_ident', true=1, false=0, ) self.GridAdd(self._vor_ident_check_box, 0, 3, 1, 1) self._vor_freq_entry_1_text_box = forms.text_box( parent=self.GetWin(), value=self.vor_freq_entry_1, callback=self.set_vor_freq_entry_1, label='vor_freq_entry_1', converter=forms.float_converter(), ) self.GridAdd(self._vor_freq_entry_1_text_box, 0, 1, 1, 1) self.notebook_0 = self.notebook_0 = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "RF Analyzer") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Channel FFT") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Demod Audio FFT") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Ref and Phase Scope") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Manipulated Ref and Phase") self.Add(self.notebook_0) _com_volume_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._com_volume_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_com_volume_slider_sizer, value=self.com_volume_slider, callback=self.set_com_volume_slider, label='com_volume_slider', converter=forms.float_converter(), proportion=0, ) self._com_volume_slider_slider = forms.slider( parent=self.GetWin(), sizer=_com_volume_slider_sizer, value=self.com_volume_slider, callback=self.set_com_volume_slider, minimum=0, maximum=10, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_com_volume_slider_sizer, 1, 5, 1, 1) self._com_freq_entry_1_text_box = forms.text_box( parent=self.GetWin(), value=self.com_freq_entry_1, callback=self.set_com_freq_entry_1, label='com_freq_entry_1', converter=forms.float_converter(), ) self.GridAdd(self._com_freq_entry_1_text_box, 0, 0, 1, 1) self._com_enable_check_box = forms.check_box( parent=self.GetWin(), value=self.com_enable, callback=self.set_com_enable, label='com_enable', true=1, false=0, ) self.GridAdd(self._com_enable_check_box, 2, 3, 1, 1) self.wxgui_scopesink2_0 = scopesink2.scope_sink_f( self.notebook_0.GetPage(3).GetWin(), title="Scope Plot", sample_rate=12.5e3, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=False, num_inputs=2, trig_mode=gr.gr_TRIG_MODE_AUTO, y_axis_label="Counts", ) self.notebook_0.GetPage(3).Add(self.wxgui_scopesink2_0.win) self.wxgui_numbersink2_0 = numbersink2.number_sink_f( self.GetWin(), unit="Units", minval=-200, maxval=200, factor=1.0, decimal_places=10, ref_level=0, sample_rate=25e3 / 2000, number_rate=15, average=True, avg_alpha=0.02, label="Number Plot", peak_hold=False, show_gauge=True, ) self.Add(self.wxgui_numbersink2_0.win) self.wxgui_fftsink2_0_1 = fftsink2.fft_sink_c( self.notebook_0.GetPage(0).GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=25e3, fft_size=1024, fft_rate=5, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.notebook_0.GetPage(0).Add(self.wxgui_fftsink2_0_1.win) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.notebook_0.GetPage(1).GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=12.5e3, fft_size=1024, fft_rate=5, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.notebook_0.GetPage(1).Add(self.wxgui_fftsink2_0.win) self.uhd_usrp_source_0 = uhd.usrp_source( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(2), ), ) self.uhd_usrp_source_0.set_clock_source("internal", 0) self.uhd_usrp_source_0.set_subdev_spec("A:0 A:0", 0) self.uhd_usrp_source_0.set_samp_rate(vor_samp_rate) self.uhd_usrp_source_0.set_center_freq( uhd.tune_request(com_freq_entry_1, rf_freq=system_center_freq, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_source_0.set_gain(rx_gain, 0) self.uhd_usrp_source_0.set_antenna("RX2", 0) self.uhd_usrp_source_0.set_center_freq( uhd.tune_request(vor_freq_entry_1, rf_freq=system_center_freq, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 1) self.uhd_usrp_source_0.set_gain(rx_gain, 1) self.uhd_usrp_source_0.set_antenna("RX2", 1) self.uhd_usrp_sink_0 = uhd.usrp_sink( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(250e3) self.uhd_usrp_sink_0.set_center_freq(com_freq_entry_1, 0) self.uhd_usrp_sink_0.set_gain(25, 0) self.uhd_usrp_sink_0.set_antenna("TX/RX", 0) _squelch_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._squelch_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_squelch_slider_sizer, value=self.squelch_slider, callback=self.set_squelch_slider, label='squelch_slider', converter=forms.float_converter(), proportion=0, ) self._squelch_slider_slider = forms.slider( parent=self.GetWin(), sizer=_squelch_slider_sizer, value=self.squelch_slider, callback=self.set_squelch_slider, minimum=-100, maximum=0, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_squelch_slider_sizer, 1, 0, 1, 1) self.squelch = gr.pwr_squelch_cc(squelch_slider, 0.01, 20, False) self.openavionics_joystick_interface_0 = openavionics.joystick_interface( ) self.openavionics_audio_ptt_0 = openavionics.audio_ptt() self.low_pass_filter_3_0 = filter.fir_filter_fff( 5, firdes.low_pass(1, 25e3, 200, 50, firdes.WIN_HAMMING, 6.76)) self.low_pass_filter_3 = filter.fir_filter_fff( 5, firdes.low_pass(1, 25e3, 200, 50, firdes.WIN_HAMMING, 6.76)) self.low_pass_filter_2 = filter.fir_filter_ccf( 1, firdes.low_pass(1, 25e3, 3e3, 500, firdes.WIN_HAMMING, 6.76)) self.low_pass_filter_1 = filter.interp_fir_filter_fff( 1, firdes.low_pass(1, 12.5e3, 3e3, 1e3, firdes.WIN_HAMMING, 6.76)) self.low_pass_filter_0_0 = filter.fir_filter_ccf( int(250e3 / 25e3), firdes.low_pass(1, vor_samp_rate, 11e3, 1e3, firdes.WIN_HAMMING, 6.76)) self.low_pass_filter_0 = filter.fir_filter_ccf( int(250e3 / 12.5e3), firdes.low_pass(1, vor_samp_rate, 10e3, 1e3, firdes.WIN_HAMMING, 6.76)) self.gr_sig_source_x_0 = gr.sig_source_c(25e3, gr.GR_COS_WAVE, 9960, 1, 0) self.gr_quadrature_demod_cf_0 = gr.quadrature_demod_cf(1) self.gr_pwr_squelch_xx_0 = gr.pwr_squelch_ff(-50, 0.5, 1, False) self.gr_null_sink_0_0 = gr.null_sink(gr.sizeof_gr_complex * 1) self.gr_multiply_xx_0_0_1 = gr.multiply_vff(1) self.gr_multiply_xx_0_0_0_0 = gr.multiply_vcc(1) self.gr_multiply_xx_0 = gr.multiply_vcc(1) self.gr_float_to_complex_0_0_0 = gr.float_to_complex(1) self.gr_float_to_complex_0 = gr.float_to_complex(1) self.gr_agc2_xx_0_0 = gr.agc2_cc(1, 1, 0.75, 1.0, 0.0) self.gr_agc2_xx_0 = gr.agc2_cc(1, 1, 0.75, 1.0, 0.0) self.gr_add_xx_0_0_0 = gr.add_vff(1) _gain_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._gain_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_gain_slider_sizer, value=self.gain_slider, callback=self.set_gain_slider, label='gain_slider', converter=forms.float_converter(), proportion=0, ) self._gain_slider_slider = forms.slider( parent=self.GetWin(), sizer=_gain_slider_sizer, value=self.gain_slider, callback=self.set_gain_slider, minimum=0, maximum=30, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_gain_slider_sizer, 1, 1, 1, 1) self.fft_tone_to_angle_0 = fft_tone_to_angle( fft_bin=12, fft_size=2000, ) self.const_source_x_0_1 = gr.sig_source_f(0, gr.GR_CONST_WAVE, 0, 0, 0.450) self.const_source_x_0_0_1 = gr.sig_source_f(0, gr.GR_CONST_WAVE, 0, 0, 0.550) self.const_source_x_0_0_0_0 = gr.sig_source_c(0, gr.GR_CONST_WAVE, 0, 0, 0.450) self.blocks_null_sink_1 = blocks.null_sink(gr.sizeof_float * 1) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_float * 1) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff( (180.0 / 3.1415, )) self.blocks_add_xx_0 = blocks.add_vff(1) self.blks2_rational_resampler_xxx_2_0 = blks2.rational_resampler_fff( interpolation=250, decimation=48, taps=None, fractional_bw=None, ) self.blks2_rational_resampler_xxx_1 = blks2.rational_resampler_fff( interpolation=480, decimation=125, taps=None, fractional_bw=None, ) self.blks2_am_demod_cf_0_0 = blks2.am_demod_cf( channel_rate=25e3, audio_decim=am_decimation, audio_pass=11.5e3, audio_stop=12.250e3, ) self.blks2_am_demod_cf_0 = blks2.am_demod_cf( channel_rate=am_sample_rate, audio_decim=am_decimation, audio_pass=3e3, audio_stop=4e3, ) self.band_pass_filter_0 = gr.fir_filter_fff( 2, firdes.band_pass(1, 25000, 980, 1150, 50, firdes.WIN_HAMMING, 6.76)) self.audio_sink_0 = audio.sink(int(audio_sample_rate), "", True) self._audio_select_chooser = forms.drop_down( parent=self.GetWin(), value=self.audio_select, callback=self.set_audio_select, label='audio_select', choices=[0, 1], labels=['AM Voice', 'VOR Subcarrier'], ) self.GridAdd(self._audio_select_chooser, 0, 2, 1, 1) self.analog_sig_source_x_0_0 = analog.sig_source_f( 48000, analog.GR_COS_WAVE, 1000, 1, 0) self.adsf_0 = blocks.multiply_const_vff( (com_enable * com_volume_slider, )) self.adsf = blocks.multiply_const_vff( (vor_ident * vor_volume_slider, )) ################################################## # Connections ################################################## self.connect((self.gr_float_to_complex_0, 0), (self.gr_multiply_xx_0, 0)) self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.audio_sink_0, 0)) self.connect((self.blks2_am_demod_cf_0, 0), (self.low_pass_filter_1, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.uhd_usrp_source_0, 1), (self.gr_null_sink_0_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.squelch, 0)) self.connect((self.squelch, 0), (self.gr_agc2_xx_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.gr_agc2_xx_0, 0), (self.blks2_am_demod_cf_0, 0)) self.connect((self.low_pass_filter_0_0, 0), (self.wxgui_fftsink2_0_1, 0)) self.connect((self.gr_agc2_xx_0_0, 0), (self.blks2_am_demod_cf_0_0, 0)) self.connect((self.uhd_usrp_source_0, 1), (self.low_pass_filter_0_0, 0)) self.connect((self.blks2_am_demod_cf_0_0, 0), (self.gr_float_to_complex_0, 0)) self.connect((self.fft_tone_to_angle_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.wxgui_numbersink2_0, 0)) self.connect((self.fft_tone_to_angle_0, 1), (self.blocks_null_sink_0, 0)) self.connect((self.fft_tone_to_angle_0, 2), (self.blocks_null_sink_1, 0)) self.connect((self.low_pass_filter_0_0, 0), (self.gr_agc2_xx_0_0, 0)) self.connect((self.gr_quadrature_demod_cf_0, 0), (self.low_pass_filter_3, 0)) self.connect((self.low_pass_filter_3, 0), (self.fft_tone_to_angle_0, 0)) self.connect((self.low_pass_filter_3_0, 0), (self.fft_tone_to_angle_0, 1)) self.connect((self.blks2_am_demod_cf_0_0, 0), (self.low_pass_filter_3_0, 0)) self.connect((self.blks2_am_demod_cf_0_0, 0), (self.gr_float_to_complex_0, 1)) self.connect((self.gr_multiply_xx_0, 0), (self.low_pass_filter_2, 0)) self.connect((self.gr_sig_source_x_0, 0), (self.gr_multiply_xx_0, 1)) self.connect((self.low_pass_filter_2, 0), (self.gr_quadrature_demod_cf_0, 0)) self.connect((self.blks2_am_demod_cf_0_0, 0), (self.band_pass_filter_0, 0)) self.connect((self.adsf, 0), (self.blocks_add_xx_0, 1)) self.connect((self.blocks_add_xx_0, 0), (self.blks2_rational_resampler_xxx_1, 0)) self.connect((self.adsf, 0), (self.wxgui_scopesink2_0, 1)) self.connect((self.low_pass_filter_1, 0), (self.adsf_0, 0)) self.connect((self.adsf_0, 0), (self.blocks_add_xx_0, 0)) self.connect((self.adsf_0, 0), (self.wxgui_scopesink2_0, 0)) self.connect((self.band_pass_filter_0, 0), (self.gr_pwr_squelch_xx_0, 0)) self.connect((self.gr_pwr_squelch_xx_0, 0), (self.adsf, 0)) self.connect((self.const_source_x_0_0_0_0, 0), (self.gr_multiply_xx_0_0_0_0, 1)) self.connect((self.gr_float_to_complex_0_0_0, 0), (self.gr_multiply_xx_0_0_0_0, 0)) self.connect((self.gr_add_xx_0_0_0, 0), (self.gr_float_to_complex_0_0_0, 1)) self.connect((self.gr_add_xx_0_0_0, 0), (self.gr_float_to_complex_0_0_0, 0)) self.connect((self.const_source_x_0_0_1, 0), (self.gr_add_xx_0_0_0, 1)) self.connect((self.gr_multiply_xx_0_0_1, 0), (self.gr_add_xx_0_0_0, 0)) self.connect((self.const_source_x_0_1, 0), (self.gr_multiply_xx_0_0_1, 1)) self.connect((self.gr_multiply_xx_0_0_0_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.blks2_rational_resampler_xxx_2_0, 0), (self.openavionics_audio_ptt_0, 0)) self.connect((self.analog_sig_source_x_0_0, 0), (self.blks2_rational_resampler_xxx_2_0, 0)) self.connect((self.openavionics_audio_ptt_0, 0), (self.gr_multiply_xx_0_0_1, 0)) ################################################## # Asynch Message Connections ################################################## self.msg_connect(self.openavionics_joystick_interface_0, "out", self.openavionics_audio_ptt_0, "in2")
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))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="AM Receiver") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1e6 self.offset_fine = offset_fine = 0 self.offset_coarse = offset_coarse = 0 self.freq = freq = 7200000 self.LO = LO = 0 self.xlate_filter_taps = xlate_filter_taps = firdes.low_pass(1, samp_rate, 125000, 25000, firdes.WIN_HAMMING, 6.76) self.width = width = 10000 self.trans = trans = 1500 self.rx_freq = rx_freq = LO+freq+(offset_coarse+offset_fine) self.rf_gain = rf_gain = 20 self.lo_freq = lo_freq = LO self.display_selector = display_selector = 0 self.af_gain = af_gain = 1 ################################################## # Blocks ################################################## _width_sizer = wx.BoxSizer(wx.VERTICAL) self._width_text_box = forms.text_box( parent=self.GetWin(), sizer=_width_sizer, value=self.width, callback=self.set_width, label="Filter", converter=forms.float_converter(), proportion=0, ) self._width_slider = forms.slider( parent=self.GetWin(), sizer=_width_sizer, value=self.width, callback=self.set_width, minimum=2000, maximum=40000, num_steps=760, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_width_sizer, 7, 0, 1, 1) _trans_sizer = wx.BoxSizer(wx.VERTICAL) self._trans_text_box = forms.text_box( parent=self.GetWin(), sizer=_trans_sizer, value=self.trans, callback=self.set_trans, label="Trans", converter=forms.float_converter(), proportion=0, ) self._trans_slider = forms.slider( parent=self.GetWin(), sizer=_trans_sizer, value=self.trans, callback=self.set_trans, minimum=500, maximum=5000, num_steps=900, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_trans_sizer, 8, 0, 1, 1) self._rx_freq_static_text = forms.static_text( parent=self.GetWin(), value=self.rx_freq, callback=self.set_rx_freq, label="Receive", converter=forms.float_converter(), ) self.GridAdd(self._rx_freq_static_text, 5, 3, 1, 1) _offset_fine_sizer = wx.BoxSizer(wx.VERTICAL) self._offset_fine_text_box = forms.text_box( parent=self.GetWin(), sizer=_offset_fine_sizer, value=self.offset_fine, callback=self.set_offset_fine, label="Fine tune", converter=forms.float_converter(), proportion=0, ) self._offset_fine_slider = forms.slider( parent=self.GetWin(), sizer=_offset_fine_sizer, value=self.offset_fine, callback=self.set_offset_fine, minimum=-1000, maximum=1000, num_steps=400, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_offset_fine_sizer, 6, 0, 1, 2) _offset_coarse_sizer = wx.BoxSizer(wx.VERTICAL) self._offset_coarse_text_box = forms.text_box( parent=self.GetWin(), sizer=_offset_coarse_sizer, value=self.offset_coarse, callback=self.set_offset_coarse, label="Coarse tune", converter=forms.float_converter(), proportion=0, ) self._offset_coarse_slider = forms.slider( parent=self.GetWin(), sizer=_offset_coarse_sizer, value=self.offset_coarse, callback=self.set_offset_coarse, minimum=-120000, maximum=120000, num_steps=960, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_offset_coarse_sizer, 6, 2, 1, 2) self._display_selector_chooser = forms.drop_down( parent=self.GetWin(), value=self.display_selector, callback=self.set_display_selector, label="Spectrum", choices=[0, 1], labels=['Baseband','USRP'], ) self.GridAdd(self._display_selector_chooser, 5, 0, 1, 1) _af_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._af_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_af_gain_sizer, value=self.af_gain, callback=self.set_af_gain, label="VOL", converter=forms.float_converter(), proportion=0, ) self._af_gain_slider = forms.slider( parent=self.GetWin(), sizer=_af_gain_sizer, value=self.af_gain, callback=self.set_af_gain, minimum=0, maximum=5, num_steps=50, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_af_gain_sizer, 8, 1, 1, 1) self.xlating_fir_filter = gr.freq_xlating_fir_filter_ccc(1, (xlate_filter_taps), -(offset_coarse+offset_fine), samp_rate) self.rtlsdr_source_c_0 = osmosdr.source_c( args="nchan=" + str(1) + " " + "" ) self.rtlsdr_source_c_0.set_sample_rate(samp_rate) self.rtlsdr_source_c_0.set_center_freq(31e6, 0) self.rtlsdr_source_c_0.set_freq_corr(0, 0) self.rtlsdr_source_c_0.set_gain_mode(0, 0) self.rtlsdr_source_c_0.set_gain(10, 0) self.rtlsdr_source_c_0.set_if_gain(24, 0) _rf_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._rf_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_rf_gain_sizer, value=self.rf_gain, callback=self.set_rf_gain, label="RF", converter=forms.float_converter(), proportion=0, ) self._rf_gain_slider = forms.slider( parent=self.GetWin(), sizer=_rf_gain_sizer, value=self.rf_gain, callback=self.set_rf_gain, minimum=0, maximum=50, num_steps=50, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_rf_gain_sizer, 7, 1, 1, 1) self.low_pass_filter = gr.fir_filter_ccf(5, firdes.low_pass( 1, samp_rate, width/2, trans, firdes.WIN_HAMMING, 6.76)) self._lo_freq_static_text = forms.static_text( parent=self.GetWin(), value=self.lo_freq, callback=self.set_lo_freq, label="LO", converter=forms.float_converter(), ) self.GridAdd(self._lo_freq_static_text, 5, 2, 1, 1) self.gr_multiply_const_vxx_1 = gr.multiply_const_vff((af_gain, )) self.gr_agc2_xx_0 = gr.agc2_cc(0.1, 10e-6, 0.9, 1.0, 1.0) self._freq_text_box = forms.text_box( parent=self.GetWin(), value=self.freq, callback=self.set_freq, label="USRP", converter=forms.float_converter(), ) self.GridAdd(self._freq_text_box, 5, 1, 1, 1) self.fftsink = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=rx_freq*display_selector, y_per_div=10, y_divs=10, ref_level=0, ref_scale=13490.0, sample_rate=samp_rate, fft_size=512, fft_rate=15, average=True, avg_alpha=0.5, title="", peak_hold=False, size=(800,300), ) self.GridAdd(self.fftsink.win, 0, 0, 5, 4) self.blks2_rational_resampler_xxx_1 = blks2.rational_resampler_ccc( interpolation=441, decimation=500, taps=None, fractional_bw=None, ) self.blks2_am_demod_cf_0 = blks2.am_demod_cf( channel_rate=44100, audio_decim=1, audio_pass=5000, audio_stop=5500, ) self.audio_sink_0 = audio.sink(44100, "", True) ################################################## # Connections ################################################## self.connect((self.xlating_fir_filter, 0), (self.fftsink, 0)) self.connect((self.xlating_fir_filter, 0), (self.low_pass_filter, 0)) self.connect((self.gr_multiply_const_vxx_1, 0), (self.audio_sink_0, 0)) self.connect((self.gr_multiply_const_vxx_1, 0), (self.audio_sink_0, 1)) self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.blks2_am_demod_cf_0, 0)) self.connect((self.blks2_am_demod_cf_0, 0), (self.gr_multiply_const_vxx_1, 0)) self.connect((self.low_pass_filter, 0), (self.gr_agc2_xx_0, 0)) self.connect((self.gr_agc2_xx_0, 0), (self.blks2_rational_resampler_xxx_1, 0)) self.connect((self.rtlsdr_source_c_0, 0), (self.xlating_fir_filter, 0))
def __init__(self, antenna="TX/RX", rx_gain=30, vor_samp_rate=250e3, com_freq_1=135.275e6, gain=21, vor_freq_1=115e6): grc_wxgui.top_block_gui.__init__(self, title="Simple Trx") ################################################## # Parameters ################################################## self.antenna = antenna self.rx_gain = rx_gain self.vor_samp_rate = vor_samp_rate self.com_freq_1 = com_freq_1 self.gain = gain self.vor_freq_1 = vor_freq_1 ################################################## # Variables ################################################## self.obs_decimation = obs_decimation = 25 self.ils_decimation = ils_decimation = 50 self.am_sample_rate = am_sample_rate = 12.5e3 self.vor_volume_slider = vor_volume_slider = 5 self.vor_ident = vor_ident = False self.vor_freq_entry_1 = vor_freq_entry_1 = vor_freq_1 self.vor_center_freq_0 = vor_center_freq_0 = (117.95e6-108.00e6)/2+117.95e6 self.system_center_freq = system_center_freq = 133.9e6 self.squelch_slider = squelch_slider = -85 self.samp_rate = samp_rate = 250e3 self.rxgain = rxgain = 15 self.phase_correction = phase_correction = 5 self.obs_sample_rate = obs_sample_rate = am_sample_rate/obs_decimation self.ils_sample_rate = ils_sample_rate = am_sample_rate/ils_decimation self.gain_slider = gain_slider = gain self.correction_gain = correction_gain = 0.8 self.com_volume_slider = com_volume_slider = 1 self.com_freq_entry_1 = com_freq_entry_1 = com_freq_1 self.com_enable = com_enable = True self.audio_select = audio_select = 0 self.audio_sample_rate = audio_sample_rate = 48e3 self.am_decimation = am_decimation = 1 ################################################## # Blocks ################################################## _vor_volume_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._vor_volume_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_vor_volume_slider_sizer, value=self.vor_volume_slider, callback=self.set_vor_volume_slider, label='vor_volume_slider', converter=forms.float_converter(), proportion=0, ) self._vor_volume_slider_slider = forms.slider( parent=self.GetWin(), sizer=_vor_volume_slider_sizer, value=self.vor_volume_slider, callback=self.set_vor_volume_slider, minimum=0, maximum=10, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_vor_volume_slider_sizer, 1, 4, 1, 1) self._vor_ident_check_box = forms.check_box( parent=self.GetWin(), value=self.vor_ident, callback=self.set_vor_ident, label='vor_ident', true=1, false=0, ) self.GridAdd(self._vor_ident_check_box, 0, 3, 1, 1) self._vor_freq_entry_1_text_box = forms.text_box( parent=self.GetWin(), value=self.vor_freq_entry_1, callback=self.set_vor_freq_entry_1, label='vor_freq_entry_1', converter=forms.float_converter(), ) self.GridAdd(self._vor_freq_entry_1_text_box, 0, 1, 1, 1) self.notebook_0 = self.notebook_0 = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "RF Analyzer") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Channel FFT") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Demod Audio FFT") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Ref and Phase Scope") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Manipulated Ref and Phase") self.Add(self.notebook_0) _com_volume_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._com_volume_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_com_volume_slider_sizer, value=self.com_volume_slider, callback=self.set_com_volume_slider, label='com_volume_slider', converter=forms.float_converter(), proportion=0, ) self._com_volume_slider_slider = forms.slider( parent=self.GetWin(), sizer=_com_volume_slider_sizer, value=self.com_volume_slider, callback=self.set_com_volume_slider, minimum=0, maximum=10, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_com_volume_slider_sizer, 1, 5, 1, 1) self._com_freq_entry_1_text_box = forms.text_box( parent=self.GetWin(), value=self.com_freq_entry_1, callback=self.set_com_freq_entry_1, label='com_freq_entry_1', converter=forms.float_converter(), ) self.GridAdd(self._com_freq_entry_1_text_box, 0, 0, 1, 1) self._com_enable_check_box = forms.check_box( parent=self.GetWin(), value=self.com_enable, callback=self.set_com_enable, label='com_enable', true=1, false=0, ) self.GridAdd(self._com_enable_check_box, 2, 3, 1, 1) self.wxgui_scopesink2_0 = scopesink2.scope_sink_f( self.notebook_0.GetPage(3).GetWin(), title="Scope Plot", sample_rate=12.5e3, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=False, num_inputs=2, trig_mode=gr.gr_TRIG_MODE_AUTO, y_axis_label="Counts", ) self.notebook_0.GetPage(3).Add(self.wxgui_scopesink2_0.win) self.wxgui_numbersink2_0 = numbersink2.number_sink_f( self.GetWin(), unit="Units", minval=-200, maxval=200, factor=1.0, decimal_places=10, ref_level=0, sample_rate=25e3/2000, number_rate=15, average=True, avg_alpha=0.02, label="Number Plot", peak_hold=False, show_gauge=True, ) self.Add(self.wxgui_numbersink2_0.win) self.wxgui_fftsink2_0_1 = fftsink2.fft_sink_c( self.notebook_0.GetPage(0).GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=25e3, fft_size=1024, fft_rate=5, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.notebook_0.GetPage(0).Add(self.wxgui_fftsink2_0_1.win) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.notebook_0.GetPage(1).GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=12.5e3, fft_size=1024, fft_rate=5, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.notebook_0.GetPage(1).Add(self.wxgui_fftsink2_0.win) self.uhd_usrp_source_0 = uhd.usrp_source( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(2), ), ) self.uhd_usrp_source_0.set_clock_source("internal", 0) self.uhd_usrp_source_0.set_subdev_spec("A:0 A:0", 0) self.uhd_usrp_source_0.set_samp_rate(vor_samp_rate) self.uhd_usrp_source_0.set_center_freq(uhd.tune_request(com_freq_entry_1, rf_freq=system_center_freq, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_source_0.set_gain(rx_gain, 0) self.uhd_usrp_source_0.set_antenna("RX2", 0) self.uhd_usrp_source_0.set_center_freq(uhd.tune_request(vor_freq_entry_1, rf_freq=system_center_freq, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 1) self.uhd_usrp_source_0.set_gain(rx_gain, 1) self.uhd_usrp_source_0.set_antenna("RX2", 1) self.uhd_usrp_sink_0 = uhd.usrp_sink( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(250e3) self.uhd_usrp_sink_0.set_center_freq(com_freq_entry_1, 0) self.uhd_usrp_sink_0.set_gain(25, 0) self.uhd_usrp_sink_0.set_antenna("TX/RX", 0) _squelch_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._squelch_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_squelch_slider_sizer, value=self.squelch_slider, callback=self.set_squelch_slider, label='squelch_slider', converter=forms.float_converter(), proportion=0, ) self._squelch_slider_slider = forms.slider( parent=self.GetWin(), sizer=_squelch_slider_sizer, value=self.squelch_slider, callback=self.set_squelch_slider, minimum=-100, maximum=0, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_squelch_slider_sizer, 1, 0, 1, 1) self.squelch = gr.pwr_squelch_cc(squelch_slider, 0.01, 20, False) self.openavionics_joystick_interface_0 = openavionics.joystick_interface() self.openavionics_audio_ptt_0 = openavionics.audio_ptt() self.low_pass_filter_3_0 = filter.fir_filter_fff(5, firdes.low_pass( 1, 25e3, 200, 50, firdes.WIN_HAMMING, 6.76)) self.low_pass_filter_3 = filter.fir_filter_fff(5, firdes.low_pass( 1, 25e3, 200, 50, firdes.WIN_HAMMING, 6.76)) self.low_pass_filter_2 = filter.fir_filter_ccf(1, firdes.low_pass( 1, 25e3, 3e3, 500, firdes.WIN_HAMMING, 6.76)) self.low_pass_filter_1 = filter.interp_fir_filter_fff(1, firdes.low_pass( 1, 12.5e3, 3e3, 1e3, firdes.WIN_HAMMING, 6.76)) self.low_pass_filter_0_0 = filter.fir_filter_ccf(int(250e3/25e3), firdes.low_pass( 1, vor_samp_rate, 11e3, 1e3, firdes.WIN_HAMMING, 6.76)) self.low_pass_filter_0 = filter.fir_filter_ccf(int(250e3/12.5e3), firdes.low_pass( 1, vor_samp_rate, 10e3, 1e3, firdes.WIN_HAMMING, 6.76)) self.gr_sig_source_x_0 = gr.sig_source_c(25e3, gr.GR_COS_WAVE, 9960, 1, 0) self.gr_quadrature_demod_cf_0 = gr.quadrature_demod_cf(1) self.gr_pwr_squelch_xx_0 = gr.pwr_squelch_ff(-50, 0.5, 1, False) self.gr_null_sink_0_0 = gr.null_sink(gr.sizeof_gr_complex*1) self.gr_multiply_xx_0_0_1 = gr.multiply_vff(1) self.gr_multiply_xx_0_0_0_0 = gr.multiply_vcc(1) self.gr_multiply_xx_0 = gr.multiply_vcc(1) self.gr_float_to_complex_0_0_0 = gr.float_to_complex(1) self.gr_float_to_complex_0 = gr.float_to_complex(1) self.gr_agc2_xx_0_0 = gr.agc2_cc(1, 1, 0.75, 1.0, 0.0) self.gr_agc2_xx_0 = gr.agc2_cc(1, 1, 0.75, 1.0, 0.0) self.gr_add_xx_0_0_0 = gr.add_vff(1) _gain_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._gain_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_gain_slider_sizer, value=self.gain_slider, callback=self.set_gain_slider, label='gain_slider', converter=forms.float_converter(), proportion=0, ) self._gain_slider_slider = forms.slider( parent=self.GetWin(), sizer=_gain_slider_sizer, value=self.gain_slider, callback=self.set_gain_slider, minimum=0, maximum=30, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_gain_slider_sizer, 1, 1, 1, 1) self.fft_tone_to_angle_0 = fft_tone_to_angle( fft_bin=12, fft_size=2000, ) self.const_source_x_0_1 = gr.sig_source_f(0, gr.GR_CONST_WAVE, 0, 0, 0.450) self.const_source_x_0_0_1 = gr.sig_source_f(0, gr.GR_CONST_WAVE, 0, 0, 0.550) self.const_source_x_0_0_0_0 = gr.sig_source_c(0, gr.GR_CONST_WAVE, 0, 0, 0.450) self.blocks_null_sink_1 = blocks.null_sink(gr.sizeof_float*1) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_float*1) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((180.0/3.1415, )) self.blocks_add_xx_0 = blocks.add_vff(1) self.blks2_rational_resampler_xxx_2_0 = blks2.rational_resampler_fff( interpolation=250, decimation=48, taps=None, fractional_bw=None, ) self.blks2_rational_resampler_xxx_1 = blks2.rational_resampler_fff( interpolation=480, decimation=125, taps=None, fractional_bw=None, ) self.blks2_am_demod_cf_0_0 = blks2.am_demod_cf( channel_rate=25e3, audio_decim=am_decimation, audio_pass=11.5e3, audio_stop=12.250e3, ) self.blks2_am_demod_cf_0 = blks2.am_demod_cf( channel_rate=am_sample_rate, audio_decim=am_decimation, audio_pass=3e3, audio_stop=4e3, ) self.band_pass_filter_0 = gr.fir_filter_fff(2, firdes.band_pass( 1, 25000, 980, 1150, 50, firdes.WIN_HAMMING, 6.76)) self.audio_sink_0 = audio.sink(int(audio_sample_rate), "", True) self._audio_select_chooser = forms.drop_down( parent=self.GetWin(), value=self.audio_select, callback=self.set_audio_select, label='audio_select', choices=[0, 1], labels=['AM Voice','VOR Subcarrier'], ) self.GridAdd(self._audio_select_chooser, 0, 2, 1, 1) self.analog_sig_source_x_0_0 = analog.sig_source_f(48000, analog.GR_COS_WAVE, 1000, 1, 0) self.adsf_0 = blocks.multiply_const_vff((com_enable*com_volume_slider, )) self.adsf = blocks.multiply_const_vff((vor_ident*vor_volume_slider, )) ################################################## # Connections ################################################## self.connect((self.gr_float_to_complex_0, 0), (self.gr_multiply_xx_0, 0)) self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.audio_sink_0, 0)) self.connect((self.blks2_am_demod_cf_0, 0), (self.low_pass_filter_1, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.uhd_usrp_source_0, 1), (self.gr_null_sink_0_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.squelch, 0)) self.connect((self.squelch, 0), (self.gr_agc2_xx_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.gr_agc2_xx_0, 0), (self.blks2_am_demod_cf_0, 0)) self.connect((self.low_pass_filter_0_0, 0), (self.wxgui_fftsink2_0_1, 0)) self.connect((self.gr_agc2_xx_0_0, 0), (self.blks2_am_demod_cf_0_0, 0)) self.connect((self.uhd_usrp_source_0, 1), (self.low_pass_filter_0_0, 0)) self.connect((self.blks2_am_demod_cf_0_0, 0), (self.gr_float_to_complex_0, 0)) self.connect((self.fft_tone_to_angle_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.wxgui_numbersink2_0, 0)) self.connect((self.fft_tone_to_angle_0, 1), (self.blocks_null_sink_0, 0)) self.connect((self.fft_tone_to_angle_0, 2), (self.blocks_null_sink_1, 0)) self.connect((self.low_pass_filter_0_0, 0), (self.gr_agc2_xx_0_0, 0)) self.connect((self.gr_quadrature_demod_cf_0, 0), (self.low_pass_filter_3, 0)) self.connect((self.low_pass_filter_3, 0), (self.fft_tone_to_angle_0, 0)) self.connect((self.low_pass_filter_3_0, 0), (self.fft_tone_to_angle_0, 1)) self.connect((self.blks2_am_demod_cf_0_0, 0), (self.low_pass_filter_3_0, 0)) self.connect((self.blks2_am_demod_cf_0_0, 0), (self.gr_float_to_complex_0, 1)) self.connect((self.gr_multiply_xx_0, 0), (self.low_pass_filter_2, 0)) self.connect((self.gr_sig_source_x_0, 0), (self.gr_multiply_xx_0, 1)) self.connect((self.low_pass_filter_2, 0), (self.gr_quadrature_demod_cf_0, 0)) self.connect((self.blks2_am_demod_cf_0_0, 0), (self.band_pass_filter_0, 0)) self.connect((self.adsf, 0), (self.blocks_add_xx_0, 1)) self.connect((self.blocks_add_xx_0, 0), (self.blks2_rational_resampler_xxx_1, 0)) self.connect((self.adsf, 0), (self.wxgui_scopesink2_0, 1)) self.connect((self.low_pass_filter_1, 0), (self.adsf_0, 0)) self.connect((self.adsf_0, 0), (self.blocks_add_xx_0, 0)) self.connect((self.adsf_0, 0), (self.wxgui_scopesink2_0, 0)) self.connect((self.band_pass_filter_0, 0), (self.gr_pwr_squelch_xx_0, 0)) self.connect((self.gr_pwr_squelch_xx_0, 0), (self.adsf, 0)) self.connect((self.const_source_x_0_0_0_0, 0), (self.gr_multiply_xx_0_0_0_0, 1)) self.connect((self.gr_float_to_complex_0_0_0, 0), (self.gr_multiply_xx_0_0_0_0, 0)) self.connect((self.gr_add_xx_0_0_0, 0), (self.gr_float_to_complex_0_0_0, 1)) self.connect((self.gr_add_xx_0_0_0, 0), (self.gr_float_to_complex_0_0_0, 0)) self.connect((self.const_source_x_0_0_1, 0), (self.gr_add_xx_0_0_0, 1)) self.connect((self.gr_multiply_xx_0_0_1, 0), (self.gr_add_xx_0_0_0, 0)) self.connect((self.const_source_x_0_1, 0), (self.gr_multiply_xx_0_0_1, 1)) self.connect((self.gr_multiply_xx_0_0_0_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.blks2_rational_resampler_xxx_2_0, 0), (self.openavionics_audio_ptt_0, 0)) self.connect((self.analog_sig_source_x_0_0, 0), (self.blks2_rational_resampler_xxx_2_0, 0)) self.connect((self.openavionics_audio_ptt_0, 0), (self.gr_multiply_xx_0_0_1, 0)) ################################################## # Asynch Message Connections ################################################## self.msg_connect(self.openavionics_joystick_interface_0, "out", self.openavionics_audio_ptt_0, "in2")