#!/usr/bin/env python ################################################## # Gnuradio Python Flow Graph # Title: OFDM Transmitter # Generated: Mon Mar 31 09:59:15 2014 ################################################## from gnuradio import blocks from gnuradio import digital from gnuradio import eng_notation from gnuradio import gr from gnuradio import uhd from gnuradio.digital.utils import tagged_streams from gnuradio.eng_option import eng_option from gnuradio.gr import firdes from grc_gnuradio import wxgui as grc_wxgui from optparse import OptionParser import ConfigParser import numpy import time import wx class ofdm_v1_tx_freq_test(grc_wxgui.top_block_gui): def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="OFDM Transmitter") ################################################## # Variables ################################################## self.tx_signal = tx_signal = [numpy.sin(2 * numpy.pi * 1.0/8 * x) for x in range(8*2)] self._tx_ip_config = ConfigParser.ConfigParser() self._tx_ip_config.read("default") try: tx_ip = self._tx_ip_config.get("main", "key") except: tx_ip = "addr=10.2.8.104" self.tx_ip = tx_ip self.samp_rate = samp_rate = 100e3 self.len_tag_key = len_tag_key = "packet_len" self.freq = freq = 500e6 self.fft_len = fft_len = 64 ################################################## # Blocks ################################################## self.uhd_usrp_sink_0 = uhd.usrp_sink( device_addr="addr=10.2.8.104", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq(freq, 0) self.uhd_usrp_sink_0.set_gain(20, 0) self.digital_ofdm_tx_0 = digital.ofdm_tx( fft_len=fft_len, cp_len=fft_len/4, packet_length_tag_key=len_tag_key, bps_header=1, bps_payload=1, rolloff=0, debug_log=False ) self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_char*1, 4) self.blocks_vector_source_x_0 = blocks.vector_source_f(tx_signal, True, 1, tagged_streams.make_lengthtags((8*2*gr.sizeof_float,), (0,), tagname=len_tag_key)) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.05, )) ################################################## # Connections ################################################## self.connect((self.blocks_vector_source_x_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.digital_ofdm_tx_0, 0)) self.connect((self.digital_ofdm_tx_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.uhd_usrp_sink_0, 0)) def get_tx_signal(self): return self.tx_signal def set_tx_signal(self, tx_signal): self.tx_signal = tx_signal def get_tx_ip(self): return self.tx_ip def set_tx_ip(self, tx_ip): self.tx_ip = tx_ip def get_samp_rate(self): return self.samp_rate def set_samp_rate(self, samp_rate): self.samp_rate = samp_rate self.uhd_usrp_sink_0.set_samp_rate(self.samp_rate) def get_len_tag_key(self): return self.len_tag_key def set_len_tag_key(self, len_tag_key): self.len_tag_key = len_tag_key def get_freq(self): return self.freq def set_freq(self, freq): self.freq = freq self.uhd_usrp_sink_0.set_center_freq(self.freq, 0) def get_fft_len(self): return self.fft_len def set_fft_len(self, fft_len): self.fft_len = fft_len def incr_new_freq(self): self.freq = self.freq + 1e6 # return self.freq self.uhd_usrp_sink_0.set_center_freq(self.freq, 0) def decr_new_freq(self): self.freq = 500e6 return self.freq def main(tb): i = 0 while 1: print "Current Frequency: %0.1f" % (tb.freq) time.sleep(2.5) if i == 20: tb.decr_new_freq() i = 0 else: tb.incr_new_freq() i += 1 if __name__ == '__main__': parser = OptionParser(option_class=eng_option, usage="%prog: [options]") (options, args) = parser.parse_args() tb = ofdm_v1_tx_freq_test() tb.Run(True) main(tb)