Пример #1
0
def create_source(serial,
                  device_type,
                  lna_path,
                  sample_rate,
                  freq,
                  if_bandwidth,
                  gain,
                  calibration=True):
    # TODO: Consider using NCO to avoid DC spur.
    # TODO: Support choosing the channel
    # TODO: Use sample_rate or if_bandwidth as calibr_bandw?
    if hasattr(limesdr._limesdr_swig, 'source_set_antenna'):
        # API changed drastically in gr-limesdr 3.0.1; this is the only way to detect the new API.
        s = limesdr.source(serial, ch, '')
        s.set_sample_rate(sample_rate)
        s.set_center_freq(freq)
        s.set_bandwidth(if_bandwidth, ch)
        s.set_digital_filter(if_bandwidth, ch)
        s.set_gain(gain, ch)
        s.set_antenna(lna_path, ch)

        if calibration:
            s.calibrate(60e6, ch)

        return s

    return limesdr.source(
        serial=serial,
        device_type=device_type,  # LimeSDR-USB
        chip_mode=SISO,  # SISO(1),MIMO(2)
        channel=ch,  # A(0),B(1)
        file_switch=0,  # Don't load settings from a file
        filename=defaultstr(''),
        rf_freq=freq,  # Center frequency in Hz
        samp_rate=sample_rate,
        oversample=0,  # 0(default),1,2,4,8,16,32
        calibration_ch0=1 if calibration and ch == 0 else 0,
        calibr_bandw_ch0=60e6,
        calibration_ch1=1 if calibration and ch == 1 else 0,
        calibr_bandw_ch1=60e6,
        lna_path_mini=lna_path,  # LNAH(1),LNAW(3)
        lna_path_ch0=lna_path,  # no path(0),LNAH(1),LNAL(2),LNAW(3)
        lna_path_ch1=lna_path,  # no path(0),LNAH(1),LNAL(2),LNAW(3)
        analog_filter_ch0=1,
        analog_bandw_ch0=if_bandwidth,
        analog_filter_ch1=1,
        analog_bandw_ch1=if_bandwidth,
        digital_filter_ch0=1,
        digital_bandw_ch0=if_bandwidth,
        digital_filter_ch1=1,
        digital_bandw_ch1=if_bandwidth,
        gain_dB_ch0=gain,
        gain_dB_ch1=gain,
        nco_freq_ch0=0,
        nco_freq_ch1=0,
        cmix_mode_ch0=0,  # UPCONVERT(0), DOWNCONVERT(1)
        cmix_mode_ch1=0,  # UPCONVERT(0), DOWNCONVERT(1)
    )
Пример #2
0
    def __init__(self):
        gr.top_block.__init__(self, "Antenna Sweep module")

        ##################################################
        # Variables
        ##################################################
        self.trans_width = trans_width = 500e3
        self.samp_rate = samp_rate = 32e6
        self.sweep_tone = sweep_tone = 0
        self.step_size = step_size = samp_rate / 2 - trans_width
        self.input_scale = input_scale = 1e-5
        self.gain_tx = gain_tx = int(10)
        self.gain_rx = gain_rx = int(10)
        self.freq = freq = 50e6

        ##################################################
        # Blocks
        ##################################################
        self.zmq_tx_pub = zeromq.pub_sink(gr.sizeof_gr_complex, 1,
                                          'tcp://127.0.0.1:5000', 100, True,
                                          -1)
        self.zmq_rx_pub = zeromq.pub_sink(gr.sizeof_gr_complex, 1,
                                          'tcp://127.0.0.1:5001', 100, True,
                                          -1)
        self.scale_tx = blocks.multiply_vcc(1)
        self.lo_input = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE,
                                            freq + sweep_tone, 1, 0)
        self.limesdr_tx = limesdr.sink('', 0, '', '')
        self.limesdr_tx.set_sample_rate(samp_rate)
        self.limesdr_tx.set_center_freq(freq, 0)
        self.limesdr_tx.set_bandwidth(step_size, 0)
        self.limesdr_tx.set_digital_filter(step_size, 0)
        self.limesdr_tx.set_gain(gain_rx, 0)
        self.limesdr_tx.set_antenna(255, 0)
        self.limesdr_tx.calibrate(step_size, 0)

        self.limesdr_rx = limesdr.source('', 0, '')
        self.limesdr_rx.set_sample_rate(samp_rate)
        self.limesdr_rx.set_center_freq(freq, 0)
        self.limesdr_rx.set_bandwidth(step_size, 0)
        self.limesdr_rx.set_digital_filter(step_size, 0)
        self.limesdr_rx.set_gain(30, 0)
        self.limesdr_rx.set_antenna(255, 0)
        self.limesdr_rx.calibrate(step_size, 0)

        self.input_scale_source = analog.sig_source_c(0, analog.GR_CONST_WAVE,
                                                      0, 0, input_scale)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.input_scale_source, 0), (self.scale_tx, 0))
        self.connect((self.limesdr_rx, 0), (self.zmq_rx_pub, 0))
        self.connect((self.lo_input, 0), (self.limesdr_tx, 0))
        self.connect((self.lo_input, 0), (self.scale_tx, 1))
        self.connect((self.scale_tx, 0), (self.zmq_tx_pub, 0))
Пример #3
0
    def __init__(self):
        grc_wxgui.top_block_gui.__init__(self, title="Lime Auto Fast")

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 50e3

        ##################################################
        # Blocks
        ##################################################
        self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
            self.GetWin(),
            baseband_freq=0,
            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',
            peak_hold=False,
        )
        self.Add(self.wxgui_fftsink2_0.win)
        self.limesdr_source_0 = limesdr.source('', 0, '')
        self.limesdr_source_0.set_sample_rate(samp_rate)
        self.limesdr_source_0.set_center_freq(393.5e6, 0)
        self.limesdr_source_0.set_bandwidth(5e6, 0)
        self.limesdr_source_0.set_gain(39, 0)
        self.limesdr_source_0.set_antenna(3, 0)
        self.limesdr_source_0.calibrate(5e6, 0)

        self.facsink_0 = facsink.fac_sink_c(
            self.GetWin(),
            title='Fast AutoCorrelation',
            sample_rate=samp_rate,
            baseband_freq=0,
            y_per_div=5,
            ref_level=-40,
            fac_size=65536,
            fac_rate=facsink.default_fac_rate,
            average=True,
            avg_alpha=0.3,
            peak_hold=True,
        )
        self.Add(self.facsink_0.win)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.limesdr_source_0, 0), (self.facsink_0, 0))
        self.connect((self.limesdr_source_0, 0), (self.wxgui_fftsink2_0, 0))
Пример #4
0
    def __init__(self):
        gr.top_block.__init__(self, "Top Block")

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 32000

        ##################################################
        # Blocks
        ##################################################
        self.limesdr_source_0 = limesdr.source(
            '0009070105C62E09', 2,
            '/home/aaron/Documents/satcom/limeSuite/testFiles/lms7suite_wfm/loraRadioDualChannel'
        )

        self.blocks_file_sink_0_0 = blocks.file_sink(
            gr.sizeof_gr_complex * 1,
            '/home/aaron/Documents/satcom/ieeeTracker/packetTracker/testData/rawIQData2',
            False)
        self.blocks_file_sink_0_0.set_unbuffered(False)
        self.blocks_file_sink_0 = blocks.file_sink(
            gr.sizeof_gr_complex * 1,
            '/home/aaron/Documents/satcom/ieeeTracker/packetTracker/testData/rawIQData',
            False)
        self.blocks_file_sink_0.set_unbuffered(False)
        self.blocks_burst_tagger_0_0 = blocks.burst_tagger(
            gr.sizeof_gr_complex)
        self.blocks_burst_tagger_0_0.set_true_tag('burst', True)
        self.blocks_burst_tagger_0_0.set_false_tag('burst', False)

        self.blocks_burst_tagger_0 = blocks.burst_tagger(gr.sizeof_gr_complex)
        self.blocks_burst_tagger_0.set_true_tag('burst', True)
        self.blocks_burst_tagger_0.set_false_tag('burst', False)

        self.analog_const_source_x_0 = analog.sig_source_s(
            0, analog.GR_CONST_WAVE, 0, 0, -1)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_const_source_x_0, 0),
                     (self.blocks_burst_tagger_0, 1))
        self.connect((self.analog_const_source_x_0, 0),
                     (self.blocks_burst_tagger_0_0, 1))
        self.connect((self.blocks_burst_tagger_0, 0),
                     (self.blocks_file_sink_0, 0))
        self.connect((self.blocks_burst_tagger_0_0, 0),
                     (self.blocks_file_sink_0_0, 0))
        self.connect((self.limesdr_source_0, 1),
                     (self.blocks_burst_tagger_0, 0))
        self.connect((self.limesdr_source_0, 0),
                     (self.blocks_burst_tagger_0_0, 0))
Пример #5
0
    def __init__(self,
                 zmq_address_iq_in='tcp://127.0.0.1:5052',
                 zmq_address_iq_out='tcp://*:5051'):
        gr.top_block.__init__(self, "Zero Mq Split A")

        ##################################################
        # Parameters
        ##################################################
        self.zmq_address_iq_in = zmq_address_iq_in
        self.zmq_address_iq_out = zmq_address_iq_out

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 1e6
        self.offset = offset = 0
        self.capture_freq = capture_freq = 868.5e6

        ##################################################
        # Blocks
        ##################################################
        self.zeromq_sub_source_0 = zeromq.sub_source(gr.sizeof_gr_complex, 1,
                                                     zmq_address_iq_in, -1,
                                                     False, -1)
        self.zeromq_pub_sink_0 = zeromq.pub_sink(gr.sizeof_gr_complex, 1,
                                                 zmq_address_iq_out, -1, False,
                                                 -1)
        self.limesdr_source_0 = limesdr.source('0009072C0287211A', 0, '')
        self.limesdr_source_0.set_sample_rate(samp_rate)
        self.limesdr_source_0.set_center_freq(capture_freq, 0)
        self.limesdr_source_0.set_bandwidth(5e6, 0)
        self.limesdr_source_0.set_gain(30, 0)
        self.limesdr_source_0.set_antenna(2, 0)
        self.limesdr_source_0.calibrate(5e6, 0)

        self.limesdr_sink_0 = limesdr.sink('', 0, '', '')
        self.limesdr_sink_0.set_sample_rate(samp_rate)
        self.limesdr_sink_0.set_center_freq(capture_freq, 0)
        self.limesdr_sink_0.set_bandwidth(5e6, 0)
        self.limesdr_sink_0.set_gain(50, 0)
        self.limesdr_sink_0.set_antenna(255, 0)
        self.limesdr_sink_0.calibrate(5e6, 0)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.limesdr_source_0, 0), (self.zeromq_pub_sink_0, 0))
        self.connect((self.zeromq_sub_source_0, 0), (self.limesdr_sink_0, 0))
Пример #6
0
def create_source(serial,
                  device_type,
                  lna_path,
                  sample_rate,
                  freq,
                  if_bandwidth,
                  gain,
                  calibration=True):
    # TODO: Consider using NCO to avoid DC spur.
    # TODO: Support choosing the channel
    # TODO: Use sample_rate or if_bandwidth as calibr_bandw?
    return limesdr.source(
        serial=serial,
        device_type=device_type,  # LimeSDR-USB
        chip_mode=SISO,  # SISO(1),MIMO(2)
        channel=ch,  # A(0),B(1)
        file_switch=0,  # Don't load settings from a file
        filename=defaultstr(''),
        rf_freq=freq,  # Center frequency in Hz
        samp_rate=sample_rate,
        oversample=0,  # 0(default),1,2,4,8,16,32
        calibration_ch0=1 if calibration and ch == 0 else 0,
        calibr_bandw_ch0=60e6,
        calibration_ch1=1 if calibration and ch == 1 else 0,
        calibr_bandw_ch1=60e6,
        lna_path_mini=lna_path,  # LNAH(1),LNAW(3)
        lna_path_ch0=lna_path,  # no path(0),LNAH(1),LNAL(2),LNAW(3)
        lna_path_ch1=lna_path,  # no path(0),LNAH(1),LNAL(2),LNAW(3)
        analog_filter_ch0=1,
        analog_bandw_ch0=if_bandwidth,
        analog_filter_ch1=1,
        analog_bandw_ch1=if_bandwidth,
        digital_filter_ch0=1,
        digital_bandw_ch0=if_bandwidth,
        digital_filter_ch1=1,
        digital_bandw_ch1=if_bandwidth,
        gain_dB_ch0=gain,
        gain_dB_ch1=gain,
        nco_freq_ch0=0,
        nco_freq_ch1=0,
        cmix_mode_ch0=0,  # UPCONVERT(0), DOWNCONVERT(1)
        cmix_mode_ch1=0,  # UPCONVERT(0), DOWNCONVERT(1)
    )
Пример #7
0
    def __init__(self, target_frequency, if_sampling_rate):
        super(source_limesdr, self).__init__(
            "source_limesdr",
            gr.io_signature(0, 0, 0),
            gr.io_signature(1, 1, gr.sizeof_gr_complex * 1),
        )

        import limesdr

        rf_sampling_rate = 10e6
        baseband_bandwidth = 1750000
        offset_frequency = 0

        rf_gain = 30  # Gains set assuming a front-end filter keeps out-of-band noise down.

        if_filter_attenuation = 60

        rf_decimation, rf_decimation_remainder = divmod(
            rf_sampling_rate, if_sampling_rate)
        if rf_decimation_remainder != 0:
            raise RuntimeError('RF decimation must be an integer')
        rf_decimation = int(round(rf_decimation))
        tuning_frequency = target_frequency - offset_frequency

        self.source = limesdr.source('', 0, '')
        self.source.set_sample_rate(rf_sampling_rate)
        self.source.set_center_freq(tuning_frequency, 0)
        self.source.set_gain(rf_gain, 0)
        self.source.set_antenna(2, 0)
        self.source.set_bandwidth(max(1.5e6, baseband_bandwidth), 0)
        self.source.calibrate(max(2.5e6, rf_sampling_rate), 0)

        if_taps = firdes.low_pass_2(1.0, rf_sampling_rate,
                                    if_sampling_rate * 0.45,
                                    if_sampling_rate * 0.1,
                                    if_filter_attenuation)
        self.if_filter = filter.freq_xlating_fir_filter_ccc(
            rf_decimation, (if_taps), offset_frequency, rf_sampling_rate)
        #self.if_filter.set_min_output_buffer(1048576)

        self.connect(self.source, self.if_filter, self)
Пример #8
0
    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))
Пример #9
0
def create_source(serial, device_type, lna_path, sample_rate, freq, if_bandwidth, gain, calibration=True):
    # TODO: Consider using NCO to avoid DC spur.
    # TODO: Support choosing the channel
    # TODO: Use sample_rate or if_bandwidth as calibr_bandw?
    return limesdr.source(
        serial=serial,
        device_type=device_type,  # LimeSDR-USB
        chip_mode=SISO,  # SISO(1),MIMO(2)
        channel=ch,  # A(0),B(1)
        file_switch=0,  # Don't load settings from a file
        filename=defaultstr(''),
        rf_freq=freq,  # Center frequency in Hz
        samp_rate=sample_rate,
        oversample=0,  # 0(default),1,2,4,8,16,32
        calibration_ch0=1 if calibration and ch == 0 else 0,
        calibr_bandw_ch0=60e6,
        calibration_ch1=1 if calibration and ch == 1 else 0,
        calibr_bandw_ch1=60e6,
        lna_path_mini=lna_path,  # LNAH(1),LNAW(3)
        lna_path_ch0=lna_path,  # no path(0),LNAH(1),LNAL(2),LNAW(3)
        lna_path_ch1=lna_path,  # no path(0),LNAH(1),LNAL(2),LNAW(3)
        analog_filter_ch0=1,
        analog_bandw_ch0=if_bandwidth,
        analog_filter_ch1=1,
        analog_bandw_ch1=if_bandwidth,
        digital_filter_ch0=1,
        digital_bandw_ch0=if_bandwidth,
        digital_filter_ch1=1,
        digital_bandw_ch1=if_bandwidth,
        gain_dB_ch0=gain,
        gain_dB_ch1=gain,
        nco_freq_ch0=0,
        nco_freq_ch1=0,
        cmix_mode_ch0=0,  # UPCONVERT(0), DOWNCONVERT(1)
        cmix_mode_ch1=0,  # UPCONVERT(0), DOWNCONVERT(1)
    )
Пример #10
0
 def __init__(self, deviceSerialNumber):
   FlowGraphBlock.__init__(self)
   if (RadioSourceBlock.sdrSource == None):
     sdrSrc = limesdr.source(
       deviceSerialNumber, # device_number
       1,                  # device_type = LimeSDR-Mini
       1,                  # chip_mode = SISO
       0,                  # channel = A (in SISO mode)
       0,                  # file_switch = NO (don't load parameters from file)
       "",                 # filename = unused for no parameter file
       SDR_DEFAULT_FREQ,   # rf_freq (default to 433MHz ISM band)
       SDR_SAMPLE_RATE,    # samp_rate (default set to nominal 400 kHz)
       16,                 # oversample (decimate by x16)
       1,                  # calibration_ch0 enabled
       2.5e6,              # calibr_bandw_ch0 (default set to minimum 2.5 MHz)
       0,                  # calibration_ch1 disabled
       0,                  # calibr_bandw_ch1 unused
       3,                  # lna_path_mini = LNAW
       0,                  # lna_path_ch0 unused for LimeSDR-Mini
       0,                  # lna_path_ch1 unused for LimeSDR-Mini
       1,                  # analog_filter_ch0 enabled
       1.5e6,              # analog_bandw_ch0 (default set to minimum 1.5 MHz)
       0,                  # analog_filter_ch1 disabled
       1.5e6,              # analog_bandw_ch1 unused
       1,                  # digital_filter_ch0 enabled
       SDR_BANDWIDTH,      # digital_bandw_ch0 (default to nominal 200 kHz)
       0,                  # digital_filter_ch1 disabled
       SDR_BANDWIDTH,      # digital_bandw_ch1 unused
       40,                 # gain_dB_ch0 (default set to nominal 40dB)
       0,                  # gain_dB_ch1 unused
       0,                  # nco_freq_ch0 is unused
       0,                  # nco_freq_ch1 is unused
       0,                  # cmix_mode_ch0 is unused
       0                   # cmix_mode_ch1 is unused
     )
     RadioSourceBlock.sdrSource = sdrSrc
Пример #11
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")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Variables
        ##################################################
        self.num_channels = num_channels = 7
        self.samp_rate = samp_rate = 400000 * num_channels
        self.center_freq = center_freq = 101.1e6

        ##################################################
        # Blocks
        ##################################################
        self._center_freq_range = Range(98.1e6, 108.1e6, 200000, 101.1e6, 200)
        self._center_freq_win = RangeWidget(self._center_freq_range,
                                            self.set_center_freq, 'Frequency',
                                            "counter_slider", float)
        self.top_grid_layout.addWidget(self._center_freq_win, 1, 0, 1, 1)
        for r in range(1, 2):
            self.top_grid_layout.setRowStretch(r, 1)
        for c in range(0, 1):
            self.top_grid_layout.setColumnStretch(c, 1)
        self.qtgui_waterfall_sink_x_0 = qtgui.waterfall_sink_c(
            1024,  #size
            firdes.WIN_BLACKMAN_hARRIS,  #wintype
            center_freq,  #fc
            samp_rate,  #bw
            "",  #name
            1  #number of inputs
        )
        self.qtgui_waterfall_sink_x_0.set_update_time(0.10)
        self.qtgui_waterfall_sink_x_0.enable_grid(True)
        self.qtgui_waterfall_sink_x_0.enable_axis_labels(True)

        if not True:
            self.qtgui_waterfall_sink_x_0.disable_legend()

        if "complex" == "float" or "complex" == "msg_float":
            self.qtgui_waterfall_sink_x_0.set_plot_pos_half(not True)

        labels = ['', '', '', '', '', '', '', '', '', '']
        colors = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
        for i in xrange(1):
            if len(labels[i]) == 0:
                self.qtgui_waterfall_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_waterfall_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_waterfall_sink_x_0.set_color_map(i, colors[i])
            self.qtgui_waterfall_sink_x_0.set_line_alpha(i, alphas[i])

        self.qtgui_waterfall_sink_x_0.set_intensity_range(-90, -50)

        self._qtgui_waterfall_sink_x_0_win = sip.wrapinstance(
            self.qtgui_waterfall_sink_x_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_waterfall_sink_x_0_win)
        self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c(
            512,  #size
            firdes.WIN_HAMMING,  #wintype
            center_freq,  #fc
            samp_rate,  #bw
            "",  #name
            num_channels  #number of inputs
        )
        self.qtgui_freq_sink_x_0.set_update_time(0.10)
        self.qtgui_freq_sink_x_0.set_y_axis(-100, -50)
        self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dBm')
        self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0,
                                                  "")
        self.qtgui_freq_sink_x_0.enable_autoscale(False)
        self.qtgui_freq_sink_x_0.enable_grid(True)
        self.qtgui_freq_sink_x_0.set_fft_average(1.0)
        self.qtgui_freq_sink_x_0.enable_axis_labels(True)
        self.qtgui_freq_sink_x_0.enable_control_panel(False)

        if not True:
            self.qtgui_freq_sink_x_0.disable_legend()

        if "complex" == "float" or "complex" == "msg_float":
            self.qtgui_freq_sink_x_0.set_plot_pos_half(not True)

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "dark blue"
        ]
        alphas = [0.5, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
        for i in xrange(num_channels):
            if len(labels[i]) == 0:
                self.qtgui_freq_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_freq_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_freq_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_freq_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_freq_sink_x_0_win = sip.wrapinstance(
            self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_freq_sink_x_0_win, 0, 0, 1,
                                       1)
        for r in range(0, 1):
            self.top_grid_layout.setRowStretch(r, 1)
        for c in range(0, 1):
            self.top_grid_layout.setColumnStretch(c, 1)
        self.pfb_channelizer_ccf_0 = pfb.channelizer_ccf(
            num_channels, (makeTaps.makePolyphaseFilter(num_channels, 10)),
            1.0, 1)
        self.pfb_channelizer_ccf_0.set_channel_map(([4, 5, 6, 0, 1, 2, 3]))
        self.pfb_channelizer_ccf_0.declare_sample_delay(0)

        self.limesdr_source_0 = limesdr.source('1D40F7A60B4B4E', 0, '')
        self.limesdr_source_0.set_sample_rate(samp_rate)
        self.limesdr_source_0.set_center_freq(center_freq, 0)
        self.limesdr_source_0.set_bandwidth(5e6, 0)
        self.limesdr_source_0.set_digital_filter(samp_rate, 0)
        self.limesdr_source_0.set_gain(40, 0)
        self.limesdr_source_0.set_antenna(2, 0)
        self.limesdr_source_0.calibrate(5e6, 0)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.limesdr_source_0, 0),
                     (self.pfb_channelizer_ccf_0, 0))
        self.connect((self.limesdr_source_0, 0),
                     (self.qtgui_waterfall_sink_x_0, 0))
        self.connect((self.pfb_channelizer_ccf_0, 0),
                     (self.qtgui_freq_sink_x_0, 0))
        self.connect((self.pfb_channelizer_ccf_0, 1),
                     (self.qtgui_freq_sink_x_0, 1))
        self.connect((self.pfb_channelizer_ccf_0, 2),
                     (self.qtgui_freq_sink_x_0, 2))
        self.connect((self.pfb_channelizer_ccf_0, 3),
                     (self.qtgui_freq_sink_x_0, 3))
        self.connect((self.pfb_channelizer_ccf_0, 4),
                     (self.qtgui_freq_sink_x_0, 4))
        self.connect((self.pfb_channelizer_ccf_0, 5),
                     (self.qtgui_freq_sink_x_0, 5))
        self.connect((self.pfb_channelizer_ccf_0, 6),
                     (self.qtgui_freq_sink_x_0, 6))
Пример #12
0
    def __init__(self):
        grc_wxgui.top_block_gui.__init__(self, title="limeReceiver")
        _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 = 2e6
        self.freq = freq = 2350e6

        ##################################################
        # Blocks
        ##################################################
        self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
            self.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=True,
            avg_alpha=.1,
            title='FFT Plot',
            peak_hold=True,
        )
        self.Add(self.wxgui_fftsink2_0.win)
        self.limesdr_source_0 = limesdr.source('1D424BDA12AF19', 1, 1, 0, 0,
                                               '', freq, samp_rate, 0, 0, 10e6,
                                               0, 10e6, 3, 2, 2, 1, 5e6, 1,
                                               5e6, 0, 0, 0, 0, 60, 30, 0, 0,
                                               0, 0)
        self.digital_gfsk_demod_0 = digital.gfsk_demod(
            samples_per_symbol=4,
            sensitivity=1.012,
            gain_mu=0,
            mu=0,
            omega_relative_limit=0,
            freq_error=0.0,
            verbose=False,
            log=False,
        )
        self.blocks_file_sink_0 = blocks.file_sink(
            gr.sizeof_char * 1, '/home/eaglesat/dataout.txt', False)
        self.blocks_file_sink_0.set_unbuffered(False)
        self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(
            grc_blks2.packet_decoder(
                access_code='',
                threshold=-1,
                callback=lambda ok, payload: self.blks2_packet_decoder_0.
                recv_pkt(ok, payload),
            ), )

        ##################################################
        # Connections
        ##################################################
        self.connect((self.blks2_packet_decoder_0, 0),
                     (self.blocks_file_sink_0, 0))
        self.connect((self.digital_gfsk_demod_0, 0),
                     (self.blks2_packet_decoder_0, 0))
        self.connect((self.limesdr_source_0, 0),
                     (self.digital_gfsk_demod_0, 0))
        self.connect((self.limesdr_source_0, 0), (self.wxgui_fftsink2_0, 0))
Пример #13
0
    def __init__(self):
        gr.top_block.__init__(self, "qo100", catch_exceptions=True)
        Qt.QWidget.__init__(self)
        self.setWindowTitle("qo100")
        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", "qo100")

        try:
            if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
                self.restoreGeometry(
                    self.settings.value("geometry").toByteArray())
            else:
                self.restoreGeometry(self.settings.value("geometry"))
        except:
            pass

        ##################################################
        # Variables
        ##################################################
        self.decim = decim = 11
        self.vfo = vfo = 40e3
        self.tx_vfo = tx_vfo = 40e3
        self.samp_rate = samp_rate = decim * 48e3
        self.rx0_low_cutoff = rx0_low_cutoff = 0
        self.rx0_high_cutoff = rx0_high_cutoff = 3000
        self.mag = mag = 0.9

        self.af_gain = af_gain = 20

        ##################################################
        # Blocks
        ##################################################
        self._vfo_msgdigctl_win = qtgui.MsgDigitalNumberControl(
            lbl='RX',
            min_freq_hz=-10e3,
            max_freq_hz=510e3,
            parent=self,
            thousands_separator=".",
            background_color="black",
            fontColor="white",
            var_callback=self.set_vfo,
            outputmsgname="'freq'".replace("'", ""))
        self._vfo_msgdigctl_win.setValue(40e3)
        self._vfo_msgdigctl_win.setReadOnly(False)
        self.vfo = self._vfo_msgdigctl_win

        self.top_layout.addWidget(self._vfo_msgdigctl_win)
        self._tx_vfo_msgdigctl_win = qtgui.MsgDigitalNumberControl(
            lbl='TX',
            min_freq_hz=-10e3,
            max_freq_hz=510e3,
            parent=self,
            thousands_separator=".",
            background_color="black",
            fontColor="white",
            var_callback=self.set_tx_vfo,
            outputmsgname="'freq'".replace("'", ""))
        self._tx_vfo_msgdigctl_win.setValue(40e3)
        self._tx_vfo_msgdigctl_win.setReadOnly(False)
        self.tx_vfo = self._tx_vfo_msgdigctl_win

        self.top_layout.addWidget(self._tx_vfo_msgdigctl_win)
        self._af_gain_range = Range(0, 200, 5, 20, 200)
        self._af_gain_win = RangeWidget(self._af_gain_range, self.set_af_gain,
                                        "af_gain", "counter_slider", float,
                                        QtCore.Qt.Horizontal)
        self.top_grid_layout.addWidget(self._af_gain_win, 29, 0, 1, 1)
        for r in range(29, 30):
            self.top_grid_layout.setRowStretch(r, 1)
        for c in range(0, 1):
            self.top_grid_layout.setColumnStretch(c, 1)
        self.vfo2_to_float = blocks.complex_to_float(1)
        self.vfo2_signal_source = analog.sig_source_c(samp_rate,
                                                      analog.GR_COS_WAVE,
                                                      250e3 - 40e3, mag, 0, 0)
        self.vfo2_mixer = blocks.multiply_vcc(1)
        self.vfo2_bandpass = filter.fir_filter_ccc(
            decim,
            firdes.complex_band_pass(10, samp_rate, 0, 5000, 1000,
                                     window.WIN_HAMMING, 6.76))
        self.vfo2_audio_sink = audio.sink(48000, 'pulse:rx2', False)
        self.vfo0_waterfall_atten = blocks.multiply_const_cc(0.01)
        self.vfo0_waterfall_add = blocks.add_vcc(1)
        self.vfo0_to_float = blocks.complex_to_float(1)
        self.vfo0_signal_source = analog.sig_source_c(samp_rate,
                                                      analog.GR_COS_WAVE,
                                                      250e3 - vfo, mag, 0, 0)
        self.vfo0_scope_bandpass = filter.fir_filter_ccc(
            2 * decim,
            firdes.complex_band_pass(1, samp_rate, -12e3, 12e3, 1000,
                                     window.WIN_HAMMING, 6.76))
        self.vfo0_scope = qtgui.freq_sink_c(
            1024,  #size
            window.WIN_HAMMING,  #wintype
            0,  #fc
            24e3,  #bw
            '',  #name
            1,
            None  # parent
        )
        self.vfo0_scope.set_update_time(0.01)
        self.vfo0_scope.set_y_axis(-86, -40)
        self.vfo0_scope.set_y_label('Relative Gain', 'dB')
        self.vfo0_scope.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "")
        self.vfo0_scope.enable_autoscale(False)
        self.vfo0_scope.enable_grid(True)
        self.vfo0_scope.set_fft_average(0.2)
        self.vfo0_scope.enable_axis_labels(True)
        self.vfo0_scope.enable_control_panel(True)
        self.vfo0_scope.set_fft_window_normalized(True)

        self.vfo0_scope.disable_legend()

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "dark blue"
        ]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

        for i in range(1):
            if len(labels[i]) == 0:
                self.vfo0_scope.set_line_label(i, "Data {0}".format(i))
            else:
                self.vfo0_scope.set_line_label(i, labels[i])
            self.vfo0_scope.set_line_width(i, widths[i])
            self.vfo0_scope.set_line_color(i, colors[i])
            self.vfo0_scope.set_line_alpha(i, alphas[i])

        self._vfo0_scope_win = sip.wrapinstance(self.vfo0_scope.qwidget(),
                                                Qt.QWidget)
        self.top_grid_layout.addWidget(self._vfo0_scope_win, 15, 0, 14, 1)
        for r in range(15, 29):
            self.top_grid_layout.setRowStretch(r, 1)
        for c in range(0, 1):
            self.top_grid_layout.setColumnStretch(c, 1)
        self.vfo0_mixer = blocks.multiply_vcc(1)
        self.vfo0_bandpass = filter.fir_filter_ccc(
            decim,
            firdes.complex_band_pass(af_gain, samp_rate, rx0_low_cutoff,
                                     rx0_high_cutoff, 1000, window.WIN_HAMMING,
                                     6.76))
        self.vfo0_audio_sink = audio.sink(48000, 'pulse', False)
        self.tx_vfo_signal_source = analog.sig_source_c(
            samp_rate, analog.GR_COS_WAVE, tx_vfo - 250e3, mag, 0, 0)
        self.tx_to_complex = blocks.float_to_complex(1)
        self.tx_mixer = blocks.multiply_vcc(1)
        self.tx_bandpass = filter.interp_fir_filter_ccc(
            1,
            firdes.complex_band_pass(1, 48e3, 0, 3000, 1000,
                                     window.WIN_HAMMING, 6.76))
        self.tx_audio_source = audio.source(48000, 'pulse:tx0.monitor', False)
        self.rx_resampler = filter.rational_resampler_ccc(interpolation=decim,
                                                          decimation=1,
                                                          taps=[],
                                                          fractional_bw=0)
        self.rx0_low_cutoff_setter = blocks.msg_pair_to_var(
            self.set_rx0_low_cutoff)
        self.rx0_high_cutoff_setter = blocks.msg_pair_to_var(
            self.set_rx0_high_cutoff)
        self.qtgui_waterfall_sink_x_0 = qtgui.waterfall_sink_c(
            2048,  #size
            window.WIN_BLACKMAN_hARRIS,  #wintype
            250e3,  #fc
            samp_rate,  #bw
            "",  #name
            1,  #number of inputs
            None  # parent
        )
        self.qtgui_waterfall_sink_x_0.set_update_time(0.05)
        self.qtgui_waterfall_sink_x_0.enable_grid(False)
        self.qtgui_waterfall_sink_x_0.enable_axis_labels(True)

        labels = ['', '', '', '', '', '', '', '', '', '']
        colors = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

        for i in range(1):
            if len(labels[i]) == 0:
                self.qtgui_waterfall_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_waterfall_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_waterfall_sink_x_0.set_color_map(i, colors[i])
            self.qtgui_waterfall_sink_x_0.set_line_alpha(i, alphas[i])

        self.qtgui_waterfall_sink_x_0.set_intensity_range(-75, -45)

        self._qtgui_waterfall_sink_x_0_win = sip.wrapinstance(
            self.qtgui_waterfall_sink_x_0.qwidget(), Qt.QWidget)

        self.top_grid_layout.addWidget(self._qtgui_waterfall_sink_x_0_win, 0,
                                       0, 14, 1)
        for r in range(0, 14):
            self.top_grid_layout.setRowStretch(r, 1)
        for c in range(0, 1):
            self.top_grid_layout.setColumnStretch(c, 1)
        self.midi_block = midi_block.blk(
            midi_port='DJControl Compact:DJControl Compact DJControl Com')
        if "int" == "int":
            isFloat = False
            scaleFactor = 1
        else:
            isFloat = True
            scaleFactor = 1

        _low_cutoff_gauge_lg_win = qtgui.GrLevelGauge('', "default", "default",
                                                      "default", 0, 3000, 100,
                                                      False, 1, isFloat,
                                                      scaleFactor, True, self)
        _low_cutoff_gauge_lg_win.setValue(0)
        self.low_cutoff_gauge = _low_cutoff_gauge_lg_win

        self.top_layout.addWidget(_low_cutoff_gauge_lg_win)
        self.limesdr_source = limesdr.source('', 0, '')
        self.limesdr_source.set_sample_rate(samp_rate)
        self.limesdr_source.set_center_freq(739.75e6, 0)
        self.limesdr_source.set_bandwidth(1.5e6, 0)
        self.limesdr_source.set_gain(30, 0)
        self.limesdr_source.set_antenna(2, 0)
        self.limesdr_source.calibrate(5e6, 0)
        self.limesdr_sink = limesdr.sink('', 0, '', '')
        self.limesdr_sink.set_sample_rate(samp_rate)
        self.limesdr_sink.set_center_freq(2400.250e6, 0)
        self.limesdr_sink.set_bandwidth(5e6, 0)
        self.limesdr_sink.set_gain(73, 0)
        self.limesdr_sink.set_antenna(2, 0)
        self.limesdr_sink.calibrate(2.5e6, 0)
        if "int" == "int":
            isFloat = False
            scaleFactor = 1
        else:
            isFloat = True
            scaleFactor = 1

        _high_cutoff_gauge_lg_win = qtgui.GrLevelGauge('', "default",
                                                       "default", "default", 0,
                                                       3000, 100, False, 1,
                                                       isFloat, scaleFactor,
                                                       True, self)
        _high_cutoff_gauge_lg_win.setValue(3000)
        self.high_cutoff_gauge = _high_cutoff_gauge_lg_win

        self.top_layout.addWidget(_high_cutoff_gauge_lg_win)
        self.control = control.blk()
        self.blocks_swapiq_0 = blocks.swap_iq(1, gr.sizeof_gr_complex)

        ##################################################
        # Connections
        ##################################################
        self.msg_connect((self.control, 'rx0_high_cutoff'),
                         (self.high_cutoff_gauge, 'value'))
        self.msg_connect((self.control, 'rx0_low_cutoff'),
                         (self.low_cutoff_gauge, 'value'))
        self.msg_connect((self.control, 'midi_out'),
                         (self.midi_block, 'midi_in'))
        self.msg_connect((self.control, 'rx0_high_cutoff'),
                         (self.rx0_high_cutoff_setter, 'inpair'))
        self.msg_connect((self.control, 'rx0_low_cutoff'),
                         (self.rx0_low_cutoff_setter, 'inpair'))
        self.msg_connect((self.control, 'tx_freq_out'),
                         (self.tx_vfo, 'valuein'))
        self.msg_connect((self.control, 'rx_freq_out'), (self.vfo, 'valuein'))
        self.msg_connect((self.midi_block, 'midi_out'),
                         (self.control, 'midi_in'))
        self.msg_connect((self.tx_vfo, 'valueout'),
                         (self.control, 'tx_freq_in'))
        self.msg_connect((self.vfo, 'valueout'), (self.control, 'rx_freq_in'))
        self.connect((self.blocks_swapiq_0, 0), (self.vfo0_waterfall_atten, 0))
        self.connect((self.limesdr_source, 0), (self.vfo0_mixer, 0))
        self.connect((self.limesdr_source, 0), (self.vfo0_waterfall_add, 0))
        self.connect((self.limesdr_source, 0), (self.vfo2_mixer, 0))
        self.connect((self.rx_resampler, 0), (self.tx_mixer, 0))
        self.connect((self.tx_audio_source, 0), (self.tx_to_complex, 0))
        self.connect((self.tx_bandpass, 0), (self.rx_resampler, 0))
        self.connect((self.tx_mixer, 0), (self.limesdr_sink, 0))
        self.connect((self.tx_to_complex, 0), (self.tx_bandpass, 0))
        self.connect((self.tx_vfo_signal_source, 0), (self.tx_mixer, 1))
        self.connect((self.vfo0_bandpass, 0), (self.vfo0_to_float, 0))
        self.connect((self.vfo0_mixer, 0), (self.vfo0_bandpass, 0))
        self.connect((self.vfo0_mixer, 0), (self.vfo0_scope_bandpass, 0))
        self.connect((self.vfo0_scope_bandpass, 0), (self.vfo0_scope, 0))
        self.connect((self.vfo0_signal_source, 0), (self.blocks_swapiq_0, 0))
        self.connect((self.vfo0_signal_source, 0), (self.vfo0_mixer, 1))
        self.connect((self.vfo0_to_float, 0), (self.vfo0_audio_sink, 0))
        self.connect((self.vfo0_waterfall_add, 0),
                     (self.qtgui_waterfall_sink_x_0, 0))
        self.connect((self.vfo0_waterfall_atten, 0),
                     (self.vfo0_waterfall_add, 1))
        self.connect((self.vfo2_bandpass, 0), (self.vfo2_to_float, 0))
        self.connect((self.vfo2_mixer, 0), (self.vfo2_bandpass, 0))
        self.connect((self.vfo2_signal_source, 0), (self.vfo2_mixer, 1))
        self.connect((self.vfo2_to_float, 0), (self.vfo2_audio_sink, 0))
    def __init__(self,
                 alpha=0.15,
                 antenna="TX/RX",
                 beta=0.3,
                 dump_filename="<<stdout>>",
                 equalization_method="ppt_dd",
                 ff="",
                 filename="",
                 freq=2.412e9,
                 gain=30,
                 nskip=20000000,
                 samp_rate=20e6):
        gr.top_block.__init__(self, "SWiFi RX")

        ##################################################
        # Parameters
        ##################################################
        self.alpha = alpha
        self.antenna = antenna
        self.beta = beta
        self.dump_filename = dump_filename
        self.equalization_method = equalization_method
        self.ff = ff
        self.filename = filename
        self.freq = freq
        self.gain = gain
        self.nskip = nskip
        self.samp_rate = samp_rate

        ##################################################
        # Variables
        ##################################################
        self.header_mod = header_mod = swifi.wifi_constellation_bpsk()
        self.header_formatter_2 = header_formatter_2 = swifi.ofdm_phy_header_parser(
            "frame_len", "phy")

        ##################################################
        # Blocks
        ##################################################
        self.wirlab_CSI_to_File_0 = wirlab.CSI_to_File(
            gr.sizeof_gr_complex * 1, "", "CSI.log", True)
        self.swifi_wifi_conv_decoder_0_0 = swifi.wifi_conv_decoder(24, -1)
        self.swifi_wifi_conv_decoder_0 = swifi.wifi_conv_decoder("phy")
        self.swifi_scrambler_0 = swifi.scrambler(False, "phy")
        self.swifi_sample_marker_0 = swifi.sample_marker(
            gr.sizeof_gr_complex, "phy")
        self.swifi_payload_parser_0 = swifi.payload_parser(
            "phy", dump_filename, "text", ff, True)
        self.swifi_ofdm_frame_sync_0 = swifi.ofdm_frame_sync(
            0.9, 64, 0.4, 0.05, 0.2, "trigger")
        self.swifi_ofdm_equalizer_1 = swifi.ofdm_equalizer(
            "", True, "channel_states",
            digital.constellation_bpsk().base())
        self.swifi_ofdm_equalizer_1.set_equalization_method(
            equalization_method)
        self.swifi_ofdm_equalizer_1.set_alpha(alpha)
        self.swifi_ofdm_equalizer_1.set_beta(beta)
        self.swifi_ofdm_equalizer_1.enable_foc(False)
        self.swifi_ofdm_equalizer_0 = swifi.ofdm_equalizer(
            "phy", False, "channel_states")
        self.swifi_ofdm_equalizer_0.set_equalization_method(
            equalization_method)
        self.swifi_ofdm_equalizer_0.set_alpha(alpha)
        self.swifi_ofdm_equalizer_0.set_beta(beta)
        self.swifi_ofdm_equalizer_0.enable_foc(False)
        self.swifi_ofdm_chan_est_0 = swifi.ofdm_chan_est(
            64,
            ((0, 0j, 0, 0j, 0, 0j, -1, 1j, -1, 1j, -1, 1j, -1, -1j, 1, 1j, 1,
              -1j, -1, 1j, 1, 1j, 1, 1j, 1, 1j, -1,
              (-0 - 1j), 1, -1j, -1, 1j, 0, -1j, 1,
              (-0 - 1j), 1, -1j, 1, 1j, -1, -1j, 1, (-0 - 1j), -1, 1j, 1, 1j,
              1, 1j, 1, 1j, -1, -1j, 1, 1j, 1, -1j, -1, 0j, 0, 0j, 0, 0j),
             (0, 0, 0, 0, 0, 0, 1, 1, -1, -1, 1, 1, -1, 1, -1, 1, 1, 1, 1, 1,
              1, -1, -1, 1, 1, -1, 1, -1, 1, 1, 1, 1, 0, 1, -1, -1, 1, 1, -1,
              1, -1, 1, -1, -1, -1, -1, -1, 1, 1, -1, -1, 1, -1, 1, -1, 1, 1,
              1, 1, 0, 0, 0, 0, 0)), 0.5, "channel_states", "frame_len", 3,
            False)
        self.swifi_ofdm_chan_est_0.set_estimation_method(0)
        self.swifi_interleaver_0_0 = swifi.interleaver(False, 11)
        self.swifi_interleaver_0 = swifi.interleaver(False, "phy")
        self.swifi_header_payload_demux_0 = swifi.header_payload_demux(
            3, 64, 16, "frame_len", "trigger", True, gr.sizeof_gr_complex,
            "phy")
        self.swifi_constellation_decoder_0 = swifi.constellation_decoder("phy")
        self.swifi_bit_unpacker_0 = swifi.bit_unpacker("phy", 1)
        self.swifi_bit_inserter_0 = swifi.bit_inserter("phy")
        self.limesdr_source_0 = limesdr.source("", 0, "")
        self.limesdr_source_0.set_sample_rate(10e6)
        self.limesdr_source_0.set_center_freq(2.472e9, 0)
        self.limesdr_source_0.set_bandwidth(20e6, 0)
        self.limesdr_source_0.set_gain(50, 0)
        self.limesdr_source_0.set_antenna(1, 0)
        self.limesdr_source_0.calibrate(5e6, 0)

        self.fft_vxx_0_0 = fft.fft_vcc(64, True, (window.rectangular(64)),
                                       True, 1)
        self.fft_vxx_0 = fft.fft_vcc(64, True, (window.rectangular(64)), True,
                                     1)
        self.digital_packet_headerparser_b_0_0 = digital.packet_headerparser_b(
            header_formatter_2.base())
        self.digital_constellation_decoder_cb_0 = digital.constellation_decoder_cb(
            header_mod.base())
        self.blocks_vector_to_stream_1_0_0_0 = blocks.vector_to_stream(
            gr.sizeof_gr_complex * 1, 48)
        self.blocks_vector_to_stream_1_0 = blocks.vector_to_stream(
            gr.sizeof_gr_complex * 1, 48)
        self.blocks_unpacked_to_packed_xx_0_0 = blocks.unpacked_to_packed_bb(
            1, gr.GR_LSB_FIRST)
        self.blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb(
            1, gr.GR_LSB_FIRST)

        ##################################################
        # Connections
        ##################################################
        self.msg_connect(
            (self.digital_packet_headerparser_b_0_0, 'header_data'),
            (self.swifi_header_payload_demux_0, 'header_data'))
        self.connect((self.blocks_unpacked_to_packed_xx_0, 0),
                     (self.swifi_payload_parser_0, 0))
        self.connect((self.blocks_unpacked_to_packed_xx_0_0, 0),
                     (self.digital_packet_headerparser_b_0_0, 0))
        self.connect((self.blocks_vector_to_stream_1_0, 0),
                     (self.swifi_sample_marker_0, 0))
        self.connect((self.blocks_vector_to_stream_1_0_0_0, 0),
                     (self.digital_constellation_decoder_cb_0, 0))
        self.connect((self.blocks_vector_to_stream_1_0_0_0, 0),
                     (self.wirlab_CSI_to_File_0, 0))
        self.connect((self.digital_constellation_decoder_cb_0, 0),
                     (self.swifi_interleaver_0_0, 0))
        self.connect((self.fft_vxx_0, 0), (self.swifi_ofdm_chan_est_0, 0))
        self.connect((self.fft_vxx_0_0, 0), (self.swifi_ofdm_equalizer_0, 0))
        self.connect((self.limesdr_source_0, 0),
                     (self.swifi_ofdm_frame_sync_0, 0))
        self.connect((self.swifi_bit_inserter_0, 0),
                     (self.swifi_wifi_conv_decoder_0, 0))
        self.connect((self.swifi_bit_unpacker_0, 0),
                     (self.swifi_interleaver_0, 0))
        self.connect((self.swifi_constellation_decoder_0, 0),
                     (self.swifi_bit_unpacker_0, 0))
        self.connect((self.swifi_header_payload_demux_0, 0),
                     (self.fft_vxx_0, 0))
        self.connect((self.swifi_header_payload_demux_0, 1),
                     (self.fft_vxx_0_0, 0))
        self.connect((self.swifi_interleaver_0, 0),
                     (self.swifi_bit_inserter_0, 0))
        self.connect((self.swifi_interleaver_0_0, 0),
                     (self.swifi_wifi_conv_decoder_0_0, 0))
        self.connect((self.swifi_ofdm_chan_est_0, 0),
                     (self.swifi_ofdm_equalizer_1, 0))
        self.connect((self.swifi_ofdm_equalizer_0, 0),
                     (self.blocks_vector_to_stream_1_0, 0))
        self.connect((self.swifi_ofdm_equalizer_1, 0),
                     (self.blocks_vector_to_stream_1_0_0_0, 0))
        self.connect((self.swifi_ofdm_frame_sync_0, 0),
                     (self.swifi_header_payload_demux_0, 0))
        self.connect((self.swifi_sample_marker_0, 0),
                     (self.swifi_constellation_decoder_0, 0))
        self.connect((self.swifi_scrambler_0, 0),
                     (self.blocks_unpacked_to_packed_xx_0, 0))
        self.connect((self.swifi_wifi_conv_decoder_0, 0),
                     (self.swifi_scrambler_0, 0))
        self.connect((self.swifi_wifi_conv_decoder_0_0, 0),
                     (self.blocks_unpacked_to_packed_xx_0_0, 0))
Пример #15
0
    def __init__(self):
        gr.top_block.__init__(self, "ACF")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("ACF")
        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", "Lime_Auto")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 50e3
        self.fft_0 = fft_0 = 32 * 32768 / 32

        ##################################################
        # Blocks
        ##################################################
        self.qtgui_time_sink_x_0 = qtgui.time_sink_f(
            fft_0,  #size
            samp_rate,  #samp_rate
            "",  #name
            1  #number of inputs
        )
        self.qtgui_time_sink_x_0.set_update_time(1)
        self.qtgui_time_sink_x_0.set_y_axis(-1, 1)

        self.qtgui_time_sink_x_0.set_y_label('Amplitude', "")

        self.qtgui_time_sink_x_0.enable_tags(-1, True)
        self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE,
                                                  qtgui.TRIG_SLOPE_POS, 0.0, 0,
                                                  0, "")
        self.qtgui_time_sink_x_0.enable_autoscale(True)
        self.qtgui_time_sink_x_0.enable_grid(True)
        self.qtgui_time_sink_x_0.enable_axis_labels(True)
        self.qtgui_time_sink_x_0.enable_control_panel(False)
        self.qtgui_time_sink_x_0.enable_stem_plot(False)

        if not True:
            self.qtgui_time_sink_x_0.disable_legend()

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "blue"
        ]
        styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

        for i in xrange(1):
            if len(labels[i]) == 0:
                self.qtgui_time_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_time_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_time_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_time_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_time_sink_x_0.set_line_style(i, styles[i])
            self.qtgui_time_sink_x_0.set_line_marker(i, markers[i])
            self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_time_sink_x_0_win = sip.wrapinstance(
            self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_win)
        self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c(
            1024,  #size
            firdes.WIN_BLACKMAN_hARRIS,  #wintype
            0,  #fc
            samp_rate,  #bw
            "",  #name
            1  #number of inputs
        )
        self.qtgui_freq_sink_x_0.set_update_time(0.01)
        self.qtgui_freq_sink_x_0.set_y_axis(-140, 10)
        self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dB')
        self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0,
                                                  "")
        self.qtgui_freq_sink_x_0.enable_autoscale(False)
        self.qtgui_freq_sink_x_0.enable_grid(False)
        self.qtgui_freq_sink_x_0.set_fft_average(1.0)
        self.qtgui_freq_sink_x_0.enable_axis_labels(True)
        self.qtgui_freq_sink_x_0.enable_control_panel(False)

        if not True:
            self.qtgui_freq_sink_x_0.disable_legend()

        if "complex" == "float" or "complex" == "msg_float":
            self.qtgui_freq_sink_x_0.set_plot_pos_half(not True)

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "dark blue"
        ]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
        for i in xrange(1):
            if len(labels[i]) == 0:
                self.qtgui_freq_sink_x_0.set_line_label(
                    i, "Data {0}".format(i))
            else:
                self.qtgui_freq_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_freq_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_freq_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_freq_sink_x_0_win = sip.wrapinstance(
            self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_freq_sink_x_0_win)
        self.limesdr_source_0 = limesdr.source('', 0, '')
        self.limesdr_source_0.set_sample_rate(samp_rate)
        self.limesdr_source_0.set_center_freq(393.525e6, 0)
        self.limesdr_source_0.set_bandwidth(5e6, 0)
        self.limesdr_source_0.set_gain(49, 0)
        self.limesdr_source_0.set_antenna(3, 0)
        self.limesdr_source_0.calibrate(5e6, 0)

        self.fft_vxx_0_1 = fft.fft_vfc(fft_0, False, (), 1)
        self.fft_vxx_0 = fft.fft_vcc(fft_0, True, (), True, 1)
        self.blocks_vector_to_stream_0 = blocks.vector_to_stream(
            gr.sizeof_float * 1, fft_0)
        self.blocks_stream_to_vector_0 = blocks.stream_to_vector(
            gr.sizeof_gr_complex * 1, fft_0)
        self.blocks_nlog10_ff_0 = blocks.nlog10_ff(20, 1, 0)
        self.blocks_delay_0_0_0 = blocks.delay(gr.sizeof_gr_complex * 1, 0)
        self.blocks_complex_to_mag_1 = blocks.complex_to_mag(fft_0)
        self.blocks_complex_to_mag_0 = blocks.complex_to_mag(fft_0)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.blocks_complex_to_mag_0, 0),
                     (self.blocks_vector_to_stream_0, 0))
        self.connect((self.blocks_complex_to_mag_1, 0), (self.fft_vxx_0_1, 0))
        self.connect((self.blocks_delay_0_0_0, 0),
                     (self.blocks_stream_to_vector_0, 0))
        self.connect((self.blocks_nlog10_ff_0, 0),
                     (self.qtgui_time_sink_x_0, 0))
        self.connect((self.blocks_stream_to_vector_0, 0), (self.fft_vxx_0, 0))
        self.connect((self.blocks_vector_to_stream_0, 0),
                     (self.blocks_nlog10_ff_0, 0))
        self.connect((self.fft_vxx_0, 0), (self.blocks_complex_to_mag_1, 0))
        self.connect((self.fft_vxx_0_1, 0), (self.blocks_complex_to_mag_0, 0))
        self.connect((self.limesdr_source_0, 0), (self.blocks_delay_0_0_0, 0))
        self.connect((self.limesdr_source_0, 0), (self.qtgui_freq_sink_x_0, 0))
Пример #16
0
    def __init__(self):
        grc_wxgui.top_block_gui.__init__(
            self, title="Stereo FM receiver and RDS Decoder")
        _icon_path = "D:\Program Files\GNURadio-3.7\share\icons\hicolor\scalable/apps\gnuradio-grc.png"
        self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))

        ##################################################
        # Variables
        ##################################################
        self.freq_offset = freq_offset = 250000
        self.freq = freq = 105.3e6
        self.volume = volume = -3
        self.samp_rate = samp_rate = 2000000
        self.gain = gain = 20
        self.freq_tune = freq_tune = freq - freq_offset

        ##################################################
        # Blocks
        ##################################################
        _volume_sizer = wx.BoxSizer(wx.VERTICAL)
        self._volume_text_box = forms.text_box(
            parent=self.GetWin(),
            sizer=_volume_sizer,
            value=self.volume,
            callback=self.set_volume,
            label='Volume',
            converter=forms.float_converter(),
            proportion=0,
        )
        self._volume_slider = forms.slider(
            parent=self.GetWin(),
            sizer=_volume_sizer,
            value=self.volume,
            callback=self.set_volume,
            minimum=-20,
            maximum=10,
            num_steps=300,
            style=wx.SL_HORIZONTAL,
            cast=float,
            proportion=1,
        )
        self.GridAdd(_volume_sizer, 0, 1, 1, 1)
        self.nb = self.nb = wx.Notebook(self.GetWin(), style=wx.NB_TOP)
        self.nb.AddPage(grc_wxgui.Panel(self.nb), "BB")
        self.nb.AddPage(grc_wxgui.Panel(self.nb), "Demod")
        self.nb.AddPage(grc_wxgui.Panel(self.nb), "Waterfall")
        self.nb.AddPage(grc_wxgui.Panel(self.nb), "L+R")
        self.nb.AddPage(grc_wxgui.Panel(self.nb), "L-R")
        self.nb.AddPage(grc_wxgui.Panel(self.nb), "RDS")
        self.nb.AddPage(grc_wxgui.Panel(self.nb), "Const")
        self.GridAdd(self.nb, 2, 0, 1, 2)
        _gain_sizer = wx.BoxSizer(wx.VERTICAL)
        self._gain_text_box = forms.text_box(
            parent=self.GetWin(),
            sizer=_gain_sizer,
            value=self.gain,
            callback=self.set_gain,
            label='RF Gain',
            converter=forms.float_converter(),
            proportion=0,
        )
        self._gain_slider = forms.slider(
            parent=self.GetWin(),
            sizer=_gain_sizer,
            value=self.gain,
            callback=self.set_gain,
            minimum=0,
            maximum=49.6,
            num_steps=124,
            style=wx.SL_HORIZONTAL,
            cast=float,
            proportion=1,
        )
        self.GridAdd(_gain_sizer, 0, 0, 1, 1)
        _freq_sizer = wx.BoxSizer(wx.VERTICAL)
        self._freq_text_box = forms.text_box(
            parent=self.GetWin(),
            sizer=_freq_sizer,
            value=self.freq,
            callback=self.set_freq,
            label='Freq',
            converter=forms.float_converter(),
            proportion=0,
        )
        self._freq_slider = forms.slider(
            parent=self.GetWin(),
            sizer=_freq_sizer,
            value=self.freq,
            callback=self.set_freq,
            minimum=88e6,
            maximum=108e6,
            num_steps=200,
            style=wx.SL_HORIZONTAL,
            cast=float,
            proportion=1,
        )
        self.GridAdd(_freq_sizer, 1, 0, 1, 2)
        self.wxgui_waterfallsink2_0 = waterfallsink2.waterfall_sink_f(
            self.nb.GetPage(2).GetWin(),
            baseband_freq=0,
            dynamic_range=100,
            ref_level=0,
            ref_scale=2.0,
            sample_rate=250000,
            fft_size=512,
            fft_rate=15,
            average=False,
            avg_alpha=None,
            title='Waterfall Plot',
        )
        self.nb.GetPage(2).Add(self.wxgui_waterfallsink2_0.win)
        self.wxgui_scopesink2_1 = scopesink2.scope_sink_c(
            self.nb.GetPage(6).GetWin(),
            title='Scope Plot',
            sample_rate=2375 * 4,
            v_scale=0.4,
            v_offset=0,
            t_scale=0,
            ac_couple=False,
            xy_mode=True,
            num_inputs=1,
            trig_mode=wxgui.TRIG_MODE_AUTO,
            y_axis_label='Counts',
        )
        self.nb.GetPage(6).Add(self.wxgui_scopesink2_1.win)
        self.wxgui_fftsink2_0_0_0_1_0_1 = fftsink2.fft_sink_c(
            self.nb.GetPage(5).GetWin(),
            baseband_freq=0,
            y_per_div=10,
            y_divs=10,
            ref_level=0,
            ref_scale=2.0,
            sample_rate=19000,
            fft_size=1024,
            fft_rate=15,
            average=False,
            avg_alpha=None,
            title='RDS',
            peak_hold=False,
        )
        self.nb.GetPage(5).Add(self.wxgui_fftsink2_0_0_0_1_0_1.win)
        self.wxgui_fftsink2_0_0_0_1 = fftsink2.fft_sink_f(
            self.nb.GetPage(4).GetWin(),
            baseband_freq=0,
            y_per_div=10,
            y_divs=10,
            ref_level=0,
            ref_scale=2.0,
            sample_rate=48000,
            fft_size=1024,
            fft_rate=15,
            average=False,
            avg_alpha=None,
            title='L-R',
            peak_hold=False,
        )
        self.nb.GetPage(4).Add(self.wxgui_fftsink2_0_0_0_1.win)
        self.wxgui_fftsink2_0_0_0 = fftsink2.fft_sink_f(
            self.nb.GetPage(3).GetWin(),
            baseband_freq=0,
            y_per_div=10,
            y_divs=10,
            ref_level=0,
            ref_scale=2.0,
            sample_rate=48000,
            fft_size=1024,
            fft_rate=15,
            average=False,
            avg_alpha=None,
            title='L+R',
            peak_hold=False,
        )
        self.nb.GetPage(3).Add(self.wxgui_fftsink2_0_0_0.win)
        self.wxgui_fftsink2_0_0 = fftsink2.fft_sink_f(
            self.nb.GetPage(1).GetWin(),
            baseband_freq=0,
            y_per_div=10,
            y_divs=10,
            ref_level=0,
            ref_scale=2.0,
            sample_rate=250000,
            fft_size=1024,
            fft_rate=15,
            average=True,
            avg_alpha=0.8,
            title='FM Demod',
            peak_hold=False,
        )
        self.nb.GetPage(1).Add(self.wxgui_fftsink2_0_0.win)
        self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
            self.nb.GetPage(0).GetWin(),
            baseband_freq=0,
            y_per_div=10,
            y_divs=10,
            ref_level=-30,
            ref_scale=2.0,
            sample_rate=samp_rate,
            fft_size=1024,
            fft_rate=15,
            average=True,
            avg_alpha=0.8,
            title='Baseband',
            peak_hold=False,
        )
        self.nb.GetPage(0).Add(self.wxgui_fftsink2_0.win)
        self.root_raised_cosine_filter_0 = filter.fir_filter_ccf(
            2, firdes.root_raised_cosine(1, 19000, 2375, .35, 100))
        self.pfb_arb_resampler_xxx_1 = pfb.arb_resampler_fff(240000.0 / 250000,
                                                             taps=None,
                                                             flt_size=32)
        self.pfb_arb_resampler_xxx_1.declare_sample_delay(0)

        self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf(19000 / 250e3,
                                                             taps=None,
                                                             flt_size=32)
        self.pfb_arb_resampler_xxx_0.declare_sample_delay(0)

        self.limesdr_source_0 = limesdr.source('', 0, '')
        self.limesdr_source_0.set_sample_rate(samp_rate)
        self.limesdr_source_0.set_center_freq(freq_tune, 0)
        self.limesdr_source_0.set_bandwidth(1.5e6, 0)
        self.limesdr_source_0.set_gain(gain, 0)
        self.limesdr_source_0.set_antenna(255, 0)

        self.gr_rds_parser_0 = rds.parser(True, False, 0)
        self.gr_rds_panel_0 = rds.rdsPanel(freq, self.GetWin())
        self.Add(self.gr_rds_panel_0.panel)
        self.gr_rds_decoder_0 = rds.decoder(False, False)
        self.freq_xlating_fir_filter_xxx_2 = filter.freq_xlating_fir_filter_fcf(
            5, (firdes.low_pass(1.0, 240000, 13e3, 3e3, firdes.WIN_HAMMING)),
            38000, 240000)
        self.freq_xlating_fir_filter_xxx_1_0 = filter.freq_xlating_fir_filter_fcc(
            1,
            (firdes.low_pass(2500.0, 250000, 2.6e3, 2e3, firdes.WIN_HAMMING)),
            57e3, 250000)
        self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(
            1, (firdes.low_pass(1, samp_rate, 80000, 20000)), freq_offset,
            samp_rate)
        self.fir_filter_xxx_1 = filter.fir_filter_fff(
            5, (firdes.low_pass(1.0, 240000, 13e3, 3e3, firdes.WIN_HAMMING)))
        self.fir_filter_xxx_1.declare_sample_delay(0)
        self.digital_psk_demod_0 = digital.psk.psk_demod(
            constellation_points=2,
            differential=False,
            samples_per_symbol=4,
            excess_bw=0.35,
            phase_bw=6.28 / 100.0,
            timing_bw=6.28 / 100.0,
            mod_code="gray",
            verbose=False,
            log=False,
        )
        self.digital_diff_decoder_bb_0 = digital.diff_decoder_bb(2)
        self.blocks_sub_xx_0 = blocks.sub_ff(1)
        self.blocks_multiply_const_vxx_0_0 = blocks.multiply_const_vff(
            (10**(1. * (volume) / 10), ))
        self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff(
            (10**(1. * (volume) / 10), ))
        self.blocks_keep_one_in_n_0 = blocks.keep_one_in_n(
            gr.sizeof_char * 1, 2)
        self.blocks_complex_to_real_0 = blocks.complex_to_real(1)
        self.blocks_add_xx_0 = blocks.add_vff(1)
        self.audio_sink_0 = audio.sink(48000, '', True)
        self.analog_wfm_rcv_0 = analog.wfm_rcv(
            quad_rate=samp_rate,
            audio_decimation=8,
        )
        self.analog_fm_deemph_0_0_0 = analog.fm_deemph(fs=48000, tau=75e-6)
        self.analog_fm_deemph_0_0 = analog.fm_deemph(fs=48000, tau=75e-6)

        ##################################################
        # Connections
        ##################################################
        self.msg_connect((self.gr_rds_decoder_0, 'out'),
                         (self.gr_rds_parser_0, 'in'))
        self.msg_connect((self.gr_rds_parser_0, 'out'),
                         (self.gr_rds_panel_0, 'in'))
        self.connect((self.analog_fm_deemph_0_0, 0),
                     (self.blocks_multiply_const_vxx_0_0, 0))
        self.connect((self.analog_fm_deemph_0_0_0, 0),
                     (self.blocks_multiply_const_vxx_0, 0))
        self.connect((self.analog_wfm_rcv_0, 0),
                     (self.freq_xlating_fir_filter_xxx_1_0, 0))
        self.connect((self.analog_wfm_rcv_0, 0),
                     (self.pfb_arb_resampler_xxx_1, 0))
        self.connect((self.analog_wfm_rcv_0, 0), (self.wxgui_fftsink2_0_0, 0))
        self.connect((self.analog_wfm_rcv_0, 0),
                     (self.wxgui_waterfallsink2_0, 0))
        self.connect((self.blocks_add_xx_0, 0),
                     (self.analog_fm_deemph_0_0_0, 0))
        self.connect((self.blocks_complex_to_real_0, 0),
                     (self.blocks_add_xx_0, 1))
        self.connect((self.blocks_complex_to_real_0, 0),
                     (self.blocks_sub_xx_0, 1))
        self.connect((self.blocks_complex_to_real_0, 0),
                     (self.wxgui_fftsink2_0_0_0_1, 0))
        self.connect((self.blocks_keep_one_in_n_0, 0),
                     (self.digital_diff_decoder_bb_0, 0))
        self.connect((self.blocks_multiply_const_vxx_0, 0),
                     (self.audio_sink_0, 0))
        self.connect((self.blocks_multiply_const_vxx_0_0, 0),
                     (self.audio_sink_0, 1))
        self.connect((self.blocks_sub_xx_0, 0), (self.analog_fm_deemph_0_0, 0))
        self.connect((self.digital_diff_decoder_bb_0, 0),
                     (self.gr_rds_decoder_0, 0))
        self.connect((self.digital_psk_demod_0, 0),
                     (self.blocks_keep_one_in_n_0, 0))
        self.connect((self.fir_filter_xxx_1, 0), (self.blocks_add_xx_0, 0))
        self.connect((self.fir_filter_xxx_1, 0), (self.blocks_sub_xx_0, 0))
        self.connect((self.fir_filter_xxx_1, 0),
                     (self.wxgui_fftsink2_0_0_0, 0))
        self.connect((self.freq_xlating_fir_filter_xxx_0, 0),
                     (self.analog_wfm_rcv_0, 0))
        self.connect((self.freq_xlating_fir_filter_xxx_0, 0),
                     (self.wxgui_fftsink2_0, 0))
        self.connect((self.freq_xlating_fir_filter_xxx_1_0, 0),
                     (self.pfb_arb_resampler_xxx_0, 0))
        self.connect((self.freq_xlating_fir_filter_xxx_2, 0),
                     (self.blocks_complex_to_real_0, 0))
        self.connect((self.limesdr_source_0, 0),
                     (self.freq_xlating_fir_filter_xxx_0, 0))
        self.connect((self.pfb_arb_resampler_xxx_0, 0),
                     (self.root_raised_cosine_filter_0, 0))
        self.connect((self.pfb_arb_resampler_xxx_0, 0),
                     (self.wxgui_fftsink2_0_0_0_1_0_1, 0))
        self.connect((self.pfb_arb_resampler_xxx_1, 0),
                     (self.fir_filter_xxx_1, 0))
        self.connect((self.pfb_arb_resampler_xxx_1, 0),
                     (self.freq_xlating_fir_filter_xxx_2, 0))
        self.connect((self.root_raised_cosine_filter_0, 0),
                     (self.digital_psk_demod_0, 0))
        self.connect((self.root_raised_cosine_filter_0, 0),
                     (self.wxgui_scopesink2_1, 0))
Пример #17
0
    def __init__(self):
        grc_wxgui.top_block_gui.__init__(self, title="Top Block")
        _icon_path = "D:\Program Files\GNURadio-3.7\share\icons\hicolor\scalable/apps\gnuradio-grc.png"
        self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))

        ##################################################
        # Variables
        ##################################################
        self.volume = volume = 0
        self.samp_rate = samp_rate = 2e6
        self.rf_gain = rf_gain = 15
        self.rf_freq = rf_freq = 100e6
        self.down_rate = down_rate = 250000

        ##################################################
        # Blocks
        ##################################################
        _volume_sizer = wx.BoxSizer(wx.VERTICAL)
        self._volume_text_box = forms.text_box(
        	parent=self.GetWin(),
        	sizer=_volume_sizer,
        	value=self.volume,
        	callback=self.set_volume,
        	label='volume',
        	converter=forms.float_converter(),
        	proportion=0,
        )
        self._volume_slider = forms.slider(
        	parent=self.GetWin(),
        	sizer=_volume_sizer,
        	value=self.volume,
        	callback=self.set_volume,
        	minimum=0,
        	maximum=100,
        	num_steps=100,
        	style=wx.SL_HORIZONTAL,
        	cast=float,
        	proportion=1,
        )
        self.GridAdd(_volume_sizer, 1, 5, 1, 8)
        _rf_gain_sizer = wx.BoxSizer(wx.VERTICAL)
        self._rf_gain_text_box = forms.text_box(
        	parent=self.GetWin(),
        	sizer=_rf_gain_sizer,
        	value=self.rf_gain,
        	callback=self.set_rf_gain,
        	label='rf_gain',
        	converter=forms.float_converter(),
        	proportion=0,
        )
        self._rf_gain_slider = forms.slider(
        	parent=self.GetWin(),
        	sizer=_rf_gain_sizer,
        	value=self.rf_gain,
        	callback=self.set_rf_gain,
        	minimum=10,
        	maximum=70,
        	num_steps=12,
        	style=wx.SL_HORIZONTAL,
        	cast=float,
        	proportion=1,
        )
        self.GridAdd(_rf_gain_sizer, 1, 0, 1, 2)
        _rf_freq_sizer = wx.BoxSizer(wx.VERTICAL)
        self._rf_freq_text_box = forms.text_box(
        	parent=self.GetWin(),
        	sizer=_rf_freq_sizer,
        	value=self.rf_freq,
        	callback=self.set_rf_freq,
        	label='rf_freq',
        	converter=forms.float_converter(),
        	proportion=0,
        )
        self._rf_freq_slider = forms.slider(
        	parent=self.GetWin(),
        	sizer=_rf_freq_sizer,
        	value=self.rf_freq,
        	callback=self.set_rf_freq,
        	minimum=80e6,
        	maximum=110e6,
        	num_steps=300,
        	style=wx.SL_HORIZONTAL,
        	cast=float,
        	proportion=1,
        )
        self.GridAdd(_rf_freq_sizer, 1, 2, 1, 2)
        self.wxgui_fftsink2_1 = fftsink2.fft_sink_f(
        	self.GetWin(),
        	baseband_freq=0,
        	y_per_div=10,
        	y_divs=10,
        	ref_level=0,
        	ref_scale=2.0,
        	sample_rate=down_rate,
        	fft_size=1024,
        	fft_rate=15,
        	average=False,
        	avg_alpha=None,
        	title='Demod out',
        	peak_hold=False,
        )
        self.Add(self.wxgui_fftsink2_1.win)
        self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
        	self.GetWin(),
        	baseband_freq=rf_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',
        	peak_hold=False,
        )
        self.Add(self.wxgui_fftsink2_0.win)
        self.rational_resampler_xxx_0 = filter.rational_resampler_fff(
                interpolation=24,
                decimation=250,
                taps=None,
                fractional_bw=None,
        )
        self.low_pass_filter_0 = filter.fir_filter_ccf(int(samp_rate / down_rate), firdes.low_pass(
        	2, samp_rate, 100e3, 10e3, firdes.WIN_KAISER, 6.76))
        self.limesdr_source_0 = limesdr.source('', 0, '')
        self.limesdr_source_0.set_sample_rate(samp_rate)
        self.limesdr_source_0.set_center_freq(rf_freq, 0)
        self.limesdr_source_0.set_bandwidth(1.5e6,0)
        self.limesdr_source_0.set_gain(rf_gain,0)
        self.limesdr_source_0.set_antenna(255,0)

        self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((volume / 100, ))
        self.audio_sink_0 = audio.sink(24000, '', True)
        self.analog_wfm_rcv_0 = analog.wfm_rcv(
        	quad_rate=down_rate,
        	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.blocks_multiply_const_vxx_0, 0), (self.audio_sink_0, 0))
        self.connect((self.limesdr_source_0, 0), (self.low_pass_filter_0, 0))
        self.connect((self.limesdr_source_0, 0), (self.wxgui_fftsink2_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.blocks_multiply_const_vxx_0, 0))
Пример #18
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 = 2e6

        ##################################################
        # Blocks
        ##################################################
        self.wxgui_constellationsink2_0 = constsink_gl.const_sink_c(
            self.GetWin(),
            title='Constellation Plot',
            sample_rate=samp_rate,
            frame_rate=5,
            const_size=2048,
            M=4,
            theta=0,
            loop_bw=6.28 / 100.0,
            fmax=0.06,
            mu=0.5,
            gain_mu=0.005,
            symbol_rate=samp_rate / 4.,
            omega_limit=0.005,
        )
        self.Add(self.wxgui_constellationsink2_0.win)
        self.limesdr_source_0 = limesdr.source('0009081C05C10C24', 0, '')
        self.limesdr_source_0.set_sample_rate(samp_rate)
        self.limesdr_source_0.set_center_freq(500e6, 0)
        self.limesdr_source_0.set_bandwidth(5e6, 0)
        self.limesdr_source_0.set_gain(30, 0)
        self.limesdr_source_0.set_antenna(2, 0)
        self.limesdr_source_0.calibrate(5e6, 0)

        self.limesdr_sink_0 = limesdr.sink('0009081C05C10C24', 0, '', '')
        self.limesdr_sink_0.set_sample_rate(samp_rate)
        self.limesdr_sink_0.set_center_freq(520e6, 0)
        self.limesdr_sink_0.set_bandwidth(5e6, 0)
        self.limesdr_sink_0.set_gain(30, 0)
        self.limesdr_sink_0.set_antenna(1, 0)
        self.limesdr_sink_0.calibrate(5e6, 0)

        self.digital_gmsk_mod_0 = digital.gmsk_mod(
            samples_per_symbol=2,
            bt=0.35,
            verbose=False,
            log=False,
        )
        self.digital_gmsk_demod_0 = digital.gmsk_demod(
            samples_per_symbol=2,
            gain_mu=0.175,
            mu=0.5,
            omega_relative_limit=0.005,
            freq_error=0.0,
            verbose=False,
            log=False,
        )
        self.blocks_udp_source_0 = blocks.udp_source(gr.sizeof_char * 1,
                                                     '192.168.8.100', 10000,
                                                     1472, True)
        self.blocks_udp_sink_1 = blocks.udp_sink(gr.sizeof_char * 1,
                                                 '192.168.8.100', 10000, 1472,
                                                 True)
        self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((1, ))
        self.blks2_packet_encoder_0 = grc_blks2.packet_mod_b(
            grc_blks2.packet_encoder(
                samples_per_symbol=2,
                bits_per_symbol=2,
                preamble='',
                access_code='',
                pad_for_usrp=False,
            ),
            payload_length=30,
        )
        self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(
            grc_blks2.packet_decoder(
                access_code='',
                threshold=-1,
                callback=lambda ok, payload: self.blks2_packet_decoder_0.
                recv_pkt(ok, payload),
            ), )

        ##################################################
        # Connections
        ##################################################
        self.connect((self.blks2_packet_decoder_0, 0),
                     (self.blocks_udp_sink_1, 0))
        self.connect((self.blks2_packet_encoder_0, 0),
                     (self.digital_gmsk_mod_0, 0))
        self.connect((self.blocks_multiply_const_vxx_0, 0),
                     (self.limesdr_sink_0, 0))
        self.connect((self.blocks_multiply_const_vxx_0, 0),
                     (self.wxgui_constellationsink2_0, 0))
        self.connect((self.blocks_udp_source_0, 0),
                     (self.blks2_packet_encoder_0, 0))
        self.connect((self.digital_gmsk_demod_0, 0),
                     (self.blks2_packet_decoder_0, 0))
        self.connect((self.digital_gmsk_mod_0, 0),
                     (self.blocks_multiply_const_vxx_0, 0))
        self.connect((self.limesdr_source_0, 0),
                     (self.digital_gmsk_demod_0, 0))
Пример #19
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")
        self.restoreGeometry(
            self.settings.value("geometry", type=QtCore.QByteArray))

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 2e6
        self.phase = phase = 1
        self.RF_Freq = RF_Freq = 20e6

        ##################################################
        # Look-up Tables for Phase Shift
        ##################################################
        phi = numpy.arange(0, 361, 1)
        pi = math.pi
        cos_lut = []
        sin_lut = []
        cos_lut = numpy.cos(pi * phi / 180)
        sin_lut = numpy.sin(pi * phi / 180)

        ##################################################
        # Blocks
        ##################################################
        self._phase_range = Range(0, 361, 1, 1, 200)
        self._phase_win = RangeWidget(self._phase_range, self.set_phase,
                                      "phase", "counter_slider", int)
        self.top_grid_layout.addWidget(self._phase_win)
        self.limesdr_source_0 = limesdr.source('0009070602470A0E', 0, '')
        self.limesdr_source_0.set_sample_rate(samp_rate)
        self.limesdr_source_0.set_center_freq(RF_Freq, 0)
        self.limesdr_source_0.set_bandwidth(21e6, 0)
        self.limesdr_source_0.set_digital_filter(5e3, 0)
        self.limesdr_source_0.set_gain(0, 0)
        self.limesdr_source_0.set_antenna(2, 0)
        self.limesdr_source_0.calibrate(5e6, 0)

        (self.limesdr_source_0).set_min_output_buffer(4096)
        (self.limesdr_source_0).set_max_output_buffer(4096)
        self.limesdr_sink_0 = limesdr.sink('0009070602470A0E', 0, '', '')
        self.limesdr_sink_0.set_sample_rate(samp_rate)
        self.limesdr_sink_0.set_center_freq(30e6, 0)
        self.limesdr_sink_0.set_bandwidth(31e6, 0)
        self.limesdr_sink_0.set_digital_filter(5e3, 0)
        self.limesdr_sink_0.set_gain(60, 0)
        self.limesdr_sink_0.set_antenna(1, 0)
        self.limesdr_sink_0.calibrate(5e6, 0)

        self.blocks_multiply_const_vxx_0_0 = blocks.multiply_const_vff(
            (sin_lut[phase], ))
        self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff(
            (-cos_lut[phase], ))
        self.blocks_float_to_complex_0 = blocks.float_to_complex(1)
        self.blocks_complex_to_float_0_0 = blocks.complex_to_float(1)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.blocks_complex_to_float_0_0, 0),
                     (self.blocks_multiply_const_vxx_0, 0))
        self.connect((self.blocks_complex_to_float_0_0, 1),
                     (self.blocks_multiply_const_vxx_0_0, 0))
        self.connect((self.blocks_float_to_complex_0, 0),
                     (self.limesdr_sink_0, 0))
        self.connect((self.blocks_multiply_const_vxx_0, 0),
                     (self.blocks_float_to_complex_0, 0))
        self.connect((self.blocks_multiply_const_vxx_0_0, 0),
                     (self.blocks_float_to_complex_0, 1))
        self.connect((self.limesdr_source_0, 0),
                     (self.blocks_complex_to_float_0_0, 0))
Пример #20
0
    def phy_init_source(self):
        self._phy_src = limesdr.source(self.lms_dev_serial,
                                       self.lms_dev_ch_mode, "")

        self._phy_src.set_sample_rate(self.sample_rate)
        self._phy_src.set_gain(self.rx_gain, 0)
Пример #21
0
    def __init__(self):
        parser = OptionParser()
        parser.add_option("--length",
                          type="int",
                          dest="length",
                          help="MAC payload length(1-112)",
                          default="10")
        parser.add_option("--rate",
                          type="float",
                          dest="rate",
                          help="Tx and Rx sample rate",
                          default=4e6)
        parser.add_option("--period",
                          type="int",
                          dest="period",
                          help="Message Source Period",
                          default=500)
        (options, args) = parser.parse_args()

        gr.top_block.__init__(self,
                              "IEEE 802.15.4 Transceiver using OQPSK PHY")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("IEEE 802.15.4 Transceiver using OQPSK PHY")
        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", "transceiver_OQPSK")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Variables
        ##################################################
        self.tx_gain = tx_gain = 0.75
        self.samp_rate = samp_rate = options.rate
        self.rx_gain = rx_gain = 0.75

        self.freq = freq = 2480000000

        ##################################################
        # Blocks
        ##################################################
        self._tx_gain_range = Range(0, 1, 0.01, 0.75, 200)
        self._tx_gain_win = RangeWidget(self._tx_gain_range, self.set_tx_gain,
                                        "tx_gain", "counter_slider", float)
        self.top_grid_layout.addWidget(self._tx_gain_win)
        self._rx_gain_range = Range(0, 1, 0.01, 0.75, 200)
        self._rx_gain_win = RangeWidget(self._rx_gain_range, self.set_rx_gain,
                                        "rx_gain", "counter_slider", float)
        self.top_grid_layout.addWidget(self._rx_gain_win)
        self.qtgui_time_sink_x_0 = qtgui.time_sink_c(
            1024,  #size
            4e6,  #samp_rate
            "",  #name
            1  #number of inputs
        )
        self.qtgui_time_sink_x_0.set_update_time(0.10)
        self.qtgui_time_sink_x_0.set_y_axis(-1, 1)

        self.qtgui_time_sink_x_0.set_y_label('Amplitude', "")

        self.qtgui_time_sink_x_0.enable_tags(-1, True)
        self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE,
                                                  qtgui.TRIG_SLOPE_POS, 0.0, 0,
                                                  0, "")
        self.qtgui_time_sink_x_0.enable_autoscale(False)
        self.qtgui_time_sink_x_0.enable_grid(False)
        self.qtgui_time_sink_x_0.enable_axis_labels(True)
        self.qtgui_time_sink_x_0.enable_control_panel(False)
        self.qtgui_time_sink_x_0.enable_stem_plot(False)

        if not True:
            self.qtgui_time_sink_x_0.disable_legend()

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "blue"
        ]
        styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

        for i in xrange(2):
            if len(labels[i]) == 0:
                if (i % 2 == 0):
                    self.qtgui_time_sink_x_0.set_line_label(
                        i, "Re{{Data {0}}}".format(i / 2))
                else:
                    self.qtgui_time_sink_x_0.set_line_label(
                        i, "Im{{Data {0}}}".format(i / 2))
            else:
                self.qtgui_time_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_time_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_time_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_time_sink_x_0.set_line_style(i, styles[i])
            self.qtgui_time_sink_x_0.set_line_marker(i, markers[i])
            self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_time_sink_x_0_win = sip.wrapinstance(
            self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget)
        self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_win)
        self.output_chain_0 = output_chain(samp_rate=samp_rate, )
        self.limesdr_source_0_0 = limesdr.source(
            0, 2, 1, 0, 0,
            '/home/saptarshi/Documents/MasterThesis@RISE/lime-gnuradio/src/limesuite/build/example',
            2.48e9, samp_rate, 0, 1, samp_rate, 0, 10e6, 1, 2, 1, 1,
            5e6 + samp_rate % 5e6 * int(samp_rate / 5e6), 0, 10e6, 0,
            samp_rate, 0, 0, 60, 60)
        self.limesdr_sink_1 = limesdr.sink(
            0, 2, 1, 0, 0, '', 2.48e9, samp_rate, 0, 1, samp_rate, 0, 10e6, 1,
            2, 1, 1, 5e6 + samp_rate % 5e6 * int(samp_rate / 5e6), 0, 10e6, 0,
            4e6, 0, 0, 60, 60)
        self.input_chain_0 = input_chain(omega=samp_rate / 2e6, )
        self.ieee802_15_4_rime_stack_0 = ieee802_15_4.rime_stack(
            ([129]), ([131]), ([132]), ([23, 42]))
        self.ieee802_15_4_mac_0 = ieee802_15_4.mac(False, 0x8841, 0, 0x1aaa,
                                                   0xffff, 0x3344)
        self._freq_options = [
            1000000 * (2400 + 5 * (i - 10)) for i in range(11, 27)
        ]
        self._freq_labels = [str(i) for i in range(11, 27)]
        self._freq_tool_bar = Qt.QToolBar(self)
        self._freq_tool_bar.addWidget(Qt.QLabel('Channel' + ": "))
        self._freq_combo_box = Qt.QComboBox()
        self._freq_tool_bar.addWidget(self._freq_combo_box)
        for label in self._freq_labels:
            self._freq_combo_box.addItem(label)
        self._freq_callback = lambda i: Qt.QMetaObject.invokeMethod(
            self._freq_combo_box, "setCurrentIndex",
            Qt.Q_ARG("int", self._freq_options.index(i)))
        self._freq_callback(self.freq)
        self._freq_combo_box.currentIndexChanged.connect(
            lambda i: self.set_freq(self._freq_options[i]))
        self.top_grid_layout.addWidget(self._freq_tool_bar)
        self.foo_rtt_0 = foo.rtt(options.period, options.length)
        self.blocks_file_sink_0_0 = blocks.file_sink(gr.sizeof_char * 1,
                                                     '/tmp/timings', False)
        self.blocks_file_sink_0_0.set_unbuffered(True)

        ##################################################
        # Connections
        ##################################################
        self.msg_connect((self.foo_rtt_0, 'out'),
                         (self.ieee802_15_4_rime_stack_0, 'bcin'))
        self.msg_connect((self.ieee802_15_4_mac_0, 'app out'),
                         (self.ieee802_15_4_rime_stack_0, 'fromMAC'))
        self.msg_connect((self.ieee802_15_4_mac_0, 'pdu out'),
                         (self.output_chain_0, 'txin'))
        self.msg_connect((self.ieee802_15_4_rime_stack_0, 'bcout'),
                         (self.foo_rtt_0, 'in'))
        self.msg_connect((self.ieee802_15_4_rime_stack_0, 'toMAC'),
                         (self.ieee802_15_4_mac_0, 'app in'))
        self.msg_connect((self.input_chain_0, 'rxout'),
                         (self.ieee802_15_4_mac_0, 'pdu in'))
        self.connect((self.foo_rtt_0, 0), (self.blocks_file_sink_0_0, 0))
        self.connect((self.limesdr_source_0_0, 0), (self.input_chain_0, 0))
        #self.connect((self.limesdr_source_0_0, 0), (self.qtgui_time_sink_x_0, 0))
        self.connect((self.output_chain_0, 0), (self.limesdr_sink_1, 0))
    def __init__(self):
        gr.top_block.__init__(self, "Top Block")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Top Block")
        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")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 15e6
        self.if_bandwidth_1 = if_bandwidth_1 = 2e6
        self.sdr_gain = sdr_gain = 60
        self.integration_bandwidth = integration_bandwidth = 5e3
        self.if_filter_decimation_rate = if_filter_decimation_rate = int(samp_rate/(1.1*if_bandwidth_1))
        self.sdr_power_offset = sdr_power_offset = 1.0
        self.sdr_gain_lin = sdr_gain_lin = 10**(sdr_gain/20)
        self.num_channels = num_channels = int((samp_rate/if_filter_decimation_rate)/integration_bandwidth)
        self.lna_gain_measured = lna_gain_measured = 33.33
        self.integration_time = integration_time = 10
        self.if_samp_rate = if_samp_rate = samp_rate/if_filter_decimation_rate
        self.cable_loss = cable_loss = 0.25
        self.variable_function_probe = variable_function_probe = 0
        self.sdr_frequency = sdr_frequency = 1420.406e6
        self.output_vector_bandwidth = output_vector_bandwidth = samp_rate/if_filter_decimation_rate
        self.offset_frequency = offset_frequency = if_bandwidth_1/2+1e5
        self.integration_scale_factor = integration_scale_factor = np.full((num_channels),float(1.0/(integration_time*integration_bandwidth*50)),dtype=float)
        self.integration_dec_rate = integration_dec_rate = int(integration_time*if_samp_rate/num_channels)
        self.if_filter_gain = if_filter_gain = 1/(lna_gain_measured*cable_loss*sdr_gain_lin*sdr_power_offset)
        self.if_bandwidth_0 = if_bandwidth_0 = 5.5e6
        self.channel_skirt = channel_skirt = integration_bandwidth/100
        self.channel_map = channel_map = range(int(num_channels/2.0+1.0),num_channels,1)+range(0,int(num_channels/2.0+1.0),1)
        self.antenna_gain_estimated = antenna_gain_estimated = 173

        ##################################################
        # Blocks
        ##################################################
        self.probe_signal = blocks.probe_signal_vf(num_channels)
        
        def _variable_function_probe_probe():
            while True:
                val = self.probe_signal.level()
                try:
                    self.set_variable_function_probe(val)
                except AttributeError:
                    pass
                time.sleep(1.0 / (10))
        _variable_function_probe_thread = threading.Thread(target=_variable_function_probe_probe)
        _variable_function_probe_thread.daemon = True
        _variable_function_probe_thread.start()
            
        self.pfb_channelizer_ccf_0 = pfb.channelizer_ccf(
              num_channels,
              (firdes.low_pass(1, if_samp_rate, (integration_bandwidth/2-channel_skirt), channel_skirt, firdes.WIN_HAMMING)),
              1.0,
              0)
        self.pfb_channelizer_ccf_0.set_channel_map((channel_map))
        self.pfb_channelizer_ccf_0.declare_sample_delay(0)
            
        self.low_pass_filter_1 = filter.fir_filter_ccf(if_filter_decimation_rate, firdes.low_pass(
            if_filter_gain, samp_rate, if_bandwidth_1/2, 1e5, firdes.WIN_HAMMING, 6.76))
        self.limesdr_source_2 = limesdr.source('0009060B00471B22',
                     2,
                     1,
                     0,
                     0,
                     '',
                     sdr_frequency-offset_frequency,
                     samp_rate,
                     0,
                     1,
                     15e6,
                     0,
                     10e6,
                     3,
                     2,
                     2,
                     1,
                     if_bandwidth_0,
                     1,
                     5e6,
                     1,
                     if_bandwidth_0,
                     0,
                     0,
                     sdr_gain,
                     30,
                     0,
                     0,
                     0,
                     0)
        self.blocks_streams_to_vector_0 = blocks.streams_to_vector(gr.sizeof_gr_complex*1, num_channels)
        self.blocks_multiply_xx_1 = blocks.multiply_vcc(1)
        self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((integration_scale_factor))
        self.blocks_integrate_xx_0_0 = blocks.integrate_ff(integration_dec_rate, num_channels)
        self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, '/home/w1xm-admin/Documents/DSP/data_out/recieve_block_sink', False)
        self.blocks_file_sink_0.set_unbuffered(False)
        self.blocks_copy_0_0 = blocks.copy(gr.sizeof_gr_complex*1)
        self.blocks_copy_0_0.set_enabled(False)
        self.blocks_copy_0 = blocks.copy(gr.sizeof_gr_complex*1)
        self.blocks_copy_0.set_enabled(True)
        self.blocks_complex_to_mag_squared_0 = blocks.complex_to_mag_squared(num_channels)
        self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_SIN_WAVE, -offset_frequency, 1, 0)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_1, 1))    
        self.connect((self.blocks_complex_to_mag_squared_0, 0), (self.blocks_integrate_xx_0_0, 0))    
        self.connect((self.blocks_copy_0, 0), (self.blocks_multiply_xx_1, 0))    
        self.connect((self.blocks_copy_0_0, 0), (self.blocks_file_sink_0, 0))    
        self.connect((self.blocks_integrate_xx_0_0, 0), (self.blocks_multiply_const_vxx_0, 0))    
        self.connect((self.blocks_multiply_const_vxx_0, 0), (self.probe_signal, 0))    
        self.connect((self.blocks_multiply_xx_1, 0), (self.low_pass_filter_1, 0))    
        self.connect((self.blocks_streams_to_vector_0, 0), (self.blocks_complex_to_mag_squared_0, 0))    
        self.connect((self.limesdr_source_2, 0), (self.blocks_copy_0, 0))    
        self.connect((self.limesdr_source_2, 0), (self.blocks_copy_0_0, 0))    
        self.connect((self.low_pass_filter_1, 0), (self.pfb_channelizer_ccf_0, 0))    
        
        for i in range(num_channels):
            self.connect((self.pfb_channelizer_ccf_0, i), (self.blocks_streams_to_vector_0, i))
Пример #23
0
    def __init__(self):
        grc_wxgui.top_block_gui.__init__(self, title="Top Block")
        _icon_path = "D:\Program Files\GNURadio-3.7\share\icons\hicolor\scalable/apps\gnuradio-grc.png"
        self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))

        ##################################################
        # Variables
        ##################################################
        self.volume = volume = 50
        self.samp_rate = samp_rate = 30e6
        self.rf_gain = rf_gain = 15
        self.rf_freq = rf_freq = 1717.5e6
        self.down_rate = down_rate = 3e6

        ##################################################
        # Blocks
        ##################################################
        _rf_gain_sizer = wx.BoxSizer(wx.VERTICAL)
        self._rf_gain_text_box = forms.text_box(
        	parent=self.GetWin(),
        	sizer=_rf_gain_sizer,
        	value=self.rf_gain,
        	callback=self.set_rf_gain,
        	label='rf_gain',
        	converter=forms.int_converter(),
        	proportion=0,
        )
        self._rf_gain_slider = forms.slider(
        	parent=self.GetWin(),
        	sizer=_rf_gain_sizer,
        	value=self.rf_gain,
        	callback=self.set_rf_gain,
        	minimum=10,
        	maximum=70,
        	num_steps=12,
        	style=wx.SL_HORIZONTAL,
        	cast=int,
        	proportion=1,
        )
        self.GridAdd(_rf_gain_sizer, 1, 0, 1, 2)
        _rf_freq_sizer = wx.BoxSizer(wx.VERTICAL)
        self._rf_freq_text_box = forms.text_box(
        	parent=self.GetWin(),
        	sizer=_rf_freq_sizer,
        	value=self.rf_freq,
        	callback=self.set_rf_freq,
        	label='rf_freq',
        	converter=forms.float_converter(),
        	proportion=0,
        )
        self._rf_freq_slider = forms.slider(
        	parent=self.GetWin(),
        	sizer=_rf_freq_sizer,
        	value=self.rf_freq,
        	callback=self.set_rf_freq,
        	minimum=10e6,
        	maximum=3000e6,
        	num_steps=300,
        	style=wx.SL_HORIZONTAL,
        	cast=float,
        	proportion=1,
        )
        self.GridAdd(_rf_freq_sizer, 1, 2, 1, 2)
        self.wxgui_waterfallsink2_0 = waterfallsink2.waterfall_sink_c(
        	self.GetWin(),
        	baseband_freq=0,
        	dynamic_range=100,
        	ref_level=0,
        	ref_scale=2.0,
        	sample_rate=samp_rate,
        	fft_size=1024,
        	fft_rate=50,
        	average=False,
        	avg_alpha=None,
        	title='Waterfall Plot',
        )
        self.Add(self.wxgui_waterfallsink2_0.win)
        self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
        	self.GetWin(),
        	baseband_freq=rf_freq,
        	y_per_div=10,
        	y_divs=10,
        	ref_level=0,
        	ref_scale=2.0,
        	sample_rate=samp_rate,
        	fft_size=1024,
        	fft_rate=50,
        	average=False,
        	avg_alpha=None,
        	title='FFT Plot',
        	peak_hold=False,
        )
        self.Add(self.wxgui_fftsink2_0.win)
        _volume_sizer = wx.BoxSizer(wx.VERTICAL)
        self._volume_text_box = forms.text_box(
        	parent=self.GetWin(),
        	sizer=_volume_sizer,
        	value=self.volume,
        	callback=self.set_volume,
        	label='volume',
        	converter=forms.float_converter(),
        	proportion=0,
        )
        self._volume_slider = forms.slider(
        	parent=self.GetWin(),
        	sizer=_volume_sizer,
        	value=self.volume,
        	callback=self.set_volume,
        	minimum=0,
        	maximum=100,
        	num_steps=100,
        	style=wx.SL_HORIZONTAL,
        	cast=float,
        	proportion=1,
        )
        self.GridAdd(_volume_sizer, 1, 5, 1, 8)
        self.limesdr_source_0 = limesdr.source('', 0, '')
        self.limesdr_source_0.set_sample_rate(samp_rate)
        self.limesdr_source_0.set_center_freq(rf_freq, 0)
        self.limesdr_source_0.set_bandwidth(30e6,0)
        self.limesdr_source_0.set_gain(rf_gain,0)
        self.limesdr_source_0.set_antenna(255,0)




        ##################################################
        # Connections
        ##################################################
        self.connect((self.limesdr_source_0, 0), (self.wxgui_fftsink2_0, 0))
        self.connect((self.limesdr_source_0, 0), (self.wxgui_waterfallsink2_0, 0))
Пример #24
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.variable_cc_encoder_def_0 = variable_cc_encoder_def_0 = map(
            (lambda a: fec.cc_encoder_make(4096, 7, 2, ([79, 109]), 0, fec.
                                           CC_STREAMING, False)), range(0, 1))

        self.variable_cc_decoder_def_0 = variable_cc_decoder_def_0 = map(
            (lambda a: fec.cc_decoder.make(4096, 7, 2, ([79, 109]), 0, -1, fec.
                                           CC_STREAMING, False)), range(0, 1))
        self.samp_rate = samp_rate = 500000
        self.code1 = code1 = '010110011011101100010101011111101001001110001011010001101010001'

        ##################################################
        # Blocks
        ##################################################
        self.qtgui_time_sink_x_0 = qtgui.time_sink_c(
            1024,  #size
            samp_rate,  #samp_rate
            "",  #name
            1  #number of inputs
        )
        self.qtgui_time_sink_x_0.set_update_time(0.10)
        self.qtgui_time_sink_x_0.set_y_axis(-1, 1)

        self.qtgui_time_sink_x_0.set_y_label('Amplitude', "")

        self.qtgui_time_sink_x_0.enable_tags(-1, True)
        self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE,
                                                  qtgui.TRIG_SLOPE_POS, 0.0, 0,
                                                  0, "")
        self.qtgui_time_sink_x_0.enable_autoscale(True)
        self.qtgui_time_sink_x_0.enable_grid(False)
        self.qtgui_time_sink_x_0.enable_axis_labels(True)
        self.qtgui_time_sink_x_0.enable_control_panel(False)
        self.qtgui_time_sink_x_0.enable_stem_plot(False)

        if not True:
            self.qtgui_time_sink_x_0.disable_legend()

        labels = ['', '', '', '', '', '', '', '', '', '']
        widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        colors = [
            "blue", "red", "green", "black", "cyan", "magenta", "yellow",
            "dark red", "dark green", "blue"
        ]
        styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

        for i in xrange(2):
            if len(labels[i]) == 0:
                if (i % 2 == 0):
                    self.qtgui_time_sink_x_0.set_line_label(
                        i, "Re{{Data {0}}}".format(i / 2))
                else:
                    self.qtgui_time_sink_x_0.set_line_label(
                        i, "Im{{Data {0}}}".format(i / 2))
            else:
                self.qtgui_time_sink_x_0.set_line_label(i, labels[i])
            self.qtgui_time_sink_x_0.set_line_width(i, widths[i])
            self.qtgui_time_sink_x_0.set_line_color(i, colors[i])
            self.qtgui_time_sink_x_0.set_line_style(i, styles[i])
            self.qtgui_time_sink_x_0.set_line_marker(i, markers[i])
            self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i])

        self._qtgui_time_sink_x_0_win = sip.wrapinstance(
            self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget)
        self.top_layout.addWidget(self._qtgui_time_sink_x_0_win)
        self.limesdr_source_0 = limesdr.source('1D424A48F1332A', 0, '')
        self.limesdr_source_0.set_sample_rate(samp_rate)
        self.limesdr_source_0.set_center_freq(1.43e9, 0)
        self.limesdr_source_0.set_bandwidth(5e6, 0)
        self.limesdr_source_0.set_digital_filter(500e3, 0)
        self.limesdr_source_0.set_gain(20, 0)
        self.limesdr_source_0.set_antenna(255, 0)

        self.digital_gmsk_demod_0 = digital.gmsk_demod(
            samples_per_symbol=2,
            gain_mu=0.175,
            mu=0.5,
            omega_relative_limit=0.005,
            freq_error=0.0,
            verbose=False,
            log=False,
        )
        self.digital_costas_loop_cc_0 = digital.costas_loop_cc(5e-3, 2, False)
        self.blocks_file_sink_0 = blocks.file_sink(
            gr.sizeof_char * 1, '/home/beam/Desktop/SHADE/GnuRadio/out.txt',
            False)
        self.blocks_file_sink_0.set_unbuffered(True)
        self.blks2_packet_decoder_0 = grc_blks2.packet_demod_b(
            grc_blks2.packet_decoder(
                access_code=code1,
                threshold=-1,
                callback=lambda ok, payload: self.blks2_packet_decoder_0.
                recv_pkt(ok, payload),
            ), )

        ##################################################
        # Connections
        ##################################################
        self.connect((self.blks2_packet_decoder_0, 0),
                     (self.blocks_file_sink_0, 0))
        self.connect((self.digital_costas_loop_cc_0, 0),
                     (self.digital_gmsk_demod_0, 0))
        self.connect((self.digital_costas_loop_cc_0, 0),
                     (self.qtgui_time_sink_x_0, 0))
        self.connect((self.digital_gmsk_demod_0, 0),
                     (self.blks2_packet_decoder_0, 0))
        self.connect((self.limesdr_source_0, 0),
                     (self.digital_costas_loop_cc_0, 0))
Пример #25
0
    def __init__(self):
        gr.top_block.__init__(self, "Top Block")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Top Block")
        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")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 15e6
        self.integration_bandwidth = integration_bandwidth = 2.5e3
        self.if_bandwidth_2 = if_bandwidth_2 = .75e6
        self.dec_rate_1 = dec_rate_1 = 5
        self.samp_rate_2 = samp_rate_2 = samp_rate / dec_rate_1
        self.num_channels = num_channels = int(if_bandwidth_2 /
                                               integration_bandwidth)
        self.samp_rate_3 = samp_rate_3 = samp_rate_2 / num_channels
        self.integration_time = integration_time = .5
        self.variable_function_probe = variable_function_probe = 0
        self.output_samp_rate = output_samp_rate = 1.0 / integration_time
        self.integration_dec_rate = integration_dec_rate = int(
            integration_time * samp_rate_3 / 2)
        self.if_bandwidth_0 = if_bandwidth_0 = 4.5e6
        self.gain = gain = 60
        self.freq = freq = 1.4204e9
        self.channel_map = channel_map = range(
            int(num_channels / 2.0 + 1.0), num_channels, 1) + range(
                0, int(num_channels / 2.0 + 1.0), 1)

        ##################################################
        # Blocks
        ##################################################
        self.probe_signal = blocks.probe_signal_vf(num_channels)
        self._gain_range = Range(0, 70, 1, 60, 200)
        self._gain_win = RangeWidget(self._gain_range, self.set_gain, "gain",
                                     "counter_slider", int)
        self.top_layout.addWidget(self._gain_win)

        def _variable_function_probe_probe():
            while True:
                val = self.probe_signal.level()
                try:
                    self.set_variable_function_probe(val)
                except AttributeError:
                    pass
                pytime.sleep(1.0 / (10))

        _variable_function_probe_thread = threading.Thread(
            target=_variable_function_probe_probe)
        _variable_function_probe_thread.daemon = True
        _variable_function_probe_thread.start()

        self.pfb_channelizer_ccf_0 = pfb.channelizer_ccf(
            num_channels,
            (firdes.low_pass(1, samp_rate_2, integration_bandwidth, 250,
                             firdes.WIN_HAMMING)), 1.0, 0)
        self.pfb_channelizer_ccf_0.set_channel_map((channel_map))
        self.pfb_channelizer_ccf_0.declare_sample_delay(0)

        self.low_pass_filter_1 = filter.fir_filter_ccf(
            dec_rate_1,
            firdes.low_pass(10, samp_rate, if_bandwidth_2, 1e5,
                            firdes.WIN_HAMMING, 6.76))
        self.limesdr_source_2 = limesdr.source('0009072C02873717', 2, 1, 0, 0,
                                               '', freq - 800e3, samp_rate, 0,
                                               1, 15e6, 0, 10e6, 3, 2, 2, 1,
                                               if_bandwidth_0, 1, 5e6, 1,
                                               if_bandwidth_0, 0, 0, gain, 30,
                                               0, 0, 0, 0)
        self.blocks_streams_to_vector_0 = blocks.streams_to_vector(
            gr.sizeof_gr_complex * 1, num_channels)
        self.blocks_multiply_xx_1 = blocks.multiply_vcc(1)
        self.blocks_integrate_xx_0_0 = blocks.integrate_ff(
            integration_dec_rate, num_channels)
        self.blocks_file_sink_0 = blocks.file_sink(
            gr.sizeof_gr_complex * 1,
            '/home/w1xm-admin/Documents/DSP/data_out/recieve_block_sink',
            False)
        self.blocks_file_sink_0.set_unbuffered(False)
        self.blocks_copy_0_0 = blocks.copy(gr.sizeof_gr_complex * 1)
        self.blocks_copy_0_0.set_enabled(False)
        self.blocks_copy_0 = blocks.copy(gr.sizeof_gr_complex * 1)
        self.blocks_copy_0.set_enabled(True)
        self.blocks_complex_to_mag_squared_0 = blocks.complex_to_mag_squared(
            num_channels)
        self.analog_sig_source_x_0 = analog.sig_source_c(
            samp_rate, analog.GR_SIN_WAVE, -800e3, 1, 0)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_sig_source_x_0, 0),
                     (self.blocks_multiply_xx_1, 1))
        self.connect((self.blocks_complex_to_mag_squared_0, 0),
                     (self.blocks_integrate_xx_0_0, 0))
        self.connect((self.blocks_copy_0, 0), (self.blocks_multiply_xx_1, 0))
        self.connect((self.blocks_copy_0_0, 0), (self.blocks_file_sink_0, 0))
        self.connect((self.blocks_integrate_xx_0_0, 0), (self.probe_signal, 0))
        self.connect((self.blocks_multiply_xx_1, 0),
                     (self.low_pass_filter_1, 0))
        self.connect((self.blocks_streams_to_vector_0, 0),
                     (self.blocks_complex_to_mag_squared_0, 0))
        self.connect((self.limesdr_source_2, 0), (self.blocks_copy_0, 0))
        self.connect((self.limesdr_source_2, 0), (self.blocks_copy_0_0, 0))
        self.connect((self.low_pass_filter_1, 0),
                     (self.pfb_channelizer_ccf_0, 0))

        for i in range(num_channels):
            self.connect((self.pfb_channelizer_ccf_0, i),
                         (self.blocks_streams_to_vector_0, i))