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])
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])
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))