示例#1
0
    def test_004(
        self
    ):  # insert tags and check their propagation, non-zero offset, multiple tags per copy region
        period = 11000
        offset = 1000
        packetlen = 2000
        insert = [
            1.0,
        ] * 1000

        src = blocks.null_source(gr.sizeof_float)
        s2ts = blocks.stream_to_tagged_stream(gr.sizeof_float, 1, packetlen,
                                              "packet")
        head = blocks.head(gr.sizeof_float, 1000000)
        ins = blocks.vector_insert_f(insert, period, offset)
        dst = blocks.vector_sink_f()

        self.tb.connect(src, s2ts, head, ins, dst)
        self.tb.run()

        expected_result = (0, 2000, 4000, 6000, 8000, 11000, 13000, 15000,
                           17000, 19000, 22000, 24000, 26000)
        tags = dst.tags()
        offsets = [tag.offset for tag in tags]
        for i in range(len(expected_result)):
            self.assertTrue(expected_result[i] == offsets[i])
示例#2
0
    def test_003(self):  # insert tags and check their propagation, non-zero offset
        period = 11000
        offset = 1000
        insert = [1.0,] * 1000

        src = blocks.null_source(gr.sizeof_float)
        s2ts = blocks.stream_to_tagged_stream(gr.sizeof_float, 1, period-len(insert), "packet")
        head = blocks.head(gr.sizeof_float, 1000000)
        ins = blocks.vector_insert_f(insert, period, offset)
        dst = blocks.vector_sink_f()

        self.tb.connect(src, s2ts, head, ins, dst)
        self.tb.run()

        expected_result = (0, 11000, 22000, 33000, 44000, 55000, 66000)
        tags = dst.tags()
        offsets = [tag.offset for tag in tags]
        for i in range(len(expected_result)):
            self.assertTrue(expected_result[i] == offsets[i])
示例#3
0
    def test_002(self):  # insert tags and check their propagation, zero offset
        period = 11000
        offset = 0
        insert = [1.0, ] * 1000

        src = blocks.null_source(gr.sizeof_float)
        s2ts = blocks.stream_to_tagged_stream(
            gr.sizeof_float, 1, period - len(insert), "packet")
        head = blocks.head(gr.sizeof_float, 1000000)
        ins = blocks.vector_insert_f(insert, period, offset)
        dst = blocks.vector_sink_f()

        self.tb.connect(src, s2ts, head, ins, dst)
        self.tb.run()

        expected_result = (1000, 12000, 23000, 34000, 45000, 56000, 67000)
        tags = dst.tags()
        offsets = [tag.offset for tag in tags]
        for i in range(len(expected_result)):
            self.assertTrue(expected_result[i] == offsets[i])
    def __init__(self):
        gr.top_block.__init__(self, "UDP Synchronization Power bladeRF")

        ##################################################
        # Variables
        ##################################################
        self.fft_size = fft_size = 1024
        self.samp_rate = samp_rate =1100000
        self.fft_window = fft_window = window.blackmanharris(fft_size)
        self.power = power = sum(x*x for x in fft_window)
        self.center_freq = center_freq = 870e6
        self.bandwidth = bandwidth = samp_rate
        self.stop_freq = stop_freq = center_freq+(bandwidth/2)
        self.start_freq = start_freq = center_freq-(bandwidth/2)
        self.simon_port = simon_port = 65123
        self.simon_ip = simon_ip = '192.168.160.95'
        self.server_port = server_port = 65234
        self.server_ip = server_ip = '192.168.160.120'
        self.n = n = max(1, int(samp_rate/fft_size/15L))
        self.k = k = -20*math.log10(fft_size)-10*math.log10(power/fft_size)-20*math.log10(2.0/2)
        self.device = device = 'bladerf,fpga=/home/pi/bladeRF/pre-built/hostedx115.rbf'

        ##################################################
        # Blocks
        ##################################################
#        self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer((simon_ip, simon_port), allow_none=True)
#        self.xmlrpc_server_0.register_instance(self)
#        threading.Thread(target=self.xmlrpc_server_0.serve_forever).start()
        self.single_pole_iir_filter_xx_0 = filter.single_pole_iir_filter_ff(1.0, fft_size)
        self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + device )
        self.osmosdr_source_0.set_sample_rate(samp_rate)
        self.osmosdr_source_0.set_center_freq(center_freq, 0)
        self.osmosdr_source_0.set_freq_corr(0, 0)
        self.osmosdr_source_0.set_dc_offset_mode(0, 0)
        self.osmosdr_source_0.set_iq_balance_mode(0, 0)
        self.osmosdr_source_0.set_gain_mode(False, 0)
        self.osmosdr_source_0.set_gain(10, 0)
        self.osmosdr_source_0.set_if_gain(20, 0)
        self.osmosdr_source_0.set_bb_gain(20, 0)
        self.osmosdr_source_0.set_antenna("", 0)
        self.osmosdr_source_0.set_bandwidth(bandwidth, 0)
          
        self.fft_vxx_0 = fft.fft_vcc(fft_size, True, (fft_window), True, 1)
        self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_float*1, fft_size)
        self.blocks_vector_insert_x_0 = blocks.vector_insert_f((309448288, ), fft_size+1, 0)
        self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_float*1, server_ip, server_port, 1472, True)
        self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True)
        self.blocks_stream_to_vector_0 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, fft_size)
        self.blocks_nlog10_ff_0 = blocks.nlog10_ff(20, fft_size, k)
        self.blocks_keep_one_in_n_0 = blocks.keep_one_in_n(gr.sizeof_gr_complex*fft_size, n)
        self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1024)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.osmosdr_source_0, 0), (self.blocks_throttle_0, 0))
        self.connect((self.blocks_throttle_0, 0), (self.blocks_stream_to_vector_0, 0))
        self.connect((self.blocks_keep_one_in_n_0, 0), (self.fft_vxx_0, 0))
        self.connect((self.blocks_stream_to_vector_0, 0), (self.blocks_keep_one_in_n_0, 0))
        self.connect((self.blocks_vector_to_stream_0, 0), (self.blocks_vector_insert_x_0, 0))
        self.connect((self.single_pole_iir_filter_xx_0, 0), (self.blocks_nlog10_ff_0, 0))
        self.connect((self.blocks_complex_to_mag_0, 0), (self.single_pole_iir_filter_xx_0, 0))
        self.connect((self.blocks_nlog10_ff_0, 0), (self.blocks_vector_to_stream_0, 0))
        self.connect((self.fft_vxx_0, 0), (self.blocks_complex_to_mag_0, 0))
        self.connect((self.blocks_vector_insert_x_0, 0), (self.blocks_udp_sink_0, 0))