summaryrefslogtreecommitdiff
path: root/gr-digital/examples
diff options
context:
space:
mode:
Diffstat (limited to 'gr-digital/examples')
-rwxr-xr-xgr-digital/examples/berawgn.py6
-rw-r--r--gr-digital/examples/demod/ber_simulation.grc2
-rw-r--r--gr-digital/examples/demod/digital_freq_lock.grc4
-rw-r--r--gr-digital/examples/demod/dpsk_loopback.grc2
-rw-r--r--gr-digital/examples/demod/mpsk_demod.grc228
-rw-r--r--gr-digital/examples/demod/pam_sync.grc6
-rw-r--r--gr-digital/examples/demod/pam_timing.grc10
-rwxr-xr-xgr-digital/examples/example_costas.py14
-rwxr-xr-xgr-digital/examples/example_fll.py18
-rwxr-xr-xgr-digital/examples/example_timing.py20
-rwxr-xr-xgr-digital/examples/gen_whitener.py9
-rwxr-xr-xgr-digital/examples/narrowband/benchmark_add_channel.py4
-rwxr-xr-xgr-digital/examples/narrowband/benchmark_rx.py7
-rwxr-xr-xgr-digital/examples/narrowband/benchmark_tx.py7
-rwxr-xr-xgr-digital/examples/narrowband/digital_bert_rx.py7
-rwxr-xr-xgr-digital/examples/narrowband/digital_bert_tx.py8
-rwxr-xr-xgr-digital/examples/narrowband/rx_voice.py7
-rwxr-xr-xgr-digital/examples/narrowband/tx_voice.py6
-rwxr-xr-xgr-digital/examples/ofdm/benchmark_add_channel.py4
-rwxr-xr-xgr-digital/examples/ofdm/benchmark_rx.py7
-rwxr-xr-xgr-digital/examples/ofdm/benchmark_tx.py7
-rw-r--r--gr-digital/examples/ofdm/rx_ofdm.grc1092
-rw-r--r--gr-digital/examples/ofdm/tx_ofdm.grc1143
-rwxr-xr-xgr-digital/examples/snr_estimators.py10
24 files changed, 2453 insertions, 175 deletions
diff --git a/gr-digital/examples/berawgn.py b/gr-digital/examples/berawgn.py
index 6f9679d555..7fd1a2337d 100755
--- a/gr-digital/examples/berawgn.py
+++ b/gr-digital/examples/berawgn.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -91,7 +91,7 @@ class BERAWGNSimu(gr.top_block):
self.const = digital.qpsk_constellation()
# Source is N_BITS bits, non-repeated
data = map(int, numpy.random.randint(0, self.const.arity(), N_BITS/self.const.bits_per_symbol()))
- src = gr.vector_source_b(data, False)
+ src = blocks.vector_source_b(data, False)
mod = digital.chunks_to_symbols_bc((self.const.points()), 1)
add = blocks.add_vcc()
noise = analog.noise_source_c(analog.GR_GAUSSIAN,
@@ -99,7 +99,7 @@ class BERAWGNSimu(gr.top_block):
RAND_SEED)
demod = digital.constellation_decoder_cb(self.const.base())
ber = BitErrors(self.const.bits_per_symbol())
- self.sink = gr.vector_sink_f()
+ self.sink = blocks.vector_sink_f()
self.connect(src, mod, add, demod, ber, self.sink)
self.connect(noise, (add, 1))
self.connect(src, (ber, 1))
diff --git a/gr-digital/examples/demod/ber_simulation.grc b/gr-digital/examples/demod/ber_simulation.grc
index b216912a6f..d0bec741c3 100644
--- a/gr-digital/examples/demod/ber_simulation.grc
+++ b/gr-digital/examples/demod/ber_simulation.grc
@@ -537,7 +537,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
diff --git a/gr-digital/examples/demod/digital_freq_lock.grc b/gr-digital/examples/demod/digital_freq_lock.grc
index 965768ece3..399d52488d 100644
--- a/gr-digital/examples/demod/digital_freq_lock.grc
+++ b/gr-digital/examples/demod/digital_freq_lock.grc
@@ -244,7 +244,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
@@ -630,7 +630,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
diff --git a/gr-digital/examples/demod/dpsk_loopback.grc b/gr-digital/examples/demod/dpsk_loopback.grc
index 9befa69b6c..daa076c47b 100644
--- a/gr-digital/examples/demod/dpsk_loopback.grc
+++ b/gr-digital/examples/demod/dpsk_loopback.grc
@@ -374,7 +374,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
diff --git a/gr-digital/examples/demod/mpsk_demod.grc b/gr-digital/examples/demod/mpsk_demod.grc
index 1045ef5797..c252bb6e4f 100644
--- a/gr-digital/examples/demod/mpsk_demod.grc
+++ b/gr-digital/examples/demod/mpsk_demod.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Mon Aug 20 19:51:38 2012</timestamp>
+ <timestamp>Sun Mar 17 21:08:14 2013</timestamp>
<block>
<key>options</key>
<param>
@@ -123,49 +123,6 @@
</param>
</block>
<block>
- <key>digital_dxpsk_mod</key>
- <param>
- <key>id</key>
- <value>digital_dxpsk_mod_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>dqpsk</value>
- </param>
- <param>
- <key>samples_per_symbol</key>
- <value>samps_per_sym</value>
- </param>
- <param>
- <key>excess_bw</key>
- <value>0.35</value>
- </param>
- <param>
- <key>mod_code</key>
- <value>"gray"</value>
- </param>
- <param>
- <key>verbose</key>
- <value>False</value>
- </param>
- <param>
- <key>log</key>
- <value>False</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(361, 119)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>variable</key>
<param>
<key>id</key>
@@ -346,38 +303,58 @@
</param>
</block>
<block>
- <key>channel_model</key>
+ <key>qtgui_const_sink_x</key>
<param>
<key>id</key>
- <value>channel_model_0</value>
+ <value>qtgui_const_sink_x_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>noise_voltage</key>
- <value>noise</value>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
- <key>freq_offset</key>
- <value>freq_off</value>
+ <key>name</key>
+ <value>QT GUI Plot</value>
</param>
<param>
- <key>epsilon</key>
- <value>1.0</value>
+ <key>size</key>
+ <value>1024</value>
</param>
<param>
- <key>taps</key>
- <value>1.0</value>
+ <key>ymin</key>
+ <value>-2</value>
</param>
<param>
- <key>seed</key>
- <value>0</value>
+ <key>ymax</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>xmin</key>
+ <value>-2</value>
+ </param>
+ <param>
+ <key>xmax</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>nconnections</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>update_time</key>
+ <value>0.10</value>
+ </param>
+ <param>
+ <key>gui_hint</key>
+ <value>notebook@0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(369, 264)</value>
+ <value>(810, 184)</value>
</param>
<param>
<key>_rotation</key>
@@ -385,10 +362,10 @@
</param>
</block>
<block>
- <key>blocks_throttle</key>
+ <key>qtgui_freq_sink_x</key>
<param>
<key>id</key>
- <value>blocks_throttle_0</value>
+ <value>qtgui_freq_sink_x_0</value>
</param>
<param>
<key>_enabled</key>
@@ -399,16 +376,48 @@
<value>complex</value>
</param>
<param>
- <key>samples_per_second</key>
+ <key>name</key>
+ <value>QT GUI Plot</value>
+ </param>
+ <param>
+ <key>fftsize</key>
+ <value>1024</value>
+ </param>
+ <param>
+ <key>wintype</key>
+ <value>firdes.WIN_BLACKMAN_hARRIS</value>
+ </param>
+ <param>
+ <key>fc</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>bw</key>
<value>samp_rate</value>
</param>
<param>
- <key>vlen</key>
+ <key>ymin</key>
+ <value>-140</value>
+ </param>
+ <param>
+ <key>ymax</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>nconnections</key>
<value>1</value>
</param>
<param>
+ <key>update_time</key>
+ <value>0.10</value>
+ </param>
+ <param>
+ <key>gui_hint</key>
+ <value>notebook@1</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(597, 142)</value>
+ <value>(810, 65)</value>
</param>
<param>
<key>_rotation</key>
@@ -416,10 +425,10 @@
</param>
</block>
<block>
- <key>qtgui_const_sink_x</key>
+ <key>digital_dxpsk_mod</key>
<param>
<key>id</key>
- <value>qtgui_const_sink_x_0</value>
+ <value>digital_dxpsk_mod_0</value>
</param>
<param>
<key>_enabled</key>
@@ -427,27 +436,31 @@
</param>
<param>
<key>type</key>
- <value>complex</value>
+ <value>dqpsk</value>
</param>
<param>
- <key>name</key>
- <value>QT GUI Plot</value>
+ <key>samples_per_symbol</key>
+ <value>samps_per_sym</value>
</param>
<param>
- <key>size</key>
- <value>1024</value>
+ <key>excess_bw</key>
+ <value>0.35</value>
</param>
<param>
- <key>nconnections</key>
- <value>1</value>
+ <key>mod_code</key>
+ <value>"gray"</value>
</param>
<param>
- <key>gui_hint</key>
- <value>notebook@0</value>
+ <key>verbose</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>log</key>
+ <value>False</value>
</param>
<param>
<key>_coordinate</key>
- <value>(810, 184)</value>
+ <value>(361, 119)</value>
</param>
<param>
<key>_rotation</key>
@@ -455,10 +468,10 @@
</param>
</block>
<block>
- <key>qtgui_freq_sink_x</key>
+ <key>blocks_throttle</key>
<param>
<key>id</key>
- <value>qtgui_freq_sink_x_0</value>
+ <value>blocks_throttle_0</value>
</param>
<param>
<key>_enabled</key>
@@ -469,40 +482,55 @@
<value>complex</value>
</param>
<param>
- <key>name</key>
- <value>QT GUI Plot</value>
+ <key>samples_per_second</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>fftsize</key>
- <value>1024</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>wintype</key>
- <value>firdes.WIN_BLACKMAN_hARRIS</value>
+ <key>_coordinate</key>
+ <value>(597, 142)</value>
</param>
<param>
- <key>fc</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>channels_channel_model</key>
<param>
- <key>bw</key>
- <value>samp_rate</value>
+ <key>id</key>
+ <value>channels_channel_model_0</value>
</param>
<param>
- <key>rate</key>
- <value>10</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>nconnections</key>
- <value>1</value>
+ <key>noise_voltage</key>
+ <value>noise</value>
</param>
<param>
- <key>gui_hint</key>
- <value>notebook@1</value>
+ <key>freq_offset</key>
+ <value>freq_off</value>
+ </param>
+ <param>
+ <key>epsilon</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>taps</key>
+ <value>1.0 + 1.0j</value>
+ </param>
+ <param>
+ <key>seed</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(810, 65)</value>
+ <value>(494, 263)</value>
</param>
<param>
<key>_rotation</key>
@@ -516,26 +544,26 @@
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>digital_dxpsk_mod_0</source_block_id>
- <sink_block_id>channel_model_0</sink_block_id>
+ <source_block_id>blocks_throttle_0</source_block_id>
+ <sink_block_id>qtgui_freq_sink_x_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>channel_model_0</source_block_id>
- <sink_block_id>blocks_throttle_0</sink_block_id>
+ <source_block_id>blocks_throttle_0</source_block_id>
+ <sink_block_id>qtgui_const_sink_x_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_throttle_0</source_block_id>
- <sink_block_id>qtgui_freq_sink_x_0</sink_block_id>
+ <source_block_id>digital_dxpsk_mod_0</source_block_id>
+ <sink_block_id>channels_channel_model_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_throttle_0</source_block_id>
- <sink_block_id>qtgui_const_sink_x_0</sink_block_id>
+ <source_block_id>channels_channel_model_0</source_block_id>
+ <sink_block_id>blocks_throttle_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
diff --git a/gr-digital/examples/demod/pam_sync.grc b/gr-digital/examples/demod/pam_sync.grc
index 4785482e3f..d8497e423d 100644
--- a/gr-digital/examples/demod/pam_sync.grc
+++ b/gr-digital/examples/demod/pam_sync.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Tue Jan 15 15:21:49 2013</timestamp>
+ <timestamp>Sun Mar 17 21:08:58 2013</timestamp>
<block>
<key>options</key>
<param>
@@ -228,7 +228,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
@@ -1054,7 +1054,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
diff --git a/gr-digital/examples/demod/pam_timing.grc b/gr-digital/examples/demod/pam_timing.grc
index 632477821a..50dd8a1c86 100644
--- a/gr-digital/examples/demod/pam_timing.grc
+++ b/gr-digital/examples/demod/pam_timing.grc
@@ -519,7 +519,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
@@ -594,7 +594,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
@@ -669,7 +669,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
@@ -744,7 +744,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
@@ -819,7 +819,7 @@
</param>
<param>
<key>trig_mode</key>
- <value>gr.gr_TRIG_MODE_AUTO</value>
+ <value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
diff --git a/gr-digital/examples/example_costas.py b/gr-digital/examples/example_costas.py
index 726e0756d8..dbb5e42cdf 100755
--- a/gr-digital/examples/example_costas.py
+++ b/gr-digital/examples/example_costas.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -21,6 +21,8 @@
#
from gnuradio import gr, digital, filter
+from gnuradio import blocks
+from gnuradio import channels
from gnuradio import eng_notation
from gnuradio.eng_option import eng_option
from optparse import OptionParser
@@ -47,14 +49,14 @@ class example_costas(gr.top_block):
data = 2.0*scipy.random.randint(0, 2, N) - 1.0
data = scipy.exp(1j*poffset) * data
- self.src = gr.vector_source_c(data.tolist(), False)
+ self.src = blocks.vector_source_c(data.tolist(), False)
self.rrc = filter.interp_fir_filter_ccf(sps, rrc_taps)
- self.chn = filter.channel_model(noise, foffset, toffset)
+ self.chn = channels.channel_model(noise, foffset, toffset)
self.cst = digital.costas_loop_cc(bw, 2)
- self.vsnk_src = gr.vector_sink_c()
- self.vsnk_cst = gr.vector_sink_c()
- self.vsnk_frq = gr.vector_sink_f()
+ self.vsnk_src = blocks.vector_sink_c()
+ self.vsnk_cst = blocks.vector_sink_c()
+ self.vsnk_frq = blocks.vector_sink_f()
self.connect(self.src, self.rrc, self.chn, self.cst, self.vsnk_cst)
self.connect(self.rrc, self.vsnk_src)
diff --git a/gr-digital/examples/example_fll.py b/gr-digital/examples/example_fll.py
index ef6e1b1658..4fb12f5aae 100755
--- a/gr-digital/examples/example_fll.py
+++ b/gr-digital/examples/example_fll.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -21,6 +21,8 @@
#
from gnuradio import gr, digital, filter
+from gnuradio import blocks
+from gnuradio import channels
from gnuradio import eng_notation
from gnuradio.eng_option import eng_option
from optparse import OptionParser
@@ -47,16 +49,16 @@ class example_fll(gr.top_block):
data = 2.0*scipy.random.randint(0, 2, N) - 1.0
data = scipy.exp(1j*poffset) * data
- self.src = gr.vector_source_c(data.tolist(), False)
+ self.src = blocks.vector_source_c(data.tolist(), False)
self.rrc = filter.interp_fir_filter_ccf(sps, rrc_taps)
- self.chn = filter.channel_model(noise, foffset, toffset)
+ self.chn = channels.channel_model(noise, foffset, toffset)
self.fll = digital.fll_band_edge_cc(sps, rolloff, ntaps, bw)
- self.vsnk_src = gr.vector_sink_c()
- self.vsnk_fll = gr.vector_sink_c()
- self.vsnk_frq = gr.vector_sink_f()
- self.vsnk_phs = gr.vector_sink_f()
- self.vsnk_err = gr.vector_sink_f()
+ self.vsnk_src = blocks.vector_sink_c()
+ self.vsnk_fll = blocks.vector_sink_c()
+ self.vsnk_frq = blocks.vector_sink_f()
+ self.vsnk_phs = blocks.vector_sink_f()
+ self.vsnk_err = blocks.vector_sink_f()
self.connect(self.src, self.rrc, self.chn, self.fll, self.vsnk_fll)
self.connect(self.rrc, self.vsnk_src)
diff --git a/gr-digital/examples/example_timing.py b/gr-digital/examples/example_timing.py
index d51aebb31d..73a05b05dc 100755
--- a/gr-digital/examples/example_timing.py
+++ b/gr-digital/examples/example_timing.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -21,6 +21,8 @@
#
from gnuradio import gr, digital, filter
+from gnuradio import blocks
+from gnuradio import channels
from gnuradio import eng_notation
from gnuradio.eng_option import eng_option
from optparse import OptionParser
@@ -55,9 +57,9 @@ class example_timing(gr.top_block):
data = 2.0*scipy.random.randint(0, 2, N) - 1.0
data = scipy.exp(1j*poffset) * data
- self.src = gr.vector_source_c(data.tolist(), False)
+ self.src = blocks.vector_source_c(data.tolist(), False)
self.rrc = filter.interp_fir_filter_ccf(sps, rrc_taps)
- self.chn = filter.channel_model(noise, foffset, toffset)
+ self.chn = channels.channel_model(noise, foffset, toffset)
self.off = filter.fractional_interpolator_cc(0.20, 1.0)
if mode == 0:
@@ -66,9 +68,9 @@ class example_timing(gr.top_block):
self.taps = self.clk.taps()
self.dtaps = self.clk.diff_taps()
- self.vsnk_err = gr.vector_sink_f()
- self.vsnk_rat = gr.vector_sink_f()
- self.vsnk_phs = gr.vector_sink_f()
+ self.vsnk_err = blocks.vector_sink_f()
+ self.vsnk_rat = blocks.vector_sink_f()
+ self.vsnk_phs = blocks.vector_sink_f()
self.connect((self.clk,1), self.vsnk_err)
self.connect((self.clk,2), self.vsnk_rat)
@@ -83,12 +85,12 @@ class example_timing(gr.top_block):
mu, gain_mu,
omega_rel_lim)
- self.vsnk_err = gr.vector_sink_f()
+ self.vsnk_err = blocks.vector_sink_f()
self.connect((self.clk,1), self.vsnk_err)
- self.vsnk_src = gr.vector_sink_c()
- self.vsnk_clk = gr.vector_sink_c()
+ self.vsnk_src = blocks.vector_sink_c()
+ self.vsnk_clk = blocks.vector_sink_c()
self.connect(self.src, self.rrc, self.chn, self.off, self.clk, self.vsnk_clk)
self.connect(self.off, self.vsnk_src)
diff --git a/gr-digital/examples/gen_whitener.py b/gr-digital/examples/gen_whitener.py
index 0b1591c3ab..63616605ba 100755
--- a/gr-digital/examples/gen_whitener.py
+++ b/gr-digital/examples/gen_whitener.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -21,6 +21,7 @@
#
from gnuradio import gr, gru
+from gnuradio import blocks
from gnuradio.eng_option import eng_option
from optparse import OptionParser
import sys
@@ -36,9 +37,9 @@ class my_graph(gr.top_block):
parser.print_help()
raise SystemExit, 1
- src = gr.lfsr_32k_source_s()
- head = gr.head(gr.sizeof_short, 2048)
- self.dst = gr.vector_sink_s()
+ src = blocks.lfsr_32k_source_s()
+ head = blocks.head(gr.sizeof_short, 2048)
+ self.dst = blocks.vector_sink_s()
self.connect(src, head, self.dst)
if __name__ == '__main__':
diff --git a/gr-digital/examples/narrowband/benchmark_add_channel.py b/gr-digital/examples/narrowband/benchmark_add_channel.py
index 28824dff4b..b614895b63 100755
--- a/gr-digital/examples/narrowband/benchmark_add_channel.py
+++ b/gr-digital/examples/narrowband/benchmark_add_channel.py
@@ -42,14 +42,14 @@ class my_top_block(gr.top_block):
noise_power = power_in_signal/SNR
noise_voltage = math.sqrt(noise_power)
- self.src = gr.file_source(gr.sizeof_gr_complex, ifile)
+ self.src = blocks.file_source(gr.sizeof_gr_complex, ifile)
#self.throttle = blocks.throttle(gr.sizeof_gr_complex, options.sample_rate)
self.channel = filter.channel_model(noise_voltage, frequency_offset,
time_offset, noise_seed=-random.randint(0,100000))
self.phase = blocks.multiply_const_cc(complex(math.cos(phase_offset),
math.sin(phase_offset)))
- self.snk = gr.file_sink(gr.sizeof_gr_complex, ofile)
+ self.snk = blocks.file_sink(gr.sizeof_gr_complex, ofile)
self.connect(self.src, self.channel, self.phase, self.snk)
diff --git a/gr-digital/examples/narrowband/benchmark_rx.py b/gr-digital/examples/narrowband/benchmark_rx.py
index 1962fdc4b0..622773aac5 100755
--- a/gr-digital/examples/narrowband/benchmark_rx.py
+++ b/gr-digital/examples/narrowband/benchmark_rx.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2010,2011 Free Software Foundation, Inc.
+# Copyright 2010,2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -21,6 +21,7 @@
#
from gnuradio import gr, gru
+from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio.eng_option import eng_option
from optparse import OptionParser
@@ -57,10 +58,10 @@ class my_top_block(gr.top_block):
elif(options.from_file is not None):
sys.stderr.write(("Reading samples from '%s'.\n\n" % (options.from_file)))
- self.source = gr.file_source(gr.sizeof_gr_complex, options.from_file)
+ self.source = blocks.file_source(gr.sizeof_gr_complex, options.from_file)
else:
sys.stderr.write("No source defined, pulling samples from null source.\n\n")
- self.source = gr.null_source(gr.sizeof_gr_complex)
+ self.source = blocks.null_source(gr.sizeof_gr_complex)
# Set up receive path
# do this after for any adjustments to the options that may
diff --git a/gr-digital/examples/narrowband/benchmark_tx.py b/gr-digital/examples/narrowband/benchmark_tx.py
index 9afacb4952..11ad7ea26e 100755
--- a/gr-digital/examples/narrowband/benchmark_tx.py
+++ b/gr-digital/examples/narrowband/benchmark_tx.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2010,2011 Free Software Foundation, Inc.
+# Copyright 2010,2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -21,6 +21,7 @@
#
from gnuradio import gr
+from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio.eng_option import eng_option
from optparse import OptionParser
@@ -56,10 +57,10 @@ class my_top_block(gr.top_block):
elif(options.to_file is not None):
sys.stderr.write(("Saving samples to '%s'.\n\n" % (options.to_file)))
- self.sink = gr.file_sink(gr.sizeof_gr_complex, options.to_file)
+ self.sink = blocks.file_sink(gr.sizeof_gr_complex, options.to_file)
else:
sys.stderr.write("No sink defined, dumping samples to null sink.\n\n")
- self.sink = gr.null_sink(gr.sizeof_gr_complex)
+ self.sink = blocks.null_sink(gr.sizeof_gr_complex)
# do this after for any adjustments to the options that may
# occur in the sinks (specifically the UHD sink)
diff --git a/gr-digital/examples/narrowband/digital_bert_rx.py b/gr-digital/examples/narrowband/digital_bert_rx.py
index cc66456e93..c04c76762f 100755
--- a/gr-digital/examples/narrowband/digital_bert_rx.py
+++ b/gr-digital/examples/narrowband/digital_bert_rx.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2008,2011 Free Software Foundation, Inc.
+# Copyright 2008,2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -27,6 +27,7 @@ import gnuradio.gr.gr_threading as _threading
import sys, time, math
from gnuradio import digital
+from gnuradio import blocks
# from current dir
from uhd_interface import uhd_receiver
@@ -124,9 +125,9 @@ class rx_psk_block(gr.top_block):
options.samples_per_symbol = self._source._sps
elif(options.from_file is not None):
- self._source = gr.file_source(gr.sizeof_gr_complex, options.from_file)
+ self._source = blocks.file_source(gr.sizeof_gr_complex, options.from_file)
else:
- self._source = gr.null_source(gr.sizeof_gr_complex)
+ self._source = blocks.null_source(gr.sizeof_gr_complex)
# Create the BERT receiver
self._receiver = bert_receiver(options.bitrate,
diff --git a/gr-digital/examples/narrowband/digital_bert_tx.py b/gr-digital/examples/narrowband/digital_bert_tx.py
index 3be9d68f87..6859d2e7af 100755
--- a/gr-digital/examples/narrowband/digital_bert_tx.py
+++ b/gr-digital/examples/narrowband/digital_bert_tx.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2008,2011 Free Software Foundation, Inc.
+# Copyright 2008,2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -43,7 +43,7 @@ class bert_transmit(gr.hier_block2):
gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Input signature
# Create BERT data bit stream
- self._bits = gr.vector_source_b([1,], True) # Infinite stream of ones
+ self._bits = blocks.vector_source_b([1,], True) # Infinite stream of ones
self._scrambler = digital.scrambler_bb(0x8A, 0x7F, 7) # CCSDS 7-bit scrambler
self._mod = digital.generic_mod(constellation, differential,
@@ -78,9 +78,9 @@ class tx_psk_block(gr.top_block):
options.samples_per_symbol = self._sink._sps
elif(options.to_file is not None):
- self._sink = gr.file_sink(gr.sizeof_gr_complex, options.to_file)
+ self._sink = blocks.file_sink(gr.sizeof_gr_complex, options.to_file)
else:
- self._sink = gr.null_sink(gr.sizeof_gr_complex)
+ self._sink = blocks.null_sink(gr.sizeof_gr_complex)
self._transmitter = bert_transmit(self._modulator._constellation,
diff --git a/gr-digital/examples/narrowband/rx_voice.py b/gr-digital/examples/narrowband/rx_voice.py
index f5d12b5689..8a0e9844be 100755
--- a/gr-digital/examples/narrowband/rx_voice.py
+++ b/gr-digital/examples/narrowband/rx_voice.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2005,2006,2009,2011 Free Software Foundation, Inc.
+# Copyright 2005,2006,2009,2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -21,6 +21,7 @@
#
from gnuradio import gr, audio, uhd
+from gnuradio import blocks
from gnuradio import filter
from gnuradio import eng_notation
from gnuradio.eng_option import eng_option
@@ -83,12 +84,12 @@ class my_top_block(gr.top_block):
elif(options.from_file is not None):
self.thr = blocks.throttle(gr.sizeof_gr_complex, options.bitrate)
- self.source = gr.file_source(gr.sizeof_gr_complex, options.from_file)
+ self.source = blocks.file_source(gr.sizeof_gr_complex, options.from_file)
self.connect(self.source, self.thr, self.rxpath)
else:
self.thr = blocks.throttle(gr.sizeof_gr_complex, 1e6)
- self.source = gr.null_source(gr.sizeof_gr_complex)
+ self.source = blocks.null_source(gr.sizeof_gr_complex)
self.connect(self.source, self.thr, self.rxpath)
self.connect(self.audio_tx)
diff --git a/gr-digital/examples/narrowband/tx_voice.py b/gr-digital/examples/narrowband/tx_voice.py
index 3fc4fa46f3..afdb4406e6 100755
--- a/gr-digital/examples/narrowband/tx_voice.py
+++ b/gr-digital/examples/narrowband/tx_voice.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2005-2007,2009,2011 Free Software Foundation, Inc.
+# Copyright 2005-2007,2009,2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -80,10 +80,10 @@ class my_top_block(gr.top_block):
rrate = usrp_rate / audio_rate
elif(options.to_file is not None):
- self.sink = gr.file_sink(gr.sizeof_gr_complex, options.to_file)
+ self.sink = blocks.file_sink(gr.sizeof_gr_complex, options.to_file)
rrate = 1
else:
- self.sink = gr.null_sink(gr.sizeof_gr_complex)
+ self.sink = blocks.null_sink(gr.sizeof_gr_complex)
rrate = 1
self.resampler = filter.pfb.arb_resampler_ccf(rrate)
diff --git a/gr-digital/examples/ofdm/benchmark_add_channel.py b/gr-digital/examples/ofdm/benchmark_add_channel.py
index 0d17efd052..f97214f78d 100755
--- a/gr-digital/examples/ofdm/benchmark_add_channel.py
+++ b/gr-digital/examples/ofdm/benchmark_add_channel.py
@@ -44,14 +44,14 @@ class my_top_block(gr.top_block):
frequency_offset = options.frequency_offset / options.fft_length
- self.src = gr.file_source(gr.sizeof_gr_complex, ifile)
+ self.src = blocks.file_source(gr.sizeof_gr_complex, ifile)
#self.throttle = blocks.throttle(gr.sizeof_gr_complex, options.sample_rate)
self.channel = filter.channel_model(noise_voltage, frequency_offset,
time_offset, noise_seed=-random.randint(0,100000))
self.phase = blocks.multiply_const_cc(complex(math.cos(phase_offset),
math.sin(phase_offset)))
- self.snk = gr.file_sink(gr.sizeof_gr_complex, ofile)
+ self.snk = blocks.file_sink(gr.sizeof_gr_complex, ofile)
self.connect(self.src, self.channel, self.phase, self.snk)
diff --git a/gr-digital/examples/ofdm/benchmark_rx.py b/gr-digital/examples/ofdm/benchmark_rx.py
index f1b65276d0..dbcd866ad2 100755
--- a/gr-digital/examples/ofdm/benchmark_rx.py
+++ b/gr-digital/examples/ofdm/benchmark_rx.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2006,2007,2011 Free Software Foundation, Inc.
+# Copyright 2006,2007,2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -25,6 +25,7 @@ from gnuradio import eng_notation
from gnuradio.eng_option import eng_option
from optparse import OptionParser
+from gnuradio import blocks
from gnuradio import digital
# from current dir
@@ -44,9 +45,9 @@ class my_top_block(gr.top_block):
options.spec, options.antenna,
options.verbose)
elif(options.from_file is not None):
- self.source = gr.file_source(gr.sizeof_gr_complex, options.from_file)
+ self.source = blocks.file_source(gr.sizeof_gr_complex, options.from_file)
else:
- self.source = gr.null_source(gr.sizeof_gr_complex)
+ self.source = blocks.null_source(gr.sizeof_gr_complex)
# Set up receive path
# do this after for any adjustments to the options that may
diff --git a/gr-digital/examples/ofdm/benchmark_tx.py b/gr-digital/examples/ofdm/benchmark_tx.py
index 5962fe7ecb..2942178ccf 100755
--- a/gr-digital/examples/ofdm/benchmark_tx.py
+++ b/gr-digital/examples/ofdm/benchmark_tx.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2005,2006,2011 Free Software Foundation, Inc.
+# Copyright 2005,2006,2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -27,6 +27,7 @@ from optparse import OptionParser
import time, struct, sys
from gnuradio import digital
+from gnuradio import blocks
# from current dir
from transmit_path import transmit_path
@@ -43,9 +44,9 @@ class my_top_block(gr.top_block):
options.spec, options.antenna,
options.verbose)
elif(options.to_file is not None):
- self.sink = gr.file_sink(gr.sizeof_gr_complex, options.to_file)
+ self.sink = blocks.file_sink(gr.sizeof_gr_complex, options.to_file)
else:
- self.sink = gr.null_sink(gr.sizeof_gr_complex)
+ self.sink = blocks.null_sink(gr.sizeof_gr_complex)
# do this after for any adjustments to the options that may
# occur in the sinks (specifically the UHD sink)
diff --git a/gr-digital/examples/ofdm/rx_ofdm.grc b/gr-digital/examples/ofdm/rx_ofdm.grc
new file mode 100644
index 0000000000..47e165508c
--- /dev/null
+++ b/gr-digital/examples/ofdm/rx_ofdm.grc
@@ -0,0 +1,1092 @@
+<?xml version='1.0' encoding='ASCII'?>
+<flow_graph>
+ <timestamp>Thu Feb 14 15:49:35 2013</timestamp>
+ <block>
+ <key>options</key>
+ <param>
+ <key>id</key>
+ <value>rx_ofdm</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>title</key>
+ <value>OFDM Rx</value>
+ </param>
+ <param>
+ <key>author</key>
+ <value></value>
+ </param>
+ <param>
+ <key>description</key>
+ <value>Example of an OFDM receiver</value>
+ </param>
+ <param>
+ <key>window_size</key>
+ <value>1280, 1024</value>
+ </param>
+ <param>
+ <key>generate_options</key>
+ <value>wx_gui</value>
+ </param>
+ <param>
+ <key>category</key>
+ <value>Custom</value>
+ </param>
+ <param>
+ <key>run_options</key>
+ <value>prompt</value>
+ </param>
+ <param>
+ <key>run</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>max_nouts</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>realtime_scheduling</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(0, -1)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>pilot_symbols_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>((100,),)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(762, 64)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>pilot_carriers</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>((0,),)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(557, 64)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>header_formatter</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>digital.packet_header_ofdm(occupied_carriers, 1, length_tag_name)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(876, 64)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>pilot_symbols</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>((100,),)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(659, 64)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>occupied_carriers</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>(range(-26, -21) + range(-20, -7) + range(-6, 0) + range(1, 7) + range(8, 21) + range(22, 27),)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(404, 64)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>analog_noise_source_x</key>
+ <param>
+ <key>id</key>
+ <value>analog_noise_source_x_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>noise_type</key>
+ <value>analog.GR_GAUSSIAN</value>
+ </param>
+ <param>
+ <key>amp</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>seed</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(-1, 185)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_ofdm_sync_sc_cfb</key>
+ <param>
+ <key>id</key>
+ <value>digital_ofdm_sync_sc_cfb_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>fft_len</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>cp_len</key>
+ <value>fft_len/4</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(368, 178)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>analog_frequency_modulator_fc</key>
+ <param>
+ <key>id</key>
+ <value>analog_frequency_modulator_fc_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>sensitivity</key>
+ <value>-2.0/fft_len</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(692, 175)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_multiply_xx</key>
+ <param>
+ <key>id</key>
+ <value>blocks_multiply_xx_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(885, 223)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_delay</key>
+ <param>
+ <key>id</key>
+ <value>blocks_delay_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>delay</key>
+ <value>fft_len+fft_len/4</value>
+ </param>
+ <param>
+ <key>num_ports</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(368, 253)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>3200000</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(0, 91)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>import</key>
+ <param>
+ <key>id</key>
+ <value>import_1</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>import</key>
+ <value>from gnuradio.digital.utils import tagged_streams</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(163, 0)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>sync_word</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>[0, 0, 0, 0, 0, 0, 0, -1.0, 0, 1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, -1.0, 0, 1.0, 0, 1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, -1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, 0, 0, 0, 0, 0]</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(165, 46)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>header_mod</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>digital.constellation_bpsk()</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(655, 0)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>payload_mod</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>digital.constellation_qpsk()</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(813, 0)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>n_sync_symbols</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(168, 108)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_throttle</key>
+ <param>
+ <key>id</key>
+ <value>blocks_throttle_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>samples_per_second</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(181, 200)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_constellation_decoder_cb</key>
+ <param>
+ <key>id</key>
+ <value>digital_constellation_decoder_cb_0_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>constellation</key>
+ <value>header_mod.base()</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(854, 343)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_ofdm_frame_equalizer_vcvc</key>
+ <param>
+ <key>id</key>
+ <value>digital_ofdm_frame_equalizer_vcvc_0_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>fft_len</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>equalizer</key>
+ <value>digital.ofdm_equalizer_simpledfe(fft_len, header_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols).base()</value>
+ </param>
+ <param>
+ <key>len_tag_key</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>propagate_channel_state</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(421, 320)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_packet_headerparser_b</key>
+ <param>
+ <key>id</key>
+ <value>digital_packet_headerparser_b_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>header_formatter</key>
+ <value>header_formatter.formatter()</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(651, 466)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
+ <key>fft_vxx</key>
+ <param>
+ <key>id</key>
+ <value>fft_vxx_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>fft_size</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>forward</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>window</key>
+ <value></value>
+ </param>
+ <param>
+ <key>shift</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>nthreads</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(53, 429)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>64</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(301, -1)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>"frame_len"</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(367, -1)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_constellation_decoder_cb</key>
+ <param>
+ <key>id</key>
+ <value>digital_constellation_decoder_cb_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>constellation</key>
+ <value>payload_mod.base()</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(718, 635)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_null_sink</key>
+ <param>
+ <key>id</key>
+ <value>blocks_null_sink_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(938, 638)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_ofdm_frame_equalizer_vcvc</key>
+ <param>
+ <key>id</key>
+ <value>digital_ofdm_frame_equalizer_vcvc_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>fft_len</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>equalizer</key>
+ <value>digital.ofdm_equalizer_simpledfe(fft_len, header_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols, n_sync_symbols).base()</value>
+ </param>
+ <param>
+ <key>len_tag_key</key>
+ <value>length_tag_key</value>
+ </param>
+ <param>
+ <key>propagate_channel_state</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(265, 612)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>fft_vxx</key>
+ <param>
+ <key>id</key>
+ <value>fft_vxx_0_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>fft_size</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>forward</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>window</key>
+ <value></value>
+ </param>
+ <param>
+ <key>shift</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>nthreads</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(57, 605)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_ofdm_serializer_vcc</key>
+ <param>
+ <key>id</key>
+ <value>digital_ofdm_serializer_vcc_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>fft_len</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>occupied_carriers</key>
+ <value>occupied_carriers</value>
+ </param>
+ <param>
+ <key>len_tag_key</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>packet_len_tag_key</key>
+ <value>""</value>
+ </param>
+ <param>
+ <key>symbols_skipped</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>input_is_shifted</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(649, 305)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_ofdm_serializer_vcc</key>
+ <param>
+ <key>id</key>
+ <value>digital_ofdm_serializer_vcc_1</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>fft_len</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>occupied_carriers</key>
+ <value>occupied_carriers</value>
+ </param>
+ <param>
+ <key>len_tag_key</key>
+ <value>length_tag_key</value>
+ </param>
+ <param>
+ <key>packet_len_tag_key</key>
+ <value>""</value>
+ </param>
+ <param>
+ <key>symbols_skipped</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>input_is_shifted</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(496, 597)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_ofdm_chanest_vcvc</key>
+ <param>
+ <key>id</key>
+ <value>digital_ofdm_chanest_vcvc_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>sync_symbol1</key>
+ <value>sync_word</value>
+ </param>
+ <param>
+ <key>sync_symbol2</key>
+ <value>()</value>
+ </param>
+ <param>
+ <key>n_data_symbols</key>
+ <value>n_sync_symbols</value>
+ </param>
+ <param>
+ <key>eq_noise_red_len</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>max_carr_offset</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>force_one_symbol</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(52, 305)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_header_payload_demux</key>
+ <param>
+ <key>id</key>
+ <value>digital_header_payload_demux_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>header_len</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>items_per_symbol</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>guard_interval</key>
+ <value>fft_len/4</value>
+ </param>
+ <param>
+ <key>length_tag_key</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>trigger_tag_key</key>
+ <value>""</value>
+ </param>
+ <param>
+ <key>output_symbols</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(340, 461)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <connection>
+ <source_block_id>fft_vxx_0</source_block_id>
+ <sink_block_id>digital_ofdm_chanest_vcvc_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>analog_frequency_modulator_fc_0</source_block_id>
+ <sink_block_id>blocks_multiply_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_sync_sc_cfb_0</source_block_id>
+ <sink_block_id>analog_frequency_modulator_fc_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>analog_noise_source_x_0</source_block_id>
+ <sink_block_id>blocks_throttle_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_throttle_0</source_block_id>
+ <sink_block_id>digital_ofdm_sync_sc_cfb_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_throttle_0</source_block_id>
+ <sink_block_id>blocks_delay_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_delay_0</source_block_id>
+ <sink_block_id>blocks_multiply_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>1</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_constellation_decoder_cb_0_0</source_block_id>
+ <sink_block_id>digital_packet_headerparser_b_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_serializer_vcc_0</source_block_id>
+ <sink_block_id>digital_constellation_decoder_cb_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_sync_sc_cfb_0</source_block_id>
+ <sink_block_id>digital_header_payload_demux_0</sink_block_id>
+ <source_key>1</source_key>
+ <sink_key>1</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_chanest_vcvc_0</source_block_id>
+ <sink_block_id>digital_ofdm_frame_equalizer_vcvc_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_frame_equalizer_vcvc_0_0</source_block_id>
+ <sink_block_id>digital_ofdm_serializer_vcc_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_packet_headerparser_b_0</source_block_id>
+ <sink_block_id>digital_header_payload_demux_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>2</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_header_payload_demux_0</source_block_id>
+ <sink_block_id>fft_vxx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_header_payload_demux_0</source_block_id>
+ <sink_block_id>fft_vxx_0_0</sink_block_id>
+ <source_key>1</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_multiply_xx_0</source_block_id>
+ <sink_block_id>digital_header_payload_demux_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_constellation_decoder_cb_0</source_block_id>
+ <sink_block_id>blocks_null_sink_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_frame_equalizer_vcvc_0</source_block_id>
+ <sink_block_id>digital_ofdm_serializer_vcc_1</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_serializer_vcc_1</source_block_id>
+ <sink_block_id>digital_constellation_decoder_cb_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fft_vxx_0_0</source_block_id>
+ <sink_block_id>digital_ofdm_frame_equalizer_vcvc_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+</flow_graph>
diff --git a/gr-digital/examples/ofdm/tx_ofdm.grc b/gr-digital/examples/ofdm/tx_ofdm.grc
new file mode 100644
index 0000000000..a2deb05f9f
--- /dev/null
+++ b/gr-digital/examples/ofdm/tx_ofdm.grc
@@ -0,0 +1,1143 @@
+<?xml version='1.0' encoding='ASCII'?>
+<flow_graph>
+ <timestamp>Tue Feb 5 14:47:32 2013</timestamp>
+ <block>
+ <key>options</key>
+ <param>
+ <key>id</key>
+ <value>tx_ofdm</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>title</key>
+ <value>OFDM Tx</value>
+ </param>
+ <param>
+ <key>author</key>
+ <value></value>
+ </param>
+ <param>
+ <key>description</key>
+ <value>Example of an OFDM Transmitter</value>
+ </param>
+ <param>
+ <key>window_size</key>
+ <value>1280, 1024</value>
+ </param>
+ <param>
+ <key>generate_options</key>
+ <value>no_gui</value>
+ </param>
+ <param>
+ <key>category</key>
+ <value>Custom</value>
+ </param>
+ <param>
+ <key>run_options</key>
+ <value>run</value>
+ </param>
+ <param>
+ <key>run</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>max_nouts</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>realtime_scheduling</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(0, -1)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>import</key>
+ <param>
+ <key>id</key>
+ <value>import_1</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>import</key>
+ <value>from gnuradio.digital.utils import tagged_streams</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(164, 45)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>"packet_len"</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(399, 0)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>pilot_symbols_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>((100,),)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(735, 63)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>occupied_carriers</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>(range(-26, -21) + range(-20, -7) + range(-6, 0) + range(1, 7) + range(8, 21) + range(22, 27),)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(377, 63)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>pilot_symbols</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>((100,),)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(632, 63)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>pilot_carriers</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>((0,),)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(530, 63)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>64</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(311, 63)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>header_mod</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>digital.constellation_bpsk()</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(620, 0)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>payload_mod</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>digital.constellation_qpsk()</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(783, 0)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_throttle</key>
+ <param>
+ <key>id</key>
+ <value>blocks_throttle_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>samples_per_second</key>
+ <value>bit_rate/8</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(234, 167)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>import</key>
+ <param>
+ <key>id</key>
+ <value>import_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>import</key>
+ <value>import numpy</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(164, 0)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>import</key>
+ <param>
+ <key>id</key>
+ <value>import_0_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>import</key>
+ <value>import random</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(-1, 90)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>sync_word</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>[0, 0, 0, 0, 0, 0, 0, -1.0, 0, 1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, -1.0, 0, 1.0, 0, 1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, -1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, 1.0, 0, -1.0, 0, 1.0, 0, -1.0, 0, 0, 0, 0, 0, 0]</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(95, 90)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>rolloff</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(234, 91)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>header_formatter</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>digital.packet_header_ofdm(occupied_carriers, 1, length_tag_name)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(849, 63)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_vector_source_x</key>
+ <param>
+ <key>id</key>
+ <value>blocks_vector_source_x_1</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>vector</key>
+ <value>range(packet_len)</value>
+ </param>
+ <param>
+ <key>tags</key>
+ <value>tagged_streams.make_lengthtags((packet_len,), (0,), length_tag_name)</value>
+ </param>
+ <param>
+ <key>repeat</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(-1, 152)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>packet_len</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>96</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(528, 0)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_packet_headergenerator_bb</key>
+ <param>
+ <key>id</key>
+ <value>digital_packet_headergenerator_bb_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>header_formatter</key>
+ <value>header_formatter.formatter()</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(761, 167)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>bit_rate</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>3200000</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(311, 0)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_repack_bits_bb</key>
+ <param>
+ <key>id</key>
+ <value>blocks_repack_bits_bb_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>k</key>
+ <value>8</value>
+ </param>
+ <param>
+ <key>l</key>
+ <value>payload_mod.bits_per_symbol()</value>
+ </param>
+ <param>
+ <key>len_tag_key</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>align_output</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(516, 228)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_chunks_to_symbols_xx</key>
+ <param>
+ <key>id</key>
+ <value>digital_chunks_to_symbols_xx_0_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>in_type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>out_type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>symbol_table</key>
+ <value>payload_mod.points()</value>
+ </param>
+ <param>
+ <key>dimension</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>num_ports</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(279, 243)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_chunks_to_symbols_xx</key>
+ <param>
+ <key>id</key>
+ <value>digital_chunks_to_symbols_xx_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>in_type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>out_type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>symbol_table</key>
+ <value>header_mod.points()</value>
+ </param>
+ <param>
+ <key>dimension</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>num_ports</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(319, 305)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_tagged_stream_mux</key>
+ <param>
+ <key>id</key>
+ <value>blocks_tagged_stream_mux_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>ninputs</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>lengthtagname</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(44, 254)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_ofdm_carrier_allocator_cvc</key>
+ <param>
+ <key>id</key>
+ <value>digital_ofdm_carrier_allocator_cvc_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>fft_len</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>occupied_carriers</key>
+ <value>occupied_carriers</value>
+ </param>
+ <param>
+ <key>pilot_carriers</key>
+ <value>pilot_carriers</value>
+ </param>
+ <param>
+ <key>pilot_symbols</key>
+ <value>pilot_symbols</value>
+ </param>
+ <param>
+ <key>len_tag_key</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(56, 453)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_vector_source_x</key>
+ <param>
+ <key>id</key>
+ <value>sync_word_source</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>vector</key>
+ <value>numpy.array(sync_word) * numpy.sqrt(2)</value>
+ </param>
+ <param>
+ <key>tags</key>
+ <value>tagged_streams.make_lengthtags((len(sync_word)/fft_len,), (0,), length_tag_name)</value>
+ </param>
+ <param>
+ <key>repeat</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(56, 356)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_tagged_stream_mux</key>
+ <param>
+ <key>id</key>
+ <value>blocks_tagged_stream_mux_1</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>ninputs</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>lengthtagname</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(374, 382)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>fft_vxx</key>
+ <param>
+ <key>id</key>
+ <value>fft_vxx_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>fft_size</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>forward</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>window</key>
+ <value></value>
+ </param>
+ <param>
+ <key>shift</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>nthreads</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(765, 498)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_ofdm_cyclic_prefixer</key>
+ <param>
+ <key>id</key>
+ <value>digital_ofdm_cyclic_prefixer_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>input_size</key>
+ <value>fft_len</value>
+ </param>
+ <param>
+ <key>output_size</key>
+ <value>fft_len+fft_len/4</value>
+ </param>
+ <param>
+ <key>rolloff</key>
+ <value>rolloff</value>
+ </param>
+ <param>
+ <key>tagname</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(488, 505)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
+ <key>wxgui_fftsink2</key>
+ <param>
+ <key>id</key>
+ <value>wxgui_fftsink2_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>title</key>
+ <value>FFT Plot</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>baseband_freq</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>y_per_div</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>y_divs</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>ref_level</key>
+ <value>50</value>
+ </param>
+ <param>
+ <key>ref_scale</key>
+ <value>2.0</value>
+ </param>
+ <param>
+ <key>fft_size</key>
+ <value>1024</value>
+ </param>
+ <param>
+ <key>fft_rate</key>
+ <value>15</value>
+ </param>
+ <param>
+ <key>peak_hold</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>average</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>avg_alpha</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>win</key>
+ <value>None</value>
+ </param>
+ <param>
+ <key>win_size</key>
+ <value></value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value></value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
+ <key>freqvar</key>
+ <value>None</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(291, 460)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_null_sink</key>
+ <param>
+ <key>id</key>
+ <value>blocks_null_sink_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(438, 633)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_crc32_bb</key>
+ <param>
+ <key>id</key>
+ <value>digital_crc32_bb_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>check</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>lengthtagname</key>
+ <value>length_tag_name</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(472, 159)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_tag_debug</key>
+ <param>
+ <key>id</key>
+ <value>blocks_tag_debug_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>name</key>
+ <value>tdb</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>display</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(819, 232)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <connection>
+ <source_block_id>blocks_vector_source_x_1</source_block_id>
+ <sink_block_id>blocks_throttle_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_throttle_0</source_block_id>
+ <sink_block_id>digital_crc32_bb_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_crc32_bb_0</source_block_id>
+ <sink_block_id>digital_packet_headergenerator_bb_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_tagged_stream_mux_0</source_block_id>
+ <sink_block_id>digital_ofdm_carrier_allocator_cvc_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_carrier_allocator_cvc_0</source_block_id>
+ <sink_block_id>blocks_tagged_stream_mux_1</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>1</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>sync_word_source</source_block_id>
+ <sink_block_id>blocks_tagged_stream_mux_1</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_packet_headergenerator_bb_0</source_block_id>
+ <sink_block_id>digital_chunks_to_symbols_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_repack_bits_bb_0</source_block_id>
+ <sink_block_id>digital_chunks_to_symbols_xx_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_chunks_to_symbols_xx_0</source_block_id>
+ <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_chunks_to_symbols_xx_0_0</source_block_id>
+ <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>1</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_crc32_bb_0</source_block_id>
+ <sink_block_id>blocks_repack_bits_bb_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_tagged_stream_mux_1</source_block_id>
+ <sink_block_id>fft_vxx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_cyclic_prefixer_0</source_block_id>
+ <sink_block_id>wxgui_fftsink2_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fft_vxx_0</source_block_id>
+ <sink_block_id>digital_ofdm_cyclic_prefixer_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_cyclic_prefixer_0</source_block_id>
+ <sink_block_id>blocks_null_sink_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_crc32_bb_0</source_block_id>
+ <sink_block_id>blocks_tag_debug_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+</flow_graph>
diff --git a/gr-digital/examples/snr_estimators.py b/gr-digital/examples/snr_estimators.py
index e310ec2937..9eae7865e5 100755
--- a/gr-digital/examples/snr_estimators.py
+++ b/gr-digital/examples/snr_estimators.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -36,6 +36,8 @@ except ImportError:
sys.exit(1)
from gnuradio import gr, digital, filter
+from gnuradio import blocks
+from gnuradio import channels
from optparse import OptionParser
from gnuradio.eng_option import eng_option
@@ -165,10 +167,10 @@ def main():
snrdB, snr = py_est(yy)
snr_python.append(snrdB)
- gr_src = gr.vector_source_c(bits.tolist(), False)
+ gr_src = blocks.vector_source_c(bits.tolist(), False)
gr_snr = digital.mpsk_snr_est_cc(gr_est, ntag, 0.001)
- gr_chn = filter.channel_model(1.0/scale)
- gr_snk = gr.null_sink(gr.sizeof_gr_complex)
+ gr_chn = channels.channel_model(1.0/scale)
+ gr_snk = blocks.null_sink(gr.sizeof_gr_complex)
tb = gr.top_block()
tb.connect(gr_src, gr_chn, gr_snr, gr_snk)
tb.run()