def __init__(self, samp_rate, freq, gain, fft_size, framerate): gr.top_block.__init__(self, "Top Block") self.usrp = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.usrp.set_samp_rate(samp_rate) self.usrp.set_center_freq(freq, 0) self.usrp.set_gain(gain, 0) self.fft = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_size, ref_scale=1, frame_rate=framerate, avg_alpha=1, average=False, ) self.fft_broadcast = fft_broadcast_sink(fft_size) self.connect((self.fft, 0), (self.fft_broadcast, 0)) self.connect((self.usrp, 0), (self.fft, 0))
def __init__(self, abs_cfo_threshold=1e6, alpha=0.001, fft_len=512, fft_peak_threshold=0.5, rf_center_freq=1e9, samp_rate=32e3): gr.hier_block2.__init__( self, "Coarse Frequency Recovery", gr.io_signature(1, 1, gr.sizeof_gr_complex*1), gr.io_signaturev(2, 2, [gr.sizeof_float*fft_len, gr.sizeof_float*1]), ) ################################################## # Parameters ################################################## self.abs_cfo_threshold = abs_cfo_threshold self.alpha = alpha self.fft_len = fft_len self.fft_peak_threshold = fft_peak_threshold self.rf_center_freq = rf_center_freq self.samp_rate = samp_rate ################################################## # Blocks ################################################## self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_len, ref_scale=2, frame_rate=samp_rate/fft_len, avg_alpha=alpha, average=True, ) self.blocksat_wrap_fft_index_0 = blocksat.wrap_fft_index(fft_len) self.blocksat_runtime_cfo_ctrl_0 = blocksat.runtime_cfo_ctrl(7*int(1/alpha), abs_cfo_threshold, int(rf_center_freq)) self.blocksat_exponentiate_const_cci_0 = blocksat.exponentiate_const_cci(4, 1) self.blocksat_argpeak_0 = blocksat.argpeak(fft_len, fft_peak_threshold) self.blocks_sub_xx_0 = blocks.sub_ff(1) self.blocks_short_to_float_0 = blocks.short_to_float(1, 1) self.blocks_multiply_xx_0 = blocks.multiply_vff(1) self.blocks_multiply_const_vxx_2 = blocks.multiply_const_vff((samp_rate/(fft_len*4), )) self.blocks_moving_average_xx_0_0 = blocks.moving_average_ff(int(1/alpha), 1.0/int(1/alpha), int(4/alpha)) self.blocks_moving_average_xx_0 = blocks.moving_average_ff(int(1/alpha), 1.0/int(1/alpha), int(4/alpha)) ################################################## # Connections ################################################## self.connect((self.blocks_moving_average_xx_0, 0), (self.blocks_sub_xx_0, 1)) self.connect((self.blocks_moving_average_xx_0, 0), (self.blocksat_runtime_cfo_ctrl_0, 1)) self.connect((self.blocks_moving_average_xx_0_0, 0), (self.blocksat_runtime_cfo_ctrl_0, 2)) self.connect((self.blocks_multiply_const_vxx_2, 0), (self.blocks_moving_average_xx_0, 0)) self.connect((self.blocks_multiply_const_vxx_2, 0), (self.blocks_sub_xx_0, 0)) self.connect((self.blocks_multiply_const_vxx_2, 0), (self.blocksat_runtime_cfo_ctrl_0, 0)) self.connect((self.blocks_multiply_xx_0, 0), (self.blocks_moving_average_xx_0_0, 0)) self.connect((self.blocks_short_to_float_0, 0), (self.blocks_multiply_const_vxx_2, 0)) self.connect((self.blocks_sub_xx_0, 0), (self.blocks_multiply_xx_0, 0)) self.connect((self.blocks_sub_xx_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.blocksat_argpeak_0, 0), (self.blocksat_wrap_fft_index_0, 0)) self.connect((self.blocksat_exponentiate_const_cci_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.blocksat_runtime_cfo_ctrl_0, 0), (self, 1)) self.connect((self.blocksat_wrap_fft_index_0, 0), (self.blocks_short_to_float_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocksat_argpeak_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self, 0)) self.connect((self, 0), (self.blocksat_exponentiate_const_cci_0, 0))
def __init__(self, bandwidth=22000000, center_frequency=2462000000, usrp_addr="type=b200", zmq_addr="tcp://localhost:5507"): gr.top_block.__init__(self, "USRP Spectrum Monitor") ################################################## # Parameters ################################################## self.bandwidth = bandwidth self.center_frequency = center_frequency self.usrp_addr = usrp_addr self.zmq_addr = zmq_addr ################################################## # Variables ################################################## self.frame_rate = frame_rate = 0.001 self.fft_size = fft_size = 128 ################################################## # Blocks ################################################## self.waterfall_zmq_sink = waterfall_zmq_sink.blk(freq_Size=fft_size, num_Samples=1000, msg_interval=1000, addr=zmq_addr) self.uhd_usrp_source_0_0 = uhd.usrp_source( ",".join((usrp_addr, '')), uhd.stream_args( cpu_format="fc32", otw_format='sc16', channels=range(1), ), ) self.uhd_usrp_source_0_0.set_samp_rate(bandwidth) self.uhd_usrp_source_0_0.set_center_freq(center_frequency, 0) self.uhd_usrp_source_0_0.set_gain(30, 0) self.uhd_usrp_source_0_0.set_bandwidth(bandwidth, 0) (self.uhd_usrp_source_0_0).set_min_output_buffer(2024) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=bandwidth, fft_size=fft_size, ref_scale=2, frame_rate=1000, avg_alpha=1.0, average=False, ) self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_float*1, fft_size) self.blocks_stream_to_vector_0 = blocks.stream_to_vector(gr.sizeof_float*1, fft_size) (self.blocks_stream_to_vector_0).set_min_output_buffer(2024) self.blocks_stream_mux_0 = blocks.stream_mux(gr.sizeof_float*1, (fft_size/2, fft_size/2)) self.blocks_deinterleave_0 = blocks.deinterleave(gr.sizeof_float*1, fft_size/2) ################################################## # Connections ################################################## self.connect((self.blocks_deinterleave_0, 0), (self.blocks_stream_mux_0, 1)) self.connect((self.blocks_deinterleave_0, 1), (self.blocks_stream_mux_0, 0)) self.connect((self.blocks_stream_mux_0, 0), (self.blocks_stream_to_vector_0, 0)) self.connect((self.blocks_stream_to_vector_0, 0), (self.waterfall_zmq_sink, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_deinterleave_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.uhd_usrp_source_0_0, 0), (self.logpwrfft_x_0, 0))
def __init__(self): gr.top_block.__init__(self, "Bladerf Fft") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1000000 self._fft_size_config = ConfigParser.ConfigParser() self._fft_size_config.read('default') try: fft_size = self._fft_size_config.getint('main', 'key') except: fft_size = 2048 self.fft_size = fft_size ################################################## # Blocks ################################################## 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(855e6, 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(True, 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(6000000, 0) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_size, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=False, ) self.blocks_vector_to_stream_0 = blocks.vector_to_stream( gr.sizeof_float * fft_size, 1) self.blocks_head_0 = blocks.head(gr.sizeof_float * fft_size, 64) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float * fft_size, './log_power_fft_data.bin', False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.blocks_head_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_head_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.logpwrfft_x_0, 0))
def __rebuild(self): if self.__signal_type.is_analytic(): input_length = self.__freq_resolution output_length = self.__freq_resolution self.__after_fft = None else: # use vector_to_streams to cut the output in half and discard the redundant part input_length = self.__freq_resolution * 2 output_length = self.__freq_resolution self.__after_fft = blocks.vector_to_streams( itemsize=output_length * gr.sizeof_float, nstreams=2) sample_rate = self.__signal_type.get_sample_rate() overlap_factor = int( math.ceil(_maximum_fft_rate * input_length / sample_rate)) # sanity limit -- OverlapGimmick is not free overlap_factor = min(16, overlap_factor) self.__gate = blocks.copy(gr.sizeof_gr_complex) self.__gate.set_enabled(not self.__paused) self.__fft_sink = MessageDistributorSink( itemsize=output_length * gr.sizeof_char, context=self.__context, migrate=self.__fft_sink, notify=self.__update_interested) self.__overlapper = _OverlapGimmick(size=input_length, factor=overlap_factor, itemsize=self.__itemsize) # Adjusts units so displayed level is independent of resolution and sample rate. Also throw in the packing offset compensation = to_dB(input_length / sample_rate) + self.__power_offset # TODO: Consider not using the logpwrfft block self.__logpwrfft = logpwrfft.logpwrfft_c( sample_rate=sample_rate * overlap_factor, fft_size=input_length, ref_scale=10.0**(-compensation / 20.0) * 2, # not actually using this as a reference scale value but avoiding needing to use a separate add operation to apply the unit change -- this expression is the inverse of what logpwrfft does internally frame_rate=self.__frame_rate, avg_alpha=1.0, average=False) # It would make slightly more sense to use unsigned chars, but blocks.float_to_uchar does not support vlen. self.__fft_converter = blocks.float_to_char( vlen=self.__freq_resolution, scale=1.0) self.__scope_sink = MessageDistributorSink( itemsize=self.__time_length * gr.sizeof_gr_complex, context=self.__context, migrate=self.__scope_sink, notify=self.__update_interested) self.__scope_chunker = blocks.stream_to_vector_decimator( item_size=gr.sizeof_gr_complex, sample_rate=sample_rate, vec_rate=self.__frame_rate, # TODO doesn't need to be coupled vec_len=self.__time_length)
def __init__(self): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.volume = 20 self.rfSampleRate = 2560000 self.audioSampleRate = 48000 self.gain = 20 self.frequency = 102.3e6 #120e4; #27e6; #102e6; self.fftBinSize = 4096 self.frameRate = 10 self.average = 0.82675 ################################################## # Blocks ################################################## self.rtlsdrSource = osmosdr.source(args="numchan=" + str(1) + " " + '') self.rtlsdrSource.set_time_unknown_pps(osmosdr.time_spec_t()) self.rtlsdrSource.set_sample_rate(self.rfSampleRate) self.rtlsdrSource.set_center_freq(self.frequency, 0) self.rtlsdrSource.set_freq_corr(0, 0) self.rtlsdrSource.set_gain(self.gain, 0) self.rtlsdrSource.set_if_gain(20, 0) self.rtlsdrSource.set_bb_gain(20, 0) self.rtlsdrSource.set_antenna('', 0) self.rtlsdrSource.set_bandwidth(0, 0) # this is the source for the FFT display's data self.logpwrfft = logpwrfft.logpwrfft_c(sample_rate=self.rfSampleRate, fft_size=self.fftBinSize, ref_scale=2, frame_rate=self.frameRate, avg_alpha=self.average, average=(self.average != 1)) # this is the main FFT display self.fftDataSink = FFTDataSink(self, fftBinSize=self.fftBinSize, rfSampleRate=self.rfSampleRate) self.leftVolume = blocks.multiply_const_ff(self.volume) self.rightVolume = blocks.multiply_const_ff(self.volume) self.audio = audio.sink(self.audioSampleRate, '', True) self.connect((self.rtlsdrSource, 0), (self.logpwrfft, 0)) self.connect((self.logpwrfft, 0), (self.fftDataSink, 0)) self.connect((self.leftVolume, 0), (self.audio, 0)) self.connect((self.rightVolume, 0), (self.audio, 1)) self.demod = None
def __init__(self): gr.top_block.__init__(self, "Simple RF Tracker") ################################################## # Variables ################################################## self.sampRate = sampRate = 2000000 self.gain = gain = 10 self.freq = freq = 868000000 self.bandwidth = bandwidth = 200000 ################################################## # Blocks ################################################## self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer( ('localhost', 9090), 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) + " " + 'rtl=0') self.osmosdr_source_0.set_sample_rate(sampRate) 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(2, 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(gain, 0) self.osmosdr_source_0.set_if_gain(20, 0) self.osmosdr_source_0.set_bb_gain(20, 0) self.osmosdr_source_0.set_antenna('', 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.low_pass_filter_0 = filter.fir_filter_ccf( 1, firdes.low_pass(1, sampRate, bandwidth, int(bandwidth / 8), firdes.WIN_HAMMING, 6.76)) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=sampRate, fft_size=1024, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=True, ) self.grc_pyblock_send_gain = grc_pyblock_send_gain.blk() ################################################## # Connections ################################################## self.connect((self.logpwrfft_x_0, 0), (self.grc_pyblock_send_gain, 0)) self.connect((self.low_pass_filter_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.low_pass_filter_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 = 2.4e6 ################################################## # Blocks ################################################## 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(891e6, 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(1, 0) self.rtlsdr_source_0.set_gain_mode(0, 0) self.rtlsdr_source_0.set_gain(50, 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) try: self.rtlsdr_source_0.get_sample_rates().start() except RuntimeError: print "Source has no sample rates (wrong device arguments?)." sys.exit(1) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=1024, ref_scale=2, frame_rate=60, avg_alpha=1.0, average=True, ) self.blocks_float_to_char_0 = blocks.float_to_char(1024, 1) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char * 1024, "gsm_power.txt", False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.rtlsdr_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_float_to_char_0, 0)) self.connect((self.blocks_float_to_char_0, 0), (self.blocks_file_sink_0, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.freq_M = freq_M = 1128 self.samp_rate = samp_rate = 25e6 self.freq = freq = freq_M * 1e6 self.bb_gain = bb_gain = 5 ################################################## # Blocks ################################################## #USRP Source self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(freq, 0) self.uhd_usrp_source_0.set_gain(bb_gain, 0) self.uhd_usrp_source_0.set_antenna("RX2", 0) self.uhd_usrp_source_0.set_bandwidth(samp_rate, 0) #FFT self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=1024, ref_scale=2, frame_rate=10, avg_alpha=0.01, average=True, ) #FFT Shift self.fft_shift = FFTshift(1024, True) #Cherrypick target freq self.slicer = vector_slice(1024, 64, 550) #sink self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_float * 64) ################################################## # Connections ################################################## self.connect(self.uhd_usrp_source_0, self.logpwrfft_x_0, self.fft_shift, self.slicer, self.blocks_null_sink_0)
def __rebuild(self): if self.__signal_type.is_analytic(): input_length = self.__freq_resolution output_length = self.__freq_resolution self.__after_fft = None else: # use vector_to_streams to cut the output in half and discard the redundant part input_length = self.__freq_resolution * 2 output_length = self.__freq_resolution self.__after_fft = blocks.vector_to_streams(itemsize=output_length * gr.sizeof_float, nstreams=2) sample_rate = self.__signal_type.get_sample_rate() overlap_factor = int(math.ceil(_maximum_fft_rate * input_length / sample_rate)) # sanity limit -- OverlapGimmick is not free overlap_factor = min(16, overlap_factor) self.__gate = blocks.copy(gr.sizeof_gr_complex) self.__gate.set_enabled(not self.__paused) self.__fft_sink = MessageDistributorSink( itemsize=output_length * gr.sizeof_char, context=self.__context, migrate=self.__fft_sink, notify=self.__update_interested) self.__overlapper = _OverlapGimmick( size=input_length, factor=overlap_factor, itemsize=self.__itemsize) # Adjusts units so displayed level is independent of resolution and sample rate. Also throw in the packing offset compensation = to_dB(input_length / sample_rate) + self.__power_offset # TODO: Consider not using the logpwrfft block self.__logpwrfft = logpwrfft.logpwrfft_c( sample_rate=sample_rate * overlap_factor, fft_size=input_length, ref_scale=10.0 ** (-compensation / 20.0) * 2, # not actually using this as a reference scale value but avoiding needing to use a separate add operation to apply the unit change -- this expression is the inverse of what logpwrfft does internally frame_rate=self.__frame_rate, avg_alpha=1.0, average=False) # It would make slightly more sense to use unsigned chars, but blocks.float_to_uchar does not support vlen. self.__fft_converter = blocks.float_to_char(vlen=self.__freq_resolution, scale=1.0) self.__scope_sink = MessageDistributorSink( itemsize=self.__time_length * gr.sizeof_gr_complex, context=self.__context, migrate=self.__scope_sink, notify=self.__update_interested) self.__scope_chunker = blocks.stream_to_vector_decimator( item_size=gr.sizeof_gr_complex, sample_rate=sample_rate, vec_rate=self.__frame_rate, # TODO doesn't need to be coupled vec_len=self.__time_length)
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 = 2.4e6 ################################################## # Blocks ################################################## 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(891e6, 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(1, 0) self.rtlsdr_source_0.set_gain_mode(0, 0) self.rtlsdr_source_0.set_gain(50, 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) try: self.rtlsdr_source_0.get_sample_rates().start() except RuntimeError: print "Source has no sample rates (wrong device arguments?)." sys.exit(1) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=1024, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=False, ) self.blocks_float_to_char_0 = blocks.float_to_char(1024, 1) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1024, "gsm_power.txt", False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.rtlsdr_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_float_to_char_0, 0)) self.connect((self.blocks_float_to_char_0, 0), (self.blocks_file_sink_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 = 2048000 self.fft_size = fft_size = 4096 ################################################## # Message queues (added by grcconvert) ################################################## self.msgq_out = blocks_message_sink_0_msgq_out = gr.msg_queue(2) ################################################## # Blocks ################################################## self.rtlsdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "rtl=0") 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(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.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=4096, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=False, ) self.blocks_message_sink_0 = blocks.message_sink( gr.sizeof_float * 4096, blocks_message_sink_0_msgq_out, False) ################################################## # Connections ################################################## self.connect((self.rtlsdr_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_message_sink_0, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 3200000 self.fftsize = fftsize = 1024 ################################################## # Blocks ################################################## 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(1420000000, 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(True, 0) self.osmosdr_source_0.set_gain(49.6, 0) self.osmosdr_source_0.set_if_gain(40, 0) self.osmosdr_source_0.set_bb_gain(16, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fftsize, ref_scale=2, frame_rate=0.5, avg_alpha=0.1, average=True, ) self.blocks_vector_to_stream_0 = blocks.vector_to_stream( gr.sizeof_float * 1, fftsize) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float * 1, "MYPIPEFFT", True) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.logpwrfft_x_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 = 2048000 self.fft_size = fft_size = 4096 ################################################## # Message queues (added by grcconvert) ################################################## self.msgq_out = blocks_message_sink_0_msgq_out = gr.msg_queue(2) ################################################## # Blocks ################################################## self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + "rtl=0" ) 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(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.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=4096, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=False, ) self.blocks_message_sink_0 = blocks.message_sink(gr.sizeof_float*4096, blocks_message_sink_0_msgq_out, False) ################################################## # Connections ################################################## self.connect((self.rtlsdr_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_message_sink_0, 0))
def __init__(self, samp_rate, freq, gain, fft_size, framerate): gr.top_block.__init__(self, "Top Block") # self.usrp = uhd.usrp_source( # ",".join(("", "")), # uhd.stream_args( # cpu_format="fc32", # channels=range(1), # ), # ) # self.usrp.set_samp_rate(samp_rate) # self.usrp.set_center_freq(freq, 0) # self.usrp.set_gain(gain, 0) shift = 0 rx_rf_gain = 0 rx_bb_gain = 15 self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + 'hackrf=0' ) self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(freq+shift, 0) self.osmosdr_source_0.set_freq_corr(0, 0) self.osmosdr_source_0.set_dc_offset_mode(2, 0) self.osmosdr_source_0.set_iq_balance_mode(2, 0) self.osmosdr_source_0.set_gain_mode(True, 0) self.osmosdr_source_0.set_gain(rx_rf_gain, 0) self.osmosdr_source_0.set_if_gain(gain, 0) self.osmosdr_source_0.set_bb_gain(rx_bb_gain, 0) self.osmosdr_source_0.set_antenna('', 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.fft = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_size, ref_scale=1, frame_rate=framerate, avg_alpha=1, average=False, ) self.fft_broadcast = fft_broadcast_sink(fft_size) self.connect((self.fft, 0), (self.fft_broadcast, 0)) #self.connect((self.usrp, 0), (self.fft, 0)) self.connect((self.osmosdr_source_0, 0), (self.fft, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 3200000 self.fftsize = fftsize = 1024 ################################################## # Blocks ################################################## 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(1420000000, 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(True, 0) self.osmosdr_source_0.set_gain(49.6, 0) self.osmosdr_source_0.set_if_gain(40, 0) self.osmosdr_source_0.set_bb_gain(16, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fftsize, ref_scale=2, frame_rate=0.5, avg_alpha=0.1, average=True, ) self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_float*1, fftsize) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float*1, "MYPIPEFFT", True) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.logpwrfft_x_0, 0))
def __init__(self): gr.top_block.__init__(self, "Adquisicion de datos del espectro") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 32000 self.nfft = nfft = 1024 self.ganancia = ganancia = 0.2 self.frec_central = frec_central = 0 ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(frec_central, 0) self.uhd_usrp_source_0.set_gain(50, 0) self.uhd_usrp_source_0.set_antenna('TX/RX', 0) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=nfft, ref_scale=2, frame_rate=30, avg_alpha=0.3, average=True, ) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_float * nfft, '/home/root/radioastronomia/espectro', False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.logpwrfft_x_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.logpwrfft_x_0, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate = <SampleRate> self.fftsize = fftsize = <FFTSize> ################################################## # Blocks ################################################## 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(<CenterFrequency>, 0) self.osmosdr_source_0.set_freq_corr(0, 0) self.osmosdr_source_0.set_dc_offset_mode(<DCOffset>, 0) self.osmosdr_source_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0.set_gain_mode(<UseAGC>, 0) self.osmosdr_source_0.set_gain(<Gain>, 0) self.osmosdr_source_0.set_if_gain(<IFGain>, 0) self.osmosdr_source_0.set_bb_gain(<BBGain>, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fftsize, ref_scale=2, frame_rate=<FFTFrameRate>, avg_alpha=<FFTAverageAlpha>, average=True, ) self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_float*1, fftsize) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float*1, "MYPIPEFFT", True) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.logpwrfft_x_0, 0))
def __init__(self): gr.top_block.__init__(self, "Monitoreo del espectro") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 32000 self.gain = gain = 50 self.freq = freq = 96000000 self.fft_size = fft_size = 4096 ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(freq, 0) self.uhd_usrp_source_0.set_gain(gain, 0) self.uhd_usrp_source_0.set_antenna('TX/RX', 0) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_size, ref_scale=2, frame_rate=30, avg_alpha=0.2, average=True, ) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_float * fft_size, '/home/root/centrotic/espectro', False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.logpwrfft_x_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.logpwrfft_x_0, 0))
def __rebuild(self): overlap_factor = int(math.ceil(_maximum_fft_rate * self.__freq_resolution / self.__sample_rate)) self.__fft_sink = MessageDistributorSink( itemsize=self.__freq_resolution * gr.sizeof_float, context=self.__context, migrate=self.__fft_sink) self.__overlapper = _OverlapGimmick( size=self.__freq_resolution, factor=overlap_factor) self.__logpwrfft = logpwrfft.logpwrfft_c( sample_rate=self.__sample_rate * overlap_factor, fft_size=self.__freq_resolution, ref_scale=2, frame_rate=self.__frame_rate, avg_alpha=1.0, average=False) # adjust units so displayed level is independent of resolution (log power per bandwidth rather than per bin) # TODO work out and document exactly what units we're using self.__fft_rescale = blocks.add_const_vff( [10 * math.log10(self.__freq_resolution)] * self.__freq_resolution)
def __init__(self): gr.top_block.__init__(self, "Adquisicion de datos del espectro") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 30e6 self.nfft = nfft = 1024 self.ganancia = ganancia = 30 self.frec_central = frec_central = 470e6 ################################################## # Blocks ################################################## self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=nfft, ref_scale=2, frame_rate=30, avg_alpha=0.3, average=True, ) self.limesdr_source_0 = limesdr.source('00090726074D311B', 0, '') self.limesdr_source_0.set_sample_rate(samp_rate) self.limesdr_source_0.set_center_freq(frec_central, 0) self.limesdr_source_0.set_bandwidth(samp_rate, 0) self.limesdr_source_0.set_gain(ganancia, 0) self.limesdr_source_0.set_antenna(255, 0) self.limesdr_source_0.calibrate(samp_rate, 0) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_float * nfft, '/home/uis-e3t/Documentos/tmp_plataforma/espectro', False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.limesdr_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_file_sink_0, 0))
def __init__(self): gr.top_block.__init__(self) ############# Define variables ############# self.samp_rate = 2e6 self.fc = 100e3 self.fft_size = 2048 self.num_avg_window = 25 self.fileNum = 1 self.filt_win_size = 501 self.store_loc = '/root/USRP/' self.uhd_usrp_source = uhd.usrp_source( ",".join(('addr=192.168.10.2', "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source.set_samp_rate(self.samp_rate) self.uhd_usrp_source.set_center_freq(self.fc, 0) self.uhd_usrp_source.set_gain(0, 0) self.uhd_usrp_source.set_antenna('TX/RX', 0) self.uhd_usrp_source.set_bandwidth(1e6, 0) self.lpwrfft = logpwrfft.logpwrfft_c( sample_rate=self.samp_rate, fft_size=self.fft_size, ref_scale=2, frame_rate=1000, avg_alpha=1.0, average=False, ) self.data_sink = blocks.vector_sink_f(2048, int(2e6)) ############# Connect blocks ############# self.connect((self.uhd_usrp_source, 0), (self.lpwrfft, 0)) self.connect((self.lpwrfft, 0), (self.data_sink, 0))
def __init__(self, samp_rate, fft_size, frame_rate, iqFileName, fftFileName): # boilerplate gr.top_block.__init__(self) ################################################## # Variables ################################################## self.samp_rate = samp_rate self.fft_size = fft_size self.frame_rate = frame_rate ################################################## # Blocks ################################################## self.blocks_file_source_0 = blocks.file_source( gr.sizeof_gr_complex*1, iqFileName, False) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_size, ref_scale=2, frame_rate=frame_rate, avg_alpha=1.0, average=False) self.blocks_file_sink_0 = blocks.file_sink( gr.sizeof_float*fft_size, fftFileName, False) self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_file_sink_0, 0))
def __init__(self, clock=100.0e6, dcg=1, decln=-28.0, devid="addr=192.168.10.2", fftsize=8192, frequency=1.406e9, maxg=50, rfgain=0.0, rxant="", spa=1, srate=10.0e6, subdev="A:0", tpint=2.0): grc_wxgui.top_block_gui.__init__(self, title="Total Power Radiometer - N200 with Filter") ################################################## # Parameters ################################################## self.clock = clock self.dcg = dcg self.decln = decln self.devid = devid self.fftsize = fftsize self.frequency = frequency self.maxg = maxg self.rfgain = rfgain self.rxant = rxant self.spa = spa self.srate = srate self.subdev = subdev self.tpint = tpint ################################################## # Variables ################################################## self.israte = israte = srate self.samp_rate = samp_rate = int(israte) self.prefix = prefix = "tpr_" self.filter_band = filter_band = 500e3 self.variable_static_text_0_0_0_0 = variable_static_text_0_0_0_0 = clock self.variable_static_text_0_0_0 = variable_static_text_0_0_0 = devid self.variable_static_text_0_0 = variable_static_text_0_0 = subdev self.variable_static_text_0 = variable_static_text_0 = israte self.taps = taps = firdes.low_pass(1.0, samp_rate,filter_band, 1000) self.spec_data_fifo = spec_data_fifo = "spectrum_" + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat" self.spavg = spavg = int(spa) self.scope_rate = scope_rate = 2 self.recfile_tpr = recfile_tpr = prefix + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat" self.recfile_kelvin = recfile_kelvin = prefix+"kelvin" + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat" self.rec_button_tpr = rec_button_tpr = 1 self.rec_button_iq = rec_button_iq = 1 self.integ = integ = tpint self.idecln = idecln = decln self.gain = gain = 26 self.freq = freq = frequency self.file_rate = file_rate = 2.0 self.fftrate = fftrate = int(samp_rate/fftsize) self.det_rate = det_rate = int(20.0) self.dc_gain = dc_gain = int(dcg) self.calib_2 = calib_2 = -342.774 self.calib_1 = calib_1 = 4.0755e3 self.add_filter = add_filter = 0 ################################################## # Blocks ################################################## self.Main = self.Main = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.Main.AddPage(grc_wxgui.Panel(self.Main), "N200 Control Panel") self.Main.AddPage(grc_wxgui.Panel(self.Main), "TPR Measurements") self.Add(self.Main) _spavg_sizer = wx.BoxSizer(wx.VERTICAL) self._spavg_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), sizer=_spavg_sizer, value=self.spavg, callback=self.set_spavg, label="Spectral Averaging (Seconds)", converter=forms.int_converter(), proportion=0, ) self._spavg_slider = forms.slider( parent=self.Main.GetPage(0).GetWin(), sizer=_spavg_sizer, value=self.spavg, callback=self.set_spavg, minimum=1, maximum=20, num_steps=20, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Main.GetPage(0).GridAdd(_spavg_sizer, 1, 1, 1, 1) self._rec_button_tpr_chooser = forms.button( parent=self.Main.GetPage(0).GetWin(), value=self.rec_button_tpr, callback=self.set_rec_button_tpr, label="Record TPR Data", choices=[0,1], labels=['Stop','Start'], ) self.Main.GetPage(0).GridAdd(self._rec_button_tpr_chooser, 4, 1, 1, 1) self._rec_button_iq_chooser = forms.button( parent=self.Main.GetPage(0).GetWin(), value=self.rec_button_iq, callback=self.set_rec_button_iq, label="Record I/Q Data", choices=[0,1], labels=['Stop','Start'], ) self.Main.GetPage(0).GridAdd(self._rec_button_iq_chooser, 4, 0, 1, 1) self._israte_chooser = forms.radio_buttons( parent=self.Main.GetPage(0).GetWin(), value=self.israte, callback=self.set_israte, label="Sample Rate (BW)", choices=[1e6,2e6,5e6,10e6,25e6], labels=['1 MHz','2 MHz','5 MHz','10 MHz','25 MHz'], style=wx.RA_HORIZONTAL, ) self.Main.GetPage(0).GridAdd(self._israte_chooser, 1, 3, 1, 1) _integ_sizer = wx.BoxSizer(wx.VERTICAL) self._integ_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), sizer=_integ_sizer, value=self.integ, callback=self.set_integ, label="Integration Time (Seconds)", converter=forms.float_converter(), proportion=0, ) self._integ_slider = forms.slider( parent=self.Main.GetPage(0).GetWin(), sizer=_integ_sizer, value=self.integ, callback=self.set_integ, minimum=1, maximum=60, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Main.GetPage(0).GridAdd(_integ_sizer, 0, 2, 1, 1) self._freq_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), value=self.freq, callback=self.set_freq, label="Center Frequency (Hz)", converter=forms.float_converter(), ) self.Main.GetPage(0).GridAdd(self._freq_text_box, 0, 0, 1, 1) self._dc_gain_chooser = forms.radio_buttons( parent=self.Main.GetPage(0).GetWin(), value=self.dc_gain, callback=self.set_dc_gain, label="DC Gain", choices=[1, 10, 100, 1000, 10000], labels=[], style=wx.RA_HORIZONTAL, ) self.Main.GetPage(0).GridAdd(self._dc_gain_chooser, 1, 0, 1, 1) self._calib_2_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), value=self.calib_2, callback=self.set_calib_2, label="Calibration value 2", converter=forms.float_converter(), ) self.Main.GetPage(0).GridAdd(self._calib_2_text_box, 3, 1, 1, 1) self._calib_1_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), value=self.calib_1, callback=self.set_calib_1, label="Calibration value 1", converter=forms.float_converter(), ) self.Main.GetPage(0).GridAdd(self._calib_1_text_box, 3, 0, 1, 1) self._add_filter_chooser = forms.button( parent=self.Main.GetPage(0).GetWin(), value=self.add_filter, callback=self.set_add_filter, label="Filter On/Off", choices=[0,1], labels=['Off','On'], ) self.Main.GetPage(0).GridAdd(self._add_filter_chooser, 3, 3, 1, 1) self.wxgui_scopesink2_2 = scopesink2.scope_sink_f( self.Main.GetPage(1).GetWin(), title="Total Power", sample_rate=2, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=False, num_inputs=1, trig_mode=wxgui.TRIG_MODE_STRIPCHART, y_axis_label="power level", ) self.Main.GetPage(1).Add(self.wxgui_scopesink2_2.win) self.wxgui_numbersink2_0_0 = numbersink2.number_sink_f( self.Main.GetPage(1).GetWin(), unit="", minval=0, maxval=.2, factor=1, decimal_places=6, ref_level=0, sample_rate=scope_rate, number_rate=15, average=False, avg_alpha=None, label="Raw Power level", peak_hold=False, show_gauge=True, ) self.Main.GetPage(1).Add(self.wxgui_numbersink2_0_0.win) self.wxgui_numbersink2_0 = numbersink2.number_sink_f( self.Main.GetPage(1).GetWin(), unit="Kelvin", minval=0, maxval=400, factor=1, decimal_places=6, ref_level=0, sample_rate=scope_rate, number_rate=15, average=False, avg_alpha=None, label="Calibrated Temperature", peak_hold=False, show_gauge=True, ) self.Main.GetPage(1).Add(self.wxgui_numbersink2_0.win) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.Main.GetPage(0).GetWin(), baseband_freq=freq, y_per_div=10, y_divs=10, ref_level=50, ref_scale=2.0, sample_rate=israte, fft_size=1024, fft_rate=5, average=True, avg_alpha=0.1, title="Spectrum", peak_hold=False, size=(800,400), ) self.Main.GetPage(0).Add(self.wxgui_fftsink2_0.win) self._variable_static_text_0_0_0_0_static_text = forms.static_text( parent=self.Main.GetPage(0).GetWin(), value=self.variable_static_text_0_0_0_0, callback=self.set_variable_static_text_0_0_0_0, label="N200 Clock", converter=forms.float_converter(), ) self.Main.GetPage(0).GridAdd(self._variable_static_text_0_0_0_0_static_text, 2, 3, 1, 1) self._variable_static_text_0_0_0_static_text = forms.static_text( parent=self.Main.GetPage(0).GetWin(), value=self.variable_static_text_0_0_0, callback=self.set_variable_static_text_0_0_0, label="Device", converter=forms.str_converter(), ) self.Main.GetPage(0).GridAdd(self._variable_static_text_0_0_0_static_text, 2, 2, 1, 1) self._variable_static_text_0_0_static_text = forms.static_text( parent=self.Main.GetPage(0).GetWin(), value=self.variable_static_text_0_0, callback=self.set_variable_static_text_0_0, label="SubDev", converter=forms.str_converter(), ) self.Main.GetPage(0).GridAdd(self._variable_static_text_0_0_static_text, 2, 1, 1, 1) self._variable_static_text_0_static_text = forms.static_text( parent=self.Main.GetPage(0).GetWin(), value=self.variable_static_text_0, callback=self.set_variable_static_text_0, label="Samp rate", converter=forms.float_converter(), ) self.Main.GetPage(0).GridAdd(self._variable_static_text_0_static_text, 2, 0, 1, 1) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fftsize, ref_scale=2, frame_rate=fftrate, avg_alpha=1.0/float(spavg*fftrate), average=True, ) self._idecln_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), value=self.idecln, callback=self.set_idecln, label="Declination", converter=forms.float_converter(), ) self.Main.GetPage(0).GridAdd(self._idecln_text_box, 1, 2, 1, 1) _gain_sizer = wx.BoxSizer(wx.VERTICAL) self._gain_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), sizer=_gain_sizer, value=self.gain, callback=self.set_gain, label="RF Gain (dB)", converter=forms.float_converter(), proportion=0, ) self._gain_slider = forms.slider( parent=self.Main.GetPage(0).GetWin(), sizer=_gain_sizer, value=self.gain, callback=self.set_gain, minimum=0, maximum=maxg, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Main.GetPage(0).GridAdd(_gain_sizer, 0, 1, 1, 1) _filter_band_sizer = wx.BoxSizer(wx.VERTICAL) self._filter_band_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), sizer=_filter_band_sizer, value=self.filter_band, callback=self.set_filter_band, label="Filter Bandwidth", converter=forms.float_converter(), proportion=0, ) self._filter_band_slider = forms.slider( parent=self.Main.GetPage(0).GetWin(), sizer=_filter_band_sizer, value=self.filter_band, callback=self.set_filter_band, minimum=100e3, maximum=9e6, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Main.GetPage(0).GridAdd(_filter_band_sizer, 3, 2, 1, 1) self.fft_filter_xxx_0 = filter.fft_filter_ccc(1, (taps), 1) self.fft_filter_xxx_0.declare_sample_delay(0) self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vff((calib_1, )) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((dc_gain, )) self.blocks_keep_one_in_n_3 = blocks.keep_one_in_n(gr.sizeof_float*fftsize, fftrate) self.blocks_keep_one_in_n_1 = blocks.keep_one_in_n(gr.sizeof_float*1, int(det_rate/file_rate)) self.blocks_file_sink_5 = blocks.file_sink(gr.sizeof_float*fftsize, spec_data_fifo, False) self.blocks_file_sink_5.set_unbuffered(True) self.blocks_file_sink_4 = blocks.file_sink(gr.sizeof_float*1, recfile_tpr, False) self.blocks_file_sink_4.set_unbuffered(True) self.blocks_file_sink_1 = blocks.file_sink(gr.sizeof_gr_complex*1, prefix+"iq_raw" + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat", False) self.blocks_file_sink_1.set_unbuffered(False) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float*1, recfile_kelvin, False) self.blocks_file_sink_0.set_unbuffered(True) self.blocks_add_const_vxx_1 = blocks.add_const_vff((calib_2, )) self.blks2_valve_2 = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool(rec_button_iq)) self.blks2_valve_1 = grc_blks2.valve(item_size=gr.sizeof_float*1, open=bool(0)) self.blks2_valve_0 = grc_blks2.valve(item_size=gr.sizeof_float*1, open=bool(rec_button_tpr)) self.blks2_selector_0 = grc_blks2.selector( item_size=gr.sizeof_gr_complex*1, num_inputs=2, num_outputs=1, input_index=add_filter, output_index=0, ) self.analog_noise_source_x_0 = analog.noise_source_c(analog.GR_GAUSSIAN, .5, 0) self.TPR_0 = TPR( integ=integ, samp_rate=samp_rate, det_rate=det_rate, ) ################################################## # Connections ################################################## self.connect((self.TPR_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.analog_noise_source_x_0, 0), (self.blks2_selector_0, 0)) self.connect((self.analog_noise_source_x_0, 0), (self.fft_filter_xxx_0, 0)) self.connect((self.blks2_selector_0, 0), (self.TPR_0, 0)) self.connect((self.blks2_selector_0, 0), (self.blks2_valve_2, 0)) self.connect((self.blks2_selector_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.blks2_selector_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.blks2_valve_0, 0), (self.blocks_file_sink_4, 0)) self.connect((self.blks2_valve_1, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blks2_valve_2, 0), (self.blocks_file_sink_1, 0)) self.connect((self.blocks_add_const_vxx_1, 0), (self.blks2_valve_1, 0)) self.connect((self.blocks_add_const_vxx_1, 0), (self.wxgui_numbersink2_0, 0)) self.connect((self.blocks_keep_one_in_n_1, 0), (self.blks2_valve_0, 0)) self.connect((self.blocks_keep_one_in_n_1, 0), (self.blocks_multiply_const_vxx_1, 0)) self.connect((self.blocks_keep_one_in_n_3, 0), (self.blocks_file_sink_5, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_keep_one_in_n_1, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.wxgui_numbersink2_0_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.wxgui_scopesink2_2, 0)) self.connect((self.blocks_multiply_const_vxx_1, 0), (self.blocks_add_const_vxx_1, 0)) self.connect((self.fft_filter_xxx_0, 0), (self.blks2_selector_0, 1)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_keep_one_in_n_3, 0))
def __init__(self): gr.top_block.__init__(self, "Wifi Transceiver Csma Tuntap 4") ################################################## # Variables ################################################## self.tx_gain = tx_gain = 750e-3 self.samp_rate = samp_rate = 5e6 self.rx_gain = rx_gain = 500e-3 self.pdu_length = pdu_length = 500 self.mac_dst = mac_dst = [0x12,0x34,0x56,0x78,0x90,0xaa] self.mac_addr = mac_addr = [0x12,0x34,0x56,0x78,0x90,0xae] self.lo_offset = lo_offset = 0 self.interval = interval = 1e3 self.freq = freq = 2.52e9 self.encoding = encoding = 0 self.chan_est = chan_est = 0 ################################################## # Blocks ################################################## self.wifi_phy_hier_0 = wifi_phy_hier( bandwidth=samp_rate, chan_est=chan_est, encoding=encoding, frequency=freq, sensitivity=0.56, ) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(uhd.tune_request(freq, rf_freq = freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_source_0.set_normalized_gain(rx_gain, 0) self.uhd_usrp_sink_0_0 = uhd.usrp_sink( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), "packet_len", ) self.uhd_usrp_sink_0_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_sink_0_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0_0.set_center_freq(uhd.tune_request(freq, rf_freq = freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_sink_0_0.set_normalized_gain(tx_gain, 0) self.toolkit_cs_0 = toolkit.cs() self.macprotocols_frame_buffer_0 = macprotocols.frame_buffer(256, True, 0, True) self.macprotocols_csma_ca_0 = macprotocols.csma_ca((mac_addr), 9, 16, 34, 1000, -60, True) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=64, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=False, ) self.ieee802_11_parse_mac_0 = ieee802_11.parse_mac(False, False) self.ieee802_11_mac_0_0 = ieee802_11.mac((mac_addr), (mac_dst), ([0xff, 0xff, 0xff, 0xff, 0xff, 255])) (self.ieee802_11_mac_0_0).set_min_output_buffer(256) (self.ieee802_11_mac_0_0).set_max_output_buffer(4096) self.ieee802_11_ether_encap_0 = ieee802_11.ether_encap(False) self.foo_wireshark_connector_0_0 = foo.wireshark_connector(127, False) self.foo_wireshark_connector_0 = foo.wireshark_connector(127, False) self.foo_packet_pad2_0 = foo.packet_pad2(False, False, 0.001, 10000, 10000) (self.foo_packet_pad2_0).set_min_output_buffer(100000) self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_float*1, 64) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 440, False) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.6, )) (self.blocks_multiply_const_vxx_0).set_min_output_buffer(100000) self.blocks_file_sink_0_0 = blocks.file_sink(gr.sizeof_char*1, "/tmp/wifi_rx.pcap", False) self.blocks_file_sink_0_0.set_unbuffered(True) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "/tmp/wifi_rx_all.pcap", False) self.blocks_file_sink_0.set_unbuffered(True) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.ieee802_11_ether_encap_0, 'from tap')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to tap'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to wifi'), (self.ieee802_11_mac_0_0, 'app in')) self.msg_connect((self.ieee802_11_mac_0_0, 'phy out'), (self.macprotocols_frame_buffer_0, 'app in')) self.msg_connect((self.macprotocols_csma_ca_0, 'frame to app'), (self.foo_wireshark_connector_0_0, 'in')) self.msg_connect((self.macprotocols_csma_ca_0, 'frame to app'), (self.ieee802_11_ether_encap_0, 'from wifi')) self.msg_connect((self.macprotocols_csma_ca_0, 'frame to app'), (self.ieee802_11_mac_0_0, 'phy in')) self.msg_connect((self.macprotocols_csma_ca_0, 'frame request'), (self.macprotocols_frame_buffer_0, 'req in 0')) self.msg_connect((self.macprotocols_csma_ca_0, 'request to cs'), (self.toolkit_cs_0, 'in_msg')) self.msg_connect((self.macprotocols_csma_ca_0, 'frame to phy'), (self.wifi_phy_hier_0, 'mac_in')) self.msg_connect((self.macprotocols_frame_buffer_0, 'frame out 0'), (self.macprotocols_csma_ca_0, 'frame from buffer')) self.msg_connect((self.toolkit_cs_0, 'out_msg'), (self.macprotocols_csma_ca_0, 'cs in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.foo_wireshark_connector_0, 'in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_parse_mac_0, 'in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.macprotocols_csma_ca_0, 'frame from phy')) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.toolkit_cs_0, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.uhd_usrp_sink_0_0, 0)) self.connect((self.foo_wireshark_connector_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.foo_wireshark_connector_0_0, 0), (self.blocks_file_sink_0_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wifi_phy_hier_0, 0)) self.connect((self.wifi_phy_hier_0, 0), (self.blocks_multiply_const_vxx_0, 0))
def __init__(self, center_freq, sbx_db_tx_gain, sbx_db_rx_gain, bb_ampl, dir_filename1, dir_filename2): gr.top_block.__init__(self) ################################################## # Variables ################################################## self.TxParams = TxParams = struct({ 'NFFT': 2048, 'UsedSC': 1680, 'CPlen': 512, 'Ovx': 6, 'N': 5000, 'SampRate': 100e6 / 50.0, 'CenterFreq': center_freq }) self.lo_offset = lo_offset = 3.0 * TxParams.SampRate ################################################## # 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(TxParams.SampRate) self.uhd_usrp_source_0.set_center_freq(TxParams.CenterFreq, 0) self.uhd_usrp_source_0.set_gain(sbx_db_rx_gain, 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("addr=192.168.10.2", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(TxParams.SampRate) self.uhd_usrp_sink_0.set_center_freq( uhd.tune_request(TxParams.CenterFreq, rf_freq=(TxParams.CenterFreq + lo_offset), rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_sink_0.set_gain(sbx_db_tx_gain, 0) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=TxParams.SampRate, fft_size=8192, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=False, ) self.dpd_Agilent_N1996A_0 = dpd.Agilent_N1996A('169.254.251.20', TxParams.CenterFreq, TxParams.SampRate, 5.1e3, 1001) self.blocks_file_sink_1 = blocks.file_sink(gr.sizeof_float * 8192, dir_filename2, False) self.blocks_file_sink_1.set_unbuffered(False) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char * 4096, dir_filename1, False) self.blocks_file_sink_0.set_unbuffered(False) self.hier_dpd_elliptic_filter_0 = hier_dpd_elliptic_filter() self.dpd_upsample_0 = dpd.upsample(ovx=TxParams.Ovx, ) self.digital_ofdm_cyclic_prefixer_0 = digital.ofdm_cyclic_prefixer( TxParams.NFFT, (TxParams.NFFT + TxParams.CPlen), 32, '') self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vcc( (bb_ampl, )) self.basic_qpskofdm_tx_withoutCP_0 = dpd.basic_qpskofdm_tx_withoutCP( N=TxParams.N, NFFT=TxParams.NFFT, used_sc=TxParams.UsedSC, syms_filename='/tmp/qpsk_syms.bin') ################################################## # Connections ################################################## self.connect((self.basic_qpskofdm_tx_withoutCP_0, 0), (self.digital_ofdm_cyclic_prefixer_0, 0)) self.connect((self.blocks_multiply_const_vxx_1, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.digital_ofdm_cyclic_prefixer_0, 0), (self.dpd_upsample_0, 0)) self.connect((self.dpd_upsample_0, 0), (self.hier_dpd_elliptic_filter_0, 0)) self.connect((self.hier_dpd_elliptic_filter_0, 0), (self.blocks_multiply_const_vxx_1, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_file_sink_1, 0)) self.connect((self.dpd_Agilent_N1996A_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.logpwrfft_x_0, 0))
def __init__(self,file_name): grc_wxgui.top_block_gui.__init__(self, title="Test") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 10e6 self.freq = freq = 93.5e6 ################################################## # Blocks ################################################## self.notebook_0 = self.notebook_0 = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "RF Specturm") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Demod Spectrum") self.Add(self.notebook_0) self._freq_text_box = forms.text_box( parent=self.GetWin(), value=self.freq, callback=self.set_freq, label='freq', converter=forms.float_converter(), ) self.Add(self._freq_text_box) self.wxgui_fftsink2_1 = fftsink2.fft_sink_f( self.notebook_0.GetPage(1).GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=500e3, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title="FFT Plot (Demod)", peak_hold=False, ) self.notebook_0.GetPage(1).Add(self.wxgui_fftsink2_1.win) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.notebook_0.GetPage(0).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=False, avg_alpha=None, title="FFT Plot (RF)", peak_hold=False, ) self.notebook_0.GetPage(0).Add(self.wxgui_fftsink2_0.win) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(freq, 0) self.uhd_usrp_source_0.set_gain(15, 0) self.uhd_usrp_source_0.set_antenna("RX2", 0) self.rational_resampler_xxx_0 = filter.rational_resampler_fff( interpolation=96, decimation=500, taps=None, fractional_bw=None, ) self.low_pass_filter_0 = filter.fir_filter_ccf(20, firdes.low_pass( 1, samp_rate, 100e3, 10e3, firdes.WIN_HAMMING, 6.76)) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=1024, ref_scale=2, frame_rate=15, avg_alpha=0.133333, average=True, ) save_file_name = "/home/xi/fm_location/data/"+file_name+".dat" self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float*1024, save_file_name, False) self.blocks_file_sink_0.set_unbuffered(True) self.audio_sink_0 = audio.sink(96000, "", True) self.analog_wfm_rcv_0 = analog.wfm_rcv( quad_rate=500e3, audio_decimation=1, ) ################################################## # Connections ################################################## self.connect((self.analog_wfm_rcv_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.analog_wfm_rcv_0, 0), (self.wxgui_fftsink2_1, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.analog_wfm_rcv_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.audio_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_fftsink2_0, 0))
def __init__(self, center_freq=433920000): gr.top_block.__init__(self, "Rx 2400 R2") ################################################## # Parameters ################################################## self.center_freq = center_freq ################################################## # Variables ################################################## self.sps = sps = 10 self.baud_rate = baud_rate = 2530 self.samp_rate_tx = samp_rate_tx = 400000 self.samp_rate = samp_rate = baud_rate * sps self.rx_vga_gain = rx_vga_gain = 35 self.rx_lna_gain = rx_lna_gain = 6 self.quad_gain = quad_gain = 8 self.freq = freq = 433920000 self._fft_size_config = ConfigParser.ConfigParser() self._fft_size_config.read('default') try: fft_size = self._fft_size_config.getint('main', 'key') except: fft_size = 2048 self.fft_size = fft_size ################################################## # Blocks ################################################## self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + 'bladerf=0') self.osmosdr_source_0.set_sample_rate(samp_rate_tx) 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(1, 0) self.osmosdr_source_0.set_iq_balance_mode(1, 0) self.osmosdr_source_0.set_gain_mode(False, 0) self.osmosdr_source_0.set_gain(rx_lna_gain, 0) self.osmosdr_source_0.set_if_gain(0, 0) self.osmosdr_source_0.set_bb_gain(rx_vga_gain, 0) self.osmosdr_source_0.set_antenna('', 0) self.osmosdr_source_0.set_bandwidth(1500000, 0) self.low_pass_filter_0 = filter.fir_filter_ccf( 1, firdes.low_pass(1, samp_rate_tx, 6000, 6000, firdes.WIN_HAMMING, 6.76)) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate_tx, fft_size=fft_size, ref_scale=2, frame_rate=1, avg_alpha=1.0, average=False, ) self.fir_filter_xxx_0 = filter.fir_filter_fff(16, (firdes.low_pass( 1.0, baud_rate * sps, baud_rate, 0.25 * baud_rate))) self.fir_filter_xxx_0.declare_sample_delay(0) self.digital_pfb_clock_sync_xxx_0 = digital.pfb_clock_sync_fff( sps, 2 * 3.14159265 / 100, (firdes.low_pass( 1.0, baud_rate * sps, baud_rate, 0.25 * baud_rate)), 32, 16, 1.5, 1) self.digital_binary_slicer_fb_0 = digital.binary_slicer_fb() self.blocks_vector_to_stream_0 = blocks.vector_to_stream( gr.sizeof_float * fft_size, 1) self.blocks_file_sink_0_0 = blocks.file_sink(gr.sizeof_char * 1, '_out.bin', False) self.blocks_file_sink_0_0.set_unbuffered(True) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float * fft_size, 'log_power_fft_data.bin', False) self.blocks_file_sink_0.set_unbuffered(False) self.blocks_add_const_vxx_0 = blocks.add_const_vff((0, )) self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf( quad_gain) self.analog_pwr_squelch_xx_0 = analog.pwr_squelch_cc( -70, 1e-4, 0, True) ################################################## # Connections ################################################## self.connect((self.analog_pwr_squelch_xx_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.analog_quadrature_demod_cf_0, 0), (self.blocks_add_const_vxx_0, 0)) self.connect((self.blocks_add_const_vxx_0, 0), (self.digital_pfb_clock_sync_xxx_0, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_binary_slicer_fb_0, 0), (self.blocks_file_sink_0_0, 0)) self.connect((self.digital_pfb_clock_sync_xxx_0, 0), (self.fir_filter_xxx_0, 0)) self.connect((self.fir_filter_xxx_0, 0), (self.digital_binary_slicer_fb_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.analog_quadrature_demod_cf_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.analog_pwr_squelch_xx_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.logpwrfft_x_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.stop_freq = stop_freq = 180e6 self.step = step = 1000e3 self.start_freq = start_freq = 170e6 self.samp_rate = samp_rate = 1024e3 self.mag_probe = mag_probe = 0 self.decim = decim = 4 self.center_freq = center_freq = 175e6 self.adj_ch_weight = adj_ch_weight = 1 self.Run_DSA = Run_DSA = 'Run' ################################################## # Blocks ################################################## #self.mag = analog.probe_avg_mag_sqrd_c(0, 1) self.fft_probe = blocks.probe_signal_vf(1024) self._stop_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.stop_freq, callback=self.set_stop_freq, label="Frequency Stop", converter=forms.float_converter(), ) self.GridAdd(self._stop_freq_text_box, 1, 2, 1, 1) self._step_text_box = forms.text_box( parent=self.GetWin(), value=self.step, callback=self.set_step, label="Frequency Step", converter=forms.float_converter(), ) self.GridAdd(self._step_text_box, 1, 3, 1, 1) self._start_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.start_freq, callback=self.set_start_freq, label="Frequency Start", converter=forms.float_converter(), ) self.logpwrfft = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=1024, ref_scale=2, frame_rate=30, avg_alpha=1, average=False, ) self.GridAdd(self._start_freq_text_box, 1, 1, 1, 1) self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + 'rtl_tcp=192.168.2.12:1234' ) self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(center_freq, 0) self.osmosdr_source_0.set_freq_corr(0, 0) self.osmosdr_source_0.set_dc_offset_mode(0, 0) self.osmosdr_source_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0.set_gain_mode(False, 0) self.osmosdr_source_0.set_gain(10, 0) self.osmosdr_source_0.set_if_gain(20, 0) self.osmosdr_source_0.set_bb_gain(20, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(0, 0) #def _mag_probe_probe(): # while True: # val = self.mag.level() # try: self.set_mag_probe(val) # except AttributeError, e: pass # time.sleep(1.0/(10)) #_mag_probe_thread = threading.Thread(target=_mag_probe_probe) #_mag_probe_thread.daemon = True #_mag_probe_thread.start() self._adj_ch_weight_text_box = forms.text_box( parent=self.GetWin(), value=self.adj_ch_weight, callback=self.set_adj_ch_weight, label="Adjacent Channel Weight", converter=forms.float_converter(), ) self.GridAdd(self._adj_ch_weight_text_box, 1, 4, 1, 1) self._Run_DSA_chooser = forms.button( parent=self.GetWin(), value=self.Run_DSA, callback=self.set_Run_DSA, label="DSA", choices=['Run'], labels=[], ) self.GridAdd(self._Run_DSA_chooser, 1, 0, 1, 1) ################################################## # Connections ################################################## self.connect((self.osmosdr_source_0, 0), (self.logpwrfft, 0)) self.connect((self.logpwrfft,0),(self.fft_probe,0))
def __init__(self): gr.top_block.__init__(self, "Airspy Spectrum Analyzer") Qt.QWidget.__init__(self) self.setWindowTitle("Airspy Spectrum Analyzer") 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", "airspy_spectrum_analyzer") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 10000000.0 self.fft_size = fft_size = 1024 self.pi = pi = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679 self.frame_rate = frame_rate = samp_rate/fft_size self.center_freq = center_freq = 91900000 ################################################## # Blocks ################################################## self.sahil_save_N_to_h5_0 = sahil.save_N_to_h5("sahilisanidiot.h5", 1000, vec_len = fft_size) self.sahil_average_0 = sahil.average(.1, fft_size) self.sahil_addheaders_0 = sahil.addheaders(samp_rate, center_freq - samp_rate, samp_rate, vec_len = fft_size) self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + "" ) self.osmosdr_source_0.set_time_source("gpsdo", 0) self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(center_freq, 0) self.osmosdr_source_0.set_freq_corr(0, 0) self.osmosdr_source_0.set_dc_offset_mode(1, 0) self.osmosdr_source_0.set_iq_balance_mode(2, 0) self.osmosdr_source_0.set_gain_mode(True, 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.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_size, ref_scale=2, frame_rate=frame_rate, avg_alpha=.1, average=True, ) ################################################## # Connections ################################################## self.connect((self.logpwrfft_x_0, 0), (self.sahil_addheaders_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.sahil_addheaders_0, 0), (self.sahil_average_0, 0)) self.connect((self.sahil_average_0, 0), (self.sahil_save_N_to_h5_0, 0))
def __init__(self): gr.top_block.__init__(self) ############# Define variables ############# self.samp_rate = 1e6 self.fc = 45e3 # now = datetime.now() # self.nowtime = now.strftime('%Y-%m-%d-%H%M%S') # self.rootdir = "/mnt/disk2/usrp" # self.name = self.nowtime + "_first_file.bin" # self.filename = os.path.join(self.rootdir, self.name) # self.fileNum = 1 # self.filename = "/home/zerina/data_logging" + str(self.fileNum) + ".bin" # self.exists = os.path.isfile(self.filename) # while self.exists: # #self.fileNum += 1 # #self.filename = "/home/zerina/data_logging" + str(self.fileNum) + ".bin" # now = datetime.now() # self.nowtime = now.strftime('%Y-%m-%d-%H%M%S') # self.rootdir = "/mnt/disk2/usrp" # self.name = self.nowtime + "_first_file.bin" # self.filename = os.path.join(self.rootdir, self.name) # #self.filename = "/home/zerina/data_logging" + str(self.fileNum) + ".bin" # self.exists = os.path.isfile(self.filename) # else: # print("New file: " + self.filename) ############# Initalize blocks ############# self.uhd_usrp_source = uhd.usrp_source( ",".join(('addr=192.168.10.2', "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source.set_samp_rate(self.samp_rate) self.uhd_usrp_source.set_center_freq(self.fc, 0) self.uhd_usrp_source.set_gain(0, 0) self.uhd_usrp_source.set_antenna('TX/RX', 0) self.uhd_usrp_source.set_bandwidth(1e6, 0) self.lpwrfft = logpwrfft.logpwrfft_c( sample_rate=self.samp_rate, fft_size=2048, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=False, ) self.file_sink = blocks.file_sink(gr.sizeof_float * 2048, self.filename, False) self.file_sink.set_unbuffered(False) ############# Connect blocks ############# self.connect((self.lpwrfft, 0), (self.file_sink, 0)) self.connect((self.uhd_usrp_source, 0), (self.lpwrfft, 0)) # def make_storage_directory(self, root, day, hour): # target_dir = os.path.join(root, day, hour) # if os.path.exists(target_dir): # return target_dir # else: # os.makedirs(target_dir) # return target_dir # def start_new_file(self): # time.sleep(30) # tb.stop() # tb.wait() self.disconnect((self.lpwrfft, 0), (self.file_sink, 0)) self.disconnect((self.uhd_usrp_source, 0), (self.lpwrfft, 0)) print("Starting file...") #self.filename = "/home/zerina/data_logging" + str(self.fileNum) + ".bin" # now = datetime.now() # now_day = now.strftime('%Y-%m-%d') # now_hour = now.strftime('%H00') # now_time = now.strftime('%H%M%S') # self.filename = now_time + '_usrp.bin' # self.dir = self.make_storage_directory(self.rootdir, now_day, now_hour) # self.savefile = os.path.join(self.dir, self.filename) # self.exists = os.path.isfile(self.savefile) # while self.exists: # #self.fileNum += 1 # #self.filename = "/home/zerina/data_logging" + str(self.fileNum) + ".bin" # now_day = now.strftime('%Y-%m-%d') # now_hour = now.strftime('%H00') # now_time = now.strftime('%H%M%S') # self.filename = now_time + '_usrp.bin' # self.dir = self.make_storage_directory(self.rootdir, now_day, now_hour) # self.savefile = os.path.join(self.dir, self.filename) # #self.exists = os.path.isfile(self.filename) # self.exists = os.path.isfile(self.savefile) self.file_name = '/mnt/disk2/usrp/tests/test_file.bin' print("New file: " + self.filename) #self.disconnect((self.analog_sig_source,0),(self.file_sink,0)) self.file_sink = blocks.file_sink(gr.sizeof_float * 2048, self.savefile, False) self.file_sink.set_unbuffered(False) self.connect((self.lpwrfft, 0), (self.file_sink, 0)) self.connect((self.uhd_usrp_source, 0), (self.lpwrfft, 0)) tb.start()
def build_blocks(self,config): if not self.device_found: return self.error = False fft_size = self.main.fft_size_control.get_value() frame_rate = self.main.framerate_control.get_value() average = self.main.average_control.get_value() ssb_lo = self.ssb_lo ssb_hi = self.ssb_hi USB = self.mode == self.main.MODE_USB or self.mode == self.main.MODE_CW_USB self.audio_dec_nrw = 1 self.dec_nrw, self.interp_nrw = self.compute_dec_interp(self.sample_rate,self.audio_rate) self.audio_dec_wid = self.if_sample_rate / self.audio_rate self.dec_wid, self.interp_wid = self.compute_dec_interp(self.sample_rate,self.if_sample_rate) volume = .1 self.configure_source_controls() self.create_update_freq_xlating_fir_filter() self.analog_agc_cc = analog.agc2_cc(1e-1, 1e-2, 1.0, 1.0) self.analog_agc_cc.set_max_gain(1) self.analog_agc_ff = analog.agc2_ff(1e-1, 1e-2, 1.0, 1.0) self.analog_agc_ff.set_max_gain(1) self.rational_resampler_wid = filter.rational_resampler_ccc( decimation=int(self.dec_wid), interpolation=int(self.interp_wid), taps=None, fractional_bw=None, ) self.rational_resampler_nrw = filter.rational_resampler_ccc( decimation=int(self.dec_nrw), interpolation=int(self.interp_nrw), taps=None, fractional_bw=None, ) self.analog_pwr_squelch = analog.pwr_squelch_cc(self.squelch_level, 1e-4, 0, True) self.analog_pwr_squelch_ssb = analog.pwr_squelch_ff(self.squelch_level, 1e-4, 0, True) self.blocks_multiply = blocks.multiply_vcc(1) self.blocks_complex_to_real = blocks.complex_to_real(1) #self.rebuild_filters(config) self.blocks_complex_to_mag_am = blocks.complex_to_mag(1) self.analog_nbfm_rcv = analog.nbfm_rx( audio_rate=self.audio_rate, quad_rate=self.audio_rate, tau=75e-6, max_dev=6e3, ) self.analog_wfm_rcv = analog.wfm_rcv( quad_rate=self.if_sample_rate, audio_decimation=self.audio_dec_wid, ) self.hilbert_fc_2 = filter.hilbert_fc(self.hilbert_taps_ssb, firdes.WIN_HAMMING, 6.76) self.hilbert_fc_1 = filter.hilbert_fc(self.hilbert_taps_ssb, firdes.WIN_HAMMING, 6.76) self.blocks_multiply_ssb = blocks.multiply_vcc(1) self.blocks_complex_to_float_ssb = blocks.complex_to_float(1) self.create_usb_lsb_switch() self.blocks_add = blocks.add_vff(1) self.blocks_complex_to_real = blocks.complex_to_real(1) self.blocks_complex_to_imag = blocks.complex_to_imag(1) # this is the source for the FFT display's data self.logpwrfft = logpwrfft.logpwrfft_c( sample_rate=self.sample_rate, fft_size=fft_size, ref_scale=2, frame_rate=frame_rate, avg_alpha=average, average=(average != 1), ) # this is the main FFT display self.fft_vector_sink = MyVectorSink(self.main,fft_size) self.blocks_multiply_const_volume = blocks.multiply_const_vff((volume, )) # only create this once if self.audio_sink == None: try: self.audio_sink = audio.sink(self.audio_rate, config['audio_device'], True) except Exception as e: self.main.message_dialog("Audio Error","A problem has come up while accessing the audio system: %s" % e) self.error = True self.audio_sink = None self.main.af_gain_control.set_value()
def __init__(self): gr.top_block.__init__(self, "Energydetectorreceive") ################################################## # Variables ################################################## self.variable_function_probe_0 = variable_function_probe_0 = 0 self.samp_rate = samp_rate = 1e6 self.busy = busy = 0 ################################################## # Blocks ################################################## self.blocks_probe_signal_vx_0 = blocks.probe_signal_vf(1024) def _variable_function_probe_0_probe(): while True: val = self.blocks_probe_signal_vx_0.level() self.busy = val[512] print(self.busy) try: self.set_variable_function_probe_0(val) except AttributeError: pass time.sleep(1.0 / (10)) _variable_function_probe_0_thread = threading.Thread( target=_variable_function_probe_0_probe) _variable_function_probe_0_thread.daemon = True _variable_function_probe_0_thread.start() self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(5.34e9, 0) self.uhd_usrp_source_0.set_gain(30, 0) self.uhd_usrp_source_0.set_antenna("J1", 0) self.uhd_usrp_source_0.set_bandwidth(25e6, 0) self.logpwrfft_x_4 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=1024, ref_scale=2, frame_rate=30, avg_alpha=1, average=True, ) self.fftshift_for_logpower_0 = fftshift_for_logpower(fft_size=1024, ) self.blocks_vector_to_stream_2 = blocks.vector_to_stream( gr.sizeof_float * 1, 1024) self.blocks_threshold_ff_2 = blocks.threshold_ff(-60, -45, 0) self.blocks_stream_to_vector_0 = blocks.stream_to_vector( gr.sizeof_float * 1, 1024) ################################################## # Connections ################################################## self.connect(self.uhd_usrp_source_0, self.logpwrfft_x_4, self.fftshift_for_logpower_0, self.blocks_vector_to_stream_2, self.blocks_threshold_ff_2, self.blocks_stream_to_vector_0, self.blocks_probe_signal_vx_0)
def __init__(self): gr.top_block.__init__(self, "WBFM Receiver V2- F1ATB - MARCH 2021") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1200000 self.Largeur_filtre = Largeur_filtre = 150000 self.xlate_filter_taps = xlate_filter_taps = firdes.low_pass( 1, samp_rate, Largeur_filtre / 2, 25000) self.decim_LP = decim_LP = 16 self.Squelch = Squelch = -80 self.Gain_RF = Gain_RF = 30 self.Gain_IF = Gain_IF = 20 self.Gain_BB = Gain_BB = 20 self.FrRX = FrRX = 145000000 self.F_Fine = F_Fine = 0 ################################################## # Blocks ################################################## self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer( ('localhost', 9003), 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.pluto_source_0 = iio.pluto_source('192.168.2.1', 145000000, int(samp_rate), 1000000, 32768, True, True, True, "manual", 50, '', True) self.low_pass_filter_0 = filter.fir_filter_ccf( 1, firdes.low_pass(1, decim_LP * samp_rate / 200, 5200, 1200, firdes.WIN_HAMMING, 6.76)) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate / 100, fft_size=2048, ref_scale=0.00001, frame_rate=samp_rate / 100 / 2048, avg_alpha=1.0, average=False, ) self.iio_attr_updater_0_0 = iio.attr_updater('hardwaregain', str(int(Gain_RF * 1.75)), 1000) self.iio_attr_updater_0 = iio.attr_updater('frequency', str(int(FrRX)), 1000) self.iio_attr_sink_0_0 = iio.attr_sink("ip:192.168.2.1", "ad9361-phy", "voltage0", 0, False, False) self.iio_attr_sink_0 = iio.attr_sink("ip:192.168.2.1", "ad9361-phy", "altvoltage0", 0, True, False) self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc( 6, (xlate_filter_taps), F_Fine, samp_rate) self.fractional_resampler_xx_0 = filter.fractional_resampler_cc( 0, decim_LP / 2) self.blocks_udp_sink_1 = blocks.udp_sink(gr.sizeof_short * 2048, '127.0.0.1', 9002, 4096, True) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_short * 1, '127.0.0.1', 9001, 1000, True) self.blocks_keep_m_in_n_0 = blocks.keep_m_in_n(gr.sizeof_gr_complex, int(1024 * decim_LP), 204800, 0) self.blocks_float_to_short_1 = blocks.float_to_short(2048, 100) self.blocks_float_to_short_0 = blocks.float_to_short(1, 16000) self.analog_wfm_rcv_0 = analog.wfm_rcv( quad_rate=samp_rate / 6, audio_decimation=20, ) self.analog_simple_squelch_cc_0 = analog.simple_squelch_cc(Squelch, 1) ################################################## # Connections ################################################## self.msg_connect((self.iio_attr_updater_0, 'out'), (self.iio_attr_sink_0, 'attr')) self.msg_connect((self.iio_attr_updater_0_0, 'out'), (self.iio_attr_sink_0_0, 'attr')) self.connect((self.analog_simple_squelch_cc_0, 0), (self.analog_wfm_rcv_0, 0)) self.connect((self.analog_wfm_rcv_0, 0), (self.blocks_float_to_short_0, 0)) self.connect((self.blocks_float_to_short_0, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.blocks_float_to_short_1, 0), (self.blocks_udp_sink_1, 0)) self.connect((self.blocks_keep_m_in_n_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.fractional_resampler_xx_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.analog_simple_squelch_cc_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_float_to_short_1, 0)) self.connect((self.low_pass_filter_0, 0), (self.fractional_resampler_xx_0, 0)) self.connect((self.pluto_source_0, 0), (self.blocks_keep_m_in_n_0, 0)) self.connect((self.pluto_source_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0))
def __init__(self, fft_size, samp_rate, middle_freq, gain, bandwidth, sourceType = 0, filename = ""): gr.top_block.__init__(self, "Top Block") #### Variables #### self.fft_size = fft_size self.samp_rate = samp_rate self.middle_freq = middle_freq self.gain = gain self.bandwidth = bandwidth #### Blocks #### if sourceType == 0: #rtl2832 radio source self.rtl2832_source = osmosdr.source( args="numchan=" + str(1) + " " + "" ) self.rtl2832_source.set_clock_source("gpsdo", 0) self.rtl2832_source.set_sample_rate(samp_rate) self.rtl2832_source.set_center_freq(middle_freq, 0) self.rtl2832_source.set_freq_corr(0, 0) self.rtl2832_source.set_dc_offset_mode(0, 0) self.rtl2832_source.set_iq_balance_mode(0, 0) self.rtl2832_source.set_gain_mode(False, 0) self.rtl2832_source.set_gain(gain, 0) self.rtl2832_source.set_if_gain(20, 0) self.rtl2832_source.set_bb_gain(20, 0) self.rtl2832_source.set_antenna("", 0) self.rtl2832_source.set_bandwidth(bandwidth, 0) elif sourceType == 1 and filename: #wave file source self.blocks_wavfile_source_0 = blocks.wavfile_source(filename, False) self.samp_rate = self.blocks_wavfile_source_0.sample_rate print "Sample rate set to ", samp_rate self.block_wav_float_to_complex = blocks.float_to_complex(1) self.block_throttle_real = blocks.throttle(gr.sizeof_float*1, samp_rate,True) #throttles reading from the wav file to simulate real time radio self.block_throttle_im = blocks.throttle(gr.sizeof_float*1, samp_rate,True) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_size, ref_scale=2, frame_rate=20, avg_alpha=1.0, average=False, ) self.msgq_out = blocks_message_sink_0_msgq_out = gr.msg_queue(2) self.blocks_message_sink_0 = blocks.message_sink(gr.sizeof_float*fft_size, blocks_message_sink_0_msgq_out, False) #### Connections #### if sourceType == 0: self.connect((self.rtl2832_source, 0), (self.logpwrfft_x_0, 0)) elif sourceType == 1: self.connect((self.blocks_wavfile_source_0, 1), (self.block_throttle_im, 0)) self.connect((self.blocks_wavfile_source_0, 0), (self.block_throttle_real, 0)) self.connect((self.block_throttle_real, 0), (self.block_wav_float_to_complex, 0)) self.connect((self.block_throttle_im, 0), (self.block_wav_float_to_complex, 1)) self.connect((self.block_wav_float_to_complex, 0), (self.logpwrfft_x_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_message_sink_0, 0))
def __init__(self): gr.top_block.__init__(self, "File Reader Demo") Qt.QWidget.__init__(self) self.setWindowTitle("File Reader Demo") 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", "file_reader_demo") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 40000 self.fft_size = fft_size = 8192 self.center_freq = center_freq = 400e6 ################################################## # Blocks ################################################## self.qtgui_sink_x_0 = qtgui.sink_c( 1024, #fftsize firdes.WIN_BLACKMAN_hARRIS, #wintype center_freq, #fc samp_rate, #bw "", #name True, #plotfreq True, #plotwaterfall True, #plottime True, #plotconst ) self.qtgui_sink_x_0.set_update_time(1.0 / 10) self._qtgui_sink_x_0_win = sip.wrapinstance( self.qtgui_sink_x_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_sink_x_0_win) self.qtgui_sink_x_0.enable_rf_freq(False) self.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("") 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, 20000) 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.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_size, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=False, ) self.blocks_throttle_1 = blocks.throttle(gr.sizeof_gr_complex * 1, samp_rate, True) self.blocks_short_to_float_0 = blocks.short_to_float( 1, float(fft_size) / float(samp_rate)) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_short * 1) self.blocks_file_source_0 = blocks.file_source( gr.sizeof_gr_complex * 1, "/home/aa274/Documents/payload-documentation/GNUradio/doppler_curve_test.bin", False) self.blocks_argmax_xx_0 = blocks.argmax_fs(fft_size) ################################################## # Connections ################################################## self.connect((self.blocks_argmax_xx_0, 1), (self.blocks_null_sink_0, 0)) self.connect((self.blocks_argmax_xx_0, 0), (self.blocks_short_to_float_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_1, 0)) self.connect((self.blocks_short_to_float_0, 0), (self.qtgui_number_sink_0_0, 0)) self.connect((self.blocks_throttle_1, 0), (self.logpwrfft_x_0, 0)) self.connect((self.blocks_throttle_1, 0), (self.qtgui_sink_x_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_argmax_xx_0, 0))
def __init__(self): gr.top_block.__init__(self, "Lang Rx") ################################################## # Variables ################################################## plutoip = os.environ.get('PLUTO_IP') if plutoip == None: plutoip = 'pluto.local' plutoip = 'ip:' + plutoip self.SQL = SQL = 50 self.RxOffset = RxOffset = 0 self.Mute = Mute = False self.Mode = Mode = 3 self.Filt_Low = Filt_Low = 300 self.Filt_High = Filt_High = 3000 self.FFTEn = FFTEn = 0 self.AFGain = AFGain = 20 ################################################## # Blocks ################################################## self.pluto_source_0 = iio.pluto_source(plutoip, 1000000000, 528000, 2000000, 0x800, True, True, True, "slow_attack", 64.0, '', True) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=48000, fft_size=512, ref_scale=2, frame_rate=15, avg_alpha=0.9, average=True, ) self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc( 11, (firdes.low_pass(1, 529200, 23000, 2000)), RxOffset, 528000) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_float * 512, '127.0.0.1', 7373, 1472, False) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_float * 512) self.blocks_multiply_const_vxx_2_1_0 = blocks.multiply_const_vff( (1.0 + (Mode == 5), )) self.blocks_multiply_const_vxx_2_1 = blocks.multiply_const_vff( (Mode == 5, )) self.blocks_multiply_const_vxx_2_0 = blocks.multiply_const_vff( ((Mode == 4) * 0.2, )) self.blocks_multiply_const_vxx_2 = blocks.multiply_const_vff( (Mode < 4, )) self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vff( ((AFGain / 100.0) * (not Mute), )) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_complex_to_real_0_0 = blocks.complex_to_real(1) self.blocks_complex_to_real_0 = blocks.complex_to_real(1) self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) self.blocks_add_xx_1_0 = blocks.add_vff(1) self.blocks_add_xx_1 = blocks.add_vff(1) self.blks2_selector_0 = grc_blks2.selector( item_size=gr.sizeof_float * 512, num_inputs=1, num_outputs=2, input_index=0, output_index=FFTEn, ) self.band_pass_filter_0 = filter.fir_filter_ccc( 1, firdes.complex_band_pass(1, 48000, Filt_Low, Filt_High, 100, firdes.WIN_HAMMING, 6.76)) self.audio_sink_0 = audio.sink(48000, "hw:CARD=Device,DEV=0", False) self.analog_pwr_squelch_xx_0 = analog.pwr_squelch_cc( SQL - 100, 0.001, 0, False) self.analog_nbfm_rx_0 = analog.nbfm_rx( audio_rate=48000, quad_rate=48000, tau=75e-6, max_dev=5e3, ) self.analog_agc3_xx_0 = analog.agc3_cc(1e-2, 5e-7, 0.1, 1.0, 1) self.analog_agc3_xx_0.set_max_gain(1000) ################################################## # Connections ################################################## self.connect((self.analog_agc3_xx_0, 0), (self.blocks_complex_to_real_0_0, 0)) self.connect((self.analog_nbfm_rx_0, 0), (self.blocks_multiply_const_vxx_2_0, 0)) self.connect((self.analog_pwr_squelch_xx_0, 0), (self.analog_nbfm_rx_0, 0)) self.connect((self.band_pass_filter_0, 0), (self.analog_pwr_squelch_xx_0, 0)) self.connect((self.band_pass_filter_0, 0), (self.blocks_complex_to_mag_0, 0)) self.connect((self.band_pass_filter_0, 0), (self.blocks_complex_to_real_0, 0)) self.connect((self.blks2_selector_0, 0), (self.blocks_null_sink_0, 0)) self.connect((self.blks2_selector_0, 1), (self.blocks_udp_sink_0, 0)) self.connect((self.blocks_add_xx_1, 0), (self.blocks_multiply_const_vxx_1, 0)) self.connect((self.blocks_add_xx_1_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blocks_complex_to_mag_0, 0), (self.blocks_multiply_const_vxx_2_1, 0)) self.connect((self.blocks_complex_to_real_0, 0), (self.blocks_multiply_const_vxx_2, 0)) self.connect((self.blocks_complex_to_real_0_0, 0), (self.blocks_multiply_const_vxx_2_1_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.analog_agc3_xx_0, 0)) self.connect((self.blocks_multiply_const_vxx_1, 0), (self.audio_sink_0, 0)) self.connect((self.blocks_multiply_const_vxx_2, 0), (self.blocks_add_xx_1_0, 0)) self.connect((self.blocks_multiply_const_vxx_2_0, 0), (self.blocks_add_xx_1, 1)) self.connect((self.blocks_multiply_const_vxx_2_1, 0), (self.blocks_add_xx_1_0, 1)) self.connect((self.blocks_multiply_const_vxx_2_1_0, 0), (self.blocks_add_xx_1, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.band_pass_filter_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blks2_selector_0, 0)) self.connect((self.pluto_source_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") Qt.QWidget.__init__(self) self.setWindowTitle("Top Block") qtgui.util.check_set_qss() try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "top_block") if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): self.restoreGeometry(self.settings.value("geometry").toByteArray()) else: self.restoreGeometry( self.settings.value("geometry", type=QtCore.QByteArray)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 20000000 self.freq_min = freq_min = 0e6 self.freq_max = freq_max = 6000e6 self.freq = freq = freq_min + (samp_rate / 2) self.fft_size = fft_size = 1024 self.directory = directory = "/home/eamedina/Documentos/freq_docs/off" self.mode = mode = 2 self.mode_pct = mode_pct = 3 self.mode_fixed = mode_fixed = 10 ################################################## # Blocks ################################################## self.tfm_power_comparator_ff_0 = tfm.power_comparator_ff( self.samp_rate, self.freq, self.fft_size, self.directory, self.mode, self.mode_fixed, self.mode_pct) 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(2, 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(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.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_size, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=False, ) ################################################## # Connections ################################################## self.connect((self.logpwrfft_x_0, 0), (self.tfm_power_comparator_ff_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.logpwrfft_x_0, 0)) self.timer = QtCore.QTimer() self.timer.setInterval(50) self.timer.timeout.connect(self.recurring_timer) self.timer.start()
def __init__(self, subdev="A:0", devid="addr=192.168.10.2", frequency=1.4125e9, fftsize=8192): grc_wxgui.top_block_gui.__init__(self, title="Total Power Radiometer - N200") ################################################## # Parameters ################################################## self.subdev = subdev self.devid = devid self.frequency = frequency self.fftsize = fftsize ################################################## # Variables ################################################## self.GUI_samp_rate = GUI_samp_rate = 10e6 self.samp_rate = samp_rate = int(GUI_samp_rate) self.prefix = prefix = "tpr_" self.text_samp_rate = text_samp_rate = GUI_samp_rate self.text_deviceID = text_deviceID = subdev self.text_Device_addr = text_Device_addr = devid self.spec_data_fifo = spec_data_fifo = "spectrum_" + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat" self.spavg = spavg = 1 self.scope_rate = scope_rate = 2 self.recfile_tpr = recfile_tpr = prefix + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat" self.recfile_kelvin = recfile_kelvin = prefix+"kelvin" + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat" self.rec_button_tpr = rec_button_tpr = 1 self.rec_button_iq = rec_button_iq = 1 self.noise_amplitude = noise_amplitude = .5 self.integ = integ = 2 self.gain = gain = 26 self.freq = freq = frequency self.file_rate = file_rate = 2.0 self.fftrate = fftrate = int(samp_rate/fftsize) self.det_rate = det_rate = int(20.0) self.dc_gain = dc_gain = 1 self.calib_2 = calib_2 = -342.774 self.calib_1 = calib_1 = 4.0755e3 self.add_noise = add_noise = 0 ################################################## # Blocks ################################################## self.Main = self.Main = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.Main.AddPage(grc_wxgui.Panel(self.Main), "N200 Control Panel") self.Main.AddPage(grc_wxgui.Panel(self.Main), "TPR Measurements") self.Add(self.Main) _spavg_sizer = wx.BoxSizer(wx.VERTICAL) self._spavg_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), sizer=_spavg_sizer, value=self.spavg, callback=self.set_spavg, label="Spectral Averaging (Seconds)", converter=forms.int_converter(), proportion=0, ) self._spavg_slider = forms.slider( parent=self.Main.GetPage(0).GetWin(), sizer=_spavg_sizer, value=self.spavg, callback=self.set_spavg, minimum=1, maximum=20, num_steps=20, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.Main.GetPage(0).GridAdd(_spavg_sizer, 1, 1, 1, 1) self._rec_button_tpr_chooser = forms.button( parent=self.Main.GetPage(0).GetWin(), value=self.rec_button_tpr, callback=self.set_rec_button_tpr, label="Record TPR Data", choices=[0,1], labels=['Stop','Start'], ) self.Main.GetPage(0).GridAdd(self._rec_button_tpr_chooser, 4, 1, 1, 1) self._rec_button_iq_chooser = forms.button( parent=self.Main.GetPage(0).GetWin(), value=self.rec_button_iq, callback=self.set_rec_button_iq, label="Record I/Q Data", choices=[0,1], labels=['Stop','Start'], ) self.Main.GetPage(0).GridAdd(self._rec_button_iq_chooser, 4, 0, 1, 1) _integ_sizer = wx.BoxSizer(wx.VERTICAL) self._integ_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), sizer=_integ_sizer, value=self.integ, callback=self.set_integ, label="Integration Time (Seconds)", converter=forms.float_converter(), proportion=0, ) self._integ_slider = forms.slider( parent=self.Main.GetPage(0).GetWin(), sizer=_integ_sizer, value=self.integ, callback=self.set_integ, minimum=1, maximum=60, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Main.GetPage(0).GridAdd(_integ_sizer, 0, 2, 1, 1) _gain_sizer = wx.BoxSizer(wx.VERTICAL) self._gain_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), sizer=_gain_sizer, value=self.gain, callback=self.set_gain, label="RF Gain (dB)", converter=forms.float_converter(), proportion=0, ) self._gain_slider = forms.slider( parent=self.Main.GetPage(0).GetWin(), sizer=_gain_sizer, value=self.gain, callback=self.set_gain, minimum=0, maximum=50, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Main.GetPage(0).GridAdd(_gain_sizer, 0, 1, 1, 1) self._freq_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), value=self.freq, callback=self.set_freq, label="Center Frequency (Hz)", converter=forms.float_converter(), ) self.Main.GetPage(0).GridAdd(self._freq_text_box, 0, 0, 1, 1) self._dc_gain_chooser = forms.radio_buttons( parent=self.Main.GetPage(0).GetWin(), value=self.dc_gain, callback=self.set_dc_gain, label="DC Gain", choices=[1, 10, 100, 1000, 10000], labels=[], style=wx.RA_HORIZONTAL, ) self.Main.GetPage(0).GridAdd(self._dc_gain_chooser, 1, 0, 1, 1) self._calib_2_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), value=self.calib_2, callback=self.set_calib_2, label="Calibration value 2", converter=forms.float_converter(), ) self.Main.GetPage(0).GridAdd(self._calib_2_text_box, 3, 1, 1, 1) self._calib_1_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), value=self.calib_1, callback=self.set_calib_1, label="Calibration value 1", converter=forms.float_converter(), ) self.Main.GetPage(0).GridAdd(self._calib_1_text_box, 3, 0, 1, 1) self._GUI_samp_rate_chooser = forms.radio_buttons( parent=self.Main.GetPage(0).GetWin(), value=self.GUI_samp_rate, callback=self.set_GUI_samp_rate, label="Sample Rate (BW)", choices=[1e6,2e6,5e6,10e6,25e6], labels=['1 MHz','2 MHz','5 MHz','10 MHz','25 MHz'], style=wx.RA_HORIZONTAL, ) self.Main.GetPage(0).GridAdd(self._GUI_samp_rate_chooser, 1, 3, 1, 1) self.wxgui_scopesink2_2 = scopesink2.scope_sink_f( self.Main.GetPage(1).GetWin(), title="Total Power", sample_rate=2, v_scale=.1, v_offset=0, t_scale=100, ac_couple=False, xy_mode=False, num_inputs=1, trig_mode=wxgui.TRIG_MODE_STRIPCHART, y_axis_label="power level", ) self.Main.GetPage(1).Add(self.wxgui_scopesink2_2.win) self.wxgui_numbersink2_2 = numbersink2.number_sink_f( self.GetWin(), unit="Units", minval=0, maxval=1, factor=1.0, decimal_places=10, ref_level=0, sample_rate=GUI_samp_rate, number_rate=15, average=False, avg_alpha=None, label="Number Plot", peak_hold=False, show_gauge=True, ) self.Add(self.wxgui_numbersink2_2.win) self.wxgui_numbersink2_0_0 = numbersink2.number_sink_f( self.Main.GetPage(1).GetWin(), unit="", minval=0, maxval=.2, factor=1, decimal_places=6, ref_level=0, sample_rate=scope_rate, number_rate=15, average=True, avg_alpha=.01, label="Raw Power level", peak_hold=False, show_gauge=True, ) self.Main.GetPage(1).Add(self.wxgui_numbersink2_0_0.win) self.wxgui_numbersink2_0 = numbersink2.number_sink_f( self.Main.GetPage(1).GetWin(), unit="Kelvin", minval=0, maxval=400, factor=1, decimal_places=6, ref_level=0, sample_rate=scope_rate, number_rate=15, average=False, avg_alpha=None, label="Calibrated Temperature", peak_hold=False, show_gauge=True, ) self.Main.GetPage(1).Add(self.wxgui_numbersink2_0.win) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.Main.GetPage(0).GetWin(), baseband_freq=freq, y_per_div=10, y_divs=10, ref_level=20, ref_scale=2.0, sample_rate=GUI_samp_rate, fft_size=1024, fft_rate=5, average=True, avg_alpha=0.1, title="Spectrum", peak_hold=False, size=(800,400), ) self.Main.GetPage(0).Add(self.wxgui_fftsink2_0.win) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join((devid, "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(GUI_samp_rate) self.uhd_usrp_source_0.set_center_freq(freq, 0) self.uhd_usrp_source_0.set_gain(gain, 0) (self.uhd_usrp_source_0).set_processor_affinity([0]) self._text_samp_rate_static_text = forms.static_text( parent=self.Main.GetPage(0).GetWin(), value=self.text_samp_rate, callback=self.set_text_samp_rate, label="Samp rate", converter=forms.float_converter(), ) self.Main.GetPage(0).GridAdd(self._text_samp_rate_static_text, 2, 0, 1, 1) self._text_deviceID_static_text = forms.static_text( parent=self.Main.GetPage(0).GetWin(), value=self.text_deviceID, callback=self.set_text_deviceID, label="SubDev", converter=forms.str_converter(), ) self.Main.GetPage(0).GridAdd(self._text_deviceID_static_text, 2, 1, 1, 1) self._text_Device_addr_static_text = forms.static_text( parent=self.Main.GetPage(0).GetWin(), value=self.text_Device_addr, callback=self.set_text_Device_addr, label="Device Address", converter=forms.str_converter(), ) self.Main.GetPage(0).GridAdd(self._text_Device_addr_static_text, 2, 2, 1, 1) self.single_pole_iir_filter_xx_0 = filter.single_pole_iir_filter_ff(1.0/((samp_rate*integ)/2.0), 1) (self.single_pole_iir_filter_xx_0).set_processor_affinity([1]) _noise_amplitude_sizer = wx.BoxSizer(wx.VERTICAL) self._noise_amplitude_text_box = forms.text_box( parent=self.Main.GetPage(0).GetWin(), sizer=_noise_amplitude_sizer, value=self.noise_amplitude, callback=self.set_noise_amplitude, label='noise_amplitude', converter=forms.float_converter(), proportion=0, ) self._noise_amplitude_slider = forms.slider( parent=self.Main.GetPage(0).GetWin(), sizer=_noise_amplitude_sizer, value=self.noise_amplitude, callback=self.set_noise_amplitude, minimum=.01, maximum=1, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Main.GetPage(0).GridAdd(_noise_amplitude_sizer, 3, 2, 1, 1) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=fftsize, ref_scale=2, frame_rate=fftrate, avg_alpha=1.0/float(spavg*fftrate), average=True, ) self.blocks_peak_detector_xb_0 = blocks.peak_detector_fb(0.25, 0.40, 10, 0.001) self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vff((calib_1, )) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((dc_gain, )) self.blocks_keep_one_in_n_4 = blocks.keep_one_in_n(gr.sizeof_float*1, samp_rate/det_rate) self.blocks_keep_one_in_n_3 = blocks.keep_one_in_n(gr.sizeof_float*fftsize, fftrate) self.blocks_keep_one_in_n_1 = blocks.keep_one_in_n(gr.sizeof_float*1, int(det_rate/file_rate)) self.blocks_file_sink_5 = blocks.file_sink(gr.sizeof_float*fftsize, spec_data_fifo, False) self.blocks_file_sink_5.set_unbuffered(True) self.blocks_file_sink_4 = blocks.file_sink(gr.sizeof_float*1, recfile_tpr, False) self.blocks_file_sink_4.set_unbuffered(True) self.blocks_file_sink_1 = blocks.file_sink(gr.sizeof_gr_complex*1, prefix+"iq_raw" + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat", False) self.blocks_file_sink_1.set_unbuffered(False) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float*1, recfile_kelvin, False) self.blocks_file_sink_0.set_unbuffered(True) self.blocks_complex_to_real_0 = blocks.complex_to_real(1) self.blocks_complex_to_mag_squared_1 = blocks.complex_to_mag_squared(1) self.blocks_char_to_float_0 = blocks.char_to_float(1, 1) self.blocks_add_const_vxx_1 = blocks.add_const_vff((calib_2, )) self.blks2_valve_2 = grc_blks2.valve(item_size=gr.sizeof_gr_complex*1, open=bool(rec_button_iq)) self.blks2_valve_1 = grc_blks2.valve(item_size=gr.sizeof_float*1, open=bool(0)) self.blks2_valve_0 = grc_blks2.valve(item_size=gr.sizeof_float*1, open=bool(rec_button_tpr)) self._add_noise_chooser = forms.button( parent=self.Main.GetPage(0).GetWin(), value=self.add_noise, callback=self.set_add_noise, label="Noise Source", choices=[0,1], labels=['Off','On'], ) self.Main.GetPage(0).GridAdd(self._add_noise_chooser, 3, 3, 1, 1) ################################################## # Connections ################################################## self.connect((self.blks2_valve_0, 0), (self.blocks_file_sink_4, 0)) self.connect((self.blks2_valve_1, 0), (self.blocks_file_sink_0, 0)) self.connect((self.blks2_valve_2, 0), (self.blocks_file_sink_1, 0)) self.connect((self.blocks_add_const_vxx_1, 0), (self.blks2_valve_1, 0)) self.connect((self.blocks_add_const_vxx_1, 0), (self.wxgui_numbersink2_0, 0)) self.connect((self.blocks_char_to_float_0, 0), (self.wxgui_numbersink2_2, 0)) self.connect((self.blocks_complex_to_mag_squared_1, 0), (self.single_pole_iir_filter_xx_0, 0)) self.connect((self.blocks_complex_to_real_0, 0), (self.blocks_peak_detector_xb_0, 0)) self.connect((self.blocks_keep_one_in_n_1, 0), (self.blks2_valve_0, 0)) self.connect((self.blocks_keep_one_in_n_1, 0), (self.blocks_multiply_const_vxx_1, 0)) self.connect((self.blocks_keep_one_in_n_1, 0), (self.wxgui_scopesink2_2, 0)) self.connect((self.blocks_keep_one_in_n_3, 0), (self.blocks_file_sink_5, 0)) self.connect((self.blocks_keep_one_in_n_4, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_keep_one_in_n_1, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.wxgui_numbersink2_0_0, 0)) self.connect((self.blocks_multiply_const_vxx_1, 0), (self.blocks_add_const_vxx_1, 0)) self.connect((self.blocks_peak_detector_xb_0, 0), (self.blocks_char_to_float_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_keep_one_in_n_3, 0)) self.connect((self.single_pole_iir_filter_xx_0, 0), (self.blocks_keep_one_in_n_4, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blks2_valve_2, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blocks_complex_to_mag_squared_1, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blocks_complex_to_real_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_fftsink2_0, 0))
def __init__(self, file_name): grc_wxgui.top_block_gui.__init__(self, title="Test") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 10e6 self.freq = freq = 93.5e6 ################################################## # Blocks ################################################## self.notebook_0 = self.notebook_0 = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "RF Specturm") self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Demod Spectrum") self.Add(self.notebook_0) self._freq_text_box = forms.text_box( parent=self.GetWin(), value=self.freq, callback=self.set_freq, label='freq', converter=forms.float_converter(), ) self.Add(self._freq_text_box) self.wxgui_fftsink2_1 = fftsink2.fft_sink_f( self.notebook_0.GetPage(1).GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=500e3, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title="FFT Plot (Demod)", peak_hold=False, ) self.notebook_0.GetPage(1).Add(self.wxgui_fftsink2_1.win) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.notebook_0.GetPage(0).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=False, avg_alpha=None, title="FFT Plot (RF)", peak_hold=False, ) self.notebook_0.GetPage(0).Add(self.wxgui_fftsink2_0.win) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(freq, 0) self.uhd_usrp_source_0.set_gain(15, 0) self.uhd_usrp_source_0.set_antenna("RX2", 0) self.rational_resampler_xxx_0 = filter.rational_resampler_fff( interpolation=96, decimation=500, taps=None, fractional_bw=None, ) self.low_pass_filter_0 = filter.fir_filter_ccf( 20, firdes.low_pass(1, samp_rate, 100e3, 10e3, firdes.WIN_HAMMING, 6.76)) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=1024, ref_scale=2, frame_rate=15, avg_alpha=0.133333, average=True, ) save_file_name = "/home/xi/fm_location/data/" + file_name + ".dat" self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_float * 1024, save_file_name, False) self.blocks_file_sink_0.set_unbuffered(True) self.audio_sink_0 = audio.sink(96000, "", True) self.analog_wfm_rcv_0 = analog.wfm_rcv( quad_rate=500e3, audio_decimation=1, ) ################################################## # Connections ################################################## self.connect((self.analog_wfm_rcv_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.analog_wfm_rcv_0, 0), (self.wxgui_fftsink2_1, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.analog_wfm_rcv_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.audio_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.low_pass_filter_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_fftsink2_0, 0))