def setUp (self): self.tb = gr.top_block () self.c = phy(slow_rate=True) self.dqcsk_mapper = ieee802_15_4.dqcsk_mapper_fc(self.c.chirp_seq, self.c.time_gap_1, self.c.time_gap_2, c.n_sub, self.c.n_subchirps) self.dqcsk_demapper = ieee802_15_4.dqcsk_demapper_cf(self.c.chirp_seq, self.c.time_gap_1, self.c.time_gap_2, c.n_sub, self.c.n_subchirps) self.dqpsk_mapper = ieee802_15_4.dqpsk_mapper_ff(framelen=self.c.nsym_frame, forward=True) self.dqpsk_demapper = ieee802_15_4.dqpsk_mapper_ff(framelen=self.c.nsym_frame, forward=False) self.qpsk_mapper = ieee802_15_4.qpsk_mapper_if() self.qpsk_demapper = ieee802_15_4.qpsk_demapper_fi() self.preamble_sfd_prefixer_I = ieee802_15_4.preamble_sfd_prefixer_ii(self.c.preamble, self.c.SFD, self.c.nsym_frame) self.preamble_sfd_removal_I = blocks.keep_m_in_n(gr.sizeof_int, self.c.nsym_frame - len(self.c.preamble) - len(self.c.SFD), self.c.nsym_frame, len(self.c.preamble)+len(self.c.SFD)) self.preamble_sfd_prefixer_Q = ieee802_15_4.preamble_sfd_prefixer_ii(self.c.preamble, self.c.SFD, self.c.nsym_frame) self.preamble_sfd_removal_Q = blocks.keep_m_in_n(gr.sizeof_int, self.c.nsym_frame - len(self.c.preamble) - len(self.c.SFD), self.c.nsym_frame, len(self.c.preamble)+len(self.c.SFD)) self.interleaver_I = ieee802_15_4.interleaver_ii(self.c.intlv_seq, forward=True) self.interleaver_Q = ieee802_15_4.interleaver_ii(self.c.intlv_seq, forward=True) self.deinterleaver_I = ieee802_15_4.interleaver_ii(self.c.intlv_seq, forward=False) self.deinterleaver_Q = ieee802_15_4.interleaver_ii(self.c.intlv_seq, forward=False) self.codeword_mapper_I = ieee802_15_4.codeword_mapper_bi(self.c.bits_per_symbol, self.c.codewords) self.codeword_mapper_Q = ieee802_15_4.codeword_mapper_bi(self.c.bits_per_symbol, self.c.codewords) self.codeword_demapper_I = ieee802_15_4.codeword_demapper_ib(self.c.bits_per_symbol, self.c.codewords) self.codeword_demapper_Q = ieee802_15_4.codeword_demapper_ib(self.c.bits_per_symbol, self.c.codewords) self.demux = blocks.deinterleave(gr.sizeof_char*1,1) self.mux = blocks.interleave(gr.sizeof_char*1,1) self.zeropadding = ieee802_15_4.zeropadding_b(self.c.padded_zeros) self.zeropadding_removal = ieee802_15_4.zeropadding_removal_b(self.c.phy_packetsize_bytes*8+len(self.c.PHR), self.c.padded_zeros) self.phr_prefixer = ieee802_15_4.phr_prefixer(self.c.PHR) self.phr_removal = ieee802_15_4.phr_removal(self.c.PHR) self.fragmentation = ieee802_15_4.fragmentation(self.c.phy_packetsize_bytes)
def test_003_t(self): # set up fg cfg = phy() data_in = np.pi / 2 * np.random.randint(-1, 3, (1000, )) self.src = blocks.vector_source_f(data_in) self.dqcsk = ieee802_15_4.dqcsk_mapper_fc(cfg.chirp_seq, cfg.time_gap_1, cfg.time_gap_2, c.n_sub, cfg.n_subchirps, 1000) self.snk = blocks.vector_sink_c(1) self.tb.connect(self.src, self.dqcsk, self.snk) self.tb.run() # check data data_out = self.snk.data() ref = np.array([]) seq = cfg.chirp_seq.copy() lensub = c.n_sub nseq = len(data_in) / cfg.n_subchirps len_t1 = len(cfg.time_gap_1) len_t2 = len(cfg.time_gap_2) seq_ctr = 0 for i in range(nseq): for k in range(cfg.n_subchirps): ref = np.concatenate( (ref, seq[k * lensub:(k + 1) * lensub] * np.exp(1j * data_in[i * cfg.n_subchirps + k]))) if seq_ctr % 2 == 0: ref = np.concatenate((ref, cfg.time_gap_1)) else: ref = np.concatenate((ref, cfg.time_gap_2)) seq_ctr = (seq_ctr + 1) % 2 # print "ref:", ref[:10] # print "data:", data_out[:10] self.assertComplexTuplesAlmostEqual(data_out, ref, 5)
def setUp (self): self.tb = gr.top_block () self.c = phy(slow_rate=True) self.dqcsk_mapper = ieee802_15_4.dqcsk_mapper_fc(self.c.chirp_seq, self.c.time_gap_1, self.c.time_gap_2, c.n_sub, self.c.n_subchirps) self.dqcsk_demapper = ieee802_15_4.dqcsk_demapper_cc(self.c.chirp_seq, self.c.time_gap_1, self.c.time_gap_2, c.n_sub, self.c.n_subchirps) self.dqpsk_mapper = ieee802_15_4.dqpsk_mapper_ff(framelen=self.c.nsym_frame, forward=True) self.dqpsk_demapper = ieee802_15_4.dqpsk_soft_demapper_cc(framelen=self.c.nsym_frame) self.qpsk_mapper = ieee802_15_4.qpsk_mapper_if() self.qpsk_demapper = ieee802_15_4.qpsk_demapper_fi() self.preamble_sfd_prefixer_I = ieee802_15_4.preamble_sfd_prefixer_ii(self.c.preamble, self.c.SFD, self.c.nsym_frame) self.preamble_sfd_removal_I = blocks.keep_m_in_n(gr.sizeof_int, self.c.nsym_frame - len(self.c.preamble) - len(self.c.SFD), self.c.nsym_frame, len(self.c.preamble)+len(self.c.SFD)) self.preamble_sfd_prefixer_Q = ieee802_15_4.preamble_sfd_prefixer_ii(self.c.preamble, self.c.SFD, self.c.nsym_frame) self.preamble_sfd_removal_Q = blocks.keep_m_in_n(gr.sizeof_int, self.c.nsym_frame - len(self.c.preamble) - len(self.c.SFD), self.c.nsym_frame, len(self.c.preamble)+len(self.c.SFD)) self.interleaver_I = ieee802_15_4.interleaver_ii(self.c.intlv_seq, forward=True) self.interleaver_Q = ieee802_15_4.interleaver_ii(self.c.intlv_seq, forward=True) self.deinterleaver_I = ieee802_15_4.interleaver_ii(self.c.intlv_seq, forward=False) self.deinterleaver_Q = ieee802_15_4.interleaver_ii(self.c.intlv_seq, forward=False) self.codeword_mapper_I = ieee802_15_4.codeword_mapper_bi(self.c.bits_per_symbol, self.c.codewords) self.codeword_mapper_Q = ieee802_15_4.codeword_mapper_bi(self.c.bits_per_symbol, self.c.codewords) self.codeword_demapper_I = ieee802_15_4.codeword_demapper_ib(self.c.bits_per_symbol, self.c.codewords) self.codeword_demapper_Q = ieee802_15_4.codeword_demapper_ib(self.c.bits_per_symbol, self.c.codewords) self.demux = blocks.deinterleave(gr.sizeof_char*1,1) self.mux = blocks.interleave(gr.sizeof_char*1,1) self.zeropadding = ieee802_15_4.zeropadding_b(self.c.padded_zeros) self.zeropadding_removal = ieee802_15_4.zeropadding_removal_b(self.c.phy_packetsize_bytes*8+len(self.c.PHR), self.c.padded_zeros) self.phr_prefixer = ieee802_15_4.phr_prefixer(self.c.PHR) self.phr_removal = ieee802_15_4.phr_removal(self.c.PHR) self.fragmentation = ieee802_15_4.fragmentation(self.c.phy_packetsize_bytes)
def test_003_t (self): # set up fg cfg = phy() data_in = np.pi/2*np.random.randint(-1,3,(1000,)) self.src = blocks.vector_source_f(data_in) self.dqcsk = ieee802_15_4.dqcsk_mapper_fc(cfg.chirp_seq, cfg.time_gap_1, cfg.time_gap_2, c.n_sub, cfg.n_subchirps) self.snk = blocks.vector_sink_c(1) self.tb.connect(self.src, self.dqcsk, self.snk) self.tb.run () # check data data_out = self.snk.data() ref = np.array([]) seq = cfg.chirp_seq.copy() lensub = c.n_sub nseq = len(data_in)/cfg.n_subchirps len_t1 = len(cfg.time_gap_1) len_t2 = len(cfg.time_gap_2) seq_ctr = 0 for i in range(nseq): for k in range(cfg.n_subchirps): ref = np.concatenate((ref, seq[k*lensub:(k+1)*lensub]*np.exp(1j*data_in[i*cfg.n_subchirps+k]))) if seq_ctr % 2 == 0: ref = np.concatenate((ref, cfg.time_gap_1)) else: ref = np.concatenate((ref, cfg.time_gap_2)) seq_ctr = (seq_ctr+1) % 2 # print "ref:", ref[:10] # print "data:", data_out[:10] self.assertComplexTuplesAlmostEqual(data_out, ref, 5)
def test_002_t (self): # set up fg cfg = phy() data_in = [0, np.pi/2, np.pi, -np.pi/2] self.src = blocks.vector_source_f(data_in) self.dqcsk = ieee802_15_4.dqcsk_mapper_fc(cfg.chirp_seq, cfg.time_gap_1, cfg.time_gap_2, c.n_sub, cfg.n_subchirps) self.snk = blocks.vector_sink_c(1) self.tb.connect(self.src, self.dqcsk, self.snk) self.tb.run () # check data data_out = self.snk.data() ref = np.concatenate((cfg.chirp_seq.copy(), cfg.time_gap_1)) for i in range(4): ref[i*c.n_sub:(i+1)*c.n_sub] = ref[i*c.n_sub:(i+1)*c.n_sub]*np.exp(1j*data_in[i]) # print "ref:", ref[:10] # print "data:", data_out[:10] self.assertComplexTuplesAlmostEqual(data_out, ref, 5)
def test_002_t (self): # set up fg cfg = phy() data_in = [0, np.pi/2, np.pi, -np.pi/2] self.src = blocks.vector_source_f(data_in) self.dqcsk = ieee802_15_4.dqcsk_mapper_fc(cfg.chirp_seq, cfg.time_gap_1, cfg.time_gap_2, c.n_sub, cfg.n_subchirps, 4) self.snk = blocks.vector_sink_c(1) self.tb.connect(self.src, self.dqcsk, self.snk) self.tb.run () # check data data_out = self.snk.data() ref = np.concatenate((cfg.chirp_seq.copy(), cfg.time_gap_1)) for i in range(4): ref[i*c.n_sub:(i+1)*c.n_sub] = ref[i*c.n_sub:(i+1)*c.n_sub]*np.exp(1j*data_in[i]) # print "ref:", ref[:10] # print "data:", data_out[:10] self.assertComplexTuplesAlmostEqual(data_out, ref, 5)
def test_001_t (self): # set up fg cfg = phy() data_in = [0 for i in range(12)] self.src = blocks.vector_source_f(data_in) self.dqcsk = ieee802_15_4.dqcsk_mapper_fc(cfg.chirp_seq, cfg.time_gap_1, cfg.time_gap_2, c.n_sub, cfg.n_subchirps) self.snk = blocks.vector_sink_c(1) self.tb.connect(self.src, self.dqcsk, self.snk) self.tb.run () # check data data_out = self.snk.data() ref = np.concatenate((cfg.chirp_seq, cfg.time_gap_1, cfg.chirp_seq, cfg.time_gap_2, cfg.chirp_seq, cfg.time_gap_1)) # print "ref:", ref[:10] # print "data:", data_out[:10] f,axarr = plt.subplots(2) # axarr[0].plot(np.real(ref)) # axarr[1].plot(np.real(data_out)) # plt.show() self.assertComplexTuplesAlmostEqual(data_out, ref)
def test_001_t (self): # set up fg cfg = phy() data_in = [0 for i in range(12)] self.src = blocks.vector_source_f(data_in) self.dqcsk = ieee802_15_4.dqcsk_mapper_fc(cfg.chirp_seq, cfg.time_gap_1, cfg.time_gap_2, c.n_sub, cfg.n_subchirps, 120) self.snk = blocks.vector_sink_c(1) self.tb.connect(self.src, self.dqcsk, self.snk) self.tb.run () # check data data_out = self.snk.data() ref = np.concatenate((cfg.chirp_seq, cfg.time_gap_1, cfg.chirp_seq, cfg.time_gap_2, cfg.chirp_seq, cfg.time_gap_1)) # print "ref:", ref[:10] # print "data:", data_out[:10] f,axarr = plt.subplots(2) # axarr[0].plot(np.real(ref)) # axarr[1].plot(np.real(data_out)) # plt.show() self.assertComplexTuplesAlmostEqual(data_out, ref)