3
# Copyright 2007 Free Software Foundation, Inc.
5
# This file is part of GNU Radio
7
# GNU Radio is free software; you can redistribute it and/or modify
8
# it under the terms of the GNU General Public License as published by
9
# the Free Software Foundation; either version 3, or (at your option)
12
# GNU Radio is distributed in the hope that it will be useful,
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU General Public License for more details.
17
# You should have received a copy of the GNU General Public License
18
# along with GNU Radio; see the file COPYING. If not, write to
19
# the Free Software Foundation, Inc., 51 Franklin Street,
20
# Boston, MA 02110-1301, USA.
23
from gnuradio import gr, gr_unittest
24
from pprint import pprint
26
class testing (gr_unittest.TestCase):
29
self.tb = gr.top_block ()
34
def helper(self, v0, v1, fft_length, preamble):
36
src0 = gr.vector_source_c(v0)
37
src1 = gr.vector_source_b(v1)
39
s2v = gr.stream_to_vector(gr.sizeof_gr_complex, fft_length)
41
# print "len(v) = %d" % (len(v))
43
op = gr.ofdm_insert_preamble(fft_length, preamble)
45
v2s = gr.vector_to_stream(gr.sizeof_gr_complex, fft_length)
46
dst0 = gr.vector_sink_c()
47
dst1 = gr.vector_sink_b()
49
tb.connect(src0, s2v, (op, 0))
50
tb.connect(src1, (op, 1))
51
tb.connect((op, 0), v2s, dst0)
52
tb.connect((op, 1), dst1)
57
for i in range(len(r0)//fft_length):
58
r0v.append(r0[i*fft_length:(i+1)*fft_length])
61
self.assertEqual(len(r0v), len(r1))
64
def check_match(self, actual, expected_list):
66
map(lambda x: lst.append(x), expected_list)
67
self.assertEqual(actual, lst)
70
# ----------------------------------------------------------------
73
# no preamble, 1 symbol payloads
80
for i in range(npayloads):
81
t = fft_length*[(i + i*1j)]
87
r = self.helper(v, npayloads*[1], fft_length, preamble)
90
self.assertEqual(r[0], tuple(npayloads*[1]))
91
self.check_match(r[1], (p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7]))
95
# 1 symbol preamble, 1 symbol payloads
96
preamble = ((100, 101, 102, 103, 104, 105, 106, 107),)
102
for i in range(npayloads):
103
t = fft_length*[(i + i*1j)]
108
r = self.helper(v, npayloads*[1], fft_length, preamble)
110
self.assertEqual(r[0], tuple(npayloads*[1, 0]))
111
self.check_match(r[1], (p0, p[0],
121
# 2 symbol preamble, 1 symbol payloads
122
preamble = ((100, 101, 102, 103, 104, 105, 106, 107),
123
(200, 201, 202, 203, 204, 205, 206, 207))
131
for i in range(npayloads):
132
t = fft_length*[(i + i*1j)]
136
r = self.helper(v, npayloads*[1], fft_length, preamble)
138
self.assertEqual(r[0], tuple(npayloads*[1, 0, 0]))
139
self.check_match(r[1], (p0, p1, p[0],
149
def xtest_003_preamble(self):
150
# 2 symbol preamble, 2 symbol payloads
151
preamble = ((100, 101, 102, 103, 104, 105, 106, 107),
152
(200, 201, 202, 203, 204, 205, 206, 207))
160
for i in range(npayloads * 2):
161
t = fft_length*[(i + i*1j)]
165
r = self.helper(v, npayloads*[1, 0], fft_length, preamble)
167
self.assertEqual(r[0], tuple(npayloads*[1, 0, 0, 0]))
168
self.check_match(r[1], (p0, p1, p[0], p[1],
173
p0, p1, p[10], p[11],
174
p0, p1, p[12], p[13],
175
p0, p1, p[14], p[15]))
178
if __name__ == '__main__':