def __init__(self, rx_callback): gr.hier_block2.__init__(self, "receive_path", gr.io_signature(1, 1, gr.sizeof_gr_complex), gr.io_signature(0, 0, 0)) self.callback = rx_callback self.demod = digital.gfsk_demod( samples_per_symbol=4, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.packetizer = mac_packetizer() self.rcvd_pktq = gr.msg_queue() self.message_sink = blocks.message_sink(gr.sizeof_char, self.rcvd_pktq, False) self.queue_watcher_thread = _queue_watcher_thread( self.rcvd_pktq, self.callback) self.connect(self, self.demod, self.packetizer, self.message_sink)
def __init__(self): gr.top_block.__init__(self, "Acoust In") ################################################## # Variables ################################################## self.transistion = transistion = 100 self.sps = sps = 2 self.sideband_rx = sideband_rx = 1000 self.sideband = sideband = 1000 self.samp_rate = samp_rate = 48000 self.payload = payload = 20 self.interpolation = interpolation = 200 self.fd = fd = 1 self.carrier = carrier = 23000 ################################################## # Blocks ################################################## self.rational_resampler_xxx_0_0_0 = filter.rational_resampler_ccc( interpolation=1, decimation=interpolation, taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter_xxx_0_0 = filter.freq_xlating_fir_filter_ccc(1, (filter.firdes.low_pass(1, samp_rate, sideband_rx,100)), carrier, samp_rate) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=sps, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blks2_tcp_sink_0 = grc_blks2.tcp_sink( itemsize=gr.sizeof_char*1, addr="127.0.0.1", port=11000, server=False, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) self.audio_source_0 = audio.source(48000, "", True) ################################################## # Connections ################################################## self.connect((self.blocks_float_to_complex_0, 0), (self.freq_xlating_fir_filter_xxx_0_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0_0, 0), (self.rational_resampler_xxx_0_0_0, 0)) self.connect((self.audio_source_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.rational_resampler_xxx_0_0_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.blks2_tcp_sink_0, 0))
def __init__(self): gr.top_block.__init__(self, "AirHogs Sync Framer Example") # SDR configuration self.freq = 2402e6 self.gain = 40 self.symbol_rate = 2e6 self.sample_rate = 4e6 # SDR source (gr-osmosdr source) self.osmosdr_source = osmosdr.source() self.osmosdr_source.set_sample_rate(self.sample_rate) self.osmosdr_source.set_center_freq(self.freq) self.osmosdr_source.set_gain(self.gain) #self.osmosdr_source.set_antenna('TX/RX') # Low pass filter self.lpf = filter.fir_filter_ccf( 1, firdes.low_pass_2(1, self.sample_rate, self.symbol_rate / 2, 50e3, 50)) # GFSK demod, defaults to 2 samples per symbol self.gfsk_demod = digital.gfsk_demod() # Nordic RX self.nordic_rx = nordic.nordic_rx(3, 5, 2, 2) # Connect the blocks self.connect((self.osmosdr_source, 0), (self.lpf, 0)) self.connect((self.lpf, 0), (self.gfsk_demod, 0)) self.connect((self.gfsk_demod, 0), (self.nordic_rx, 0)) # Handle incoming packets self.nordictap_handler = microsoft_nordictap_handler(self) self.msg_connect( self.nordic_rx, "nordictap_out", self.nordictap_handler, "nordictap_in")
def __init__(self): gr.top_block.__init__(self, "Blight 1 Solution") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 32000 ################################################## # Blocks ################################################## self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_pack_k_bits_bb_0 = blocks.pack_k_bits_bb(8) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, 'dist/blight1a.bin', False) self.blocks_file_source_0.set_begin_tag(pmt.PMT_NIL) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, OUT_DIR + 'blight1a_soln.out', False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.blocks_pack_k_bits_bb_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blocks_pack_k_bits_bb_0, 0))
def set_decoder(self, chan, num): print("Add decoder for channel %d" % num) decoder = btbr.btdecode(num) # Both methods are quite equivalent if 1: quad_demod = analog.quadrature_demod_cf(self.samp_per_sym / (2 * math.pi)) clock_recov = digital.clock_recovery_mm_ff( omega=self.samp_per_sym, gain_omega=0.25 * self.gain_mu**2, mu=0.32, gain_mu=self.gain_mu, omega_relative_limit=0.005) binary_slicer = digital.binary_slicer_fb() self.connect(chan, quad_demod) self.connect(quad_demod, clock_recov) self.connect(clock_recov, binary_slicer) self.connect(binary_slicer, decoder) self.msg_connect((decoder, 'out'), (self.bthandler, 'in')) else: gfsk_demod = digital.gfsk_demod( samples_per_symbol=self.samp_per_sym, sensitivity=2 * math.pi / self.samp_per_sym, gain_mu=self.gain_mu, mu=0.32, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.connect(chan, gfsk_demod) self.connect(gfsk_demod, decoder) self.msg_connect((decoder, 'out'), (self.bthandler, 'in'))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Endurosat Frame Rx") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.sps = sps = 10 self.samp_rate = samp_rate = 4.0032e6 self.freq = freq = 435e6 self.baud_rate = baud_rate = 9600 ################################################## # Blocks ################################################## self.utat_endurosat_frame_sync_bb_0 = utat.endurosat_frame_sync_bb() self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=96000, decimation=4003200, taps=None, fractional_bw=None, ) self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + "" ) self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(freq, 0) self.osmosdr_source_0.set_freq_corr(0, 0) self.osmosdr_source_0.set_dc_offset_mode(0, 0) self.osmosdr_source_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0.set_gain_mode(False, 0) self.osmosdr_source_0.set_gain(10, 0) self.osmosdr_source_0.set_if_gain(20, 0) self.osmosdr_source_0.set_bb_gain(20, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=10, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, str(os.getcwd()) + "/../../logs/" + "recent_recieved_mesgs.log", False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.digital_gfsk_demod_0, 0), (self.utat_endurosat_frame_sync_bb_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.utat_endurosat_frame_sync_bb_0, 0), (self.blocks_file_sink_0, 0))
def __init__(self, args): gr.top_block.__init__(self, "Nordic Auto-ACK Example") # SDR configuration self.freq = 2400e6 + args.channel * 1e6 self.gain = args.gain self.symbol_rate = args.data_rate self.sample_rate = args.data_rate * args.samples_per_symbol # SDR source (gr-osmosdr source) self.osmosdr_source = osmosdr.source() self.osmosdr_source.set_sample_rate(self.sample_rate) self.osmosdr_source.set_center_freq(self.freq) self.osmosdr_source.set_gain(self.gain) self.osmosdr_source.set_antenna('TX/RX') # SDR sink (gr-osmosdr source) self.osmosdr_sink = osmosdr.sink() self.osmosdr_sink.set_sample_rate(self.sample_rate) self.osmosdr_sink.set_center_freq(self.freq) self.osmosdr_sink.set_gain(self.gain) self.osmosdr_sink.set_antenna('TX/RX') # Transmit chain self.tx = nordic.nordic_tx() self.gfsk_mod = digital.gfsk_mod( samples_per_symbol=args.samples_per_symbol) self.connect(self.tx, self.gfsk_mod) self.connect(self.gfsk_mod, self.osmosdr_sink) # Receive chain dr = 0 if args.data_rate == 1e6: dr = 1 elif args.data_rate == 2e6: dr = 2 self.rx = nordic.nordic_rx(args.channel, args.address_length, args.crc_length, dr) self.gfsk_demod = digital.gfsk_demod( samples_per_symbol=args.samples_per_symbol) self.lpf = filter.fir_filter_ccf( 1, firdes.low_pass_2(1, self.sample_rate, self.symbol_rate / 2, 50e3, 50)) self.connect(self.osmosdr_source, self.lpf) self.connect(self.lpf, self.gfsk_demod) self.connect(self.gfsk_demod, self.rx) # Handle incoming packets self.nordictap_ack_handler = nordictap_ack_handler() self.msg_connect(self.rx, "nordictap_out", self.nordictap_ack_handler, "nordictap_in") # Reply with ACKs self.msg_connect(self.nordictap_ack_handler, "nordictap_out", self.tx, "nordictap_in")
def __init__(self): gr.top_block.__init__(self, "Virtualtransmissiontest") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 32000 ################################################## # Blocks ################################################## self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=2, sensitivity=1.0, bt=0.35, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb( 4, gr.GR_MSB_FIRST) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1, samp_rate, True) self.blocks_packed_to_unpacked_xx_0 = blocks.packed_to_unpacked_bb( 4, gr.GR_MSB_FIRST) self.blocks_file_source_0 = blocks.file_source( gr.sizeof_char * 1, '/home/thomas/Documents/esft/packet', False) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_char * 1, '/home/thomas/Documents/esft/transmittedpacket', False) self.blocks_file_sink_0.set_unbuffered(True) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.blocks_unpacked_to_packed_xx_0, 0)) self.connect((self.blocks_packed_to_unpacked_xx_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blocks_packed_to_unpacked_xx_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.blocks_throttle_0, 0))
def raw_gfsk_demod(self, sps, sensi, gain, smu, orl, frqerr, isVerbose, make_log): return digital.gfsk_demod( samples_per_symbol=self.sps, sensitivity=sensi, gain_mu=gain, mu=smu, omega_relative_limit=orl, freq_error=frqerr, verbose=isVerbose, log=make_log, )
def __init__(self): gr.top_block.__init__(self) ################################################## # Variables ################################################## ################################################## # Blocks ################################################## self.uhd_usrp_source_0_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0_0.set_clock_rate(30.72e6, uhd.ALL_MBOARDS) self.uhd_usrp_source_0_0.set_samp_rate(36e6) self.uhd_usrp_source_0_0.set_center_freq(5.42e9, 0) self.uhd_usrp_source_0_0.set_gain(5, 0) self.uhd_usrp_source_0_0.set_antenna("J1", 0) self.uhd_usrp_source_0_0.set_bandwidth(36e6, 0) self.input_unpacked_to_packed = blocks.unpacked_to_packed_bb( 1, gr.GR_MSB_FIRST) self.demod = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.output_unpacked_to_packed = blocks.unpacked_to_packed_bb( 1, gr.GR_MSB_FIRST) self.frame_sync = frame_sync() self.output_file_sink = blocks.file_sink(gr.sizeof_char * 1, "output.txt", False) self.output_file_sink.set_unbuffered(True) ################################################## # Connections ################################################## self.connect(self.uhd_usrp_source_0_0, self.demod, self.frame_sync, self.output_unpacked_to_packed, self.output_file_sink)
def __init__(self, rx_callback, tx_status, rx_status): gr.hier_block2.__init__(self, "receive_path", gr.io_signature(1, 1, gr.sizeof_gr_complex), gr.io_signature(0, 0, 0)) ################################################## # Variables ################################################## self.callback = rx_callback ################################################## # Blocks ################################################## self.demod = digital.gfsk_demod( samples_per_symbol=4, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.frame_sync = frame_sync(tx_status, rx_status) # Your custom block!!! self.output_unpacked_to_packed = blocks.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST) self.rcvd_pktq = gr.msg_queue() self.message_sink = blocks.message_sink(gr.sizeof_char, self.rcvd_pktq, True) self.queue_watcher_thread = _queue_watcher_thread(self.rcvd_pktq, self.callback) self.blocks_max = blocks.max_ff(1,1) #Don't Search if nothing is transmitting self.blocks_threshold_ff_0 = blocks.threshold_ff(0.00002, 0.00002, 0) self.blocks_complex_to_mag_squared_0 = blocks.complex_to_mag_squared(1) self.analog_simple_squelch_cc_0 = analog.simple_squelch_cc(-80, 0.55) ################################################## # Connections ################################################## #main path self.connect(self, self.demod, (self.frame_sync, 0)) self.connect(self.frame_sync, self.output_unpacked_to_packed, self.message_sink) #squelch path self.connect(self, (self.analog_simple_squelch_cc_0, 0), (self.blocks_complex_to_mag_squared_0, 0)) self.connect((self.blocks_complex_to_mag_squared_0, 0), (self.blocks_max, 0), (self.blocks_threshold_ff_0, 0)) self.connect((self.blocks_threshold_ff_0, 0), (self.frame_sync, 1))
def __init__(self, args): gr.top_block.__init__(self, "Nordic Single-Channel Receiver Example") self.freq = 2414e6 self.gain = args.gain self.symbol_rate = 2e6 self.sample_rate = 4e6 # Channel map channel_count = 3 channel_map = [14, 18, 10] # Data rate index dr = 2 # 2M # SDR source (gr-osmosdr source) self.osmosdr_source = osmosdr.source() self.osmosdr_source.set_sample_rate(self.sample_rate * channel_count) self.osmosdr_source.set_center_freq(self.freq) self.osmosdr_source.set_gain(self.gain) self.osmosdr_source.set_antenna('TX/RX') # PFB channelizer taps = firdes.low_pass_2(1, self.sample_rate, self.symbol_rate / 2, 100e3, 30) self.channelizer = filter.pfb_channelizer_ccf(channel_count, taps, 1) # Stream to streams (PFB channelizer input) self.s2ss = blocks.stream_to_streams(gr.sizeof_gr_complex, channel_count) self.connect(self.osmosdr_source, self.s2ss) # Demodulators and packet deframers self.nordictap_printer = nordictap_printer() self.demods = [] self.rxs = [] for x in range(channel_count): self.connect((self.s2ss, x), (self.channelizer, x)) self.demods.append(digital.gfsk_demod()) self.rxs.append(nordic.nordic_rx(x, 5, 2, dr)) self.connect((self.channelizer, x), self.demods[x]) self.connect(self.demods[x], self.rxs[x]) self.msg_connect(self.rxs[x], "nordictap_out", self.nordictap_printer, "nordictap_in")
def __init__(self, rf_params, bb_params, working_samp_rate): gr.hier_block2.__init__( self, "RX Demod Block", gr.io_signature(1, 1, gr.sizeof_gr_complex * 1), # single in gr.io_signature(1, 1, gr.sizeof_char * 1) # single out ) ################################################## # Parameters ################################################## # ADD VALIDITY CHECKS TO EACH OF THESE self.symbol_time = bb_params.symbol_time self.working_samp_rate = working_samp_rate self.fsk_dev = rf_params.fsk_dev ################################################## # Variables ################################################## self.sps = int(self.symbol_time * self.working_samp_rate) self.sensitivity = 2 * 3.1415 * self.fsk_dev / self.working_samp_rate ################################################## # Blocks ################################################## self.analog_pwr_squelch_xx_0 = analog.pwr_squelch_cc( rfm.PWR_SQUELCH_DB, 1e-4, 0, False) self.connect((self, 0), (self.analog_pwr_squelch_xx_0, 0)) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=self.sps, sensitivity=self.sensitivity, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.connect((self.analog_pwr_squelch_xx_0, 0), (self.digital_gfsk_demod_0, 0)) # output from block self.connect((self.digital_gfsk_demod_0, 0), (self, 0))
def __init__(self): gr.top_block.__init__(self, "AX.25 Sink Test") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 256000 self.baud = baud = 9600 self.samp_per_sym = samp_per_sym = samp_rate/baud ################################################## # Blocks ################################################## self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=samp_per_sym, sensitivity=1.0, bt=0.35, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=samp_per_sym, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char*1, samp_rate,True) self.blocks_file_source_0_0 = blocks.file_source(gr.sizeof_char*1, "/home/ground/jaidenfe/gr-Interfaces/examples/.ax25_sink_test.dat", True) self.Interfaces_ax25_sink_b_0 = Interfaces.ax25_sink_b("WJ9XLE", "WJ9XLE") ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.Interfaces_ax25_sink_b_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.digital_gfsk_demod_0, 0))
def __init__(self): gr.top_block.__init__(self, "Ax25 Rx Test") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 195312 ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("addr=192.168.10.2", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(145.9e6, 0) self.uhd_usrp_source_0.set_gain(0, 0) self.uhd_usrp_source_0.set_antenna("TX/RX", 0) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.Interfaces_ax25_sink_b_0 = Interfaces.ax25_sink_b("WJ9XLE", "WJ9XLE", True) ################################################## # Connections ################################################## self.connect((self.digital_gfsk_demod_0, 0), (self.Interfaces_ax25_sink_b_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.digital_gfsk_demod_0, 0))
def __init__(self): gr.top_block.__init__(self, "Queue Length Deframer Test") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 256000 self.baud = baud = 9600 self.samp_per_sym = samp_per_sym = samp_rate / baud ################################################## # Blocks ################################################## self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=samp_per_sym, sensitivity=1.0, bt=0.35, verbose=False, log=False ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=samp_per_sym, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char * 1, samp_rate, True) # self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char*1, "/home/ubnl-sof/COM/SDR_PHY_COM/tests/.sink_test.dat", True) path = str(os.path.dirname(os.path.realpath(__file__))) + "/.sink_test.dat" self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char * 1, path, True) self.Interfaces_queue_len_deframer_sink_b_0 = Interfaces.queue_len_deframer_sink_b("\x33", True) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.Interfaces_queue_len_deframer_sink_b_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.digital_gfsk_demod_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Top Block") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 500e3 self.freq = freq = 905.998e6 ################################################## # Blocks ################################################## _freq_sizer = wx.BoxSizer(wx.VERTICAL) self._freq_text_box = forms.text_box( parent=self.GetWin(), sizer=_freq_sizer, value=self.freq, callback=self.set_freq, label='freq', converter=forms.float_converter(), proportion=0, ) self._freq_slider = forms.slider( parent=self.GetWin(), sizer=_freq_sizer, value=self.freq, callback=self.set_freq, minimum=902e6, maximum=928e6, num_steps=260, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_freq_sizer) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=freq, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=5, average=False, avg_alpha=None, title="FFT Plot", peak_hold=True, ) 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(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(0, 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) self.low_pass_filter_0 = filter.fir_filter_ccf(1, firdes.low_pass( 1, samp_rate, 150e3, 100e3, firdes.WIN_HAMMING, 6.76)) self.gr_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "/tmp/chronos.bits") self.gr_file_sink_0.set_unbuffered(False) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) ################################################## # Connections ################################################## self.connect((self.low_pass_filter_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.gr_file_sink_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="limeReceiver") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 2e6 self.freq = freq = 2400e6 ################################################## # Blocks ################################################## self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=freq, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=True, avg_alpha=.1, title='FFT Plot', peak_hold=True, ) self.Add(self.wxgui_fftsink2_0.win) self.osmosdr_source_1 = osmosdr.source(args="numchan=" + str(1) + " " + 'soapy=0,driver=lime') self.osmosdr_source_1.set_sample_rate(samp_rate) self.osmosdr_source_1.set_center_freq(freq, 0) self.osmosdr_source_1.set_freq_corr(0, 0) self.osmosdr_source_1.set_dc_offset_mode(2, 0) self.osmosdr_source_1.set_iq_balance_mode(0, 0) self.osmosdr_source_1.set_gain_mode(False, 0) self.osmosdr_source_1.set_gain(10, 0) self.osmosdr_source_1.set_if_gain(20, 0) self.osmosdr_source_1.set_bb_gain(20, 0) self.osmosdr_source_1.set_antenna('', 0) self.osmosdr_source_1.set_bandwidth(5000000, 0) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char * 1, '/home/alarm/dataout.txt', True) self.blocks_file_sink_0.set_unbuffered(True) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.osmosdr_source_1, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.osmosdr_source_1, 0), (self.wxgui_fftsink2_0, 0))
def __init__(self, rate=1e6, access_code_threshold=0, samps_per_sym=2, ampl=1): gr.hier_block2.__init__( self, "GFSK Modem", gr.io_signature(1, 1, gr.sizeof_gr_complex*1), gr.io_signature(1, 1, gr.sizeof_gr_complex*1), ) ################################################## # Parameters ################################################## self.rate = rate self.access_code_threshold = access_code_threshold self.samps_per_sym = samps_per_sym self.ampl = ampl ################################################## # Variables ################################################## self.samp_rate = samp_rate = rate ################################################## # Message Queues ################################################## mac_packet_deframer_0_msgq_out = mac_packet_to_pdu_0_msgq_in = gr.msg_queue(2) ################################################## # Blocks ################################################## self.pad_source_1 = None;self.message_port_register_hier_out("msg_in") self.pad_sink_0_0 = None;self.message_port_register_hier_in("msg_out") self.mac_packet_to_pdu_0 = mac.packet_to_pdu(msgq=mac_packet_to_pdu_0_msgq_in, dewhiten=True, output_invalid=False) self.mac_packet_framer_0 = mac.packet_framer( access_code="", whitener_offset=0, rotate_whitener_offset=0, whiten=True, preamble=''.join(['\x55']*((256*1)/8/samps_per_sym)), postamble=''.join(['\x00']*(16/8/samps_per_sym)*0), ) self.mac_packet_deframer_0 = mac.packet_deframer(msgq=mac_packet_deframer_0_msgq_out, access_code="", threshold=access_code_threshold) self.mac_burst_tagger_0 = mac.burst_tagger('length', samps_per_sym*8, 32*0+ 0, 16*0 + 16) self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=samps_per_sym, sensitivity=1.0, bt=0.35, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=samps_per_sym, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_pdu_to_tagged_stream_0 = blocks.pdu_to_tagged_stream(blocks.byte_t, "length") ################################################## # Connections ################################################## self.connect((self.mac_burst_tagger_0, 0), (self, 0)) self.connect((self.blocks_pdu_to_tagged_stream_0, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.mac_packet_deframer_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.mac_burst_tagger_0, 0)) ################################################## # Asynch Message Connections ################################################## self.msg_connect(self.mac_packet_framer_0, "out", self.blocks_pdu_to_tagged_stream_0, "pdus") self.msg_connect(self.mac_packet_to_pdu_0, "pdu", self, "msg_out") self.msg_connect(self, "msg_in", self.mac_packet_framer_0, "in")
def __init__(self, center_freq=867.4105, find_chan_nums=False, freq_list=[866.0375, 866.2875, 866.5375, 866.7875, 867.0375, 867.2875, 867.5375, 867.7875, 868.0375, 868.2875, 868.5375, 868.7875, 866.0625, 866.3125, 866.5625, 866.8125, 867.0625, 867.3125, 867.5625, 867.8125], noise_threshold=5, sink_rate=48000, source_rate=4000000, talkgroup=1796, tone_threshold=0.1, track_analog=True, track_digital=True, voice_threshold=0.4): gr.hier_block2.__init__( self, "Trunked Radio", gr.io_signature(1, 1, gr.sizeof_gr_complex*1), gr.io_signaturev(2, 2, [gr.sizeof_float*1, gr.sizeof_char*1]), ) ################################################## # Parameters ################################################## self.center_freq = center_freq self.find_chan_nums = find_chan_nums self.freq_list = freq_list self.noise_threshold = noise_threshold self.sink_rate = sink_rate self.source_rate = source_rate self.talkgroup = talkgroup self.tone_threshold = tone_threshold self.track_analog = track_analog self.track_digital = track_digital self.voice_threshold = voice_threshold ################################################## # Variables ################################################## self.baud_rate = baud_rate = 9600 self.samp_per_sym = samp_per_sym = sink_rate / baud_rate self.fp_sel_index = fp_sel_index = 0 ################################################## # Blocks ################################################## self.edacs_handle_eot_0 = edacs.handle_eot(sink_rate, 4800, tone_threshold, noise_threshold) def _fp_sel_index_probe(): while True: val = self.edacs_handle_eot_0.get_sel_index() try: self.set_fp_sel_index(val) except AttributeError: pass time.sleep(1.0 / (100)) _fp_sel_index_thread = threading.Thread(target=_fp_sel_index_probe) _fp_sel_index_thread.daemon = True _fp_sel_index_thread.start() self.rational_resampler_xxx_1 = filter.rational_resampler_fff( interpolation=int(sink_rate / 8000), decimation=1, taps=None, fractional_bw=None) self.rational_resampler_xxx_0_0_0 = filter.rational_resampler_ccc( interpolation=int(sink_rate / 1000), decimation=int(source_rate / 1000), taps=None, fractional_bw=None) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=int(sink_rate / 1000), decimation=int(source_rate / 100000), taps=None, fractional_bw=None) self.low_pass_filter_0 = filter.fir_filter_ccf( 100, firdes.low_pass( 1, source_rate, .00625e6, .002e6, firdes.WIN_HAMMING, 6.76)) self.edacs_proc_msg_0 = edacs.proc_msg(talkgroup, freq_list, center_freq, find_chan_nums, track_analog, track_digital) self.edacs_find_chan_nums_0 = edacs.find_chan_nums(freq_list, center_freq, source_rate, voice_threshold) self.dsd_block_ff_0 = dsd.dsd_block_ff(dsd.dsd_FRAME_PROVOICE,dsd.dsd_MOD_AUTO_SELECT,3,False,3) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=int(samp_per_sym), sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False) self.digital_correlate_access_code_bb_0 = digital.correlate_access_code_bb('010101010101010101010111000100100101010101010101', 0) self.blocks_unpack_k_bits_bb_0 = blocks.unpack_k_bits_bb(8) self.blocks_pack_k_bits_bb_0 = blocks.pack_k_bits_bb(8) self.blocks_not_xx_0 = blocks.not_bb() self.blocks_multiply_xx_1 = blocks.multiply_vcc(1) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_ff(1-fp_sel_index) self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex*1, 1024) self.blocks_add_xx_0 = blocks.add_vff(1) self.analog_sig_source_x_1 = analog.sig_source_c(source_rate, analog.GR_COS_WAVE, 0, 1, 0, 0) self.analog_sig_source_x_0 = analog.sig_source_c(source_rate, analog.GR_COS_WAVE, 0, 1, 0, 0) self.analog_fm_demod_cf_0 = analog.fm_demod_cf( channel_rate=sink_rate, audio_decim=1, deviation=7000, audio_pass=6.25e3, audio_stop=10e3, gain=2.0, tau=75e-6, ) ################################################## # Connections ################################################## self.msg_connect((self.edacs_find_chan_nums_0, 'status_out'), (self.edacs_proc_msg_0, 'chan_status_in')) self.msg_connect((self.edacs_handle_eot_0, 'status_out'), (self.edacs_proc_msg_0, 'eot_status_in')) self.msg_connect((self.edacs_proc_msg_0, 'ctrl_freq'), (self.analog_sig_source_x_0, 'freq')) self.msg_connect((self.edacs_proc_msg_0, 'voice_freq'), (self.analog_sig_source_x_1, 'freq')) self.msg_connect((self.edacs_proc_msg_0, 'chan_status_out'), (self.edacs_find_chan_nums_0, 'status_in')) self.msg_connect((self.edacs_proc_msg_0, 'eot_status_out'), (self.edacs_handle_eot_0, 'status_in')) self.connect((self.analog_fm_demod_cf_0, 0), (self.edacs_handle_eot_0, 0)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.analog_sig_source_x_1, 0), (self.blocks_multiply_xx_1, 1)) self.connect((self.blocks_add_xx_0, 0), (self, 0)) self.connect((self.blocks_delay_0, 0), (self.edacs_find_chan_nums_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_add_xx_0, 0)) self.connect((self.blocks_multiply_xx_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.blocks_multiply_xx_1, 0), (self.rational_resampler_xxx_0_0_0, 0)) self.connect((self.blocks_not_xx_0, 0), (self.blocks_unpack_k_bits_bb_0, 0)) self.connect((self.blocks_pack_k_bits_bb_0, 0), (self.blocks_not_xx_0, 0)) self.connect((self.blocks_unpack_k_bits_bb_0, 0), (self.digital_correlate_access_code_bb_0, 0)) self.connect((self.digital_correlate_access_code_bb_0, 0), (self.edacs_proc_msg_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blocks_pack_k_bits_bb_0, 0)) self.connect((self.dsd_block_ff_0, 0), (self.rational_resampler_xxx_1, 0)) self.connect((self.edacs_handle_eot_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.edacs_handle_eot_0, 0), (self.dsd_block_ff_0, 0)) self.connect((self.edacs_proc_msg_0, 0), (self, 1)) self.connect((self.low_pass_filter_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self, 0), (self.blocks_delay_0, 0)) self.connect((self, 0), (self.blocks_multiply_xx_0, 0)) self.connect((self, 0), (self.blocks_multiply_xx_1, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.rational_resampler_xxx_0_0_0, 0), (self.analog_fm_demod_cf_0, 0)) self.connect((self.rational_resampler_xxx_1, 0), (self.blocks_add_xx_0, 1))
def __init__(self): gr.top_block.__init__(self, "Dronedb") Qt.QWidget.__init__(self) self.setWindowTitle("Dronedb") 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", "DroneDB") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 2e6 self.head = head = int(2e6) self.cent_freq = cent_freq = 2.462e9 self.band = band = 2e6 ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(2), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(cent_freq, 0) self.uhd_usrp_source_0.set_gain(0, 0) self.uhd_usrp_source_0.set_antenna("TX/RX", 0) self.uhd_usrp_source_0.set_center_freq(cent_freq, 1) self.uhd_usrp_source_0.set_gain(0, 1) self.uhd_usrp_source_0.set_antenna("RX2", 1) self.rational_resampler_xxx_0_0 = filter.rational_resampler_fff( interpolation=1, decimation=8, taps=None, fractional_bw=None, ) self.rational_resampler_xxx_0 = filter.rational_resampler_fff( interpolation=1, decimation=8, taps=None, fractional_bw=None, ) self.qtgui_number_sink_0_0_1_0 = qtgui.number_sink( gr.sizeof_char, 0, qtgui.NUM_GRAPH_HORIZ, 1 ) self.qtgui_number_sink_0_0_1_0.set_update_time(0.10) self.qtgui_number_sink_0_0_1_0.set_title("rightGFSK") labels = ["", "", "", "", "", "", "", "", "", ""] units = ["", "", "", "", "", "", "", "", "", ""] colors = [("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black")] factor = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in xrange(1): self.qtgui_number_sink_0_0_1_0.set_min(i, -1) self.qtgui_number_sink_0_0_1_0.set_max(i, 1) self.qtgui_number_sink_0_0_1_0.set_color(i, colors[i][0], colors[i][1]) if len(labels[i]) == 0: self.qtgui_number_sink_0_0_1_0.set_label(i, "Data {0}".format(i)) else: self.qtgui_number_sink_0_0_1_0.set_label(i, labels[i]) self.qtgui_number_sink_0_0_1_0.set_unit(i, units[i]) self.qtgui_number_sink_0_0_1_0.set_factor(i, factor[i]) self.qtgui_number_sink_0_0_1_0.enable_autoscale(False) self._qtgui_number_sink_0_0_1_0_win = sip.wrapinstance(self.qtgui_number_sink_0_0_1_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_number_sink_0_0_1_0_win) self.qtgui_number_sink_0_0_1 = qtgui.number_sink( gr.sizeof_char, 0, qtgui.NUM_GRAPH_HORIZ, 1 ) self.qtgui_number_sink_0_0_1.set_update_time(0.10) self.qtgui_number_sink_0_0_1.set_title("leftGFSK") labels = ["", "", "", "", "", "", "", "", "", ""] units = ["", "", "", "", "", "", "", "", "", ""] colors = [("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black")] factor = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in xrange(1): self.qtgui_number_sink_0_0_1.set_min(i, -1) self.qtgui_number_sink_0_0_1.set_max(i, 1) self.qtgui_number_sink_0_0_1.set_color(i, colors[i][0], colors[i][1]) if len(labels[i]) == 0: self.qtgui_number_sink_0_0_1.set_label(i, "Data {0}".format(i)) else: self.qtgui_number_sink_0_0_1.set_label(i, labels[i]) self.qtgui_number_sink_0_0_1.set_unit(i, units[i]) self.qtgui_number_sink_0_0_1.set_factor(i, factor[i]) self.qtgui_number_sink_0_0_1.enable_autoscale(False) self._qtgui_number_sink_0_0_1_win = sip.wrapinstance(self.qtgui_number_sink_0_0_1.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_number_sink_0_0_1_win) self.qtgui_number_sink_0_0_0 = qtgui.number_sink( gr.sizeof_float, 0, qtgui.NUM_GRAPH_HORIZ, 1 ) self.qtgui_number_sink_0_0_0.set_update_time(0.10) self.qtgui_number_sink_0_0_0.set_title("rightFRMS") labels = ["", "", "", "", "", "", "", "", "", ""] units = ["", "", "", "", "", "", "", "", "", ""] colors = [("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black")] factor = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in xrange(1): self.qtgui_number_sink_0_0_0.set_min(i, -1) self.qtgui_number_sink_0_0_0.set_max(i, 1) self.qtgui_number_sink_0_0_0.set_color(i, colors[i][0], colors[i][1]) if len(labels[i]) == 0: self.qtgui_number_sink_0_0_0.set_label(i, "Data {0}".format(i)) else: self.qtgui_number_sink_0_0_0.set_label(i, labels[i]) self.qtgui_number_sink_0_0_0.set_unit(i, units[i]) self.qtgui_number_sink_0_0_0.set_factor(i, factor[i]) self.qtgui_number_sink_0_0_0.enable_autoscale(False) self._qtgui_number_sink_0_0_0_win = sip.wrapinstance(self.qtgui_number_sink_0_0_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_number_sink_0_0_0_win) self.qtgui_number_sink_0_0 = qtgui.number_sink( gr.sizeof_float, 0, qtgui.NUM_GRAPH_HORIZ, 1 ) self.qtgui_number_sink_0_0.set_update_time(0.10) self.qtgui_number_sink_0_0.set_title("leftFRMS") labels = ["", "", "", "", "", "", "", "", "", ""] units = ["", "", "", "", "", "", "", "", "", ""] colors = [("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black")] factor = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in xrange(1): self.qtgui_number_sink_0_0.set_min(i, -1) self.qtgui_number_sink_0_0.set_max(i, 1) self.qtgui_number_sink_0_0.set_color(i, colors[i][0], colors[i][1]) if len(labels[i]) == 0: self.qtgui_number_sink_0_0.set_label(i, "Data {0}".format(i)) else: self.qtgui_number_sink_0_0.set_label(i, labels[i]) self.qtgui_number_sink_0_0.set_unit(i, units[i]) self.qtgui_number_sink_0_0.set_factor(i, factor[i]) self.qtgui_number_sink_0_0.enable_autoscale(False) self._qtgui_number_sink_0_0_win = sip.wrapinstance(self.qtgui_number_sink_0_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_number_sink_0_0_win) self.fft_vxx_0_0 = fft.fft_vcc(1024, True, (window.blackmanharris(1024)), True, 1) self.fft_vxx_0 = fft.fft_vcc(1024, True, (window.blackmanharris(1024)), True, 1) self.digital_gfsk_demod_0_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_vector_to_stream_0_0 = blocks.vector_to_stream(gr.sizeof_gr_complex*1, 1024) self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_gr_complex*1, 1024) self.blocks_stream_to_vector_0_0_0 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, 1024) self.blocks_stream_to_vector_0_0 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, 1024) self.blocks_skiphead_0_1_0 = blocks.skiphead(gr.sizeof_char*1, head/2) self.blocks_skiphead_0_1 = blocks.skiphead(gr.sizeof_char*1, head/2) self.blocks_skiphead_0_0 = blocks.skiphead(gr.sizeof_float*1, head) self.blocks_skiphead_0 = blocks.skiphead(gr.sizeof_float*1, head) self.blocks_rms_xx_0_0 = blocks.rms_cf(0.0001) self.blocks_rms_xx_0 = blocks.rms_cf(0.0001) self.blocks_multiply_const_vxx_0_0 = blocks.multiply_const_vff((100, )) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((100, )) self.blocks_file_sink_0_0_1_0 = blocks.file_sink(gr.sizeof_char*1, "/home/summit/DroneIndicator/rightGFSK.dat", False) self.blocks_file_sink_0_0_1_0.set_unbuffered(False) self.blocks_file_sink_0_0_1 = blocks.file_sink(gr.sizeof_char*1, "/home/summit/DroneIndicator/leftGFSK.dat", False) self.blocks_file_sink_0_0_1.set_unbuffered(False) self.blocks_file_sink_0_0_0 = blocks.file_sink(gr.sizeof_float*1, "/home/summit/DroneIndicator/rightFRMS.dat", False) self.blocks_file_sink_0_0_0.set_unbuffered(False) self.blocks_file_sink_0_0 = blocks.file_sink(gr.sizeof_float*1, "/home/summit/DroneIndicator/leftFRMS.dat", False) self.blocks_file_sink_0_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_skiphead_0, 0)) self.connect((self.blocks_multiply_const_vxx_0_0, 0), (self.blocks_skiphead_0_0, 0)) self.connect((self.blocks_rms_xx_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_rms_xx_0_0, 0), (self.blocks_multiply_const_vxx_0_0, 0)) self.connect((self.blocks_skiphead_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.blocks_skiphead_0_0, 0), (self.rational_resampler_xxx_0_0, 0)) self.connect((self.blocks_skiphead_0_1, 0), (self.blocks_file_sink_0_0_1, 0)) self.connect((self.blocks_skiphead_0_1, 0), (self.qtgui_number_sink_0_0_1, 0)) self.connect((self.blocks_skiphead_0_1_0, 0), (self.blocks_file_sink_0_0_1_0, 0)) self.connect((self.blocks_skiphead_0_1_0, 0), (self.qtgui_number_sink_0_0_1_0, 0)) self.connect((self.blocks_stream_to_vector_0_0, 0), (self.fft_vxx_0, 0)) self.connect((self.blocks_stream_to_vector_0_0_0, 0), (self.fft_vxx_0_0, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_rms_xx_0, 0)) self.connect((self.blocks_vector_to_stream_0_0, 0), (self.blocks_rms_xx_0_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blocks_skiphead_0_1, 0)) self.connect((self.digital_gfsk_demod_0_0, 0), (self.blocks_skiphead_0_1_0, 0)) self.connect((self.fft_vxx_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.fft_vxx_0_0, 0), (self.blocks_vector_to_stream_0_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.blocks_file_sink_0_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.qtgui_number_sink_0_0, 0)) self.connect((self.rational_resampler_xxx_0_0, 0), (self.blocks_file_sink_0_0_0, 0)) self.connect((self.rational_resampler_xxx_0_0, 0), (self.qtgui_number_sink_0_0_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blocks_stream_to_vector_0_0, 0)) self.connect((self.uhd_usrp_source_0, 1), (self.blocks_stream_to_vector_0_0_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.uhd_usrp_source_0, 1), (self.digital_gfsk_demod_0_0, 0))
def __init__(self): gr.top_block.__init__(self, "Fsk Receiver") ################################################## # Variables ################################################## self.transistion = transistion = 100 self.sps = sps = 8 self.sideband_rx = sideband_rx = 500 self.sideband = sideband = 500 self.samp_rate = samp_rate = 48000 self.interpolation = interpolation = 1 self.decimation = decimation = 1 self.carrier = carrier = 10000 ################################################## # Blocks ################################################## self.rational_resampler_xxx_0_0_0 = filter.rational_resampler_ccc( interpolation=decimation, decimation=100, taps=None, fractional_bw=None, ) self.rational_resampler_xxx_0_0 = filter.rational_resampler_ccc( interpolation=decimation, decimation=180, taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter_xxx_0_0_0 = filter.freq_xlating_fir_filter_ccc( 1, (filter.firdes.low_pass(1, samp_rate * 10, sideband_rx, 1000)), carrier, samp_rate) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=sps, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) script, inputwav, outputBinary = argv self.blocks_wavfile_source_0 = blocks.wavfile_source(inputwav, False) self.blocks_throttle_1_0_0 = blocks.throttle(gr.sizeof_gr_complex * 1, samp_rate, True) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char * 1, outputBinary, False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.blocks_float_to_complex_0, 0), (self.blocks_throttle_1_0_0, 0)) self.connect((self.blocks_throttle_1_0_0, 0), (self.freq_xlating_fir_filter_xxx_0_0_0, 0)) self.connect((self.blocks_wavfile_source_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0_0_0, 0), (self.rational_resampler_xxx_0_0, 0)) self.connect((self.rational_resampler_xxx_0_0, 0), (self.rational_resampler_xxx_0_0_0, 0)) self.connect((self.rational_resampler_xxx_0_0_0, 0), (self.digital_gfsk_demod_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Ud R") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.transistion = transistion = 100 self.sps = sps = 9 self.sideband_rx = sideband_rx = 1000 self.sideband = sideband = 1000 self.samp_rate = samp_rate = 48000 self.payload = payload = 5 self.interpolation = interpolation = 500 self.carrier = carrier = 23000 ################################################## # Blocks ################################################## self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title='FFT Plot', peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=1, decimation=500, taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter_xxx_0_0 = filter.freq_xlating_fir_filter_ccc(1, (filter.firdes.low_pass(1, samp_rate, sideband_rx,100)), carrier, samp_rate) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=sps, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blks2_tcp_sink_0 = grc_blks2.tcp_sink( itemsize=gr.sizeof_char*1, addr='127.0.0.1', port=10005, server=True, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) self.audio_source_0 = audio.source(48000, '', True) ################################################## # Connections ################################################## self.connect((self.audio_source_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.blks2_tcp_sink_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.freq_xlating_fir_filter_xxx_0_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.digital_gfsk_demod_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Bluetooth LE Receiver") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.transition_width = transition_width = 300e3 self.sample_rate = sample_rate = 4e6 self.rf_channel = rf_channel = 0 self.data_rate = data_rate = 1e6 self.cutoff_freq = cutoff_freq = 850e3 self.ble_channel_spacing = ble_channel_spacing = 2e6 self.ble_base_freq = ble_base_freq = 2402e6 self.squelch_threshold = squelch_threshold = -100 self.rf_gain = rf_gain = 10 self.lowpass_filter = lowpass_filter = firdes.low_pass( 1, sample_rate, cutoff_freq, transition_width, firdes.WIN_HAMMING, 6.76) self.gmsk_sps = gmsk_sps = int(sample_rate / data_rate) self.gmsk_omega_limit = gmsk_omega_limit = 0.035 self.gmsk_mu = gmsk_mu = 0.5 self.gmsk_gain_mu = gmsk_gain_mu = 0.7 self.freq_offset = freq_offset = 1e6 self.freq = freq = ble_base_freq + (ble_channel_spacing * rf_channel) self.dv_channel = dv_channel = 37 self.accaddr = accaddr = int("0x8E89BED6", 16) ################################################## # Blocks ################################################## self.zeromq_pub_msg_sink_0 = zeromq.pub_msg_sink("tcp://*:23333", 0) _squelch_threshold_sizer = wx.BoxSizer(wx.VERTICAL) self._squelch_threshold_text_box = forms.text_box( parent=self.GetWin(), sizer=_squelch_threshold_sizer, value=self.squelch_threshold, callback=self.set_squelch_threshold, label='squelch_threshold', converter=forms.int_converter(), proportion=0, ) self._squelch_threshold_slider = forms.slider( parent=self.GetWin(), sizer=_squelch_threshold_sizer, value=self.squelch_threshold, callback=self.set_squelch_threshold, minimum=-100, maximum=0, num_steps=1, style=wx.SL_VERTICAL, cast=int, proportion=1, ) self.Add(_squelch_threshold_sizer) self.osmosdr_source = osmosdr.source(args="numchan=" + str(1) + " " + "") self.osmosdr_source.set_sample_rate(sample_rate) self.osmosdr_source.set_center_freq(freq + freq_offset, 0) self.osmosdr_source.set_freq_corr(0, 0) self.osmosdr_source.set_dc_offset_mode(2, 0) self.osmosdr_source.set_iq_balance_mode(0, 0) self.osmosdr_source.set_gain_mode(False, 0) self.osmosdr_source.set_gain(rf_gain, 0) self.osmosdr_source.set_if_gain(20, 0) self.osmosdr_source.set_bb_gain(20, 0) self.osmosdr_source.set_antenna("", 0) self.osmosdr_source.set_bandwidth(0, 0) self.freq_xlating_fir_filter_lp = filter.freq_xlating_fir_filter_ccc( 1, (lowpass_filter), -freq_offset, sample_rate) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=int(sample_rate / 1e6), sensitivity=(3.1415926 / 2) / (sample_rate / 1e6), gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.analog_simple_squelch = analog.simple_squelch_cc(-350, 0.1) self.BLE_tools_pack_bin_to_byte_0 = BLE_tools.pack_bin_to_byte(0) self.BLE_tools_find_pack_by_preamble_0 = BLE_tools.find_pack_by_preamble( ) self.BLE_tools_BLE_pack_collect_0 = BLE_tools.BLE_pack_collect( dv_channel, str(hex(accaddr))[2:]) ################################################## # Connections ################################################## self.msg_connect((self.BLE_tools_BLE_pack_collect_0, 'out'), (self.BLE_tools_pack_bin_to_byte_0, 'in')) self.msg_connect((self.BLE_tools_find_pack_by_preamble_0, 'out'), (self.BLE_tools_BLE_pack_collect_0, 'in')) self.msg_connect((self.BLE_tools_pack_bin_to_byte_0, 'out'), (self.zeromq_pub_msg_sink_0, 'in')) self.connect((self.analog_simple_squelch, 0), (self.freq_xlating_fir_filter_lp, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.BLE_tools_find_pack_by_preamble_0, 0)) self.connect((self.freq_xlating_fir_filter_lp, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.osmosdr_source, 0), (self.analog_simple_squelch, 0))
def __init__(self): gr.top_block.__init__(self, "XN297 Demodulator") ################################################## # Variables ################################################## self.channel_spacing = channel_spacing = .5e6 self.channel = channel = 18 self.samp_rate = samp_rate = 2e6 self.hearthbeat = hearthbeat = 0 self.freq_offset = freq_offset = (channel_spacing / 2) + (channel_spacing * 0.1) self.freq_fine = freq_fine = 100e3 self.freq = freq = 2.4e9 + (channel * 1e6) self.channel_trans = channel_trans = channel_spacing * 0.5 self.bitrate = bitrate = 0 ################################################## # Blocks ################################################## self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer( ('localhost', 1235), 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.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + '') self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(freq + freq_offset + freq_fine, 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(0, 0) self.osmosdr_source_0.set_if_gain(27, 0) self.osmosdr_source_0.set_bb_gain(27, 0) self.osmosdr_source_0.set_antenna('', 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc( 1, (firdes.low_pass(1, samp_rate, channel_spacing, channel_trans, firdes.WIN_BLACKMAN, 6.76)), -freq_offset, samp_rate) self.digital_gfsk_demod_0_0 = digital.gfsk_demod( samples_per_symbol=int(samp_rate / 250e3), sensitivity=1, gain_mu=0.175, mu=0.05, omega_relative_limit=0.01, freq_error=0.0, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=int(samp_rate / 1e6), sensitivity=1, gain_mu=0.175, mu=0.05, omega_relative_limit=0.01, freq_error=0.0, verbose=False, log=False, ) self.digital_correlate_access_code_bb_0_0_0 = digital.correlate_access_code_bb( '011100010000111101010101', 0) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_char * 1, '127.0.0.1', 1234, 1472, True) self.bitrate_selector_0 = grc_blks2.selector( item_size=gr.sizeof_char * 1, num_inputs=2, num_outputs=1, input_index=bitrate, output_index=0, ) self.bitrate_selector = grc_blks2.selector( item_size=gr.sizeof_gr_complex * 1, num_inputs=1, num_outputs=2, input_index=0, output_index=bitrate, ) ################################################## # Connections ################################################## self.connect((self.bitrate_selector, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.bitrate_selector, 1), (self.digital_gfsk_demod_0_0, 0)) self.connect((self.bitrate_selector_0, 0), (self.digital_correlate_access_code_bb_0_0_0, 0)) self.connect((self.digital_correlate_access_code_bb_0_0_0, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.bitrate_selector_0, 0)) self.connect((self.digital_gfsk_demod_0_0, 0), (self.bitrate_selector_0, 1)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.bitrate_selector, 0)) self.connect((self.osmosdr_source_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0))
def __init__(self): gr.top_block.__init__(self, "Bench Com Test") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 195312 self.baud = baud = 9600 self.tx_freq = tx_freq = 430e6 self.samp_per_sym = samp_per_sym = samp_rate/baud self.rx_freq = rx_freq = 430e6 self.gain = gain = 0 self.bandwidth = bandwidth = 10 self.tx_addr = "192.168.10.3" self.rx_addr = "192.168.10.2" ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("addr=192.168.10.3", "addr=192.168.10.2")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(rx_freq, 0) self.uhd_usrp_source_0.set_gain(gain, 0) self.uhd_usrp_source_0.set_antenna("RX2", 0) self.uhd_usrp_source_0.set_bandwidth(bandwidth, 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("addr=192.168.10.2", "addr=192.168.10.3")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq(tx_freq, 0) self.uhd_usrp_sink_0.set_gain(gain, 0) self.uhd_usrp_sink_0.set_antenna("TX/RX", 0) self.uhd_usrp_sink_0.set_bandwidth(bandwidth, 0) self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=samp_per_sym, sensitivity=1.0, bt=0.35, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=samp_per_sym, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.8, )) self.Interfaces_length_framing_source_b_0 = Interfaces.length_framing_source_b("GP", True) self.Interfaces_length_framing_sink_b_0 = Interfaces.length_framing_sink_b("GP", True) ################################################## # Connections ################################################## self.connect((self.Interfaces_length_framing_source_b_0, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.Interfaces_length_framing_sink_b_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.digital_gfsk_demod_0, 0))
def __init__(self): gr.top_block.__init__(self, "Gfsk Loopback") Qt.QWidget.__init__(self) self.setWindowTitle("Gfsk Loopback") qtgui.util.check_set_qss() try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "gfsk_loopback") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.sps = sps = 4 self.samp_rate = samp_rate = 32000 self.noise_volt = noise_volt = 0.0001 self.freq = freq = 500 self.fm_sensitivity = fm_sensitivity = 1.0 ################################################## # Blocks ################################################## self._noise_volt_range = Range(0, 1, 0.01, 0.0001, 200) self._noise_volt_win = RangeWidget(self._noise_volt_range, self.set_noise_volt, 'Channel: Noise Voltage', "slider", float) self.top_grid_layout.addWidget(self._noise_volt_win, 0, 0, 1, 1) for r in range(0, 1): self.top_grid_layout.setRowStretch(r, 1) for c in range(0, 1): self.top_grid_layout.setColumnStretch(c, 1) self._freq_range = Range(0, 500, 1, 500, 200) self._freq_win = RangeWidget(self._freq_range, self.set_freq, "freq", "counter_slider", float) self.top_grid_layout.addWidget(self._freq_win) self.qtgui_time_sink_x_1_0 = qtgui.time_sink_f( 1024, #size samp_rate, #samp_rate '', #name 1 #number of inputs ) self.qtgui_time_sink_x_1_0.set_update_time(0.10) self.qtgui_time_sink_x_1_0.set_y_axis(-1, 1) self.qtgui_time_sink_x_1_0.set_y_label('Amplitude', "") self.qtgui_time_sink_x_1_0.enable_tags(-1, True) self.qtgui_time_sink_x_1_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self.qtgui_time_sink_x_1_0.enable_autoscale(False) self.qtgui_time_sink_x_1_0.enable_grid(False) self.qtgui_time_sink_x_1_0.enable_axis_labels(True) self.qtgui_time_sink_x_1_0.enable_control_panel(False) self.qtgui_time_sink_x_1_0.enable_stem_plot(False) if not True: self.qtgui_time_sink_x_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_1_0.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_time_sink_x_1_0.set_line_label(i, labels[i]) self.qtgui_time_sink_x_1_0.set_line_width(i, widths[i]) self.qtgui_time_sink_x_1_0.set_line_color(i, colors[i]) self.qtgui_time_sink_x_1_0.set_line_style(i, styles[i]) self.qtgui_time_sink_x_1_0.set_line_marker(i, markers[i]) self.qtgui_time_sink_x_1_0.set_line_alpha(i, alphas[i]) self._qtgui_time_sink_x_1_0_win = sip.wrapinstance( self.qtgui_time_sink_x_1_0.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_time_sink_x_1_0_win) self.qtgui_time_sink_x_1 = qtgui.time_sink_f( 1024, #size samp_rate, #samp_rate '', #name 1 #number of inputs ) self.qtgui_time_sink_x_1.set_update_time(0.10) self.qtgui_time_sink_x_1.set_y_axis(-1, 1) self.qtgui_time_sink_x_1.set_y_label('Amplitude', "") self.qtgui_time_sink_x_1.enable_tags(-1, True) self.qtgui_time_sink_x_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self.qtgui_time_sink_x_1.enable_autoscale(False) self.qtgui_time_sink_x_1.enable_grid(False) self.qtgui_time_sink_x_1.enable_axis_labels(True) self.qtgui_time_sink_x_1.enable_control_panel(False) self.qtgui_time_sink_x_1.enable_stem_plot(False) if not True: self.qtgui_time_sink_x_1.disable_legend() labels = ['', '', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = [ "blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "blue" ] styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in xrange(1): if len(labels[i]) == 0: self.qtgui_time_sink_x_1.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_time_sink_x_1.set_line_label(i, labels[i]) self.qtgui_time_sink_x_1.set_line_width(i, widths[i]) self.qtgui_time_sink_x_1.set_line_color(i, colors[i]) self.qtgui_time_sink_x_1.set_line_style(i, styles[i]) self.qtgui_time_sink_x_1.set_line_marker(i, markers[i]) self.qtgui_time_sink_x_1.set_line_alpha(i, alphas[i]) self._qtgui_time_sink_x_1_win = sip.wrapinstance( self.qtgui_time_sink_x_1.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_time_sink_x_1_win) self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=sps, sensitivity=fm_sensitivity, bt=0.35, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=sps, sensitivity=fm_sensitivity, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.channels_channel_model_0 = channels.channel_model( noise_voltage=noise_volt, frequency_offset=4000, epsilon=1.0, taps=(1.0, ), noise_seed=0, block_tags=False) self.blocks_throttle_0_0 = blocks.throttle(gr.sizeof_float * 1, samp_rate, True) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_f( grc_blks2.packet_encoder( samples_per_symbol=sps, bits_per_symbol=1, preamble='', access_code='', pad_for_usrp=True, ), payload_length=0, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) self.analog_sig_source_x_0 = analog.sig_source_f( samp_rate, analog.GR_COS_WAVE, freq, 1, 0) self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf(1) ################################################## # Connections ################################################## self.connect((self.analog_quadrature_demod_cf_0, 0), (self.qtgui_time_sink_x_1_0, 0)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_throttle_0_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.qtgui_time_sink_x_1, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.blocks_throttle_0_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.analog_quadrature_demod_cf_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.channels_channel_model_0, 0))
def __init__(self,samp_rate=48000,tx_gain=1,rx_gain=1): gr.hier_block2.__init__( self, "XCEIVER", # input signature, # Port 1 = audio in # 2 = frame in gr.io_signaturev(2, 2, [gr.sizeof_float, gr.sizeof_char]), # output signature # Port 1 = audio out # 2 = frame out # 3 = receive filter output gr.io_signaturev(3, 3, [gr.sizeof_float, gr.sizeof_char, gr.sizeof_gr_complex])) ####################################################################### # Variables self.tx_gain = tx_gain self.transition = 50 # samples_per_symbol self.sps = 8 self.sideband_tx = 800 self.sideband_rx = 800 self.samp_rate = samp_rate self.interpolation = 100 # w.r.t. transmitter self.carrier = 8000 # Hz # sensitivity is pi * modulation_index/samples_per_symbol self.sensitivity = (math.pi*0.6)/self.sps ####################################################################### # Receiver self.blocks_float_to_complex_0 = blocks.float_to_complex(1) # Construct FIR filters with the given taps and a composite frequency # translation that shifts center_freq down to zero Hz. The frequency # translation logically comes before the filtering operation. # Parameters # decimation set the integer decimation rate # taps a vector/list of taps of type gr_complex # center_freq Center frequency of signal to down convert from (Hz) # Band pass filter (centered at carrier, no down conversion) self.freq_xlating_fir_filter_BP = \ filter.freq_xlating_fir_filter_ccc( \ 1, \ (firdes.band_pass (1,self.samp_rate,self.carrier-self.sideband_rx, \ self.carrier+self.sideband_rx,self.transition)), \ 0, \ self.samp_rate) # Low pass filter (centered at carrier, with down conversion to zero Hz) self.freq_xlating_fir_filter_LP = \ filter.freq_xlating_fir_filter_ccc( \ 1, \ (filter.firdes.low_pass(1,self.samp_rate, self.sideband_rx,self.transition)), self.carrier, \ self.samp_rate) self.rational_resampler_R = filter.rational_resampler_ccc( interpolation=1, decimation=self.interpolation, taps=None, fractional_bw=None, ) # input is the complex modulated signal at baseband. # output is a stream of bits packed 1 bit per byte (the LSB) # gain_mu: controls rate of mu adjustment (float) # mu: fractional delay [0.0, 1.0] (float) # omega_relative_limit: sets max variation in omega (float, typically 0.000200 (200 ppm)) # freq_error: bit rate error as a fraction self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=self.sps, sensitivity=self.sensitivity, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.connect((self, 0), \ (self.blocks_float_to_complex_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), \ (self.freq_xlating_fir_filter_BP, 0)) self.connect((self.freq_xlating_fir_filter_BP, 0), \ (self.freq_xlating_fir_filter_LP, 0)) self.connect((self.freq_xlating_fir_filter_LP, 0), (self.rational_resampler_R, 0)) self.connect((self.rational_resampler_R, 0), \ (self.digital_gfsk_demod_0, 0)) self.connect((self.freq_xlating_fir_filter_LP, 0), \ (self, 2)) self.connect((self.digital_gfsk_demod_0, 0), \ (self, 1)) ####################################################################### # Transmitter # Gaussian Frequency Shift Key (GFSK) modulator # input is a byte stream (unsigned char) and the # output is the complex modulated signal at baseband. self.digital_gfsk_mod = digital.gfsk_mod( samples_per_symbol=self.sps, sensitivity=self.sensitivity, bt=0.35, # Gaussian filter bandwidth * symbol time verbose=False, log=False, ) self.rational_resampler = filter.rational_resampler_ccc( # assuming sing at 48,000 samples/sec # yields (8 samples/symbol*1800)/48,000 samples/sec=3 symbols/sec interpolation=self.interpolation, decimation=1, taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter = \ filter.freq_xlating_fir_filter_ccc( \ 1, \ (firdes.band_pass (0.5,self.samp_rate,self.carrier-self.sideband_tx, \ self.carrier+self.sideband_tx,self.transition)), \ -self.carrier, \ self.samp_rate) self.blocks_complex_to_real = blocks.complex_to_real(1) self.blocks_multiply_const = blocks.multiply_const_vff((self.tx_gain,)) self.blocks_throttle = blocks.throttle(gr.sizeof_gr_complex*1,self.samp_rate,True) # Connections self.connect((self, 1), \ (self.digital_gfsk_mod, 0)) self.connect((self.digital_gfsk_mod, 0), \ (self.rational_resampler, 0)) self.connect((self.rational_resampler, 0), (self.freq_xlating_fir_filter, 0)) self.connect((self.freq_xlating_fir_filter, 0), \ (self.blocks_throttle, 0)) self.connect((self.blocks_throttle, 0), \ (self.blocks_complex_to_real, 0)) self.connect((self.blocks_complex_to_real, 0), \ (self.blocks_multiply_const, 0)) self.connect((self.blocks_multiply_const, 0), \ (self, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="rx") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 48000 ################################################## # Blocks ################################################## self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.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(100e6, 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) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=1, decimation=500, taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(1, (), 23000, samp_rate) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=9, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, "/Users/majora/Documents/output.txt", False) self.blocks_file_sink_0.set_unbuffered(False) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_c(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0))
def __init__(self, samp_rate=48000, tx_gain=1, rx_gain=1): gr.hier_block2.__init__( self, "XCEIVER", # input signature, # Port 1 = audio in (left) # 2 = audio in (right) # 3 = frame in gr.io_signaturev( 3, 3, [gr.sizeof_float, gr.sizeof_float, gr.sizeof_char]), # output signature # Port 1 = audio out # 2 = frame out # 3 = receive filter output gr.io_signaturev( 3, 3, [gr.sizeof_float, gr.sizeof_char, gr.sizeof_gr_complex])) ####################################################################### # Variables self.tx_gain = tx_gain self.transition = 1000 # samples_per_symbol self.sps = 8 self.sideband_tx = 500 self.sideband_rx = 500 self.samp_rate = samp_rate self.interpolation = 100 # w.r.t. transmitter self.carrier = 8000 # Hz # sensitivity is pi * modulation_index/samples_per_symbol self.sensitivity = (math.pi * 0.6) / self.sps ####################################################################### # Receiver # convert each float number from the audio source to a complex number self.blocks_float_to_complex = blocks.float_to_complex(1) self.freq_xlating_fir_filter_R = \ filter.freq_xlating_fir_filter_ccc( \ 1, \ (firdes.band_pass (0.5,self.samp_rate,self.carrier-self.sideband_rx, \ self.carrier+self.sideband_rx,self.transition)), \ 0, \ self.samp_rate) # see transmitter for the calculation of signal rate, in symbol/second. self.rational_resampler_R = filter.rational_resampler_ccc( interpolation=1, # always one here decimation=1, taps=None, fractional_bw=None, ) # input is the complex modulated signal at baseband. # output is a stream of bits packed 1 bit per byte (the LSB) self.digital_gfsk_demod = digital.gfsk_demod( samples_per_symbol=self.sps * self.interpolation, sensitivity=1, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.null_sink = blocks.null_sink(gr.sizeof_float) # connect audio in (left) self.connect((self, 0), \ (self.blocks_float_to_complex, 0)) # connect audio in (right) self.connect((self, 1), \ (self.null_sink, 0)) # (self.blocks_float_to_complex, 1)) self.connect((self.blocks_float_to_complex, 0), \ (self.freq_xlating_fir_filter_R, 0)) self.connect((self.freq_xlating_fir_filter_R, 0), (self.rational_resampler_R, 0)) self.connect((self.rational_resampler_R, 0), \ (self.digital_gfsk_demod, 0)) # connect resampler (filter) output to frame out port self.connect((self.rational_resampler_R, 0), \ (self, 2)) # connect demodulator output to frame out port self.connect((self.digital_gfsk_demod, 0), \ (self, 1)) ####################################################################### # Transmitter # Gaussian Frequency Shift Key (GFSK) modulator # input is a byte stream (unsigned char) and the # output is the complex modulated signal at baseband. self.digital_gfsk_mod = digital.gfsk_mod( samples_per_symbol=self.sps, sensitivity=self.sensitivity, bt=0.35, # Gaussian filter bandwidth * symbol time verbose=False, log=False, ) self.rational_resampler_T = filter.rational_resampler_ccc( # Calculation of signal rate, in symbol/second: # self.samp_rate samples/sec / # (self.sps samples/symbol*self.interpolation) = N symbols/sec # With samp_rate = 48,000, self.sps = 8 and # self.interpolation = 100, we have 60 = symbols/sec interpolation=self.interpolation, decimation=1, # always one here taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter = \ filter.freq_xlating_fir_filter_ccc( \ 1, \ (firdes.band_pass (0.5,self.samp_rate,self.carrier-self.sideband_tx, \ self.carrier+self.sideband_tx,self.transition)), \ self.carrier, \ self.samp_rate) self.blocks_complex_to_real = blocks.complex_to_real(1) self.blocks_multiply_const = blocks.multiply_const_vff( (self.tx_gain, )) self.blocks_throttle = blocks.throttle(gr.sizeof_gr_complex * 1, self.samp_rate, True) # Connections # frame in port to modulator self.connect((self, 2), \ (self.digital_gfsk_mod, 0)) self.connect((self.digital_gfsk_mod, 0), \ (self.rational_resampler_T, 0)) self.connect((self.rational_resampler_T, 0), (self.freq_xlating_fir_filter, 0)) self.connect((self.freq_xlating_fir_filter, 0), \ (self.blocks_throttle, 0)) self.connect((self.blocks_throttle, 0), \ (self.blocks_complex_to_real, 0)) self.connect((self.blocks_complex_to_real, 0), \ (self.blocks_multiply_const, 0)) # Connect transmitter output to audio out port self.connect((self.blocks_multiply_const, 0), \ (self, 0))
def __init__(self): gr.top_block.__init__(self, "Not titled yet") Qt.QWidget.__init__(self) self.setWindowTitle("Not titled yet") 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", "helo_demod") try: if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): self.restoreGeometry( self.settings.value("geometry").toByteArray()) else: self.restoreGeometry(self.settings.value("geometry")) except: pass ################################################## # Variables ################################################## self.samp_rate = samp_rate = 44100 self.interp = interp = 20 self.dec = dec = 147 self.tw = tw = 44 self.real_rate = real_rate = samp_rate / dec * interp self.offset = offset = -1660 self.bw = bw = 756 ################################################## # Blocks ################################################## self._tw_range = Range(samp_rate / 2 / 1024, samp_rate / 2, 1, 44, 200) self._tw_win = RangeWidget(self._tw_range, self.set_tw, 'TW', "counter_slider", float) self.top_grid_layout.addWidget(self._tw_win) self._offset_range = Range(-samp_rate / 2, samp_rate / 2, 1, -1660, 200) self._offset_win = RangeWidget(self._offset_range, self.set_offset, 'Offset', "counter_slider", float) self.top_grid_layout.addWidget(self._offset_win) self._bw_range = Range(samp_rate / 2 / 1024, samp_rate / 2, 1, 756, 200) self._bw_win = RangeWidget(self._bw_range, self.set_bw, 'BW', "counter_slider", float) self.top_grid_layout.addWidget(self._bw_win) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=interp, decimation=dec, taps=None, fractional_bw=None) self.qtgui_time_sink_x_0 = qtgui.time_sink_f( 1024, #size real_rate, #samp_rate "", #name 1 #number of inputs ) self.qtgui_time_sink_x_0.set_update_time(0.10) self.qtgui_time_sink_x_0.set_y_axis(-1, 1) self.qtgui_time_sink_x_0.set_y_label('Amplitude', "") self.qtgui_time_sink_x_0.enable_tags(True) self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self.qtgui_time_sink_x_0.enable_autoscale(False) self.qtgui_time_sink_x_0.enable_grid(False) self.qtgui_time_sink_x_0.enable_axis_labels(True) self.qtgui_time_sink_x_0.enable_control_panel(False) self.qtgui_time_sink_x_0.enable_stem_plot(False) labels = [ 'Signal 1', 'Signal 2', 'Signal 3', 'Signal 4', 'Signal 5', 'Signal 6', 'Signal 7', 'Signal 8', 'Signal 9', 'Signal 10' ] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = [ 'blue', 'red', 'green', 'black', 'cyan', 'magenta', 'yellow', 'dark red', 'dark green', 'dark blue' ] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1] for i in range(1): if len(labels[i]) == 0: self.qtgui_time_sink_x_0.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_time_sink_x_0.set_line_label(i, labels[i]) self.qtgui_time_sink_x_0.set_line_width(i, widths[i]) self.qtgui_time_sink_x_0.set_line_color(i, colors[i]) self.qtgui_time_sink_x_0.set_line_style(i, styles[i]) self.qtgui_time_sink_x_0.set_line_marker(i, markers[i]) self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i]) self._qtgui_time_sink_x_0_win = sip.wrapinstance( self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_win) self.qtgui_freq_sink_x_1 = qtgui.freq_sink_f( 1024, #size firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc real_rate, #bw "", #name 1) self.qtgui_freq_sink_x_1.set_update_time(0.10) self.qtgui_freq_sink_x_1.set_y_axis(-140, 10) self.qtgui_freq_sink_x_1.set_y_label('Relative Gain', 'dB') self.qtgui_freq_sink_x_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "") self.qtgui_freq_sink_x_1.enable_autoscale(False) self.qtgui_freq_sink_x_1.enable_grid(False) self.qtgui_freq_sink_x_1.set_fft_average(1.0) self.qtgui_freq_sink_x_1.enable_axis_labels(True) self.qtgui_freq_sink_x_1.enable_control_panel(False) self.qtgui_freq_sink_x_1.set_plot_pos_half(not False) labels = ['', '', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = [ "blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "dark blue" ] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in range(1): if len(labels[i]) == 0: self.qtgui_freq_sink_x_1.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_freq_sink_x_1.set_line_label(i, labels[i]) self.qtgui_freq_sink_x_1.set_line_width(i, widths[i]) self.qtgui_freq_sink_x_1.set_line_color(i, colors[i]) self.qtgui_freq_sink_x_1.set_line_alpha(i, alphas[i]) self._qtgui_freq_sink_x_1_win = sip.wrapinstance( self.qtgui_freq_sink_x_1.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_freq_sink_x_1_win) self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c( 1024, #size firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc real_rate, #bw "", #name 1) self.qtgui_freq_sink_x_0.set_update_time(0.10) self.qtgui_freq_sink_x_0.set_y_axis(-140, 10) self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dB') self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "") self.qtgui_freq_sink_x_0.enable_autoscale(False) self.qtgui_freq_sink_x_0.enable_grid(False) self.qtgui_freq_sink_x_0.set_fft_average(1.0) self.qtgui_freq_sink_x_0.enable_axis_labels(True) self.qtgui_freq_sink_x_0.enable_control_panel(True) labels = ['', '', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = [ "blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "dark blue" ] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in range(1): if len(labels[i]) == 0: self.qtgui_freq_sink_x_0.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_freq_sink_x_0.set_line_label(i, labels[i]) self.qtgui_freq_sink_x_0.set_line_width(i, widths[i]) self.qtgui_freq_sink_x_0.set_line_color(i, colors[i]) self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i]) self._qtgui_freq_sink_x_0_win = sip.wrapinstance( self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_freq_sink_x_0_win) self.low_pass_filter_0 = filter.fir_filter_ccf( 1, firdes.low_pass(1, samp_rate, bw, tw, firdes.WIN_HAMMING, 6.76)) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=5, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False) self.blocks_uchar_to_float_0 = blocks.uchar_to_float() self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char * 1, samp_rate * 100, True) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_char * 1) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) self.blocks_multiply_conjugate_cc_0 = blocks.multiply_conjugate_cc(1) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_file_source_0 = blocks.file_source( gr.sizeof_char * 1, '/opt/git/HelicopterDemod/example_input_data__44100Hz_stereo.u8', False, 0, 0) self.blocks_file_source_0.set_begin_tag(pmt.PMT_NIL) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_char * 1, '/opt/git/HelicopterDemod/output_bits', False) self.blocks_file_sink_0.set_unbuffered(False) self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex * 1, 1) self.blocks_deinterleave_0 = blocks.deinterleave(gr.sizeof_char * 1, 1) self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) self.analog_sig_source_x_0 = analog.sig_source_c( samp_rate, analog.GR_COS_WAVE, offset, 1, 0, 0) self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf(1) self.analog_const_source_x_0 = analog.sig_source_f( 0, analog.GR_CONST_WAVE, 0, 0, 0) ################################################## # Connections ################################################## self.connect((self.analog_const_source_x_0, 0), (self.blocks_float_to_complex_0, 1)) self.connect((self.analog_quadrature_demod_cf_0, 0), (self.qtgui_time_sink_x_0, 0)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.blocks_complex_to_mag_0, 0), (self.qtgui_freq_sink_x_1, 0)) self.connect((self.blocks_deinterleave_0, 0), (self.blocks_null_sink_0, 0)) self.connect((self.blocks_deinterleave_0, 1), (self.blocks_uchar_to_float_0, 0)) self.connect((self.blocks_delay_0, 0), (self.blocks_multiply_conjugate_cc_0, 1)) self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.blocks_multiply_xx_0, 0)) self.connect((self.blocks_multiply_conjugate_cc_0, 0), (self.blocks_complex_to_mag_0, 0)) self.connect((self.blocks_multiply_xx_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_deinterleave_0, 0)) self.connect((self.blocks_uchar_to_float_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.analog_quadrature_demod_cf_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.blocks_delay_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.blocks_multiply_conjugate_cc_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.qtgui_freq_sink_x_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Ud R") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.transistion = transistion = 100 self.sps = sps = 9 self.sideband_rx = sideband_rx = 1000 self.sideband = sideband = 1000 self.samp_rate = samp_rate = 48000 self.payload = payload = 5 self.interpolation = interpolation = 500 self.carrier = carrier = 23000 ################################################## # Blocks ################################################## self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=1, decimation=500, taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter_xxx_0_0 = filter.freq_xlating_fir_filter_ccc( 1, (filter.firdes.low_pass(1, samp_rate, sideband_rx, 100)), carrier, samp_rate) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=sps, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blks2_tcp_sink_0 = grc_blks2.tcp_sink( itemsize=gr.sizeof_char * 1, addr="127.0.0.1", port=10005, server=True, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) self.audio_source_0 = audio.source(48000, "", True) ################################################## # Connections ################################################## self.connect((self.freq_xlating_fir_filter_xxx_0_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.freq_xlating_fir_filter_xxx_0_0, 0)) self.connect((self.audio_source_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.blks2_tcp_sink_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.digital_gfsk_demod_0, 0))
def __init__( self, carrier, sideband, transition, sps, interpolation, lomicdev, listen=False): gr.top_block.__init__(self, "Receive block") ################################################## # Variables ################################################## self.samp_rate = SAMPLE_RATE self.carrier = carrier self.sideband = sideband self.transition = transition self.sps = sps self.interpolation = interpolation ################################################## # Blocks ################################################## self.rational_resampler_xxx_0_0_0 = filter.rational_resampler_ccc( interpolation=1, decimation=interpolation, taps=None, fractional_bw=None, ) self.freq_xlating_fir_filter_xxx_0_0 = filter.freq_xlating_fir_filter_ccc(1, (firdes.low_pass(1,SAMPLE_RATE,sideband,transition)), carrier, SAMPLE_RATE) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=sps, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) self.audio_source_0 = audio.source(SAMPLE_RATE, lomicdev, True) if listen: self.audio_sink_0_tmp = audio.sink(SAMPLE_RATE, 'plughw:0,0', True) self.fft_filter_xxx_1 = filter.fft_filter_ccc(1, (firdes.complex_band_pass_2(1.0,SAMPLE_RATE,carrier-sideband,carrier+sideband,transition,100,firdes.WIN_HAMMING,6.76)), 1) self.fft_filter_xxx_1.declare_sample_delay(0) self.sink_queue = gr.msg_queue() self.msg_sink = blocks.message_sink(gr.sizeof_char, self.sink_queue, False) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.msg_sink, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0_0, 0), (self.rational_resampler_xxx_0_0_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.audio_source_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.fft_filter_xxx_1, 0)) self.connect((self.fft_filter_xxx_1, 0), (self.freq_xlating_fir_filter_xxx_0_0, 0)) self.connect((self.rational_resampler_xxx_0_0_0, 0), (self.digital_gfsk_demod_0, 0)) # sound playback if listen: self.connect((self.audio_source_0, 0), (self.audio_sink_0_tmp, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="limeReceiver") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 2e6 self.freq = freq = 2350e6 ################################################## # Blocks ################################################## self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=freq, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=True, avg_alpha=.1, title='FFT Plot', peak_hold=True, ) self.Add(self.wxgui_fftsink2_0.win) self.limesdr_source_0 = limesdr.source('1D424BDA12AF19', 1, 1, 0, 0, '', freq, samp_rate, 0, 0, 10e6, 0, 10e6, 3, 2, 2, 1, 5e6, 1, 5e6, 0, 0, 0, 0, 60, 30, 0, 0, 0, 0) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=4, sensitivity=1.012, gain_mu=0, mu=0, omega_relative_limit=0, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_char * 1, '/home/eaglesat/dataout.txt', False) self.blocks_file_sink_0.set_unbuffered(False) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.limesdr_source_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.limesdr_source_0, 0), (self.wxgui_fftsink2_0, 0))
def __init__(self): gr.top_block.__init__(self, "Bluetooth LE Receiver") ################################################## # Variables ################################################## self.transition_width = transition_width = 300e3 self.sample_rate = sample_rate = 4e6 self.data_rate = data_rate = 1e6 self.cutoff_freq = cutoff_freq = 2e6 self.ble_channel_spacing = ble_channel_spacing = 2e6 self.ble_channel = ble_channel = 12 self.ble_base_freq = ble_base_freq = 2402e6 self.squelch_threshold = squelch_threshold = -110 self.sensivity = sensivity = 1.0 self.rf_gain = rf_gain = 10 self.lowpass_filter = lowpass_filter = firdes.low_pass( 1, sample_rate, cutoff_freq, transition_width, firdes.WIN_HAMMING, 6.76) self.gfsk_sps = gfsk_sps = int(sample_rate / data_rate) self.gfsk_omega_limit = gfsk_omega_limit = 0.035 self.gfsk_mu = gfsk_mu = 0.5 self.gfsk_gain_mu = gfsk_gain_mu = 0.8 self.freq_offset = freq_offset = 0 self.freq = freq = ble_base_freq + (ble_channel_spacing * ble_channel) ################################################## # Message Queues ################################################## blocks_message_sink_0_msgq_out = virtual_sink_0_msgq_in = gr.msg_queue( 2) ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(sample_rate) self.uhd_usrp_source_0.set_center_freq(freq, 0) self.uhd_usrp_source_0.set_gain(rf_gain, 0) self.uhd_usrp_source_0.set_antenna('TX/RX', 0) self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc( 1, (lowpass_filter), 0, sample_rate) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=gfsk_sps, sensitivity=sensivity, gain_mu=gfsk_gain_mu, mu=gfsk_mu, omega_relative_limit=gfsk_omega_limit, freq_error=0.0, verbose=False, log=False, ) self.blocks_vector_sink_x_0 = blocks.vector_sink_b(1, 1024) self.blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb( 1, gr.GR_LSB_FIRST) self.blocks_message_sink_0 = blocks.message_sink( gr.sizeof_char * 1, blocks_message_sink_0_msgq_out, True) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_char * 1, '/Users/mmohamoud/software_defined_radios/ble_collect/demodulated_files/raw_stream', False) self.blocks_file_sink_0.set_unbuffered(False) self.analog_pwr_squelch_xx_0 = analog.pwr_squelch_cc( squelch_threshold, .1, 0, True) ################################################## # Connections ################################################## self.connect((self.analog_pwr_squelch_xx_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.blocks_message_sink_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.blocks_vector_sink_x_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blocks_unpacked_to_packed_xx_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.analog_pwr_squelch_xx_0, 0))
def __init__(self): gr.top_block.__init__(self, "Comms Signal Viewer") Qt.QWidget.__init__(self) self.setWindowTitle("Comms Signal Viewer") 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", "SignalViewer") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 20e6 self.recordBool = recordBool = True self.fskDemodBool = fskDemodBool = True self.freq = freq = 100e6 self.fmDemodBool = fmDemodBool = True ################################################## # Blocks ################################################## self._samp_rate_tool_bar = Qt.QToolBar(self) self._samp_rate_tool_bar.addWidget(Qt.QLabel("Sample Rate"+": ")) self._samp_rate_line_edit = Qt.QLineEdit(str(self.samp_rate)) self._samp_rate_tool_bar.addWidget(self._samp_rate_line_edit) self._samp_rate_line_edit.returnPressed.connect( lambda: self.set_samp_rate(eng_notation.str_to_num(self._samp_rate_line_edit.text().toAscii()))) self.top_grid_layout.addWidget(self._samp_rate_tool_bar, 4,1,1,2) _recordBool_check_box = Qt.QCheckBox("Don't Record IQ") self._recordBool_choices = {True: True, False: False} self._recordBool_choices_inv = dict((v,k) for k,v in self._recordBool_choices.iteritems()) self._recordBool_callback = lambda i: Qt.QMetaObject.invokeMethod(_recordBool_check_box, "setChecked", Qt.Q_ARG("bool", self._recordBool_choices_inv[i])) self._recordBool_callback(self.recordBool) _recordBool_check_box.stateChanged.connect(lambda i: self.set_recordBool(self._recordBool_choices[bool(i)])) self.top_grid_layout.addWidget(_recordBool_check_box, 6,4,1,1) self.main_tab = Qt.QTabWidget() self.main_tab_widget_0 = Qt.QWidget() self.main_tab_layout_0 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom, self.main_tab_widget_0) self.main_tab_grid_layout_0 = Qt.QGridLayout() self.main_tab_layout_0.addLayout(self.main_tab_grid_layout_0) self.main_tab.addTab(self.main_tab_widget_0, "PSD") self.main_tab_widget_1 = Qt.QWidget() self.main_tab_layout_1 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom, self.main_tab_widget_1) self.main_tab_grid_layout_1 = Qt.QGridLayout() self.main_tab_layout_1.addLayout(self.main_tab_grid_layout_1) self.main_tab.addTab(self.main_tab_widget_1, "Waterfall") self.top_grid_layout.addWidget(self.main_tab, 1,1,3,5) self._freq_layout = Qt.QHBoxLayout() self._freq_layout.addWidget(Qt.QLabel("Frequency"+": ")) class qwt_counter_pyslot(Qwt.QwtCounter): def __init__(self, parent=None): Qwt.QwtCounter.__init__(self, parent) @pyqtSlot('double') def setValue(self, value): super(Qwt.QwtCounter, self).setValue(value) self._freq_counter = qwt_counter_pyslot() self._freq_counter.setRange(10e6, 6e9, 0.5e6) self._freq_counter.setNumButtons(2) self._freq_counter.setMinimumWidth(200) self._freq_counter.setValue(self.freq) self._freq_layout.addWidget(self._freq_counter) self._freq_counter.valueChanged.connect(self.set_freq) self.top_grid_layout.addLayout(self._freq_layout, 4,3,1,3) self.volumeBlock = blocks.multiply_const_vff((100, )) self.recordIQ = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool(recordBool)) self.rational_resampler_xxx_0_0_0 = filter.rational_resampler_fff( interpolation=48, decimation=50, taps=None, fractional_bw=None, ) self.rational_resampler_xxx_0_0 = filter.rational_resampler_ccc( interpolation=1, decimation=4, taps=None, fractional_bw=None, ) self.qtgui_waterfall_sink_x_0 = qtgui.waterfall_sink_c( 1024*4, #size firdes.WIN_BLACKMAN_hARRIS, #wintype freq, #fc 1e6/4, #bw "", #name 1 #number of inputs ) self.qtgui_waterfall_sink_x_0.set_update_time(0.10) self.qtgui_waterfall_sink_x_0.enable_grid(False) if complex == type(float()): self.qtgui_waterfall_sink_x_0.set_plot_pos_half(not True) labels = ["", "", "", "", "", "", "", "", "", ""] colors = [5, 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.main_tab_layout_1.addWidget(self._qtgui_waterfall_sink_x_0_win) self.qtgui_time_sink_x_0 = qtgui.time_sink_c( 1024, #size samp_rate, #samp_rate "", #name 1 #number of inputs ) self.qtgui_time_sink_x_0.set_update_time(0.10) self.qtgui_time_sink_x_0.set_y_axis(-1, 1) self.qtgui_time_sink_x_0.set_y_label("Amplitude", "") self.qtgui_time_sink_x_0.enable_tags(-1, True) self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self.qtgui_time_sink_x_0.enable_autoscale(False) self.qtgui_time_sink_x_0.enable_grid(False) labels = ["", "", "", "", "", "", "", "", "", ""] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = ["blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "blue"] styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in xrange(2*1): if len(labels[i]) == 0: if(i % 2 == 0): self.qtgui_time_sink_x_0.set_line_label(i, "Re{{Data {0}}}".format(i/2)) else: self.qtgui_time_sink_x_0.set_line_label(i, "Im{{Data {0}}}".format(i/2)) else: self.qtgui_time_sink_x_0.set_line_label(i, labels[i]) self.qtgui_time_sink_x_0.set_line_width(i, widths[i]) self.qtgui_time_sink_x_0.set_line_color(i, colors[i]) self.qtgui_time_sink_x_0.set_line_style(i, styles[i]) self.qtgui_time_sink_x_0.set_line_marker(i, markers[i]) self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i]) self._qtgui_time_sink_x_0_win = sip.wrapinstance(self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_time_sink_x_0_win) self.qtgui_number_sink_0 = qtgui.number_sink( gr.sizeof_char, 0, qtgui.NUM_GRAPH_HORIZ, 1 ) self.qtgui_number_sink_0.set_update_time(0.10) self.qtgui_number_sink_0.set_title("") labels = ["", "", "", "", "", "", "", "", "", ""] units = ["", "", "", "", "", "", "", "", "", ""] colors = [("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black")] factor = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in xrange(1): self.qtgui_number_sink_0.set_min(i, -1) self.qtgui_number_sink_0.set_max(i, 1) self.qtgui_number_sink_0.set_color(i, colors[i][0], colors[i][1]) if len(labels[i]) == 0: self.qtgui_number_sink_0.set_label(i, "Data {0}".format(i)) else: self.qtgui_number_sink_0.set_label(i, labels[i]) self.qtgui_number_sink_0.set_unit(i, units[i]) self.qtgui_number_sink_0.set_factor(i, factor[i]) self.qtgui_number_sink_0.enable_autoscale(False) self._qtgui_number_sink_0_win = sip.wrapinstance(self.qtgui_number_sink_0.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_number_sink_0_win, 7,1,1,5) self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c( 1024*4, #size firdes.WIN_BLACKMAN_hARRIS, #wintype freq, #fc 1e6/4, #bw "", #name 1 #number of inputs ) self.qtgui_freq_sink_x_0.set_update_time(0.10) self.qtgui_freq_sink_x_0.set_y_axis(-140, 10) self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "") self.qtgui_freq_sink_x_0.enable_autoscale(False) self.qtgui_freq_sink_x_0.enable_grid(False) self.qtgui_freq_sink_x_0.set_fft_average(1.0) if complex == type(float()): self.qtgui_freq_sink_x_0.set_plot_pos_half(not True) labels = ["", "", "", "", "", "", "", "", "", ""] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = ["blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "dark blue"] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in xrange(1): if len(labels[i]) == 0: self.qtgui_freq_sink_x_0.set_line_label(i, "Data {0}".format(i)) else: self.qtgui_freq_sink_x_0.set_line_label(i, labels[i]) self.qtgui_freq_sink_x_0.set_line_width(i, widths[i]) self.qtgui_freq_sink_x_0.set_line_color(i, colors[i]) self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i]) self._qtgui_freq_sink_x_0_win = sip.wrapinstance(self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget) self.main_tab_layout_0.addWidget(self._qtgui_freq_sink_x_0_win) 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(2, 0) self.osmosdr_source_0.set_gain_mode(False, 0) self.osmosdr_source_0.set_gain(0, 0) self.osmosdr_source_0.set_if_gain(0, 0) self.osmosdr_source_0.set_bb_gain(0, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.low_pass_filter_0_0 = filter.fir_filter_ccf(1, firdes.low_pass( 1, samp_rate, 100e3, 1e6, firdes.WIN_HAMMING, 6.76)) _fskDemodBool_check_box = Qt.QCheckBox("Don't FSK Demod") self._fskDemodBool_choices = {True: True, False: False} self._fskDemodBool_choices_inv = dict((v,k) for k,v in self._fskDemodBool_choices.iteritems()) self._fskDemodBool_callback = lambda i: Qt.QMetaObject.invokeMethod(_fskDemodBool_check_box, "setChecked", Qt.Q_ARG("bool", self._fskDemodBool_choices_inv[i])) self._fskDemodBool_callback(self.fskDemodBool) _fskDemodBool_check_box.stateChanged.connect(lambda i: self.set_fskDemodBool(self._fskDemodBool_choices[bool(i)])) self.top_grid_layout.addWidget(_fskDemodBool_check_box, 6,3, 1,1) self.fskDemod = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool(fskDemodBool)) _fmDemodBool_check_box = Qt.QCheckBox("Don't FM Demod") self._fmDemodBool_choices = {True: True, False: False} self._fmDemodBool_choices_inv = dict((v,k) for k,v in self._fmDemodBool_choices.iteritems()) self._fmDemodBool_callback = lambda i: Qt.QMetaObject.invokeMethod(_fmDemodBool_check_box, "setChecked", Qt.Q_ARG("bool", self._fmDemodBool_choices_inv[i])) self._fmDemodBool_callback(self.fmDemodBool) _fmDemodBool_check_box.stateChanged.connect(lambda i: self.set_fmDemodBool(self._fmDemodBool_choices[bool(i)])) self.top_grid_layout.addWidget(_fmDemodBool_check_box, 6,2,1,1) self.fmDemod = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool(fmDemodBool)) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.audio_sink_0 = audio.sink(48000, "", True) self.analog_wfm_rcv_0 = analog.wfm_rcv( quad_rate=500e3, audio_decimation=10, ) self.IQData = blocks.file_sink(gr.sizeof_gr_complex*1, "/Users/ryanlagoy/Documents/Repositories/comms/HackRF/GNURadio/IQData.bin", False) self.IQData.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.analog_wfm_rcv_0, 0), (self.rational_resampler_xxx_0_0_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.qtgui_number_sink_0, 0)) self.connect((self.fmDemod, 0), (self.rational_resampler_xxx_0_0, 0)) self.connect((self.fskDemod, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.low_pass_filter_0_0, 0), (self.analog_wfm_rcv_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.fmDemod, 0)) self.connect((self.osmosdr_source_0, 0), (self.fskDemod, 0)) self.connect((self.osmosdr_source_0, 0), (self.qtgui_freq_sink_x_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.qtgui_time_sink_x_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.qtgui_waterfall_sink_x_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.recordIQ, 0)) self.connect((self.rational_resampler_xxx_0_0, 0), (self.low_pass_filter_0_0, 0)) self.connect((self.rational_resampler_xxx_0_0_0, 0), (self.volumeBlock, 0)) self.connect((self.recordIQ, 0), (self.IQData, 0)) self.connect((self.volumeBlock, 0), (self.audio_sink_0, 0))
def __init__(self): gr.top_block.__init__(self, "Communications Test") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 195312 self.baud = baud = 9600 self.samp_per_sym = samp_per_sym = samp_rate/baud ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("address0=192.168.10.2", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(460e6, 0) self.uhd_usrp_source_0.set_gain(0, 0) self.uhd_usrp_source_0.set_antenna("TX/RX", 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("address0=192.168.10.3", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq(460e6, 0) self.uhd_usrp_sink_0.set_gain(0, 0) self.uhd_usrp_sink_0.set_antenna("TX/RX", 0) self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=samp_per_sym, sensitivity=1.0, bt=0.35, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=samp_per_sym, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.7, )) self.Interfaces_queue_len_framer_source_b_0 = Interfaces.queue_len_framer_source_b('\x7e', True) self.Interfaces_queue_len_deframer_sink_b_0 = Interfaces.queue_len_deframer_sink_b('\x7e', True) ################################################## # Connections ################################################## self.connect((self.Interfaces_queue_len_framer_source_b_0, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.Interfaces_queue_len_deframer_sink_b_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.digital_gfsk_demod_0, 0))
def __init__(self, demod_class, rx_callback, options): gr.hier_block2.__init__(self, "receive_path", gr.io_signature(1, 1, gr.sizeof_gr_complex), gr.io_signature(0, 0, 0)) options = copy.copy( options) # make a copy so we can destructively modify self._verbose = options.verbose self._bitrate = options.bitrate # desired bit rate self._rx_callback = rx_callback # this callback is fired when a packet arrives self._demod_class = demod_class # the demodulator_class we're using self._chbw_factor = options.chbw_factor # channel filter bandwidth factor # default 1 # Get demod_kwargs demod_kwargs = self._demod_class.extract_kwargs_from_options(options) print(demod_kwargs) # Build the demodulator self.demodulator = self._demod_class(**demod_kwargs) # Make sure the channel BW factor is between 1 and sps/2 # or the filter won't work. if (self._chbw_factor < 1.0 or self._chbw_factor > self.samples_per_symbol() / 2): sys.stderr.write( "Channel bandwidth factor ({0}) must be within the range [1.0, {1}].\n" .format(self._chbw_factor, self.samples_per_symbol() / 2)) sys.exit(1) # Design filter to get actual channel we want sw_decim = 1 filter_gain = 1.0 width_of_trans_band = 0.5 chan_coeffs = filter.firdes.low_pass( filter_gain, # gain sw_decim * self.samples_per_symbol(), # sampling rate self._chbw_factor, # midpoint of trans. band width_of_trans_band, # width of trans. band filter.firdes.WIN_HANN) # filter type self.channel_filter = filter.fft_filter_ccc(sw_decim, chan_coeffs) # receiver # self.packet_receiver = digital.demod_pkts(self.demodulator, access_code=None, callback=self._rx_callback, threshold=-1) # TODO update to gnuradio 3.8 # self.packet_receiver = digital.generic_demod(digital.digital.constellation_bpsk(), callback=self._rx_callback) self.packet_receiver = digital.gfsk_demod(2) # Carrier Sensing Blocks alpha = 0.001 thresh = 30 # in dB, will have to adjust self.probe = analog.probe_avg_mag_sqrd_c(thresh, alpha) # Display some information about the setup if self._verbose: self._print_verbage() # connect block input to channel filter self.connect(self, self.channel_filter) # connect the channel input filter to the carrier power detector self.connect(self.channel_filter, self.probe) # connect channel filter to the packet receiver self.connect(self.channel_filter, self.packet_receiver)
def __init__(self): gr.top_block.__init__(self, "Varun_Kamble") Qt.QWidget.__init__(self) self.setWindowTitle("Varun_Kamble") qtgui.util.check_set_qss() try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "gfsk") if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): self.restoreGeometry(self.settings.value("geometry").toByteArray()) else: self.restoreGeometry( self.settings.value("geometry", type=QtCore.QByteArray)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 32000 ################################################## # Blocks ################################################## self.qtgui_sink_x_1 = qtgui.sink_c( 1024, #fftsize firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc samp_rate, #bw "", #name True, #plotfreq True, #plotwaterfall True, #plottime True, #plotconst ) self.qtgui_sink_x_1.set_update_time(1.0 / 10) self._qtgui_sink_x_1_win = sip.wrapinstance( self.qtgui_sink_x_1.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_sink_x_1_win) self.qtgui_sink_x_1.enable_rf_freq(False) self.qtgui_sink_x_0 = qtgui.sink_c( 1024, #fftsize firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc samp_rate, #bw "", #name True, #plotfreq True, #plotwaterfall True, #plottime True, #plotconst ) self.qtgui_sink_x_0.set_update_time(1.0 / 10) self._qtgui_sink_x_0_win = sip.wrapinstance( self.qtgui_sink_x_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_sink_x_0_win) self.qtgui_sink_x_0.enable_rf_freq(False) self.qtgui_const_sink_x_0 = qtgui.const_sink_c( 1024, #size "", #name 2 #number of inputs ) self.qtgui_const_sink_x_0.set_update_time(0.10) self.qtgui_const_sink_x_0.set_y_axis(-2, 2) self.qtgui_const_sink_x_0.set_x_axis(-2, 2) self.qtgui_const_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, "") self.qtgui_const_sink_x_0.enable_autoscale(False) self.qtgui_const_sink_x_0.enable_grid(False) self.qtgui_const_sink_x_0.enable_axis_labels(True) if not True: self.qtgui_const_sink_x_0.disable_legend() labels = ['', '', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = [ "blue", "red", "red", "red", "red", "red", "red", "red", "red", "red" ] styles = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] markers = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in xrange(2): if len(labels[i]) == 0: self.qtgui_const_sink_x_0.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_const_sink_x_0.set_line_label(i, labels[i]) self.qtgui_const_sink_x_0.set_line_width(i, widths[i]) self.qtgui_const_sink_x_0.set_line_color(i, colors[i]) self.qtgui_const_sink_x_0.set_line_style(i, styles[i]) self.qtgui_const_sink_x_0.set_line_marker(i, markers[i]) self.qtgui_const_sink_x_0.set_line_alpha(i, alphas[i]) self._qtgui_const_sink_x_0_win = sip.wrapinstance( self.qtgui_const_sink_x_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_const_sink_x_0_win) self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=2, sensitivity=1.0, bt=0.35, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.channels_fading_model_0 = channels.fading_model( 8, 10.0 / samp_rate, False, 4, 0) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1, samp_rate, True) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_c( grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=1, preamble='', access_code='', pad_for_usrp=True, ), payload_length=0, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_c( grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) self.analog_sig_source_x_0 = analog.sig_source_c( samp_rate, analog.GR_COS_WAVE, 1000, 1, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.qtgui_sink_x_1, 0)) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.channels_fading_model_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.channels_fading_model_0, 0), (self.qtgui_const_sink_x_0, 1)) self.connect((self.digital_gfsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.channels_fading_model_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.qtgui_const_sink_x_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.qtgui_sink_x_0, 0))
def __init__(self): gr.top_block.__init__(self, "File Transfer") ################################################## # Variables ################################################## self.transition_width = transition_width = 300e3 self.sample_rate = sample_rate = 4e6 self.data_rate = data_rate = 1e6 self.cutoff_freq = cutoff_freq = 2e6 self.ble_channel_spacing = ble_channel_spacing = 2e6 self.ble_channel = ble_channel = 12 self.ble_base_freq = ble_base_freq = 2402e6 self.sensivity = sensivity = 1.0 self.rf_gain = rf_gain = 74 self.outfile = outfile = "outfile" self.lowpass_filter = lowpass_filter = firdes.low_pass( 1, sample_rate, cutoff_freq, transition_width, firdes.WIN_HAMMING, 6.76) self.infile = infile = "infile" self.gfsk_sps = gfsk_sps = int(sample_rate / data_rate) self.gfsk_omega_limit = gfsk_omega_limit = 0.035 self.gfsk_mu = gfsk_mu = 0.5 self.gfsk_gain_mu = gfsk_gain_mu = 0.8 self.freq_offset = freq_offset = 0 self.freq = freq = ble_base_freq + (ble_channel_spacing * ble_channel) ################################################## # Message Queues ################################################## self.message_queue = message_queue = gr.msg_queue(2) ################################################## # Blocks ################################################## self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc( 1, (lowpass_filter), 0, sample_rate) self.file_source = blocks.file_source( gr.sizeof_gr_complex * 1, '/Users/mmohamoud/software_defined_radios/data_files/demodulated_file_data', True) self.file_source.set_begin_tag(pmt.PMT_NIL) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=gfsk_sps, sensitivity=sensivity, gain_mu=gfsk_gain_mu, mu=gfsk_mu, omega_relative_limit=gfsk_omega_limit, freq_error=0.0, verbose=False, log=False, ) self.blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb( 1, gr.GR_LSB_FIRST) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1, sample_rate, True) self.blocks_message_sink_0 = blocks.message_sink( gr.sizeof_char * 1, self.message_queue, False) ################################################## # Connections ################################################## self.connect((self.blocks_throttle_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) self.connect((self.blocks_unpacked_to_packed_xx_0, 0), (self.blocks_message_sink_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blocks_unpacked_to_packed_xx_0, 0)) self.connect((self.file_source, 0), (self.blocks_throttle_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.digital_gfsk_demod_0, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") Qt.QWidget.__init__(self) self.setWindowTitle("Top Block") try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "top_block") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 200000 self.key = key = 0 self.iteration = iteration = 0 ################################################## # Blocks ################################################## self.receive = osmosdr.source(args="numchan" + str(1) + "" + "") self.receive.set_sample_rate(1e6) self.receive.set_center_freq(100e6) self.receive.set_freq_corr(0, 0) self.receive.set_gain_mode(False, 0) self.receive.set_gain(10, 0) self.receive.set_if_gain(20, 0) self.receive.set_bb_gain(20, 0) self.receive.set_antenna("", 0) self.receive.set_bandwidth(0, 0) self.qtgui_number_sink_0 = qtgui.number_sink(gr.sizeof_float, 0, qtgui.NUM_GRAPH_HORIZ, 1) self.qtgui_number_sink_0.set_update_time(0.10) self.qtgui_number_sink_0.set_title("") labels = ["", "", "", "", "", "", "", "", "", ""] units = ["", "", "", "", "", "", "", "", "", ""] colors = [("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black"), ("black", "black")] factor = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in xrange(1): self.qtgui_number_sink_0.set_min(i, 0) self.qtgui_number_sink_0.set_max(i, 3) self.qtgui_number_sink_0.set_color(i, colors[i][0], colors[i][1]) if len(labels[i]) == 0: self.qtgui_number_sink_0.set_label(i, "Data {0}".format(i)) else: self.qtgui_number_sink_0.set_label(i, labels[i]) self.qtgui_number_sink_0.set_unit(i, units[i]) self.qtgui_number_sink_0.set_factor(i, factor[i]) self.qtgui_number_sink_0.enable_autoscale(False) self._qtgui_number_sink_0_win = sip.wrapinstance( self.qtgui_number_sink_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_number_sink_0_win) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code="100010001000100010001111", threshold=0, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) self.blks2_packet_decoder_1 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code="100010001000100010001000", threshold=0, callback=lambda ok, payload: self.blks2_packet_decoder_1. recv_pkt(ok, payload), ), ) self.blks2_packet_decoder_2 = grc_blks2.packet_demod_f( grc_blks2.packet_decoder( access_code="100010001000100010101010", threshold=0, callback=lambda ok, payload: self.blks2_packet_decoder_2. recv_pkt(ok, payload), ), ) self.file_sink_0 = blocks.file_sink( gr.sizeof_float * 1, "/home/firas/Desktop/final/firas-data", False) self.file_sink_0.set_unbuffered(False) self.file_sink_1 = blocks.file_sink( gr.sizeof_float * 1, "/home/firas/Desktop/final/firas-data_1", False) self.file_sink_1.set_unbuffered(False) self.probe_sig_0 = blocks.probe_signal_f() self.low_pass_filter = filter.fir_filter_ccf( 1, firdes.low_pass(1, 1e6, 250000, 20000, firdes.WIN_HAMMING, 6.76)) self.throt = blocks.throttle(gr.sizeof_gr_complex * 1, 32000, True) self.file_sink = blocks.file_sink( gr.sizeof_float * 1, "/home/firas/Desktop/paper-test.pdf", True) self.file_sink.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.file_sink_0, 0)) self.connect((self.receive, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.probe_sig_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="NRF905 Demodulator") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.slider_rf_gain = slider_rf_gain = 30 self.slider_if_gain = slider_if_gain = 30 self.slider_freq = slider_freq = 868415e3 self.samp_rate = samp_rate = 1000000 self.checkbox_agc = checkbox_agc = True ################################################## # Blocks ################################################## _slider_rf_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._slider_rf_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_slider_rf_gain_sizer, value=self.slider_rf_gain, callback=self.set_slider_rf_gain, label="RF Gain", converter=forms.float_converter(), proportion=0, ) self._slider_rf_gain_slider = forms.slider( parent=self.GetWin(), sizer=_slider_rf_gain_sizer, value=self.slider_rf_gain, callback=self.set_slider_rf_gain, minimum=0, maximum=40, num_steps=40, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_slider_rf_gain_sizer) _slider_if_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._slider_if_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_slider_if_gain_sizer, value=self.slider_if_gain, callback=self.set_slider_if_gain, label="IF Gain", converter=forms.float_converter(), proportion=0, ) self._slider_if_gain_slider = forms.slider( parent=self.GetWin(), sizer=_slider_if_gain_sizer, value=self.slider_if_gain, callback=self.set_slider_if_gain, minimum=0, maximum=56, num_steps=56, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_slider_if_gain_sizer) _slider_freq_sizer = wx.BoxSizer(wx.VERTICAL) self._slider_freq_text_box = forms.text_box( parent=self.GetWin(), sizer=_slider_freq_sizer, value=self.slider_freq, callback=self.set_slider_freq, label="Frequency", converter=forms.float_converter(), proportion=0, ) self._slider_freq_slider = forms.slider( parent=self.GetWin(), sizer=_slider_freq_sizer, value=self.slider_freq, callback=self.set_slider_freq, minimum=863e6, maximum=870e6, num_steps=(8700-8630), style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_slider_freq_sizer) self.notebook_0 = self.notebook_0 = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "FFT") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "scope") self.Add(self.notebook_0) self._checkbox_agc_check_box = forms.check_box( parent=self.GetWin(), value=self.checkbox_agc, callback=self.set_checkbox_agc, label="AGC", true=True, false=False, ) self.Add(self._checkbox_agc_check_box) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.notebook_0.GetPage(0).GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.notebook_0.GetPage(0).Add(self.wxgui_fftsink2_0.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(slider_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(checkbox_agc, 0) self.rtlsdr_source_0.set_gain(slider_rf_gain, 0) self.rtlsdr_source_0.set_if_gain(slider_if_gain, 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.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=int(samp_rate/100e3), sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "/tmp/nrf.dat", False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.rtlsdr_source_0, 0), (self.digital_gfsk_demod_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.rtlsdr_source_0, 0), (self.wxgui_fftsink2_0, 0))
def __init__(self): gr.top_block.__init__(self, "Example5B Rx") Qt.QWidget.__init__(self) self.setWindowTitle("Example5B Rx") try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "example5b_rx") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.udp_len = udp_len = 1472 * 8 self.time_preamble = time_preamble = [ 0.125000 + 0.000000j, 0.522104 - 0.148216j, -0.495528 + 0.114832j, -0.267916 + 0.091700j, 0.236544 - 0.138456j, -0.098500 + 0.473800j, 0.476480 - 0.225344j, -0.187516 + 0.035372j, 0.051776 - 0.353552j, -0.104936 + 0.059916j, 0.228684 + 0.117504j, -0.530912 + 0.560756j, 0.359128 + 0.015872j, -0.132852 + 0.632840j, -0.105164 - 0.368872j, 0.368272 - 0.032412j, 0.125000 + 0.750000j, 0.463968 + 0.457792j, 0.151476 - 0.430948j, 0.685052 + 0.238524j, 0.494428 + 0.119428j, -0.557540 - 0.050056j, 0.416348 + 0.017368j, 0.104256 - 0.568836j, -0.301776 - 0.353552j, 0.079812 + 0.451516j, 0.439152 + 0.528072j, 0.642060 + 0.178484j, -0.090096 + 0.465096j, -0.446492 + 0.305776j, -0.111440 - 0.093688j, -0.538848 - 0.320228j, 0.125000 + 0.000000j, -0.538848 + 0.320228j, -0.111440 + 0.093688j, -0.446492 - 0.305776j, -0.090096 - 0.465096j, 0.642060 - 0.178484j, 0.439152 - 0.528072j, 0.079812 - 0.451516j, -0.301776 + 0.353552j, 0.104256 + 0.568836j, 0.416348 - 0.017368j, -0.557540 + 0.050056j, 0.494428 - 0.119428j, 0.685052 - 0.238524j, 0.151476 + 0.430948j, 0.463968 - 0.457792j, 0.125000 - 0.750000j, 0.368272 + 0.032412j, -0.105164 + 0.368872j, -0.132852 - 0.632840j, 0.359128 - 0.015872j, -0.530912 - 0.560756j, 0.228684 - 0.117504j, -0.104936 - 0.059916j, 0.051776 + 0.353552j, -0.187516 - 0.035372j, 0.476480 + 0.225344j, -0.098500 - 0.473800j, 0.236544 + 0.138456j, -0.267916 - 0.091700j, -0.495528 - 0.114832j, 0.522104 + 0.148216j ] self.threshold = threshold = 9.5 self.samp_rate = samp_rate = 400000 self.preamble_len = preamble_len = 64 self.packet_len = packet_len = 1024 self.number_len = number_len = 64 * 3 self.length = length = 96 ################################################## # Blocks ################################################## self._threshold_range = Range(0, 25, 0.25, 9.5, 200) self._threshold_win = RangeWidget(self._threshold_range, self.set_threshold, "Threshold", "counter_slider", float) self.top_grid_layout.addWidget(self._threshold_win, 0, 0, 1, 2) self.qtgui_time_sink_x_0_0_0_2 = qtgui.time_sink_c( 1024, #size samp_rate, #samp_rate "", #name 1 #number of inputs ) self.qtgui_time_sink_x_0_0_0_2.set_update_time(0.10) self.qtgui_time_sink_x_0_0_0_2.set_y_axis(-1, 1) self.qtgui_time_sink_x_0_0_0_2.set_y_label("Amplitude", "") self.qtgui_time_sink_x_0_0_0_2.enable_tags(-1, True) self.qtgui_time_sink_x_0_0_0_2.set_trigger_mode( qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self.qtgui_time_sink_x_0_0_0_2.enable_autoscale(False) self.qtgui_time_sink_x_0_0_0_2.enable_grid(False) self.qtgui_time_sink_x_0_0_0_2.enable_control_panel(False) if not True: self.qtgui_time_sink_x_0_0_0_2.disable_legend() labels = ["", "", "", "", "", "", "", "", "", ""] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = [ "blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "blue" ] styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in xrange(2 * 1): if len(labels[i]) == 0: if (i % 2 == 0): self.qtgui_time_sink_x_0_0_0_2.set_line_label( i, "Re{{Data {0}}}".format(i / 2)) else: self.qtgui_time_sink_x_0_0_0_2.set_line_label( i, "Im{{Data {0}}}".format(i / 2)) else: self.qtgui_time_sink_x_0_0_0_2.set_line_label(i, labels[i]) self.qtgui_time_sink_x_0_0_0_2.set_line_width(i, widths[i]) self.qtgui_time_sink_x_0_0_0_2.set_line_color(i, colors[i]) self.qtgui_time_sink_x_0_0_0_2.set_line_style(i, styles[i]) self.qtgui_time_sink_x_0_0_0_2.set_line_marker(i, markers[i]) self.qtgui_time_sink_x_0_0_0_2.set_line_alpha(i, alphas[i]) self._qtgui_time_sink_x_0_0_0_2_win = sip.wrapinstance( self.qtgui_time_sink_x_0_0_0_2.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_0_0_2_win, 2, 0, 1, 1) self.qtgui_time_sink_x_0_0_0 = qtgui.time_sink_c( 1024, #size samp_rate, #samp_rate "", #name 1 #number of inputs ) self.qtgui_time_sink_x_0_0_0.set_update_time(0.10) self.qtgui_time_sink_x_0_0_0.set_y_axis(-1, 1) self.qtgui_time_sink_x_0_0_0.set_y_label("Amplitude", "") self.qtgui_time_sink_x_0_0_0.enable_tags(-1, True) self.qtgui_time_sink_x_0_0_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self.qtgui_time_sink_x_0_0_0.enable_autoscale(False) self.qtgui_time_sink_x_0_0_0.enable_grid(False) self.qtgui_time_sink_x_0_0_0.enable_control_panel(False) if not True: self.qtgui_time_sink_x_0_0_0.disable_legend() labels = ["", "", "", "", "", "", "", "", "", ""] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = [ "blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "blue" ] styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in xrange(2 * 1): if len(labels[i]) == 0: if (i % 2 == 0): self.qtgui_time_sink_x_0_0_0.set_line_label( i, "Re{{Data {0}}}".format(i / 2)) else: self.qtgui_time_sink_x_0_0_0.set_line_label( i, "Im{{Data {0}}}".format(i / 2)) else: self.qtgui_time_sink_x_0_0_0.set_line_label(i, labels[i]) self.qtgui_time_sink_x_0_0_0.set_line_width(i, widths[i]) self.qtgui_time_sink_x_0_0_0.set_line_color(i, colors[i]) self.qtgui_time_sink_x_0_0_0.set_line_style(i, styles[i]) self.qtgui_time_sink_x_0_0_0.set_line_marker(i, markers[i]) self.qtgui_time_sink_x_0_0_0.set_line_alpha(i, alphas[i]) self._qtgui_time_sink_x_0_0_0_win = sip.wrapinstance( self.qtgui_time_sink_x_0_0_0.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_0_0_win, 1, 0, 1, 1) self.qtgui_time_sink_x_0 = qtgui.time_sink_f( 1024, #size samp_rate, #samp_rate "Demodulated OFDM Data", #name 1 #number of inputs ) self.qtgui_time_sink_x_0.set_update_time(0.10) self.qtgui_time_sink_x_0.set_y_axis(-1, 1) self.qtgui_time_sink_x_0.set_y_label("Amplitude", "") self.qtgui_time_sink_x_0.enable_tags(-1, True) self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self.qtgui_time_sink_x_0.enable_autoscale(True) self.qtgui_time_sink_x_0.enable_grid(False) self.qtgui_time_sink_x_0.enable_control_panel(False) if not True: self.qtgui_time_sink_x_0.disable_legend() labels = ["Bytes", "", "", "", "", "", "", "", "", ""] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = [ "blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "blue" ] styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in xrange(1): if len(labels[i]) == 0: self.qtgui_time_sink_x_0.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_time_sink_x_0.set_line_label(i, labels[i]) self.qtgui_time_sink_x_0.set_line_width(i, widths[i]) self.qtgui_time_sink_x_0.set_line_color(i, colors[i]) self.qtgui_time_sink_x_0.set_line_style(i, styles[i]) self.qtgui_time_sink_x_0.set_line_marker(i, markers[i]) self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i]) self._qtgui_time_sink_x_0_win = sip.wrapinstance( self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget) self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_win, 5, 0, 1, 2) self.mysvl_triggered_demux_0_0 = mysvl.triggered_demux( gr.sizeof_gr_complex * 1, gr.sizeof_float, (preamble_len, number_len, packet_len), 1, True) self.mysvl_triggered_demux_0 = mysvl.triggered_demux( gr.sizeof_gr_complex * 1, gr.sizeof_float, (preamble_len, number_len, packet_len), 1, True) self.mysvl_sync_channels_0 = mysvl.sync_channels(1024) self.mysvl_svl_1 = mysvl.svl(gr.sizeof_gr_complex * 1, 1, "./inputs/spectrum_maps/one_many_rx.txt", "./inputs/parameters/one_many_rx.txt") self.mysvl_drop_packet_0_0 = mysvl.drop_packet(1024) self.mysvl_drop_packet_0 = mysvl.drop_packet(1024) self.digital_ofdm_rx_0 = digital.ofdm_rx( fft_len=64, cp_len=16, frame_length_tag_key='frame_' + "length", packet_length_tag_key="length", bps_header=1, bps_payload=1, debug_log=False, scramble_bits=False) self.digital_gfsk_demod_0_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_gfsk_demod_0 = digital.gfsk_demod( samples_per_symbol=2, sensitivity=1.0, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_corr_est_cc_0_0 = digital.corr_est_cc((time_preamble), 1, 0, 0.99) self.digital_corr_est_cc_0 = digital.corr_est_cc((time_preamble), 1, 0, 0.99) self.blocks_udp_source_0_0 = blocks.udp_source( gr.sizeof_gr_complex * 1, "127.0.0.2", 4000, udp_len, True) (self.blocks_udp_source_0_0).set_min_output_buffer(1000000) self.blocks_udp_source_0 = blocks.udp_source(gr.sizeof_gr_complex * 1, "127.0.0.1", 4000, udp_len, True) (self.blocks_udp_source_0).set_min_output_buffer(1000000) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_char * 1, "127.0.0.1", 3001, 1472, True) self.blocks_threshold_ff_0_0 = blocks.threshold_ff( threshold, threshold, 0) self.blocks_threshold_ff_0 = blocks.threshold_ff( threshold, threshold, 0) self.blocks_tag_gate_1 = blocks.tag_gate(gr.sizeof_gr_complex * 1, False) self.blocks_tag_gate_0_0 = blocks.tag_gate(gr.sizeof_gr_complex * 1, False) self.blocks_tag_gate_0 = blocks.tag_gate(gr.sizeof_gr_complex * 1, False) self.blocks_null_sink_1_0 = blocks.null_sink(gr.sizeof_gr_complex * 1) self.blocks_null_sink_1 = blocks.null_sink(gr.sizeof_gr_complex * 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_char_to_float_0_0_0 = blocks.char_to_float(1, 1) self.blocks_char_to_float_0_0 = blocks.char_to_float(1, 1) self.blocks_char_to_float_0 = blocks.char_to_float(1, 1) self.blocks_abs_xx_1_0 = blocks.abs_ff(1) self.blocks_abs_xx_1 = blocks.abs_ff(1) self.blks2_packet_decoder_0_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0_0. recv_pkt(ok, payload), ), ) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b( grc_blks2.packet_decoder( access_code="", threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0. recv_pkt(ok, payload), ), ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_decoder_0, 0), (self.blocks_char_to_float_0_0_0, 0)) self.connect((self.blks2_packet_decoder_0_0, 0), (self.blocks_char_to_float_0_0, 0)) self.connect((self.blocks_abs_xx_1, 0), (self.blocks_threshold_ff_0, 0)) self.connect((self.blocks_abs_xx_1_0, 0), (self.blocks_threshold_ff_0_0, 0)) self.connect((self.blocks_char_to_float_0, 0), (self.qtgui_time_sink_x_0, 0)) self.connect((self.blocks_char_to_float_0_0, 0), (self.mysvl_drop_packet_0_0, 1)) self.connect((self.blocks_char_to_float_0_0_0, 0), (self.mysvl_drop_packet_0, 1)) self.connect((self.blocks_complex_to_float_0, 0), (self.blocks_abs_xx_1, 0)) self.connect((self.blocks_complex_to_float_0_0, 0), (self.blocks_abs_xx_1_0, 0)) self.connect((self.blocks_tag_gate_0, 0), (self.mysvl_triggered_demux_0, 0)) self.connect((self.blocks_tag_gate_0_0, 0), (self.mysvl_triggered_demux_0_0, 0)) self.connect((self.blocks_tag_gate_1, 0), (self.digital_ofdm_rx_0, 0)) self.connect((self.blocks_threshold_ff_0, 0), (self.mysvl_triggered_demux_0, 1)) self.connect((self.blocks_threshold_ff_0_0, 0), (self.mysvl_triggered_demux_0_0, 1)) self.connect((self.blocks_udp_source_0, 0), (self.digital_corr_est_cc_0, 0)) self.connect((self.blocks_udp_source_0_0, 0), (self.digital_corr_est_cc_0_0, 0)) self.connect((self.digital_corr_est_cc_0, 1), (self.blocks_complex_to_float_0, 0)) self.connect((self.digital_corr_est_cc_0, 0), (self.blocks_tag_gate_0, 0)) self.connect((self.digital_corr_est_cc_0_0, 1), (self.blocks_complex_to_float_0_0, 0)) self.connect((self.digital_corr_est_cc_0_0, 0), (self.blocks_tag_gate_0_0, 0)) self.connect((self.digital_gfsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_gfsk_demod_0_0, 0), (self.blks2_packet_decoder_0_0, 0)) self.connect((self.digital_ofdm_rx_0, 0), (self.blocks_char_to_float_0, 0)) self.connect((self.digital_ofdm_rx_0, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.mysvl_drop_packet_0, 0), (self.mysvl_sync_channels_0, 0)) self.connect((self.mysvl_drop_packet_0_0, 0), (self.mysvl_sync_channels_0, 1)) self.connect((self.mysvl_svl_1, 0), (self.blocks_tag_gate_1, 0)) self.connect((self.mysvl_sync_channels_0, 0), (self.mysvl_svl_1, 0)) self.connect((self.mysvl_sync_channels_0, 1), (self.mysvl_svl_1, 1)) self.connect((self.mysvl_triggered_demux_0, 0), (self.blocks_null_sink_1, 0)) self.connect((self.mysvl_triggered_demux_0, 1), (self.digital_gfsk_demod_0, 0)) self.connect((self.mysvl_triggered_demux_0, 2), (self.mysvl_drop_packet_0, 0)) self.connect((self.mysvl_triggered_demux_0, 2), (self.qtgui_time_sink_x_0_0_0, 0)) self.connect((self.mysvl_triggered_demux_0_0, 0), (self.blocks_null_sink_1_0, 0)) self.connect((self.mysvl_triggered_demux_0_0, 1), (self.digital_gfsk_demod_0_0, 0)) self.connect((self.mysvl_triggered_demux_0_0, 2), (self.mysvl_drop_packet_0_0, 0)) self.connect((self.mysvl_triggered_demux_0_0, 2), (self.qtgui_time_sink_x_0_0_0_2, 0))