def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 25000000 self.dec_rate = dec_rate = 25 ################################################## # Blocks ################################################## 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/dec_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.gr_unpacked_to_packed_xx_0 = gr.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST) self.gr_throttle_0 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate) self.gr_freq_xlating_fir_filter_xxx_0 = gr.freq_xlating_fir_filter_ccc(dec_rate, (firdes.low_pass(1,samp_rate,1000000,100000)), -1000000, samp_rate) self.gr_file_source_0 = gr.file_source(gr.sizeof_gr_complex*1, "/shampoo/sdr/capture/j9Pro-capture/2400000000-25M-1.cap", False) self.gr_file_sink_0_0 = gr.file_sink(gr.sizeof_char*1, "/shampoo/sdr/projects/gr-nineeagles/gmsk-packed.out") self.gr_file_sink_0_0.set_unbuffered(False) self.gr_file_sink_0 = gr.file_sink(gr.sizeof_char*1, "/shampoo/sdr/projects/gr-nineeagles/gmsk-unpacked.out") self.gr_file_sink_0.set_unbuffered(False) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) ################################################## # Connections ################################################## self.connect((self.gr_file_source_0, 0), (self.gr_throttle_0, 0)) self.connect((self.gr_unpacked_to_packed_xx_0, 0), (self.gr_file_sink_0_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.gr_file_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.gr_unpacked_to_packed_xx_0, 0)) self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.gr_throttle_0, 0), (self.gr_freq_xlating_fir_filter_xxx_0, 0)) self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.digital_gmsk_demod_0, 0))
def __init__(self): gr.top_block.__init__(self, "SAME Decoder test") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 8000 ################################################## # Blocks ################################################## self.rational_resampler_44k = filter.rational_resampler_fff( interpolation=80, decimation=441, ) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=100, decimation=96, taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_fcc(1, (firdes.low_pass(1, samp_rate, 600, 100)), 1822.916667, samp_rate) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=16, gain_mu=0.175, mu=0.5, omega_relative_limit=0.1, freq_error=0.0, verbose=True, log=False, ) #self.src = audio.source(samp_rate, "plughw:CARD=PCH,DEV=2", True) self.blocks_wavfile_source_0 = blocks.wavfile_source("eas-test-11-7-2013.wav", False) self.blocks_bitstream_sink = blocks.file_sink(1, "bitstream.bin") self.xlat_sink = blocks.wavfile_sink("xlat.wav", 1, 8333) self.xlat_complex_to_float = blocks.complex_to_float() self.analog_pwr_squelch_xx_0 = analog.pwr_squelch_ff(-50, 0.0001, 0) self.msg_queue = gr.msg_queue(10) self.same_dec_0 = same.same_dec(self.msg_queue) ################################################## # Connections ################################################## self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.xlat_complex_to_float, 0), (self.xlat_sink, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.same_dec_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blocks_bitstream_sink, 0)) #self.connect((self.src, 0), (self.rational_resampler_44k, 0)) #self.connect((self.rational_resampler_44k, 0), (self.analog_pwr_squelch_xx_0, 0)) self.connect((self.blocks_wavfile_source_0, 0), (self.analog_pwr_squelch_xx_0,0)) self.connect((self.analog_pwr_squelch_xx_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) self._watcher = _queue_watcher_thread(self.msg_queue)
def _build(self, callback, input_signature, output_signature): """ Implementation of UHDRxPktArch abstract method. @param callback @param input_signature @param output_signature @return """ return digital.pkt.demod_pkts(demodulator=digital.gmsk_demod(samples_per_symbol=2), callback=callback )
def setup_gmsk_demods(self): self.demods = [] for i in range(self.n_devices): self.demods.append(digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ))
def __init__(self): gr.top_block.__init__(self, "Top Block Ss R") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 100000 ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(2.4e9, 0) self.uhd_usrp_source_0.set_gain(25, 0) self.gr_pll_carriertracking_cc_0 = gr.pll_carriertracking_cc(1.5*3.1459/200, 4, -4) self.gr_head_0 = gr.head(gr.sizeof_gr_complex*1, 1000000) self.gr_file_sink_0_0 = gr.file_sink(gr.sizeof_float*1, "/home/sdruser/COLLINS/SS/received_GMSK.txt") self.gr_file_sink_0_0.set_unbuffered(False) self.gr_file_sink_0 = gr.file_sink(gr.sizeof_gr_complex*1, "/home/sdruser/COLLINS/SS/received.txt") self.gr_file_sink_0.set_unbuffered(False) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) ################################################## # Connections ################################################## self.connect((self.gr_pll_carriertracking_cc_0, 0), (self.gr_file_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.gr_head_0, 0)) self.connect((self.gr_head_0, 0), (self.gr_pll_carriertracking_cc_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.gr_file_sink_0_0, 0)) self.connect((self.gr_pll_carriertracking_cc_0, 0), (self.digital_gmsk_demod_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 2000000 self.dec_rate = dec_rate = 4 ################################################## # Blocks ################################################## self.gr_throttle_1 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate/dec_rate) self.gr_or_xx_0 = gr.or_bb() self.gr_freq_xlating_fir_filter_xxx_0 = gr.freq_xlating_fir_filter_ccc(dec_rate, (firdes.low_pass(1,samp_rate,500000,100000)), -535000, samp_rate) self.gr_file_source_0 = gr.file_source(gr.sizeof_gr_complex*1, "/shampoo/sdr/capture/nrf-capture/2410500000-2M-1.cap", False) self.gr_file_sink_0_0 = gr.file_sink(gr.sizeof_char*1, "/shampoo/sdr/projects/gr-nordic/gmsk-correlate2.out") self.gr_file_sink_0_0.set_unbuffered(False) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_correlate_access_code_bb_0_0 = digital.correlate_access_code_bb("010101010", 0) self.digital_correlate_access_code_bb_0 = digital.correlate_access_code_bb("101010101", 0) ################################################## # Connections ################################################## self.connect((self.gr_file_source_0, 0), (self.gr_freq_xlating_fir_filter_xxx_0, 0)) self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.gr_throttle_1, 0)) self.connect((self.gr_throttle_1, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.digital_correlate_access_code_bb_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.digital_correlate_access_code_bb_0_0, 0)) self.connect((self.digital_correlate_access_code_bb_0_0, 0), (self.gr_or_xx_0, 1)) self.connect((self.digital_correlate_access_code_bb_0, 0), (self.gr_or_xx_0, 0)) self.connect((self.gr_or_xx_0, 0), (self.gr_file_sink_0_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="DVB Simulator (GMSK)") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.signal = signal = 500 self.samp_rate = samp_rate = 1024 self.noise = noise = 10 ################################################## # Blocks ################################################## _noise_sizer = wx.BoxSizer(wx.VERTICAL) self._noise_text_box = forms.text_box( parent=self.GetWin(), sizer=_noise_sizer, value=self.noise, callback=self.set_noise, label='Noise', converter=forms.float_converter(), proportion=0, ) self._noise_slider = forms.slider( parent=self.GetWin(), sizer=_noise_sizer, value=self.noise, callback=self.set_noise, minimum=0, maximum=1000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_noise_sizer) self.wxgui_fftsink2_0_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='RX FFT Plot', peak_hold=False, ) self.Add(self.wxgui_fftsink2_0_0.win) _signal_sizer = wx.BoxSizer(wx.VERTICAL) self._signal_text_box = forms.text_box( parent=self.GetWin(), sizer=_signal_sizer, value=self.signal, callback=self.set_signal, label='Signal', converter=forms.float_converter(), proportion=0, ) self._signal_slider = forms.slider( parent=self.GetWin(), sizer=_signal_sizer, value=self.signal, callback=self.set_signal, minimum=0, maximum=1000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_signal_sizer) self.digital_gmskmod_bc_0 = digital.gmskmod_bc(2, 4, 0.3) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((500, )) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char * 1, '/home/jay/txfifo.mkv', False) self.blocks_file_sink_0_0 = blocks.file_sink( gr.sizeof_char * 1, '/home/jay/Desktop/sink.mkv', False) self.blocks_file_sink_0_0.set_unbuffered(False) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_char * 1, '/home/jay/Desktop/sink.mkv', False) self.blocks_file_sink_0.set_unbuffered(False) self.blocks_add_xx_0 = blocks.add_vcc(1) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_b( grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=1, preamble='', access_code='', pad_for_usrp=True, ), payload_length=0, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) self.analog_noise_source_x_0 = analog.noise_source_c( analog.GR_GAUSSIAN, noise, 42) ################################################## # Connections ################################################## self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx_0, 1)) self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0_0, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmskmod_bc_0, 0)) self.connect((self.blocks_add_xx_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blocks_add_xx_0, 0), (self.wxgui_fftsink2_0_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_add_xx_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_gmskmod_bc_0, 0), (self.blocks_multiply_const_vxx_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Perseus Voice GMSK") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.data_rate = data_rate = 14.40e6 / 2 ################################################## # Blocks ################################################## self.wxgui_scopesink2_1 = scopesink2.scope_sink_c( self.GetWin(), title="Scope Plot", sample_rate=data_rate, v_scale=0, v_offset=0, t_scale=0, ac_couple=True, xy_mode=False, num_inputs=1, trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label="Counts", size=((450, 300)), ) self.GridAdd(self.wxgui_scopesink2_1.win, 1, 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=0, ref_scale=2.0, sample_rate=48e3, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, size=((450, 300)), ) self.GridAdd(self.wxgui_fftsink2_1.win, 1, 2, 1, 1) self.nutaq_rtdex_source_0 = nutaq.rtdex_source( "nutaq_carrier_perseus_0", gr.sizeof_short, 1, 3) self.nutaq_rtdex_source_0.set_type(0) self.nutaq_rtdex_source_0.set_packet_size(1024) self.nutaq_rtdex_source_0.set_channels("1") self.nutaq_rtdex_sink_0 = nutaq.rtdex_sink("nutaq_carrier_perseus_0", gr.sizeof_short, 1, 2) self.nutaq_rtdex_sink_0.set_type(0) self.nutaq_rtdex_sink_0.set_packet_size(1024) self.nutaq_rtdex_sink_0.set_channels("1") self.nutaq_radio420_tx_0_0 = nutaq.radio420_tx( "nutaq_carrier_perseus_0", 1, 0) self.nutaq_radio420_tx_0_0.set_default_enable(1) self.nutaq_radio420_tx_0_0.set_default_tx_freq(943e6) self.nutaq_radio420_tx_0_0.set_default_reference(0) self.nutaq_radio420_tx_0_0.set_default_datarate(data_rate * 2) self.nutaq_radio420_tx_0_0.set_default_calibrate(0) self.nutaq_radio420_tx_0_0.set_default_band(0) self.nutaq_radio420_tx_0_0.set_default_update_rate(1) self.nutaq_radio420_tx_0_0.set_default_tx_vga1_gain(-10) self.nutaq_radio420_tx_0_0.set_default_tx_vga2_gain(15) self.nutaq_radio420_tx_0_0.set_default_tx_gain3(3) self.nutaq_radio420_tx_0_0.set_default_tx_lpf_bandwidth(6) self.nutaq_radio420_tx_0_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_rf_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_tx_gain_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_pll_cpld_ctrl(0) self.nutaq_radio420_rx_0 = nutaq.radio420_rx("nutaq_carrier_perseus_0", 1, 1) self.nutaq_radio420_rx_0.set_default_enable(1) self.nutaq_radio420_rx_0.set_default_rx_freq(943e6) self.nutaq_radio420_rx_0.set_default_reference(0) self.nutaq_radio420_rx_0.set_default_datarate(data_rate * 2) self.nutaq_radio420_rx_0.set_default_calibrate(0) self.nutaq_radio420_rx_0.set_default_band(0) self.nutaq_radio420_rx_0.set_default_update_rate(1) self.nutaq_radio420_rx_0.set_default_rx_lna_gain(2) self.nutaq_radio420_rx_0.set_default_rx_vga1_gain(1) self.nutaq_radio420_rx_0.set_default_rx_gain2(16) self.nutaq_radio420_rx_0.set_default_rx_gain3(5) self.nutaq_radio420_rx_0.set_default_rx_rf_filter(2) self.nutaq_radio420_rx_0.set_default_rx_lpf_bandwidth(6) self.nutaq_radio420_rx_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_rx_0.set_default_rf_ctrl(0) self.nutaq_radio420_rx_0.set_default_rx_gain_ctrl(0) self.nutaq_radio420_rx_0.set_default_pll_cpld_ctrl(0) self.nutaq_custom_register_0_0 = nutaq.custom_register( "nutaq_carrier_perseus_0", 5) self.nutaq_custom_register_0_0.set_index(4) self.nutaq_custom_register_0_0.set_update_rate(1) self.nutaq_custom_register_0 = nutaq.custom_register( "nutaq_carrier_perseus_0", 4) self.nutaq_custom_register_0.set_index(1) self.nutaq_custom_register_0.set_default_value(6) self.nutaq_custom_register_0.set_update_rate(1) self.nutaq_carrier_perseus_0 = nutaq.carrier( 0, "nutaq_carrier_perseus_0", "192.168.0.102") self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=2, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_short_to_float_0_0 = blocks.short_to_float(1, 2**11 - 1) self.blocks_short_to_float_0 = blocks.short_to_float(1, 2**11 - 1) self.blocks_interleave_0 = blocks.interleave(gr.sizeof_short * 1) self.blocks_float_to_short_0_0_0 = blocks.float_to_short(1, 2**11 - 1) self.blocks_float_to_short_0_0 = blocks.float_to_short(1, 2**11 - 1) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_deinterleave_0 = blocks.deinterleave(gr.sizeof_short * 1) self.blocks_complex_to_float_0 = blocks.complex_to_float(1) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_f( grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=8, preamble="", access_code="", pad_for_usrp=True, ), payload_length=128, ) self.blks2_packet_decoder_1 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_1. recv_pkt(ok, payload), ), ) self.audio_source_0 = audio.source(48000, "", True) self.audio_sink_0 = audio.sink(48000, "", True) ################################################## # Connections ################################################## self.connect((self.audio_source_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_1, 0)) self.connect((self.blks2_packet_decoder_1, 0), (self.audio_sink_0, 0)) self.connect((self.blks2_packet_decoder_1, 0), (self.wxgui_fftsink2_1, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_float_to_short_0_0_0, 0), (self.blocks_interleave_0, 1)) self.connect((self.blocks_complex_to_float_0, 1), (self.blocks_float_to_short_0_0_0, 0)) self.connect((self.nutaq_rtdex_source_0, 0), (self.blocks_deinterleave_0, 0)) self.connect((self.blocks_deinterleave_0, 0), (self.blocks_short_to_float_0, 0)) self.connect((self.blocks_deinterleave_0, 1), (self.blocks_short_to_float_0_0, 0)) self.connect((self.blocks_interleave_0, 0), (self.nutaq_rtdex_sink_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_complex_to_float_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blocks_short_to_float_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blocks_short_to_float_0_0, 0), (self.blocks_float_to_complex_0, 1)) self.connect((self.blocks_float_to_complex_0, 0), (self.wxgui_scopesink2_1, 0)) self.connect((self.blocks_float_to_short_0_0, 0), (self.blocks_interleave_0, 0)) self.connect((self.blocks_complex_to_float_0, 0), (self.blocks_float_to_short_0_0, 0))
def __init__(self): gr.top_block.__init__(self) bitrate = 8000 channel_bw = 12500 chan0_freq = 358400000 options = get_options() self.rfgain = options.gain self.channels = [ int(ch) for ch in options.channels.split(',') if ch ] self.ch_freqs = [ ch * channel_bw + chan0_freq for ch in self.channels ] self.ch_freqs.extend( [ int(f) for f in options.channels_by_freq.split(',') if f ]) while len(self.channels) < len(self.ch_freqs): self.channels.append(-1) if options.frequency is None: self.ifreq = (max(self.ch_freqs) + min(self.ch_freqs)) / 2 / channel_bw * channel_bw else: self.ifreq = options.frequency ch0 = (self.ifreq - chan0_freq ) / channel_bw n = options.sample_rate / channel_bw s = options.sample_rate / bitrate / 2 c = '' for ch in range(0,len(self.channels)): c = c + '%i,'%((self.channels[ch] - ch0)%n) c=c[:-1] self.src = osmosdr.source(options.args) self.src.set_center_freq(self.ifreq) self.src.set_sample_rate(options.sample_rate) self.src.set_freq_corr(options.ppm, 0) fcl_args = ['./fcl', '-n', '%i'%n, '-s', '%i'%s, '-t', '2', '-c', '%s'%c, '-f', './fir.py %i 7900 2000 rcos'%options.sample_rate, '-o', '/dev/stdout'] sys.stderr.write(string.join(fcl_args)) self.fcl = subprocess.Popen(fcl_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE) self.fcl_in = blocks.file_descriptor_sink(gr.sizeof_gr_complex*1, self.fcl.stdin.fileno()) self.fcl_out = blocks.file_descriptor_source(gr.sizeof_gr_complex*1, self.fcl.stdout.fileno(), False) self.deinterleave = blocks.deinterleave(gr.sizeof_gr_complex*1, 1) self.connect((self.src, 0), (self.fcl_in, 0)) self.connect((self.fcl_out, 0), (self.deinterleave, 0)) if self.rfgain is None: self.src.set_gain_mode(True, 0) self.iagc = 1 self.rfgain = 0 else: self.iagc = 0 self.src.set_gain_mode(False) self.src.set_gain(-9.7) self.src.set_gain(self.rfgain) self.src.set_if_gain(37) # may differ from the requested rate sample_rate = int(self.src.get_sample_rate()) sys.stderr.write("sample rate: %d\n" % (sample_rate)) first_decim = int(options.sample_rate / bitrate / 2) sys.stderr.write("decim: %d\n" % (first_decim)) out_sample_rate=sample_rate/first_decim sys.stderr.write("output sample rate: %d\n" % (out_sample_rate)) sps=out_sample_rate/bitrate sys.stderr.write("samples per symbol: %d\n" % (sps)) self.tuners = [] self.afc_probes = [] if len(self.channels) != 1: if options.output_file: if options.output_file.find('%%') == -1: raise ValueError('Output name template missing "%%".') elif options.output_pipe: if options.output_pipe.find('%%') == -1: raise ValueError('Output name template missing "%%".') else: raise ValueError('WTF') for ch in range(0,len(self.channels)): bw = (9200 + options.afc_ppm_threshold)/2 taps = filter.firdes.low_pass(1.0,out_sample_rate, bw, bw*options.transition_width, filter.firdes.WIN_HANN) # offset = self.ch_freqs[ch] - self.ifreq offset = 0 sys.stderr.write("channel[%d]: %d frequency=%d, offset=%d Hz\n" % (ch, self.channels[ch], self.ch_freqs[ch], offset)) tuner = filter.freq_xlating_fir_filter_ccc(1, taps, offset, out_sample_rate) self.tuners.append(tuner) demod = digital.gmsk_demod(samples_per_symbol=sps) fname = self.channels[ch] if fname == -1: fname = self.ch_freqs[ch] if options.output_pipe is None: file = options.output_file.replace('%%', str(fname)) output = blocks.file_sink(gr.sizeof_char, file) else: cmd = options.output_pipe.replace('%%', str(fname)) pipe = subprocess.Popen(cmd, stdin=subprocess.PIPE, shell=True) fd = pipe.stdin.fileno() output = blocks.file_descriptor_sink(gr.sizeof_char, fd) self.connect((self.deinterleave, ch), (tuner, 0)) self.connect((tuner, 0), (demod, 0)) self.connect((demod, 0), (output, 0)) afc_decimation = 32000 afc_demod = analog.quadrature_demod_cf(sample_rate/first_decim/(2*math.pi*afc_decimation)) integrate = blocks.integrate_ff(afc_decimation) afc_probe = blocks.probe_signal_f() self.afc_probes.append(afc_probe) self.connect((tuner, 0), (afc_demod,0)) self.connect((afc_demod, 0), (integrate,0)) self.connect((integrate, 0), (afc_probe, 0)) def _variable_function_probe_0_probe(): while True: time.sleep(options.afc_period) for ch in range(0,len(self.channels)): err = self.afc_probes[ch].level() if abs(err) < options.afc_ppm_threshold: continue freq = self.tuners[ch].center_freq() + err * options.afc_gain self.tuners[ch].set_center_freq(freq) if self.channels[ch] == -1: sys.stderr.write("Freq %d freq err: %5.0f\tfreq: %f\n" % (self.ch_freqs[ch], err, freq)) else: sys.stderr.write("Chan %d freq err: %5.0f\tfreq: %f\n" % (self.channels[ch], err, freq)) sys.stderr.write("\n") _variable_function_probe_0_thread = threading.Thread(target=_variable_function_probe_0_probe) _variable_function_probe_0_thread.daemon = True _variable_function_probe_0_thread.start()
def __init__(self): gr.top_block.__init__(self) options = get_options() self.ifreq = options.frequency self.rfgain = options.gain self.src = osmosdr.source(options.args) self.src.set_center_freq(self.ifreq) self.src.set_sample_rate(int(options.sample_rate)) if self.rfgain is None: self.src.set_gain_mode(1) self.iagc = 1 self.rfgain = 0 else: self.iagc = 0 self.src.set_gain_mode(0) self.src.set_gain(self.rfgain) # may differ from the requested rate sample_rate = self.src.get_sample_rate() sys.stderr.write("sample rate: %d\n" % (sample_rate)) bitrate = 8000 first_decim = 125 out_sample_rate = sample_rate / first_decim sys.stderr.write("output sample rate: %d\n" % (out_sample_rate)) sps = out_sample_rate / bitrate sys.stderr.write("samples per symbol: %d\n" % (sps)) self.offset = options.offset sys.stderr.write("offset is: %dHz\n" % self.offset) taps = filter.firdes.low_pass(1.0, sample_rate, options.low_pass, options.low_pass * 0.2, filter.firdes.WIN_HANN) self.tuner = filter.freq_xlating_fir_filter_ccf( first_decim, taps, self.offset, sample_rate) self.demod = digital.gmsk_demod(samples_per_symbol=sps) self.output = blocks.file_sink(gr.sizeof_char, options.output_file) self.connect((self.src, 0), (self.tuner, 0)) self.connect((self.tuner, 0), (self.demod, 0)) self.connect((self.demod, 0), (self.output, 0)) self.fm_demod = analog.fm_demod_cf(sample_rate / first_decim, 1, 5000, 3000, 4000) self.integrate = blocks.integrate_ff(32000) self.probe = blocks.probe_signal_f() self.connect((self.tuner, 0), (self.fm_demod, 0)) self.connect((self.fm_demod, 0), (self.integrate, 0)) self.connect((self.integrate, 0), (self.probe, 0)) def _variable_function_probe_0_probe(): while True: freq = self.tuner.center_freq() freq2 = freq + 0.2 * self.probe.level() print "Autotune: fix=%f old=%i new=%i" % ( self.probe.level(), self.ifreq + freq, self.ifreq + freq2) self.tuner.set_center_freq(freq2) time.sleep(5.0) _variable_function_probe_0_thread = threading.Thread( target=_variable_function_probe_0_probe) _variable_function_probe_0_thread.daemon = True _variable_function_probe_0_thread.start()
def __init__(self): gr.top_block.__init__(self) options = get_options() bitrate = 8000 channel_bw = options.channel_bandwidth chan0_freq = 358400000 self.rfgain = options.gain self.channels = [ int(ch) for ch in options.channels.split(',') if ch ] self.ch_freqs = [ ch * channel_bw + chan0_freq for ch in self.channels ] self.ch_freqs.extend( [ int(f) for f in options.channels_by_freq.split(',') if f ]) while len(self.channels) < len(self.ch_freqs): self.channels.append(-1) if options.frequency is None: self.ifreq = (max(self.ch_freqs) + min(self.ch_freqs)) / 2 else: self.ifreq = options.frequency self.src = osmosdr.source(options.args) self.src.set_center_freq(self.ifreq) self.src.set_sample_rate(options.sample_rate) self.src.set_freq_corr(options.ppm, 0) if self.rfgain is None: self.src.set_gain_mode(True, 0) self.iagc = 1 self.rfgain = 0 else: self.iagc = 0 self.src.set_gain_mode(False) self.src.set_gain(self.rfgain) self.src.set_if_gain(37) # may differ from the requested rate sample_rate = int(self.src.get_sample_rate()) sys.stderr.write("sample rate: %d\n" % (sample_rate)) first_decim = int(options.sample_rate / bitrate / 2) sys.stderr.write("decim: %d\n" % (first_decim)) out_sample_rate=sample_rate/first_decim sys.stderr.write("output sample rate: %d\n" % (out_sample_rate)) sps=out_sample_rate/bitrate sys.stderr.write("samples per symbol: %d\n" % (sps)) self.tuners = [] self.afc_probes = [] if len(self.channels) != 1: if options.output_file: if options.output_file.find('%%') == -1: raise ValueError('Output name template missing "%%".') elif options.output_pipe: if options.output_pipe.find('%%') == -1: raise ValueError('Output name template missing "%%".') else: raise ValueError('WTF') for ch in range(0,len(self.channels)): bw = (9200 + options.afc_ppm_threshold)/2 taps = filter.firdes.low_pass(1.0, sample_rate, bw, bw*options.transition_width, filter.firdes.WIN_HANN) offset = self.ch_freqs[ch] - self.ifreq sys.stderr.write("channel[%d]: %d frequency=%d, offset=%d Hz\n" % (ch, self.channels[ch], self.ch_freqs[ch], offset)) tuner = filter.freq_xlating_fir_filter_ccc(first_decim, taps, offset, sample_rate) self.tuners.append(tuner) demod = digital.gmsk_demod(samples_per_symbol=sps) fname = self.channels[ch] if fname == -1: fname = self.ch_freqs[ch] if options.output_pipe is None: file = options.output_file.replace('%%', str(fname)) output = blocks.file_sink(gr.sizeof_char, file) else: cmd = options.output_pipe.replace('%%', str(fname)) pipe = subprocess.Popen(cmd, stdin=subprocess.PIPE, shell=True) fd = pipe.stdin.fileno() output = blocks.file_descriptor_sink(gr.sizeof_char, fd) self.connect((self.src, 0), (tuner, 0)) self.connect((tuner, 0), (demod, 0)) self.connect((demod, 0), (output, 0)) afc_decimation = 32000 afc_demod = analog.quadrature_demod_cf(sample_rate/first_decim/(2*math.pi*afc_decimation)) integrate = blocks.integrate_ff(afc_decimation) afc_probe = blocks.probe_signal_f() self.afc_probes.append(afc_probe) self.connect((tuner, 0), (afc_demod,0)) self.connect((afc_demod, 0), (integrate,0)) self.connect((integrate, 0), (afc_probe, 0)) def _variable_function_probe_0_probe(): while True: time.sleep(options.afc_period) for ch in range(0,len(self.channels)): err = self.afc_probes[ch].level() if abs(err) < options.afc_ppm_threshold: continue freq = self.tuners[ch].center_freq() + err * options.afc_gain self.tuners[ch].set_center_freq(freq) if self.channels[ch] == -1: sys.stderr.write("Freq %d freq err: %5.0f\tfreq: %f\n" % (self.ch_freqs[ch], err, freq)) else: sys.stderr.write("Chan %d freq err: %5.0f\tfreq: %f\n" % (self.channels[ch], err, freq)) sys.stderr.write("\n") _variable_function_probe_0_thread = threading.Thread(target=_variable_function_probe_0_probe) _variable_function_probe_0_thread.daemon = True _variable_function_probe_0_thread.start()
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Frame / sync / deframer chain") _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 = 500e3 ################################################## # Blocks ################################################## 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.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=32, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=32, gain_mu=0.175, mu=0.5, omega_relative_limit=0.01, freq_error=0.0, verbose=False, log=False, ) self.channels_channel_model_0 = channels.channel_model( noise_voltage=0.001, frequency_offset=0.0, epsilon=1.000001, taps=(1.0 + 1.0j, ), noise_seed=0, block_tags=False) self.blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb( 1, gr.GR_MSB_FIRST) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char * 1, samp_rate, True) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((20, )) self.Spread_sync_0 = Spread.sync() self.Spread_rx_sync_0 = Spread.rx_sync(12) self.Spread_msg_source_0 = Spread.msg_source(500, 255) self.Spread_framer_0 = Spread.framer(0) self.Spread_deframer_0 = Spread.deframer(0) ################################################## # Connections ################################################## self.msg_connect((self.Spread_framer_0, 'out'), (self.Spread_sync_0, 'in')) self.msg_connect((self.Spread_msg_source_0, 'out'), (self.Spread_framer_0, 'in')) self.msg_connect((self.Spread_rx_sync_0, 'out'), (self.Spread_deframer_0, 'in')) self.connect((self.Spread_sync_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_unpacked_to_packed_xx_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.Spread_rx_sync_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.channels_channel_model_0, 0))
def __init__(self, lead_limit=0.001, tx_gain=0, samp_per_sym=4, link_speed=200, pre_guard=0.003, rate=1e6, hop_interval=0.02, rx_gain=15, ampl=0.7, freq=425e6, args="", freq_list="4251e5,4261e5,4271e5", post_guard=0.001, dev_addr=1): gr.hier_block2.__init__( self, "FHAH TRANSCEIVER", gr.io_signature(1, 1, gr.sizeof_char * 1), gr.io_signature(1, 1, gr.sizeof_char * 1), ) ################################################## # Parameters ################################################## self.lead_limit = lead_limit self.tx_gain = tx_gain self.samp_per_sym = samp_per_sym self.link_speed = link_speed self.pre_guard = pre_guard self.rate = rate self.hop_interval = hop_interval self.rx_gain = rx_gain self.ampl = ampl self.freq = freq self.args = args self.freq_list = freq_list self.post_guard = post_guard self.dev_addr = dev_addr ################################################## # Variables ################################################## self.samp_rate_0 = samp_rate_0 = rate self.samp_rate = samp_rate = rate ################################################## # Blocks ################################################## self.uhd_source = uhd.usrp_source( device_addr=args, stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_source.set_clock_source("mimo", 0) self.uhd_source.set_time_source("mimo", 0) self.uhd_source.set_samp_rate(samp_rate) #self.uhd_source.set_auto_dc_offset(False) self.uhd_source.set_center_freq(freq, 0) self.uhd_source.set_gain(rx_gain, 0) self.uhd_source.set_antenna("RX2", 0) self.uhd_sink = uhd.usrp_sink( device_addr=args, stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_sink.set_clock_source("mimo", 0) self.uhd_sink.set_time_source("mimo", 0) self.uhd_sink.set_samp_rate(samp_rate) self.uhd_sink.set_center_freq(freq, 0) self.uhd_sink.set_gain(tx_gain, 0) self.uhd_sink.set_antenna("TX/RX", 0) self.precog_packet_framer_0 = fhah.packet_framer( samples_per_symbol=samp_per_sym, bits_per_symbol=1, access_code="", ) self.precog_packet_deframer_0 = fhah.packet_deframer( access_code="", threshold=2, ) self.gr_multiply_const_vxx_0 = gr.multiply_const_vcc((ampl, )) self.gmsk_mod = digital.gmsk_mod( samples_per_symbol=samp_per_sym, bt=0.35, verbose=False, log=False, ) self.gmsk_demod = digital.gmsk_demod( samples_per_symbol=samp_per_sym, gain_mu=0, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.fhah_fhah_engine_tx_0 = fhah.fhah_engine_tx( hop_interval, pre_guard, post_guard, dev_addr, samp_rate / samp_per_sym, freq_list) self.extras_pmt_rpc_0 = gr_extras.pmt_rpc(obj=self, result_msg=True) self.burst_gate_0 = fhah.burst_gate() ################################################## # Connections ################################################## self.connect((self.uhd_source, 0), (self.gmsk_demod, 0)) self.connect((self.uhd_source, 0), (self.fhah_fhah_engine_tx_0, 0)) self.connect((self, 0), (self.fhah_fhah_engine_tx_0, 1)) self.connect((self.burst_gate_0, 0), (self.uhd_sink, 0)) self.connect((self.gmsk_mod, 0), (self.gr_multiply_const_vxx_0, 0)) self.connect((self.fhah_fhah_engine_tx_0, 0), (self.precog_packet_framer_0, 0)) self.connect((self.fhah_fhah_engine_tx_0, 1), (self.extras_pmt_rpc_0, 0)) self.connect((self.precog_packet_framer_0, 0), (self.gmsk_mod, 0)) self.connect((self.gr_multiply_const_vxx_0, 0), (self.burst_gate_0, 0)) self.connect((self.precog_packet_deframer_0, 0), (self.fhah_fhah_engine_tx_0, 2)) self.connect((self.fhah_fhah_engine_tx_0, 2), (self, 0)) self.connect((self.gmsk_demod, 0), (self.precog_packet_deframer_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Test") _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 = 800000 ################################################## # Blocks ################################################## self.uhd_usrp_source_1 = uhd.usrp_source( ",".join(('serial=319B8D3', 'serial=319B8D3')), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_1.set_samp_rate(samp_rate) self.uhd_usrp_source_1.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_source_1.set_center_freq(2500000000, 0) self.uhd_usrp_source_1.set_gain(50, 0) self.uhd_usrp_source_1.set_antenna('RX2', 0) self.uhd_usrp_source_1.set_auto_dc_offset(True, 0) self.uhd_usrp_source_1.set_auto_iq_balance(True, 0) self.low_pass_filter_0 = filter.fir_filter_ccf( 1, firdes.low_pass(1, samp_rate, 200000, 50000, firdes.WIN_HAMMING, 6.76)) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_char * 1, '/home/spring2021/Desktop/Gnu radio code/backup2/File_recevie_send/Txt_rec.txt', False) self.blocks_file_sink_0.set_unbuffered(True) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.uhd_usrp_source_1, 0), (self.low_pass_filter_0, 0))
def __init__(self): gr.top_block.__init__(self, "Bluetooth LE Receiver") ################################################## # Variables ################################################## self.transition_width = transition_width = 300e3 self.sample_rate = sample_rate = 5e6 self.data_rate = data_rate = 1e6 self.duration_seconds = duration_seconds = 10 self.cutoff_freq = cutoff_freq = 850e3 self.ble_channel_spacing = ble_channel_spacing = 2e6 self.ble_channel = ble_channel = 12 self.ble_base_freq = ble_base_freq = 2402e6 self.squelch_threshold = squelch_threshold = -70 self.rf_gain = rf_gain = 30 self.num_samples = num_samples = duration_seconds*sample_rate self.lowpass_filter = lowpass_filter = firdes.low_pass(1, sample_rate, cutoff_freq, transition_width, firdes.WIN_HAMMING, 6.76) self.iq_output = iq_output = "/dev/null" self.gmsk_sps = gmsk_sps = int(sample_rate / data_rate) self.gmsk_omega_limit = gmsk_omega_limit = 0.035 self.gmsk_mu = gmsk_mu = 0.5 self.gmsk_gain_mu = gmsk_gain_mu = 0.7 self.freq_offset = freq_offset = 1e6 self.freq = freq = ble_base_freq+(ble_channel_spacing * ble_channel) ################################################## # Message Queues ################################################## self.message_queue = message_queue = gr.msg_queue(2) ################################################## # Blocks ################################################## self.unpacked_to_packed = blocks.unpacked_to_packed_bb(1, gr.GR_LSB_FIRST) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(sample_rate) self.uhd_usrp_source_0.set_center_freq(freq+freq_offset, 0) self.uhd_usrp_source_0.set_gain(rf_gain, 0) self.uhd_usrp_source_0.set_antenna('J2', 0) self.message_sink = blocks.message_sink(gr.sizeof_char*1, self.message_queue, True) self.freq_xlating_fir_filter_lp = filter.freq_xlating_fir_filter_ccc(1, (lowpass_filter), -freq_offset, sample_rate) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=gmsk_sps, gain_mu=gmsk_gain_mu, mu=gmsk_mu, omega_relative_limit=gmsk_omega_limit, freq_error=0.0, verbose=False, log=False, ) self.blocks_head_0 = blocks.head(gr.sizeof_gr_complex*1, int(num_samples)) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, iq_output, False) self.blocks_file_sink_0.set_unbuffered(False) self.analog_simple_squelch = analog.simple_squelch_cc(squelch_threshold, 0.1) ################################################## # Connections ################################################## self.connect((self.analog_simple_squelch, 0), (self.freq_xlating_fir_filter_lp, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.unpacked_to_packed, 0)) self.connect((self.freq_xlating_fir_filter_lp, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blocks_head_0, 0), (self.analog_simple_squelch, 0)) self.connect((self.blocks_head_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blocks_head_0, 0)) self.connect((self.unpacked_to_packed, 0), (self.message_sink, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Top Block") _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 = 100000 ################################################## # Blocks ################################################## self.wxgui_fftsink2_0_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=2048, fft_rate=15, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.Add(self.wxgui_fftsink2_0_0.win) self.uhd_usrp_source_0 = uhd.usrp_source( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(2.4e9, 0) self.uhd_usrp_source_0.set_gain(10, 0) self.gr_pll_carriertracking_cc_0 = gr.pll_carriertracking_cc(3.1459/2000, 2, 0) self.gr_file_sink_0_0 = gr.file_sink(gr.sizeof_char*1, "/home/sdruser/Desktop/raw2.txt") self.gr_file_sink_0_0.set_unbuffered(False) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=True, log=False, ) #Callback global rc_num, c_num rc_num=0 c_num=0 def rx_callback(ok,payload): global rc_num,c_num print "Called" print c_num try: (pktno,) = struct.unpack('!H', payload[0:2]) except: print "Oops" rc_num+=1 if ok: c_num+=1 print payload self.rx_callback=rx_callback #instaniate self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.rx_callback(ok, payload), ), ) ################################################## # Working Threads ################################################## def _probe_probe(): offset=0 offset_max=50000 old_c_num=0 while True: time.sleep(4.0/(1)) #print "Power: "+str(self.pll.get_phase()) #print "Power: "+str(self.avg_mag.level()) #print "CC1: "+str(self.gr_pll_carriertracking_cc_0.get_frequency()/(2*math.pi)) #print "CC2: "+str(self.cartrack_2.get_frequency()/(2*math.pi)) #print "Lock: "+str(self.cartrack.lock_detector()) #try: self.set_probe(val) #except AttributeError, e: pass #print c_num if old_c_num==c_num: #Changing offset print "Adjusting Offset" offset=offset+400 self.uhd_usrp_source_0.set_center_freq(2.4e9-offset, 0) if offset>=offset_max: print "Reset Offset" offset=-1*offset_max old_c_num=c_num _probe_thread = threading.Thread(target=_probe_probe) _probe_thread.daemon = True _probe_thread.start() ################################################## # Connections ################################################## #self.connect((self.gr_pll_carriertracking_cc_0, 0), (self.wxgui_fftsink2_0_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.gr_pll_carriertracking_cc_0, 0)) self.connect((self.gr_pll_carriertracking_cc_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.gr_file_sink_0_0, 0))
def __init__(self): gr.top_block.__init__(self, "SAME Decoder test") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 8000 ################################################## # Blocks ################################################## self.rational_resampler_44k = filter.rational_resampler_fff( interpolation=80, decimation=441, ) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=100, decimation=96, taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_fcc( 1, (firdes.low_pass(1, samp_rate, 600, 100)), 1822.916667, samp_rate) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=16, gain_mu=0.175, mu=0.5, omega_relative_limit=0.1, freq_error=0.0, verbose=True, log=False, ) #self.src = audio.source(samp_rate, "plughw:CARD=PCH,DEV=2", True) self.blocks_wavfile_source_0 = blocks.wavfile_source( "eas-test-11-7-2013.wav", False) self.blocks_bitstream_sink = blocks.file_sink(1, "bitstream.bin") self.xlat_sink = blocks.wavfile_sink("xlat.wav", 1, 8333) self.xlat_complex_to_float = blocks.complex_to_float() self.analog_pwr_squelch_xx_0 = analog.pwr_squelch_ff(-50, 0.0001, 0) self.msg_queue = gr.msg_queue(10) self.same_dec_0 = same.same_dec(self.msg_queue) ################################################## # Connections ################################################## self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.xlat_complex_to_float, 0), (self.xlat_sink, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.same_dec_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blocks_bitstream_sink, 0)) #self.connect((self.src, 0), (self.rational_resampler_44k, 0)) #self.connect((self.rational_resampler_44k, 0), (self.analog_pwr_squelch_xx_0, 0)) self.connect((self.blocks_wavfile_source_0, 0), (self.analog_pwr_squelch_xx_0, 0)) self.connect((self.analog_pwr_squelch_xx_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) self._watcher = _queue_watcher_thread(self.msg_queue)
def __init__(self): gr.top_block.__init__(self) options = get_options() self.ifreq = options.frequency self.rfgain = options.gain self.src = osmosdr.source(options.args) self.src.set_center_freq(self.ifreq) self.src.set_sample_rate(int(options.sample_rate)) if self.rfgain is None: self.src.set_gain_mode(1) self.iagc = 1 self.rfgain = 0 else: self.iagc = 0 self.src.set_gain_mode(0) self.src.set_gain(self.rfgain) # may differ from the requested rate sample_rate = self.src.get_sample_rate() sys.stderr.write("sample rate: %d\n" % (sample_rate)) bitrate = 8000 first_decim=125 out_sample_rate=sample_rate/first_decim sys.stderr.write("output sample rate: %d\n" % (out_sample_rate)) sps=out_sample_rate/bitrate sys.stderr.write("samples per symbol: %d\n" % (sps)) self.offset = options.offset sys.stderr.write("offset is: %dHz\n" % self.offset) taps = filter.firdes.low_pass(1.0, sample_rate, options.low_pass, options.low_pass * 0.2, filter.firdes.WIN_HANN) self.tuner = filter.freq_xlating_fir_filter_ccf(first_decim, taps, self.offset, sample_rate) self.demod = digital.gmsk_demod(samples_per_symbol=sps) self.output = blocks.file_sink(gr.sizeof_char, options.output_file) self.connect((self.src, 0), (self.tuner, 0)) self.connect((self.tuner, 0), (self.demod, 0)) self.connect((self.demod, 0), (self.output, 0)) self.fm_demod = analog.fm_demod_cf(sample_rate/first_decim, 1, 5000, 3000, 4000) self.integrate = blocks.integrate_ff(32000) self.probe = blocks.probe_signal_f() self.connect((self.tuner, 0), (self.fm_demod,0)) self.connect((self.fm_demod, 0), (self.integrate,0)) self.connect((self.integrate, 0), (self.probe, 0)) def _variable_function_probe_0_probe(): while True: freq = self.tuner.center_freq() freq2 = freq + 0.2*self.probe.level() print "Autotune: fix=%f old=%i new=%i"%(self.probe.level(), self.ifreq+freq, self.ifreq+freq2) self.tuner.set_center_freq(freq2) time.sleep(5.0) _variable_function_probe_0_thread = threading.Thread(target=_variable_function_probe_0_probe) _variable_function_probe_0_thread.daemon = True _variable_function_probe_0_thread.start()
def __init__(self, rx_gain=15, rate=1e6, samp_per_sym=4, args="", freq=915e6, ampl=0.7, tx_gain=15, number_of_slots=10, lead_limit=0.025, initial_slot=15, link_speed=15, slot_interval=0.010, guard_interval=15): gr.hier_block2.__init__( self, "TDMA_HIER", gr.io_signaturev(2, 2, [gr.sizeof_char*1, gr.sizeof_char*1]), gr.io_signaturev(2, 2, [gr.sizeof_char*1, gr.sizeof_char*1]), ) ################################################## # Parameters ################################################## self.rx_gain = rx_gain self.rate = rate self.samp_per_sym = samp_per_sym self.args = args self.freq = freq self.ampl = ampl self.tx_gain = tx_gain self.number_of_slots = number_of_slots self.lead_limit = lead_limit self.initial_slot = initial_slot self.link_speed = link_speed self.slot_interval = slot_interval self.guard_interval = guard_interval ################################################## # Variables ################################################## self.samp_rate = samp_rate = rate ################################################## # Blocks ################################################## self.usrp_source = uhd.usrp_source( device_addr=args, stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.usrp_source.set_time_source("external", 0) self.usrp_source.set_time_unknown_pps(uhd.time_spec()) self.usrp_source.set_samp_rate(samp_rate) self.usrp_source.set_center_freq(freq, 0) self.usrp_source.set_gain(rx_gain, 0) self.usrp_source.set_antenna("TX/RX", 0) self.usrp_sink = uhd.usrp_sink( device_addr=args, stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.usrp_sink.set_time_source("external", 0) self.usrp_sink.set_time_unknown_pps(uhd.time_spec()) self.usrp_sink.set_samp_rate(samp_rate) self.usrp_sink.set_center_freq(freq, 0) self.usrp_sink.set_gain(tx_gain, 0) self.usrp_sink.set_antenna("TX/RX", 0) self.tdma_engine = precog.tdma_engine(initial_slot,slot_interval,guard_interval,number_of_slots,lead_limit,link_speed) self.gr_multiply_const_vxx_0 = gr.multiply_const_vcc((ampl, )) self.gmsk_mod = digital.gmsk_mod( samples_per_symbol=samp_per_sym, bt=0.35, verbose=False, log=False, ) self.gmsk_demod = digital.gmsk_demod( samples_per_symbol=samp_per_sym, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.extras_pmt_rpc_0 = gr_extras.pmt_rpc(obj=self, result_msg=False) self.extras_packet_framer_0 = gr_extras.packet_framer( samples_per_symbol=1, bits_per_symbol=1, access_code="", ) self.extras_packet_deframer_0 = gr_extras.packet_deframer( access_code="", threshold=-1, ) self.burst_gate_0 = precog.burst_gate() ################################################## # Connections ################################################## self.connect((self.usrp_source, 0), (self.tdma_engine, 0)) self.connect((self.tdma_engine, 0), (self.extras_packet_framer_0, 0)) self.connect((self.usrp_source, 0), (self.gmsk_demod, 0)) self.connect((self.gmsk_demod, 0), (self.extras_packet_deframer_0, 0)) self.connect((self.extras_packet_framer_0, 0), (self.gmsk_mod, 0)) self.connect((self, 1), (self.tdma_engine, 1)) self.connect((self, 0), (self.tdma_engine, 3)) self.connect((self.extras_packet_deframer_0, 0), (self, 1)) self.connect((self.gmsk_mod, 0), (self.gr_multiply_const_vxx_0, 0)) self.connect((self.gr_multiply_const_vxx_0, 0), (self.burst_gate_0, 0)) self.connect((self.burst_gate_0, 0), (self.usrp_sink, 0)) self.connect((self.extras_packet_deframer_0, 0), (self.tdma_engine, 2)) self.connect((self, 0), (self.extras_pmt_rpc_0, 0)) self.connect((self.tdma_engine, 1), (self, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Receiver") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1000000 ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(1000000, 0) self.uhd_usrp_source_0.set_gain(0, 0) self.low_pass_filter_0 = filter.interp_fir_filter_ccf(1, firdes.low_pass( 32, samp_rate, 0.45*samp_rate, 10000, firdes.WIN_HAMMING, 6.76)) self.digital_packet_headerparser_b_0 = digital.packet_headerparser_b(digital.packet_header_default(40,"packet_len")) self.digital_header_payload_demux_0 = digital.header_payload_demux( 40, 1, 0, "packet_len", '', True, gr.sizeof_gr_complex, "rx_time", samp_rate, (""), 0, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_crc32_bb_0_0 = digital.crc32_bb(True, "packet_len", True) self.digital_constellation_decoder_cb_0_0 = digital.constellation_decoder_cb(digital.constellation_bpsk().base()) self.digital_constellation_decoder_cb_0 = digital.constellation_decoder_cb(digital.constellation_bpsk().base()) self.blocks_tuntap_pdu_1 = blocks.tuntap_pdu('tun1', 10000, False) self.blocks_tagged_stream_to_pdu_0 = blocks.tagged_stream_to_pdu(blocks.byte_t, 'packet_len') self.blocks_tag_debug_0 = blocks.tag_debug(gr.sizeof_char*1, 'test', ""); self.blocks_tag_debug_0.set_display(False) self.blocks_repack_bits_bb_0_0 = blocks.repack_bits_bb(1, 8, "packet_len", True, gr.GR_LSB_FIRST) self.blocks_float_to_char_0 = blocks.float_to_char(1, 1) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_c(grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) self.analog_const_source_x_0 = analog.sig_source_f(0, analog.GR_CONST_WAVE, 0, 0, 1) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tagged_stream_to_pdu_0, 'pdus'), (self.blocks_tuntap_pdu_1, 'pdus')) self.msg_connect((self.digital_packet_headerparser_b_0, 'header_data'), (self.digital_header_payload_demux_0, 'header_data')) self.connect((self.analog_const_source_x_0, 0), (self.blocks_float_to_char_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.digital_header_payload_demux_0, 0)) self.connect((self.blocks_float_to_char_0, 0), (self.digital_header_payload_demux_0, 1)) self.connect((self.blocks_repack_bits_bb_0_0, 0), (self.digital_crc32_bb_0_0, 0)) self.connect((self.digital_constellation_decoder_cb_0, 0), (self.digital_packet_headerparser_b_0, 0)) self.connect((self.digital_constellation_decoder_cb_0_0, 0), (self.blocks_repack_bits_bb_0_0, 0)) self.connect((self.digital_crc32_bb_0_0, 0), (self.blocks_tag_debug_0, 0)) self.connect((self.digital_crc32_bb_0_0, 0), (self.blocks_tagged_stream_to_pdu_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_header_payload_demux_0, 0), (self.digital_constellation_decoder_cb_0, 0)) self.connect((self.digital_header_payload_demux_0, 1), (self.digital_constellation_decoder_cb_0_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.low_pass_filter_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Udp Rx Tx Real") _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_0 = samp_rate_0 = 2e6 self.samp_rate = samp_rate = 2E6 self.RFGain_rx = RFGain_rx = 10 self.IFGain_tx = IFGain_tx = 30 self.IFGain_rx = IFGain_rx = 30 self.CenterFreq_tx = CenterFreq_tx = 500e6 self.CenterFreq_rx = CenterFreq_rx = 500e6 self.BBGain_tx = BBGain_tx = 30 self.BBGain_rx = BBGain_rx = 30 ################################################## # Blocks ################################################## _RFGain_rx_sizer = wx.BoxSizer(wx.VERTICAL) self._RFGain_rx_text_box = forms.text_box( parent=self.GetWin(), sizer=_RFGain_rx_sizer, value=self.RFGain_rx, callback=self.set_RFGain_rx, label='RFGain_rx', converter=forms.float_converter(), proportion=0, ) self._RFGain_rx_slider = forms.slider( parent=self.GetWin(), sizer=_RFGain_rx_sizer, value=self.RFGain_rx, callback=self.set_RFGain_rx, minimum=1, maximum=40, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_RFGain_rx_sizer) _IFGain_tx_sizer = wx.BoxSizer(wx.VERTICAL) self._IFGain_tx_text_box = forms.text_box( parent=self.GetWin(), sizer=_IFGain_tx_sizer, value=self.IFGain_tx, callback=self.set_IFGain_tx, label='IFGain_tx', converter=forms.float_converter(), proportion=0, ) self._IFGain_tx_slider = forms.slider( parent=self.GetWin(), sizer=_IFGain_tx_sizer, value=self.IFGain_tx, callback=self.set_IFGain_tx, minimum=1, maximum=40, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_IFGain_tx_sizer) _IFGain_rx_sizer = wx.BoxSizer(wx.VERTICAL) self._IFGain_rx_text_box = forms.text_box( parent=self.GetWin(), sizer=_IFGain_rx_sizer, value=self.IFGain_rx, callback=self.set_IFGain_rx, label='IFGain_rx', converter=forms.float_converter(), proportion=0, ) self._IFGain_rx_slider = forms.slider( parent=self.GetWin(), sizer=_IFGain_rx_sizer, value=self.IFGain_rx, callback=self.set_IFGain_rx, minimum=1, maximum=40, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_IFGain_rx_sizer) _CenterFreq_tx_sizer = wx.BoxSizer(wx.VERTICAL) self._CenterFreq_tx_text_box = forms.text_box( parent=self.GetWin(), sizer=_CenterFreq_tx_sizer, value=self.CenterFreq_tx, callback=self.set_CenterFreq_tx, label='CenterFreq_tx', converter=forms.float_converter(), proportion=0, ) self._CenterFreq_tx_slider = forms.slider( parent=self.GetWin(), sizer=_CenterFreq_tx_sizer, value=self.CenterFreq_tx, callback=self.set_CenterFreq_tx, minimum=450e6, maximum=600e6, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_CenterFreq_tx_sizer) _CenterFreq_rx_sizer = wx.BoxSizer(wx.VERTICAL) self._CenterFreq_rx_text_box = forms.text_box( parent=self.GetWin(), sizer=_CenterFreq_rx_sizer, value=self.CenterFreq_rx, callback=self.set_CenterFreq_rx, label='CenterFreq_rx', converter=forms.float_converter(), proportion=0, ) self._CenterFreq_rx_slider = forms.slider( parent=self.GetWin(), sizer=_CenterFreq_rx_sizer, value=self.CenterFreq_rx, callback=self.set_CenterFreq_rx, minimum=450e6, maximum=600e6, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_CenterFreq_rx_sizer) _BBGain_tx_sizer = wx.BoxSizer(wx.VERTICAL) self._BBGain_tx_text_box = forms.text_box( parent=self.GetWin(), sizer=_BBGain_tx_sizer, value=self.BBGain_tx, callback=self.set_BBGain_tx, label='BBGain_tx', converter=forms.float_converter(), proportion=0, ) self._BBGain_tx_slider = forms.slider( parent=self.GetWin(), sizer=_BBGain_tx_sizer, value=self.BBGain_tx, callback=self.set_BBGain_tx, minimum=1, maximum=40, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_BBGain_tx_sizer) _BBGain_rx_sizer = wx.BoxSizer(wx.VERTICAL) self._BBGain_rx_text_box = forms.text_box( parent=self.GetWin(), sizer=_BBGain_rx_sizer, value=self.BBGain_rx, callback=self.set_BBGain_rx, label='BBGain_rx', converter=forms.float_converter(), proportion=0, ) self._BBGain_rx_slider = forms.slider( parent=self.GetWin(), sizer=_BBGain_rx_sizer, value=self.BBGain_rx, callback=self.set_BBGain_rx, minimum=1, maximum=40, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_BBGain_rx_sizer) self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_c( self.GetWin(), title='Scope Plot', sample_rate=samp_rate, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=False, num_inputs=1, trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label='Counts', ) self.Add(self.wxgui_scopesink2_0_0.win) self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( self.GetWin(), title='Scope Plot', sample_rate=samp_rate, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=False, num_inputs=1, trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label='Counts', ) self.Add(self.wxgui_scopesink2_0.win) self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + 'hackrf=2a8068cd') self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(CenterFreq_rx, 0) self.osmosdr_source_0.set_freq_corr(0, 0) self.osmosdr_source_0.set_dc_offset_mode(0, 0) self.osmosdr_source_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0.set_gain_mode(False, 0) self.osmosdr_source_0.set_gain(RFGain_rx, 0) self.osmosdr_source_0.set_if_gain(IFGain_rx, 0) self.osmosdr_source_0.set_bb_gain(BBGain_rx, 0) self.osmosdr_source_0.set_antenna('', 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + 'hackrf=21650cc3') self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(CenterFreq_tx, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(IFGain_tx, 0) self.osmosdr_sink_0.set_bb_gain(BBGain_tx, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=2, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_char * 1, '192.168.1.10', 10000, 1472, True) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((1, )) self.blocks_file_source_0 = blocks.file_source( gr.sizeof_char * 1, '/home/steve-wang/test.txt', True) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_b( grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=2, preamble='', access_code='', pad_for_usrp=False, ), payload_length=30, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.wxgui_scopesink2_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.wxgui_scopesink2_0_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Udp Tx Rx Sim") _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 = 2e6 ################################################## # Blocks ################################################## self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=2, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.channels_channel_model_0 = channels.channel_model( noise_voltage=0.0, frequency_offset=0.0, epsilon=1.0, taps=(1.0, ), noise_seed=0, block_tags=False) self.blocks_udp_source_0 = blocks.udp_source(gr.sizeof_char * 1, '192.168.1.10', 11000, 1472, True) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_char * 1, '192.168.1.10', 12000, 1472, True) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1, samp_rate, True) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((1, )) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char * 1, '/home/steve-wang/rx.txt', False) self.blocks_file_sink_0.set_unbuffered(True) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_b( grc_blks2.packet_encoder( samples_per_symbol=1, bits_per_symbol=1, preamble='', access_code='', pad_for_usrp=False, ), payload_length=1024, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.channels_channel_model_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_udp_source_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_throttle_0, 0))
def __init__(self): gr.top_block.__init__(self, "Perseus Spectrum Sensing") Qt.QWidget.__init__(self) self.setWindowTitle("Perseus Spectrum Sensing") 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", "perseus_s_sensing") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.variable_funcion = variable_funcion = 2.5e6 self.show_test_statistics = show_test_statistics = False self.samp_rate = samp_rate = 20e6 self.packet_size = packet_size = 8192 self.oversampling = oversampling = 4 self.nfft = nfft = 2**15 self.funcion_prove_showts_edge = funcion_prove_showts_edge = 0 self.freq_offset = freq_offset = variable_funcion self.decimation = decimation = 40 self.cosenito = cosenito = 20e3 self.amplitude = amplitude = 0.125 self.RF_freq = RF_freq = 943e6 self.PSD_averaging = PSD_averaging = 2000 self.ENABLE_TX1_variable_check_box = ENABLE_TX1_variable_check_box = True ################################################## # Blocks ################################################## _show_test_statistics_check_box = Qt.QCheckBox("Show Test Statistics (ReL and Rs)") self._show_test_statistics_choices = {True: True, False: False} self._show_test_statistics_choices_inv = dict((v,k) for k,v in self._show_test_statistics_choices.iteritems()) self._show_test_statistics_callback = lambda i: Qt.QMetaObject.invokeMethod(_show_test_statistics_check_box, "setChecked", Qt.Q_ARG("bool", self._show_test_statistics_choices_inv[i])) self._show_test_statistics_callback(self.show_test_statistics) _show_test_statistics_check_box.stateChanged.connect(lambda i: self.set_show_test_statistics(self._show_test_statistics_choices[bool(i)])) self.top_layout.addWidget(_show_test_statistics_check_box) self.probe = blocks.probe_signal_f() def _variable_funcion_probe(): while True: val = self.probe.level() try: self.set_variable_funcion(val) except AttributeError: pass time.sleep(1.0 / (0.01)) _variable_funcion_thread = threading.Thread(target=_variable_funcion_probe) _variable_funcion_thread.daemon = True _variable_funcion_thread.start() self.spectsensing_ss_edge_plot_0 = spectsensing.ss_edge_plot(show_test_statistics, " " ) self._spectsensing_ss_edge_plot_0_win = self.spectsensing_ss_edge_plot_0; self.top_layout.addWidget(self._spectsensing_ss_edge_plot_0_win) self.spectsensing_xs_plot_1 = spectsensing.xs_plot("") self._spectsensing_xs_plot_1_win = self.spectsensing_xs_plot_1; self.top_layout.addWidget(self._spectsensing_xs_plot_1_win) self.spectsensing_subband_selector_0 = spectsensing.subband_selector(40, "Selection", 2.5e6 , samp_rate) self.spectsensing_ss_pds_plot_0 = spectsensing.ss_pds_plot(nfft, samp_rate, 1024 ) self.spectsensing_compute_statistics_0 = spectsensing.compute_statistics(nfft, samp_rate, 0.0065, 1e-9, 1e-9, 40, 54) self.qtgui_time_sink_x_0_0 = qtgui.time_sink_f( 1024, #size 8E3, #samp_rate "", #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, 1) 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(False) self.qtgui_time_sink_x_0_0.enable_control_panel(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_layout.addWidget(self._qtgui_time_sink_x_0_0_win) self.qtgui_time_sink_x_0 = qtgui.time_sink_c( 2**15, #size samp_rate, #samp_rate "", #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_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_control_panel(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(2*1): if len(labels[i]) == 0: if(i % 2 == 0): self.qtgui_time_sink_x_0.set_line_label(i, "Re{{Data {0}}}".format(i/2)) else: self.qtgui_time_sink_x_0.set_line_label(i, "Im{{Data {0}}}".format(i/2)) 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.nutaq_rtdex_source_S_S_0 = nutaq.rtdex_source("nutaq_carrier_perseus_TX",gr.sizeof_short,1,0) self.nutaq_rtdex_source_S_S_0.set_type(0) self.nutaq_rtdex_source_S_S_0.set_packet_size(1300) self.nutaq_rtdex_source_S_S_0.set_channels("0") self.nutaq_rtdex_source_S_S = nutaq.rtdex_source("nutaq_carrier_perseus_TX",gr.sizeof_short,1,3) self.nutaq_rtdex_source_S_S.set_type(0) self.nutaq_rtdex_source_S_S.set_packet_size(1200) self.nutaq_rtdex_source_S_S.set_channels("3") self.nutaq_rtdex_source_0_0_0 = nutaq.rtdex_source("nutaq_carrier_perseus_TX",gr.sizeof_short,1,7) self.nutaq_rtdex_source_0_0_0.set_type(0) self.nutaq_rtdex_source_0_0_0.set_packet_size(packet_size) self.nutaq_rtdex_source_0_0_0.set_channels("2") (self.nutaq_rtdex_source_0_0_0).set_min_output_buffer(16384) self.nutaq_rtdex_sink_0 = nutaq.rtdex_sink("nutaq_carrier_perseus_TX",gr.sizeof_short,1,7) self.nutaq_rtdex_sink_0.set_type(0) self.nutaq_rtdex_sink_0.set_packet_size(packet_size) self.nutaq_rtdex_sink_0.set_channels("1") self.nutaq_radio420_tx_0_0 = nutaq.radio420_tx("nutaq_carrier_perseus_TX", 2, 1) self.nutaq_radio420_tx_0_0.set_default_enable(1) self.nutaq_radio420_tx_0_0.set_default_tx_freq(RF_freq) self.nutaq_radio420_tx_0_0.set_default_reference(1) self.nutaq_radio420_tx_0_0.set_default_datarate(samp_rate*2) self.nutaq_radio420_tx_0_0.set_default_calibrate(1) self.nutaq_radio420_tx_0_0.set_default_band(0) self.nutaq_radio420_tx_0_0.set_default_update_rate(1) self.nutaq_radio420_tx_0_0.set_default_tx_vga1_gain(-10) self.nutaq_radio420_tx_0_0.set_default_tx_vga2_gain(15) self.nutaq_radio420_tx_0_0.set_default_tx_gain3(3) self.nutaq_radio420_tx_0_0.set_default_tx_lpf_bandwidth(2) self.nutaq_radio420_tx_0_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_rf_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_tx_gain_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_pll_cpld_ctrl(0) self.nutaq_radio420_tx_0 = nutaq.radio420_tx("nutaq_carrier_perseus_TX", 1, 0) self.nutaq_radio420_tx_0.set_default_enable(1) self.nutaq_radio420_tx_0.set_default_tx_freq(RF_freq ) self.nutaq_radio420_tx_0.set_default_reference(0) self.nutaq_radio420_tx_0.set_default_datarate(samp_rate*2) self.nutaq_radio420_tx_0.set_default_calibrate(1) self.nutaq_radio420_tx_0.set_default_band(0) self.nutaq_radio420_tx_0.set_default_update_rate(1) self.nutaq_radio420_tx_0.set_default_tx_vga1_gain(-10) self.nutaq_radio420_tx_0.set_default_tx_vga2_gain(15) self.nutaq_radio420_tx_0.set_default_tx_gain3(3) self.nutaq_radio420_tx_0.set_default_tx_lpf_bandwidth(2) self.nutaq_radio420_tx_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_tx_0.set_default_rf_ctrl(0) self.nutaq_radio420_tx_0.set_default_tx_gain_ctrl(0) self.nutaq_radio420_tx_0.set_default_pll_cpld_ctrl(0) self.nutaq_radio420_rx_0_0 = nutaq.radio420_rx("nutaq_carrier_perseus_TX", 2, 3) self.nutaq_radio420_rx_0_0.set_default_enable(1) self.nutaq_radio420_rx_0_0.set_default_rx_freq(RF_freq) self.nutaq_radio420_rx_0_0.set_default_reference(1) self.nutaq_radio420_rx_0_0.set_default_datarate(samp_rate*2) self.nutaq_radio420_rx_0_0.set_default_calibrate(1) self.nutaq_radio420_rx_0_0.set_default_band(0) self.nutaq_radio420_rx_0_0.set_default_update_rate(1) self.nutaq_radio420_rx_0_0.set_default_rx_lna_gain(3) self.nutaq_radio420_rx_0_0.set_default_rx_vga1_gain(2) self.nutaq_radio420_rx_0_0.set_default_rx_gain2(4) self.nutaq_radio420_rx_0_0.set_default_rx_gain3(10) self.nutaq_radio420_rx_0_0.set_default_rx_rf_filter(2) self.nutaq_radio420_rx_0_0.set_default_rx_lpf_bandwidth(2) self.nutaq_radio420_rx_0_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_rx_0_0.set_default_rf_ctrl(0) self.nutaq_radio420_rx_0_0.set_default_rx_gain_ctrl(0) self.nutaq_radio420_rx_0_0.set_default_pll_cpld_ctrl(0) self.nutaq_radio420_rx_0 = nutaq.radio420_rx("nutaq_carrier_perseus_TX", 1, 2) self.nutaq_radio420_rx_0.set_default_enable(1) self.nutaq_radio420_rx_0.set_default_rx_freq(RF_freq) self.nutaq_radio420_rx_0.set_default_reference(0) self.nutaq_radio420_rx_0.set_default_datarate(samp_rate*2) self.nutaq_radio420_rx_0.set_default_calibrate(1) self.nutaq_radio420_rx_0.set_default_band(0) self.nutaq_radio420_rx_0.set_default_update_rate(1) self.nutaq_radio420_rx_0.set_default_rx_lna_gain(2) self.nutaq_radio420_rx_0.set_default_rx_vga1_gain(2) self.nutaq_radio420_rx_0.set_default_rx_gain2(0) self.nutaq_radio420_rx_0.set_default_rx_gain3(-8) self.nutaq_radio420_rx_0.set_default_rx_rf_filter(2) self.nutaq_radio420_rx_0.set_default_rx_lpf_bandwidth(2) self.nutaq_radio420_rx_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_rx_0.set_default_rf_ctrl(0) self.nutaq_radio420_rx_0.set_default_rx_gain_ctrl(0) self.nutaq_radio420_rx_0.set_default_pll_cpld_ctrl(0) self.nutaq_custom_register_0_1_1 = nutaq.custom_register("nutaq_carrier_perseus_TX",9) self.nutaq_custom_register_0_1_1.set_index(6) self.nutaq_custom_register_0_1_1.set_default_value(PSD_averaging) self.nutaq_custom_register_0_1_1.set_update_rate(1) self.nutaq_custom_register_0_1_0 = nutaq.custom_register("nutaq_carrier_perseus_TX",7) self.nutaq_custom_register_0_1_0.set_index(2) self.nutaq_custom_register_0_1_0.set_update_rate(1) self.nutaq_custom_register_0_1 = nutaq.custom_register("nutaq_carrier_perseus_TX",36) self.nutaq_custom_register_0_1.set_index(0) self.nutaq_custom_register_0_1.set_default_value(int((2e6)/samp_rate*(2**32))) self.nutaq_custom_register_0_1.set_update_rate(1) self.nutaq_custom_register_0_0_0 = nutaq.custom_register("nutaq_carrier_perseus_TX",8) self.nutaq_custom_register_0_0_0.set_index(3) self.nutaq_custom_register_0_0_0.set_default_value(7) self.nutaq_custom_register_0_0_0.set_update_rate(1) self.nutaq_custom_register_0_0 = nutaq.custom_register("nutaq_carrier_perseus_TX",5) self.nutaq_custom_register_0_0.set_index(4) self.nutaq_custom_register_0_0.set_default_value(1) self.nutaq_custom_register_0_0.set_update_rate(1) self.nutaq_custom_register_0 = nutaq.custom_register("nutaq_carrier_perseus_TX",4) self.nutaq_custom_register_0.set_index(1) self.nutaq_custom_register_0.set_default_value(3) self.nutaq_custom_register_0.set_update_rate(1) self.nutaq_carrier_perseus_TX = nutaq.carrier(0,"nutaq_carrier_perseus_TX", "192.168.0.101") def _funcion_prove_showts_edge_probe(): while True: val = self.spectsensing_ss_edge_plot_0.update_variable_show_Ts(self.show_test_statistics) try: self.set_funcion_prove_showts_edge(val) except AttributeError: pass time.sleep(1.0 / (0.1)) _funcion_prove_showts_edge_thread = threading.Thread(target=_funcion_prove_showts_edge_probe) _funcion_prove_showts_edge_thread.daemon = True _funcion_prove_showts_edge_thread.start() self._freq_offset_range = Range(-1e7, 1e7, 1e4, variable_funcion, 200) self._freq_offset_win = RangeWidget(self._freq_offset_range, self.set_freq_offset, "freq_offset", "slider") self.top_layout.addWidget(self._freq_offset_win) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=oversampling, bt=0.71, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=oversampling, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self._cosenito_range = Range(-250e3, 250e3, 1e3, 20e3, 200) self._cosenito_win = RangeWidget(self._cosenito_range, self.set_cosenito, "cosenito", "counter_slider") self.top_layout.addWidget(self._cosenito_win) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_char*1, "192.168.0.122", 1234, 1472, True) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char*1, 2*4e3 + 0*samp_rate/40/(oversampling*8*2),True) self.blocks_short_to_float_0_1_0 = blocks.short_to_float(1, 2**11) self.blocks_short_to_float_0_0_0_0 = blocks.short_to_float(1, 2**11) self.blocks_null_sink_1_3 = blocks.null_sink(gr.sizeof_float*40) self.blocks_null_sink_1_2 = blocks.null_sink(gr.sizeof_float*40) self.blocks_null_sink_1_1_0 = blocks.null_sink(gr.sizeof_float*40) self.blocks_null_sink_1_1 = blocks.null_sink(gr.sizeof_float*40) self.blocks_null_sink_1_0 = blocks.null_sink(gr.sizeof_float*40) self.blocks_null_sink_1 = blocks.null_sink(gr.sizeof_float*40) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_short*1) self.blocks_multiply_const_vxx_0_3 = blocks.multiply_const_vff((2.0**(16*2), )) self.blocks_multiply_const_vxx_0_2 = blocks.multiply_const_vcc((amplitude, )) self.blocks_multiply_const_vxx_0_1_1 = blocks.multiply_const_vff((2.0**(16*0), )) self.blocks_multiply_const_vxx_0_1_0_0 = blocks.multiply_const_vff((2.0**(16*1), )) self.blocks_multiply_const_vxx_0_1_0 = blocks.multiply_const_vff((2.0**(16*1), )) self.blocks_multiply_const_vxx_0_1 = blocks.multiply_const_vff((2.0**(16*0), )) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((2.0**(16*2), )) self.blocks_interleave_0 = blocks.interleave(gr.sizeof_short*1, 1) self.blocks_float_to_short_0_0_0 = blocks.float_to_short(1, 2**11-1) self.blocks_float_to_short_0_0 = blocks.float_to_short(1, 2**11-1) self.blocks_float_to_complex_0_0_0 = blocks.float_to_complex(1) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char*1, "/home/juan/Music/de_mi.mp3", True) self.blocks_deinterleave_0_0_1 = blocks.deinterleave(gr.sizeof_short*1, 1) self.blocks_deinterleave_0_0_0 = blocks.deinterleave(gr.sizeof_short*1, 1) self.blocks_deinterleave_0_0 = blocks.deinterleave(gr.sizeof_short*1, 1) self.blocks_complex_to_float_0 = blocks.complex_to_float(1) self.blocks_char_to_float_0 = blocks.char_to_float(1, 1) self.blocks_add_xx_0_0 = blocks.add_vff(1) self.blocks_add_xx_0 = blocks.add_vff(1) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_b(grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=8, preamble="", access_code="", pad_for_usrp=True, ), payload_length=128, ) self.blks2_packet_decoder_1 = grc_blks2.packet_demod_b(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_1.recv_pkt(ok, payload), ), ) _ENABLE_TX1_variable_check_box_check_box = Qt.QCheckBox("Enable Transmission") self._ENABLE_TX1_variable_check_box_choices = {True: True, False: False} self._ENABLE_TX1_variable_check_box_choices_inv = dict((v,k) for k,v in self._ENABLE_TX1_variable_check_box_choices.iteritems()) self._ENABLE_TX1_variable_check_box_callback = lambda i: Qt.QMetaObject.invokeMethod(_ENABLE_TX1_variable_check_box_check_box, "setChecked", Qt.Q_ARG("bool", self._ENABLE_TX1_variable_check_box_choices_inv[i])) self._ENABLE_TX1_variable_check_box_callback(self.ENABLE_TX1_variable_check_box) _ENABLE_TX1_variable_check_box_check_box.stateChanged.connect(lambda i: self.set_ENABLE_TX1_variable_check_box(self._ENABLE_TX1_variable_check_box_choices[bool(i)])) self.top_layout.addWidget(_ENABLE_TX1_variable_check_box_check_box) self.DataConversion_reint_short_float_0_3 = DataConversion.reint_short_float() self.DataConversion_reint_short_float_0_2_0 = DataConversion.reint_short_float() self.DataConversion_reint_short_float_0_2 = DataConversion.reint_short_float() self.DataConversion_reint_short_float_0_1_0 = DataConversion.reint_short_float() self.DataConversion_reint_short_float_0_1 = DataConversion.reint_short_float() self.DataConversion_reint_short_float_0_0_0 = DataConversion.reint_short_float() self.DataConversion_reint_short_float_0_0 = DataConversion.reint_short_float() self.DataConversion_reint_short_float_0 = DataConversion.reint_short_float() self.DataConversion_eaver_resynchronizer_0_0 = DataConversion.eaver_resynchronizer(1024) self.DataConversion_eaver_resynchronizer_0 = DataConversion.eaver_resynchronizer(decimation) ################################################## # Connections ################################################## self.msg_connect((self.spectsensing_compute_statistics_0, 'spec_sens_pdus'), (self.spectsensing_ss_edge_plot_0, 'pdus')) self.msg_connect((self.spectsensing_ss_pds_plot_0, 'psd_pdu'), (self.spectsensing_xs_plot_1, 'pdus')) self.connect((self.DataConversion_eaver_resynchronizer_0, 0), (self.spectsensing_compute_statistics_0, 0)) self.connect((self.DataConversion_eaver_resynchronizer_0, 1), (self.spectsensing_compute_statistics_0, 1)) self.connect((self.DataConversion_eaver_resynchronizer_0_0, 0), (self.spectsensing_ss_pds_plot_0, 0)) self.connect((self.DataConversion_eaver_resynchronizer_0_0, 1), (self.spectsensing_ss_pds_plot_0, 1)) self.connect((self.DataConversion_reint_short_float_0, 0), (self.DataConversion_eaver_resynchronizer_0, 0)) self.connect((self.DataConversion_reint_short_float_0_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.DataConversion_reint_short_float_0_0_0, 0), (self.blocks_multiply_const_vxx_0_3, 0)) self.connect((self.DataConversion_reint_short_float_0_1, 0), (self.blocks_multiply_const_vxx_0_1_0, 0)) self.connect((self.DataConversion_reint_short_float_0_1_0, 0), (self.blocks_multiply_const_vxx_0_1_0_0, 0)) self.connect((self.DataConversion_reint_short_float_0_2, 0), (self.blocks_multiply_const_vxx_0_1, 0)) self.connect((self.DataConversion_reint_short_float_0_2_0, 0), (self.blocks_multiply_const_vxx_0_1_1, 0)) self.connect((self.DataConversion_reint_short_float_0_3, 0), (self.DataConversion_eaver_resynchronizer_0_0, 0)) self.connect((self.blks2_packet_decoder_1, 0), (self.blocks_char_to_float_0, 0)) self.connect((self.blks2_packet_decoder_1, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_add_xx_0, 0), (self.DataConversion_eaver_resynchronizer_0, 1)) self.connect((self.blocks_add_xx_0_0, 0), (self.DataConversion_eaver_resynchronizer_0_0, 1)) self.connect((self.blocks_char_to_float_0, 0), (self.qtgui_time_sink_x_0_0, 0)) self.connect((self.blocks_complex_to_float_0, 0), (self.blocks_float_to_short_0_0, 0)) self.connect((self.blocks_complex_to_float_0, 1), (self.blocks_float_to_short_0_0_0, 0)) self.connect((self.blocks_deinterleave_0_0, 0), (self.DataConversion_reint_short_float_0, 0)) self.connect((self.blocks_deinterleave_0_0, 1), (self.DataConversion_reint_short_float_0_0, 0)) self.connect((self.blocks_deinterleave_0_0, 3), (self.DataConversion_reint_short_float_0_1, 0)) self.connect((self.blocks_deinterleave_0_0, 2), (self.DataConversion_reint_short_float_0_2, 0)) self.connect((self.blocks_deinterleave_0_0_0, 1), (self.blocks_short_to_float_0_0_0_0, 0)) self.connect((self.blocks_deinterleave_0_0_0, 0), (self.blocks_short_to_float_0_1_0, 0)) self.connect((self.blocks_deinterleave_0_0_1, 1), (self.DataConversion_reint_short_float_0_0_0, 0)) self.connect((self.blocks_deinterleave_0_0_1, 3), (self.DataConversion_reint_short_float_0_1_0, 0)) self.connect((self.blocks_deinterleave_0_0_1, 2), (self.DataConversion_reint_short_float_0_2_0, 0)) self.connect((self.blocks_deinterleave_0_0_1, 0), (self.DataConversion_reint_short_float_0_3, 0)) self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_float_to_complex_0_0_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blocks_float_to_complex_0_0_0, 0), (self.qtgui_time_sink_x_0, 0)) self.connect((self.blocks_float_to_short_0_0, 0), (self.blocks_interleave_0, 0)) self.connect((self.blocks_float_to_short_0_0_0, 0), (self.blocks_interleave_0, 1)) self.connect((self.blocks_interleave_0, 0), (self.blocks_null_sink_0, 0)) self.connect((self.blocks_interleave_0, 0), (self.nutaq_rtdex_sink_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_add_xx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0_1, 0), (self.blocks_add_xx_0, 1)) self.connect((self.blocks_multiply_const_vxx_0_1_0, 0), (self.blocks_add_xx_0, 2)) self.connect((self.blocks_multiply_const_vxx_0_1_0_0, 0), (self.blocks_add_xx_0_0, 2)) self.connect((self.blocks_multiply_const_vxx_0_1_1, 0), (self.blocks_add_xx_0_0, 1)) self.connect((self.blocks_multiply_const_vxx_0_2, 0), (self.blocks_complex_to_float_0, 0)) self.connect((self.blocks_multiply_const_vxx_0_3, 0), (self.blocks_add_xx_0_0, 0)) self.connect((self.blocks_short_to_float_0_0_0_0, 0), (self.blocks_float_to_complex_0_0_0, 1)) self.connect((self.blocks_short_to_float_0_1_0, 0), (self.blocks_float_to_complex_0_0_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_1, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_multiply_const_vxx_0_2, 0)) self.connect((self.nutaq_rtdex_source_0_0_0, 0), (self.blocks_deinterleave_0_0_0, 0)) self.connect((self.nutaq_rtdex_source_S_S, 0), (self.blocks_deinterleave_0_0, 0)) self.connect((self.nutaq_rtdex_source_S_S_0, 0), (self.blocks_deinterleave_0_0_1, 0)) self.connect((self.spectsensing_compute_statistics_0, 0), (self.blocks_null_sink_1, 0)) self.connect((self.spectsensing_compute_statistics_0, 5), (self.blocks_null_sink_1_0, 0)) self.connect((self.spectsensing_compute_statistics_0, 2), (self.blocks_null_sink_1_1, 0)) self.connect((self.spectsensing_compute_statistics_0, 3), (self.blocks_null_sink_1_1_0, 0)) self.connect((self.spectsensing_compute_statistics_0, 4), (self.blocks_null_sink_1_2, 0)) self.connect((self.spectsensing_compute_statistics_0, 6), (self.blocks_null_sink_1_3, 0)) self.connect((self.spectsensing_compute_statistics_0, 3), (self.spectsensing_subband_selector_0, 2)) self.connect((self.spectsensing_compute_statistics_0, 7), (self.spectsensing_subband_selector_0, 0)) self.connect((self.spectsensing_compute_statistics_0, 1), (self.spectsensing_subband_selector_0, 1)) self.connect((self.spectsensing_subband_selector_0, 0), (self.probe, 0))
def __init__(self, freq=394e6, gain=0, sample_rate=2400000, args="", channel_bw=12500, listen_port=60100, ppm=0, output="channel%d.bits", output_offset=None, auto_tune=-1): gr.top_block.__init__(self, "TETRAPOL multichannel reciever") ################################################## # Parameters and variables ################################################## self.freq = freq self.gain = gain self.sample_rate = sample_rate self.args = args self.channel_bw = channel_bw self.listen_port = listen_port self.ppm = ppm self.output = output self.auto_tune = auto_tune # TODO: parametrize self.debug = True self.channels = channels = int(sample_rate/channel_bw) channel_symb_rate = 8000 samples_per_symbol = 2 self.channel_samp_rate = channel_samp_rate = \ channel_symb_rate * samples_per_symbol afc_period = 6 self.afc_gain = 1 self.afc_ppm_threshold = 100 if output_offset is None: self.output_offset = 0 else: self.output_offset = output_offset - ((channels - 1) // 2) ################################################## # Blocks - RPC server ################################################## self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer( ("localhost", listen_port), allow_none=True) self.xmlrpc_server_0.register_instance(self) threading.Thread(target=self.xmlrpc_server_0.serve_forever).start() ################################################## # Blocks - RX, demod, sink ################################################## self.src = osmosdr.source( args="numchan=" + str(1) + " " + "" + self.args ) self.src.set_sample_rate(sample_rate) self.src.set_center_freq(freq, 0) self.src.set_freq_corr(ppm, 0) # TODO: manual gain control self.src.set_gain_mode(True, 0) #self.src.set_gain(gain, 0) self.freq_xlating = freq_xlating_fft_filter_ccc(1, (1, ), 0, sample_rate) bw = (9200 + self.afc_ppm_threshold)/2 self.channelizer = pfb.channelizer_ccf( channels, firdes.low_pass(1, sample_rate, bw, bw*0.15, firdes.WIN_HANN), float(channel_samp_rate)/(sample_rate/channels), 100) self.connect( (self.src, 0), (self.freq_xlating, 0), (self.channelizer, 0)) self.valves = [] self.gmsk_demods = [] self.file_sinks = [] even_no_of_chs = not (channels % 2) center_ch = channels // 2 for ch_in in range(0, channels): ch_out = (ch_in + center_ch + 1) % channels if ch_out == center_ch and even_no_of_chs: null_sink = blocks.null_sink(gr.sizeof_gr_complex) self.connect( (self.channelizer, ch_out), (null_sink, 0)) continue valve = grc_blks2.valve(item_size=gr.sizeof_gr_complex, open=True) gmsk_demod = digital.gmsk_demod( samples_per_symbol=samples_per_symbol, gain_mu=0.050, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) o = output % (ch_in + self.output_offset) file_sink = blocks.file_sink(gr.sizeof_char, o, False) file_sink.set_unbuffered(True) self.connect( (self.channelizer, ch_out), (valve, 0), (gmsk_demod, 0), (file_sink, 0)) self.valves.append(valve) self.gmsk_demods.append(gmsk_demod) self.file_sinks.append(file_sink) ################################################## # Blocks - automatic fine tune ################################################## self.afc_selector = grc_blks2.selector( item_size=gr.sizeof_gr_complex*1, num_inputs=channels - even_no_of_chs, num_outputs=1, input_index=0, output_index=0, ) if auto_tune != -1: self.afc_selector.set_input_index(auto_tune) self.afc_demod = analog.quadrature_demod_cf(channel_samp_rate/(2*math.pi)) afc_samp = channel_samp_rate * afc_period / 2 self.afc_avg = blocks.moving_average_ff(afc_samp, 1./afc_samp*self.afc_gain) self.afc_probe = blocks.probe_signal_f() def _afc_probe(): while True: time.sleep(afc_period) if self.auto_tune == -1: continue err = self.afc_probe.level() if abs(err) < self.afc_ppm_threshold: continue freq = self.freq_xlating.center_freq + err * self.afc_gain if self.debug: print "freq err: % .0f\tfreq: %f" % (err, freq) self.freq_xlating.set_center_freq(freq) self._afc_err_thread = threading.Thread(target=_afc_probe) self._afc_err_thread.daemon = True self._afc_err_thread.start() for ch_in in range(0, channels - even_no_of_chs): ch_out = (ch_in + center_ch + 1) % channels self.connect((self.channelizer, ch_out), (self.afc_selector, ch_in)) self.connect((self.afc_selector, 0), (self.afc_demod, 0), (self.afc_avg, 0), (self.afc_probe, 0)) ################################################## # Blocks - signal strenght indication ################################################## self.pwr_probes = [] for ch in range(self.channels - even_no_of_chs): ch = (ch + center_ch + 1) % channels pwr_probe = analog.probe_avg_mag_sqrd_c(0, 1./channel_samp_rate) self.connect((self.channelizer, ch), (pwr_probe, 0)) self.pwr_probes.append(pwr_probe)
def __init__(self, addr='0.0.0.0', port='52001', rx_gain=38): gr.top_block.__init__(self, "Fsk Rx 1") Qt.QWidget.__init__(self) self.setWindowTitle("Fsk Rx 1") 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", "fsk_rx_1") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Parameters ################################################## self.addr = addr self.port = port self.rx_gain = rx_gain ################################################## # Variables ################################################## self.samp_rate = samp_rate = 500000 self.baud = baud = 10e3 self.samps_per_symb = samps_per_symb = int(samp_rate/baud) self.mult = mult = (samp_rate)/2/3.141593 self.freq = freq = 433e6 self.alpha = alpha = 0.5 ################################################## # Blocks ################################################## self.uhd_usrp_source_0_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0_0.set_subdev_spec('A:B', 0) self.uhd_usrp_source_0_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0_0.set_center_freq(uhd.tune_request(freq, samp_rate/2), 0) self.uhd_usrp_source_0_0.set_gain(rx_gain, 0) self.uhd_usrp_source_0_0.set_antenna('RX2', 0) self.kiss_pdu_to_kiss_0 = kiss.pdu_to_kiss() self.kiss_hdlc_deframer_0 = kiss.hdlc_deframer(check_fcs=True, max_length=10000) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=samps_per_symb, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_descrambler_bb_0 = digital.descrambler_bb(0x21, 0, 16) self.blocks_socket_pdu_0 = blocks.socket_pdu("TCP_SERVER", addr, port, 1024, True) self.blocks_message_debug_0 = blocks.message_debug() ################################################## # Connections ################################################## self.msg_connect((self.kiss_hdlc_deframer_0, 'out'), (self.blocks_message_debug_0, 'print_pdu')) self.msg_connect((self.kiss_hdlc_deframer_0, 'out'), (self.kiss_pdu_to_kiss_0, 'in')) self.msg_connect((self.kiss_pdu_to_kiss_0, 'out'), (self.blocks_socket_pdu_0, 'pdus')) self.connect((self.digital_descrambler_bb_0, 0), (self.kiss_hdlc_deframer_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.digital_descrambler_bb_0, 0)) self.connect((self.uhd_usrp_source_0_0, 0), (self.digital_gmsk_demod_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Gmsk Receive") _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 = 32000 ################################################## # Blocks ################################################## self.zeromq_pub_sink_0 = zeromq.pub_sink(gr.sizeof_char, 1, "tcp://127.0.0.1:5557", 1000, False) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=102.3e6, 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.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(102.3e6, 0) self.uhd_usrp_source_0.set_gain(75, 0) self.uhd_usrp_source_0.set_antenna("RX2", 0) self.uhd_usrp_source_0.set_bandwidth(1e6, 0) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.zeromq_pub_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_fftsink2_0, 0)) ### t = Thread(target=sub, args=(self.change_freq,)) t.start()
def __init__(self): gr.top_block.__init__(self, "Top Block") Qt.QWidget.__init__(self) self.setWindowTitle("Top Block") 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", "top_block") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1000000 ################################################## # Blocks ################################################## self.low_pass_filter_0 = filter.fir_filter_ccf(1, firdes.low_pass( 1, samp_rate, 350000, 50000, firdes.WIN_HAMMING, 6.76)) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=2, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_float*1, samp_rate,True) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((10, )) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_float*1, "/home/yq/Desktop/test.txt", True) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float*1, "/home/yq/Downloads/testrx.txt", False) self.blocks_file_sink_0.set_unbuffered(False) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_f(grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=1, preamble="", access_code="", pad_for_usrp=True, ), payload_length=0, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_f(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") Qt.QWidget.__init__(self) self.setWindowTitle("Top Block") 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", "top_block") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 4e6 self.c_freq = c_freq = 2.48e9 self.bandwidth = bandwidth = 5e6 ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args(cpu_format="fc32", channels=range(1)) ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(c_freq, 0) self.uhd_usrp_source_0.set_gain(1, 0) self.uhd_usrp_source_0.set_antenna("J1", 0) self.uhd_usrp_source_0.set_bandwidth(bandwidth, 0) self.qtgui_sink_x_0 = qtgui.sink_c( 1024, # fftsize firdes.WIN_BLACKMAN_hARRIS, # wintype c_freq, # fc samp_rate, # bw "", # name True, # plotfreq True, # plotwaterfall True, # plottime True, # plotconst ) self.qtgui_sink_x_0.set_update_time(1.0 / 10) self._qtgui_sink_x_0_win = sip.wrapinstance(self.qtgui_sink_x_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_sink_x_0_win) self.qtgui_sink_x_0.enable_rf_freq(False) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float * 1, "/home/ted/Downloads/testrx.txt", False) self.blocks_file_sink_0.set_unbuffered(False) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ) ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.qtgui_sink_x_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 25000000 self.dec_rate = dec_rate = 25 ################################################## # Blocks ################################################## 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 / dec_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.gr_unpacked_to_packed_xx_0 = gr.unpacked_to_packed_bb( 1, gr.GR_MSB_FIRST) self.gr_throttle_0 = gr.throttle(gr.sizeof_gr_complex * 1, samp_rate) self.gr_freq_xlating_fir_filter_xxx_0 = gr.freq_xlating_fir_filter_ccc( dec_rate, (firdes.low_pass(1, samp_rate, 1000000, 100000)), -1000000, samp_rate) self.gr_file_source_0 = gr.file_source( gr.sizeof_gr_complex * 1, "/shampoo/sdr/capture/j9Pro-capture/2400000000-25M-1.cap", False) self.gr_file_sink_0_0 = gr.file_sink( gr.sizeof_char * 1, "/shampoo/sdr/projects/gr-nineeagles/gmsk-packed.out") self.gr_file_sink_0_0.set_unbuffered(False) self.gr_file_sink_0 = gr.file_sink( gr.sizeof_char * 1, "/shampoo/sdr/projects/gr-nineeagles/gmsk-unpacked.out") self.gr_file_sink_0.set_unbuffered(False) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) ################################################## # Connections ################################################## self.connect((self.gr_file_source_0, 0), (self.gr_throttle_0, 0)) self.connect((self.gr_unpacked_to_packed_xx_0, 0), (self.gr_file_sink_0_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.gr_file_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.gr_unpacked_to_packed_xx_0, 0)) self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.gr_throttle_0, 0), (self.gr_freq_xlating_fir_filter_xxx_0, 0)) self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.digital_gmsk_demod_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Frame / sync / deframer chain") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 500e3 ################################################## # Blocks ################################################## 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.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=32, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=32, gain_mu=0.175, mu=0.5, omega_relative_limit=0.01, freq_error=0.0, verbose=False, log=False, ) self.channels_channel_model_0 = channels.channel_model( noise_voltage=0.001, frequency_offset=0.0, epsilon=1.000001, taps=(1.0 + 1.0j, ), noise_seed=0, block_tags=False ) self.blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char*1, samp_rate,True) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((20, )) self.Spread_sync_0 = Spread.sync() self.Spread_rx_sync_0 = Spread.rx_sync(12) self.Spread_msg_source_0 = Spread.msg_source(500, 255) self.Spread_framer_0 = Spread.framer(0) self.Spread_deframer_0 = Spread.deframer(0) ################################################## # Connections ################################################## self.connect((self.Spread_sync_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_unpacked_to_packed_xx_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.channels_channel_model_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.Spread_rx_sync_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.digital_gmsk_demod_0, 0)) ################################################## # Asynch Message Connections ################################################## self.msg_connect(self.Spread_framer_0, "out", self.Spread_sync_0, "in") self.msg_connect(self.Spread_msg_source_0, "out", self.Spread_framer_0, "in") self.msg_connect(self.Spread_rx_sync_0, "out", self.Spread_deframer_0, "in")
def __init__(self): gr.top_block.__init__(self, "Bluetooth LE Receiver") ################################################## # Variables ################################################## self.transition_width = transition_width = 300e3 self.sample_rate = sample_rate = 4e6 self.data_rate = data_rate = 1e6 self.cutoff_freq = cutoff_freq = 850e3 self.ble_channel_spacing = ble_channel_spacing = 2e6 self.ble_channel = ble_channel = 12 self.ble_base_freq = ble_base_freq = 2402e6 self.squelch_threshold = squelch_threshold = -70 self.rf_gain = rf_gain = 10 self.lowpass_filter = lowpass_filter = firdes.low_pass( 1, sample_rate, cutoff_freq, transition_width, firdes.WIN_HAMMING, 6.76) self.gmsk_sps = gmsk_sps = int(sample_rate / data_rate) self.gmsk_omega_limit = gmsk_omega_limit = 0.035 self.gmsk_mu = gmsk_mu = 0.5 self.gmsk_gain_mu = gmsk_gain_mu = 0.7 self.freq_offset = freq_offset = 1e6 self.freq = freq = ble_base_freq + (ble_channel_spacing * ble_channel) ################################################## # Message Queues ################################################## message_sink_msgq_out = virtual_sink_msgq_in = gr.msg_queue(2) ################################################## # Blocks ################################################## self.unpacked_to_packed = blocks.unpacked_to_packed_bb( 1, gr.GR_LSB_FIRST) self.osmosdr_source = osmosdr.source(args="numchan=" + str(1) + " " + '') self.osmosdr_source.set_sample_rate(sample_rate) self.osmosdr_source.set_center_freq(2.402e6, 0) self.osmosdr_source.set_freq_corr(0, 0) self.osmosdr_source.set_dc_offset_mode(0, 0) self.osmosdr_source.set_iq_balance_mode(0, 0) self.osmosdr_source.set_gain_mode(False, 0) self.osmosdr_source.set_gain(rf_gain, 0) self.osmosdr_source.set_if_gain(20, 0) self.osmosdr_source.set_bb_gain(20, 0) self.osmosdr_source.set_antenna('', 0) self.osmosdr_source.set_bandwidth(0, 0) self.message_sink = blocks.message_sink(gr.sizeof_char * 1, message_sink_msgq_out, True) self.freq_xlating_fir_filter_lp = filter.freq_xlating_fir_filter_ccc( 1, (lowpass_filter), -freq_offset, sample_rate) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=gmsk_sps, gain_mu=gmsk_gain_mu, mu=gmsk_mu, omega_relative_limit=gmsk_omega_limit, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_char * 1, '/home/spencer/Documents/BLEtest2.txt', True) self.blocks_file_sink_0.set_unbuffered(False) self.analog_simple_squelch = analog.simple_squelch_cc( squelch_threshold, 0.1) ################################################## # Connections ################################################## self.connect((self.analog_simple_squelch, 0), (self.freq_xlating_fir_filter_lp, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.unpacked_to_packed, 0)) self.connect((self.freq_xlating_fir_filter_lp, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.osmosdr_source, 0), (self.analog_simple_squelch, 0)) self.connect((self.unpacked_to_packed, 0), (self.blocks_file_sink_0, 0)) self.connect((self.unpacked_to_packed, 0), (self.message_sink, 0))
def __init__(self): gr.top_block.__init__(self, "Perseus Spectrum Sensing") Qt.QWidget.__init__(self) self.setWindowTitle("Perseus Spectrum Sensing") 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", "perseus_withFPGAdecimation") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 20e6 self.packet_size = packet_size = 8192 self.oversampling = oversampling = 4 self.nfft = nfft = 2**15 self.decimation = decimation = 40 self.amplitude = amplitude = 0.125 self.RF_freq = RF_freq = 943e6 self.PSD_averaging = PSD_averaging = 600 ################################################## # Blocks ################################################## self.spectsensing_xs_plot_1 = spectsensing.xs_plot("") self._spectsensing_xs_plot_1_win = self.spectsensing_xs_plot_1; self.top_layout.addWidget(self._spectsensing_xs_plot_1_win) self.spectsensing_ss_pds_plot_0 = spectsensing.ss_pds_plot(nfft, samp_rate, 1024 ) self.nutaq_rtdex_source_S_S_0 = nutaq.rtdex_source("nutaq_carrier_perseus_TX",gr.sizeof_short,1,0) self.nutaq_rtdex_source_S_S_0.set_type(0) self.nutaq_rtdex_source_S_S_0.set_packet_size(1300) self.nutaq_rtdex_source_S_S_0.set_channels("0") self.nutaq_rtdex_source_0_0_0 = nutaq.rtdex_source("nutaq_carrier_perseus_TX",gr.sizeof_short,1,7) self.nutaq_rtdex_source_0_0_0.set_type(0) self.nutaq_rtdex_source_0_0_0.set_packet_size(packet_size) self.nutaq_rtdex_source_0_0_0.set_channels("2") (self.nutaq_rtdex_source_0_0_0).set_min_output_buffer(16384) self.nutaq_rtdex_sink_0 = nutaq.rtdex_sink("nutaq_carrier_perseus_TX",gr.sizeof_short,1,7) self.nutaq_rtdex_sink_0.set_type(0) self.nutaq_rtdex_sink_0.set_packet_size(packet_size) self.nutaq_rtdex_sink_0.set_channels("1") self.nutaq_radio420_tx_0_0 = nutaq.radio420_tx("nutaq_carrier_perseus_TX", 2, 1) self.nutaq_radio420_tx_0_0.set_default_enable(1) self.nutaq_radio420_tx_0_0.set_default_tx_freq(RF_freq) self.nutaq_radio420_tx_0_0.set_default_reference(1) self.nutaq_radio420_tx_0_0.set_default_datarate(samp_rate*2) self.nutaq_radio420_tx_0_0.set_default_calibrate(1) self.nutaq_radio420_tx_0_0.set_default_band(0) self.nutaq_radio420_tx_0_0.set_default_update_rate(1) self.nutaq_radio420_tx_0_0.set_default_tx_vga1_gain(-10) self.nutaq_radio420_tx_0_0.set_default_tx_vga2_gain(15) self.nutaq_radio420_tx_0_0.set_default_tx_gain3(3) self.nutaq_radio420_tx_0_0.set_default_tx_lpf_bandwidth(2) self.nutaq_radio420_tx_0_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_rf_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_tx_gain_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_pll_cpld_ctrl(0) self.nutaq_radio420_tx_0 = nutaq.radio420_tx("nutaq_carrier_perseus_TX", 1, 0) self.nutaq_radio420_tx_0.set_default_enable(1) self.nutaq_radio420_tx_0.set_default_tx_freq(RF_freq) self.nutaq_radio420_tx_0.set_default_reference(0) self.nutaq_radio420_tx_0.set_default_datarate(samp_rate*2) self.nutaq_radio420_tx_0.set_default_calibrate(1) self.nutaq_radio420_tx_0.set_default_band(0) self.nutaq_radio420_tx_0.set_default_update_rate(1) self.nutaq_radio420_tx_0.set_default_tx_vga1_gain(-4) self.nutaq_radio420_tx_0.set_default_tx_vga2_gain(15) self.nutaq_radio420_tx_0.set_default_tx_gain3(14) self.nutaq_radio420_tx_0.set_default_tx_lpf_bandwidth(2) self.nutaq_radio420_tx_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_tx_0.set_default_rf_ctrl(0) self.nutaq_radio420_tx_0.set_default_tx_gain_ctrl(0) self.nutaq_radio420_tx_0.set_default_pll_cpld_ctrl(0) self.nutaq_radio420_rx_0_0 = nutaq.radio420_rx("nutaq_carrier_perseus_TX", 2, 3) self.nutaq_radio420_rx_0_0.set_default_enable(1) self.nutaq_radio420_rx_0_0.set_default_rx_freq(RF_freq) self.nutaq_radio420_rx_0_0.set_default_reference(1) self.nutaq_radio420_rx_0_0.set_default_datarate(samp_rate*2) self.nutaq_radio420_rx_0_0.set_default_calibrate(1) self.nutaq_radio420_rx_0_0.set_default_band(0) self.nutaq_radio420_rx_0_0.set_default_update_rate(1) self.nutaq_radio420_rx_0_0.set_default_rx_lna_gain(2) self.nutaq_radio420_rx_0_0.set_default_rx_vga1_gain(2) self.nutaq_radio420_rx_0_0.set_default_rx_gain2(0) self.nutaq_radio420_rx_0_0.set_default_rx_gain3(-8) self.nutaq_radio420_rx_0_0.set_default_rx_rf_filter(2) self.nutaq_radio420_rx_0_0.set_default_rx_lpf_bandwidth(2) self.nutaq_radio420_rx_0_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_rx_0_0.set_default_rf_ctrl(0) self.nutaq_radio420_rx_0_0.set_default_rx_gain_ctrl(0) self.nutaq_radio420_rx_0_0.set_default_pll_cpld_ctrl(0) self.nutaq_radio420_rx_0 = nutaq.radio420_rx("nutaq_carrier_perseus_TX", 1, 2) self.nutaq_radio420_rx_0.set_default_enable(1) self.nutaq_radio420_rx_0.set_default_rx_freq(RF_freq) self.nutaq_radio420_rx_0.set_default_reference(0) self.nutaq_radio420_rx_0.set_default_datarate(samp_rate*2) self.nutaq_radio420_rx_0.set_default_calibrate(1) self.nutaq_radio420_rx_0.set_default_band(0) self.nutaq_radio420_rx_0.set_default_update_rate(1) self.nutaq_radio420_rx_0.set_default_rx_lna_gain(2) self.nutaq_radio420_rx_0.set_default_rx_vga1_gain(2) self.nutaq_radio420_rx_0.set_default_rx_gain2(0) self.nutaq_radio420_rx_0.set_default_rx_gain3(-8) self.nutaq_radio420_rx_0.set_default_rx_rf_filter(2) self.nutaq_radio420_rx_0.set_default_rx_lpf_bandwidth(2) self.nutaq_radio420_rx_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_rx_0.set_default_rf_ctrl(0) self.nutaq_radio420_rx_0.set_default_rx_gain_ctrl(0) self.nutaq_radio420_rx_0.set_default_pll_cpld_ctrl(0) self.nutaq_custom_register_0_1_1 = nutaq.custom_register("nutaq_carrier_perseus_TX",9) self.nutaq_custom_register_0_1_1.set_index(6) self.nutaq_custom_register_0_1_1.set_default_value(PSD_averaging) self.nutaq_custom_register_0_1_1.set_update_rate(1) self.nutaq_custom_register_0_1_0 = nutaq.custom_register("nutaq_carrier_perseus_TX",7) self.nutaq_custom_register_0_1_0.set_index(2) self.nutaq_custom_register_0_1_0.set_update_rate(1) self.nutaq_custom_register_0_1 = nutaq.custom_register("nutaq_carrier_perseus_TX",36) self.nutaq_custom_register_0_1.set_index(0) self.nutaq_custom_register_0_1.set_update_rate(1) self.nutaq_custom_register_0_0_0 = nutaq.custom_register("nutaq_carrier_perseus_TX",8) self.nutaq_custom_register_0_0_0.set_index(3) self.nutaq_custom_register_0_0_0.set_default_value(7) self.nutaq_custom_register_0_0_0.set_update_rate(1) self.nutaq_custom_register_0_0 = nutaq.custom_register("nutaq_carrier_perseus_TX",5) self.nutaq_custom_register_0_0.set_index(4) self.nutaq_custom_register_0_0.set_default_value(1) self.nutaq_custom_register_0_0.set_update_rate(1) self.nutaq_custom_register_0 = nutaq.custom_register("nutaq_carrier_perseus_TX",4) self.nutaq_custom_register_0.set_index(1) self.nutaq_custom_register_0.set_default_value(3) self.nutaq_custom_register_0.set_update_rate(1) self.nutaq_carrier_perseus_TX = nutaq.carrier(0,"nutaq_carrier_perseus_TX", "192.168.0.101") self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=oversampling, bt=0.71, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=oversampling, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_char*1, "192.168.0.100", 1234, 1472, True) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char*1, 2*4e3 + 0*samp_rate/40/(oversampling*8*2),True) self.blocks_short_to_float_0_1_0 = blocks.short_to_float(1, 2**11) self.blocks_short_to_float_0_0_0_0 = blocks.short_to_float(1, 2**11) self.blocks_multiply_const_vxx_0_3 = blocks.multiply_const_vff((2.0**(16*2), )) self.blocks_multiply_const_vxx_0_2 = blocks.multiply_const_vcc((amplitude, )) self.blocks_multiply_const_vxx_0_1_1 = blocks.multiply_const_vff((2.0**(16*0), )) self.blocks_multiply_const_vxx_0_1_0_0 = blocks.multiply_const_vff((2.0**(16*1), )) self.blocks_interleave_0 = blocks.interleave(gr.sizeof_short*1, 1) self.blocks_float_to_short_0_0_0 = blocks.float_to_short(1, 2**11-1) self.blocks_float_to_short_0_0 = blocks.float_to_short(1, 2**11-1) self.blocks_float_to_complex_0_0_0 = blocks.float_to_complex(1) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char*1, "/home/juan/Music/de_mi.mp3", True) self.blocks_deinterleave_0_0_1 = blocks.deinterleave(gr.sizeof_short*1, 1) self.blocks_deinterleave_0_0_0 = blocks.deinterleave(gr.sizeof_short*1, 1) self.blocks_complex_to_float_0 = blocks.complex_to_float(1) self.blocks_add_xx_0_0 = blocks.add_vff(1) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_b(grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=8, preamble="", access_code="", pad_for_usrp=True, ), payload_length=128, ) self.blks2_packet_decoder_1 = grc_blks2.packet_demod_b(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_1.recv_pkt(ok, payload), ), ) self.DataConversion_reint_short_float_0_3 = DataConversion.reint_short_float() self.DataConversion_reint_short_float_0_2_0 = DataConversion.reint_short_float() self.DataConversion_reint_short_float_0_1_0 = DataConversion.reint_short_float() self.DataConversion_reint_short_float_0_0_0 = DataConversion.reint_short_float() self.DataConversion_eaver_resynchronizer_0_0 = DataConversion.eaver_resynchronizer(1024) ################################################## # Connections ################################################## self.msg_connect((self.spectsensing_ss_pds_plot_0, 'psd_pdu'), (self.spectsensing_xs_plot_1, 'pdus')) self.connect((self.DataConversion_eaver_resynchronizer_0_0, 0), (self.spectsensing_ss_pds_plot_0, 0)) self.connect((self.DataConversion_eaver_resynchronizer_0_0, 1), (self.spectsensing_ss_pds_plot_0, 1)) self.connect((self.DataConversion_reint_short_float_0_0_0, 0), (self.blocks_multiply_const_vxx_0_3, 0)) self.connect((self.DataConversion_reint_short_float_0_1_0, 0), (self.blocks_multiply_const_vxx_0_1_0_0, 0)) self.connect((self.DataConversion_reint_short_float_0_2_0, 0), (self.blocks_multiply_const_vxx_0_1_1, 0)) self.connect((self.DataConversion_reint_short_float_0_3, 0), (self.DataConversion_eaver_resynchronizer_0_0, 0)) self.connect((self.blks2_packet_decoder_1, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_add_xx_0_0, 0), (self.DataConversion_eaver_resynchronizer_0_0, 1)) self.connect((self.blocks_complex_to_float_0, 0), (self.blocks_float_to_short_0_0, 0)) self.connect((self.blocks_complex_to_float_0, 1), (self.blocks_float_to_short_0_0_0, 0)) self.connect((self.blocks_deinterleave_0_0_0, 1), (self.blocks_short_to_float_0_0_0_0, 0)) self.connect((self.blocks_deinterleave_0_0_0, 0), (self.blocks_short_to_float_0_1_0, 0)) self.connect((self.blocks_deinterleave_0_0_1, 1), (self.DataConversion_reint_short_float_0_0_0, 0)) self.connect((self.blocks_deinterleave_0_0_1, 3), (self.DataConversion_reint_short_float_0_1_0, 0)) self.connect((self.blocks_deinterleave_0_0_1, 2), (self.DataConversion_reint_short_float_0_2_0, 0)) self.connect((self.blocks_deinterleave_0_0_1, 0), (self.DataConversion_reint_short_float_0_3, 0)) self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_float_to_complex_0_0_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blocks_float_to_short_0_0, 0), (self.blocks_interleave_0, 0)) self.connect((self.blocks_float_to_short_0_0_0, 0), (self.blocks_interleave_0, 1)) self.connect((self.blocks_interleave_0, 0), (self.nutaq_rtdex_sink_0, 0)) self.connect((self.blocks_multiply_const_vxx_0_1_0_0, 0), (self.blocks_add_xx_0_0, 2)) self.connect((self.blocks_multiply_const_vxx_0_1_1, 0), (self.blocks_add_xx_0_0, 1)) self.connect((self.blocks_multiply_const_vxx_0_2, 0), (self.blocks_complex_to_float_0, 0)) self.connect((self.blocks_multiply_const_vxx_0_3, 0), (self.blocks_add_xx_0_0, 0)) self.connect((self.blocks_short_to_float_0_0_0_0, 0), (self.blocks_float_to_complex_0_0_0, 1)) self.connect((self.blocks_short_to_float_0_1_0, 0), (self.blocks_float_to_complex_0_0_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_1, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_multiply_const_vxx_0_2, 0)) self.connect((self.nutaq_rtdex_source_0_0_0, 0), (self.blocks_deinterleave_0_0_0, 0)) self.connect((self.nutaq_rtdex_source_S_S_0, 0), (self.blocks_deinterleave_0_0_1, 0))
def __init__(self): gr.top_block.__init__(self, "Gfsk Loopback") Qt.QWidget.__init__(self) self.setWindowTitle("Gfsk Loopback") 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", "gfsk_loopback") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.sps = sps = 8 self.samp_rate = samp_rate = 32000 self.fm_sensitivity = fm_sensitivity = 1 self.enc = enc = fec.tpc_encoder_make(([3]), ([43]), 26, 6, 9, 3); self.dec = dec = fec.tpc_decoder_make(([3]), ([43]), 26, 6, 9, 3, 6, 0); ################################################## # Blocks ################################################## self.qtgui_time_sink_x_1_1 = qtgui.time_sink_f( 1024, #size samp_rate, #samp_rate 'TX_BITS', #name 1 #number of inputs ) self.qtgui_time_sink_x_1_1.set_update_time(0.10) self.qtgui_time_sink_x_1_1.set_y_axis(-1, 1) self.qtgui_time_sink_x_1_1.set_y_label('Amplitude', "") self.qtgui_time_sink_x_1_1.enable_tags(-1, True) self.qtgui_time_sink_x_1_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self.qtgui_time_sink_x_1_1.enable_autoscale(False) self.qtgui_time_sink_x_1_1.enable_grid(False) self.qtgui_time_sink_x_1_1.enable_axis_labels(True) self.qtgui_time_sink_x_1_1.enable_control_panel(False) self.qtgui_time_sink_x_1_1.enable_stem_plot(False) if not True: self.qtgui_time_sink_x_1_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(1): if len(labels[i]) == 0: self.qtgui_time_sink_x_1_1.set_line_label(i, "Data {0}".format(i)) else: self.qtgui_time_sink_x_1_1.set_line_label(i, labels[i]) self.qtgui_time_sink_x_1_1.set_line_width(i, widths[i]) self.qtgui_time_sink_x_1_1.set_line_color(i, colors[i]) self.qtgui_time_sink_x_1_1.set_line_style(i, styles[i]) self.qtgui_time_sink_x_1_1.set_line_marker(i, markers[i]) self.qtgui_time_sink_x_1_1.set_line_alpha(i, alphas[i]) self._qtgui_time_sink_x_1_1_win = sip.wrapinstance(self.qtgui_time_sink_x_1_1.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_time_sink_x_1_1_win) self.qtgui_time_sink_x_1 = qtgui.time_sink_f( 1024, #size samp_rate, #samp_rate 'RX_BITS', #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(-1, 1) 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, "") 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 True: 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(1): if len(labels[i]) == 0: self.qtgui_time_sink_x_1.set_line_label(i, "Data {0}".format(i)) 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.top_grid_layout.addWidget(self._qtgui_time_sink_x_1_win) self.qtgui_sink_x_0 = qtgui.sink_c( 1024, #fftsize firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc samp_rate, #bw "", #name True, #plotfreq True, #plotwaterfall True, #plottime True, #plotconst ) self.qtgui_sink_x_0.set_update_time(1.0/10) self._qtgui_sink_x_0_win = sip.wrapinstance(self.qtgui_sink_x_0.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_sink_x_0_win) self.qtgui_sink_x_0.enable_rf_freq(False) self._fm_sensitivity_range = Range(0, 10, 0.01, 1, 200) self._fm_sensitivity_win = RangeWidget(self._fm_sensitivity_range, self.set_fm_sensitivity, "fm_sensitivity", "counter_slider", float) self.top_grid_layout.addWidget(self._fm_sensitivity_win) self.fec_extended_encoder_0 = fec.extended_encoder(encoder_obj_list=enc, threading= None, puncpat='11') self.fec_extended_decoder_0 = fec.extended_decoder(decoder_obj_list=dec, threading= None, ann=None, puncpat='11', integration_period=10000) self.digital_scrambler_bb_0 = digital.scrambler_bb(0x8A, 0x7F, 7) self.digital_map_bb_0 = digital.map_bb(([-1, 1])) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=4, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=4, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_descrambler_bb_0 = digital.descrambler_bb(0x8A, 0x7F, 7) self.blocks_vector_source_x_0 = blocks.vector_source_b((0, 0, 0x55, 0x55), True, 1, []) self.blocks_unpack_k_bits_bb_0 = blocks.unpack_k_bits_bb(8) self.blocks_throttle_0_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True) self.blocks_pack_k_bits_bb_0 = blocks.pack_k_bits_bb(8) self.blocks_char_to_float_0_1 = 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.qtgui_time_sink_x_1_1, 0)) self.connect((self.blocks_char_to_float_0_0, 0), (self.qtgui_time_sink_x_1, 0)) self.connect((self.blocks_char_to_float_0_1, 0), (self.fec_extended_decoder_0, 0)) self.connect((self.blocks_pack_k_bits_bb_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_throttle_0_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blocks_throttle_0_0, 0), (self.qtgui_sink_x_0, 0)) self.connect((self.blocks_unpack_k_bits_bb_0, 0), (self.blocks_char_to_float_0, 0)) self.connect((self.blocks_unpack_k_bits_bb_0, 0), (self.digital_scrambler_bb_0, 0)) self.connect((self.blocks_vector_source_x_0, 0), (self.blocks_unpack_k_bits_bb_0, 0)) self.connect((self.digital_descrambler_bb_0, 0), (self.blocks_char_to_float_0_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.digital_map_bb_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_throttle_0_0, 0)) self.connect((self.digital_map_bb_0, 0), (self.blocks_char_to_float_0_1, 0)) self.connect((self.digital_scrambler_bb_0, 0), (self.fec_extended_encoder_0, 0)) self.connect((self.fec_extended_decoder_0, 0), (self.digital_descrambler_bb_0, 0)) self.connect((self.fec_extended_encoder_0, 0), (self.blocks_pack_k_bits_bb_0, 0))
def __init__(self): gr.top_block.__init__(self, "Example4 Rx") Qt.QWidget.__init__(self) self.setWindowTitle("Example4 Rx") 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", "example4_rx") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 2500000 self.length = length = 96 self.gain = gain = 0.3 self.freq = freq = 2375e6 ################################################## # Blocks ################################################## self.uhd_usrp_source_0_0 = uhd.usrp_source( ",".join(("", "serial=30C62C3")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0_0.set_subdev_spec("A:B", 0) self.uhd_usrp_source_0_0.set_time_unknown_pps(uhd.time_spec()) self.uhd_usrp_source_0_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0_0.set_center_freq(freq, 0) self.uhd_usrp_source_0_0.set_gain(gain, 0) self.rational_resampler_xxx_0_0 = filter.rational_resampler_ccc( interpolation=1, decimation=1, taps=None, fractional_bw=None, ) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=1, decimation=2, taps=None, fractional_bw=None, ) self.qtgui_time_sink_x_0_0 = qtgui.time_sink_f( 1024, #size samp_rate, #samp_rate "Demodulated OFDM 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, 1) self.qtgui_time_sink_x_0_0.set_y_label("Amplitude", "") self.qtgui_time_sink_x_0_0.enable_tags(-1, False) 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(True) self.qtgui_time_sink_x_0_0.enable_grid(False) self.qtgui_time_sink_x_0_0.enable_control_panel(False) if not True: self.qtgui_time_sink_x_0_0.disable_legend() labels = ["Bytes", "", "", "", "", "", "", "", "", ""] 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, 1,0,1,4) self.qtgui_time_sink_x_0 = qtgui.time_sink_f( 512, #size samp_rate, #samp_rate "Demodulated GMSK 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_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self.qtgui_time_sink_x_0.enable_autoscale(True) self.qtgui_time_sink_x_0.enable_grid(False) self.qtgui_time_sink_x_0.enable_control_panel(False) if not True: self.qtgui_time_sink_x_0.disable_legend() labels = ["Bytes", "", "", "", "", "", "", "", "", ""] 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, 0,2,1,2) self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c( 1024, #size firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc samp_rate, #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_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_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 = ["", "", "", "", "", "", "", "", "", ""] 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_layout.addWidget(self._qtgui_freq_sink_x_0_win) self.qtgui_const_sink_x_0 = qtgui.const_sink_c( 1024, #size "GMSK Constellation", #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, "") self.qtgui_const_sink_x_0.enable_autoscale(False) self.qtgui_const_sink_x_0.enable_grid(False) if not True: 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.top_grid_layout.addWidget(self._qtgui_const_sink_x_0_win, 0,0,1,2) self.mysvl_svl_0_0 = mysvl.svl(gr.sizeof_gr_complex*1, 1, "./inputs/spectrum_maps/example1a_rx.txt", "./inputs/parameters/example1a-c_rx.txt") self.digital_ofdm_rx_0 = digital.ofdm_rx( fft_len=64, cp_len=16, frame_length_tag_key='frame_'+"length", packet_length_tag_key="length", bps_header=1, bps_payload=2, debug_log=False, scramble_bits=False ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0_0 = blocks.file_sink(gr.sizeof_char*1, "./outputs/output_audio1.mp3", False) self.blocks_file_sink_0_0.set_unbuffered(False) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "./outputs/output_audio2.mp3", False) self.blocks_file_sink_0.set_unbuffered(False) 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) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_char_to_float_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0_0, 0)) self.connect((self.blocks_char_to_float_0, 0), (self.qtgui_time_sink_x_0, 0)) self.connect((self.blocks_char_to_float_0_0, 0), (self.qtgui_time_sink_x_0_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_ofdm_rx_0, 0), (self.blocks_char_to_float_0_0, 0)) self.connect((self.digital_ofdm_rx_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.mysvl_svl_0_0, 1), (self.rational_resampler_xxx_0, 0)) self.connect((self.mysvl_svl_0_0, 0), (self.rational_resampler_xxx_0_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.qtgui_const_sink_x_0, 0)) self.connect((self.rational_resampler_xxx_0_0, 0), (self.digital_ofdm_rx_0, 0)) self.connect((self.uhd_usrp_source_0_0, 0), (self.mysvl_svl_0_0, 0)) self.connect((self.uhd_usrp_source_0_0, 0), (self.qtgui_freq_sink_x_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Gmsk Test") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.target_freq = target_freq = 871.75e6 self.channel_wigth = channel_wigth = 2e6 self.samp_rate = samp_rate = 10e6 self.center_freq = center_freq = target_freq - channel_wigth ################################################## # Blocks ################################################## self.wxgui_constellationsink2_0 = constsink_gl.const_sink_c( self.GetWin(), title="Constellation Plot", sample_rate=samp_rate / 2, frame_rate=20, const_size=1024, M=4, theta=0, loop_bw=6.28 / 100.0, fmax=0.06, mu=0.5, gain_mu=0.005, symbol_rate=samp_rate / 4., omega_limit=0.005, ) self.Add(self.wxgui_constellationsink2_0.win) self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "") self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(center_freq, 0) self.osmosdr_source_0.set_freq_corr(0, 0) self.osmosdr_source_0.set_dc_offset_mode(0, 0) self.osmosdr_source_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0.set_gain_mode(False, 0) self.osmosdr_source_0.set_gain(10, 0) self.osmosdr_source_0.set_if_gain(20, 0) self.osmosdr_source_0.set_bb_gain(20, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.low_pass_filter_0 = filter.fir_filter_ccf( 2, firdes.low_pass(1, samp_rate, 1e6, 1.5e6, firdes.WIN_HAMMING, 6.76)) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_float * 1, "/home/twilight/GMSK_test/test_data_in.txt", False) self.blocks_file_sink_0.set_unbuffered(False) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) self.analog_sig_source_x_0 = analog.sig_source_c( samp_rate, analog.GR_COS_WAVE, -channel_wigth, 1, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blocks_multiply_xx_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.wxgui_constellationsink2_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.blocks_multiply_xx_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="DVB Simulator (GMSK)") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.signal = signal = 1 self.samp_rate = samp_rate = 32000 self.noise = noise = 10 ################################################## # Blocks ################################################## _signal_sizer = wx.BoxSizer(wx.VERTICAL) self._signal_text_box = forms.text_box( parent=self.GetWin(), sizer=_signal_sizer, value=self.signal, callback=self.set_signal, label="Signal", converter=forms.float_converter(), proportion=0, ) self._signal_slider = forms.slider( parent=self.GetWin(), sizer=_signal_sizer, value=self.signal, callback=self.set_signal, minimum=0, maximum=1000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_signal_sizer) _noise_sizer = wx.BoxSizer(wx.VERTICAL) self._noise_text_box = forms.text_box( parent=self.GetWin(), sizer=_noise_sizer, value=self.noise, callback=self.set_noise, label="Noise", converter=forms.float_converter(), proportion=0, ) self._noise_slider = forms.slider( parent=self.GetWin(), sizer=_noise_sizer, value=self.noise, callback=self.set_noise, minimum=0, maximum=1000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_noise_sizer) self.gr_wavfile_source_0 = gr.wavfile_source( "/home/traviscollins/GNURADIO/tfc_models/test.wav", False) self.gr_throttle_0 = gr.throttle(gr.sizeof_float * 1, samp_rate) self.gr_noise_source_x_0 = gr.noise_source_c(gr.GR_GAUSSIAN, noise, 42) self.gr_multiply_const_vxx_0 = gr.multiply_const_vcc((signal, )) self.gr_file_sink_1_0 = gr.file_sink( gr.sizeof_float * 1, "/home/traviscollins/GNURADIO/tfc_models/output_txt.wav") self.gr_file_sink_1_0.set_unbuffered(False) self.gr_channel_model_0 = gr.channel_model( noise_voltage=20, frequency_offset=0.0, epsilon=1.0, taps=(1.0 + 1.0j, ), noise_seed=42, ) self.gr_add_xx_0 = gr.add_vcc(1) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=2, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_f( grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=1, access_code="", pad_for_usrp=True, ), payload_length=0, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) self.audio_sink_0 = audio.sink(samp_rate, "", True) ################################################## # Connections ################################################## self.connect((self.gr_noise_source_x_0, 0), (self.gr_add_xx_0, 1)) self.connect((self.gr_add_xx_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.gr_multiply_const_vxx_0, 0)) self.connect((self.gr_throttle_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.gr_throttle_0, 0), (self.gr_file_sink_1_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.gr_multiply_const_vxx_0, 0), (self.gr_channel_model_0, 0)) self.connect((self.gr_channel_model_0, 0), (self.gr_add_xx_0, 0)) self.connect((self.gr_wavfile_source_0, 0), (self.gr_throttle_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.audio_sink_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 250e3 self.gain = gain = 75 ################################################## # Blocks ################################################## _gain_sizer = wx.BoxSizer(wx.VERTICAL) self._gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_gain_sizer, value=self.gain, callback=self.set_gain, label='gain', converter=forms.float_converter(), proportion=0, ) self._gain_slider = forms.slider( parent=self.GetWin(), sizer=_gain_sizer, value=self.gain, callback=self.set_gain, minimum=0, maximum=75, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_gain_sizer) self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( self.GetWin(), title='Scope Plot', sample_rate=samp_rate, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=False, num_inputs=1, trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label='Counts', ) self.Add(self.wxgui_scopesink2_0.win) self.wxgui_fftsink2_1 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=13.49e1, sample_rate=samp_rate, fft_size=1024, fft_rate=30, average=False, avg_alpha=None, title='FFT Plot receiver', peak_hold=False, ) self.Add(self.wxgui_fftsink2_1.win) 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 transmitter', peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(915e6, 0) self.uhd_usrp_source_0.set_gain(gain, 0) self.uhd_usrp_source_0.set_antenna('RX2', 0) self.uhd_usrp_source_0.set_auto_dc_offset(True, 0) self.uhd_usrp_source_0.set_auto_iq_balance(True, 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq(915e6, 0) self.uhd_usrp_sink_0.set_gain(10, 0) self.uhd_usrp_sink_0.set_antenna('TX/RX', 0) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=4, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=4, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, '/home/elementa/Desktop/30MARCH/IMAGE/VARIATION/SENT.odt', True) self.blocks_file_source_0.set_begin_tag(pmt.PMT_NIL) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float*1, '/home/elementa/Desktop/30MARCH/IMAGE/VARIATION/RECEIVED.odt', False) self.blocks_file_sink_0.set_unbuffered(False) self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex*1, 250000) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_c(grc_blks2.packet_encoder( samples_per_symbol=4, bits_per_symbol=2, preamble='', access_code='', pad_for_usrp=True, ), payload_length=0, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_f(grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_delay_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.blocks_delay_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_delay_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_fftsink2_1, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_scopesink2_0, 0))
def __init__(self): gr.top_block.__init__(self, "Dect Multirx") Qt.QWidget.__init__(self) self.setWindowTitle("Dect Multirx") 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", "dect_multirx") try: if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): self.restoreGeometry( self.settings.value("geometry").toByteArray()) else: self.restoreGeometry(self.settings.value("geometry")) except: pass ################################################## # Variables ################################################## self.symbol_rate = symbol_rate = 1.152e6 self.samp_rate = samp_rate = 20e6 self.rf_gain = rf_gain = 10 self.ppm = ppm = 0 self.if_gain = if_gain = 20 self.channels = channels = 11 self.ch_tb = ch_tb = 1.728e6 - symbol_rate self.ch_bw = ch_bw = 1.728e6 self.bb_gain = bb_gain = 20 self.atten = atten = 60 self.total_bw = total_bw = ch_bw * channels self.range_rf_gain = range_rf_gain = rf_gain self.range_ppm = range_ppm = ppm self.range_if_gain = range_if_gain = if_gain self.range_bb_gain = range_bb_gain = bb_gain self.pfb_taps = pfb_taps = firdes.low_pass_2(1, samp_rate, ch_bw, ch_tb, atten, firdes.WIN_HANN) self.bb_freq = bb_freq = 1897.344e6 - (5 * 1.728e6) ################################################## # Blocks ################################################## self.rational_resampler_xxx_1_1_0 = filter.rational_resampler_ccc( interpolation=4, decimation=3, taps=None, fractional_bw=None) self.rational_resampler_xxx_1_1 = filter.rational_resampler_ccc( interpolation=4, decimation=3, taps=None, fractional_bw=None) self.rational_resampler_xxx_1_0_1_0 = filter.rational_resampler_ccc( interpolation=4, decimation=3, taps=None, fractional_bw=None) self.rational_resampler_xxx_1_0_1 = filter.rational_resampler_ccc( interpolation=4, decimation=3, taps=None, fractional_bw=None) self.rational_resampler_xxx_1_0_0_1 = filter.rational_resampler_ccc( interpolation=4, decimation=3, taps=None, fractional_bw=None) self.rational_resampler_xxx_1_0_0_0_0 = filter.rational_resampler_ccc( interpolation=4, decimation=3, taps=None, fractional_bw=None) self.rational_resampler_xxx_1_0_0_0 = filter.rational_resampler_ccc( interpolation=4, decimation=3, taps=None, fractional_bw=None) self.rational_resampler_xxx_1_0_0 = filter.rational_resampler_ccc( interpolation=4, decimation=3, taps=None, fractional_bw=None) self.rational_resampler_xxx_1_0 = filter.rational_resampler_ccc( interpolation=4, decimation=3, taps=None, fractional_bw=None) self.rational_resampler_xxx_1 = filter.rational_resampler_ccc( interpolation=4, decimation=3, taps=None, fractional_bw=None) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=594, decimation=625, taps=None, fractional_bw=None) self._range_rf_gain_range = Range(0, 100, 1, rf_gain, 200) self._range_rf_gain_win = RangeWidget(self._range_rf_gain_range, self.set_range_rf_gain, 'RF Gain', "counter_slider", float) self.top_grid_layout.addWidget(self._range_rf_gain_win) self._range_ppm_range = Range(-70, 70, 1, ppm, 200) self._range_ppm_win = RangeWidget(self._range_ppm_range, self.set_range_ppm, 'PPM', "counter_slider", float) self.top_grid_layout.addWidget(self._range_ppm_win) self._range_if_gain_range = Range(0, 100, 1, if_gain, 200) self._range_if_gain_win = RangeWidget(self._range_if_gain_range, self.set_range_if_gain, 'IF Gain', "counter_slider", float) self.top_grid_layout.addWidget(self._range_if_gain_win) self._range_bb_gain_range = Range(0, 100, 1, bb_gain, 200) self._range_bb_gain_win = RangeWidget(self._range_bb_gain_range, self.set_range_bb_gain, 'BB Gain', "counter_slider", float) self.top_grid_layout.addWidget(self._range_bb_gain_win) self.qtgui_waterfall_sink_x_0 = qtgui.waterfall_sink_c( 1024, #size firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc samp_rate, #bw "", #name 1 #number of inputs ) self.qtgui_waterfall_sink_x_0.set_update_time(0.10) self.qtgui_waterfall_sink_x_0.enable_grid(False) self.qtgui_waterfall_sink_x_0.enable_axis_labels(True) labels = ['', '', '', '', '', '', '', '', '', ''] colors = [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 range(1): if len(labels[i]) == 0: self.qtgui_waterfall_sink_x_0.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_waterfall_sink_x_0.set_line_label(i, labels[i]) self.qtgui_waterfall_sink_x_0.set_color_map(i, colors[i]) self.qtgui_waterfall_sink_x_0.set_line_alpha(i, alphas[i]) self.qtgui_waterfall_sink_x_0.set_intensity_range(-140, 10) self._qtgui_waterfall_sink_x_0_win = sip.wrapinstance( self.qtgui_waterfall_sink_x_0.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_waterfall_sink_x_0_win) self.pfb_channelizer_ccf_0 = pfb.channelizer_ccf( 11, pfb_taps, 1.0, 100) self.pfb_channelizer_ccf_0.set_channel_map([]) self.pfb_channelizer_ccf_0.declare_sample_delay(0) self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + '') self.osmosdr_source_0.set_time_unknown_pps(osmosdr.time_spec_t()) self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(bb_freq, 0) self.osmosdr_source_0.set_freq_corr(ppm, 0) self.osmosdr_source_0.set_gain(rf_gain, 0) self.osmosdr_source_0.set_if_gain(if_gain, 0) self.osmosdr_source_0.set_bb_gain(bb_gain, 0) self.osmosdr_source_0.set_antenna('', 0) self.osmosdr_source_0.set_bandwidth(20e6, 0) self.digital_gmsk_demod_0_1_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False) self.digital_gmsk_demod_0_1 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False) self.digital_gmsk_demod_0_0_1_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False) self.digital_gmsk_demod_0_0_1 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False) self.digital_gmsk_demod_0_0_0_1 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False) self.digital_gmsk_demod_0_0_0_0_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False) self.digital_gmsk_demod_0_0_0_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False) self.digital_gmsk_demod_0_0_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False) self.digital_gmsk_demod_0_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False) self.blocks_udp_sink_0_1_0 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 2330, 1472, True) self.blocks_udp_sink_0_1 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 2326, 1472, True) self.blocks_udp_sink_0_0_1_0 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 2331, 1472, True) self.blocks_udp_sink_0_0_1 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 2327, 1472, True) self.blocks_udp_sink_0_0_0_1 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 2329, 1472, True) self.blocks_udp_sink_0_0_0_0_0 = blocks.udp_sink( gr.sizeof_char * 1, '127.0.0.1', 2332, 1472, True) self.blocks_udp_sink_0_0_0_0 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 2328, 1472, True) self.blocks_udp_sink_0_0_0 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 2325, 1472, True) self.blocks_udp_sink_0_0 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 2324, 1472, True) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 2323, 1472, True) self.blocks_pack_k_bits_bb_0_1_0 = blocks.pack_k_bits_bb(8) self.blocks_pack_k_bits_bb_0_1 = blocks.pack_k_bits_bb(8) self.blocks_pack_k_bits_bb_0_0_1_0 = blocks.pack_k_bits_bb(8) self.blocks_pack_k_bits_bb_0_0_1 = blocks.pack_k_bits_bb(8) self.blocks_pack_k_bits_bb_0_0_0_1 = blocks.pack_k_bits_bb(8) self.blocks_pack_k_bits_bb_0_0_0_0_0 = blocks.pack_k_bits_bb(8) self.blocks_pack_k_bits_bb_0_0_0_0 = blocks.pack_k_bits_bb(8) self.blocks_pack_k_bits_bb_0_0_0 = blocks.pack_k_bits_bb(8) self.blocks_pack_k_bits_bb_0_0 = blocks.pack_k_bits_bb(8) self.blocks_pack_k_bits_bb_0 = blocks.pack_k_bits_bb(8) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_gr_complex * 1) ################################################## # Connections ################################################## self.connect((self.blocks_pack_k_bits_bb_0, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.blocks_pack_k_bits_bb_0_0, 0), (self.blocks_udp_sink_0_0, 0)) self.connect((self.blocks_pack_k_bits_bb_0_0_0, 0), (self.blocks_udp_sink_0_0_0, 0)) self.connect((self.blocks_pack_k_bits_bb_0_0_0_0, 0), (self.blocks_udp_sink_0_0_0_0, 0)) self.connect((self.blocks_pack_k_bits_bb_0_0_0_0_0, 0), (self.blocks_udp_sink_0_0_0_0_0, 0)) self.connect((self.blocks_pack_k_bits_bb_0_0_0_1, 0), (self.blocks_udp_sink_0_0_0_1, 0)) self.connect((self.blocks_pack_k_bits_bb_0_0_1, 0), (self.blocks_udp_sink_0_0_1, 0)) self.connect((self.blocks_pack_k_bits_bb_0_0_1_0, 0), (self.blocks_udp_sink_0_0_1_0, 0)) self.connect((self.blocks_pack_k_bits_bb_0_1, 0), (self.blocks_udp_sink_0_1, 0)) self.connect((self.blocks_pack_k_bits_bb_0_1_0, 0), (self.blocks_udp_sink_0_1_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blocks_pack_k_bits_bb_0, 0)) self.connect((self.digital_gmsk_demod_0_0, 0), (self.blocks_pack_k_bits_bb_0_0, 0)) self.connect((self.digital_gmsk_demod_0_0_0, 0), (self.blocks_pack_k_bits_bb_0_0_0, 0)) self.connect((self.digital_gmsk_demod_0_0_0_0, 0), (self.blocks_pack_k_bits_bb_0_0_0_0, 0)) self.connect((self.digital_gmsk_demod_0_0_0_0_0, 0), (self.blocks_pack_k_bits_bb_0_0_0_0_0, 0)) self.connect((self.digital_gmsk_demod_0_0_0_1, 0), (self.blocks_pack_k_bits_bb_0_0_0_1, 0)) self.connect((self.digital_gmsk_demod_0_0_1, 0), (self.blocks_pack_k_bits_bb_0_0_1, 0)) self.connect((self.digital_gmsk_demod_0_0_1_0, 0), (self.blocks_pack_k_bits_bb_0_0_1_0, 0)) self.connect((self.digital_gmsk_demod_0_1, 0), (self.blocks_pack_k_bits_bb_0_1, 0)) self.connect((self.digital_gmsk_demod_0_1_0, 0), (self.blocks_pack_k_bits_bb_0_1_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.qtgui_waterfall_sink_x_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.pfb_channelizer_ccf_0, 0), (self.blocks_null_sink_0, 0)) self.connect((self.pfb_channelizer_ccf_0, 1), (self.rational_resampler_xxx_1, 0)) self.connect((self.pfb_channelizer_ccf_0, 2), (self.rational_resampler_xxx_1_0, 0)) self.connect((self.pfb_channelizer_ccf_0, 3), (self.rational_resampler_xxx_1_0_0, 0)) self.connect((self.pfb_channelizer_ccf_0, 6), (self.rational_resampler_xxx_1_0_0_0, 0)) self.connect((self.pfb_channelizer_ccf_0, 10), (self.rational_resampler_xxx_1_0_0_0_0, 0)) self.connect((self.pfb_channelizer_ccf_0, 7), (self.rational_resampler_xxx_1_0_0_1, 0)) self.connect((self.pfb_channelizer_ccf_0, 5), (self.rational_resampler_xxx_1_0_1, 0)) self.connect((self.pfb_channelizer_ccf_0, 9), (self.rational_resampler_xxx_1_0_1_0, 0)) self.connect((self.pfb_channelizer_ccf_0, 4), (self.rational_resampler_xxx_1_1, 0)) self.connect((self.pfb_channelizer_ccf_0, 8), (self.rational_resampler_xxx_1_1_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.pfb_channelizer_ccf_0, 0)) self.connect((self.rational_resampler_xxx_1, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.rational_resampler_xxx_1_0, 0), (self.digital_gmsk_demod_0_0, 0)) self.connect((self.rational_resampler_xxx_1_0_0, 0), (self.digital_gmsk_demod_0_0_0, 0)) self.connect((self.rational_resampler_xxx_1_0_0_0, 0), (self.digital_gmsk_demod_0_0_0_0, 0)) self.connect((self.rational_resampler_xxx_1_0_0_0_0, 0), (self.digital_gmsk_demod_0_0_0_0_0, 0)) self.connect((self.rational_resampler_xxx_1_0_0_1, 0), (self.digital_gmsk_demod_0_0_0_1, 0)) self.connect((self.rational_resampler_xxx_1_0_1, 0), (self.digital_gmsk_demod_0_0_1, 0)) self.connect((self.rational_resampler_xxx_1_0_1_0, 0), (self.digital_gmsk_demod_0_0_1_0, 0)) self.connect((self.rational_resampler_xxx_1_1, 0), (self.digital_gmsk_demod_0_1, 0)) self.connect((self.rational_resampler_xxx_1_1_0, 0), (self.digital_gmsk_demod_0_1_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Gmsk Test") _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 = 5e6 self.gain = gain = 25 self.decimation = decimation = 10 self.center_freq = center_freq = 871.9e6 ################################################## # Blocks ################################################## _gain_sizer = wx.BoxSizer(wx.VERTICAL) self._gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_gain_sizer, value=self.gain, callback=self.set_gain, label='gain', converter=forms.float_converter(), proportion=0, ) self._gain_slider = forms.slider( parent=self.GetWin(), sizer=_gain_sizer, value=self.gain, callback=self.set_gain, minimum=0, maximum=50, num_steps=125, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_gain_sizer) _center_freq_sizer = wx.BoxSizer(wx.VERTICAL) self._center_freq_text_box = forms.text_box( parent=self.GetWin(), sizer=_center_freq_sizer, value=self.center_freq, callback=self.set_center_freq, label='center_freq', converter=forms.float_converter(), proportion=0, ) self._center_freq_slider = forms.slider( parent=self.GetWin(), sizer=_center_freq_sizer, value=self.center_freq, callback=self.set_center_freq, minimum=300e6, maximum=2400e6, num_steps=200, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_center_freq_sizer) self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( self.GetWin(), title="Scope Plot", sample_rate=samp_rate/decimation, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=False, num_inputs=1, trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label="Counts", ) self.Add(self.wxgui_scopesink2_0.win) self.wxgui_fftsink2_1 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=center_freq, 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_1.win) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=1, decimation=decimation, taps=None, fractional_bw=None, ) self.osmosdr_source_0_0 = osmosdr.source( args="numchan=" + str(1) + " " + "" ) self.osmosdr_source_0_0.set_sample_rate(samp_rate) self.osmosdr_source_0_0.set_center_freq(center_freq, 0) self.osmosdr_source_0_0.set_freq_corr(0, 0) self.osmosdr_source_0_0.set_dc_offset_mode(0, 0) self.osmosdr_source_0_0.set_iq_balance_mode(2, 0) self.osmosdr_source_0_0.set_gain_mode(True, 0) self.osmosdr_source_0_0.set_gain(gain, 0) self.osmosdr_source_0_0.set_if_gain(20, 0) self.osmosdr_source_0_0.set_bb_gain(20, 0) self.osmosdr_source_0_0.set_antenna("", 0) self.osmosdr_source_0_0.set_bandwidth(0, 0) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "/home/celestia/data.txt", False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.digital_gmsk_demod_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.osmosdr_source_0_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.osmosdr_source_0_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.osmosdr_source_0_0, 0), (self.wxgui_fftsink2_1, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.wxgui_scopesink2_0, 0))
def __init__(self): gr.top_block.__init__(self, "Dectrx") Qt.QWidget.__init__(self) self.setWindowTitle("Dectrx") 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", "Dectrx") try: if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): self.restoreGeometry( self.settings.value("geometry").toByteArray()) else: self.restoreGeometry(self.settings.value("geometry")) except: pass ################################################## # Variables ################################################## self.rf_gain = rf_gain = 10 self.ppm = ppm = 0 self.if_gain = if_gain = 20 self.channel = channel = 3 self.bb_gain = bb_gain = 20 self.variable_qtgui_range_1_0 = variable_qtgui_range_1_0 = channel self.variable_qtgui_range_1 = variable_qtgui_range_1 = ppm self.variable_qtgui_range_0_1 = variable_qtgui_range_0_1 = bb_gain self.variable_qtgui_range_0_0 = variable_qtgui_range_0_0 = if_gain self.variable_qtgui_range_0 = variable_qtgui_range_0 = rf_gain self.samp_rate = samp_rate = 2.4e6 self.freq = freq = 1897.344e6 - (channel * 1.728e6) self.dect_rate = dect_rate = 1.152e6 ################################################## # Blocks ################################################## self._variable_qtgui_range_1_0_range = Range(1, 12, 1, channel, 200) self._variable_qtgui_range_1_0_win = RangeWidget( self._variable_qtgui_range_1_0_range, self.set_variable_qtgui_range_1_0, 'Channel', "counter_slider", int) self.top_grid_layout.addWidget(self._variable_qtgui_range_1_0_win) self._variable_qtgui_range_1_range = Range(-70, 70, 1, ppm, 200) self._variable_qtgui_range_1_win = RangeWidget( self._variable_qtgui_range_1_range, self.set_variable_qtgui_range_1, 'PPM', "counter_slider", int) self.top_grid_layout.addWidget(self._variable_qtgui_range_1_win) self._variable_qtgui_range_0_1_range = Range(0, 100, 1, bb_gain, 200) self._variable_qtgui_range_0_1_win = RangeWidget( self._variable_qtgui_range_0_1_range, self.set_variable_qtgui_range_0_1, 'BB Gain', "counter_slider", float) self.top_grid_layout.addWidget(self._variable_qtgui_range_0_1_win) self._variable_qtgui_range_0_0_range = Range(0, 100, 1, if_gain, 200) self._variable_qtgui_range_0_0_win = RangeWidget( self._variable_qtgui_range_0_0_range, self.set_variable_qtgui_range_0_0, 'IF Gain', "counter_slider", float) self.top_grid_layout.addWidget(self._variable_qtgui_range_0_0_win) self._variable_qtgui_range_0_range = Range(0, 100, 1, rf_gain, 200) self._variable_qtgui_range_0_win = RangeWidget( self._variable_qtgui_range_0_range, self.set_variable_qtgui_range_0, 'RF Gain', "counter_slider", float) self.top_grid_layout.addWidget(self._variable_qtgui_range_0_win) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=24, decimation=25, taps=None, fractional_bw=None) self.qtgui_waterfall_sink_x_0 = qtgui.waterfall_sink_c( 52, #size firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc freq, #bw 'Waterfall Plot', #name 1 #number of inputs ) self.qtgui_waterfall_sink_x_0.set_update_time(0.10) self.qtgui_waterfall_sink_x_0.enable_grid(False) self.qtgui_waterfall_sink_x_0.enable_axis_labels(True) labels = ['', '', '', '', '', '', '', '', '', ''] colors = [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 range(1): if len(labels[i]) == 0: self.qtgui_waterfall_sink_x_0.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_waterfall_sink_x_0.set_line_label(i, labels[i]) self.qtgui_waterfall_sink_x_0.set_color_map(i, colors[i]) self.qtgui_waterfall_sink_x_0.set_line_alpha(i, alphas[i]) self.qtgui_waterfall_sink_x_0.set_intensity_range(-140, 10) self._qtgui_waterfall_sink_x_0_win = sip.wrapinstance( self.qtgui_waterfall_sink_x_0.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_waterfall_sink_x_0_win) self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + 'numchan=1 ') self.osmosdr_source_0.set_time_unknown_pps(osmosdr.time_spec_t()) self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(freq, 0) self.osmosdr_source_0.set_freq_corr(ppm, 0) self.osmosdr_source_0.set_gain(rf_gain, 0) self.osmosdr_source_0.set_if_gain(if_gain, 0) self.osmosdr_source_0.set_bb_gain(bb_gain, 0) self.osmosdr_source_0.set_antenna('', 0) self.osmosdr_source_0.set_bandwidth(dect_rate, 0) self.low_pass_filter_0 = filter.fir_filter_ccf( 1, firdes.low_pass(1, samp_rate, dect_rate, 10e3, firdes.WIN_HAMMING, 6.76)) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 2323, 1472, True) self.blocks_pack_k_bits_bb_0 = blocks.pack_k_bits_bb(8) ################################################## # Connections ################################################## self.connect((self.blocks_pack_k_bits_bb_0, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blocks_pack_k_bits_bb_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.qtgui_waterfall_sink_x_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.low_pass_filter_0, 0))
def __init__(self): gr.top_block.__init__(self, "SUCHAI 1 Decoder") ################################################## # Variables ################################################## self.threshold = threshold = 2 self.sync = sync = "11000011101010100110011001010101" self.samples_symbol = samples_symbol = 20 self.samp_rate = samp_rate = 48000 self.packlen = packlen = (255+3)*8 self.demod_freq = demod_freq = -1800 self.cutoff_freq = cutoff_freq = 1400 ################################################## # Blocks ################################################## self.zeromq_pub_msg_sink_0 = zeromq.pub_msg_sink('tcp://127.0.0.1:5556', 100) self.satellites_u482c_decode_0 = satellites.u482c_decode(False, 0, 1, 1) self.satellites_suchai_telemetry_0 = satellites.suchai_telemetry() self.satellites_print_timestamp_0 = satellites.print_timestamp('%Y-%m-%d %H:%M:%S') self.satellites_print_csp_message_0 = satellites.print_csp_message() self.satellites_fixedlen_tagger_0_0_0 = satellites.fixedlen_tagger('syncword', 'packet_len', packlen, numpy.byte) self.low_pass_filter_0 = filter.fir_filter_ccf(1, firdes.low_pass( 1, samp_rate, cutoff_freq, 1000, firdes.WIN_HAMMING, 6.76)) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=samples_symbol, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_correlate_access_code_tag_bb_0_0_0 = digital.correlate_access_code_tag_bb(sync, threshold, 'syncword') self.blocks_wavfile_source_0 = blocks.wavfile_source('/home/carlos/Descargas/suchai_test.wav', False) self.blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_float*1, samp_rate,True) self.blocks_tagged_stream_to_pdu_0_0_0 = blocks.tagged_stream_to_pdu(blocks.byte_t, 'packet_len') self.blocks_tagged_stream_multiply_length_0 = blocks.tagged_stream_multiply_length(gr.sizeof_char*1, 'packet_len', 1/8.0) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_conjugate_cc_0 = blocks.conjugate_cc() self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, demod_freq, 1, 0) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tagged_stream_to_pdu_0_0_0, 'pdus'), (self.satellites_u482c_decode_0, 'in')) self.msg_connect((self.satellites_print_timestamp_0, 'out'), (self.satellites_print_csp_message_0, 'in')) self.msg_connect((self.satellites_print_timestamp_0, 'out'), (self.satellites_suchai_telemetry_0, 'in')) self.msg_connect((self.satellites_suchai_telemetry_0, 'out'), (self.zeromq_pub_msg_sink_0, 'in')) self.msg_connect((self.satellites_u482c_decode_0, 'out'), (self.satellites_print_timestamp_0, 'in')) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 0)) self.connect((self.blocks_conjugate_cc_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.blocks_multiply_xx_0, 0), (self.blocks_conjugate_cc_0, 0)) self.connect((self.blocks_tagged_stream_multiply_length_0, 0), (self.blocks_tagged_stream_to_pdu_0_0_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.blocks_tagged_stream_multiply_length_0, 0)) self.connect((self.blocks_wavfile_source_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.digital_correlate_access_code_tag_bb_0_0_0, 0), (self.satellites_fixedlen_tagger_0_0_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.digital_correlate_access_code_tag_bb_0_0_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.satellites_fixedlen_tagger_0_0_0, 0), (self.blocks_unpacked_to_packed_xx_0, 0))
def __init__(self): gr.top_block.__init__(self, "Ble Decode") Qt.QWidget.__init__(self) self.setWindowTitle("Ble Decode") 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", "ble_decode") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.transition_width = transition_width = 300e3 self.samp_rate = samp_rate = int(4e6) self.freq_selector = freq_selector = 2402000000 self.cutoff_freq = cutoff_freq = 850e3 self.channels_map = channels_map = { 2402000000:37, 2426000000:38, 2480000000:39} self.squelch = squelch = -70 self.signal_bandwidth = signal_bandwidth = int(1e6) self.samp_per_sym = samp_per_sym = 4 self.lowpass_filter = lowpass_filter = firdes.low_pass(1, samp_rate, cutoff_freq, transition_width, firdes.WIN_HAMMING, 6.76) self.label_freq = label_freq = freq_selector/1000000 self.freq_offset = freq_offset = int(1e6) self.current_channel = current_channel = channels_map[freq_selector] self.channels = channels = { "Ch37": 2402000000, "Ch38": 2426000000, "Ch39": 2480000000} ################################################## # Blocks ################################################## self._squelch_range = Range(-100, -30, 1, -70, 200) self._squelch_win = RangeWidget(self._squelch_range, self.set_squelch, "squelch", "counter_slider", float) self.top_grid_layout.addWidget(self._squelch_win, 0,2,1,1) self._freq_selector_options = list(channels.values()) self._freq_selector_labels = list(channels.keys()) self._freq_selector_group_box = Qt.QGroupBox('Channel') self._freq_selector_box = Qt.QHBoxLayout() class variable_chooser_button_group(Qt.QButtonGroup): def __init__(self, parent=None): Qt.QButtonGroup.__init__(self, parent) @pyqtSlot(int) def updateButtonChecked(self, button_id): self.button(button_id).setChecked(True) self._freq_selector_button_group = variable_chooser_button_group() self._freq_selector_group_box.setLayout(self._freq_selector_box) for i, label in enumerate(self._freq_selector_labels): radio_button = Qt.QRadioButton(label) self._freq_selector_box.addWidget(radio_button) self._freq_selector_button_group.addButton(radio_button, i) self._freq_selector_callback = lambda i: Qt.QMetaObject.invokeMethod(self._freq_selector_button_group, "updateButtonChecked", Qt.Q_ARG("int", self._freq_selector_options.index(i))) self._freq_selector_callback(self.freq_selector) self._freq_selector_button_group.buttonClicked[int].connect( lambda i: self.set_freq_selector(self._freq_selector_options[i])) self.top_grid_layout.addWidget(self._freq_selector_group_box, 0,0,1,1) self.qtgui_const_sink_x_1 = qtgui.const_sink_c( 1024, #size "", #name 1 #number of inputs ) self.qtgui_const_sink_x_1.set_update_time(0.1) self.qtgui_const_sink_x_1.set_y_axis(-2, 2) self.qtgui_const_sink_x_1.set_x_axis(-2, 2) self.qtgui_const_sink_x_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, "") self.qtgui_const_sink_x_1.enable_autoscale(False) self.qtgui_const_sink_x_1.enable_grid(False) self.qtgui_const_sink_x_1.enable_axis_labels(True) if not True: self.qtgui_const_sink_x_1.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_1.set_line_label(i, "Data {0}".format(i)) else: self.qtgui_const_sink_x_1.set_line_label(i, labels[i]) self.qtgui_const_sink_x_1.set_line_width(i, widths[i]) self.qtgui_const_sink_x_1.set_line_color(i, colors[i]) self.qtgui_const_sink_x_1.set_line_style(i, styles[i]) self.qtgui_const_sink_x_1.set_line_marker(i, markers[i]) self.qtgui_const_sink_x_1.set_line_alpha(i, alphas[i]) self._qtgui_const_sink_x_1_win = sip.wrapinstance(self.qtgui_const_sink_x_1.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_const_sink_x_1_win, 2,0,1,3) self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + 'hackrf=6f181f' ) self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(freq_selector-freq_offset, 0) self.osmosdr_source_0.set_freq_corr(0, 0) self.osmosdr_source_0.set_dc_offset_mode(0, 0) self.osmosdr_source_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0.set_gain_mode(False, 0) self.osmosdr_source_0.set_gain(10, 0) self.osmosdr_source_0.set_if_gain(20, 0) self.osmosdr_source_0.set_bb_gain(20, 0) self.osmosdr_source_0.set_antenna('', 0) self.osmosdr_source_0.set_bandwidth(0, 0) self._label_freq_tool_bar = Qt.QToolBar(self) if "{} MHz".format: self._label_freq_formatter = "{} MHz".format else: self._label_freq_formatter = lambda x: x self._label_freq_tool_bar.addWidget(Qt.QLabel('Frequency'+": ")) self._label_freq_label = Qt.QLabel(str(self._label_freq_formatter(self.label_freq))) self._label_freq_tool_bar.addWidget(self._label_freq_label) self.top_grid_layout.addWidget(self._label_freq_tool_bar, 0,1,1,1) self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(1, (lowpass_filter), freq_offset, samp_rate) self.fosphor_qt_sink_c_0 = fosphor.qt_sink_c() self.fosphor_qt_sink_c_0.set_fft_window(window.WIN_BLACKMAN_hARRIS) self.fosphor_qt_sink_c_0.set_frequency_range(freq_selector, samp_rate) self._fosphor_qt_sink_c_0_win = sip.wrapinstance(self.fosphor_qt_sink_c_0.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._fosphor_qt_sink_c_0_win, 1,0,1,3) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=samp_per_sym, gain_mu=0.55, mu=0.5, omega_relative_limit=0.035, freq_error=0.0, verbose=False, log=False, ) self.blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb(1, gr.GR_LSB_FIRST) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, 'gfsk_out.raw', False) self.blocks_file_sink_0.set_unbuffered(False) self.ble_decode_0 = ble.decode(current_channel) self.analog_simple_squelch_cc_0_0 = analog.simple_squelch_cc(squelch, 0.1) ################################################## # Connections ################################################## self.connect((self.analog_simple_squelch_cc_0_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.analog_simple_squelch_cc_0_0, 0), (self.qtgui_const_sink_x_1, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.ble_decode_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blocks_unpacked_to_packed_xx_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.analog_simple_squelch_cc_0_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.fosphor_qt_sink_c_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0))
def __init__(self, lead_limit=0.001, tx_gain=0, samp_per_sym=4, link_speed=200, pre_guard=0.003, rate=1e6, hop_interval=0.02, rx_gain=15, ampl=0.7, freq=425e6, args="", freq_list="4251e5,4261e5,4271e5", post_guard=0.001, dev_addr=1): gr.hier_block2.__init__( self, "FHAH TRANSCEIVER", gr.io_signature(1, 1, gr.sizeof_char*1), gr.io_signature(1, 1, gr.sizeof_char*1), ) ################################################## # Parameters ################################################## self.lead_limit = lead_limit self.tx_gain = tx_gain self.samp_per_sym = samp_per_sym self.link_speed = link_speed self.pre_guard = pre_guard self.rate = rate self.hop_interval = hop_interval self.rx_gain = rx_gain self.ampl = ampl self.freq = freq self.args = args self.freq_list = freq_list self.post_guard = post_guard self.dev_addr = dev_addr ################################################## # Variables ################################################## self.samp_rate_0 = samp_rate_0 = rate self.samp_rate = samp_rate = rate ################################################## # Blocks ################################################## self.uhd_source = uhd.usrp_source( device_addr=args, stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_source.set_clock_source("gpsdo", 0) self.uhd_source.set_time_source("gpsdo", 0) self.uhd_source.set_samp_rate(samp_rate) #self.uhd_source.set_auto_dc_offset(False) self.uhd_source.set_center_freq(freq, 0) self.uhd_source.set_gain(rx_gain, 0) self.uhd_source.set_antenna("RX2", 0) self.uhd_sink = uhd.usrp_sink( device_addr=args, stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_sink.set_clock_source("gpsdo", 0) self.uhd_sink.set_time_source("gpsdo", 0) self.uhd_sink.set_samp_rate(samp_rate) self.uhd_sink.set_center_freq(freq, 0) self.uhd_sink.set_gain(tx_gain, 0) self.uhd_sink.set_antenna("TX/RX", 0) self.precog_packet_framer_0 = fhah.packet_framer( samples_per_symbol=samp_per_sym, bits_per_symbol=1, access_code="", ) self.precog_packet_deframer_0 = fhah.packet_deframer( access_code="", threshold=2, ) self.gr_multiply_const_vxx_0 = gr.multiply_const_vcc((ampl, )) self.gmsk_mod = digital.gmsk_mod( samples_per_symbol=samp_per_sym, bt=0.35, verbose=False, log=False, ) self.gmsk_demod = digital.gmsk_demod( samples_per_symbol=samp_per_sym, gain_mu=0, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.fhah_fhah_engine_tx_0 = fhah.fhah_engine_tx(hop_interval, pre_guard, post_guard, dev_addr, samp_rate/samp_per_sym, freq_list) self.extras_pmt_rpc_0 = fhah.pmt_rpc(obj=self, result_msg=True) self.burst_gate_0 = fhah.burst_gate() ################################################## # Connections ################################################## self.connect((self.uhd_source, 0), (self.gmsk_demod, 0)) self.connect((self.uhd_source, 0), (self.fhah_fhah_engine_tx_0, 0)) self.connect((self, 0), (self.fhah_fhah_engine_tx_0, 1)) self.connect((self.burst_gate_0, 0), (self.uhd_sink, 0)) self.connect((self.gmsk_mod, 0), (self.gr_multiply_const_vxx_0, 0)) self.connect((self.fhah_fhah_engine_tx_0, 0), (self.precog_packet_framer_0, 0)) self.connect((self.fhah_fhah_engine_tx_0, 1), (self.extras_pmt_rpc_0, 0)) self.connect((self.precog_packet_framer_0, 0), (self.gmsk_mod, 0)) self.connect((self.gr_multiply_const_vxx_0, 0), (self.burst_gate_0, 0)) self.connect((self.precog_packet_deframer_0, 0), (self.fhah_fhah_engine_tx_0, 2)) self.connect((self.fhah_fhah_engine_tx_0, 2), (self, 0)) self.connect((self.gmsk_demod, 0), (self.precog_packet_deframer_0, 0))
def __init__(self, callsign='', ip='::', latitude=0, longitude=0, port=7355, recstart=''): gr.top_block.__init__(self, "AISAT decoder") ################################################## # Parameters ################################################## self.callsign = callsign self.ip = ip self.latitude = latitude self.longitude = longitude self.port = port self.recstart = recstart ################################################## # Variables ################################################## self.threshold = threshold = 4 self.access_code = access_code = "11000011101010100110011001010101" ################################################## # Blocks ################################################## self.sync_to_pdu_packed_0 = sync_to_pdu_packed( packlen=255 + 3, sync=access_code, threshold=threshold, ) self.sids_submit_0 = sids.submit( 'http://tlm.pe0sat.nl/tlmdb/frame_db.php', 40054, callsign, longitude, latitude, recstart) self.sids_print_timestamp_0 = sids.print_timestamp('%Y-%m-%d %H:%M:%S') self.low_pass_filter_0 = filter.fir_filter_ccf( 1, firdes.low_pass(1, 48000, 2600, 1000, firdes.WIN_HAMMING, 6.76)) self.hilbert_fc_0 = filter.hilbert_fc(65, firdes.WIN_HAMMING, 6.76) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=10, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.csp_swap_crc_0 = csp.swap_crc() self.csp_check_crc_0 = csp.check_crc(False, False, False) self.blocks_udp_source_0 = blocks.udp_source(gr.sizeof_short * 1, ip, port, 1472, False) self.blocks_short_to_float_0 = blocks.short_to_float(1, 32767.0) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) self.blocks_message_debug_0 = blocks.message_debug() self.blocks_conjugate_cc_0 = blocks.conjugate_cc() self.ax100_gomx1_decode_0 = ax100.gomx1_decode(False) self.analog_sig_source_x_0 = analog.sig_source_c( 48000, analog.GR_COS_WAVE, -3600, 1, 0) ################################################## # Connections ################################################## self.msg_connect((self.ax100_gomx1_decode_0, 'out'), (self.csp_swap_crc_0, 'in')) self.msg_connect((self.csp_check_crc_0, 'ok'), (self.sids_print_timestamp_0, 'in')) self.msg_connect((self.csp_check_crc_0, 'ok'), (self.sids_submit_0, 'in')) self.msg_connect((self.csp_swap_crc_0, 'out'), (self.csp_check_crc_0, 'in')) self.msg_connect((self.sids_print_timestamp_0, 'out'), (self.blocks_message_debug_0, 'print_pdu')) self.msg_connect((self.sync_to_pdu_packed_0, 'out'), (self.ax100_gomx1_decode_0, 'in')) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 0)) self.connect((self.blocks_conjugate_cc_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.blocks_multiply_xx_0, 0), (self.blocks_conjugate_cc_0, 0)) self.connect((self.blocks_short_to_float_0, 0), (self.hilbert_fc_0, 0)) self.connect((self.blocks_udp_source_0, 0), (self.blocks_short_to_float_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.sync_to_pdu_packed_0, 0)) self.connect((self.hilbert_fc_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0))
def __init__(self,device_addr="",samp_rate=int(1000e3), tx_A="TX/RX",rx_A="RX2",tx_gain=15,rx_gain=0,centre_freq=int(990e6), sps=2,bps=1,access_code=""): gras.HierBlock.__init__(self,"cog_phy") # self.device_addr=device_addr self.samp_rate=samp_rate self.tx_A=tx_A self.rx_A=rx_A self.tx_gain=tx_gain self.rx_gain=rx_gain self.centre_freq=centre_freq self.sps=sps self.bps=bps self.access_code=access_code # usrp source/sinks self.uhd_usrp_source = uhd.usrp_source( device_addr=self.device_addr, stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source.set_samp_rate(samp_rate) self.uhd_usrp_source.set_center_freq(centre_freq, 0) self.uhd_usrp_source.set_gain(rx_gain, 0) self.uhd_usrp_source.set_antenna(rx_A, 0) self.uhd_usrp_sink = uhd.usrp_sink( device_addr, stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink.set_samp_rate(samp_rate) self.uhd_usrp_sink.set_center_freq(centre_freq, 0) self.uhd_usrp_sink.set_gain(tx_gain, 0) self.uhd_usrp_sink.set_antenna(tx_A, 0) # packet framer/deframer self.extras_packet_framer = grextras.PacketFramer( samples_per_symbol=1, bits_per_symbol=1, access_code=self.access_code, ) self.extras_packet_deframer = grextras.PacketDeframer( access_code=self.access_code, threshold=-1, ) # Modulator/Demodulator self.digital_gmsk_mod = digital.gmsk_mod( samples_per_symbol=self.sps, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod = digital.gmsk_demod( samples_per_symbol=self.sps, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.gr_multiply_const_vxx_0 = gr.multiply_const_vcc((0.3, )) self.extras_burst_tagger_0 = grextras.BurstTagger(self.sps) ################################################## # Connections ################################################## #RX chain self.connect((self.uhd_usrp_source, 0), (self.digital_gmsk_demod, 0)) self.connect((self.digital_gmsk_demod, 0), (self.extras_packet_deframer, 0)) self.connect((self.extras_packet_deframer, 0), (self,0)) #TX chain self.connect((self,0),((self.extras_packet_framer, 0))) self.connect((self.extras_packet_framer, 0), (self.digital_gmsk_mod, 0)) self.connect((self.digital_gmsk_mod, 0), (self.gr_multiply_const_vxx_0,0)) self.connect((self.gr_multiply_const_vxx_0,0),(self.extras_burst_tagger_0,0)) self.connect((self.extras_burst_tagger_0,0),(self.uhd_usrp_sink, 0)) #probe to usrp_source for testing fft of received signal self.connect((self.uhd_usrp_source,0),(self,1))
def __init__(self, address="addr=192.168.10.2"): grc_wxgui.top_block_gui.__init__(self, title="Video reception") ################################################## # Parameters ################################################## self.address = address ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1e6 self.freq = freq = 1.2805e9 ################################################## # Blocks ################################################## 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 Spectrum") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Filtered spectrum") self.Add(self.notebook_0) self.wxgui_fftsink2_0_0_1 = fftsink2.fft_sink_c( self.notebook_0.GetPage(0).GetWin(), baseband_freq=freq, y_per_div=5, y_divs=10, ref_level=-40, 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.notebook_0.GetPage(0).Add(self.wxgui_fftsink2_0_0_1.win) self.wxgui_fftsink2_0_0_0 = fftsink2.fft_sink_c( self.notebook_0.GetPage(1).GetWin(), baseband_freq=freq, y_per_div=10, y_divs=15, 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.notebook_0.GetPage(1).Add(self.wxgui_fftsink2_0_0_0.win) self.uhd_usrp_source_0 = uhd.usrp_source( device_addr=address, stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(freq, 0) self.uhd_usrp_source_0.set_gain(65, 0) self.uhd_usrp_source_0.set_antenna("TX/RX", 0) self.low_pass_filter_1 = gr.fir_filter_ccf(1, firdes.low_pass( 1, samp_rate, 350e3, 50e3, firdes.WIN_HAMMING, 6.76)) self.gr_file_sink_1 = gr.file_sink(gr.sizeof_char*1, "/home/Naga/documents/video transmission/test") self.gr_file_sink_1.set_unbuffered(False) self.gr_file_sink_0 = gr.file_sink(gr.sizeof_char*1, "/home/Naga/documents/video transmission/rxfifo.ts") self.gr_file_sink_0.set_unbuffered(False) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.low_pass_filter_1, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.low_pass_filter_1, 0), (self.wxgui_fftsink2_0_0_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.gr_file_sink_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.gr_file_sink_1, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.low_pass_filter_1, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_fftsink2_0_0_1, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Perseus Voice GMSK") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.data_rate = data_rate = 14.40e6/2 ################################################## # Blocks ################################################## self.wxgui_scopesink2_1 = scopesink2.scope_sink_c( self.GetWin(), title="Scope Plot", sample_rate=data_rate, v_scale=0, v_offset=0, t_scale=0, ac_couple=True, xy_mode=False, num_inputs=1, trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label="Counts", size=((450,300)), ) self.GridAdd(self.wxgui_scopesink2_1.win, 1, 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=0, ref_scale=2.0, sample_rate=48e3, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, size=((450,300)), ) self.GridAdd(self.wxgui_fftsink2_1.win, 1, 2, 1, 1) self.nutaq_rtdex_source_0 = nutaq.rtdex_source("nutaq_carrier_perseus_0",gr.sizeof_short,1,3) self.nutaq_rtdex_source_0.set_type(0) self.nutaq_rtdex_source_0.set_packet_size(1024) self.nutaq_rtdex_source_0.set_channels("1") self.nutaq_rtdex_sink_0 = nutaq.rtdex_sink("nutaq_carrier_perseus_0",gr.sizeof_short,1,2) self.nutaq_rtdex_sink_0.set_type(0) self.nutaq_rtdex_sink_0.set_packet_size(1024) self.nutaq_rtdex_sink_0.set_channels("1") self.nutaq_radio420_tx_0_0 = nutaq.radio420_tx("nutaq_carrier_perseus_0", 1, 0) self.nutaq_radio420_tx_0_0.set_default_enable(1) self.nutaq_radio420_tx_0_0.set_default_tx_freq(943e6) self.nutaq_radio420_tx_0_0.set_default_reference(0) self.nutaq_radio420_tx_0_0.set_default_datarate(data_rate*2) self.nutaq_radio420_tx_0_0.set_default_calibrate(0) self.nutaq_radio420_tx_0_0.set_default_band(0) self.nutaq_radio420_tx_0_0.set_default_update_rate(1) self.nutaq_radio420_tx_0_0.set_default_tx_vga1_gain(-10) self.nutaq_radio420_tx_0_0.set_default_tx_vga2_gain(15) self.nutaq_radio420_tx_0_0.set_default_tx_gain3(3) self.nutaq_radio420_tx_0_0.set_default_tx_lpf_bandwidth(6) self.nutaq_radio420_tx_0_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_rf_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_tx_gain_ctrl(0) self.nutaq_radio420_tx_0_0.set_default_pll_cpld_ctrl(0) self.nutaq_radio420_rx_0 = nutaq.radio420_rx("nutaq_carrier_perseus_0", 1, 1) self.nutaq_radio420_rx_0.set_default_enable(1) self.nutaq_radio420_rx_0.set_default_rx_freq(943e6) self.nutaq_radio420_rx_0.set_default_reference(0) self.nutaq_radio420_rx_0.set_default_datarate(data_rate*2) self.nutaq_radio420_rx_0.set_default_calibrate(0) self.nutaq_radio420_rx_0.set_default_band(0) self.nutaq_radio420_rx_0.set_default_update_rate(1) self.nutaq_radio420_rx_0.set_default_rx_lna_gain(2) self.nutaq_radio420_rx_0.set_default_rx_vga1_gain(1) self.nutaq_radio420_rx_0.set_default_rx_gain2(16) self.nutaq_radio420_rx_0.set_default_rx_gain3(5) self.nutaq_radio420_rx_0.set_default_rx_rf_filter(2) self.nutaq_radio420_rx_0.set_default_rx_lpf_bandwidth(6) self.nutaq_radio420_rx_0.set_default_ref_clk_ctrl(0) self.nutaq_radio420_rx_0.set_default_rf_ctrl(0) self.nutaq_radio420_rx_0.set_default_rx_gain_ctrl(0) self.nutaq_radio420_rx_0.set_default_pll_cpld_ctrl(0) self.nutaq_custom_register_0_0 = nutaq.custom_register("nutaq_carrier_perseus_0",5) self.nutaq_custom_register_0_0.set_index(4) self.nutaq_custom_register_0_0.set_update_rate(1) self.nutaq_custom_register_0 = nutaq.custom_register("nutaq_carrier_perseus_0",4) self.nutaq_custom_register_0.set_index(1) self.nutaq_custom_register_0.set_default_value(6) self.nutaq_custom_register_0.set_update_rate(1) self.nutaq_carrier_perseus_0 = nutaq.carrier(0,"nutaq_carrier_perseus_0", "192.168.0.102") self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=2, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_short_to_float_0_0 = blocks.short_to_float(1, 2**11-1) self.blocks_short_to_float_0 = blocks.short_to_float(1, 2**11-1) self.blocks_interleave_0 = blocks.interleave(gr.sizeof_short*1) self.blocks_float_to_short_0_0_0 = blocks.float_to_short(1, 2**11-1) self.blocks_float_to_short_0_0 = blocks.float_to_short(1, 2**11-1) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_deinterleave_0 = blocks.deinterleave(gr.sizeof_short*1) self.blocks_complex_to_float_0 = blocks.complex_to_float(1) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_f(grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=8, preamble="", access_code="", pad_for_usrp=True, ), payload_length=128, ) self.blks2_packet_decoder_1 = grc_blks2.packet_demod_f(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_1.recv_pkt(ok, payload), ), ) self.audio_source_0 = audio.source(48000, "", True) self.audio_sink_0 = audio.sink(48000, "", True) ################################################## # Connections ################################################## self.connect((self.audio_source_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_1, 0)) self.connect((self.blks2_packet_decoder_1, 0), (self.audio_sink_0, 0)) self.connect((self.blks2_packet_decoder_1, 0), (self.wxgui_fftsink2_1, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_float_to_short_0_0_0, 0), (self.blocks_interleave_0, 1)) self.connect((self.blocks_complex_to_float_0, 1), (self.blocks_float_to_short_0_0_0, 0)) self.connect((self.nutaq_rtdex_source_0, 0), (self.blocks_deinterleave_0, 0)) self.connect((self.blocks_deinterleave_0, 0), (self.blocks_short_to_float_0, 0)) self.connect((self.blocks_deinterleave_0, 1), (self.blocks_short_to_float_0_0, 0)) self.connect((self.blocks_interleave_0, 0), (self.nutaq_rtdex_sink_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_complex_to_float_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blocks_short_to_float_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blocks_short_to_float_0_0, 0), (self.blocks_float_to_complex_0, 1)) self.connect((self.blocks_float_to_complex_0, 0), (self.wxgui_scopesink2_1, 0)) self.connect((self.blocks_float_to_short_0_0, 0), (self.blocks_interleave_0, 0)) self.connect((self.blocks_complex_to_float_0, 0), (self.blocks_float_to_short_0_0, 0))
def __init__(self): gr.top_block.__init__(self, "Sv Receiver Gmsk") Qt.QWidget.__init__(self) self.setWindowTitle("Sv Receiver Gmsk") 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", "SV_receiver_GMSK") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 800000 self.samp_per_sym = samp_per_sym = 2 self.car_freq = car_freq = 600000 self.bit_per_sym = bit_per_sym = 1 ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(car_freq, 0) self.uhd_usrp_source_0.set_gain(0, 0) self.qtgui_sink_x_0 = qtgui.sink_c( 1024, #fftsize firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc samp_rate, #bw "QT GUI Plot", #name True, #plotfreq True, #plotwaterfall True, #plottime True, #plotconst ) self.qtgui_sink_x_0.set_update_time(1.0/10) self._qtgui_sink_x_0_win = sip.wrapinstance(self.qtgui_sink_x_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_sink_x_0_win) self.qtgui_sink_x_0.enable_rf_freq(False) self.low_pass_filter_0 = filter.interp_fir_filter_ccf(1, firdes.low_pass( 8, samp_rate, 0.4*samp_rate, 10000, firdes.WIN_HAMMING, 6.76)) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=samp_per_sym, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "./rxfifo.ogg", False) self.blocks_file_sink_0.set_unbuffered(True) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.uhd_usrp_source_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.qtgui_sink_x_0, 0))
def __init__(self): gr.top_block.__init__(self, "Usrp 1 Rx") Qt.QWidget.__init__(self) self.setWindowTitle("Usrp 1 Rx") 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", "usrp_1_rx") if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): self.restoreGeometry(self.settings.value("geometry").toByteArray()) else: self.restoreGeometry( self.settings.value("geometry", type=QtCore.QByteArray)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1e6 self.length = length = 96 self.gain = gain = 15 self.freq = freq = 2.441e9 ################################################## # Blocks ################################################## self._gain_range = Range(0, 40, 1, 15, 200) self._gain_win = RangeWidget(self._gain_range, self.set_gain, "gain", "counter_slider", float) self.top_layout.addWidget(self._gain_win) self._freq_range = Range(2.4e9, 2.5e9, 1e6, 2.441e9, 200) self._freq_win = RangeWidget(self._freq_range, self.set_freq, "freq", "counter_slider", float) self.top_layout.addWidget(self._freq_win) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(freq, 0) self.uhd_usrp_source_0.set_gain(gain, 0) self.uhd_usrp_source_0.set_antenna('TX/RX', 0) self.uhd_usrp_source_0.set_bandwidth(1e6, 0) self.timesvl_TimeSVL_1 = timesvl.TimeSVL( gr.sizeof_gr_complex * 1, 1, '/media/tamanna/Seagate Expansion Drive/gr-timesvl/examples/Time_maps/output_time_map1.txt', '/media/tamanna/Seagate Expansion Drive/gr-timesvl/examples/Input_Output parameters/output_1.txt' ) self.qtgui_time_sink_x_1 = qtgui.time_sink_f( 1024, #size samp_rate, #samp_rate "Receiver input", #name 2 #number of inputs ) self.qtgui_time_sink_x_1.set_update_time(0.10) self.qtgui_time_sink_x_1.set_y_axis(-1, 1) 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, "") self.qtgui_time_sink_x_1.enable_autoscale(True) self.qtgui_time_sink_x_1.enable_grid(True) 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 True: 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: self.qtgui_time_sink_x_1.set_line_label( i, "Data {0}".format(i)) 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.top_grid_layout.addWidget(self._qtgui_time_sink_x_1_win, 1, 0, 1, 2) [self.top_grid_layout.setRowStretch(r, 1) for r in range(1, 2)] [self.top_grid_layout.setColumnStretch(c, 1) for c in range(0, 2)] self.qtgui_time_sink_x_0_0 = qtgui.time_sink_f( 1024, #size samp_rate, #samp_rate "Demodulated OFDM", #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, 1) 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(False) 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_layout.addWidget(self._qtgui_time_sink_x_0_0_win) self.qtgui_time_sink_x_0 = qtgui.time_sink_f( 1024, #size samp_rate, #samp_rate "Demodulated GMSK", #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_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 = ['', '', '', '', '', '', '', '', '', ''] 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_layout.addWidget(self._qtgui_time_sink_x_0_win) self.digital_ofdm_rx_0 = digital.ofdm_rx( fft_len=64, cp_len=16, frame_length_tag_key='frame_' + "length", packet_length_tag_key="length", bps_header=1, bps_payload=2, debug_log=False, scramble_bits=False) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.5, mu=0.75, omega_relative_limit=0.025, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0_0 = blocks.file_sink( gr.sizeof_char * 1, '/media/tamanna/Seagate Expansion Drive/gr-timesvl/examples/outputs/output_audio_1.mp3', False) self.blocks_file_sink_0_0.set_unbuffered(False) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_char * 1, '/media/tamanna/Seagate Expansion Drive/gr-timesvl/examples/outputs/output_audio_2.mp3', False) self.blocks_file_sink_0.set_unbuffered(False) self.blocks_complex_to_float_0 = blocks.complex_to_float(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) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_char_to_float_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0_0, 0)) self.connect((self.blocks_char_to_float_0, 0), (self.qtgui_time_sink_x_0, 0)) self.connect((self.blocks_char_to_float_0_0, 0), (self.qtgui_time_sink_x_0_0, 0)) self.connect((self.blocks_complex_to_float_0, 1), (self.qtgui_time_sink_x_1, 1)) self.connect((self.blocks_complex_to_float_0, 0), (self.qtgui_time_sink_x_1, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_ofdm_rx_0, 0), (self.blocks_char_to_float_0_0, 0)) self.connect((self.digital_ofdm_rx_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.timesvl_TimeSVL_1, 1), (self.digital_gmsk_demod_0, 0)) self.connect((self.timesvl_TimeSVL_1, 0), (self.digital_ofdm_rx_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blocks_complex_to_float_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.timesvl_TimeSVL_1, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Gmsk Test") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.target_freq = target_freq = 871.75e6 self.channel_wigth = channel_wigth = 2e6 self.samp_rate = samp_rate = 10e6 self.center_freq = center_freq = target_freq-channel_wigth ################################################## # Blocks ################################################## self.wxgui_constellationsink2_0 = constsink_gl.const_sink_c( self.GetWin(), title="Constellation Plot", sample_rate=samp_rate/2, frame_rate=20, const_size=1024, M=4, theta=0, loop_bw=6.28/100.0, fmax=0.06, mu=0.5, gain_mu=0.005, symbol_rate=samp_rate/4., omega_limit=0.005, ) self.Add(self.wxgui_constellationsink2_0.win) self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + "" ) self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(center_freq, 0) self.osmosdr_source_0.set_freq_corr(0, 0) self.osmosdr_source_0.set_dc_offset_mode(0, 0) self.osmosdr_source_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0.set_gain_mode(False, 0) self.osmosdr_source_0.set_gain(10, 0) self.osmosdr_source_0.set_if_gain(20, 0) self.osmosdr_source_0.set_bb_gain(20, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.low_pass_filter_0 = filter.fir_filter_ccf(2, firdes.low_pass( 1, samp_rate, 1e6, 1.5e6, firdes.WIN_HAMMING, 6.76)) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float*1, "/home/twilight/GMSK_test/test_data_in.txt", False) self.blocks_file_sink_0.set_unbuffered(False) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_f(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, -channel_wigth, 1, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blocks_multiply_xx_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.wxgui_constellationsink2_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.blocks_multiply_xx_0, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") Qt.QWidget.__init__(self) self.setWindowTitle("Top Block") 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", "top_block") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 200000 self.key = key = 0 self.iteration = iteration = 0 ################################################## # Blocks ################################################## self.receive = osmosdr.source(args="numchan" + str(1) + "" + "") self.receive.set_sample_rate(1e6) self.receive.set_center_freq(100e6) self.receive.set_freq_corr(0, 0) self.receive.set_gain_mode(False, 0) self.receive.set_gain(10, 0) self.receive.set_if_gain(20, 0) self.receive.set_bb_gain(20, 0) self.receive.set_antenna("", 0) self.receive.set_bandwidth(0, 0) self.qtgui_number_sink_0 = qtgui.number_sink(gr.sizeof_float, 0, qtgui.NUM_GRAPH_HORIZ, 1) self.qtgui_number_sink_0.set_update_time(0.10) self.qtgui_number_sink_0.set_title("") labels = ["", "", "", "", "", "", "", "", "", ""] units = ["", "", "", "", "", "", "", "", "", ""] colors = [("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black")] factor = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in xrange(1): self.qtgui_number_sink_0.set_min(i, 0) self.qtgui_number_sink_0.set_max(i, 3) self.qtgui_number_sink_0.set_color(i, colors[i][0], colors[i][1]) if len(labels[i]) == 0: self.qtgui_number_sink_0.set_label(i, "Data {0}".format(i)) else: self.qtgui_number_sink_0.set_label(i, labels[i]) self.qtgui_number_sink_0.set_unit(i, units[i]) self.qtgui_number_sink_0.set_factor(i, factor[i]) self.qtgui_number_sink_0.enable_autoscale(False) self._qtgui_number_sink_0_win = sip.wrapinstance( self.qtgui_number_sink_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_number_sink_0_win) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code="100010001000100010001111", threshold=0, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) self.blks2_packet_decoder_1 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code="100010001000100010001000", threshold=0, callback=lambda ok, payload: self.blks2_packet_decoder_1. recv_pkt(ok, payload), ), ) self.blks2_packet_decoder_2 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code="100010001000100010101010", threshold=0, callback=lambda ok, payload: self.blks2_packet_decoder_2. recv_pkt(ok, payload), ), ) self.file_sink_0 = blocks.file_sink( gr.sizeof_float * 1, "/home/firas/Desktop/final/firas-data", False) self.file_sink_0.set_unbuffered(False) self.file_sink_1 = blocks.file_sink( gr.sizeof_float * 1, "/home/firas/Desktop/final/firas-data_1", False) self.file_sink_1.set_unbuffered(False) self.probe_sig_0 = blocks.probe_signal_f() self.low_pass_filter = filter.fir_filter_ccf( 1, firdes.low_pass(1, 1e6, 250000, 20000, firdes.WIN_HAMMING, 6.76)) self.throt = blocks.throttle(gr.sizeof_gr_complex * 1, 32000, True) self.file_sink = blocks.file_sink( gr.sizeof_float * 1, "/home/firas/Desktop/paper-test.pdf", True) self.file_sink.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.file_sink_0, 0)) self.connect((self.receive, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.probe_sig_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="DVB Simulator (GMSK)") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.signal = signal = 1 self.samp_rate = samp_rate = 32000 self.noise = noise = 10 ################################################## # Blocks ################################################## _signal_sizer = wx.BoxSizer(wx.VERTICAL) self._signal_text_box = forms.text_box( parent=self.GetWin(), sizer=_signal_sizer, value=self.signal, callback=self.set_signal, label="Signal", converter=forms.float_converter(), proportion=0, ) self._signal_slider = forms.slider( parent=self.GetWin(), sizer=_signal_sizer, value=self.signal, callback=self.set_signal, minimum=0, maximum=1000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_signal_sizer) _noise_sizer = wx.BoxSizer(wx.VERTICAL) self._noise_text_box = forms.text_box( parent=self.GetWin(), sizer=_noise_sizer, value=self.noise, callback=self.set_noise, label="Noise", converter=forms.float_converter(), proportion=0, ) self._noise_slider = forms.slider( parent=self.GetWin(), sizer=_noise_sizer, value=self.noise, callback=self.set_noise, minimum=0, maximum=1000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_noise_sizer) self.gr_wavfile_source_0 = gr.wavfile_source("/home/traviscollins/GNURADIO/tfc_models/test.wav", False) self.gr_throttle_0 = gr.throttle(gr.sizeof_float*1, samp_rate) self.gr_noise_source_x_0 = gr.noise_source_c(gr.GR_GAUSSIAN, noise, 42) self.gr_multiply_const_vxx_0 = gr.multiply_const_vcc((signal, )) self.gr_file_sink_1_0 = gr.file_sink(gr.sizeof_float*1, "/home/traviscollins/GNURADIO/tfc_models/output_txt.wav") self.gr_file_sink_1_0.set_unbuffered(False) self.gr_channel_model_0 = gr.channel_model( noise_voltage=20, frequency_offset=0.0, epsilon=1.0, taps=(1.0 + 1.0j, ), noise_seed=42, ) self.gr_add_xx_0 = gr.add_vcc(1) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=2, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_f(grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=1, access_code="", pad_for_usrp=True, ), payload_length=0, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_f(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) self.audio_sink_0 = audio.sink(samp_rate, "", True) ################################################## # Connections ################################################## self.connect((self.gr_noise_source_x_0, 0), (self.gr_add_xx_0, 1)) self.connect((self.gr_add_xx_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.gr_multiply_const_vxx_0, 0)) self.connect((self.gr_throttle_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.gr_throttle_0, 0), (self.gr_file_sink_1_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.gr_multiply_const_vxx_0, 0), (self.gr_channel_model_0, 0)) self.connect((self.gr_channel_model_0, 0), (self.gr_add_xx_0, 0)) self.connect((self.gr_wavfile_source_0, 0), (self.gr_throttle_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.audio_sink_0, 0))
def __init__(self, freq_tx, freq_rx, filename_out, filename_in, gain): gr.top_block.__init__(self, "receive_transmit") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 200000 self.gain_tx = gain_tx = gain self.gain_rx = gain_rx = 15 self.freq_tx = freq_tx self.freq_rx = freq_rx self.filename_out = filename_out self.filename_in = filename_in ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("addr=192.168.10.2", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(freq_rx, 0) self.uhd_usrp_source_0.set_gain(gain_rx, 0) self.uhd_usrp_source_0.set_antenna('TX/RX', 0) self.uhd_usrp_source_0.set_bandwidth(10e6, 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("addr=192.168.10.2", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq(freq_tx, 0) self.uhd_usrp_sink_0.set_gain(gain_tx, 0) self.uhd_usrp_sink_0.set_antenna('TX/RX', 0) self.uhd_usrp_sink_0.set_bandwidth(10e6, 0) self.low_pass_filter_0 = filter.fir_filter_ccf( 1, firdes.low_pass(1, samp_rate, samp_rate / 2 - 2e3, samp_rate / 4, firdes.WIN_HAMMING, 6.76)) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=2, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vcc((1, )) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((1, )) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char * 1, filename_in, True) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char * 1, filename_out, True) self.blocks_file_sink_0.set_unbuffered(True) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_b( grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=1, preamble='', access_code='', pad_for_usrp=True, ), payload_length=0, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.blocks_multiply_const_vxx_1, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_multiply_const_vxx_1, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blocks_multiply_const_vxx_0, 0))
def __init__(self, frame_size=32, puncpat='11'): gr.top_block.__init__(self, "Top Block") Qt.QWidget.__init__(self) self.setWindowTitle("Top Block") 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", "top_block") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Parameters ################################################## self.frame_size = frame_size self.puncpat = puncpat ################################################## # Variables ################################################## self.samples_per_symbol = samples_per_symbol = 64 self.rate = rate = 2 self.polys = polys = [79, 109] self.k = k = 7 self.bitrate = bitrate = 9600 self.samp_rate = samp_rate = samples_per_symbol*bitrate self.gain = gain = 50 self.dec_cc = dec_cc = fec.cc_decoder.make(frame_size, k, rate, (polys), 0, -1, fec.CC_STREAMING, False) self.centre_freq = centre_freq = 401e6 self.bandwidth = bandwidth = 200e3 ################################################## # Blocks ################################################## self._gain_range = Range(0, 100, 1, 50, 200) self._gain_win = RangeWidget(self._gain_range, self.set_gain, "gain", "counter_slider", float) self.top_layout.addWidget(self._gain_win) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_time_unknown_pps(uhd.time_spec()) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(centre_freq, 0) self.uhd_usrp_source_0.set_gain(gain, 0) self.uhd_usrp_source_0.set_bandwidth(bandwidth, 0) self.show_text_0 = display.show_text() self._show_text_0_win = sip.wrapinstance(self.show_text_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._show_text_0_win) self.qtgui_time_sink_x_0 = qtgui.time_sink_f( 2048, #size bitrate, #samp_rate "", #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(-128, 128) 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 = ["", "", "", "", "", "", "", "", "", ""] 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_layout.addWidget(self._qtgui_time_sink_x_0_win) self.fosphor_qt_sink_c_0 = fosphor.qt_sink_c() self.fosphor_qt_sink_c_0.set_fft_window(window.WIN_BLACKMAN_hARRIS) self.fosphor_qt_sink_c_0.set_frequency_range(0, samp_rate) self._fosphor_qt_sink_c_0_win = sip.wrapinstance(self.fosphor_qt_sink_c_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._fosphor_qt_sink_c_0_win) 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 = digital.map_bb(([-1, 1])) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=samples_per_symbol, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.ccsds_asm_deframer_0 = ccsds.asm_deframer(0,1,False,16) self.blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "/home/gs-laptop1/GroundStation/GroundStation/GNURadio/Test Files/Simple GMSK Receive/out.bin", False) self.blocks_file_sink_0.set_unbuffered(False) 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) self.analog_pwr_squelch_xx_0 = analog.pwr_squelch_cc(-40, 1e-4, 0, True) self.ais_invert_0 = ais.invert() ################################################## # Connections ################################################## self.connect((self.ais_invert_0, 0), (self.digital_map_bb_0, 0)) self.connect((self.analog_pwr_squelch_xx_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blocks_char_to_float_0, 0), (self.qtgui_time_sink_x_0, 0)) self.connect((self.blocks_char_to_float_0_0, 0), (self.fec_extended_decoder_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.blocks_char_to_float_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.ccsds_asm_deframer_0, 0), (self.show_text_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.ais_invert_0, 0)) self.connect((self.digital_map_bb_0, 0), (self.blocks_char_to_float_0_0, 0)) self.connect((self.fec_extended_decoder_0, 0), (self.blocks_unpacked_to_packed_xx_0, 0)) self.connect((self.fec_extended_decoder_0, 0), (self.ccsds_asm_deframer_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.analog_pwr_squelch_xx_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.fosphor_qt_sink_c_0, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") Qt.QWidget.__init__(self) self.setWindowTitle("Top Block") 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", "top_block") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.symbol_rate = symbol_rate = 9600 self.samples_per_symbol = samples_per_symbol = 64 self.samp_rate = samp_rate = 6144000 ################################################## # Blocks ################################################## self.qtgui_sink_x_0 = qtgui.sink_c( 1024, #fftsize firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc samp_rate, #bw "", #name True, #plotfreq True, #plotwaterfall True, #plottime True, #plotconst ) self.qtgui_sink_x_0.set_update_time(1.0/10) self._qtgui_sink_x_0_win = sip.wrapinstance(self.qtgui_sink_x_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_sink_x_0_win) self.qtgui_sink_x_0.enable_rf_freq(False) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=samples_per_symbol, gain_mu=0.175, mu=0.5, omega_relative_limit=0.001, freq_error=0.0, verbose=False, log=False, ) self.ccsds_decode_0 = ccsds_decode( interleave=4, hamming_distance=0, ) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True) self.blocks_message_debug_0_0 = blocks.message_debug() self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, "/home/thomasp/GNURadio_Recordings/last_packet.bin", False) ################################################## # Connections ################################################## self.msg_connect((self.ccsds_decode_0, 'out'), (self.blocks_message_debug_0_0, 'print')) self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.qtgui_sink_x_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.ccsds_decode_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="FHSS Packets") ################################################## # Variables ################################################## self.samp_sym = samp_sym = 64 self.samp_rate = samp_rate = 800000 self.init = init = 1, 1, 1, 1 self.generator = generator = 1, 1, 0, 0, 1 self.code_rate = code_rate = int(1389 * samp_sym) ################################################## # Blocks ################################################## self.wxgui_fftsink2_0_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="Received Spread Spectrum Signal", peak_hold=False, ) self.Add(self.wxgui_fftsink2_0_0.win) 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="Despread Signal", peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.low_pass_filter_0 = filter.fir_filter_ccf(1, firdes.low_pass( 1, samp_rate, 11000, 1000, firdes.WIN_HAMMING, 6.76)) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=samp_sym, bt=0.35, verbose=False, log=False, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=samp_sym, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.channels_channel_model_0 = channels.channel_model( noise_voltage=0.01, frequency_offset=1 / samp_rate, epsilon=1 + 0.000001, taps=(1.0 + 1.0j, ), noise_seed=0, block_tags=False ) self.blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST) self.Spread_synthesizer_0 = Spread.synthesizer(code_rate, 0, samp_rate, (generator), (init)) self.Spread_sync_0 = Spread.sync() self.Spread_rx_synthesizer_0 = Spread.rx_synthesizer(code_rate, samp_sym, samp_rate, 11000, 10000, 0.01, (generator), (init)) self.Spread_rx_sync_0 = Spread.rx_sync(12) self.Spread_msg_source_0 = Spread.msg_source(500, 100) self.Spread_framer_0 = Spread.framer(0) self.Spread_deframer_0 = Spread.deframer(0) ################################################## # Connections ################################################## self.connect((self.Spread_synthesizer_0, 0), (self.channels_channel_model_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.Spread_rx_synthesizer_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.Spread_rx_sync_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.Spread_synthesizer_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.Spread_sync_0, 0), (self.blocks_unpacked_to_packed_xx_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.wxgui_fftsink2_0_0, 0)) self.connect((self.Spread_rx_synthesizer_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) ################################################## # Asynch Message Connections ################################################## self.msg_connect(self.Spread_framer_0, "out", self.Spread_sync_0, "in") self.msg_connect(self.Spread_msg_source_0, "out", self.Spread_framer_0, "in") self.msg_connect(self.Spread_rx_sync_0, "out", self.Spread_deframer_0, "in")
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Dectrx") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.channel = channel = 1 self.samp_rate = samp_rate = 2.4e6 self.rf_gain = rf_gain = 10 self.ppm = ppm = 0 self.if_gain = if_gain = 20 self.freq = freq = 1897.344e6 - (channel * 1.728e6) self.dect_rate = dect_rate = 1.152e6 self.bb_gain = bb_gain = 20 ################################################## # Blocks ################################################## _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_gain', 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=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_rf_gain_sizer) _ppm_sizer = wx.BoxSizer(wx.VERTICAL) self._ppm_text_box = forms.text_box( parent=self.GetWin(), sizer=_ppm_sizer, value=self.ppm, callback=self.set_ppm, label="ppm", converter=forms.int_converter(), proportion=0, ) self._ppm_slider = forms.slider( parent=self.GetWin(), sizer=_ppm_sizer, value=self.ppm, callback=self.set_ppm, minimum=-70, maximum=+70, num_steps=100, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_ppm_sizer) _if_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._if_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_if_gain_sizer, value=self.if_gain, callback=self.set_if_gain, label='if_gain', converter=forms.float_converter(), proportion=0, ) self._if_gain_slider = forms.slider( parent=self.GetWin(), sizer=_if_gain_sizer, value=self.if_gain, callback=self.set_if_gain, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_if_gain_sizer) _bb_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._bb_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_bb_gain_sizer, value=self.bb_gain, callback=self.set_bb_gain, label='bb_gain', converter=forms.float_converter(), proportion=0, ) self._bb_gain_slider = forms.slider( parent=self.GetWin(), sizer=_bb_gain_sizer, value=self.bb_gain, callback=self.set_bb_gain, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_bb_gain_sizer) self.wxgui_waterfallsink2_0 = waterfallsink2.waterfall_sink_c( self.GetWin(), baseband_freq=freq, dynamic_range=100, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=512, fft_rate=15, average=False, avg_alpha=None, title="Waterfall Plot", ) self.Add(self.wxgui_waterfallsink2_0.win) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=24, decimation=25, taps=None, fractional_bw=None, ) self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "") self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(freq, 0) self.osmosdr_source_0.set_freq_corr(ppm, 0) self.osmosdr_source_0.set_dc_offset_mode(0, 0) self.osmosdr_source_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0.set_gain_mode(False, 0) self.osmosdr_source_0.set_gain(rf_gain, 0) self.osmosdr_source_0.set_if_gain(if_gain, 0) self.osmosdr_source_0.set_bb_gain(bb_gain, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(dect_rate, 0) self.low_pass_filter_0 = filter.fir_filter_ccf( 1, firdes.low_pass(1, samp_rate, dect_rate, 10e3, firdes.WIN_HAMMING, 6.76)) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0, verbose=False, log=False, ) self._channel_chooser = forms.radio_buttons( parent=self.GetWin(), value=self.channel, callback=self.set_channel, label="channel", major_dimension=10, choices=[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, ], labels=[], style=wx.RA_HORIZONTAL, ) self.Add(self._channel_chooser) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_char * 1, "127.0.0.1", 2323, 1472, True) self.blocks_pack_k_bits_bb_0 = blocks.pack_k_bits_bb(8) ################################################## # Connections ################################################## self.connect((self.blocks_pack_k_bits_bb_0, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blocks_pack_k_bits_bb_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.wxgui_waterfallsink2_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.low_pass_filter_0, 0))
def __init__(self): gr.top_block.__init__(self, "Bluetooth LE Receiver") ################################################## # Variables ################################################## self.transition_width = transition_width = 300e3 self.sample_rate = sample_rate = 4e6 self.data_rate = data_rate = 1e6 self.cutoff_freq = cutoff_freq = 850e3 self.ble_channel_spacing = ble_channel_spacing = 2e6 self.ble_channel = ble_channel = 12 self.ble_base_freq = ble_base_freq = 2402e6 self.squelch_threshold = squelch_threshold = -70 self.rf_gain = rf_gain = 10 self.lowpass_filter = lowpass_filter = firdes.low_pass(1, sample_rate, cutoff_freq, transition_width, firdes.WIN_HAMMING, 6.76) self.gmsk_sps = gmsk_sps = int(sample_rate / data_rate) self.gmsk_omega_limit = gmsk_omega_limit = 0.035 self.gmsk_mu = gmsk_mu = 0.5 self.gmsk_gain_mu = gmsk_gain_mu = 0.7 self.freq_offset = freq_offset = 1e6 self.freq = freq = ble_base_freq+(ble_channel_spacing * ble_channel) ################################################## # Message Queues ################################################## self.message_queue = message_queue = gr.msg_queue(2) ################################################## # Blocks ################################################## self.unpacked_to_packed = blocks.unpacked_to_packed_bb(1, gr.GR_LSB_FIRST) self.osmosdr_source = osmosdr.source( args="numchan=" + str(1) + " " + "" ) self.osmosdr_source.set_sample_rate(sample_rate) self.osmosdr_source.set_center_freq(freq+freq_offset, 0) self.osmosdr_source.set_freq_corr(0, 0) self.osmosdr_source.set_dc_offset_mode(0, 0) self.osmosdr_source.set_iq_balance_mode(0, 0) self.osmosdr_source.set_gain_mode(False, 0) self.osmosdr_source.set_gain(rf_gain, 0) self.osmosdr_source.set_if_gain(20, 0) self.osmosdr_source.set_bb_gain(20, 0) self.osmosdr_source.set_antenna("", 0) self.osmosdr_source.set_bandwidth(0, 0) self.message_sink = blocks.message_sink(gr.sizeof_char*1, message_queue, True) self.freq_xlating_fir_filter_lp = filter.freq_xlating_fir_filter_ccc(1, (lowpass_filter), -freq_offset, sample_rate) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=gmsk_sps, gain_mu=gmsk_gain_mu, mu=gmsk_mu, omega_relative_limit=gmsk_omega_limit, freq_error=0.0, verbose=False, log=False, ) self.analog_simple_squelch = analog.simple_squelch_cc(squelch_threshold, 0.1) ################################################## # Connections ################################################## self.connect((self.freq_xlating_fir_filter_lp, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.unpacked_to_packed, 0)) self.connect((self.unpacked_to_packed, 0), (self.message_sink, 0)) self.connect((self.osmosdr_source, 0), (self.analog_simple_squelch, 0)) self.connect((self.analog_simple_squelch, 0), (self.freq_xlating_fir_filter_lp, 0))
def __init__(self, mon_id, audio_port): gr.top_block.__init__(self, "EAS/SAME Monitor") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 8000 ################################################## # Blocks ################################################## # Resampler from input rate (44.1k) to internal rate (8k) self.rational_resampler_44k = filter.rational_resampler_fff( interpolation=80, decimation=441, ) # Resampler from 8000 Hz to 4166 2/3rd Hz to deal with SAME's weird parameters self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=50, decimation=96, taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_fcc(1, (firdes.low_pass(1, samp_rate, 600, 100)), 1822.916667, samp_rate) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=8, gain_mu=0.175, mu=0.5, omega_relative_limit=0.01, freq_error=0.0, verbose=True, log=False, ) self.src = audio.source(44100, "eas_mon_%s:in" % (mon_id), True) self.agc = analog.agc_ff(0.0001, 0.1, 1.0) #self.analog_pwr_squelch_xx_0 = analog.pwr_squelch_ff(-50, 0.0001, 0) self.msg_queue = gr.msg_queue(10) self.same_dec_0 = same.same_dec(self.msg_queue) self.tone_det_0 = fft.goertzel_fc(samp_rate, samp_rate / 10, 853) self.tone_det_1 = fft.goertzel_fc(samp_rate, samp_rate / 10, 960) self.tone_det_2 = fft.goertzel_fc(samp_rate, samp_rate / 10, 1050) self.wat_thresh_msg = same.wat_thresh_msg(self.msg_queue, 1, 0.05, 0.01) #self.avg_audio_level = analog.probe_avg_mag_sqrd_ff(-50) #self.level_thresh_msg = same.level_thresh_msg(self.msg_queue, 1, 3, db_to_abs(-30), db_to_abs(-40)) self.audio_sink_converter = blocks.float_to_short(1, 3276) self.audio_sink = blocks.udp_sink(2, '127.0.0.1', audio_port) ################################################## # Connections ################################################## self.connect((self.src, 0), (self.rational_resampler_44k, 0)) self.connect((self.rational_resampler_44k, 0), (self.agc, 0)) #self.connect((self.agc, 0), (self.analog_pwr_squelch_xx_0, 0)) #self.connect((self.analog_pwr_squelch_xx_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) self.connect((self.agc, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.same_dec_0, 0)) self.connect((self.agc, 0), (self.tone_det_0, 0), (self.wat_thresh_msg, 0)) self.connect((self.agc, 0), (self.tone_det_1, 0), (self.wat_thresh_msg, 1)) self.connect((self.agc, 0), (self.tone_det_2, 0), (self.wat_thresh_msg, 2)) #self.connect((self.agc, 0), (self.avg_audio_level, 0), (self.level_thresh_msg, 0)) self.connect((self.agc, 0), (self.audio_sink_converter, 0), (self.audio_sink, 0)) self._watcher = _queue_watcher_thread(self.msg_queue, mon_id, audio_port)