#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: Essai Mimo
# Generated: Thu Jul 12 08:55:34 2012
##################################################

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 gnuradio.wxgui import scopesink2
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import wx

class essai_mimo(grc_wxgui.top_block_gui):

	def __init__(self):
		grc_wxgui.top_block_gui.__init__(self, title="Essai Mimo")
		_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 = 1e6
		self.freq = freq = 600e6

		##################################################
		# Blocks
		##################################################
		self.wxgui_scopesink2_0 = scopesink2.scope_sink_f(
			self.GetWin(),
			title="Scope Plot",
			sample_rate=samp_rate,
			v_scale=0,
			v_offset=0,
			t_scale=0,
			ac_couple=False,
			xy_mode=False,
			num_inputs=2,
			trig_mode=gr.gr_TRIG_MODE_AUTO,
			y_axis_label="Counts",
		)
		self.Add(self.wxgui_scopesink2_0.win)
		self.uhd_usrp_source_0_0 = uhd.usrp_source(
			device_addr="addr0=163.173.96.128,addr1=163.173.96.131",
			stream_args=uhd.stream_args(
				cpu_format="fc32",
				channels=range(2),
			),
		)
		self.uhd_usrp_source_0_0.set_clock_source("external", 0)
		self.uhd_usrp_source_0_0.set_clock_source("mimo", 1)
		self.uhd_usrp_source_0_0.set_time_source("mimo", 1)
		self.uhd_usrp_source_0_0.set_samp_rate(samp_rate)
		self.uhd_usrp_source_0_0.set_center_freq(freq, 0)
		self.uhd_usrp_source_0_0.set_gain(10, 0)
		self.uhd_usrp_source_0_0.set_antenna("RX2", 0)
		self.uhd_usrp_source_0_0.set_center_freq(freq, 1)
		self.uhd_usrp_source_0_0.set_gain(10, 1)
		self.uhd_usrp_source_0_0.set_antenna("RX2", 1)
		self.uhd_usrp_sink_0 = uhd.usrp_sink(
			device_addr="addr=163.173.96.128",
			stream_args=uhd.stream_args(
				cpu_format="fc32",
				channels=range(1),
			),
		)
		self.uhd_usrp_sink_0.set_clock_source("external", 0)
		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.uhd_usrp_sink_0.set_antenna("TX/RX", 0)
		self.gr_sig_source_x_0 = gr.sig_source_c(samp_rate, gr.GR_COS_WAVE, 10000, 0.9, 0)
		self.gr_complex_to_real_0_0 = gr.complex_to_real(1)
		self.gr_complex_to_real_0 = gr.complex_to_real(1)

		##################################################
		# Connections
		##################################################
		self.connect((self.gr_complex_to_real_0, 0), (self.wxgui_scopesink2_0, 0))
		self.connect((self.uhd_usrp_source_0_0, 0), (self.gr_complex_to_real_0, 0))
		self.connect((self.gr_complex_to_real_0_0, 0), (self.wxgui_scopesink2_0, 1))
		self.connect((self.uhd_usrp_source_0_0, 1), (self.gr_complex_to_real_0_0, 0))
		self.connect((self.gr_sig_source_x_0, 0), (self.uhd_usrp_sink_0, 0))

	def get_samp_rate(self):
		return self.samp_rate

	def set_samp_rate(self, samp_rate):
		self.samp_rate = samp_rate
		self.uhd_usrp_source_0_0.set_samp_rate(self.samp_rate)
		self.wxgui_scopesink2_0.set_sample_rate(self.samp_rate)
		self.gr_sig_source_x_0.set_sampling_freq(self.samp_rate)
		self.uhd_usrp_sink_0.set_samp_rate(self.samp_rate)

	def get_freq(self):
		return self.freq

	def set_freq(self, freq):
		self.freq = freq
		self.uhd_usrp_source_0_0.set_center_freq(self.freq, 0)
		self.uhd_usrp_source_0_0.set_center_freq(self.freq, 1)
		self.uhd_usrp_sink_0.set_center_freq(self.freq, 0)

if __name__ == '__main__':
	parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
	(options, args) = parser.parse_args()
	tb = essai_mimo()
	tb.Run(True)

