#!/usr/bin/env python ################################################## # Gnuradio Python Flow Graph # Title: Uhd Fft To File # Generated: Wed Sep 28 17:33:21 2011 ################################################## from gnuradio import blks2 from gnuradio import eng_notation from gnuradio import gr from gnuradio import uhd from gnuradio.eng_option import eng_option from gnuradio.gr import firdes from optparse import OptionParser import SimpleXMLRPCServer import threading class uhd_fft_to_file(gr.top_block): def __init__(self, frequency=100e6, gain=20, srate=1.0e6, xmlport=6060, fifoname="fft_output_fifo", devicecfg="addr=192.168.10.2"): gr.top_block.__init__(self, "Uhd Fft To File") ################################################## # Parameters ################################################## self.frequency = frequency self.gain = gain self.srate = srate self.xmlport = xmlport self.fifoname = fifoname self.devicecfg = devicecfg ################################################## # Variables ################################################## self.samp_rate = samp_rate = srate self.fft_size = fft_size = 2048 ################################################## # Blocks ################################################## self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", xmlport), allow_none=True) self.xmlrpc_server_0.register_instance(self) threading.Thread(target=self.xmlrpc_server_0.serve_forever).start() self.uhd_usrp_source_0 = uhd.usrp_source( device_addr="devicefg", io_type=uhd.io_type.COMPLEX_FLOAT32, num_channels=1, ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(frequency, 0) self.uhd_usrp_source_0.set_gain(gain, 0) self.gr_file_sink_0 = gr.file_sink(gr.sizeof_float*fft_size, fifoname) self.gr_file_sink_0.set_unbuffered(True) self.blks2_logpwrfft_x_0 = blks2.logpwrfft_c( sample_rate=samp_rate, fft_size=fft_size, ref_scale=2, frame_rate=5, avg_alpha=0.1, average=True, ) ################################################## # Connections ################################################## self.connect((self.uhd_usrp_source_0, 0), (self.blks2_logpwrfft_x_0, 0)) self.connect((self.blks2_logpwrfft_x_0, 0), (self.gr_file_sink_0, 0)) def get_frequency(self): return self.frequency def set_frequency(self, frequency): self.frequency = frequency self.uhd_usrp_source_0.set_center_freq(self.frequency, 0) def get_gain(self): return self.gain def set_gain(self, gain): self.gain = gain self.uhd_usrp_source_0.set_gain(self.gain, 0) def get_srate(self): return self.srate def set_srate(self, srate): self.srate = srate self.set_samp_rate(self.srate) def get_xmlport(self): return self.xmlport def set_xmlport(self, xmlport): self.xmlport = xmlport def get_fifoname(self): return self.fifoname def set_fifoname(self, fifoname): self.fifoname = fifoname def get_devicecfg(self): return self.devicecfg def set_devicecfg(self, devicecfg): self.devicecfg = devicecfg def get_samp_rate(self): return self.samp_rate def set_samp_rate(self, samp_rate): self.samp_rate = samp_rate self.blks2_logpwrfft_x_0.set_sample_rate(self.samp_rate) self.uhd_usrp_source_0.set_samp_rate(self.samp_rate) def get_fft_size(self): return self.fft_size def set_fft_size(self, fft_size): self.fft_size = fft_size if __name__ == '__main__': parser = OptionParser(option_class=eng_option, usage="%prog: [options]") parser.add_option("", "--frequency", dest="frequency", type="eng_float", default=eng_notation.num_to_str(100e6), help="Set frequency [default=%default]") parser.add_option("", "--gain", dest="gain", type="eng_float", default=eng_notation.num_to_str(20), help="Set gain [default=%default]") parser.add_option("", "--srate", dest="srate", type="eng_float", default=eng_notation.num_to_str(1.0e6), help="Set srate [default=%default]") parser.add_option("", "--xmlport", dest="xmlport", type="intx", default=6060, help="Set xmlport [default=%default]") parser.add_option("", "--fifoname", dest="fifoname", type="string", default="fft_output_fifo", help="Set fifoname [default=%default]") parser.add_option("", "--devicecfg", dest="devicecfg", type="string", default="addr=192.168.10.2", help="Set devicecfg [default=%default]") (options, args) = parser.parse_args() tb = uhd_fft_to_file(frequency=options.frequency, gain=options.gain, srate=options.srate, xmlport=options.xmlport, fifoname=options.fifoname, devicecfg=options.devicecfg) tb.run()