def __init__(self, ipp1="127.0.0.1", ipp2="127.0.0.1", ipp3="127.0.0.1", ipp4="127.0.0.1", iptx="127.0.0.1", samp_rate=10000): gr.top_block.__init__(self, "OFDM Rx") ################################################## # Parameters ################################################## self.ipp1 = ipp1 self.ipp2 = ipp2 self.ipp3 = ipp3 self.ipp4 = ipp4 self.iptx = iptx self.samp_rate = samp_rate ################################################## # Variables ################################################## self.pilot_symbols = pilot_symbols = ((1, 1, 1, -1,),) self.pilot_carriers = pilot_carriers = ((-21, -7, 7, 21,),) self.payload_mod = payload_mod = digital.constellation_qpsk() self.packet_length_tag_key = packet_length_tag_key = "packet_len" self.occupied_carriers = occupied_carriers = (range(-26, -21) + range(-20, -7) + range(-6, 0) + range(1, 7) + range(8, 21) + range(22, 27),) self.length_tag_key = length_tag_key = "frame_len" self.header_mod = header_mod = digital.constellation_bpsk() self.fft_len = fft_len = 64 self.sync_word2 = sync_word2 = [0j, 0j, 0j, 0j, 0j, 0j, (-1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), (1+0j), (1+0j), (1 +0j), (1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), 0j, (1+0j), (-1+0j), (1+0j), (1+0j), (1+0j), (-1+0j), (1+0j), (1+0j), (1+0j), (-1+0j), (1+0j), (1+0j), (1+0j), (1+0j), (-1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (-1+0j), 0j, 0j, 0j, 0j, 0j] self.sync_word1 = sync_word1 = [0., 0., 0., 0., 0., 0., 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 0., 0., 0., 0., 0.] self.payload_equalizer = payload_equalizer = digital.ofdm_equalizer_simpledfe(fft_len, payload_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols, 1) self.packet_len = packet_len = 96 self.header_formatter = header_formatter = digital.packet_header_ofdm(occupied_carriers, n_syms=1, len_tag_key=packet_length_tag_key, frame_len_tag_key=length_tag_key, bits_per_header_sym=header_mod.bits_per_symbol(), bits_per_payload_sym=payload_mod.bits_per_symbol(), scramble_header=False) self.header_equalizer = header_equalizer = digital.ofdm_equalizer_simpledfe(fft_len, header_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols) ################################################## # Blocks ################################################## self.zeromq_push_sink_0_0_1_0 = zeromq.push_sink(gr.sizeof_gr_complex, 64, "tcp://"+ ipp2 + ":55521", 100, True) self.zeromq_push_sink_0_0_1 = zeromq.push_sink(gr.sizeof_gr_complex, 64, "tcp://"+ ipp2 + ":55520", 100, True) self.zeromq_pull_source_0_0_0 = zeromq.pull_source(gr.sizeof_char, 1, "tcp://"+ ipp1 + ":55511", 100, True) self.zeromq_pull_source_0_0 = zeromq.pull_source(gr.sizeof_gr_complex, 1, "tcp://"+ ipp1 + ":55510", 100, True) self.zeromq_pull_msg_source_0 = zeromq.pull_msg_source("tcp://"+ ipp3 + ":55530", 100) self.digital_header_payload_demux_0 = digital.header_payload_demux( 3, fft_len, fft_len/4, length_tag_key, "", True, gr.sizeof_gr_complex, "rx_time", samp_rate, (), ) ################################################## # Connections ################################################## self.msg_connect((self.zeromq_pull_msg_source_0, 'out'), (self.digital_header_payload_demux_0, 'header_data')) self.connect((self.digital_header_payload_demux_0, 0), (self.zeromq_push_sink_0_0_1, 0)) self.connect((self.digital_header_payload_demux_0, 1), (self.zeromq_push_sink_0_0_1_0, 0)) self.connect((self.zeromq_pull_source_0_0, 0), (self.digital_header_payload_demux_0, 0)) self.connect((self.zeromq_pull_source_0_0_0, 0), (self.digital_header_payload_demux_0, 1))
def __init__(self, ipp1="127.0.0.1", ipp2="127.0.0.1", ipp3="127.0.0.1", ipp4="127.0.0.1", iptx="127.0.0.1", samp_rate=10000): gr.top_block.__init__(self, "OFDM Rx") ################################################## # Parameters ################################################## self.ipp1 = ipp1 self.ipp2 = ipp2 self.ipp3 = ipp3 self.ipp4 = ipp4 self.iptx = iptx self.samp_rate = samp_rate ################################################## # Variables ################################################## self.pilot_symbols = pilot_symbols = ((1, 1, 1, -1,),) self.pilot_carriers = pilot_carriers = ((-21, -7, 7, 21,),) self.payload_mod = payload_mod = digital.constellation_qpsk() self.packet_length_tag_key = packet_length_tag_key = "packet_len" self.occupied_carriers = occupied_carriers = (range(-26, -21) + range(-20, -7) + range(-6, 0) + range(1, 7) + range(8, 21) + range(22, 27),) self.length_tag_key = length_tag_key = "frame_len" self.header_mod = header_mod = digital.constellation_bpsk() self.fft_len = fft_len = 64 self.sync_word2 = sync_word2 = [0j, 0j, 0j, 0j, 0j, 0j, (-1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), (1+0j), (1+0j), (1 +0j), (1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), 0j, (1+0j), (-1+0j), (1+0j), (1+0j), (1+0j), (-1+0j), (1+0j), (1+0j), (1+0j), (-1+0j), (1+0j), (1+0j), (1+0j), (1+0j), (-1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (-1+0j), 0j, 0j, 0j, 0j, 0j] self.sync_word1 = sync_word1 = [0., 0., 0., 0., 0., 0., 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 0., 0., 0., 0., 0.] self.packet_len = packet_len = 96 self.header_formatter = header_formatter = digital.packet_header_ofdm(occupied_carriers, n_syms=1, len_tag_key=packet_length_tag_key, frame_len_tag_key=length_tag_key, bits_per_header_sym=header_mod.bits_per_symbol(), bits_per_payload_sym=payload_mod.bits_per_symbol(), scramble_header=False) self.header_equalizer = header_equalizer = digital.ofdm_equalizer_simpledfe(fft_len, header_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols) ################################################## # Blocks ################################################## self.zeromq_push_sink_0_0_0 = zeromq.push_sink(gr.sizeof_char, 1, "tcp://"+ ipp1 + ":55511", 100, True) self.zeromq_push_sink_0_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, "tcp://"+ ipp1 + ":55510", 100, True) self.zeromq_pull_source_0 = zeromq.pull_source(gr.sizeof_gr_complex, 1, "tcp://"+ iptx + ":55500", 100, True) self.digital_ofdm_sync_sc_cfb_0 = digital.ofdm_sync_sc_cfb(fft_len, fft_len/4, False) self.blocks_multiply_xx_1 = blocks.multiply_vcc(1) self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex*1, fft_len+fft_len/4) self.analog_frequency_modulator_fc_0 = analog.frequency_modulator_fc(-2.0/fft_len) ################################################## # Connections ################################################## self.connect((self.analog_frequency_modulator_fc_0, 0), (self.blocks_multiply_xx_1, 0)) self.connect((self.blocks_delay_0, 0), (self.blocks_multiply_xx_1, 1)) self.connect((self.blocks_multiply_xx_1, 0), (self.zeromq_push_sink_0_0, 0)) self.connect((self.digital_ofdm_sync_sc_cfb_0, 0), (self.analog_frequency_modulator_fc_0, 0)) self.connect((self.digital_ofdm_sync_sc_cfb_0, 1), (self.zeromq_push_sink_0_0_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.blocks_delay_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.digital_ofdm_sync_sc_cfb_0, 0))
def __init__(self, samp_rate, freq, gain, bw, port): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate self.gain = gain self.freq = freq self.bw = bw ################################################## # Blocks ################################################## self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "sdrplay") 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(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(gain, 0) self.osmosdr_source_0.set_if_gain(gain, 0) self.osmosdr_source_0.set_bb_gain(gain, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(bw, 0) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, 'tcp://127.0.0.1:' + str(port)) ################################################## # Connections ################################################## self.connect((self.osmosdr_source_0, 0), (self.zeromq_push_sink_0, 0))
def __init__(self, samp_rate, freq, gain, bw, device_args, port): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate self.gain = gain self.freq = freq self.bw = bw ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( device_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(gain, 0) self.uhd_usrp_source_0.set_bandwidth(bw, 0) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, 'tcp://127.0.0.1:'+str(port)) ################################################## # Connections ################################################## self.connect((self.uhd_usrp_source_0, 0), (self.zeromq_push_sink_0, 0))
def test_001 (self): vlen = 10 src_data = range(vlen)*100 src = blocks.vector_source_f(src_data, False, vlen) zeromq_push_sink = zeromq.push_sink(gr.sizeof_float, vlen, "tcp://127.0.0.1:5555") zeromq_pull_source = zeromq.pull_source(gr.sizeof_float, vlen, "tcp://127.0.0.1:5555", 0) sink = blocks.vector_sink_f(vlen) self.tb.connect(src, zeromq_push_sink) self.tb.connect(zeromq_pull_source, sink) self.tb.start() time.sleep(0.25) self.tb.stop() self.tb.wait() self.assertFloatTuplesAlmostEqual(sink.data(), src_data)
def test_001 (self): vlen = 10 src_data = list(range(vlen))*100 src = blocks.vector_source_f(src_data, False, vlen) zeromq_push_sink = zeromq.push_sink(gr.sizeof_float, vlen, "tcp://127.0.0.1:0") address = zeromq_push_sink.last_endpoint() zeromq_pull_source = zeromq.pull_source(gr.sizeof_float, vlen, address, 0) sink = blocks.vector_sink_f(vlen) self.send_tb.connect(src, zeromq_push_sink) self.recv_tb.connect(zeromq_pull_source, sink) self.recv_tb.start() time.sleep(0.5) self.send_tb.start() time.sleep(0.5) self.recv_tb.stop() self.send_tb.stop() self.recv_tb.wait() self.send_tb.wait() self.assertFloatTuplesAlmostEqual(sink.data(), src_data)
def __init__(self, samp_rate, freq, gain, if_gain, baseband_gain, bw, port): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate self.gain = gain self.freq = freq self.bw = bw ################################################## # Blocks ################################################## self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "hackrf") 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(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(gain, 0) self.osmosdr_source_0.set_if_gain(if_gain, 0) self.osmosdr_source_0.set_bb_gain(baseband_gain, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(bw, 0) self.zeromq_push_sink_0 = zeromq.push_sink( gr.sizeof_gr_complex, 1, 'tcp://127.0.0.1:' + str(port)) ################################################## # Connections ################################################## self.connect((self.osmosdr_source_0, 0), (self.zeromq_push_sink_0, 0))
def __init__( self, ipp1="127.0.0.1", ipp2="127.0.0.1", ipp3="127.0.0.1", ipp4="127.0.0.1", iptx="127.0.0.1", samp_rate=10000 ): gr.top_block.__init__(self, "OFDM Rx") ################################################## # Parameters ################################################## self.ipp1 = ipp1 self.ipp2 = ipp2 self.ipp3 = ipp3 self.ipp4 = ipp4 self.iptx = iptx self.samp_rate = samp_rate ################################################## # Variables ################################################## self.pilot_symbols = pilot_symbols = ((1, 1, 1, -1),) self.pilot_carriers = pilot_carriers = ((-21, -7, 7, 21),) self.payload_mod = payload_mod = digital.constellation_qpsk() self.packet_length_tag_key = packet_length_tag_key = "packet_len" self.occupied_carriers = occupied_carriers = ( range(-26, -21) + range(-20, -7) + range(-6, 0) + range(1, 7) + range(8, 21) + range(22, 27), ) self.length_tag_key = length_tag_key = "frame_len" self.header_mod = header_mod = digital.constellation_bpsk() self.fft_len = fft_len = 64 self.sync_word2 = sync_word2 = [ 0j, 0j, 0j, 0j, 0j, 0j, (-1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (1 + 0j), (1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), 0j, (1 + 0j), (-1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (-1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (-1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), 0j, 0j, 0j, 0j, 0j, ] self.sync_word1 = sync_word1 = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, -1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, -1.41421356, 0.0, -1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ] self.payload_equalizer = payload_equalizer = digital.ofdm_equalizer_simpledfe( fft_len, payload_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols, 1 ) self.packet_len = packet_len = 96 self.header_formatter = header_formatter = digital.packet_header_ofdm( occupied_carriers, n_syms=1, len_tag_key=packet_length_tag_key, frame_len_tag_key=length_tag_key, bits_per_header_sym=header_mod.bits_per_symbol(), bits_per_payload_sym=payload_mod.bits_per_symbol(), scramble_header=False, ) self.header_equalizer = header_equalizer = digital.ofdm_equalizer_simpledfe( fft_len, header_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols ) ################################################## # Blocks ################################################## self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, "tcp://" + iptx + ":55500", 100, True) self.my_random_source_limit_rate_0 = my.random_source_limit_rate(10000000) self.my_number_sync_timestamp_0 = my.number_sync_timestamp() self.digital_ofdm_tx_0 = digital.ofdm_tx( fft_len=fft_len, cp_len=fft_len / 4, packet_length_tag_key=packet_length_tag_key, occupied_carriers=occupied_carriers, pilot_carriers=pilot_carriers, pilot_symbols=pilot_symbols, sync_word1=sync_word1, sync_word2=sync_word2, bps_header=1, bps_payload=2, rolloff=0, debug_log=True, scramble_bits=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_stream_to_tagged_stream_0 = blocks.stream_to_tagged_stream( gr.sizeof_char, 1, packet_len, packet_length_tag_key ) (self.blocks_stream_to_tagged_stream_0).set_max_output_buffer(1) ################################################## # Connections ################################################## self.connect((self.blocks_stream_to_tagged_stream_0, 0), (self.digital_ofdm_tx_0, 0)) self.connect((self.blocks_stream_to_tagged_stream_0, 0), (self.my_number_sync_timestamp_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.zeromq_push_sink_0, 0)) self.connect((self.digital_ofdm_tx_0, 0), (self.channels_channel_model_0, 0)) self.connect((self.my_random_source_limit_rate_0, 0), (self.blocks_stream_to_tagged_stream_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Signal Hunter Faked") _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 = 2000000 self.xlate_decimation = xlate_decimation = 40 self.offset2 = offset2 = 0 self.offset = offset = samp_rate/4 self.hunter_freq_0 = hunter_freq_0 = 0 self.gain = gain = 10 self.frequency = frequency = 930000000 self.filter_width = filter_width = 5120 self.fft_taps = fft_taps = filter.firdes.low_pass_2(1, samp_rate, 2000, 1000, 0.1) ################################################## # Blocks ################################################## _offset2_sizer = wx.BoxSizer(wx.VERTICAL) self._offset2_text_box = forms.text_box( parent=self.GetWin(), sizer=_offset2_sizer, value=self.offset2, callback=self.set_offset2, label='offset2', converter=forms.int_converter(), proportion=0, ) self._offset2_slider = forms.slider( parent=self.GetWin(), sizer=_offset2_sizer, value=self.offset2, callback=self.set_offset2, minimum=-samp_rate/2, maximum=samp_rate/2, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_offset2_sizer) _offset_sizer = wx.BoxSizer(wx.VERTICAL) self._offset_text_box = forms.text_box( parent=self.GetWin(), sizer=_offset_sizer, value=self.offset, callback=self.set_offset, label='offset', converter=forms.int_converter(), proportion=0, ) self._offset_slider = forms.slider( parent=self.GetWin(), sizer=_offset_sizer, value=self.offset, callback=self.set_offset, minimum=-samp_rate/2, maximum=samp_rate/2, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_offset_sizer) _hunter_freq_0_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_0_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_0_sizer, value=self.hunter_freq_0, callback=self.set_hunter_freq_0, label='hunter_freq_0', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_0_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_0_sizer, value=self.hunter_freq_0, callback=self.set_hunter_freq_0, minimum=-100000, maximum=100000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_0_sizer) _frequency_sizer = wx.BoxSizer(wx.VERTICAL) self._frequency_text_box = forms.text_box( parent=self.GetWin(), sizer=_frequency_sizer, value=self.frequency, callback=self.set_frequency, label='Frequency', converter=forms.int_converter(), proportion=0, ) self._frequency_slider = forms.slider( parent=self.GetWin(), sizer=_frequency_sizer, value=self.frequency, callback=self.set_frequency, minimum=80000000, maximum=1100000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_frequency_sizer) self.zeromq_push_sink_1 = zeromq.push_sink(gr.sizeof_gr_complex, samp_rate, 'tcp://127.0.0.1:9001', 100, False, -1) self.zeromq_push_sink_0_0 = zeromq.push_sink(gr.sizeof_float, 1024, 'tcp://127.0.0.1:9000', 100, False, -1) self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(('localhost', 8080), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread(target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() 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/xlate_decimation, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title='filtered_fft', peak_hold=False, ) self.Add(self.wxgui_fftsink2_0_0.win) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=frequency, 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='master_plot', peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) _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.int_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=50, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_gain_sizer) self.freq_xlating_fft_filter_ccc_0 = filter.freq_xlating_fft_filter_ccc(xlate_decimation, (fft_taps), frequency + hunter_freq_0, samp_rate) self.freq_xlating_fft_filter_ccc_0.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0.declare_sample_delay(0) _filter_width_sizer = wx.BoxSizer(wx.VERTICAL) self._filter_width_text_box = forms.text_box( parent=self.GetWin(), sizer=_filter_width_sizer, value=self.filter_width, callback=self.set_filter_width, label='filter_width', converter=forms.int_converter(), proportion=0, ) self._filter_width_slider = forms.slider( parent=self.GetWin(), sizer=_filter_width_sizer, value=self.filter_width, callback=self.set_filter_width, minimum=2048, maximum=40960, num_steps=100, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_filter_width_sizer) self.fft_vxx_0 = fft.fft_vcc(1024, True, (window.blackmanharris(1024)), True, 1) self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_gr_complex*1, 1024) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True) self.blocks_stream_to_vector_2 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, samp_rate) self.blocks_stream_to_vector_1 = blocks.stream_to_vector(gr.sizeof_float*1, 1024) self.blocks_stream_to_vector_0 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, 1024) self.blocks_complex_to_real_0 = blocks.complex_to_real(1) self.blocks_add_xx_0 = blocks.add_vcc(1) self.analog_sig_source_x_0_0 = analog.sig_source_c(samp_rate, analog.GR_SIN_WAVE, frequency+offset, 0.001, 0) self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, frequency+offset2, 0.001, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx_0, 1)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_stream_to_vector_2, 0)) self.connect((self.analog_sig_source_x_0_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_add_xx_0, 0), (self.blocks_stream_to_vector_0, 0)) self.connect((self.blocks_add_xx_0, 0), (self.freq_xlating_fft_filter_ccc_0, 0)) self.connect((self.blocks_add_xx_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.blocks_complex_to_real_0, 0), (self.blocks_stream_to_vector_1, 0)) self.connect((self.blocks_stream_to_vector_0, 0), (self.fft_vxx_0, 0)) self.connect((self.blocks_stream_to_vector_1, 0), (self.zeromq_push_sink_0_0, 0)) self.connect((self.blocks_stream_to_vector_2, 0), (self.zeromq_push_sink_1, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_add_xx_0, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_complex_to_real_0, 0)) self.connect((self.fft_vxx_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0, 0), (self.wxgui_fftsink2_0_0, 0))
def __init__(self, rf_params, tcp_test, sdr_sel): gr.hier_block2.__init__( self, "TX Output", gr.io_signature(1, 1, gr.sizeof_gr_complex * 1), # single in gr.io_signature(0, 0, 0) # no streaming output ) # parameters self.rf_params = rf_params self.tcp_test = tcp_test self.sdr_sel = sdr_sel # variables self.samp_rate = rf_params.samp_rate self.center_freq = rf_params.center_freq self.tx_gain = rf_params.tx_gain # choose the appropriate output if self.sdr_sel == rfm.HW_TEST: # send through a throttle block, otherwise test mode # will run too fast self.throttle = blocks.throttle(itemsize=gr.sizeof_gr_complex, samples_per_sec=self.samp_rate) self.connect((self, 0), (self.throttle, 0)) # then into the zmq sink self.zeromq_push_sink_0 = zeromq.push_sink( gr.sizeof_gr_complex, 1, self.tcp_test, 100, False, -1) self.connect((self.throttle, 0), (self.zeromq_push_sink_0, 0)) elif self.sdr_sel == rfm.HW_UHD: self.uhd_sink = uhd.usrp_sink( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_sink.set_samp_rate(self.samp_rate) self.uhd_sink.set_center_freq(self.center_freq, 0) self.uhd_sink.set_gain(self.tx_gain, 0) self.uhd_sink.set_antenna('TX/RX', 0) self.connect((self, 0), (self.uhd_sink)) elif self.sdr_sel == rfm.HW_HACKRF: self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + '') self.osmosdr_sink_0.set_sample_rate( self.rf_params.samp_rate) self.osmosdr_sink_0.set_center_freq( self.rf_params.center_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) # mapping single value gain to hackrf's 3 stages as follows: # Gain -> RF IF BB # 0 0 0 0 # 20 0 8 8 # 30 0 16 16 # 40 14 16 16 # 60 14 24 24 # 80 14 32 32 if rf_params.tx_gain == 0: rfg, ifg, bbg = 0, 0, 0 elif rf_params.tx_gain == 20: rfg, ifg, bbg = 0, 20, 0 elif rf_params.tx_gain == 30: rfg, ifg, bbg = 0, 30, 0 elif rf_params.tx_gain == 40: rfg, ifg, bbg = 14, 26, 0 elif rf_params.tx_gain == 60: rfg, ifg, bbg = 14, 46, 0 elif rf_params.tx_gain == 80: rfg, ifg, bbg = 14, 66, 0 else: rfg, ifg, bbg = 0, 30, 0 self.osmosdr_sink_0.set_gain(rfg, 0) self.osmosdr_sink_0.set_if_gain(ifg, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.connect((self, 0), (self.osmosdr_sink_0, 0))
def __init__(self): gr.top_block.__init__(self, "Split 1") ################################################## # Variables ################################################## self.pilot_carriers = pilot_carriers = ((-27, -14, -7, 7, 14, 27),) self.pattern2 = pattern2 = [1, -1, 1, -1] self.pattern1 = pattern1 = [0., 1.41421356, 0., -1.41421356] self.occupied_carriers = occupied_carriers = (sorted(tuple(set([x for x in range(-26, 27)]) - set(pilot_carriers[0]) - set([0,]))),) self.fft_len = fft_len = 64 self.zcpu = zcpu = psutil self._xmlrpcport_config = ConfigParser.ConfigParser() self._xmlrpcport_config.read('default') try: xmlrpcport = self._xmlrpcport_config.getint("split1", "xmlrpcport") except: xmlrpcport = 8080 self.xmlrpcport = xmlrpcport self._usrpip_config = ConfigParser.ConfigParser() self._usrpip_config.read('./default') try: usrpip = self._usrpip_config.get("usrp_hydra", "ip") except: usrpip = "127.0.0.1" self.usrpip = usrpip self._timeout_config = ConfigParser.ConfigParser() self._timeout_config.read('./default') try: timeout = self._timeout_config.getint("global", "zmqtimeout") except: timeout = 100 self.timeout = timeout self.sync_word2 = sync_word2 = [0., 0., 0., 0., 0., 0.,] + pattern2 * ((fft_len-12)/len(pattern2)) +[0., 0., 0., 0., 0., 0.,] self.sync_word1 = sync_word1 = [0., 0., 0., 0., 0., 0.,] + pattern1 * ((fft_len-12)/len(pattern1)) +[0., 0., 0., 0., 0., 0.,] self._rxport_config = ConfigParser.ConfigParser() self._rxport_config.read('./default') try: rxport = self._rxport_config.get("usrp_hydra", "rxport1") except: rxport = "2666" self.rxport = rxport self.rateRx = rateRx = 0 self.rate1 = rate1 = 0 self.rate0 = rate0 = 0 self.pilot_symbols = pilot_symbols = ((-1,1, 1, -1, -1, -1),) self._payloadport_config = ConfigParser.ConfigParser() self._payloadport_config.read('./default') try: payloadport = self._payloadport_config.get("split1", "payloadport") except: payloadport = "2101" self.payloadport = payloadport self.payload_mod = payload_mod = digital.constellation_bpsk() self._maxnoutput_config = ConfigParser.ConfigParser() self._maxnoutput_config.read('./default') try: maxnoutput = self._maxnoutput_config.getint("global", "maxnoutput") except: maxnoutput = 100 self.maxnoutput = maxnoutput self.iq_rxrate = iq_rxrate = 0 self._ip_config = ConfigParser.ConfigParser() self._ip_config.read('./default') try: ip = self._ip_config.get("split1", "ip") except: ip = "127.0.0.1" self.ip = ip self._headerport_config = ConfigParser.ConfigParser() self._headerport_config.read('./default') try: headerport = self._headerport_config.get("split1", "headerport") except: headerport = "2100" self.headerport = headerport self.header_mod = header_mod = digital.constellation_bpsk() self.hdr_format = hdr_format = digital.header_format_ofdm(occupied_carriers, 1, "packet_len",) self.cpu_percent = cpu_percent = 0 ################################################## # Blocks ################################################## self.probe1_1_0 = blocks.probe_rate(gr.sizeof_char*1, 500.0, 0.15) self.probe1_1 = blocks.probe_rate(gr.sizeof_char*1, 500.0, 0.15) self.probe1_0 = blocks.probe_rate(gr.sizeof_char*1, 500.0, 0.15) self.ziq_rxrate = blocks.probe_rate(gr.sizeof_gr_complex*1, 2000, 0.15) self.zeromq_push_sink_1 = zeromq.push_sink(gr.sizeof_char, 1, "tcp://" + ip + ":" + payloadport, timeout, True, -1) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_char, 1, "tcp://" + ip + ":" + headerport, timeout, True, -1) self.zeromq_pull_source_0 = zeromq.pull_source(gr.sizeof_gr_complex, 1, "tcp://" + usrpip + ":" + rxport, 100, True, -1) self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(('127.0.0.1', xmlrpcport), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread(target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() def _rateRx_probe(): while True: val = self.probe1_1_0.rate() try: self.set_rateRx(val) except AttributeError: pass time.sleep(1.0 / (10)) _rateRx_thread = threading.Thread(target=_rateRx_probe) _rateRx_thread.daemon = True _rateRx_thread.start() def _rate1_probe(): while True: val = self.probe1_1.rate() try: self.set_rate1(val) except AttributeError: pass time.sleep(1.0 / (10)) _rate1_thread = threading.Thread(target=_rate1_probe) _rate1_thread.daemon = True _rate1_thread.start() def _rate0_probe(): while True: val = self.probe1_0.rate() try: self.set_rate0(val) except AttributeError: pass time.sleep(1.0 / (10)) _rate0_thread = threading.Thread(target=_rate0_probe) _rate0_thread.daemon = True _rate0_thread.start() def _iq_rxrate_probe(): while True: val = self.ziq_rxrate.rate() try: self.set_iq_rxrate(val) except AttributeError: pass time.sleep(1.0 / (10)) _iq_rxrate_thread = threading.Thread(target=_iq_rxrate_probe) _iq_rxrate_thread.daemon = True _iq_rxrate_thread.start() self.digital_protocol_formatter_bb_0 = digital.protocol_formatter_bb(hdr_format, "packet_len") self.digital_ofdm_rx_0 = digital.ofdm_rx( fft_len=fft_len, cp_len=16, frame_length_tag_key='frame_'+"packet_len", packet_length_tag_key="packet_len", occupied_carriers=occupied_carriers, pilot_carriers=pilot_carriers, pilot_symbols=pilot_symbols, sync_word1=sync_word1, sync_word2=sync_word2, bps_header=1, bps_payload=1, debug_log=False, scramble_bits=False ) self.digital_crc32_bb_0 = digital.crc32_bb(False, "packet_len", True) def _cpu_percent_probe(): while True: val = self.zcpu.cpu_percent() try: self.set_cpu_percent(val) except AttributeError: pass time.sleep(1.0 / (1)) _cpu_percent_thread = threading.Thread(target=_cpu_percent_probe) _cpu_percent_thread.daemon = True _cpu_percent_thread.start() self.blocks_throttle_0_0 = blocks.throttle(gr.sizeof_char*1, 200e3,True) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char*1, 200e3,True) self.blocks_tag_debug_0 = blocks.tag_debug(gr.sizeof_char*1, "RX'd Packets", ""); self.blocks_tag_debug_0.set_display(True) self.blocks_stream_to_tagged_stream_0 = blocks.stream_to_tagged_stream(gr.sizeof_char, 1, 100, "packet_len") self.blocks_repack_bits_bb_0_0 = blocks.repack_bits_bb(8, 1, "packet_len", False, gr.GR_LSB_FIRST) self.blocks_repack_bits_bb_0 = blocks.repack_bits_bb(8, payload_mod.bits_per_symbol(), "packet_len", False, gr.GR_LSB_FIRST) self.analog_random_source_x_0 = blocks.vector_source_b(map(int, numpy.random.randint(0, 100, 1000)), True) ################################################## # Connections ################################################## self.connect((self.analog_random_source_x_0, 0), (self.blocks_stream_to_tagged_stream_0, 0)) self.connect((self.blocks_repack_bits_bb_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_repack_bits_bb_0, 0), (self.probe1_1, 0)) self.connect((self.blocks_repack_bits_bb_0_0, 0), (self.probe1_0, 0)) self.connect((self.blocks_repack_bits_bb_0_0, 0), (self.zeromq_push_sink_0, 0)) self.connect((self.blocks_stream_to_tagged_stream_0, 0), (self.digital_crc32_bb_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.zeromq_push_sink_1, 0)) self.connect((self.blocks_throttle_0_0, 0), (self.blocks_repack_bits_bb_0_0, 0)) self.connect((self.digital_crc32_bb_0, 0), (self.blocks_repack_bits_bb_0, 0)) self.connect((self.digital_crc32_bb_0, 0), (self.digital_protocol_formatter_bb_0, 0)) self.connect((self.digital_ofdm_rx_0, 0), (self.blocks_tag_debug_0, 0)) self.connect((self.digital_ofdm_rx_0, 0), (self.probe1_1_0, 0)) self.connect((self.digital_protocol_formatter_bb_0, 0), (self.blocks_throttle_0_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.digital_ofdm_rx_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.ziq_rxrate, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Avalanche Beacon Detection") _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 = 768e3 self.decim_total = decim_total = 200 * 8 self.samp_rate_decimated = samp_rate_decimated = samp_rate / decim_total self.vec_len = vec_len = 480 self.transition_bw = transition_bw = samp_rate_decimated / 4 self.center_freq = center_freq = 457e3 self.FIR_taps_matched_48 = FIR_taps_matched_48 = ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ################################################## # Blocks ################################################## self.zeromq_push_sink_Y = zeromq.push_sink(gr.sizeof_float, vec_len, "tcp://127.0.0.1:5556", 100, False, -1) self.zeromq_push_sink_X = zeromq.push_sink(gr.sizeof_float, vec_len, "tcp://127.0.0.1:5555", 100, False, -1) self.freq_xlating_fir_filter_DEC_LP_Y = filter.freq_xlating_fir_filter_ccc( decim_total, (firdes.low_pass(1, samp_rate, (samp_rate_decimated / 2) * 0.5, transition_bw, firdes.WIN_HAMMING, 6.76)), 0, samp_rate) self.freq_xlating_fir_filter_DEC_LP_X = filter.freq_xlating_fir_filter_ccc( decim_total, (firdes.low_pass(1, samp_rate, (samp_rate_decimated / 2) * 0.5, transition_bw, firdes.WIN_HAMMING, 6.76)), 0, samp_rate) self.fir_filter_matched_Y = filter.fir_filter_ccc( 1, (FIR_taps_matched_48)) self.fir_filter_matched_Y.declare_sample_delay(0) self.fir_filter_matched_X = filter.fir_filter_ccc( 1, (FIR_taps_matched_48)) self.fir_filter_matched_X.declare_sample_delay(0) self.blocks_stream_to_vector_1_0_0_0 = blocks.stream_to_vector( gr.sizeof_float * 1, vec_len) self.blocks_stream_to_vector_1_0_0 = blocks.stream_to_vector( gr.sizeof_float * 1, vec_len) self.blocks_multiply_const_Y = blocks.multiply_const_vcc((0.020833, )) self.blocks_multiply_const_X = blocks.multiply_const_vcc((0.020833, )) self.blocks_complex_to_mag_0_0_0 = blocks.complex_to_mag(1) self.blocks_complex_to_mag_0_0 = blocks.complex_to_mag(1) self.airspyhf_source_Y = osmosdr.source(args="numchan=" + str(1) + " " + 'airspyhf=1') self.airspyhf_source_Y.set_sample_rate(samp_rate) self.airspyhf_source_Y.set_center_freq(center_freq, 0) self.airspyhf_source_Y.set_freq_corr(0, 0) self.airspyhf_source_Y.set_iq_balance_mode(0, 0) self.airspyhf_source_Y.set_gain_mode(False, 0) self.airspyhf_source_Y.set_gain(6, "LNA", 0) self.airspyhf_source_Y.set_gain(0, "ATT", 0) self.airspyhf_source_X = osmosdr.source(args="numchan=" + str(1) + " " + 'airspyhf=0') self.airspyhf_source_X.set_sample_rate(samp_rate) self.airspyhf_source_X.set_center_freq(center_freq, 0) self.airspyhf_source_X.set_freq_corr(0, 0) self.airspyhf_source_X.set_iq_balance_mode(0, 0) self.airspyhf_source_X.set_gain_mode(False, 0) self.airspyhf_source_X.set_gain(6, "LNA", 0) self.airspyhf_source_X.set_gain(0, "ATT", 0) ################################################## # Connections ################################################## self.connect((self.airspyhf_source_X, 0), (self.freq_xlating_fir_filter_DEC_LP_X, 0)) self.connect((self.airspyhf_source_Y, 0), (self.freq_xlating_fir_filter_DEC_LP_Y, 0)) self.connect((self.blocks_complex_to_mag_0_0, 0), (self.blocks_stream_to_vector_1_0_0, 0)) self.connect((self.blocks_complex_to_mag_0_0_0, 0), (self.blocks_stream_to_vector_1_0_0_0, 0)) self.connect((self.blocks_multiply_const_X, 0), (self.blocks_complex_to_mag_0_0, 0)) self.connect((self.blocks_multiply_const_Y, 0), (self.blocks_complex_to_mag_0_0_0, 0)) self.connect((self.blocks_stream_to_vector_1_0_0, 0), (self.zeromq_push_sink_X, 0)) self.connect((self.blocks_stream_to_vector_1_0_0_0, 0), (self.zeromq_push_sink_Y, 0)) self.connect((self.fir_filter_matched_X, 0), (self.blocks_multiply_const_X, 0)) self.connect((self.fir_filter_matched_Y, 0), (self.blocks_multiply_const_Y, 0)) self.connect((self.freq_xlating_fir_filter_DEC_LP_X, 0), (self.fir_filter_matched_X, 0)) self.connect((self.freq_xlating_fir_filter_DEC_LP_Y, 0), (self.fir_filter_matched_Y, 0))
def __init__(self): gr.top_block.__init__(self, "TJ Groundstation No Gui with Control and IQ streaming") ################################################## # Variables ################################################## self.interp = interp = 4 self.audio_rate = audio_rate = 48000 self.tx_gain = tx_gain = 10 self.rx_downsamp_bw = rx_downsamp_bw = 10000 self.rf_tx_rate = rf_tx_rate = audio_rate*interp self.rf_rx_rate = rf_rx_rate = 192000 self.preamble_len = preamble_len = 300 self.groundstation_zmq_port_4 = groundstation_zmq_port_4 = "5504" self.groundstation_zmq_port_3 = groundstation_zmq_port_3 = "5503" self.groundstation_zmq_port_2 = groundstation_zmq_port_2 = "5502" self.groundstation_zmq_port_1 = groundstation_zmq_port_1 = "5501" self.groundstation_port_2 = groundstation_port_2 = "5557" self.groundstation_port_1 = groundstation_port_1 = "5555" self.groundstation_ip_addr = groundstation_ip_addr = "192.168.1.10" self.groundstation_controller_ip = groundstation_controller_ip = "192.268.1.3" self.gain = gain = 40 self.freq = freq = 144.39e6 self.baud_rate = baud_rate = 1200 self.audio_line_driver = audio_line_driver = .8 self.Decay = Decay = 0.8 self.Attack = Attack = 0.8 ################################################## # Blocks ################################################## self.zeromq_push_sink_0_0_0_0 = zeromq.push_sink(gr.sizeof_float, 1, "tcp://"+groundstation_ip_addr+":"+groundstation_zmq_port_4, 100, False, -1) self.zeromq_push_sink_0_0_0 = zeromq.push_sink(gr.sizeof_float, 1, "tcp://"+groundstation_ip_addr+":"+groundstation_zmq_port_3, 100, False, -1) self.zeromq_push_sink_0_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, "tcp://"+groundstation_ip_addr+":"+groundstation_zmq_port_2, 100, False, -1) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, "tcp://"+groundstation_ip_addr+":"+groundstation_zmq_port_1, 100, False, -1) self.uhd_usrp_source_0_1 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0_1.set_samp_rate(rf_rx_rate) self.uhd_usrp_source_0_1.set_center_freq(freq, 0) self.uhd_usrp_source_0_1.set_gain(gain, 0) self.uhd_usrp_source_0_1.set_antenna('RX2', 0) self.uhd_usrp_source_0_1.set_bandwidth(rf_rx_rate, 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(rf_tx_rate) self.uhd_usrp_sink_0.set_center_freq(freq, 0) self.uhd_usrp_sink_0.set_gain(tx_gain, 0) self.uhd_usrp_sink_0.set_antenna('TX/RX', 0) self.uhd_usrp_sink_0.set_bandwidth(rf_tx_rate, 0) self.rational_resampler_xxx_0_0 = filter.rational_resampler_ccc( interpolation=4, decimation=1, taps=None, fractional_bw=None, ) self.low_pass_filter_0_0 = filter.fir_filter_ccf(4, firdes.low_pass( 1, rf_rx_rate, rx_downsamp_bw/2, 1000, firdes.WIN_HAMMING, 6.76)) self.detectMarkSpace_1_0_0 = detectMarkSpace( Frequency=2200, attack=Attack, decay=Decay, samp_rate=audio_rate, ) self.detectMarkSpace_0_0_0 = detectMarkSpace( Frequency=1200, attack=Attack, decay=Decay, samp_rate=audio_rate, ) self.bruninga_str_to_aprs_0 = bruninga.str_to_aprs('KN4DTQ', 'KN4DTQ', []) self.bruninga_ax25_fsk_mod_0 = bruninga.ax25_fsk_mod(audio_rate, preamble_len, 5, 2200, 1200, baud_rate) self.blocks_udp_sink_0_0 = blocks.udp_sink(gr.sizeof_char*1, groundstation_controller_ip, int(groundstation_port_2), 1472, True) self.blocks_sub_xx_0_0_0_0 = blocks.sub_ff(1) self.blocks_socket_pdu_0_0 = blocks.socket_pdu("UDP_SERVER", groundstation_ip_addr, groundstation_port_1, 10000, False) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((0.8, )) self.analog_nbfm_tx_0 = analog.nbfm_tx( audio_rate=audio_rate, quad_rate=audio_rate, tau=75e-6, max_dev=5e3, fh=-1.0, ) self.analog_nbfm_rx_0_0 = analog.nbfm_rx( audio_rate=audio_rate, quad_rate=audio_rate, tau=75e-6, max_dev=5e3, ) self.afsk_ax25decode_1_0 = afsk.ax25decode(audio_rate, 1) ################################################## # Connections ################################################## self.msg_connect((self.blocks_socket_pdu_0_0, 'pdus'), (self.bruninga_str_to_aprs_0, 'in')) self.msg_connect((self.bruninga_str_to_aprs_0, 'out'), (self.bruninga_ax25_fsk_mod_0, 'in')) self.connect((self.afsk_ax25decode_1_0, 0), (self.blocks_udp_sink_0_0, 0)) self.connect((self.analog_nbfm_rx_0_0, 0), (self.detectMarkSpace_0_0_0, 0)) self.connect((self.analog_nbfm_rx_0_0, 0), (self.detectMarkSpace_1_0_0, 0)) self.connect((self.analog_nbfm_rx_0_0, 0), (self.zeromq_push_sink_0_0_0_0, 0)) self.connect((self.analog_nbfm_tx_0, 0), (self.rational_resampler_xxx_0_0, 0)) self.connect((self.analog_nbfm_tx_0, 0), (self.zeromq_push_sink_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.analog_nbfm_tx_0, 0)) self.connect((self.blocks_sub_xx_0_0_0_0, 0), (self.afsk_ax25decode_1_0, 0)) self.connect((self.bruninga_ax25_fsk_mod_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.bruninga_ax25_fsk_mod_0, 0), (self.zeromq_push_sink_0_0_0, 0)) self.connect((self.detectMarkSpace_0_0_0, 0), (self.blocks_sub_xx_0_0_0_0, 0)) self.connect((self.detectMarkSpace_1_0_0, 0), (self.blocks_sub_xx_0_0_0_0, 1)) self.connect((self.low_pass_filter_0_0, 0), (self.analog_nbfm_rx_0_0, 0)) self.connect((self.low_pass_filter_0_0, 0), (self.zeromq_push_sink_0_0, 0)) self.connect((self.rational_resampler_xxx_0_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.uhd_usrp_source_0_1, 0), (self.low_pass_filter_0_0, 0))
def __init__(self, maxoutbuffer=0): gr.top_block.__init__(self, "Split 3") ################################################## # Parameters ################################################## self.maxoutbuffer = maxoutbuffer ################################################## # Variables ################################################## self.pilot_carriers = pilot_carriers = ((-27, -14, -7, 7, 14, 27), ) self.pattern2 = pattern2 = [1, -1, 1, -1] self.pattern1 = pattern1 = [0., 1.41421356, 0., -1.41421356] self.fft_len = fft_len = 64 self.zcpu = zcpu = psutil self._xmlrpcport_config = ConfigParser.ConfigParser() self._xmlrpcport_config.read('default') try: xmlrpcport = self._xmlrpcport_config.getint("split3", 'xmlrpcport') except: xmlrpcport = 8081 self.xmlrpcport = xmlrpcport self._timeout_config = ConfigParser.ConfigParser() self._timeout_config.read('default') try: timeout = self._timeout_config.getint("global", "zmqtimeout") except: timeout = 100 self.timeout = timeout self.sync_word2 = sync_word2 = [ 0., 0., 0., 0., 0., 0., ] + pattern2 * ((fft_len - 12) / len(pattern2)) + [ 0., 0., 0., 0., 0., 0., ] self.sync_word1 = sync_word1 = [ 0., 0., 0., 0., 0., 0., ] + pattern1 * ((fft_len - 12) / len(pattern1)) + [ 0., 0., 0., 0., 0., 0., ] self._split2port_config = ConfigParser.ConfigParser() self._split2port_config.read('default') try: split2port = self._split2port_config.get("split2", "port") except: split2port = "2200" self.split2port = split2port self._split2ip_config = ConfigParser.ConfigParser() self._split2ip_config.read('default') try: split2ip = self._split2ip_config.get("split2", "ip") except: split2ip = "127.0.0.1" self.split2ip = split2ip self.rate = rate = 0 self._port_config = ConfigParser.ConfigParser() self._port_config.read('default') try: port = self._port_config.get("split3", "port") except: port = "2300" self.port = port self.pilot_symbols = pilot_symbols = ((-1, 1, 1, -1, -1, -1), ) self.occupied_carriers = occupied_carriers = (sorted( tuple( set([x for x in range(-26, 27)]) - set(pilot_carriers[0]) - set([ 0, ]))), ) self._maxnoutput_config = ConfigParser.ConfigParser() self._maxnoutput_config.read('default') try: maxnoutput = self._maxnoutput_config.getint("global", "maxnoutput") except: maxnoutput = 100 self.maxnoutput = maxnoutput self._ip_config = ConfigParser.ConfigParser() self._ip_config.read('default') try: ip = self._ip_config.get("split3", "ip") except: ip = "127.0.0.1" self.ip = ip self.cpu_percent = cpu_percent = 0 ################################################## # Blocks ################################################## self.probe3 = blocks.probe_rate(gr.sizeof_gr_complex * 1, 2000, 0.15) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, "tcp://" + ip + ":" + port, timeout, True, -1) self.zeromq_pull_source_0 = zeromq.pull_source( gr.sizeof_gr_complex, 1, "tcp://" + split2ip + ":" + split2port, timeout, True, -1) self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer( ('127.0.0.1', xmlrpcport), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread( target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() def _rate_probe(): while True: val = self.probe3.rate() try: self.set_rate(val) except AttributeError: pass time.sleep(1.0 / (10)) _rate_thread = threading.Thread(target=_rate_probe) _rate_thread.daemon = True _rate_thread.start() self.fft_vxx_0 = fft.fft_vcc(fft_len, False, (()), True, 1) self.digital_ofdm_cyclic_prefixer_0 = digital.ofdm_cyclic_prefixer( fft_len, fft_len + 16, 0, "packet_len") self.digital_ofdm_carrier_allocator_cvc_0 = digital.ofdm_carrier_allocator_cvc( fft_len, occupied_carriers, pilot_carriers, pilot_symbols, (sync_word1, sync_word2), "packet_len") def _cpu_percent_probe(): while True: val = self.zcpu.cpu_percent() try: self.set_cpu_percent(val) except AttributeError: pass time.sleep(1.0 / (1)) _cpu_percent_thread = threading.Thread(target=_cpu_percent_probe) _cpu_percent_thread.daemon = True _cpu_percent_thread.start() self.blocks_tag_debug_0 = blocks.tag_debug(gr.sizeof_gr_complex * 1, '', "") self.blocks_tag_debug_0.set_display(True) ################################################## # Connections ################################################## self.connect((self.digital_ofdm_carrier_allocator_cvc_0, 0), (self.fft_vxx_0, 0)) self.connect((self.digital_ofdm_cyclic_prefixer_0, 0), (self.blocks_tag_debug_0, 0)) self.connect((self.digital_ofdm_cyclic_prefixer_0, 0), (self.probe3, 0)) self.connect((self.digital_ofdm_cyclic_prefixer_0, 0), (self.zeromq_push_sink_0, 0)) self.connect((self.fft_vxx_0, 0), (self.digital_ofdm_cyclic_prefixer_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.digital_ofdm_carrier_allocator_cvc_0, 0))
def __init__( self, ipp1="127.0.0.1", ipp2="127.0.0.1", ipp3="127.0.0.1", ipp4="127.0.0.1", iptx="127.0.0.1", samp_rate=1000 ): gr.top_block.__init__(self, "OFDM Rx") ################################################## # Parameters ################################################## self.ipp1 = ipp1 self.ipp2 = ipp2 self.ipp3 = ipp3 self.ipp4 = ipp4 self.iptx = iptx self.samp_rate = samp_rate ################################################## # Variables ################################################## self.pilot_symbols = pilot_symbols = ((1, 1, 1, -1),) self.pilot_carriers = pilot_carriers = ((-21, -7, 7, 21),) self.payload_mod = payload_mod = digital.constellation_qpsk() self.packet_length_tag_key = packet_length_tag_key = "packet_len" self.occupied_carriers = occupied_carriers = ( range(-26, -21) + range(-20, -7) + range(-6, 0) + range(1, 7) + range(8, 21) + range(22, 27), ) self.length_tag_key = length_tag_key = "frame_len" self.header_mod = header_mod = digital.constellation_bpsk() self.fft_len = fft_len = 64 self.sync_word2 = sync_word2 = [ 0j, 0j, 0j, 0j, 0j, 0j, (-1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (1 + 0j), (1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), 0j, (1 + 0j), (-1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (-1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (-1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), (1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), (-1 + 0j), 0j, 0j, 0j, 0j, 0j, ] self.sync_word1 = sync_word1 = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, -1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, -1.41421356, 0.0, -1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, -1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, 1.41421356, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ] self.payload_equalizer = payload_equalizer = digital.ofdm_equalizer_simpledfe( fft_len, payload_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols, 1 ) self.packet_len = packet_len = 96 self.header_formatter = header_formatter = digital.packet_header_ofdm( occupied_carriers, n_syms=1, len_tag_key=packet_length_tag_key, frame_len_tag_key=length_tag_key, bits_per_header_sym=header_mod.bits_per_symbol(), bits_per_payload_sym=payload_mod.bits_per_symbol(), scramble_header=False, ) self.header_equalizer = header_equalizer = digital.ofdm_equalizer_simpledfe( fft_len, header_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols ) ################################################## # Blocks ################################################## self.zeromq_push_sink_0_0_1_0_0 = zeromq.push_sink(gr.sizeof_char, 1, "tcp://" + ipp3 + ":55530", 100, True) self.zeromq_push_sink_0_0_1_0 = zeromq.push_sink( gr.sizeof_gr_complex, 64, "tcp://" + ipp2 + ":55521", 100, True ) self.zeromq_push_sink_0_0_1 = zeromq.push_sink(gr.sizeof_gr_complex, 64, "tcp://" + ipp2 + ":55520", 100, True) self.zeromq_push_sink_0_0_0 = zeromq.push_sink(gr.sizeof_char, 1, "tcp://" + ipp1 + ":55511", 100, True) self.zeromq_push_sink_0_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, "tcp://" + ipp1 + ":55510", 100, True) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, "tcp://" + iptx + ":55500", 100, True) self.zeromq_pull_source_0_0_0_0_0_0 = zeromq.pull_source( gr.sizeof_gr_complex, 64, "tcp://" + ipp2 + ":55521", 100, True ) self.zeromq_pull_source_0_0_0_0_0 = zeromq.pull_source( gr.sizeof_gr_complex, 64, "tcp://" + ipp2 + ":55520", 100, True ) self.zeromq_pull_source_0_0_0_0 = zeromq.pull_source(gr.sizeof_char, 1, "tcp://" + ipp3 + ":55530", 100, True) self.zeromq_pull_source_0_0_0 = zeromq.pull_source(gr.sizeof_char, 1, "tcp://" + ipp1 + ":55511", 100, True) self.zeromq_pull_source_0_0 = zeromq.pull_source(gr.sizeof_gr_complex, 1, "tcp://" + ipp1 + ":55510", 100, True) self.zeromq_pull_source_0 = zeromq.pull_source(gr.sizeof_gr_complex, 1, "tcp://" + iptx + ":55500", 100, True) self.my_random_source_limit_rate_0 = my.random_source_limit_rate(1000) self.my_number_sync_timestamp_0 = my.number_sync_timestamp() self.fft_vxx_1 = fft.fft_vcc(fft_len, True, (), True, 1) self.fft_vxx_0 = fft.fft_vcc(fft_len, True, (()), True, 1) self.digital_packet_headerparser_b_0 = digital.packet_headerparser_b(header_formatter.base()) self.digital_ofdm_tx_0 = digital.ofdm_tx( fft_len=fft_len, cp_len=fft_len / 4, packet_length_tag_key=packet_length_tag_key, occupied_carriers=occupied_carriers, pilot_carriers=pilot_carriers, pilot_symbols=pilot_symbols, sync_word1=sync_word1, sync_word2=sync_word2, bps_header=1, bps_payload=2, rolloff=0, debug_log=True, scramble_bits=False, ) self.digital_ofdm_sync_sc_cfb_0 = digital.ofdm_sync_sc_cfb(fft_len, fft_len / 4, False) self.digital_ofdm_serializer_vcc_payload = digital.ofdm_serializer_vcc( fft_len, occupied_carriers, length_tag_key, packet_length_tag_key, 1, "", True ) self.digital_ofdm_serializer_vcc_header = digital.ofdm_serializer_vcc( fft_len, occupied_carriers, length_tag_key, "", 0, "", True ) self.digital_ofdm_frame_equalizer_vcvc_1 = digital.ofdm_frame_equalizer_vcvc( payload_equalizer.base(), fft_len / 4, length_tag_key, True, 0 ) self.digital_ofdm_frame_equalizer_vcvc_0 = digital.ofdm_frame_equalizer_vcvc( header_equalizer.base(), fft_len / 4, length_tag_key, True, 1 ) self.digital_ofdm_chanest_vcvc_0 = digital.ofdm_chanest_vcvc((sync_word1), (sync_word2), 1, 0, 3, False) self.digital_header_payload_demux_0 = digital.header_payload_demux( 3, fft_len, fft_len / 4, length_tag_key, "", True, gr.sizeof_gr_complex, "rx_time", samp_rate, () ) self.digital_crc32_bb_0 = digital.crc32_bb(True, packet_length_tag_key, True) self.digital_constellation_decoder_cb_1 = digital.constellation_decoder_cb(payload_mod.base()) self.digital_constellation_decoder_cb_0 = digital.constellation_decoder_cb(header_mod.base()) self.channels_channel_model_0 = channels.channel_model( noise_voltage=0.1, frequency_offset=0 * 1.0 / fft_len, epsilon=1.0, taps=(1.0,), noise_seed=0, block_tags=True, ) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1, samp_rate, True) self.blocks_tag_debug_1 = blocks.tag_debug(gr.sizeof_char * 1, "Rx Bytes", "") self.blocks_tag_debug_1.set_display(True) self.blocks_stream_to_tagged_stream_0 = blocks.stream_to_tagged_stream( gr.sizeof_char, 1, packet_len, packet_length_tag_key ) self.blocks_repack_bits_bb_0 = blocks.repack_bits_bb( payload_mod.bits_per_symbol(), 8, packet_length_tag_key, True, gr.GR_LSB_FIRST ) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex * 1, fft_len + fft_len / 4) self.analog_frequency_modulator_fc_0 = analog.frequency_modulator_fc(-2.0 / fft_len) ################################################## # Connections ################################################## self.msg_connect( (self.digital_packet_headerparser_b_0, "header_data"), (self.digital_header_payload_demux_0, "header_data") ) self.connect((self.analog_frequency_modulator_fc_0, 0), (self.blocks_multiply_xx_0, 0)) self.connect((self.blocks_delay_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.blocks_multiply_xx_0, 0), (self.zeromq_push_sink_0_0, 0)) self.connect((self.blocks_repack_bits_bb_0, 0), (self.digital_crc32_bb_0, 0)) self.connect((self.blocks_stream_to_tagged_stream_0, 0), (self.digital_ofdm_tx_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.zeromq_push_sink_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.digital_constellation_decoder_cb_0, 0), (self.zeromq_push_sink_0_0_1_0_0, 0)) self.connect((self.digital_constellation_decoder_cb_1, 0), (self.blocks_repack_bits_bb_0, 0)) self.connect((self.digital_crc32_bb_0, 0), (self.blocks_tag_debug_1, 0)) self.connect((self.digital_crc32_bb_0, 0), (self.my_number_sync_timestamp_0, 0)) self.connect((self.digital_header_payload_demux_0, 0), (self.zeromq_push_sink_0_0_1, 0)) self.connect((self.digital_header_payload_demux_0, 1), (self.zeromq_push_sink_0_0_1_0, 0)) self.connect((self.digital_ofdm_chanest_vcvc_0, 0), (self.digital_ofdm_frame_equalizer_vcvc_0, 0)) self.connect((self.digital_ofdm_frame_equalizer_vcvc_0, 0), (self.digital_ofdm_serializer_vcc_header, 0)) self.connect((self.digital_ofdm_frame_equalizer_vcvc_1, 0), (self.digital_ofdm_serializer_vcc_payload, 0)) self.connect((self.digital_ofdm_serializer_vcc_header, 0), (self.digital_constellation_decoder_cb_0, 0)) self.connect((self.digital_ofdm_serializer_vcc_payload, 0), (self.digital_constellation_decoder_cb_1, 0)) self.connect((self.digital_ofdm_sync_sc_cfb_0, 0), (self.analog_frequency_modulator_fc_0, 0)) self.connect((self.digital_ofdm_sync_sc_cfb_0, 1), (self.zeromq_push_sink_0_0_0, 0)) self.connect((self.digital_ofdm_tx_0, 0), (self.channels_channel_model_0, 0)) self.connect((self.fft_vxx_0, 0), (self.digital_ofdm_chanest_vcvc_0, 0)) self.connect((self.fft_vxx_1, 0), (self.digital_ofdm_frame_equalizer_vcvc_1, 0)) self.connect((self.my_random_source_limit_rate_0, 0), (self.blocks_stream_to_tagged_stream_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.blocks_delay_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.digital_ofdm_sync_sc_cfb_0, 0)) self.connect((self.zeromq_pull_source_0_0, 0), (self.digital_header_payload_demux_0, 0)) self.connect((self.zeromq_pull_source_0_0_0, 0), (self.digital_header_payload_demux_0, 1)) self.connect((self.zeromq_pull_source_0_0_0_0, 0), (self.digital_packet_headerparser_b_0, 0)) self.connect((self.zeromq_pull_source_0_0_0_0_0, 0), (self.fft_vxx_0, 0)) self.connect((self.zeromq_pull_source_0_0_0_0_0_0, 0), (self.fft_vxx_1, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") Qt.QWidget.__init__(self) self.setWindowTitle("Top Block") 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", "top_block") 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.channel_freq = channel_freq = 915003300 self.samp_rate = samp_rate = 250000 self.fftsize = fftsize = 512 self.channel_width = channel_width = 20000 self.center_freq = center_freq = channel_freq - 50000 ################################################## # Blocks ################################################## self._channel_width_range = Range(500, 50000, 100, 20000, 200) self._channel_width_win = RangeWidget(self._channel_width_range, self.set_channel_width, "channel_width", "counter_slider", float) self.top_layout.addWidget(self._channel_width_win) self._channel_freq_range = Range(914e6, 916e6, 1000, 915003300, 200) self._channel_freq_win = RangeWidget(self._channel_freq_range, self.set_channel_freq, "channel_freq", "counter_slider", float) self.top_layout.addWidget(self._channel_freq_win) self.zeromq_push_sink_0_0 = zeromq.push_sink(gr.sizeof_float, 1, 'tcp://127.0.0.1:5558', 100, False, -1) self.rtlsdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + '') self.rtlsdr_source_0.set_sample_rate(samp_rate) self.rtlsdr_source_0.set_center_freq(center_freq, 0) self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_dc_offset_mode(0, 0) self.rtlsdr_source_0.set_iq_balance_mode(0, 0) self.rtlsdr_source_0.set_gain_mode(False, 0) self.rtlsdr_source_0.set_gain(30, 0) self.rtlsdr_source_0.set_if_gain(20, 0) self.rtlsdr_source_0.set_bb_gain(20, 0) self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_bandwidth(0, 0) self.qtgui_waterfall_sink_x_0_1 = qtgui.waterfall_sink_c( fftsize, #size firdes.WIN_BLACKMAN_hARRIS, #wintype center_freq, #fc samp_rate, #bw "Post-filter", #name 1 #number of inputs ) self.qtgui_waterfall_sink_x_0_1.set_update_time(0.10) self.qtgui_waterfall_sink_x_0_1.enable_grid(False) self.qtgui_waterfall_sink_x_0_1.enable_axis_labels(True) if not True: self.qtgui_waterfall_sink_x_0_1.disable_legend() if "complex" == "float" or "complex" == "msg_float": self.qtgui_waterfall_sink_x_0_1.set_plot_pos_half(not 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 xrange(1): if len(labels[i]) == 0: self.qtgui_waterfall_sink_x_0_1.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_waterfall_sink_x_0_1.set_line_label(i, labels[i]) self.qtgui_waterfall_sink_x_0_1.set_color_map(i, colors[i]) self.qtgui_waterfall_sink_x_0_1.set_line_alpha(i, alphas[i]) self.qtgui_waterfall_sink_x_0_1.set_intensity_range(-140, 10) self._qtgui_waterfall_sink_x_0_1_win = sip.wrapinstance( self.qtgui_waterfall_sink_x_0_1.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_waterfall_sink_x_0_1_win) self.qtgui_waterfall_sink_x_0 = qtgui.waterfall_sink_c( fftsize, #size firdes.WIN_BLACKMAN_hARRIS, #wintype center_freq, #fc samp_rate, #bw "Raw samples", #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) if not True: self.qtgui_waterfall_sink_x_0.disable_legend() if "complex" == "float" or "complex" == "msg_float": self.qtgui_waterfall_sink_x_0.set_plot_pos_half(not 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 xrange(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_layout.addWidget(self._qtgui_waterfall_sink_x_0_win) self.qtgui_time_sink_x_0_1_0 = qtgui.time_sink_f( fftsize, #size samp_rate, #samp_rate "Magnitude", #name 1 #number of inputs ) self.qtgui_time_sink_x_0_1_0.set_update_time(0.10) self.qtgui_time_sink_x_0_1_0.set_y_axis(0, 0.4) self.qtgui_time_sink_x_0_1_0.set_y_label('Amplitude', "") self.qtgui_time_sink_x_0_1_0.enable_tags(-1, True) self.qtgui_time_sink_x_0_1_0.set_trigger_mode(qtgui.TRIG_MODE_AUTO, qtgui.TRIG_SLOPE_POS, 0.018, 0, 0, "") self.qtgui_time_sink_x_0_1_0.enable_autoscale(False) self.qtgui_time_sink_x_0_1_0.enable_grid(False) self.qtgui_time_sink_x_0_1_0.enable_axis_labels(True) self.qtgui_time_sink_x_0_1_0.enable_control_panel(True) self.qtgui_time_sink_x_0_1_0.enable_stem_plot(False) if not True: self.qtgui_time_sink_x_0_1_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_1_0.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_time_sink_x_0_1_0.set_line_label(i, labels[i]) self.qtgui_time_sink_x_0_1_0.set_line_width(i, widths[i]) self.qtgui_time_sink_x_0_1_0.set_line_color(i, colors[i]) self.qtgui_time_sink_x_0_1_0.set_line_style(i, styles[i]) self.qtgui_time_sink_x_0_1_0.set_line_marker(i, markers[i]) self.qtgui_time_sink_x_0_1_0.set_line_alpha(i, alphas[i]) self._qtgui_time_sink_x_0_1_0_win = sip.wrapinstance( self.qtgui_time_sink_x_0_1_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_time_sink_x_0_1_0_win) self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) self.band_pass_filter_0 = filter.fir_filter_ccc( 1, firdes.complex_band_pass( 1, samp_rate, channel_freq - center_freq - channel_width / 2, channel_freq - center_freq + channel_width / 2, 1000, firdes.WIN_HAMMING, 6.76)) ################################################## # Connections ################################################## self.connect((self.band_pass_filter_0, 0), (self.blocks_complex_to_mag_0, 0)) self.connect((self.band_pass_filter_0, 0), (self.qtgui_waterfall_sink_x_0_1, 0)) self.connect((self.blocks_complex_to_mag_0, 0), (self.qtgui_time_sink_x_0_1_0, 0)) self.connect((self.blocks_complex_to_mag_0, 0), (self.zeromq_push_sink_0_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.band_pass_filter_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.qtgui_waterfall_sink_x_0, 0))
def __init__(self, freq_lo_offset=60e3, freq_rftune=70e6, gain_rxa=0, gain_rxb=0): gr.top_block.__init__(self, "Holorx E3") ################################################## # Parameters ################################################## self.freq_lo_offset = freq_lo_offset self.freq_rftune = freq_rftune self.gain_rxa = gain_rxa self.gain_rxb = gain_rxb ################################################## # Variables ################################################## self.sps_output = sps_output = 1000 self.server_port = server_port = 30000 self.server_address = server_address = "192.168.10.184" self.samp_rate = samp_rate = 20e3 ################################################## # Blocks ################################################## self.zeromq_push_sink_1 = zeromq.push_sink(gr.sizeof_gr_complex, 1, 'tcp://*:9998', 100, False, -1) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, 'tcp://*:9999', 100, False, -1) self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer((str(server_address), int(server_port)), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread(target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(('', "")), uhd.stream_args( cpu_format="fc32", channels=range(2), ), ) self.uhd_usrp_source_0.set_clock_source('internal', 0) self.uhd_usrp_source_0.set_time_source('external', 0) self.uhd_usrp_source_0.set_subdev_spec('A:A A:B', 0) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(uhd.tune_request(freq_rftune,freq_lo_offset), 0) self.uhd_usrp_source_0.set_gain(gain_rxa, 0) self.uhd_usrp_source_0.set_antenna('RX2', 0) self.uhd_usrp_source_0.set_center_freq(uhd.tune_request(freq_rftune,freq_lo_offset), 1) self.uhd_usrp_source_0.set_gain(gain_rxb, 1) self.uhd_usrp_source_0.set_antenna('RX2', 1) self.rational_resampler_xxx_0_0 = filter.rational_resampler_ccc( interpolation=1, decimation=int(samp_rate/sps_output), taps=None, fractional_bw=None, ) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=1, decimation=int(samp_rate/sps_output), taps=None, fractional_bw=None, ) self.blocks_tag_debug_0_0 = blocks.tag_debug(gr.sizeof_gr_complex*1, 'usrp_rx_a', ""); self.blocks_tag_debug_0_0.set_display(True) self.blocks_tag_debug_0 = blocks.tag_debug(gr.sizeof_gr_complex*1, 'usrp_rx_b', ""); self.blocks_tag_debug_0.set_display(True) ################################################## # Connections ################################################## self.connect((self.rational_resampler_xxx_0, 0), (self.zeromq_push_sink_1, 0)) self.connect((self.rational_resampler_xxx_0_0, 0), (self.zeromq_push_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 1), (self.blocks_tag_debug_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blocks_tag_debug_0_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.uhd_usrp_source_0, 1), (self.rational_resampler_xxx_0_0, 0))
def set_zmq_sink(self, url): zmq_sink = zeromq.push_sink(gr.sizeof_float, 1, url) self._set_sink_block(zmq_sink) return zmq_sink
def __init__(self): gr.top_block.__init__(self, "VR1 TX all-in-one") ################################################## # Variables ################################################## self.pilot_carriers = pilot_carriers = ((-27, -14, -7, 7, 14, 27),) self.pattern2 = pattern2 = [1, -1, 1, -1] self.pattern1 = pattern1 = [0., 1.41421356, 0., -1.41421356] self.fft_len = fft_len = 64 self.zcpu = zcpu = psutil self._xmlrpcport_config = ConfigParser.ConfigParser() self._xmlrpcport_config.read('./default') try: xmlrpcport = self._xmlrpcport_config.getint("vr1_tx", "xmlrpcport") except: xmlrpcport = 8081 self.xmlrpcport = xmlrpcport self._usrpip_config = ConfigParser.ConfigParser() self._usrpip_config.read('./default') try: usrpip = self._usrpip_config.get("usrp_hydra", "ip") except: usrpip = "127.0.0.1" self.usrpip = usrpip self._txport_config = ConfigParser.ConfigParser() self._txport_config.read('./default') try: txport = self._txport_config.get("vr1_tx", "port") except: txport = "2666" self.txport = txport self.tx_goodput = tx_goodput = 0 self.sync_word2 = sync_word2 = [0., 0., 0., 0., 0., 0.,] + pattern2 * ((fft_len-12)/len(pattern2)) +[0., 0., 0., 0., 0., 0.,] self.sync_word1 = sync_word1 = [0., 0., 0., 0., 0., 0.,] + pattern1 * ((fft_len-12)/len(pattern1)) +[0., 0., 0., 0., 0., 0.,] self._samprate_config = ConfigParser.ConfigParser() self._samprate_config.read('./default') try: samprate = self._samprate_config.getfloat("usrp_hydra", "samprate1") except: samprate = 0 self.samprate = samprate self._rxport_config = ConfigParser.ConfigParser() self._rxport_config.read('./default') try: rxport = self._rxport_config.get("usrp_hydra", "rxport1") except: rxport = "2666" self.rxport = rxport self.pilot_symbols = pilot_symbols = ((-1,1, 1, -1, -1, -1),) self.packet_len = packet_len = 100 self.occupied_carriers = occupied_carriers = (sorted(tuple(set([x for x in range(-26,27)]) - set(pilot_carriers[0]) - set([0,]))),) self._ip_config = ConfigParser.ConfigParser() self._ip_config.read('./default') try: ip = self._ip_config.get("vr1_tx", "ip") except: ip = "127.0.0.1" self.ip = ip self.cpu_percent = cpu_percent = 0 ################################################## # Blocks ################################################## self.ztxrate = blocks.probe_rate(gr.sizeof_char*1, 2000, 0.15) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, "tcp://" + ip + ":" + txport, 100, True, -1) self.xmlrpc_server_0_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(('127.0.0.1', xmlrpcport), allow_none=True) self.xmlrpc_server_0_0.register_instance(self) self.xmlrpc_server_0_0_thread = threading.Thread(target=self.xmlrpc_server_0_0.serve_forever) self.xmlrpc_server_0_0_thread.daemon = True self.xmlrpc_server_0_0_thread.start() def _tx_goodput_probe(): while True: val = self.ztxrate.rate() try: self.set_tx_goodput(val) except AttributeError: pass time.sleep(1.0 / (10)) _tx_goodput_thread = threading.Thread(target=_tx_goodput_probe) _tx_goodput_thread.daemon = True _tx_goodput_thread.start() self.digital_ofdm_tx_0 = digital.ofdm_tx( fft_len=fft_len, cp_len=16, packet_length_tag_key="packet_len", occupied_carriers=occupied_carriers, pilot_carriers=pilot_carriers, pilot_symbols=pilot_symbols, sync_word1=sync_word1, sync_word2=sync_word2, bps_header=1, bps_payload=1, rolloff=0, debug_log=False, scramble_bits=False ) def _cpu_percent_probe(): while True: val = self.zcpu.cpu_percent() try: self.set_cpu_percent(val) except AttributeError: pass time.sleep(1.0 / (1)) _cpu_percent_thread = threading.Thread(target=_cpu_percent_probe) _cpu_percent_thread.daemon = True _cpu_percent_thread.start() self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samprate,True) self.blocks_tag_debug_0_0 = blocks.tag_debug(gr.sizeof_char*1, "Tx'd Packet", ""); self.blocks_tag_debug_0_0.set_display(True) self.blocks_stream_to_tagged_stream_0 = blocks.stream_to_tagged_stream(gr.sizeof_char, 1, packet_len, "packet_len") self.analog_random_source_x_0 = blocks.vector_source_b(map(int, numpy.random.randint(0, 255, 1000)), True) ################################################## # Connections ################################################## self.connect((self.analog_random_source_x_0, 0), (self.blocks_stream_to_tagged_stream_0, 0)) self.connect((self.blocks_stream_to_tagged_stream_0, 0), (self.blocks_tag_debug_0_0, 0)) self.connect((self.blocks_stream_to_tagged_stream_0, 0), (self.digital_ofdm_tx_0, 0)) self.connect((self.blocks_stream_to_tagged_stream_0, 0), (self.ztxrate, 0)) self.connect((self.blocks_throttle_0, 0), (self.zeromq_push_sink_0, 0)) self.connect((self.digital_ofdm_tx_0, 0), (self.blocks_throttle_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Signal Hunter Faked") _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 = 2000000 self.xlate_decimation = xlate_decimation = 40 self.offset2 = offset2 = 0 self.offset = offset = samp_rate / 4 self.hunter_freq_0 = hunter_freq_0 = 0 self.gain = gain = 10 self.frequency = frequency = 930000000 self.filter_width = filter_width = 5120 self.fft_taps = fft_taps = filter.firdes.low_pass_2( 1, samp_rate, 2000, 1000, 0.1) ################################################## # Blocks ################################################## _offset2_sizer = wx.BoxSizer(wx.VERTICAL) self._offset2_text_box = forms.text_box( parent=self.GetWin(), sizer=_offset2_sizer, value=self.offset2, callback=self.set_offset2, label='offset2', converter=forms.int_converter(), proportion=0, ) self._offset2_slider = forms.slider( parent=self.GetWin(), sizer=_offset2_sizer, value=self.offset2, callback=self.set_offset2, minimum=-samp_rate / 2, maximum=samp_rate / 2, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_offset2_sizer) _offset_sizer = wx.BoxSizer(wx.VERTICAL) self._offset_text_box = forms.text_box( parent=self.GetWin(), sizer=_offset_sizer, value=self.offset, callback=self.set_offset, label='offset', converter=forms.int_converter(), proportion=0, ) self._offset_slider = forms.slider( parent=self.GetWin(), sizer=_offset_sizer, value=self.offset, callback=self.set_offset, minimum=-samp_rate / 2, maximum=samp_rate / 2, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_offset_sizer) _hunter_freq_0_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_0_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_0_sizer, value=self.hunter_freq_0, callback=self.set_hunter_freq_0, label='hunter_freq_0', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_0_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_0_sizer, value=self.hunter_freq_0, callback=self.set_hunter_freq_0, minimum=-100000, maximum=100000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_0_sizer) _frequency_sizer = wx.BoxSizer(wx.VERTICAL) self._frequency_text_box = forms.text_box( parent=self.GetWin(), sizer=_frequency_sizer, value=self.frequency, callback=self.set_frequency, label='Frequency', converter=forms.int_converter(), proportion=0, ) self._frequency_slider = forms.slider( parent=self.GetWin(), sizer=_frequency_sizer, value=self.frequency, callback=self.set_frequency, minimum=80000000, maximum=1100000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_frequency_sizer) self.zeromq_push_sink_1 = zeromq.push_sink(gr.sizeof_gr_complex, samp_rate, 'tcp://127.0.0.1:9001', 100, False, -1) self.zeromq_push_sink_0_0 = zeromq.push_sink(gr.sizeof_float, 1024, 'tcp://127.0.0.1:9000', 100, False, -1) self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer( ('localhost', 8080), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread( target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() 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 / xlate_decimation, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title='filtered_fft', peak_hold=False, ) self.Add(self.wxgui_fftsink2_0_0.win) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=frequency, 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='master_plot', peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) _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.int_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=50, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_gain_sizer) self.freq_xlating_fft_filter_ccc_0 = filter.freq_xlating_fft_filter_ccc( xlate_decimation, (fft_taps), frequency + hunter_freq_0, samp_rate) self.freq_xlating_fft_filter_ccc_0.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0.declare_sample_delay(0) _filter_width_sizer = wx.BoxSizer(wx.VERTICAL) self._filter_width_text_box = forms.text_box( parent=self.GetWin(), sizer=_filter_width_sizer, value=self.filter_width, callback=self.set_filter_width, label='filter_width', converter=forms.int_converter(), proportion=0, ) self._filter_width_slider = forms.slider( parent=self.GetWin(), sizer=_filter_width_sizer, value=self.filter_width, callback=self.set_filter_width, minimum=2048, maximum=40960, num_steps=100, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_filter_width_sizer) self.fft_vxx_0 = fft.fft_vcc(1024, True, (window.blackmanharris(1024)), True, 1) self.blocks_vector_to_stream_0 = blocks.vector_to_stream( gr.sizeof_gr_complex * 1, 1024) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1, samp_rate, True) self.blocks_stream_to_vector_2 = blocks.stream_to_vector( gr.sizeof_gr_complex * 1, samp_rate) self.blocks_stream_to_vector_1 = blocks.stream_to_vector( gr.sizeof_float * 1, 1024) self.blocks_stream_to_vector_0 = blocks.stream_to_vector( gr.sizeof_gr_complex * 1, 1024) self.blocks_complex_to_real_0 = blocks.complex_to_real(1) self.blocks_add_xx_0 = blocks.add_vcc(1) self.analog_sig_source_x_0_0 = analog.sig_source_c( samp_rate, analog.GR_SIN_WAVE, frequency + offset, 0.001, 0) self.analog_sig_source_x_0 = analog.sig_source_c( samp_rate, analog.GR_COS_WAVE, frequency + offset2, 0.001, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx_0, 1)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_stream_to_vector_2, 0)) self.connect((self.analog_sig_source_x_0_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_add_xx_0, 0), (self.blocks_stream_to_vector_0, 0)) self.connect((self.blocks_add_xx_0, 0), (self.freq_xlating_fft_filter_ccc_0, 0)) self.connect((self.blocks_add_xx_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.blocks_complex_to_real_0, 0), (self.blocks_stream_to_vector_1, 0)) self.connect((self.blocks_stream_to_vector_0, 0), (self.fft_vxx_0, 0)) self.connect((self.blocks_stream_to_vector_1, 0), (self.zeromq_push_sink_0_0, 0)) self.connect((self.blocks_stream_to_vector_2, 0), (self.zeromq_push_sink_1, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_add_xx_0, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_complex_to_real_0, 0)) self.connect((self.fft_vxx_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0, 0), (self.wxgui_fftsink2_0_0, 0))
def __init__(self, config_file='envsim.ini'): gr.top_block.__init__(self, "Env Sim Server Debug Outputs") ################################################## # Parameters ################################################## self.config_file = config_file ################################################## # Variables ################################################## self._usrp_ip_prefix_str_config = ConfigParser.ConfigParser() self._usrp_ip_prefix_str_config.read(config_file) try: usrp_ip_prefix_str = self._usrp_ip_prefix_str_config.get('main', 'usrp_ip_prefix') except: usrp_ip_prefix_str = '192.168.40.' self.usrp_ip_prefix_str = usrp_ip_prefix_str self._usrp_ip_base_config = ConfigParser.ConfigParser() self._usrp_ip_base_config.read(config_file) try: usrp_ip_base = self._usrp_ip_base_config.getint('main', 'usrp_ip_base') except: usrp_ip_base = 101 self.usrp_ip_base = usrp_ip_base self.num_nodes = num_nodes = 6 self.now = now = time.time() self._increment_usrp_address_bool_config = ConfigParser.ConfigParser() self._increment_usrp_address_bool_config.read(config_file) try: increment_usrp_address_bool = self._increment_usrp_address_bool_config.getboolean('main', 'increment_usrp_address') except: increment_usrp_address_bool = True self.increment_usrp_address_bool = increment_usrp_address_bool self.eth0_addr = eth0_addr = str(ni.ifaddresses("eth0")[ni.AF_INET][0]['addr'].decode('utf-8')) self.zmq_base_addr = zmq_base_addr = "tcp://" + eth0_addr + ":" self.usrp_ip_list = usrp_ip_list = temp_py_mod.make_usrp_ip_list(increment_usrp_address_bool, usrp_ip_prefix_str, usrp_ip_base, num_nodes) self._samp_rate_config = ConfigParser.ConfigParser() self._samp_rate_config.read(config_file) try: samp_rate = self._samp_rate_config.getfloat('main', 'samp_rate') except: samp_rate = 2e6 self.samp_rate = samp_rate self._port_num_base_config = ConfigParser.ConfigParser() self._port_num_base_config.read(config_file) try: port_num_base = self._port_num_base_config.getint('main', 'port_num_base') except: port_num_base = 52001 self.port_num_base = port_num_base self._noise_amp_config = ConfigParser.ConfigParser() self._noise_amp_config.read(config_file) try: noise_amp = self._noise_amp_config.getfloat('main', 'noise_amp') except: noise_amp = .001 self.noise_amp = noise_amp self._host_config = ConfigParser.ConfigParser() self._host_config.read(config_file) try: host = self._host_config.get('main', 'host_ip') except: host = '192.168.40.2' self.host = host self.env_time_int_s = env_time_int_s = int(now) self.env_time_frac_s = env_time_frac_s = now-int(now) self._channel_gain_linear_config = ConfigParser.ConfigParser() self._channel_gain_linear_config.read(config_file) try: channel_gain_linear = self._channel_gain_linear_config.getfloat('main', 'channel_gain_linear') except: channel_gain_linear = .01 self.channel_gain_linear = channel_gain_linear ################################################## # Blocks ################################################## self.zeromq_push_sink_0_0_0_0_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, zmq_base_addr+str(port_num_base+4), 100, False, -1) self.envsim_zmq_envsim_source_0_2_0_0 = envsim.zmq_envsim_source("tcp://"+ usrp_ip_list[2] + ":" + str(port_num_base+2), 10, 100, samp_rate, env_time_int_s, env_time_frac_s) self.envsim_zmq_envsim_source_0_2_0 = envsim.zmq_envsim_source("tcp://"+ usrp_ip_list[1] + ":" + str(port_num_base+1), 10, 100, samp_rate, env_time_int_s, env_time_frac_s) self.envsim_zmq_envsim_source_0_2 = envsim.zmq_envsim_source("tcp://"+ usrp_ip_list[0] + ":" + str(port_num_base+0), 10, 100, samp_rate, env_time_int_s, env_time_frac_s) self.envsim_zmq_envsim_source_0_1 = envsim.zmq_envsim_source("tcp://"+ usrp_ip_list[3] + ":" + str(port_num_base+3), 10, 100, samp_rate, env_time_int_s, env_time_frac_s) self.envsim_zmq_envsim_source_0_0 = envsim.zmq_envsim_source("tcp://"+ usrp_ip_list[4] + ":" + str(port_num_base+4), 10, 100, samp_rate, env_time_int_s, env_time_frac_s) self.envsim_zmq_envsim_source_0 = envsim.zmq_envsim_source("tcp://"+ usrp_ip_list[5] + ":" + str(port_num_base+5), 10, 100, samp_rate, env_time_int_s, env_time_frac_s) self.envsim_socket_meta_pdu_0_2 = envsim.socket_meta_pdu("UDP_CLIENT", usrp_ip_list[0], str(port_num_base+0), 40000, False) self.envsim_socket_meta_pdu_0_1_3 = envsim.socket_meta_pdu("UDP_CLIENT", usrp_ip_list[2], str(port_num_base+2), 40000, False) self.envsim_socket_meta_pdu_0_1_2_0 = envsim.socket_meta_pdu("UDP_CLIENT", usrp_ip_list[5], str(port_num_base+5), 40000, False) self.envsim_socket_meta_pdu_0_1_1_0 = envsim.socket_meta_pdu("UDP_CLIENT", usrp_ip_list[4], str(port_num_base+4), 40000, False) self.envsim_socket_meta_pdu_0_1_0_0 = envsim.socket_meta_pdu("UDP_CLIENT", usrp_ip_list[3], str(port_num_base+3), 40000, False) self.envsim_socket_meta_pdu_0_0_0 = envsim.socket_meta_pdu("UDP_CLIENT", usrp_ip_list[1], str(port_num_base+1), 40000, False) self.channels_sro_model_0_1 = channels.sro_model( samp_rate, 0.01, 1e3, 2 ) self.channels_sro_model_0_0 = channels.sro_model( samp_rate, 0.01, 1e3, 1 ) self.channels_sro_model_0 = channels.sro_model( samp_rate, 0.01, 1e3, 0 ) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True) self.blocks_tagged_stream_to_pdu_0_0 = blocks.tagged_stream_to_pdu(blocks.complex_t, 'packet_len') self.blocks_tagged_stream_to_pdu_0 = blocks.tagged_stream_to_pdu(blocks.complex_t, 'packet_len') self.blocks_stream_to_tagged_stream_0_0 = blocks.stream_to_tagged_stream(gr.sizeof_gr_complex, 1, 2048, "packet_len") self.blocks_stream_to_tagged_stream_0 = blocks.stream_to_tagged_stream(gr.sizeof_gr_complex, 1, 2048, "packet_len") self.blocks_probe_rate_0 = blocks.probe_rate(gr.sizeof_gr_complex*1, 5000.0, 0.15) self.blocks_multiply_const_xx_0_0 = blocks.multiply_const_cc(channel_gain_linear) self.blocks_multiply_const_xx_0 = blocks.multiply_const_cc(channel_gain_linear) self.blocks_message_debug_0 = blocks.message_debug() self.blocks_float_to_complex_0_1 = blocks.float_to_complex(1) self.blocks_float_to_complex_0_0 = blocks.float_to_complex(1) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_complex_to_float_0_1 = blocks.complex_to_float(1) self.blocks_complex_to_float_0_0 = blocks.complex_to_float(1) self.blocks_complex_to_float_0 = blocks.complex_to_float(1) self.blocks_add_xx_0_1 = blocks.add_vcc(1) self.blocks_add_xx_0_0_0 = blocks.add_vcc(1) self.blocks_add_xx_0_0 = blocks.add_vcc(1) self.blocks_add_xx_0 = blocks.add_vcc(1) self.analog_rail_ff_0_2 = analog.rail_ff(-1.0, 1.0) self.analog_rail_ff_0_1 = analog.rail_ff(-1.0, 1.0) self.analog_rail_ff_0_0_1 = analog.rail_ff(-1.0, 1.0) self.analog_rail_ff_0_0_0 = analog.rail_ff(-1.0, 1.0) self.analog_rail_ff_0_0 = analog.rail_ff(-1.0, 1.0) self.analog_rail_ff_0 = analog.rail_ff(-1.0, 1.0) self.analog_noise_source_x_0 = analog.noise_source_c(analog.GR_GAUSSIAN, noise_amp, 0) ################################################## # Connections ################################################## self.msg_connect((self.blocks_probe_rate_0, 'rate'), (self.blocks_message_debug_0, 'print')) self.msg_connect((self.blocks_tagged_stream_to_pdu_0, 'pdus'), (self.envsim_socket_meta_pdu_0_1_0_0, 'pdus')) self.msg_connect((self.blocks_tagged_stream_to_pdu_0, 'pdus'), (self.envsim_socket_meta_pdu_0_1_1_0, 'pdus')) self.msg_connect((self.blocks_tagged_stream_to_pdu_0, 'pdus'), (self.envsim_socket_meta_pdu_0_1_2_0, 'pdus')) self.msg_connect((self.blocks_tagged_stream_to_pdu_0_0, 'pdus'), (self.envsim_socket_meta_pdu_0_0_0, 'pdus')) self.msg_connect((self.blocks_tagged_stream_to_pdu_0_0, 'pdus'), (self.envsim_socket_meta_pdu_0_1_3, 'pdus')) self.msg_connect((self.blocks_tagged_stream_to_pdu_0_0, 'pdus'), (self.envsim_socket_meta_pdu_0_2, 'pdus')) self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx_0_0, 0)) self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx_0_0_0, 1)) self.connect((self.analog_rail_ff_0, 0), (self.blocks_float_to_complex_0, 1)) self.connect((self.analog_rail_ff_0_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.analog_rail_ff_0_0_0, 0), (self.blocks_float_to_complex_0_0, 0)) self.connect((self.analog_rail_ff_0_0_1, 0), (self.blocks_float_to_complex_0_1, 0)) self.connect((self.analog_rail_ff_0_1, 0), (self.blocks_float_to_complex_0_0, 1)) self.connect((self.analog_rail_ff_0_2, 0), (self.blocks_float_to_complex_0_1, 1)) self.connect((self.blocks_add_xx_0, 0), (self.blocks_multiply_const_xx_0, 0)) self.connect((self.blocks_add_xx_0_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_add_xx_0_0_0, 0), (self.blocks_stream_to_tagged_stream_0_0, 0)) self.connect((self.blocks_add_xx_0_1, 0), (self.blocks_add_xx_0, 0)) self.connect((self.blocks_add_xx_0_1, 0), (self.blocks_multiply_const_xx_0_0, 0)) self.connect((self.blocks_complex_to_float_0, 1), (self.analog_rail_ff_0, 0)) self.connect((self.blocks_complex_to_float_0, 0), (self.analog_rail_ff_0_0, 0)) self.connect((self.blocks_complex_to_float_0_0, 0), (self.analog_rail_ff_0_0_0, 0)) self.connect((self.blocks_complex_to_float_0_0, 1), (self.analog_rail_ff_0_1, 0)) self.connect((self.blocks_complex_to_float_0_1, 0), (self.analog_rail_ff_0_0_1, 0)) self.connect((self.blocks_complex_to_float_0_1, 1), (self.analog_rail_ff_0_2, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.channels_sro_model_0_1, 0)) self.connect((self.blocks_float_to_complex_0_0, 0), (self.channels_sro_model_0_0, 0)) self.connect((self.blocks_float_to_complex_0_1, 0), (self.channels_sro_model_0, 0)) self.connect((self.blocks_multiply_const_xx_0, 0), (self.blocks_add_xx_0_0, 1)) self.connect((self.blocks_multiply_const_xx_0_0, 0), (self.blocks_add_xx_0_0_0, 0)) self.connect((self.blocks_stream_to_tagged_stream_0, 0), (self.blocks_tagged_stream_to_pdu_0, 0)) self.connect((self.blocks_stream_to_tagged_stream_0, 0), (self.zeromq_push_sink_0_0_0_0_0, 0)) self.connect((self.blocks_stream_to_tagged_stream_0_0, 0), (self.blocks_tagged_stream_to_pdu_0_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_probe_rate_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_stream_to_tagged_stream_0, 0)) self.connect((self.channels_sro_model_0, 0), (self.blocks_add_xx_0, 1)) self.connect((self.channels_sro_model_0_0, 0), (self.blocks_add_xx_0, 2)) self.connect((self.channels_sro_model_0_1, 0), (self.blocks_add_xx_0, 3)) self.connect((self.envsim_zmq_envsim_source_0, 0), (self.blocks_complex_to_float_0, 0)) self.connect((self.envsim_zmq_envsim_source_0_0, 0), (self.blocks_complex_to_float_0_0, 0)) self.connect((self.envsim_zmq_envsim_source_0_1, 0), (self.blocks_complex_to_float_0_1, 0)) self.connect((self.envsim_zmq_envsim_source_0_2, 0), (self.blocks_add_xx_0_1, 0)) self.connect((self.envsim_zmq_envsim_source_0_2_0, 0), (self.blocks_add_xx_0_1, 1)) self.connect((self.envsim_zmq_envsim_source_0_2_0_0, 0), (self.blocks_add_xx_0_1, 2))
def __init__(self): gr.top_block.__init__(self, "rfnoc_rx_e3") ################################################## # Variables ################################################## self.vec_length = vec_length = 1 self.device3 = variable_uhd_device3_0 = ettus.device3( uhd.device_addr_t(",".join(('type=e3x0', "")))) self.server_port = server_port = 30000 self.server_address = server_address = "192.168.10.184" self.samp_rate = samp_rate = 1e6 self.rx_gain_A2 = rx_gain_A2 = 60 self.rf_freq = rf_freq = 871e6 self.decim_rate = decim_rate = 500e3 ################################################## # Blocks ################################################## self.zeromq_push_sink_1 = zeromq.push_sink(gr.sizeof_gr_complex, vec_length, 'tcp://*:9998', 100, False, -1) self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer( (str(server_address), int(server_port)), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread( target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() self.uhd_rfnoc_streamer_radio_0 = ettus.rfnoc_radio( self.device3, uhd.stream_args( # Tx Stream Args cpu_format="fc32", otw_format="sc16", args="", # empty ), uhd.stream_args( # Rx Stream Args cpu_format="fc32", otw_format="sc16", args='', ), 0, -1) self.uhd_rfnoc_streamer_radio_0.set_rate(samp_rate) self.uhd_rfnoc_streamer_radio_0.set_rx_freq(rf_freq, 0) self.uhd_rfnoc_streamer_radio_0.set_rx_gain(rx_gain_A2, 0) self.uhd_rfnoc_streamer_radio_0.set_rx_dc_offset(True, 0) self.uhd_rfnoc_streamer_radio_0.set_rx_bandwidth(samp_rate, 0) if "RX2": self.uhd_rfnoc_streamer_radio_0.set_rx_antenna("RX2", 0) self.uhd_rfnoc_streamer_radio_0.set_clock_source("internal") self.uhd_rfnoc_streamer_ddc_0 = ettus.rfnoc_generic( self.device3, uhd.stream_args( # TX Stream Args cpu_format="fc32", # TODO: This must be made an option otw_format="sc16", channels=range(1), args= "input_rate={},output_rate={},fullscale={},freq={},gr_vlen={},{}" .format( samp_rate, samp_rate, 1.0, 0, vec_length, "" if vec_length == 1 else "spp={}".format(vec_length)), ), uhd.stream_args( # RX Stream Args cpu_format="fc32", # TODO: This must be made an option otw_format="sc16", channels=range(1), args="gr_vlen={},{}".format( vec_length, "" if vec_length == 1 else "spp={}".format(vec_length)), ), "DDC", -1, -1, ) for chan in xrange(1): self.uhd_rfnoc_streamer_ddc_0.set_arg("input_rate", float(samp_rate), chan) self.uhd_rfnoc_streamer_ddc_0.set_arg("output_rate", float(samp_rate), chan) self.uhd_rfnoc_streamer_ddc_0.set_arg("fullscale", 1.0, chan) self.uhd_rfnoc_streamer_ddc_0.set_arg("freq", 0, chan) ################################################## # Connections ################################################## self.connect((self.uhd_rfnoc_streamer_ddc_0, 0), (self.zeromq_push_sink_1, 0)) self.device3.connect(self.uhd_rfnoc_streamer_radio_0.get_block_id(), 0, self.uhd_rfnoc_streamer_ddc_0.get_block_id(), 0)
def __init__(self, rf_params, bb_params, tcp_addr, tcp_test, sdr_sel=rfm.HW_TEST): gr.top_block.__init__(self, "tx_top") # parameters self.rf_params = rf_params self.bb_params = bb_params self.tcp_addr = tcp_addr self.tcp_addr_test = tcp_test self.sdr_sel = sdr_sel # variables self.samp_rate = rf_params.samp_rate self.center_freq = rf_params.center_freq self.working_samp_rate = 10 / bb_params.symbol_time # baseband source self.bb_src = tx_source.TxSource(rf_params=self.rf_params, tcp_addr=self.tcp_addr) # modulation if rf_params.mod_scheme == rfm.MOD_OOK: self.mod = tx_ook_mod.TxOokMod(rf_params=self.rf_params, bb_params=self.bb_params) elif rf_params.mod_scheme == rfm.MOD_GMSK: self.mod = tx_ook_mod.TxGmskMod(rf_params=self.rf_params, bb_params=self.bb_params) elif rf_params.mod_scheme == rfm.MOD_GFSK: self.mod = tx_ook_mod.TxGfskMod(rf_params=self.rf_params, bb_params=self.bb_params) elif rf_params.mod_scheme == rfm.MOD_PSK: self.mod = tx_ook_mod.TxPskMod(rf_params=self.rf_params, bb_params=self.bb_params) self.connect((self.bb_src, 0), (self.mod, 0)) # tuner self.tuner = tx_tuner.TxTuner(rf_params=self.rf_params) self.connect((self.mod, 0), (self.tuner, 0)) # transmit output self.tx_out = tx_out.TxOut(rf_params=self.rf_params, tcp_test=self.tcp_addr_test, sdr_sel=sdr_sel) self.connect((self.tuner, 0), (self.tx_out)) # keeps the iq data flowing regardless of zmq situation #self.null_sink = blocks.null_sink( # sizeof_stream_item=gr.sizeof_gr_complex) #self.connect((self.mod, 0), (self.null_sink, 0)) # debug sink; connect this to a flowgraph running the debug # viewer if False: self.zeromq_debug_sink = zeromq.push_sink( gr.sizeof_gr_complex, #gr.sizeof_char, 1, zmqu.TCP_DEBUG, 100, False, 32768 * 8) self.connect((self.tuner, 0), (self.zeromq_debug_sink, 0))
def __init__(self, MTU=10000, bw=100e3, frequency_rx=2.4505e9 + 1e6, frequency_tx=2.4505e9, ip_pub='tcp://192.168.5.134:7001', ip_sub='tcp://192.168.5.109:7000', offset=-250e3): gr.top_block.__init__(self, "Lora Side1") ################################################## # Parameters ################################################## self.MTU = MTU self.bw = bw self.frequency_rx = frequency_rx self.frequency_tx = frequency_tx self.ip_pub = ip_pub self.ip_sub = ip_sub self.offset = offset ################################################## # Variables ################################################## self.rep = rep = 3 self.spreading_factor = spreading_factor = 8 self.samp_rate = samp_rate = 500e3 self.ldr = ldr = True self.header = header = False self.enc_rep = enc_rep = fec.repetition_encoder_make(480, rep) self.enc_dummy = enc_dummy = fec.dummy_encoder_make(MTU*8) self.enc_ccsds = enc_ccsds = fec.ccsds_encoder_make(MTU*8, 0, fec.CC_TERMINATED) self.dec_rep = dec_rep = fec.repetition_decoder.make(480, rep, 0.5) self.dec_dummy = dec_dummy = fec.dummy_decoder.make(MTU*8) self.dec_cc = dec_cc = fec.cc_decoder.make(8000, 7, 2, ([109,79]), 0, -1, fec.CC_TERMINATED, False) self.code_rate = code_rate = 4 ################################################## # Blocks ################################################## self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, ip_pub, 100, False, -1) self.zeromq_pull_source_0 = zeromq.pull_source(gr.sizeof_gr_complex, 1, ip_sub, 100, False, -1) self.pfb_arb_resampler_xxx_0_0 = pfb.arb_resampler_ccf( bw/samp_rate, taps=None, flt_size=32) self.pfb_arb_resampler_xxx_0_0.declare_sample_delay(0) self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf( samp_rate/bw, taps=None, flt_size=32) self.pfb_arb_resampler_xxx_0.declare_sample_delay(0) self.lora_mod_0 = lora.mod(spreading_factor, 0x12) self.lora_encode_0 = lora.encode(spreading_factor, code_rate, ldr, header) self.lora_demod_0 = lora.demod(spreading_factor, ldr, 25.0, 2) self.lora_decode_0 = lora.decode(spreading_factor, code_rate, ldr, header) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu('tap0', MTU, False) self.blocks_message_debug_0 = blocks.message_debug() ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.lora_encode_0, 'in')) self.msg_connect((self.lora_decode_0, 'out'), (self.blocks_message_debug_0, 'print_pdu')) self.msg_connect((self.lora_decode_0, 'out'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.lora_demod_0, 'out'), (self.lora_decode_0, 'in')) self.msg_connect((self.lora_encode_0, 'out'), (self.lora_mod_0, 'in')) self.connect((self.lora_mod_0, 0), (self.pfb_arb_resampler_xxx_0, 0)) self.connect((self.pfb_arb_resampler_xxx_0, 0), (self.zeromq_push_sink_0, 0)) self.connect((self.pfb_arb_resampler_xxx_0_0, 0), (self.lora_demod_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.pfb_arb_resampler_xxx_0_0, 0))
def __init__(self, queue): grc_wxgui.top_block_gui.__init__(self, title="Pager 6Ch Decode") _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 = 2000000 self.xlate_decimation = xlate_decimation = 80 self.hunter_freq_5 = hunter_freq_5 = 0 self.hunter_freq_4 = hunter_freq_4 = 0 self.hunter_freq_3 = hunter_freq_3 = 0 self.hunter_freq_2 = hunter_freq_2 = 0 self.hunter_freq_1 = hunter_freq_1 = 0 self.hunter_freq_0 = hunter_freq_0 = 0 self.gain = gain = 10 self.frequency = frequency = 929000000 self.filter_width = filter_width = 5120 self.fft_taps = fft_taps = filter.firdes.low_pass_2( 1, samp_rate, 10000, 1000, 0.1) self.fft_n_elements = fft_n_elements = 2048 ################################################## # Blocks ################################################## _hunter_freq_5_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_5_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_5_sizer, value=self.hunter_freq_5, callback=self.set_hunter_freq_5, label='hunter_freq_5', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_5_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_5_sizer, value=self.hunter_freq_5, callback=self.set_hunter_freq_5, minimum=-5000000, maximum=5000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_5_sizer) _hunter_freq_4_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_4_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_4_sizer, value=self.hunter_freq_4, callback=self.set_hunter_freq_4, label='hunter_freq_4', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_4_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_4_sizer, value=self.hunter_freq_4, callback=self.set_hunter_freq_4, minimum=-5000000, maximum=5000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_4_sizer) _hunter_freq_3_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_3_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_3_sizer, value=self.hunter_freq_3, callback=self.set_hunter_freq_3, label='hunter_freq_3', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_3_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_3_sizer, value=self.hunter_freq_3, callback=self.set_hunter_freq_3, minimum=-5000000, maximum=5000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_3_sizer) _hunter_freq_2_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_2_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_2_sizer, value=self.hunter_freq_2, callback=self.set_hunter_freq_2, label='hunter_freq_2', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_2_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_2_sizer, value=self.hunter_freq_2, callback=self.set_hunter_freq_2, minimum=-5000000, maximum=5000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_2_sizer) _hunter_freq_1_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_1_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_1_sizer, value=self.hunter_freq_1, callback=self.set_hunter_freq_1, label='hunter_freq_1', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_1_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_1_sizer, value=self.hunter_freq_1, callback=self.set_hunter_freq_1, minimum=-5000000, maximum=5000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_1_sizer) _hunter_freq_0_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_0_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_0_sizer, value=self.hunter_freq_0, callback=self.set_hunter_freq_0, label='hunter_freq_0', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_0_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_0_sizer, value=self.hunter_freq_0, callback=self.set_hunter_freq_0, minimum=-5000000, maximum=5000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_0_sizer) _frequency_sizer = wx.BoxSizer(wx.VERTICAL) self._frequency_text_box = forms.text_box( parent=self.GetWin(), sizer=_frequency_sizer, value=self.frequency, callback=self.set_frequency, label='Frequency', converter=forms.int_converter(), proportion=0, ) self._frequency_slider = forms.slider( parent=self.GetWin(), sizer=_frequency_sizer, value=self.frequency, callback=self.set_frequency, minimum=80000000, maximum=1100000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_frequency_sizer) self.zeromq_push_sink_0_0 = zeromq.push_sink(gr.sizeof_float, fft_n_elements, 'tcp://127.0.0.1:9000', 100, False, -1) self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer( ('localhost', 8080), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread( target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=frequency, 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='master_plot', peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.rtlsdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + '') self.rtlsdr_source_0.set_sample_rate(samp_rate) self.rtlsdr_source_0.set_center_freq(frequency, 0) self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_dc_offset_mode(0, 0) self.rtlsdr_source_0.set_iq_balance_mode(0, 0) self.rtlsdr_source_0.set_gain_mode(False, 0) self.rtlsdr_source_0.set_gain(40, 0) self.rtlsdr_source_0.set_if_gain(0, 0) self.rtlsdr_source_0.set_bb_gain(0, 0) self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_bandwidth(samp_rate, 0) _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.int_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=50, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_gain_sizer) self.freq_xlating_fft_filter_ccc_0_0_3 = filter.freq_xlating_fft_filter_ccc( xlate_decimation, (fft_taps), frequency + hunter_freq_5, samp_rate) self.freq_xlating_fft_filter_ccc_0_0_3.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0_0_3.declare_sample_delay(0) self.freq_xlating_fft_filter_ccc_0_0_2 = filter.freq_xlating_fft_filter_ccc( xlate_decimation, (fft_taps), frequency + hunter_freq_4, samp_rate) self.freq_xlating_fft_filter_ccc_0_0_2.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0_0_2.declare_sample_delay(0) self.freq_xlating_fft_filter_ccc_0_0_1 = filter.freq_xlating_fft_filter_ccc( xlate_decimation, (fft_taps), frequency + hunter_freq_3, samp_rate) self.freq_xlating_fft_filter_ccc_0_0_1.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0_0_1.declare_sample_delay(0) self.freq_xlating_fft_filter_ccc_0_0_0 = filter.freq_xlating_fft_filter_ccc( xlate_decimation, (fft_taps), frequency + hunter_freq_2, samp_rate) self.freq_xlating_fft_filter_ccc_0_0_0.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0_0_0.declare_sample_delay(0) self.freq_xlating_fft_filter_ccc_0_0 = filter.freq_xlating_fft_filter_ccc( xlate_decimation, (fft_taps), frequency + hunter_freq_1, samp_rate) self.freq_xlating_fft_filter_ccc_0_0.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0_0.declare_sample_delay(0) self.freq_xlating_fft_filter_ccc_0 = filter.freq_xlating_fft_filter_ccc( xlate_decimation, (fft_taps), frequency + hunter_freq_0, samp_rate) self.freq_xlating_fft_filter_ccc_0.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0.declare_sample_delay(0) _filter_width_sizer = wx.BoxSizer(wx.VERTICAL) self._filter_width_text_box = forms.text_box( parent=self.GetWin(), sizer=_filter_width_sizer, value=self.filter_width, callback=self.set_filter_width, label='filter_width', converter=forms.int_converter(), proportion=0, ) self._filter_width_slider = forms.slider( parent=self.GetWin(), sizer=_filter_width_sizer, value=self.filter_width, callback=self.set_filter_width, minimum=2048, maximum=40960, num_steps=100, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_filter_width_sizer) self.fft_vxx_0 = fft.fft_vcc(fft_n_elements, True, (window.blackmanharris(fft_n_elements)), True, 1) self.blocks_vector_to_stream_0 = blocks.vector_to_stream( gr.sizeof_gr_complex * 1, fft_n_elements) self.blocks_stream_to_vector_1 = blocks.stream_to_vector( gr.sizeof_float * 1, fft_n_elements) self.blocks_stream_to_vector_0 = blocks.stream_to_vector( gr.sizeof_gr_complex * 1, fft_n_elements) self.blocks_null_sink_0_0_3 = blocks.null_sink(gr.sizeof_gr_complex * 1) self.blocks_null_sink_0_0_2 = blocks.null_sink(gr.sizeof_gr_complex * 1) self.blocks_null_sink_0_0_1 = blocks.null_sink(gr.sizeof_gr_complex * 1) self.blocks_null_sink_0_0_0 = blocks.null_sink(gr.sizeof_gr_complex * 1) self.blocks_null_sink_0_0 = blocks.null_sink(gr.sizeof_gr_complex * 1) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_gr_complex * 1) self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) # FLEX protocol demodulator self.flex0 = pager.flex_demod(queue, 0, False, False) # options.verbose, options.log self.flex1 = pager.flex_demod(queue, 0, False, False) # options.verbose, options.log self.flex2 = pager.flex_demod(queue, 0, False, False) # options.verbose, options.log self.flex3 = pager.flex_demod(queue, 0, False, False) # options.verbose, options.log self.flex4 = pager.flex_demod(queue, 0, False, False) # options.verbose, options.log self.flex5 = pager.flex_demod(queue, 0, False, False) # options.verbose, options.log ################################################## # Connections ################################################## self.connect((self.blocks_complex_to_mag_0, 0), (self.blocks_stream_to_vector_1, 0)) self.connect((self.blocks_stream_to_vector_0, 0), (self.fft_vxx_0, 0)) self.connect((self.blocks_stream_to_vector_1, 0), (self.zeromq_push_sink_0_0, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_complex_to_mag_0, 0)) self.connect((self.fft_vxx_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0, 0), (self.flex0, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0_0, 0), (self.flex1, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0_0_0, 0), (self.flex2, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0_0_1, 0), (self.flex3, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0_0_2, 0), (self.flex4, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0_0_3, 0), (self.flex5, 0)) self.connect((self.rtlsdr_source_0, 0), (self.blocks_stream_to_vector_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0_0_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0_0_1, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0_0_2, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0_0_3, 0)) self.connect((self.rtlsdr_source_0, 0), (self.wxgui_fftsink2_0, 0))
def __init__(self, freq, FFT_size, SDR_BW, receiver_type, gain, portnum, extraargs): gr.top_block.__init__(self, 'Spectrum') ################################################## # Variables ################################################## self.tuning = tuning = 0 self.freq = freq self.samp_rate = samp_rate = SDR_BW #needs to be <BW of radio. eg at 200e6 for the x300 U160 spectrum_log.py froze after ~20 O overflows ~30 integrations self.data_address = data_address = 'tcp://127.0.0.1:' + str(portnum) self.SDR_BW = SDR_BW self.FFT_size = FFT_size #take the FFT_size from the input self.receiver_type = receiver_type self.gain = gain ################################################## # Blocks ################################################## self.fft_vxx_0 = fft.fft_vcc(FFT_size, True, (window.blackmanharris(FFT_size)), True, 1) self.dc_blocker_xx_0 = gr_filter.dc_blocker_cc(1024, True) self.blocks_stream_to_vector_0 = blocks.stream_to_vector( gr.sizeof_gr_complex * 1, FFT_size) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, FFT_size, data_address, 100, False, -1) # self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_gr_complex*1, 512) # self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, "fifo", True) # self.blocks_file_sink_0.set_unbuffered(False) if receiver_type == 'rtl': self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "rtl=0" + extraargs) print('Reciever: RTL-SDR') elif receiver_type == 'airspy': self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "airspy" + extraargs) print('Reciever: Airspy') elif receiver_type == 'osmo': self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "" + extraargs[1:]) print( 'Receiver: osmo (first gr-osmocom compatible receiver found)') elif receiver_type == 'uhd': self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "uhd" + extraargs) print('Receiver: UHD') elif receiver_type == 'funcube': self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "fcd=0" + extraargs) print('Receiver: Funcube Pro/Pro+') if receiver_type in ['rtl', 'airspy', 'osmo', 'uhd', 'funcube']: self.osmosdr_source_0.set_sample_rate(SDR_BW) self.osmosdr_source_0.set_center_freq( freq, 0 ) # first tuning happens here. Later tunings use set_tuning below self.osmosdr_source_0.set_dc_offset_mode(2, 0) self.osmosdr_source_0.set_gain_mode(True, 0) self.osmosdr_source_0.set_gain(gain, 0) self.osmosdr_source_0.set_bandwidth(0, 0) # Following args and others can be set by the "extraargs" command line option # self.osmosdr_source_0.set_freq_corr(0, 0) # self.osmosdr_source_0.set_if_gain(10, 0) # self.osmosdr_source_0.set_bb_gain(10, 0) # self.osmosdr_source_0.set_antenna("", 0) if receiver_type == 'uhd': self.osmosdr_source_0.set_bandwidth(1.5 * SDR_BW, 0) self.connect((self.osmosdr_source_0, 0), (self.dc_blocker_xx_0, 0)) else: print('Receiver type not recognized. Trying gr_osmocom drivers...') self.osmosdr_source_0.set_sample_rate(SDR_BW) self.osmosdr_source_0.set_center_freq(freq, 0) self.osmosdr_source_0.set_dc_offset_mode(2, 0) self.osmosdr_source_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0.set_gain_mode(True, 0) self.osmosdr_source_0.set_gain(gain, 0) self.connect((self.osmosdr_source_0, 0), (self.dc_blocker_xx_0, 0)) self.connect((self.dc_blocker_xx_0, 0), (self.blocks_stream_to_vector_0, 0)) self.connect((self.blocks_stream_to_vector_0, 0), (self.fft_vxx_0, 0)) self.connect((self.fft_vxx_0, 0), (self.zeromq_push_sink_0, 0))
def __init__(self, freq=100e6, rx_gain=30, tx_gain=30): gr.top_block.__init__(self, "Demo Length E3") ################################################## # Parameters ################################################## self.freq = freq self.rx_gain = rx_gain self.tx_gain = tx_gain ################################################## # Variables ################################################## self.tuning_lo_offset = tuning_lo_offset = 60e3 self.server_port = server_port = 30000 self.server_address = server_address = "192.168.10.184" self.samp_rate = samp_rate = 100e3 ################################################## # Blocks ################################################## self.zeromq_push_sink_2 = zeromq.push_sink(gr.sizeof_gr_complex, 1, 'tcp://*:9997', 100, False, -1) self.zeromq_push_sink_1 = zeromq.push_sink(gr.sizeof_gr_complex, 1, 'tcp://*:9998', 100, False, -1) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, 'tcp://*:9999', 100, False, -1) self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer( (str(server_address), int(server_port)), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread( target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(('', "")), uhd.stream_args( cpu_format="fc32", channels=range(2), ), ) self.uhd_usrp_source_0.set_subdev_spec('A:A A:B', 0) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq( uhd.tune_request(freq, tuning_lo_offset), 0) self.uhd_usrp_source_0.set_gain(rx_gain, 0) self.uhd_usrp_source_0.set_antenna('RX2', 0) self.uhd_usrp_source_0.set_center_freq( uhd.tune_request(freq, tuning_lo_offset), 1) self.uhd_usrp_source_0.set_gain(rx_gain, 1) self.uhd_usrp_source_0.set_antenna('RX2', 1) self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(2), ), ) self.uhd_usrp_sink_0.set_subdev_spec('A:A A:B', 0) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq( uhd.tune_request(freq, tuning_lo_offset), 0) self.uhd_usrp_sink_0.set_gain(tx_gain, 0) self.uhd_usrp_sink_0.set_antenna('TX/RX', 0) self.uhd_usrp_sink_0.set_center_freq( uhd.tune_request(freq, tuning_lo_offset), 1) self.uhd_usrp_sink_0.set_gain(0, 1) self.uhd_usrp_sink_0.set_antenna('TX/RX', 1) self.blocks_null_source_0 = blocks.null_source(gr.sizeof_gr_complex * 1) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.1, )) self.analog_sig_source_x_0 = analog.sig_source_c( samp_rate, analog.GR_CONST_WAVE, 0, 1, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.analog_sig_source_x_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.zeromq_push_sink_2, 0)) self.connect((self.blocks_null_source_0, 0), (self.uhd_usrp_sink_0, 1)) self.connect((self.uhd_usrp_source_0, 1), (self.zeromq_push_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.zeromq_push_sink_1, 0))
def __init__(self, verbose, center_freq, freq, samp_rate, bb_samp_rate, fm_deviation, channel_width, transition_width, bb_lpf_cutoff, bb_lpf_transition, tcp_str, hw_sel, fifo_name="", repeat=True, iq_file_name=""): gr.top_block.__init__(self) if verbose > 0: print "\nFlowgraph Properties:" print " Center Frequency: {} MHz".format(center_freq / 1000000.0) print " Tune Frequency: {} MHz".format(freq / 1000000.0) print " IQ Sample Rate (in): {} MHz".format(samp_rate / 1000000.0) print " BB Sample Rate (out): {} MHz".format(bb_samp_rate / 1000000.0) print " FM Deviation: {} MHz".format(fm_deviation / 1000000.0) print " Channel Width: {} MHz".format(channel_width / 1000000.0) print " Transition Width: {} MHz".format(transition_width / 1000000.0) print " BB LPF cutoff: {} MHz".format(bb_lpf_cutoff / 1000000.0) print " BB LPF transition: {} MHz".format(bb_lpf_transition / 1000000.0) if hw_sel == 0: print " SDR: HackRF" elif hw_sel == 1: print " SDR: USRP" print " FIFO Name: {}".format(fifo_name) print " Repeat: {}".format(repeat) print " IQ File Name: {}".format(iq_file_name) # start by dumping baseband into a file and viewing in grc if verbose > 0: print "Entering NTSC Demodulator..." # variables self.center_freq = center_freq self.freq = freq self.samp_rate = samp_rate self.bb_samp_rate = bb_samp_rate self.fm_deviation = fm_deviation self.channel_width = channel_width self.transition_width = transition_width self.bb_lpf_cutoff = bb_lpf_cutoff self.bb_lpf_transition = bb_lpf_transition self.repeat = repeat self.iq_file_name = iq_file_name self.fifo_name = fifo_name self.hw_sel = hw_sel self.tuning_taps = firdes.low_pass(1, self.samp_rate, self.channel_width / 2, self.channel_width / 16) self.lpf_taps = firdes.low_pass(1, samp_rate, self.bb_lpf_cutoff, self.bb_lpf_transition, firdes.WIN_HAMMING, 6.76) # blocks # if we were not passed a file name, use the osmocom source if self.iq_file_name == "": if verbose > 0: print "Using SDR as input..." if self.hw_sel == 0: 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) elif self.hw_sel == 1: 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(center_freq, 0) self.uhd_usrp_source_0.set_gain(20, 0) self.uhd_usrp_source_0.set_antenna('RX2', 0) # otherwise, use a file source with throttle else: if verbose > 0: print "Using {} as input...".format(iq_file_name) self.blocks_file_source_0 = blocks.file_source( gr.sizeof_gr_complex * 1, iq_file_name, repeat=repeat) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1, samp_rate, True) self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_0, 0)) # simple tuner self.analog_sig_source_x_0 = analog.sig_source_c( samp_rate, analog.GR_COS_WAVE, center_freq - freq, 1, 0) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) if iq_file_name == "": if self.hw_sel == 0: self.connect((self.osmosdr_source_0, 0), (self.blocks_multiply_xx_0, 0)) elif self.hw_sel == 1: self.connect((self.uhd_usrp_source_0, 0), (self.blocks_multiply_xx_0, 0)) else: self.connect((self.blocks_throttle_0, 0), (self.blocks_multiply_xx_0, 0)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) """ # simple decimator self.keep = blocks.keep_one_in_n(gr.sizeof_gr_complex*1, 4) self.connect( (self.blocks_multiply_xx_0, 0), (self.keep, 0) ) """ # demod block self.analog_quadrature_demod_cf_0_0 = analog.quadrature_demod_cf( (samp_rate) / (2 * math.pi * self.fm_deviation / 8.0)) self.connect( (self.blocks_multiply_xx_0, 0), #(self.keep, 0), (self.analog_quadrature_demod_cf_0_0, 0)) # low pass filter the demod output self.low_pass_filter_1 = filter.filter.fir_filter_fff( int(samp_rate / bb_samp_rate), self.lpf_taps) self.connect((self.analog_quadrature_demod_cf_0_0, 0), (self.low_pass_filter_1, 0)) # output the baseband to a fifo if False: self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float * 1, fifo_name, False) self.blocks_file_sink_0.set_unbuffered(False) self.connect((self.low_pass_filter_1, 0), (self.blocks_file_sink_0, 0)) """ # multiply by a constant and then convert to a short to reduce data self.multiply_const = blocks.multiply_const_vff((10000, )) # how to scale? self.float_to_short = blocks.float_to_short(1, 1) self.connect( (self.low_pass_filter_1, 0), (self.multiply_const, 0) ) self.connect( (self.multiply_const, 0), (self.float_to_short, 0) ) self.connect( (self.float_to_short, 0), (self.zeromq_push_sink_0, 0) ) """ # now add the ZMQ block for output to the main program self.zeromq_push_sink_0 = zeromq.push_sink( gr.sizeof_float, # gr.sizeof_short, 1, tcp_str, 100, False, 32768 * 8) #-1) self.connect((self.low_pass_filter_1, 0), (self.zeromq_push_sink_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Pager 6Ch Decode") _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 = 2000000 self.xlate_decimation = xlate_decimation = 40 self.hunter_freq_5 = hunter_freq_5 = 0 self.hunter_freq_4 = hunter_freq_4 = 0 self.hunter_freq_3 = hunter_freq_3 = 0 self.hunter_freq_2 = hunter_freq_2 = 0 self.hunter_freq_1 = hunter_freq_1 = 0 self.hunter_freq_0 = hunter_freq_0 = 0 self.gain = gain = 10 self.frequency = frequency = 929000000 self.filter_width = filter_width = 5120 self.fft_taps = fft_taps = filter.firdes.low_pass_2(1, samp_rate, 2000, 1000, 0.1) self.fft_n_elements = fft_n_elements = 2048 ################################################## # Blocks ################################################## _hunter_freq_5_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_5_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_5_sizer, value=self.hunter_freq_5, callback=self.set_hunter_freq_5, label='hunter_freq_5', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_5_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_5_sizer, value=self.hunter_freq_5, callback=self.set_hunter_freq_5, minimum=-1000000, maximum=1000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_5_sizer) _hunter_freq_4_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_4_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_4_sizer, value=self.hunter_freq_4, callback=self.set_hunter_freq_4, label='hunter_freq_4', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_4_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_4_sizer, value=self.hunter_freq_4, callback=self.set_hunter_freq_4, minimum=-1000000, maximum=1000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_4_sizer) _hunter_freq_3_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_3_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_3_sizer, value=self.hunter_freq_3, callback=self.set_hunter_freq_3, label='hunter_freq_3', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_3_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_3_sizer, value=self.hunter_freq_3, callback=self.set_hunter_freq_3, minimum=-1000000, maximum=1000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_3_sizer) _hunter_freq_2_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_2_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_2_sizer, value=self.hunter_freq_2, callback=self.set_hunter_freq_2, label='hunter_freq_2', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_2_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_2_sizer, value=self.hunter_freq_2, callback=self.set_hunter_freq_2, minimum=-1000000, maximum=1000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_2_sizer) _hunter_freq_1_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_1_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_1_sizer, value=self.hunter_freq_1, callback=self.set_hunter_freq_1, label='hunter_freq_1', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_1_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_1_sizer, value=self.hunter_freq_1, callback=self.set_hunter_freq_1, minimum=-1000000, maximum=1000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_1_sizer) _hunter_freq_0_sizer = wx.BoxSizer(wx.VERTICAL) self._hunter_freq_0_text_box = forms.text_box( parent=self.GetWin(), sizer=_hunter_freq_0_sizer, value=self.hunter_freq_0, callback=self.set_hunter_freq_0, label='hunter_freq_0', converter=forms.int_converter(), proportion=0, ) self._hunter_freq_0_slider = forms.slider( parent=self.GetWin(), sizer=_hunter_freq_0_sizer, value=self.hunter_freq_0, callback=self.set_hunter_freq_0, minimum=-1000000, maximum=1000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_hunter_freq_0_sizer) _frequency_sizer = wx.BoxSizer(wx.VERTICAL) self._frequency_text_box = forms.text_box( parent=self.GetWin(), sizer=_frequency_sizer, value=self.frequency, callback=self.set_frequency, label='Frequency', converter=forms.int_converter(), proportion=0, ) self._frequency_slider = forms.slider( parent=self.GetWin(), sizer=_frequency_sizer, value=self.frequency, callback=self.set_frequency, minimum=80000000, maximum=1100000000, num_steps=1000, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_frequency_sizer) self.zeromq_push_sink_0_0 = zeromq.push_sink(gr.sizeof_float, fft_n_elements, 'tcp://127.0.0.1:9000', 100, False, -1) self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(('localhost', 8080), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread(target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=frequency, 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='master_plot', peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + '' ) self.rtlsdr_source_0.set_sample_rate(samp_rate) self.rtlsdr_source_0.set_center_freq(frequency, 0) self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_dc_offset_mode(0, 0) self.rtlsdr_source_0.set_iq_balance_mode(0, 0) self.rtlsdr_source_0.set_gain_mode(False, 0) self.rtlsdr_source_0.set_gain(10, 0) self.rtlsdr_source_0.set_if_gain(20, 0) self.rtlsdr_source_0.set_bb_gain(20, 0) self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_bandwidth(0, 0) _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.int_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=50, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_gain_sizer) self.freq_xlating_fft_filter_ccc_0_0_3 = filter.freq_xlating_fft_filter_ccc(xlate_decimation, (fft_taps), frequency + hunter_freq_5, samp_rate) self.freq_xlating_fft_filter_ccc_0_0_3.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0_0_3.declare_sample_delay(0) self.freq_xlating_fft_filter_ccc_0_0_2 = filter.freq_xlating_fft_filter_ccc(xlate_decimation, (fft_taps), frequency + hunter_freq_4, samp_rate) self.freq_xlating_fft_filter_ccc_0_0_2.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0_0_2.declare_sample_delay(0) self.freq_xlating_fft_filter_ccc_0_0_1 = filter.freq_xlating_fft_filter_ccc(xlate_decimation, (fft_taps), frequency + hunter_freq_3, samp_rate) self.freq_xlating_fft_filter_ccc_0_0_1.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0_0_1.declare_sample_delay(0) self.freq_xlating_fft_filter_ccc_0_0_0 = filter.freq_xlating_fft_filter_ccc(xlate_decimation, (fft_taps), frequency + hunter_freq_2, samp_rate) self.freq_xlating_fft_filter_ccc_0_0_0.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0_0_0.declare_sample_delay(0) self.freq_xlating_fft_filter_ccc_0_0 = filter.freq_xlating_fft_filter_ccc(xlate_decimation, (fft_taps), frequency + hunter_freq_1, samp_rate) self.freq_xlating_fft_filter_ccc_0_0.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0_0.declare_sample_delay(0) self.freq_xlating_fft_filter_ccc_0 = filter.freq_xlating_fft_filter_ccc(xlate_decimation, (fft_taps), frequency + hunter_freq_0, samp_rate) self.freq_xlating_fft_filter_ccc_0.set_nthreads(1) self.freq_xlating_fft_filter_ccc_0.declare_sample_delay(0) _filter_width_sizer = wx.BoxSizer(wx.VERTICAL) self._filter_width_text_box = forms.text_box( parent=self.GetWin(), sizer=_filter_width_sizer, value=self.filter_width, callback=self.set_filter_width, label='filter_width', converter=forms.int_converter(), proportion=0, ) self._filter_width_slider = forms.slider( parent=self.GetWin(), sizer=_filter_width_sizer, value=self.filter_width, callback=self.set_filter_width, minimum=2048, maximum=40960, num_steps=100, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Add(_filter_width_sizer) self.fft_vxx_0 = fft.fft_vcc(fft_n_elements, True, (window.blackmanharris(fft_n_elements)), True, 1) self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_gr_complex*1, fft_n_elements) self.blocks_stream_to_vector_1 = blocks.stream_to_vector(gr.sizeof_float*1, fft_n_elements) self.blocks_stream_to_vector_0 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, fft_n_elements) self.blocks_null_sink_0_0_3 = blocks.null_sink(gr.sizeof_gr_complex*1) self.blocks_null_sink_0_0_2 = blocks.null_sink(gr.sizeof_gr_complex*1) self.blocks_null_sink_0_0_1 = blocks.null_sink(gr.sizeof_gr_complex*1) self.blocks_null_sink_0_0_0 = blocks.null_sink(gr.sizeof_gr_complex*1) self.blocks_null_sink_0_0 = blocks.null_sink(gr.sizeof_gr_complex*1) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_gr_complex*1) self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) ################################################## # Connections ################################################## self.connect((self.blocks_complex_to_mag_0, 0), (self.blocks_stream_to_vector_1, 0)) self.connect((self.blocks_stream_to_vector_0, 0), (self.fft_vxx_0, 0)) self.connect((self.blocks_stream_to_vector_1, 0), (self.zeromq_push_sink_0_0, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_complex_to_mag_0, 0)) self.connect((self.fft_vxx_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0, 0), (self.blocks_null_sink_0, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0_0, 0), (self.blocks_null_sink_0_0, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0_0_0, 0), (self.blocks_null_sink_0_0_0, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0_0_1, 0), (self.blocks_null_sink_0_0_1, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0_0_2, 0), (self.blocks_null_sink_0_0_2, 0)) self.connect((self.freq_xlating_fft_filter_ccc_0_0_3, 0), (self.blocks_null_sink_0_0_3, 0)) self.connect((self.rtlsdr_source_0, 0), (self.blocks_stream_to_vector_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0_0_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0_0_1, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0_0_2, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fft_filter_ccc_0_0_3, 0)) self.connect((self.rtlsdr_source_0, 0), (self.wxgui_fftsink2_0, 0))
def __init__(self): gr.top_block.__init__(self, "Split 2") ################################################## # Variables ################################################## self.zcpu = zcpu = psutil self._xmlrpcport_config = ConfigParser.ConfigParser() self._xmlrpcport_config.read('default') try: xmlrpcport = self._xmlrpcport_config.getint("split2", "xmlrpcport") except: xmlrpcport = 8080 self.xmlrpcport = xmlrpcport self._timeout_config = ConfigParser.ConfigParser() self._timeout_config.read('./default') try: timeout = self._timeout_config.getint("global", "zmqtimeout") except: timeout = 100 self.timeout = timeout self._split1ip_config = ConfigParser.ConfigParser() self._split1ip_config.read('./default') try: split1ip = self._split1ip_config.get("split1", "ip") except: split1ip = "127.0.0.1" self.split1ip = split1ip self.rate = rate = 0 self._port_config = ConfigParser.ConfigParser() self._port_config.read('./default') try: port = self._port_config.get("split2", "port") except: port = '2200' self.port = port self._payloadport_config = ConfigParser.ConfigParser() self._payloadport_config.read('./default') try: payloadport = self._payloadport_config.get("split1", "payloadport") except: payloadport = "2101" self.payloadport = payloadport self.payload_mod = payload_mod = digital.constellation_bpsk() self._maxnoutput_config = ConfigParser.ConfigParser() self._maxnoutput_config.read('./default') try: maxnoutput = self._maxnoutput_config.getint("global", "maxnoutput") except: maxnoutput = 100 self.maxnoutput = maxnoutput self._ip_config = ConfigParser.ConfigParser() self._ip_config.read('./default') try: ip = self._ip_config.get("split2", "ip") except: ip = "127.0.0.1" self.ip = ip self._headerport_config = ConfigParser.ConfigParser() self._headerport_config.read('./default') try: headerport = self._headerport_config.get("split1", "headerport") except: headerport = "2100" self.headerport = headerport self.header_mod = header_mod = digital.constellation_bpsk() self.cpu_percent = cpu_percent = 0 ################################################## # Blocks ################################################## self.probe2 = blocks.probe_rate(gr.sizeof_gr_complex*1, 2000, 0.15) self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, "tcp://" + ip + ":" + port, timeout, True, -1) self.zeromq_pull_source_1 = zeromq.pull_source(gr.sizeof_char, 1, "tcp://" + split1ip + ":" + payloadport, timeout, True, -1) self.zeromq_pull_source_0 = zeromq.pull_source(gr.sizeof_char, 1, "tcp://" + split1ip + ":" + headerport, timeout, True, -1) self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(('127.0.0.1', xmlrpcport), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread(target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() def _rate_probe(): while True: val = self.probe2.rate() try: self.set_rate(val) except AttributeError: pass time.sleep(1.0 / (10)) _rate_thread = threading.Thread(target=_rate_probe) _rate_thread.daemon = True _rate_thread.start() self.digital_chunks_to_symbols_xx_0_0 = digital.chunks_to_symbols_bc((payload_mod.points()), 1) self.digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bc((header_mod.points()), 1) def _cpu_percent_probe(): while True: val = self.zcpu.cpu_percent() try: self.set_cpu_percent(val) except AttributeError: pass time.sleep(1.0 / (1)) _cpu_percent_thread = threading.Thread(target=_cpu_percent_probe) _cpu_percent_thread.daemon = True _cpu_percent_thread.start() self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, 1e6,True) self.blocks_tagged_stream_mux_0 = blocks.tagged_stream_mux(gr.sizeof_gr_complex*1, "packet_len", 0) self.blocks_tag_debug_0 = blocks.tag_debug(gr.sizeof_gr_complex*1, '', ""); self.blocks_tag_debug_0.set_display(True) ################################################## # Connections ################################################## self.connect((self.blocks_tagged_stream_mux_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_tag_debug_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.probe2, 0)) self.connect((self.blocks_throttle_0, 0), (self.zeromq_push_sink_0, 0)) self.connect((self.digital_chunks_to_symbols_xx_0, 0), (self.blocks_tagged_stream_mux_0, 0)) self.connect((self.digital_chunks_to_symbols_xx_0_0, 0), (self.blocks_tagged_stream_mux_0, 1)) self.connect((self.zeromq_pull_source_0, 0), (self.digital_chunks_to_symbols_xx_0, 0)) self.connect((self.zeromq_pull_source_1, 0), (self.digital_chunks_to_symbols_xx_0_0, 0))