def __init__(self, atten=0, fd=50, fadeMode=0):
        gr.top_block.__init__(self,
                              "Static RF or Single Path Rayleigh Faded RF")

        ##################################################
        # Parameters
        ##################################################
        self.atten = atten
        self.fd = fd
        self.fadeMode = fadeMode

        ##################################################
        # Variables
        ##################################################
        self.usrpRate = usrpRate = 250e3
        self.fdTs = fdTs = fd * (1.0 / usrpRate)
        self.centreFreq = centreFreq = 1e6
        self.baseband_multiplier = baseband_multiplier = 0.25

        ##################################################
        # Blocks
        ##################################################
        self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(
            ("0.0.0.0", 1234), allow_none=True)
        self.xmlrpc_server_0.register_instance(self)
        threading.Thread(target=self.xmlrpc_server_0.serve_forever).start()
        self.uhd_usrp_sink_0_0_0 = uhd.usrp_sink(
            device_addr="",
            stream_args=uhd.stream_args(
                cpu_format="fc32",
                channels=range(1),
            ),
        )
        self.uhd_usrp_sink_0_0_0.set_subdev_spec("A:AB", 0)
        self.uhd_usrp_sink_0_0_0.set_samp_rate(usrpRate)
        self.uhd_usrp_sink_0_0_0.set_center_freq(centreFreq, 0)
        self.uhd_usrp_sink_0_0_0.set_gain(0, 0)
        self.rccBlocks_channelModel_cc_0 = rccBlocks.channelModel_cc(
            randint(-10000, 0), fdTs, 1.0, False, bool(fadeMode))
        self.rccBlocks_VNXLabBrick_0 = rccBlocks.VNXLabBrick(atten)
        self.const_source_x_0_0 = gr.sig_source_f(0, gr.GR_CONST_WAVE, 0, 0,
                                                  1.0)
        self.const_source_x_0 = gr.sig_source_c(0, gr.GR_CONST_WAVE, 0, 0,
                                                1.0 + 1j)
        self.blocks_throttle_0 = blocks.throttle(gr.sizeof_float * 1, usrpRate)
        self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vcc(
            (baseband_multiplier, ))

        ##################################################
        # Connections
        ##################################################
        self.connect((self.const_source_x_0, 0),
                     (self.rccBlocks_channelModel_cc_0, 0))
        self.connect((self.blocks_multiply_const_vxx_1, 0),
                     (self.uhd_usrp_sink_0_0_0, 0))
        self.connect((self.const_source_x_0_0, 0), (self.blocks_throttle_0, 0))
        self.connect((self.blocks_throttle_0, 0),
                     (self.rccBlocks_VNXLabBrick_0, 0))
        self.connect((self.rccBlocks_channelModel_cc_0, 0),
                     (self.blocks_multiply_const_vxx_1, 0))
예제 #2
0
	def __init__(self, atten=0, fd=50, fadeMode=0):
		gr.top_block.__init__(self, "Static RF or Single Path Rayleigh Faded RF")

		##################################################
		# Parameters
		##################################################
		self.atten = atten
		self.fd = fd
		self.fadeMode = fadeMode

		##################################################
		# Variables
		##################################################
		self.usrpRate = usrpRate = 250e3
		self.fdTs = fdTs = fd*(1.0/usrpRate)
		self.centreFreq = centreFreq = 1e6
		self.baseband_multiplier = baseband_multiplier = 0.25

		##################################################
		# Blocks
		##################################################
		self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(("0.0.0.0", 1234), allow_none=True)
		self.xmlrpc_server_0.register_instance(self)
		threading.Thread(target=self.xmlrpc_server_0.serve_forever).start()
		self.uhd_usrp_sink_0_0_0 = uhd.usrp_sink(
			device_addr="",
			stream_args=uhd.stream_args(
				cpu_format="fc32",
				channels=range(1),
			),
		)
		self.uhd_usrp_sink_0_0_0.set_subdev_spec("A:AB", 0)
		self.uhd_usrp_sink_0_0_0.set_samp_rate(usrpRate)
		self.uhd_usrp_sink_0_0_0.set_center_freq(centreFreq, 0)
		self.uhd_usrp_sink_0_0_0.set_gain(0, 0)
		self.rccBlocks_channelModel_cc_0 = rccBlocks.channelModel_cc(randint(-10000,0), fdTs, 1.0, False, bool(fadeMode))
		self.rccBlocks_VNXLabBrick_0 = rccBlocks.VNXLabBrick(atten)
		self.const_source_x_0_0 = gr.sig_source_f(0, gr.GR_CONST_WAVE, 0, 0, 1.0)
		self.const_source_x_0 = gr.sig_source_c(0, gr.GR_CONST_WAVE, 0, 0, 1.0+1j)
		self.blocks_throttle_0 = blocks.throttle(gr.sizeof_float*1, usrpRate)
		self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vcc((baseband_multiplier, ))

		##################################################
		# Connections
		##################################################
		self.connect((self.const_source_x_0, 0), (self.rccBlocks_channelModel_cc_0, 0))
		self.connect((self.blocks_multiply_const_vxx_1, 0), (self.uhd_usrp_sink_0_0_0, 0))
		self.connect((self.const_source_x_0_0, 0), (self.blocks_throttle_0, 0))
		self.connect((self.blocks_throttle_0, 0), (self.rccBlocks_VNXLabBrick_0, 0))
		self.connect((self.rccBlocks_channelModel_cc_0, 0), (self.blocks_multiply_const_vxx_1, 0))
	def __init__(self,vehicle_speed,carrier_freq,chan_rate,chan_seed,chan_pwrs,path_delays,flag_indep=False,flag_norm=True):
		gr.hier_block2.__init__(self,
		    "multipath_rayleigh_cc",
		    gr.io_signature(1, 1, gr.sizeof_gr_complex*1),  # Input signature
		    gr.io_signature(1, 1, gr.sizeof_gr_complex*1)) # Output signature

		    # Define blocks and connect them
            
		##################################################
		# Parameters
		##################################################
		self.vehicle_speed = vehicle_speed
		self.chan_rate = chan_rate
		self.carrier_freq = carrier_freq
		self.chan_pwrs = chan_pwrs
		self.path_delays_us = path_delays
		self.chan_seed = chan_seed
		self.mode = 1 #Enables fading for underlaying single path fading block
           
		# Checks that there is the same number of delays as there are powers.
		if len(self.chan_pwrs) != len(self.path_delays_us):
			raise ValueError, "The vector length of chan_pwrs does not match the vector length of path_delays."
			# Could this be improved?
			sys.exit(1)
		##################################################
		# Constants
		##################################################
		# Speed of light in km/h
		speed_of_light = 3e8 * 3.6
		
		##################################################
		# Variables
		##################################################
		# vehicle_speed (km/h), carrier_freq (Hz) and speed_of_light (km/h)
		# units: (km/h * Hz) / (km/h) = Hz. 
		fd = (vehicle_speed * carrier_freq) / speed_of_light
		# channel rate in samples/micro-seconds
		chan_rate_us = chan_rate * 1e-6
		# stores the path delays translated from micro-seconds to 
		# equivalent delays in samples (based on the channel rate)
		self.path_delays_samples = path_delays_samples = np.round(np.array(self.path_delays_us)*chan_rate_us)
		self.fD = fD = (((1.0*vehicle_speed/3.6)*carrier_freq)/3e8)*(1.0/chan_rate)
		print 'self.fD =', self.fD
		
		
		
		# 'T' is the inverse channel rate.
		self.fdT = fd * (1.0 / chan_rate)
		# Testing only
		print "self.fdT = ", self.fdT
		
		# Warn the user of the limited channel delay resolution
		if chan_rate_us < 1:
			print "Warning: at a channel rate of ", chan_rate, \
			" samples/s the delay resolution is ", 1.0/chan_rate, "seconds"
		
		self.c2f_blks = [] 		# for list of gr.complex_to_float().
		self.delay_blks = [] 	# for list of gr.filter_delay_fc ().
		self.chan_blks = [] 	# for list of tait.flat_rayleigh_channel_cc().
		
					
			
		# For testing only	
		print "path delays in samples ", self.path_delays_samples
		
		# Normalizes the channel powers if required
		if flag_norm is True:
			self.chan_pwrs = 1.0*np.array(chan_pwrs)/np.sqrt((chan_pwrs ** 2).sum(-1))
			
				
		# Populate the lists above with the correct number of blocks.
		for i in range (len(self.path_delays_samples)):
			print "create delay block %d" %(i)
			
			# Delay block is required.
			self.delay_blks.append(gr.delay(gr.sizeof_gr_complex*1, int(self.path_delays_samples[i])))
				
			self.chan_blks.append(rccBlocks.channelModel_cc(chan_seed + i, self.fdT, self.chan_pwrs[i], flag_indep,self.mode))
		
		
		self.sum = gr.add_vcc(1)  
		
		# Create multiple instances of the "src -> delay -> channel" connection.
		for i in range (len(self.chan_blks)):
			print i
			self.connect( (self,0), (self.chan_blks[i],0) )
			self.connect( (self.chan_blks[i],0), (self.delay_blks[i],0) )
			self.connect( (self.delay_blks[i],0), (self.sum, i) )
		#self.connect( (self,0), (self.chan_blks[0],0) )
		#self.connect( (self.chan_blks[0],0), (self.delay_blks[0],0) )
		#self.connect( (self.delay_blks[0],0), (self, 0) )	
		self.connect((self.sum, 0), (self,0) )         
    def __init__(
        self,
        vehicle_speed,
        carrier_freq,
        chan_rate,
        chan_seed,
        chan_pwrs,
        path_delays,
        flag_indep=False,
        flag_norm=True,
    ):
        gr.hier_block2.__init__(
            self,
            "multipath_rayleigh_cc",
            gr.io_signature(1, 1, gr.sizeof_gr_complex * 1),  # Input signature
            gr.io_signature(1, 1, gr.sizeof_gr_complex * 1),
        )  # Output signature

        # Define blocks and connect them

        ##################################################
        # Parameters
        ##################################################
        self.vehicle_speed = vehicle_speed
        self.chan_rate = chan_rate
        self.carrier_freq = carrier_freq
        self.chan_pwrs = chan_pwrs
        self.path_delays_us = path_delays
        self.chan_seed = chan_seed
        self.mode = 1  # Enables fading for underlaying single path fading block

        # Checks that there is the same number of delays as there are powers.
        if len(self.chan_pwrs) != len(self.path_delays_us):
            raise ValueError, "The vector length of chan_pwrs does not match the vector length of path_delays."
            # Could this be improved?
            sys.exit(1)
            ##################################################
            # Constants
            ##################################################
            # Speed of light in km/h
        speed_of_light = 3e8 * 3.6

        ##################################################
        # Variables
        ##################################################
        # vehicle_speed (km/h), carrier_freq (Hz) and speed_of_light (km/h)
        # units: (km/h * Hz) / (km/h) = Hz.
        fd = (vehicle_speed * carrier_freq) / speed_of_light
        # channel rate in samples/micro-seconds
        chan_rate_us = chan_rate * 1e-6
        # stores the path delays translated from micro-seconds to
        # equivalent delays in samples (based on the channel rate)
        self.path_delays_samples = path_delays_samples = np.round(np.array(self.path_delays_us) * chan_rate_us)
        self.fD = fD = (((1.0 * vehicle_speed / 3.6) * carrier_freq) / 3e8) * (1.0 / chan_rate)
        print "self.fD =", self.fD

        # 'T' is the inverse channel rate.
        self.fdT = fd * (1.0 / chan_rate)
        # Testing only
        print "self.fdT = ", self.fdT

        # Warn the user of the limited channel delay resolution
        if chan_rate_us < 1:
            print "Warning: at a channel rate of ", chan_rate, " samples/s the delay resolution is ", 1.0 / chan_rate, "seconds"

        self.c2f_blks = []  # for list of gr.complex_to_float().
        self.delay_blks = []  # for list of gr.filter_delay_fc ().
        self.chan_blks = []  # for list of tait.flat_rayleigh_channel_cc().

        # For testing only
        print "path delays in samples ", self.path_delays_samples

        # Normalizes the channel powers if required
        if flag_norm is True:
            self.chan_pwrs = 1.0 * np.array(chan_pwrs) / np.sqrt((chan_pwrs ** 2).sum(-1))

            # Populate the lists above with the correct number of blocks.
        for i in range(len(self.path_delays_samples)):
            print "create delay block %d" % (i)

            # Delay block is required.
            self.delay_blks.append(gr.delay(gr.sizeof_gr_complex * 1, int(self.path_delays_samples[i])))

            self.chan_blks.append(
                rccBlocks.channelModel_cc(chan_seed + i, self.fdT, self.chan_pwrs[i], flag_indep, self.mode)
            )

        self.sum = gr.add_vcc(1)

        # Create multiple instances of the "src -> delay -> channel" connection.
        for i in range(len(self.chan_blks)):
            print i
            self.connect((self, 0), (self.chan_blks[i], 0))
            self.connect((self.chan_blks[i], 0), (self.delay_blks[i], 0))
            self.connect((self.delay_blks[i], 0), (self.sum, i))
            # self.connect( (self,0), (self.chan_blks[0],0) )
            # self.connect( (self.chan_blks[0],0), (self.delay_blks[0],0) )
            # self.connect( (self.delay_blks[0],0), (self, 0) )
        self.connect((self.sum, 0), (self, 0))
	def __init__(self):
		gr.top_block.__init__(self, "Static RF or Single Path Rayleigh Faded RF")
		Qt.QWidget.__init__(self)
		self.setWindowTitle("Static RF or Single Path Rayleigh Faded RF")
		self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
		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)


		##################################################
		# Variables
		##################################################
		self.usrpRate = usrpRate = 250e3
		self.fd = fd = 50
		self.fdTs = fdTs = fd*(1.0/usrpRate)
		self.fadeMode = fadeMode = False
		self.centreFreq = centreFreq = 1e6
		self.baseband_multiplier = baseband_multiplier = 0.25
		self.atten = atten = 0

		##################################################
		# Blocks
		##################################################
		_fadeMode_check_box = Qt.QCheckBox("Fading Enabled")
		self._fadeMode_choices = {True: True, False: False}
		self._fadeMode_choices_inv = dict((v,k) for k,v in self._fadeMode_choices.iteritems())
		self._fadeMode_callback = lambda i: _fadeMode_check_box.setChecked(self._fadeMode_choices_inv[i])
		self._fadeMode_callback(self.fadeMode)
		_fadeMode_check_box.stateChanged.connect(lambda i: self.set_fadeMode(self._fadeMode_choices[bool(i)]))
		self.top_layout.addWidget(_fadeMode_check_box)
		self._atten_layout = Qt.QVBoxLayout()
		self._atten_tool_bar = Qt.QToolBar(self)
		self._atten_layout.addWidget(self._atten_tool_bar)
		self._atten_tool_bar.addWidget(Qt.QLabel("RF Attenuator Setting, dB"+": "))
		self._atten_counter = Qwt.QwtCounter()
		self._atten_counter.setRange(0, 63, 0.5)
		self._atten_counter.setNumButtons(2)
		self._atten_counter.setValue(self.atten)
		self._atten_tool_bar.addWidget(self._atten_counter)
		self._atten_counter.valueChanged.connect(self.set_atten)
		self._atten_slider = Qwt.QwtSlider(None, Qt.Qt.Horizontal, Qwt.QwtSlider.BottomScale, Qwt.QwtSlider.BgSlot)
		self._atten_slider.setRange(0, 63, 0.5)
		self._atten_slider.setValue(self.atten)
		self._atten_slider.setMinimumWidth(200)
		self._atten_slider.valueChanged.connect(self.set_atten)
		self._atten_layout.addWidget(self._atten_slider)
		self.top_layout.addLayout(self._atten_layout)
		self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(("0.0.0.0", 1234), allow_none=True)
		self.xmlrpc_server_0.register_instance(self)
		threading.Thread(target=self.xmlrpc_server_0.serve_forever).start()
		self.uhd_usrp_sink_0_0_0 = uhd.usrp_sink(
			device_addr="",
			stream_args=uhd.stream_args(
				cpu_format="fc32",
				channels=range(1),
			),
		)
		self.uhd_usrp_sink_0_0_0.set_subdev_spec("A:AB", 0)
		self.uhd_usrp_sink_0_0_0.set_samp_rate(usrpRate)
		self.uhd_usrp_sink_0_0_0.set_center_freq(centreFreq, 0)
		self.uhd_usrp_sink_0_0_0.set_gain(0, 0)
		self.rccBlocks_channelModel_cc_0 = rccBlocks.channelModel_cc(randint(-10000,0), fdTs, 1.0, False, fadeMode)
		self.rccBlocks_VNXLabBrick_0 = rccBlocks.VNXLabBrick(atten)
		self._fd_tool_bar = Qt.QToolBar(self)
		self._fd_tool_bar.addWidget(Qt.QLabel("Doppler Rate, Hz"+": "))
		self._fd_line_edit = Qt.QLineEdit(str(self.fd))
		self._fd_tool_bar.addWidget(self._fd_line_edit)
		self._fd_line_edit.returnPressed.connect(
			lambda: self.set_fd(eng_notation.str_to_num(self._fd_line_edit.text().toAscii())))
		self.top_layout.addWidget(self._fd_tool_bar)
		self.const_source_x_0_0 = gr.sig_source_f(0, gr.GR_CONST_WAVE, 0, 0, 1.0)
		self.const_source_x_0 = gr.sig_source_c(0, gr.GR_CONST_WAVE, 0, 0, 1.0+1j)
		self.blocks_throttle_0 = blocks.throttle(gr.sizeof_float*1, usrpRate)
		self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vcc((baseband_multiplier, ))

		##################################################
		# Connections
		##################################################
		self.connect((self.const_source_x_0, 0), (self.rccBlocks_channelModel_cc_0, 0))
		self.connect((self.blocks_multiply_const_vxx_1, 0), (self.uhd_usrp_sink_0_0_0, 0))
		self.connect((self.const_source_x_0_0, 0), (self.blocks_throttle_0, 0))
		self.connect((self.blocks_throttle_0, 0), (self.rccBlocks_VNXLabBrick_0, 0))
		self.connect((self.rccBlocks_channelModel_cc_0, 0), (self.blocks_multiply_const_vxx_1, 0))
예제 #6
0
	def __init__(self):
		gr.top_block.__init__(self, "Static RF or Single Path Rayleigh Faded RF")
		Qt.QWidget.__init__(self)
		self.setWindowTitle("Static RF or Single Path Rayleigh Faded RF")
		self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
		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)


		##################################################
		# Variables
		##################################################
		self.speed = speed = 50
		self.carrierFreq = carrierFreq = 155e6
		self.usrpRate = usrpRate = 250e3
		self.rfLeveldBm = rfLeveldBm = -80
		self.fd = fd = ((1.0*speed/3.6)*carrierFreq)/3e8
		self.hhh = hhh = fd
		self.fdTs = fdTs = fd*(1.0/usrpRate)
		self.fadeMode = fadeMode = False
		self.centreFreq = centreFreq = 1e6
		self.baseband_multiplier = baseband_multiplier = 0.25
		self.atten = atten = abs(rfLeveldBm+65)

		##################################################
		# Blocks
		##################################################
		_fadeMode_check_box = Qt.QCheckBox("Fading Enabled")
		self._fadeMode_choices = {True: True, False: False}
		self._fadeMode_choices_inv = dict((v,k) for k,v in self._fadeMode_choices.iteritems())
		self._fadeMode_callback = lambda i: _fadeMode_check_box.setChecked(self._fadeMode_choices_inv[i])
		self._fadeMode_callback(self.fadeMode)
		_fadeMode_check_box.stateChanged.connect(lambda i: self.set_fadeMode(self._fadeMode_choices[bool(i)]))
		self.top_layout.addWidget(_fadeMode_check_box)
		self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(("0.0.0.0", 1234), allow_none=True)
		self.xmlrpc_server_0.register_instance(self)
		threading.Thread(target=self.xmlrpc_server_0.serve_forever).start()
		self.uhd_usrp_sink_0_0_0 = uhd.usrp_sink(
			device_addr="",
			stream_args=uhd.stream_args(
				cpu_format="fc32",
				channels=range(1),
			),
		)
		self.uhd_usrp_sink_0_0_0.set_subdev_spec("A:AB", 0)
		self.uhd_usrp_sink_0_0_0.set_samp_rate(usrpRate)
		self.uhd_usrp_sink_0_0_0.set_center_freq(centreFreq, 0)
		self.uhd_usrp_sink_0_0_0.set_gain(0, 0)
		self._speed_tool_bar = Qt.QToolBar(self)
		self._speed_tool_bar.addWidget(Qt.QLabel("Vehicle Speed, Kph"+": "))
		self._speed_line_edit = Qt.QLineEdit(str(self.speed))
		self._speed_tool_bar.addWidget(self._speed_line_edit)
		self._speed_line_edit.returnPressed.connect(
			lambda: self.set_speed(eng_notation.str_to_num(self._speed_line_edit.text().toAscii())))
		self.top_layout.addWidget(self._speed_tool_bar)
		self._rfLeveldBm_layout = Qt.QHBoxLayout()
		self._rfLeveldBm_layout.addWidget(Qt.QLabel("Unfaded RF Level, dBm"+": "))
		self._rfLeveldBm_counter = Qwt.QwtCounter()
		self._rfLeveldBm_counter.setRange(-125, -80, 0.5)
		self._rfLeveldBm_counter.setNumButtons(2)
		self._rfLeveldBm_counter.setMinimumWidth(200)
		self._rfLeveldBm_counter.setValue(self.rfLeveldBm)
		self._rfLeveldBm_layout.addWidget(self._rfLeveldBm_counter)
		self._rfLeveldBm_counter.valueChanged.connect(self.set_rfLeveldBm)
		self.top_layout.addLayout(self._rfLeveldBm_layout)
		self.rccBlocks_channelModel_cc_0 = rccBlocks.channelModel_cc(randint(-10000,0), fdTs, 1.0, False, fadeMode)
		self.rccBlocks_VNXLabBrick_0 = rccBlocks.VNXLabBrick(atten)
		self._hhh_tool_bar = Qt.QToolBar(self)
		self._hhh_tool_bar.addWidget(Qt.QLabel("Doppler Frequency, Hz"+": "))
		self._hhh_label = Qt.QLabel(str(self.hhh))
		self._hhh_tool_bar.addWidget(self._hhh_label)
		self.top_layout.addWidget(self._hhh_tool_bar)
		self.const_source_x_0_0 = gr.sig_source_f(0, gr.GR_CONST_WAVE, 0, 0, 1.0)
		self.const_source_x_0 = gr.sig_source_c(0, gr.GR_CONST_WAVE, 0, 0, 1.0+1j)
		self._carrierFreq_tool_bar = Qt.QToolBar(self)
		self._carrierFreq_tool_bar.addWidget(Qt.QLabel("RF Frequency, Hz"+": "))
		self._carrierFreq_line_edit = Qt.QLineEdit(str(self.carrierFreq))
		self._carrierFreq_tool_bar.addWidget(self._carrierFreq_line_edit)
		self._carrierFreq_line_edit.returnPressed.connect(
			lambda: self.set_carrierFreq(eng_notation.str_to_num(self._carrierFreq_line_edit.text().toAscii())))
		self.top_layout.addWidget(self._carrierFreq_tool_bar)
		self.blocks_throttle_0 = blocks.throttle(gr.sizeof_float*1, usrpRate)
		self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vcc((baseband_multiplier, ))

		##################################################
		# Connections
		##################################################
		self.connect((self.const_source_x_0, 0), (self.rccBlocks_channelModel_cc_0, 0))
		self.connect((self.blocks_multiply_const_vxx_1, 0), (self.uhd_usrp_sink_0_0_0, 0))
		self.connect((self.const_source_x_0_0, 0), (self.blocks_throttle_0, 0))
		self.connect((self.blocks_throttle_0, 0), (self.rccBlocks_VNXLabBrick_0, 0))
		self.connect((self.rccBlocks_channelModel_cc_0, 0), (self.blocks_multiply_const_vxx_1, 0))