summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-blocks/grc/blocks_block_tree.xml1
-rw-r--r--gr-blocks/grc/blocks_file_sink.xml16
-rw-r--r--gr-blocks/grc/blocks_stream_to_tagged_stream.xml64
-rw-r--r--gr-blocks/include/gnuradio/blocks/CMakeLists.txt3
-rw-r--r--gr-blocks/include/gnuradio/blocks/file_sink.h4
-rw-r--r--gr-blocks/include/gnuradio/blocks/file_sink_base.h3
-rw-r--r--gr-blocks/include/gnuradio/blocks/stream_to_tagged_stream.h62
-rw-r--r--gr-blocks/lib/CMakeLists.txt5
-rw-r--r--gr-blocks/lib/file_sink_base.cc14
-rw-r--r--gr-blocks/lib/file_sink_impl.cc8
-rw-r--r--gr-blocks/lib/file_sink_impl.h2
-rw-r--r--gr-blocks/lib/pdu_to_tagged_stream_impl.cc13
-rw-r--r--gr-blocks/lib/stream_to_tagged_stream_impl.cc74
-rw-r--r--gr-blocks/lib/stream_to_tagged_stream_impl.h53
-rwxr-xr-xgr-blocks/python/blocks/qa_stream_to_tagged_stream.py53
-rw-r--r--gr-blocks/swig/blocks_swig1.i3
-rw-r--r--gr-channels/grc/channels_channel_model.xml18
-rw-r--r--gr-channels/grc/channels_channel_model2.xml18
-rw-r--r--gr-channels/include/gnuradio/channels/channel_model.h9
-rw-r--r--gr-channels/include/gnuradio/channels/channel_model2.h4
-rw-r--r--gr-channels/lib/channel_model2_impl.cc13
-rw-r--r--gr-channels/lib/channel_model2_impl.h3
-rw-r--r--gr-channels/lib/channel_model_impl.cc14
-rw-r--r--gr-channels/lib/channel_model_impl.h3
-rw-r--r--gr-digital/examples/ofdm/rx_ofdm.grc1366
-rw-r--r--gr-digital/examples/ofdm/tx_ofdm.grc1231
-rw-r--r--gr-digital/python/digital/ofdm_txrx.py17
-rw-r--r--gr-digital/python/digital/packet_utils.py10
-rw-r--r--gr-digital/python/digital/pkt.py11
-rw-r--r--gr-filter/lib/pfb_synthesizer_ccf_impl.cc3
-rw-r--r--gr-vocoder/lib/codec2/interp.c1
-rw-r--r--gr-wxgui/python/wxgui/stdgui2.py1
-rw-r--r--grc/blocks/blks2_packet_encoder.xml9
-rw-r--r--grc/grc_gnuradio/blks2/error_rate.py4
-rw-r--r--grc/grc_gnuradio/blks2/packet.py8
-rw-r--r--grc/python/FlowGraph.py2
-rw-r--r--grc/python/flow_graph.tmpl5
-rw-r--r--gruel/src/python/gruel/CMakeLists.txt46
-rw-r--r--volk/tmpl/volk_cpu.tmpl.c2
39 files changed, 1406 insertions, 1770 deletions
diff --git a/gr-blocks/grc/blocks_block_tree.xml b/gr-blocks/grc/blocks_block_tree.xml
index c6c797f52a..18e6a05213 100644
--- a/gr-blocks/grc/blocks_block_tree.xml
+++ b/gr-blocks/grc/blocks_block_tree.xml
@@ -183,6 +183,7 @@
<block>blocks_tag_gate</block>
<block>blocks_tagged_file_sink</block>
<block>blocks_tagged_stream_mux</block>
+ <block>blocks_stream_to_tagged_stream</block>
</cat>
<cat>
<name>Type Converters</name>
diff --git a/gr-blocks/grc/blocks_file_sink.xml b/gr-blocks/grc/blocks_file_sink.xml
index 75ef86a6b8..ece21fd2ae 100644
--- a/gr-blocks/grc/blocks_file_sink.xml
+++ b/gr-blocks/grc/blocks_file_sink.xml
@@ -8,7 +8,7 @@
<name>File Sink</name>
<key>blocks_file_sink</key>
<import>from gnuradio import blocks</import>
- <make>blocks.file_sink($type.size*$vlen, $file)
+ <make>blocks.file_sink($type.size*$vlen, $file, $append)
self.$(id).set_unbuffered($unbuffered)</make>
<callback>set_unbuffered($unbuffered)</callback>
<callback>open($file)</callback>
@@ -68,6 +68,20 @@ self.$(id).set_unbuffered($unbuffered)</make>
<key>True</key>
</option>
</param>
+ <param>
+ <name>Append file</name>
+ <key>append</key>
+ <value>False</value>
+ <type>bool</type>
+ <option>
+ <name>Append</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>Overwrite</name>
+ <key>False</key>
+ </option>
+ </param>
<check>$vlen &gt; 0</check>
<sink>
diff --git a/gr-blocks/grc/blocks_stream_to_tagged_stream.xml b/gr-blocks/grc/blocks_stream_to_tagged_stream.xml
new file mode 100644
index 0000000000..cf35e7554c
--- /dev/null
+++ b/gr-blocks/grc/blocks_stream_to_tagged_stream.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<block>
+ <name>Stream to Tagged Stream</name>
+ <key>blocks_stream_to_tagged_stream</key>
+ <import>from gnuradio import blocks</import>
+ <make>blocks.stream_to_tagged_stream($type.size, $vlen, $packet_len, $len_tag_key)</make>
+ <param>
+ <name>Type</name>
+ <key>type</key>
+ <type>enum</type>
+ <option>
+ <name>Complex</name>
+ <key>complex</key>
+ <opt>size:gr.sizeof_gr_complex</opt>
+ </option>
+ <option>
+ <name>Float</name>
+ <key>float</key>
+ <opt>size:gr.sizeof_float</opt>
+ </option>
+ <option>
+ <name>Int</name>
+ <key>int</key>
+ <opt>size:gr.sizeof_int</opt>
+ </option>
+ <option>
+ <name>Short</name>
+ <key>short</key>
+ <opt>size:gr.sizeof_short</opt>
+ </option>
+ <option>
+ <name>Byte</name>
+ <key>byte</key>
+ <opt>size:gr.sizeof_char</opt>
+ </option>
+ </param>
+ <param>
+ <name>Vector Length</name>
+ <key>vlen</key>
+ <value>1</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Packet Length</name>
+ <key>packet_len</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Length Tag Key</name>
+ <key>len_tag_key</key>
+ <value>"packet_len"</value>
+ <type>string</type>
+ </param>
+ <sink>
+ <name>in</name>
+ <type>$type</type>
+ <vlen>$vlen</vlen>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>$type</type>
+ <vlen>$vlen</vlen>
+ </source>
+</block>
diff --git a/gr-blocks/include/gnuradio/blocks/CMakeLists.txt b/gr-blocks/include/gnuradio/blocks/CMakeLists.txt
index de52e3e3e7..83338b771d 100644
--- a/gr-blocks/include/gnuradio/blocks/CMakeLists.txt
+++ b/gr-blocks/include/gnuradio/blocks/CMakeLists.txt
@@ -173,7 +173,7 @@ install(FILES
plateau_detector_fb.h
probe_rate.h
regenerate_bb.h
- repack_bits_bb.h
+ repack_bits_bb.h
repeat.h
rms_cf.h
rms_ff.h
@@ -183,6 +183,7 @@ install(FILES
socket_pdu.h
stream_mux.h
stream_to_streams.h
+ stream_to_tagged_stream.h
stream_to_vector.h
streams_to_stream.h
streams_to_vector.h
diff --git a/gr-blocks/include/gnuradio/blocks/file_sink.h b/gr-blocks/include/gnuradio/blocks/file_sink.h
index c1041683d3..177964682d 100644
--- a/gr-blocks/include/gnuradio/blocks/file_sink.h
+++ b/gr-blocks/include/gnuradio/blocks/file_sink.h
@@ -45,8 +45,10 @@ namespace gr {
* \brief Make a file sink.
* \param itemsize size of the input data items.
* \param filename name of the file to open and write output to.
+ * \param append if true, data is appended to the file instead of
+ * overwriting the initial content.
*/
- static sptr make(size_t itemsize, const char *filename);
+ static sptr make(size_t itemsize, const char *filename, bool append=false);
};
} /* namespace blocks */
diff --git a/gr-blocks/include/gnuradio/blocks/file_sink_base.h b/gr-blocks/include/gnuradio/blocks/file_sink_base.h
index 812da6dfae..253b5ea122 100644
--- a/gr-blocks/include/gnuradio/blocks/file_sink_base.h
+++ b/gr-blocks/include/gnuradio/blocks/file_sink_base.h
@@ -42,9 +42,10 @@ namespace gr {
bool d_is_binary;
boost::mutex d_mutex;
bool d_unbuffered;
+ bool d_append;
protected:
- file_sink_base(const char *filename, bool is_binary);
+ file_sink_base(const char *filename, bool is_binary, bool append);
public:
file_sink_base() {}
diff --git a/gr-blocks/include/gnuradio/blocks/stream_to_tagged_stream.h b/gr-blocks/include/gnuradio/blocks/stream_to_tagged_stream.h
new file mode 100644
index 0000000000..ccc85240c1
--- /dev/null
+++ b/gr-blocks/include/gnuradio/blocks/stream_to_tagged_stream.h
@@ -0,0 +1,62 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_BLOCKS_STREAM_TO_TAGGED_STREAM_H
+#define INCLUDED_BLOCKS_STREAM_TO_TAGGED_STREAM_H
+
+#include <gnuradio/blocks/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+ namespace blocks {
+
+ /*!
+ * \brief Converts a regular stream into a tagged stream.
+ * \ingroup blocks
+ *
+ * All this block does is add length tags in regular intervals.
+ * It can be used to connect a regular stream to a gr::tagged_stream_block.
+ */
+ class BLOCKS_API stream_to_tagged_stream : virtual public gr::sync_block
+ {
+ public:
+ typedef boost::shared_ptr<stream_to_tagged_stream> sptr;
+
+ /*!
+ * \param itemsize Item size
+ * \param vlen Vector length of the input items. Note that one vector is one item.
+ * \param packet_len Number of items per tagged stream packet. One tag is written every \p packet_len items.
+ * \param len_tag_key Key of the length tag.
+ */
+ static sptr make(
+ size_t itemsize,
+ int vlen,
+ unsigned packet_len,
+ const std::string &len_tag_key
+ );
+ };
+
+ } // namespace blocks
+} // namespace gr
+
+#endif /* INCLUDED_BLOCKS_STREAM_TO_TAGGED_STREAM_H */
+
diff --git a/gr-blocks/lib/CMakeLists.txt b/gr-blocks/lib/CMakeLists.txt
index 1c7bd80ae0..6eded4a273 100644
--- a/gr-blocks/lib/CMakeLists.txt
+++ b/gr-blocks/lib/CMakeLists.txt
@@ -225,6 +225,7 @@ list(APPEND gr_blocks_sources
stream_mux_impl.cc
stream_pdu_base.cc
stream_to_streams_impl.cc
+ stream_to_tagged_stream_impl.cc
stream_to_vector_impl.cc
streams_to_stream_impl.cc
streams_to_vector_impl.cc
@@ -237,6 +238,7 @@ list(APPEND gr_blocks_sources
transcendental_impl.cc
tcp_connection.cc
tuntap_pdu_impl.cc
+ tag_gate_impl.cc
tagged_stream_mux_impl.cc
uchar_array_to_float.cc
uchar_to_float_impl.cc
@@ -285,8 +287,7 @@ list(APPEND blocks_libs
${LOG4CPP_LIBRARIES}
)
-add_library(gnuradio-blocks SHARED ${gr_blocks_sources}
- tag_gate_impl.cc)
+add_library(gnuradio-blocks SHARED ${gr_blocks_sources})
add_dependencies(gnuradio-blocks blocks_generated_includes)
target_link_libraries(gnuradio-blocks ${blocks_libs})
diff --git a/gr-blocks/lib/file_sink_base.cc b/gr-blocks/lib/file_sink_base.cc
index 42e2eae528..81bc94f351 100644
--- a/gr-blocks/lib/file_sink_base.cc
+++ b/gr-blocks/lib/file_sink_base.cc
@@ -53,8 +53,8 @@
namespace gr {
namespace blocks {
- file_sink_base::file_sink_base(const char *filename, bool is_binary)
- : d_fp(0), d_new_fp(0), d_updated(false), d_is_binary(is_binary)
+ file_sink_base::file_sink_base(const char *filename, bool is_binary, bool append)
+ : d_fp(0), d_new_fp(0), d_updated(false), d_is_binary(is_binary), d_append(append)
{
if (!open(filename))
throw std::runtime_error ("can't open file");
@@ -76,9 +76,13 @@ namespace gr {
// we use the open system call to get access to the O_LARGEFILE flag.
int fd;
- if((fd = ::open(filename,
- O_WRONLY|O_CREAT|O_TRUNC|OUR_O_LARGEFILE|OUR_O_BINARY,
- 0664)) < 0){
+ int flags;
+ if(d_append) {
+ flags = O_WRONLY|O_CREAT|O_APPEND|OUR_O_LARGEFILE|OUR_O_BINARY;
+ } else {
+ flags = O_WRONLY|O_CREAT|O_TRUNC|OUR_O_LARGEFILE|OUR_O_BINARY;
+ }
+ if((fd = ::open(filename, flags, 0664)) < 0){
perror(filename);
return false;
}
diff --git a/gr-blocks/lib/file_sink_impl.cc b/gr-blocks/lib/file_sink_impl.cc
index e78576e288..ab36dcd4e6 100644
--- a/gr-blocks/lib/file_sink_impl.cc
+++ b/gr-blocks/lib/file_sink_impl.cc
@@ -32,17 +32,17 @@ namespace gr {
namespace blocks {
file_sink::sptr
- file_sink::make(size_t itemsize, const char *filename)
+ file_sink::make(size_t itemsize, const char *filename, bool append)
{
return gnuradio::get_initial_sptr
- (new file_sink_impl(itemsize, filename));
+ (new file_sink_impl(itemsize, filename, append));
}
- file_sink_impl::file_sink_impl(size_t itemsize, const char *filename)
+ file_sink_impl::file_sink_impl(size_t itemsize, const char *filename, bool append)
: sync_block("file_sink",
io_signature::make(1, 1, itemsize),
io_signature::make(0, 0, 0)),
- file_sink_base(filename, true),
+ file_sink_base(filename, true, append),
d_itemsize(itemsize)
{
}
diff --git a/gr-blocks/lib/file_sink_impl.h b/gr-blocks/lib/file_sink_impl.h
index f86009419e..9e0c81569b 100644
--- a/gr-blocks/lib/file_sink_impl.h
+++ b/gr-blocks/lib/file_sink_impl.h
@@ -34,7 +34,7 @@ namespace gr {
size_t d_itemsize;
public:
- file_sink_impl(size_t itemsize, const char *filename);
+ file_sink_impl(size_t itemsize, const char *filename, bool append=false);
~file_sink_impl();
int work(int noutput_items,
diff --git a/gr-blocks/lib/pdu_to_tagged_stream_impl.cc b/gr-blocks/lib/pdu_to_tagged_stream_impl.cc
index 504e69937a..509c1fabb3 100644
--- a/gr-blocks/lib/pdu_to_tagged_stream_impl.cc
+++ b/gr-blocks/lib/pdu_to_tagged_stream_impl.cc
@@ -89,14 +89,13 @@ namespace gr {
// if we recieved metadata add it as tags
if (!pmt::eq(meta, pmt::PMT_NIL) ) {
- pmt::pmt_t pair(pmt::dict_keys(meta));
-
- while (!pmt::eq(pair, pmt::PMT_NIL) ) {
- pmt::pmt_t k(pmt::cdr(pair));
- pmt::pmt_t v(pmt::dict_ref(meta, k, pmt::PMT_NIL));
- add_item_tag(0, offset, k, v, pmt::mp(alias()));
- }
+ pmt::pmt_t klist(pmt::dict_keys(meta));
+ for(size_t i=0; i<pmt::length(klist); i++){
+ pmt::pmt_t k(pmt::nth(i, klist));
+ pmt::pmt_t v(pmt::dict_ref(meta, k, pmt::PMT_NIL));
+ add_item_tag(0, offset, k, v, pmt::mp(alias()));
}
+ }
// copy vector output
size_t ncopy = std::min((size_t)noutput_items, (size_t)pmt::length(vect));
diff --git a/gr-blocks/lib/stream_to_tagged_stream_impl.cc b/gr-blocks/lib/stream_to_tagged_stream_impl.cc
new file mode 100644
index 0000000000..08395bf653
--- /dev/null
+++ b/gr-blocks/lib/stream_to_tagged_stream_impl.cc
@@ -0,0 +1,74 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2013 <+YOU OR YOUR COMPANY+>.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <cstring>
+#include <gnuradio/io_signature.h>
+#include "stream_to_tagged_stream_impl.h"
+
+namespace gr {
+ namespace blocks {
+
+ stream_to_tagged_stream::sptr
+ stream_to_tagged_stream::make(size_t itemsize, int vlen, unsigned packet_len, const std::string &len_tag_key)
+ {
+ return gnuradio::get_initial_sptr
+ (new stream_to_tagged_stream_impl(itemsize, vlen, packet_len, len_tag_key));
+ }
+
+ stream_to_tagged_stream_impl::stream_to_tagged_stream_impl(size_t itemsize, int vlen, unsigned packet_len, const std::string &len_tag_key)
+ : gr::sync_block("stream_to_tagged_stream",
+ gr::io_signature::make(1, 1, itemsize * vlen),
+ gr::io_signature::make(1, 1, itemsize * vlen)),
+ d_itemsize(itemsize * vlen),
+ d_packet_len(packet_len),
+ d_packet_len_pmt(pmt::from_long(packet_len)),
+ d_len_tag_key(pmt::string_to_symbol(len_tag_key)),
+ d_next_tag_pos(0)
+ {}
+
+ stream_to_tagged_stream_impl::~stream_to_tagged_stream_impl()
+ {
+ }
+
+ int
+ stream_to_tagged_stream_impl::work(int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items)
+ {
+ const unsigned char *in = (const unsigned char *) input_items[0];
+ unsigned char *out = (unsigned char *) output_items[0];
+ // Copy data
+ memcpy(out, in, noutput_items * d_itemsize);
+ // Add tags every d_packet_len
+ while(d_next_tag_pos < nitems_written(0) + noutput_items) {
+ add_item_tag(0, d_next_tag_pos, d_len_tag_key, d_packet_len_pmt);
+ d_next_tag_pos += d_packet_len;
+ }
+
+ return noutput_items;
+ }
+
+ } /* namespace blocks */
+} /* namespace gr */
+
diff --git a/gr-blocks/lib/stream_to_tagged_stream_impl.h b/gr-blocks/lib/stream_to_tagged_stream_impl.h
new file mode 100644
index 0000000000..106d90b86a
--- /dev/null
+++ b/gr-blocks/lib/stream_to_tagged_stream_impl.h
@@ -0,0 +1,53 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_BLOCKS_STREAM_TO_TAGGED_STREAM_IMPL_H
+#define INCLUDED_BLOCKS_STREAM_TO_TAGGED_STREAM_IMPL_H
+
+#include <gnuradio/blocks/stream_to_tagged_stream.h>
+
+namespace gr {
+ namespace blocks {
+
+ class stream_to_tagged_stream_impl : public stream_to_tagged_stream
+ {
+ private:
+ size_t d_itemsize;
+ unsigned d_packet_len;
+ pmt::pmt_t d_packet_len_pmt;
+ pmt::pmt_t d_len_tag_key;
+ uint64_t d_next_tag_pos;
+
+ public:
+ stream_to_tagged_stream_impl(size_t itemsize, int vlen, unsigned packet_len, const std::string &tag_len_key);
+ ~stream_to_tagged_stream_impl();
+
+ int work(int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
+ };
+
+ } // namespace blocks
+} // namespace gr
+
+#endif /* INCLUDED_BLOCKS_STREAM_TO_TAGGED_STREAM_IMPL_H */
+
diff --git a/gr-blocks/python/blocks/qa_stream_to_tagged_stream.py b/gr-blocks/python/blocks/qa_stream_to_tagged_stream.py
new file mode 100755
index 0000000000..0d3f503abd
--- /dev/null
+++ b/gr-blocks/python/blocks/qa_stream_to_tagged_stream.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright 202013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+from gnuradio import gr, gr_unittest
+from gnuradio import blocks
+
+class qa_stream_to_tagged_stream (gr_unittest.TestCase):
+
+ def setUp (self):
+ self.tb = gr.top_block ()
+
+ def tearDown (self):
+ self.tb = None
+
+ def test_001_t (self):
+ src_data = (1, ) * 50
+ packet_len = 10L
+ len_tag_key = 'packet_len'
+ src = blocks.vector_source_f(src_data, False, 1)
+ tagger = blocks.stream_to_tagged_stream(gr.sizeof_float, 1, packet_len, len_tag_key)
+ sink = blocks.vector_sink_f()
+ self.tb.connect(src, tagger, sink)
+ self.tb.run ()
+ self.assertEqual(sink.data(), src_data)
+ tags = [gr.tag_to_python(x) for x in sink.tags()]
+ tags = sorted([(x.offset, x.key, x.value) for x in tags])
+ expected_tags = [(long(pos), 'packet_len', packet_len) for pos in range(0, 50, 10) ]
+ self.assertEqual(tags, expected_tags)
+
+
+if __name__ == '__main__':
+ gr_unittest.run(qa_stream_to_tagged_stream, "qa_stream_to_tagged_stream.xml")
+
diff --git a/gr-blocks/swig/blocks_swig1.i b/gr-blocks/swig/blocks_swig1.i
index 431062e454..c87b4df03e 100644
--- a/gr-blocks/swig/blocks_swig1.i
+++ b/gr-blocks/swig/blocks_swig1.i
@@ -30,6 +30,7 @@
#include "gnuradio/blocks/skiphead.h"
#include "gnuradio/blocks/stream_mux.h"
#include "gnuradio/blocks/stream_to_streams.h"
+#include "gnuradio/blocks/stream_to_tagged_stream.h"
#include "gnuradio/blocks/stream_to_vector.h"
#include "gnuradio/blocks/streams_to_stream.h"
#include "gnuradio/blocks/streams_to_vector.h"
@@ -61,6 +62,7 @@
%include "gnuradio/blocks/skiphead.h"
%include "gnuradio/blocks/stream_mux.h"
%include "gnuradio/blocks/stream_to_streams.h"
+%include "gnuradio/blocks/stream_to_tagged_stream.h"
%include "gnuradio/blocks/stream_to_vector.h"
%include "gnuradio/blocks/streams_to_stream.h"
%include "gnuradio/blocks/streams_to_vector.h"
@@ -91,6 +93,7 @@
GR_SWIG_BLOCK_MAGIC2(blocks, skiphead);
GR_SWIG_BLOCK_MAGIC2(blocks, stream_mux);
GR_SWIG_BLOCK_MAGIC2(blocks, stream_to_streams);
+GR_SWIG_BLOCK_MAGIC2(blocks, stream_to_tagged_stream);
GR_SWIG_BLOCK_MAGIC2(blocks, stream_to_vector);
GR_SWIG_BLOCK_MAGIC2(blocks, streams_to_stream);
GR_SWIG_BLOCK_MAGIC2(blocks, streams_to_vector);
diff --git a/gr-channels/grc/channels_channel_model.xml b/gr-channels/grc/channels_channel_model.xml
index fa881a10b5..909301de94 100644
--- a/gr-channels/grc/channels_channel_model.xml
+++ b/gr-channels/grc/channels_channel_model.xml
@@ -15,6 +15,7 @@
epsilon=$epsilon,
taps=$taps,
noise_seed=$seed,
+ block_tags=$block_tags
)</make>
<callback>set_noise_voltage($noise_voltage)</callback>
<callback>set_frequency_offset($freq_offset)</callback>
@@ -50,6 +51,23 @@
<value>0</value>
<type>int</type>
</param>
+ <param>
+ <name>Block Tag Propagation</name>
+ <key>block_tags</key>
+ <value>False</value>
+ <type>enum</type>
+ <hide>$block_tags.hide_block</hide>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ <opt>hide_block:</opt>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ <opt>hide_block:part</opt>
+ </option>
+ </param>
<sink>
<name>in</name>
<type>complex</type>
diff --git a/gr-channels/grc/channels_channel_model2.xml b/gr-channels/grc/channels_channel_model2.xml
index e8162f53d4..85355a1029 100644
--- a/gr-channels/grc/channels_channel_model2.xml
+++ b/gr-channels/grc/channels_channel_model2.xml
@@ -14,6 +14,7 @@
epsilon=$epsilon,
taps=$taps,
noise_seed=$seed,
+ block_tags=$block_tags
)</make>
<callback>set_noise_voltage($noise_voltage)</callback>
<callback>set_taps($taps)</callback>
@@ -42,6 +43,23 @@
<value>0</value>
<type>int</type>
</param>
+ <param>
+ <name>Block Tag Propagation</name>
+ <key>block_tags</key>
+ <value>False</value>
+ <type>enum</type>
+ <hide>$block_tags.hide_block</hide>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ <opt>hide_block:</opt>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ <opt>hide_block:part</opt>
+ </option>
+ </param>
<sink>
<name>in</name>
<type>complex</type>
diff --git a/gr-channels/include/gnuradio/channels/channel_model.h b/gr-channels/include/gnuradio/channels/channel_model.h
index 8b533ac7da..6a1e4a08cb 100644
--- a/gr-channels/include/gnuradio/channels/channel_model.h
+++ b/gr-channels/include/gnuradio/channels/channel_model.h
@@ -43,7 +43,10 @@ namespace gr {
* the AWGN noise source.
*
* Multipath can be approximated in this model by using a FIR
- * filter representation of a multipath delay profile..
+ * filter representation of a multipath delay profile.
+ *
+ * To simulate a channel with time-variant channel, use a
+ * gr::channels::channel_model2.
*/
class CHANNELS_API channel_model : virtual public hier_block2
{
@@ -64,12 +67,14 @@ namespace gr {
* the transmitter and receiver. 1.0 is no difference.
* \param taps Taps of a FIR filter to emulate a multipath delay profile.
* \param noise_seed A random number generator seed for the noise source.
+ * \param block_tags If true, tags will not be able to propagate through this block.
*/
static sptr make(double noise_voltage=0.0,
double frequency_offset=0.0,
double epsilon=1.0,
const std::vector<gr_complex> &taps=std::vector<gr_complex>(1,1),
- double noise_seed=0);
+ double noise_seed=0,
+ bool block_tags=false);
virtual void set_noise_voltage(double noise_voltage) = 0;
virtual void set_frequency_offset(double frequency_offset) = 0;
diff --git a/gr-channels/include/gnuradio/channels/channel_model2.h b/gr-channels/include/gnuradio/channels/channel_model2.h
index 05084931ee..6c52f34d81 100644
--- a/gr-channels/include/gnuradio/channels/channel_model2.h
+++ b/gr-channels/include/gnuradio/channels/channel_model2.h
@@ -81,11 +81,13 @@ namespace gr {
* the transmitter and receiver. 1.0 is no difference.
* \param taps Taps of a FIR filter to emulate a multipath delay profile.
* \param noise_seed A random number generator seed for the noise source.
+ * \param block_tags If true, tags will not be able to propagate through this block.
*/
static sptr make(double noise_voltage=0.0,
double epsilon=1.0,
const std::vector<gr_complex> &taps=std::vector<gr_complex>(1,1),
- double noise_seed=0);
+ double noise_seed=0,
+ bool block_tags=false);
virtual void set_noise_voltage(double noise_voltage) = 0;
virtual void set_taps(const std::vector<gr_complex> &taps) = 0;
diff --git a/gr-channels/lib/channel_model2_impl.cc b/gr-channels/lib/channel_model2_impl.cc
index 13eb033def..7533871de2 100644
--- a/gr-channels/lib/channel_model2_impl.cc
+++ b/gr-channels/lib/channel_model2_impl.cc
@@ -33,20 +33,23 @@ namespace gr {
channel_model2::make(double noise_voltage,
double epsilon,
const std::vector<gr_complex> &taps,
- double noise_seed)
+ double noise_seed,
+ bool block_tags)
{
return gnuradio::get_initial_sptr
(new channel_model2_impl(noise_voltage,
epsilon,
taps,
- noise_seed));
+ noise_seed,
+ block_tags));
}
// Hierarchical block constructor
channel_model2_impl::channel_model2_impl(double noise_voltage,
double epsilon,
const std::vector<gr_complex> &taps,
- double noise_seed)
+ double noise_seed,
+ bool block_tags)
: hier_block2("channel_model2",
io_signature::make2(3, 3, sizeof(gr_complex), sizeof(float)),
io_signature::make(1, 1, sizeof(gr_complex)))
@@ -78,6 +81,10 @@ namespace gr {
connect(d_mixer_offset, 0, d_noise_adder, 1);
connect(d_noise, 0, d_noise_adder, 0);
connect(d_noise_adder, 0, self(), 0);
+
+ if (block_tags) {
+ d_timing_offset->set_tag_propagation_policy(gr::block::TPP_DONT);
+ }
}
channel_model2_impl::~channel_model2_impl()
diff --git a/gr-channels/lib/channel_model2_impl.h b/gr-channels/lib/channel_model2_impl.h
index db2a667f9c..3bf1adb44e 100644
--- a/gr-channels/lib/channel_model2_impl.h
+++ b/gr-channels/lib/channel_model2_impl.h
@@ -55,7 +55,8 @@ namespace gr {
channel_model2_impl(double noise_voltage,
double epsilon,
const std::vector<gr_complex> &taps,
- double noise_seed);
+ double noise_seed,
+ bool block_tags);
~channel_model2_impl();
diff --git a/gr-channels/lib/channel_model_impl.cc b/gr-channels/lib/channel_model_impl.cc
index b232f9b235..7db4e6aa5c 100644
--- a/gr-channels/lib/channel_model_impl.cc
+++ b/gr-channels/lib/channel_model_impl.cc
@@ -32,14 +32,16 @@ namespace gr {
double frequency_offset,
double epsilon,
const std::vector<gr_complex> &taps,
- double noise_seed)
+ double noise_seed,
+ bool block_tags)
{
return gnuradio::get_initial_sptr
(new channel_model_impl(noise_voltage,
frequency_offset,
epsilon,
taps,
- noise_seed));
+ noise_seed,
+ block_tags));
}
// Hierarchical block constructor
@@ -47,7 +49,9 @@ namespace gr {
double frequency_offset,
double epsilon,
const std::vector<gr_complex> &taps,
- double noise_seed)
+ double noise_seed,
+ bool block_tags
+ )
: hier_block2("channel_model",
io_signature::make(1, 1, sizeof(gr_complex)),
io_signature::make(1, 1, sizeof(gr_complex)))
@@ -75,6 +79,10 @@ namespace gr {
connect(d_mixer_offset, 0, d_noise_adder, 1);
connect(d_noise, 0, d_noise_adder, 0);
connect(d_noise_adder, 0, self(), 0);
+
+ if (block_tags) {
+ d_timing_offset->set_tag_propagation_policy(gr::block::TPP_DONT);
+ }
}
channel_model_impl::~channel_model_impl()
diff --git a/gr-channels/lib/channel_model_impl.h b/gr-channels/lib/channel_model_impl.h
index da00e98da2..3faf6c3bbe 100644
--- a/gr-channels/lib/channel_model_impl.h
+++ b/gr-channels/lib/channel_model_impl.h
@@ -54,7 +54,8 @@ namespace gr {
double frequency_offset,
double epsilon,
const std::vector<gr_complex> &taps,
- double noise_seed);
+ double noise_seed,
+ bool block_tags);
~channel_model_impl();
diff --git a/gr-digital/examples/ofdm/rx_ofdm.grc b/gr-digital/examples/ofdm/rx_ofdm.grc
index 24704ec40d..5a65ec8b17 100644
--- a/gr-digital/examples/ofdm/rx_ofdm.grc
+++ b/gr-digital/examples/ofdm/rx_ofdm.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Sun Oct 6 15:43:51 2013</timestamp>
+ <timestamp>Sun Oct 27 16:24:42 2013</timestamp>
<block>
<key>options</key>
<param>
@@ -64,7 +64,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>header_formatter</value>
+ <value>payload_mod</value>
</param>
<param>
<key>_enabled</key>
@@ -72,11 +72,11 @@
</param>
<param>
<key>value</key>
- <value>digital.packet_header_ofdm(occupied_carriers, 1, "packet_len", length_tag_key)</value>
+ <value>digital.constellation_qpsk()</value>
</param>
<param>
<key>_coordinate</key>
- <value>(811, -1)</value>
+ <value>(663, 1)</value>
</param>
<param>
<key>_rotation</key>
@@ -87,7 +87,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>length_tag_key</value>
+ <value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
@@ -95,11 +95,11 @@
</param>
<param>
<key>value</key>
- <value>"frame_len"</value>
+ <value>10000</value>
</param>
<param>
<key>_coordinate</key>
- <value>(367, -1)</value>
+ <value>(170, 65)</value>
</param>
<param>
<key>_rotation</key>
@@ -110,7 +110,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>sync_word1</value>
+ <value>header_equalizer</value>
</param>
<param>
<key>_enabled</key>
@@ -118,11 +118,11 @@
</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>
+ <value>digital.ofdm_equalizer_simpledfe(fft_len, header_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(313, 64)</value>
+ <value>(931, 69)</value>
</param>
<param>
<key>_rotation</key>
@@ -133,7 +133,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>sync_word2</value>
+ <value>payload_equalizer</value>
</param>
<param>
<key>_enabled</key>
@@ -141,11 +141,11 @@
</param>
<param>
<key>value</key>
- <value>(0, 0, 0, 0, 0, 1, 1, -1.0, -1, 1.0, 1, 1.0, -1, -1.0, -1, 1.0, 1, -1.0, 1, 1.0, 1, -1.0, -1, -1.0, -1, 1.0, -1, 1.0, -1, 1.0, 1, -1.0, 0, 1.0, 1, -1.0, 1, 1.0, -1, -1.0, 1, -1.0, -1, -1.0, 1, 1.0, 1, -1.0, 1, 1.0, -1, 1.0, -1, -1.0, -1, 1.0, 1, -1.0, 0, 0, 0, 0, 0, 0)</value>
+ <value>digital.ofdm_equalizer_simpledfe(fft_len, payload_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols, 1)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(457, 64)</value>
+ <value>(1112, 73)</value>
</param>
<param>
<key>_rotation</key>
@@ -156,7 +156,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>pilot_symbols</value>
+ <value>sync_word2</value>
</param>
<param>
<key>_enabled</key>
@@ -164,11 +164,11 @@
</param>
<param>
<key>value</key>
- <value>((1, 1, 1, -1,),)</value>
+ <value>[0j, 0j, 0j, 0j, 0j, 0j, (-1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), (1+0j), (1+0j), (1 +0j), (1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), 0j, (1+0j), (-1+0j), (1+0j), (1+0j), (1+0j), (-1+0j), (1+0j), (1+0j), (1+0j), (-1+0j), (1+0j), (1+0j), (1+0j), (1+0j), (-1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (1+0j), (-1+0j), (1+0j), (-1+0j), (-1+0j), (-1+0j), (-1+0j), 0j, 0j, 0j, 0j, 0j]</value>
</param>
<param>
<key>_coordinate</key>
- <value>(875, 65)</value>
+ <value>(399, 66)</value>
</param>
<param>
<key>_rotation</key>
@@ -179,7 +179,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>pilot_carriers</value>
+ <value>sync_word1</value>
</param>
<param>
<key>_enabled</key>
@@ -187,11 +187,11 @@
</param>
<param>
<key>value</key>
- <value>((-21, -7, 7, 21,),)</value>
+ <value>[0., 0., 0., 0., 0., 0., 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 0., 0., 0., 0., 0.]</value>
</param>
<param>
<key>_coordinate</key>
- <value>(751, 64)</value>
+ <value>(255, 67)</value>
</param>
<param>
<key>_rotation</key>
@@ -202,7 +202,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>occupied_carriers</value>
+ <value>fft_len</value>
</param>
<param>
<key>_enabled</key>
@@ -210,11 +210,11 @@
</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>
+ <value>64</value>
</param>
<param>
<key>_coordinate</key>
- <value>(598, 64)</value>
+ <value>(301, -1)</value>
</param>
<param>
<key>_rotation</key>
@@ -248,7 +248,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>payload_mod</value>
+ <value>packet_len</value>
</param>
<param>
<key>_enabled</key>
@@ -256,11 +256,11 @@
</param>
<param>
<key>value</key>
- <value>digital.constellation_qpsk()</value>
+ <value>96</value>
</param>
<param>
<key>_coordinate</key>
- <value>(648, 0)</value>
+ <value>(1034, 0)</value>
</param>
<param>
<key>_rotation</key>
@@ -271,7 +271,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>fft_len</value>
+ <value>pilot_carriers</value>
</param>
<param>
<key>_enabled</key>
@@ -279,11 +279,11 @@
</param>
<param>
<key>value</key>
- <value>64</value>
+ <value>((-21, -7, 7, 21,),)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(301, -1)</value>
+ <value>(692, 70)</value>
</param>
<param>
<key>_rotation</key>
@@ -294,7 +294,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>samp_rate</value>
+ <value>pilot_symbols</value>
</param>
<param>
<key>_enabled</key>
@@ -302,11 +302,11 @@
</param>
<param>
<key>value</key>
- <value>100000</value>
+ <value>((1, 1, 1, -1,),)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(218, 64)</value>
+ <value>(813, 70)</value>
</param>
<param>
<key>_rotation</key>
@@ -314,22 +314,22 @@
</param>
</block>
<block>
- <key>import</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>import_1</value>
+ <value>occupied_carriers</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>import</key>
- <value>from gnuradio.digital.utils import tagged_streams</value>
+ <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>(163, 0)</value>
+ <value>(541, 70)</value>
</param>
<param>
<key>_rotation</key>
@@ -337,22 +337,22 @@
</param>
</block>
<block>
- <key>virtual_sink</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>virtual_sink_0_0</value>
+ <value>length_tag_key</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>stream_id</key>
- <value>Payload Stream</value>
+ <key>value</key>
+ <value>"frame_len"</value>
</param>
<param>
<key>_coordinate</key>
- <value>(968, 374)</value>
+ <value>(367, -1)</value>
</param>
<param>
<key>_rotation</key>
@@ -360,22 +360,22 @@
</param>
</block>
<block>
- <key>virtual_sink</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>virtual_sink_0</value>
+ <value>packet_length_tag_key</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>stream_id</key>
- <value>Header Stream</value>
+ <key>value</key>
+ <value>"packet_len"</value>
</param>
<param>
<key>_coordinate</key>
- <value>(969, 305)</value>
+ <value>(1132, 0)</value>
</param>
<param>
<key>_rotation</key>
@@ -383,26 +383,80 @@
</param>
</block>
<block>
- <key>digital_ofdm_sync_sc_cfb</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>digital_ofdm_sync_sc_cfb_0</value>
+ <value>header_formatter</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>fft_len</key>
- <value>fft_len</value>
+ <key>value</key>
+ <value>digital.packet_header_ofdm(occupied_carriers, n_syms=1, len_tag_key=packet_length_tag_key, frame_len_tag_key=length_tag_key, bits_per_header_sym=header_mod.bits_per_symbol(), bits_per_payload_sym=payload_mod.bits_per_symbol(), scramble_header=False)</value>
</param>
<param>
- <key>cp_len</key>
- <value>fft_len/4</value>
+ <key>_coordinate</key>
+ <value>(855, 0)</value>
</param>
<param>
- <key>use_even_carriers</key>
- <value>False</value>
+ <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>analog_random_source_x</key>
+ <param>
+ <key>id</key>
+ <value>analog_random_source_x_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>min</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>max</key>
+ <value>255</value>
+ </param>
+ <param>
+ <key>num_samps</key>
+ <value>1000</value>
+ </param>
+ <param>
+ <key>repeat</key>
+ <value>True</value>
</param>
<param>
<key>affinity</key>
@@ -414,7 +468,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(244, 137)</value>
+ <value>(2, 167)</value>
</param>
<param>
<key>_rotation</key>
@@ -422,10 +476,41 @@
</param>
</block>
<block>
- <key>blocks_multiply_xx</key>
+ <key>analog_frequency_modulator_fc</key>
<param>
<key>id</key>
- <value>blocks_multiply_xx_0</value>
+ <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>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(920, 171)</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>
@@ -436,8 +521,8 @@
<value>complex</value>
</param>
<param>
- <key>num_inputs</key>
- <value>2</value>
+ <key>samples_per_second</key>
+ <value>samp_rate</value>
</param>
<param>
<key>vlen</key>
@@ -453,7 +538,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(798, 137)</value>
+ <value>(440, 187)</value>
</param>
<param>
<key>_rotation</key>
@@ -496,7 +581,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(398, 235)</value>
+ <value>(637, 294)</value>
</param>
<param>
<key>_rotation</key>
@@ -504,42 +589,26 @@
</param>
</block>
<block>
- <key>digital_header_payload_demux</key>
+ <key>blocks_multiply_xx</key>
<param>
<key>id</key>
- <value>digital_header_payload_demux_0</value>
+ <value>blocks_multiply_xx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>header_len</key>
- <value>3</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_key</value>
- </param>
- <param>
- <key>trigger_tag_key</key>
- <value>""</value>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
- <key>output_symbols</key>
- <value>True</value>
+ <key>num_inputs</key>
+ <value>2</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>affinity</key>
@@ -551,7 +620,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(678, 298)</value>
+ <value>(1117, 265)</value>
</param>
<param>
<key>_rotation</key>
@@ -559,37 +628,25 @@
</param>
</block>
<block>
- <key>digital_ofdm_chanest_vcvc</key>
+ <key>digital_ofdm_sync_sc_cfb</key>
<param>
<key>id</key>
- <value>digital_ofdm_chanest_vcvc_1</value>
+ <value>digital_ofdm_sync_sc_cfb_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>sync_symbol1</key>
- <value>sync_word1</value>
- </param>
- <param>
- <key>sync_symbol2</key>
- <value>sync_word2</value>
- </param>
- <param>
- <key>n_data_symbols</key>
- <value>1</value>
- </param>
- <param>
- <key>eq_noise_red_len</key>
- <value>0</value>
+ <key>fft_len</key>
+ <value>fft_len</value>
</param>
<param>
- <key>max_carr_offset</key>
- <value>-1</value>
+ <key>cp_len</key>
+ <value>fft_len/4</value>
</param>
<param>
- <key>force_one_symbol</key>
+ <key>use_even_carriers</key>
<value>False</value>
</param>
<param>
@@ -602,7 +659,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(453, 520)</value>
+ <value>(627, 175)</value>
</param>
<param>
<key>_rotation</key>
@@ -621,7 +678,7 @@
</param>
<param>
<key>header_formatter</key>
- <value>header_formatter.formatter()</value>
+ <value>header_formatter.base()</value>
</param>
<param>
<key>affinity</key>
@@ -633,18 +690,18 @@
</param>
<param>
<key>_coordinate</key>
- <value>(919, 501)</value>
+ <value>(634, 529)</value>
</param>
<param>
<key>_rotation</key>
- <value>90</value>
+ <value>180</value>
</param>
</block>
<block>
<key>digital_constellation_decoder_cb</key>
<param>
<key>id</key>
- <value>digital_constellation_decoder_cb_0_0</value>
+ <value>digital_constellation_decoder_cb_0</value>
</param>
<param>
<key>_enabled</key>
@@ -664,11 +721,11 @@
</param>
<param>
<key>_coordinate</key>
- <value>(449, 702)</value>
+ <value>(903, 530)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
@@ -695,7 +752,7 @@
</param>
<param>
<key>window</key>
- <value></value>
+ <value>()</value>
</param>
<param>
<key>shift</key>
@@ -715,7 +772,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(223, 512)</value>
+ <value>(217, 576)</value>
</param>
<param>
<key>_rotation</key>
@@ -723,10 +780,10 @@
</param>
</block>
<block>
- <key>virtual_source</key>
+ <key>virtual_sink</key>
<param>
<key>id</key>
- <value>virtual_source_0</value>
+ <value>virtual_sink_0</value>
</param>
<param>
<key>_enabled</key>
@@ -738,7 +795,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1, 544)</value>
+ <value>(1098, 414)</value>
</param>
<param>
<key>_rotation</key>
@@ -746,57 +803,30 @@
</param>
</block>
<block>
- <key>analog_frequency_modulator_fc</key>
+ <key>blocks_stream_to_tagged_stream</key>
<param>
<key>id</key>
- <value>analog_frequency_modulator_fc_0</value>
+ <value>blocks_stream_to_tagged_stream_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>sensitivity</key>
- <value>-2.0/fft_len</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(578, 133)</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>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>samples_per_second</key>
- <value>samp_rate</value>
+ <key>packet_len</key>
+ <value>packet_len</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>len_tag_key</key>
+ <value>packet_length_tag_key</value>
</param>
<param>
<key>affinity</key>
@@ -808,7 +838,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(186, 235)</value>
+ <value>(171, 182)</value>
</param>
<param>
<key>_rotation</key>
@@ -816,42 +846,42 @@
</param>
</block>
<block>
- <key>digital_ofdm_serializer_vcc</key>
+ <key>digital_header_payload_demux</key>
<param>
<key>id</key>
- <value>digital_ofdm_serializer_vcc_0</value>
+ <value>digital_header_payload_demux_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>fft_len</key>
+ <key>header_len</key>
+ <value>3</value>
+ </param>
+ <param>
+ <key>items_per_symbol</key>
<value>fft_len</value>
</param>
<param>
- <key>occupied_carriers</key>
- <value>occupied_carriers</value>
+ <key>guard_interval</key>
+ <value>fft_len/4</value>
</param>
<param>
- <key>len_tag_key</key>
+ <key>length_tag_key</key>
<value>length_tag_key</value>
</param>
<param>
- <key>packet_len_tag_key</key>
+ <key>trigger_tag_key</key>
<value>""</value>
</param>
<param>
- <key>symbols_skipped</key>
- <value>0</value>
- </param>
- <param>
- <key>carr_offset_key</key>
- <value>""</value>
+ <key>output_symbols</key>
+ <value>True</value>
</param>
<param>
- <key>input_is_shifted</key>
- <value>True</value>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
<key>affinity</key>
@@ -863,30 +893,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(187, 678)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>virtual_source</key>
- <param>
- <key>id</key>
- <value>virtual_source_0_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>stream_id</key>
- <value>Payload Stream</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(0, 814)</value>
+ <value>(775, 408)</value>
</param>
<param>
<key>_rotation</key>
@@ -894,38 +901,38 @@
</param>
</block>
<block>
- <key>digital_ofdm_frame_equalizer_vcvc</key>
+ <key>digital_ofdm_chanest_vcvc</key>
<param>
<key>id</key>
- <value>digital_ofdm_frame_equalizer_vcvc_0_0</value>
+ <value>digital_ofdm_chanest_vcvc_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>fft_len</key>
- <value>fft_len</value>
+ <key>sync_symbol1</key>
+ <value>sync_word1</value>
</param>
<param>
- <key>cp_len</key>
- <value>fft_len/4</value>
+ <key>sync_symbol2</key>
+ <value>sync_word2</value>
</param>
<param>
- <key>equalizer</key>
- <value>digital.ofdm_equalizer_simpledfe(fft_len, header_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols).base()</value>
+ <key>n_data_symbols</key>
+ <value>1</value>
</param>
<param>
- <key>len_tag_key</key>
- <value>length_tag_key</value>
+ <key>eq_noise_red_len</key>
+ <value>0</value>
</param>
<param>
- <key>propagate_channel_state</key>
- <value>True</value>
+ <key>max_carr_offset</key>
+ <value>3</value>
</param>
<param>
- <key>fixed_frame_len</key>
- <value>1</value>
+ <key>force_one_symbol</key>
+ <value>False</value>
</param>
<param>
<key>affinity</key>
@@ -937,7 +944,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(698, 520)</value>
+ <value>(442, 584)</value>
</param>
<param>
<key>_rotation</key>
@@ -945,61 +952,38 @@
</param>
</block>
<block>
- <key>blocks_tag_debug</key>
+ <key>digital_ofdm_frame_equalizer_vcvc</key>
<param>
<key>id</key>
- <value>blocks_tag_debug_0</value>
+ <value>digital_ofdm_frame_equalizer_vcvc_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>byte</value>
- </param>
- <param>
- <key>name</key>
- <value>Rx Packets</value>
- </param>
- <param>
- <key>num_inputs</key>
- <value>1</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>display</key>
- <value>True</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
+ <key>fft_len</key>
+ <value>fft_len</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(904, 948)</value>
+ <key>cp_len</key>
+ <value>fft_len/4</value>
</param>
<param>
- <key>_rotation</key>
- <value>0</value>
+ <key>equalizer</key>
+ <value>header_equalizer.base()</value>
</param>
- </block>
- <block>
- <key>digital_constellation_decoder_cb</key>
<param>
- <key>id</key>
- <value>digital_constellation_decoder_cb_0</value>
+ <key>len_tag_key</key>
+ <value>length_tag_key</value>
</param>
<param>
- <key>_enabled</key>
+ <key>propagate_channel_state</key>
<value>True</value>
</param>
<param>
- <key>constellation</key>
- <value>payload_mod.base()</value>
+ <key>fixed_frame_len</key>
+ <value>1</value>
</param>
<param>
<key>affinity</key>
@@ -1011,7 +995,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(416, 956)</value>
+ <value>(675, 577)</value>
</param>
<param>
<key>_rotation</key>
@@ -1019,34 +1003,22 @@
</param>
</block>
<block>
- <key>digital_crc32_bb</key>
+ <key>virtual_source</key>
<param>
<key>id</key>
- <value>digital_crc32_bb_0</value>
+ <value>virtual_source_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>check</key>
- <value>False</value>
- </param>
- <param>
- <key>lengthtagname</key>
- <value>"packet_len"</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>stream_id</key>
+ <value>Payload Stream</value>
</param>
<param>
<key>_coordinate</key>
- <value>(663, 948)</value>
+ <value>(0, 732)</value>
</param>
<param>
<key>_rotation</key>
@@ -1057,7 +1029,7 @@
<key>digital_ofdm_serializer_vcc</key>
<param>
<key>id</key>
- <value>digital_ofdm_serializer_vcc_1</value>
+ <value>digital_ofdm_serializer_vcc_header</value>
</param>
<param>
<key>_enabled</key>
@@ -1077,7 +1049,7 @@
</param>
<param>
<key>packet_len_tag_key</key>
- <value>"packet_len"</value>
+ <value></value>
</param>
<param>
<key>symbols_skipped</key>
@@ -1085,7 +1057,7 @@
</param>
<param>
<key>carr_offset_key</key>
- <value>""</value>
+ <value></value>
</param>
<param>
<key>input_is_shifted</key>
@@ -1101,7 +1073,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(778, 790)</value>
+ <value>(914, 584)</value>
</param>
<param>
<key>_rotation</key>
@@ -1109,50 +1081,45 @@
</param>
</block>
<block>
- <key>digital_ofdm_frame_equalizer_vcvc</key>
+ <key>virtual_sink</key>
<param>
<key>id</key>
- <value>digital_ofdm_frame_equalizer_vcvc_1</value>
+ <value>virtual_sink_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>fft_len</key>
- <value>fft_len</value>
+ <key>stream_id</key>
+ <value>Payload Stream</value>
</param>
<param>
- <key>cp_len</key>
- <value>fft_len/4</value>
+ <key>_coordinate</key>
+ <value>(1094, 470)</value>
</param>
<param>
- <key>equalizer</key>
- <value>digital.ofdm_equalizer_simpledfe(fft_len, header_mod.base(), occupied_carriers, pilot_carriers, pilot_symbols, 2).base()</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>virtual_source</key>
<param>
- <key>len_tag_key</key>
- <value>length_tag_key</value>
+ <key>id</key>
+ <value>virtual_source_0</value>
</param>
<param>
- <key>propagate_channel_state</key>
+ <key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>fixed_frame_len</key>
- <value>0</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>stream_id</key>
+ <value>Header Stream</value>
</param>
<param>
<key>_coordinate</key>
- <value>(474, 782)</value>
+ <value>(5, 606)</value>
</param>
<param>
<key>_rotation</key>
@@ -1163,7 +1130,7 @@
<key>fft_vxx</key>
<param>
<key>id</key>
- <value>fft_vxx_0_0</value>
+ <value>fft_vxx_1</value>
</param>
<param>
<key>_enabled</key>
@@ -1203,7 +1170,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(219, 782)</value>
+ <value>(221, 702)</value>
</param>
<param>
<key>_rotation</key>
@@ -1211,662 +1178,342 @@
</param>
</block>
<block>
- <key>uhd_usrp_source</key>
+ <key>digital_ofdm_frame_equalizer_vcvc</key>
<param>
<key>id</key>
- <value>uhd_usrp_source_0</value>
+ <value>digital_ofdm_frame_equalizer_vcvc_1</value>
</param>
<param>
<key>_enabled</key>
- <value>False</value>
- </param>
- <param>
- <key>type</key>
- <value>fc32</value>
- </param>
- <param>
- <key>otw</key>
- <value></value>
- </param>
- <param>
- <key>stream_args</key>
- <value></value>
- </param>
- <param>
- <key>stream_chans</key>
- <value>[]</value>
- </param>
- <param>
- <key>dev_addr</key>
- <value></value>
- </param>
- <param>
- <key>sync</key>
- <value></value>
- </param>
- <param>
- <key>clock_rate</key>
- <value>0.0</value>
- </param>
- <param>
- <key>num_mboards</key>
- <value>1</value>
- </param>
- <param>
- <key>clock_source0</key>
- <value></value>
- </param>
- <param>
- <key>time_source0</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec0</key>
- <value></value>
- </param>
- <param>
- <key>clock_source1</key>
- <value></value>
- </param>
- <param>
- <key>time_source1</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec1</key>
- <value></value>
- </param>
- <param>
- <key>clock_source2</key>
- <value></value>
- </param>
- <param>
- <key>time_source2</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec2</key>
- <value></value>
- </param>
- <param>
- <key>clock_source3</key>
- <value></value>
- </param>
- <param>
- <key>time_source3</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec3</key>
- <value></value>
- </param>
- <param>
- <key>clock_source4</key>
- <value></value>
- </param>
- <param>
- <key>time_source4</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec4</key>
- <value></value>
- </param>
- <param>
- <key>clock_source5</key>
- <value></value>
- </param>
- <param>
- <key>time_source5</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec5</key>
- <value></value>
- </param>
- <param>
- <key>clock_source6</key>
- <value></value>
- </param>
- <param>
- <key>time_source6</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec6</key>
- <value></value>
- </param>
- <param>
- <key>clock_source7</key>
- <value></value>
- </param>
- <param>
- <key>time_source7</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec7</key>
- <value></value>
- </param>
- <param>
- <key>nchan</key>
- <value>1</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>samp_rate</value>
- </param>
- <param>
- <key>center_freq0</key>
- <value>0</value>
- </param>
- <param>
- <key>gain0</key>
- <value>0</value>
- </param>
- <param>
- <key>ant0</key>
- <value></value>
- </param>
- <param>
- <key>bw0</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq1</key>
- <value>0</value>
- </param>
- <param>
- <key>gain1</key>
- <value>0</value>
- </param>
- <param>
- <key>ant1</key>
- <value></value>
- </param>
- <param>
- <key>bw1</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq2</key>
- <value>0</value>
- </param>
- <param>
- <key>gain2</key>
- <value>0</value>
- </param>
- <param>
- <key>ant2</key>
- <value></value>
- </param>
- <param>
- <key>bw2</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq3</key>
- <value>0</value>
- </param>
- <param>
- <key>gain3</key>
- <value>0</value>
- </param>
- <param>
- <key>ant3</key>
- <value></value>
- </param>
- <param>
- <key>bw3</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq4</key>
- <value>0</value>
- </param>
- <param>
- <key>gain4</key>
- <value>0</value>
- </param>
- <param>
- <key>ant4</key>
- <value></value>
- </param>
- <param>
- <key>bw4</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq5</key>
- <value>0</value>
- </param>
- <param>
- <key>gain5</key>
- <value>0</value>
- </param>
- <param>
- <key>ant5</key>
- <value></value>
- </param>
- <param>
- <key>bw5</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq6</key>
- <value>0</value>
- </param>
- <param>
- <key>gain6</key>
- <value>0</value>
- </param>
- <param>
- <key>ant6</key>
- <value></value>
- </param>
- <param>
- <key>bw6</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq7</key>
- <value>0</value>
- </param>
- <param>
- <key>gain7</key>
- <value>0</value>
- </param>
- <param>
- <key>ant7</key>
- <value></value>
- </param>
- <param>
- <key>bw7</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq8</key>
- <value>0</value>
- </param>
- <param>
- <key>gain8</key>
- <value>0</value>
- </param>
- <param>
- <key>ant8</key>
- <value></value>
- </param>
- <param>
- <key>bw8</key>
- <value>0</value>
+ <value>True</value>
</param>
<param>
- <key>center_freq9</key>
- <value>0</value>
+ <key>fft_len</key>
+ <value>fft_len</value>
</param>
<param>
- <key>gain9</key>
- <value>0</value>
+ <key>cp_len</key>
+ <value>fft_len/4</value>
</param>
<param>
- <key>ant9</key>
- <value></value>
+ <key>equalizer</key>
+ <value>payload_equalizer.base()</value>
</param>
<param>
- <key>bw9</key>
- <value>0</value>
+ <key>len_tag_key</key>
+ <value>length_tag_key</value>
</param>
<param>
- <key>center_freq10</key>
- <value>0</value>
+ <key>propagate_channel_state</key>
+ <value>True</value>
</param>
<param>
- <key>gain10</key>
+ <key>fixed_frame_len</key>
<value>0</value>
</param>
<param>
- <key>ant10</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw10</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq11</key>
- <value>0</value>
- </param>
- <param>
- <key>gain11</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>ant11</key>
- <value></value>
- </param>
- <param>
- <key>bw11</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(672, 702)</value>
</param>
<param>
- <key>center_freq12</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>virtual_sink</key>
<param>
- <key>gain12</key>
- <value>0</value>
+ <key>id</key>
+ <value>virtual_sink_1_0</value>
</param>
<param>
- <key>ant12</key>
- <value></value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>bw12</key>
- <value>0</value>
+ <key>stream_id</key>
+ <value>Payload IQ</value>
</param>
<param>
- <key>center_freq13</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(1139, 732)</value>
</param>
<param>
- <key>gain13</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>digital_ofdm_serializer_vcc</key>
<param>
- <key>ant13</key>
- <value></value>
- </param>
- <param>
- <key>bw13</key>
- <value>0</value>
+ <key>id</key>
+ <value>digital_ofdm_serializer_vcc_payload</value>
</param>
<param>
- <key>center_freq14</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>gain14</key>
- <value>0</value>
+ <key>fft_len</key>
+ <value>fft_len</value>
</param>
<param>
- <key>ant14</key>
- <value></value>
+ <key>occupied_carriers</key>
+ <value>occupied_carriers</value>
</param>
<param>
- <key>bw14</key>
- <value>0</value>
+ <key>len_tag_key</key>
+ <value>length_tag_key</value>
</param>
<param>
- <key>center_freq15</key>
- <value>0</value>
+ <key>packet_len_tag_key</key>
+ <value>packet_length_tag_key</value>
</param>
<param>
- <key>gain15</key>
- <value>0</value>
+ <key>symbols_skipped</key>
+ <value>1</value>
</param>
<param>
- <key>ant15</key>
+ <key>carr_offset_key</key>
<value></value>
</param>
<param>
- <key>bw15</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq16</key>
- <value>0</value>
- </param>
- <param>
- <key>gain16</key>
- <value>0</value>
+ <key>input_is_shifted</key>
+ <value>True</value>
</param>
<param>
- <key>ant16</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw16</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>center_freq17</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(916, 710)</value>
</param>
<param>
- <key>gain17</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>digital_crc32_bb</key>
<param>
- <key>ant17</key>
- <value></value>
+ <key>id</key>
+ <value>digital_crc32_bb_0</value>
</param>
<param>
- <key>bw17</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>center_freq18</key>
- <value>0</value>
+ <key>check</key>
+ <value>True</value>
</param>
<param>
- <key>gain18</key>
- <value>0</value>
+ <key>lengthtagname</key>
+ <value>packet_length_tag_key</value>
</param>
<param>
- <key>ant18</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw18</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq19</key>
- <value>0</value>
- </param>
- <param>
- <key>gain19</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>ant19</key>
- <value></value>
+ <key>_coordinate</key>
+ <value>(659, 841)</value>
</param>
<param>
- <key>bw19</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>blocks_repack_bits_bb</key>
<param>
- <key>center_freq20</key>
- <value>0</value>
+ <key>id</key>
+ <value>blocks_repack_bits_bb_0</value>
</param>
<param>
- <key>gain20</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>ant20</key>
- <value></value>
+ <key>k</key>
+ <value>payload_mod.bits_per_symbol()</value>
</param>
<param>
- <key>bw20</key>
- <value>0</value>
+ <key>l</key>
+ <value>8</value>
</param>
<param>
- <key>center_freq21</key>
- <value>0</value>
+ <key>len_tag_key</key>
+ <value>packet_length_tag_key</value>
</param>
<param>
- <key>gain21</key>
- <value>0</value>
+ <key>align_output</key>
+ <value>True</value>
</param>
<param>
- <key>ant21</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw21</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>center_freq22</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(430, 826)</value>
</param>
<param>
- <key>gain22</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>digital_constellation_decoder_cb</key>
<param>
- <key>ant22</key>
- <value></value>
- </param>
- <param>
- <key>bw22</key>
- <value>0</value>
+ <key>id</key>
+ <value>digital_constellation_decoder_cb_1</value>
</param>
<param>
- <key>center_freq23</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>gain23</key>
- <value>0</value>
+ <key>constellation</key>
+ <value>payload_mod.base()</value>
</param>
<param>
- <key>ant23</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw23</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq24</key>
- <value>0</value>
- </param>
- <param>
- <key>gain24</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>ant24</key>
- <value></value>
- </param>
- <param>
- <key>bw24</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(183, 848)</value>
</param>
<param>
- <key>center_freq25</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>virtual_source</key>
<param>
- <key>gain25</key>
- <value>0</value>
+ <key>id</key>
+ <value>virtual_source_0_0</value>
</param>
<param>
- <key>ant25</key>
- <value></value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>bw25</key>
- <value>0</value>
+ <key>stream_id</key>
+ <value>Payload IQ</value>
</param>
<param>
- <key>center_freq26</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(1, 851)</value>
</param>
<param>
- <key>gain26</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>blocks_tag_debug</key>
<param>
- <key>ant26</key>
- <value></value>
- </param>
- <param>
- <key>bw26</key>
- <value>0</value>
+ <key>id</key>
+ <value>blocks_tag_debug_1</value>
</param>
<param>
- <key>center_freq27</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>gain27</key>
- <value>0</value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>ant27</key>
- <value></value>
+ <key>name</key>
+ <value>Rx Bytes</value>
</param>
<param>
- <key>bw27</key>
- <value>0</value>
+ <key>num_inputs</key>
+ <value>1</value>
</param>
<param>
- <key>center_freq28</key>
- <value>0</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>gain28</key>
- <value>0</value>
+ <key>display</key>
+ <value>True</value>
</param>
<param>
- <key>ant28</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw28</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq29</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(898, 841)</value>
</param>
<param>
- <key>gain29</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>channels_channel_model</key>
<param>
- <key>ant29</key>
- <value></value>
- </param>
- <param>
- <key>bw29</key>
- <value>0</value>
+ <key>id</key>
+ <value>channels_channel_model_0</value>
</param>
<param>
- <key>center_freq30</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>gain30</key>
- <value>0</value>
+ <key>noise_voltage</key>
+ <value>0.1</value>
</param>
<param>
- <key>ant30</key>
- <value></value>
+ <key>freq_offset</key>
+ <value>0 * 1.0/fft_len</value>
</param>
<param>
- <key>bw30</key>
- <value>0</value>
+ <key>epsilon</key>
+ <value>1.0</value>
</param>
<param>
- <key>center_freq31</key>
- <value>0</value>
+ <key>taps</key>
+ <value>1.0</value>
</param>
<param>
- <key>gain31</key>
+ <key>seed</key>
<value>0</value>
</param>
<param>
- <key>ant31</key>
- <value></value>
- </param>
- <param>
- <key>bw31</key>
- <value>0</value>
+ <key>block_tags</key>
+ <value>True</value>
</param>
<param>
<key>affinity</key>
@@ -1878,7 +1525,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(0, 93)</value>
+ <value>(303, 372)</value>
</param>
<param>
<key>_rotation</key>
@@ -1886,75 +1533,68 @@
</param>
</block>
<block>
- <key>analog_noise_source_x</key>
+ <key>digital_ofdm_tx</key>
<param>
<key>id</key>
- <value>analog_noise_source_x_0</value>
+ <value>digital_ofdm_tx_0</value>
</param>
<param>
<key>_enabled</key>
- <value>False</value>
+ <value>True</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
+ <key>fft_len</key>
+ <value>fft_len</value>
</param>
<param>
- <key>noise_type</key>
- <value>analog.GR_GAUSSIAN</value>
+ <key>cp_len</key>
+ <value>fft_len/4</value>
</param>
<param>
- <key>amp</key>
- <value>1</value>
+ <key>packet_len_key</key>
+ <value>packet_length_tag_key</value>
</param>
<param>
- <key>seed</key>
- <value>0</value>
+ <key>occupied_carriers</key>
+ <value>occupied_carriers</value>
</param>
<param>
- <key>affinity</key>
- <value></value>
+ <key>pilot_carriers</key>
+ <value>pilot_carriers</value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>pilot_symbols</key>
+ <value>pilot_symbols</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(-1, 196)</value>
+ <key>sync_word1</key>
+ <value>sync_word1</value>
</param>
<param>
- <key>_rotation</key>
- <value>0</value>
+ <key>sync_word2</key>
+ <value>sync_word2</value>
</param>
- </block>
- <block>
- <key>blocks_file_source</key>
<param>
- <key>id</key>
- <value>blocks_file_source_0</value>
+ <key>header_mod</key>
+ <value>"BPSK"</value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>payload_mod</key>
+ <value>"QPSK"</value>
</param>
<param>
- <key>file</key>
- <value></value>
+ <key>rolloff</key>
+ <value>0</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
+ <key>scramble_bits</key>
+ <value>False</value>
</param>
<param>
- <key>repeat</key>
+ <key>log</key>
<value>True</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
<key>affinity</key>
<value></value>
</param>
@@ -1964,7 +1604,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(-1, 311)</value>
+ <value>(58, 327)</value>
</param>
<param>
<key>_rotation</key>
@@ -1972,39 +1612,33 @@
</param>
</block>
<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_block_id>analog_random_source_x_0</source_block_id>
+ <sink_block_id>blocks_stream_to_tagged_stream_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>virtual_source_0</source_block_id>
- <sink_block_id>fft_vxx_0</sink_block_id>
+ <source_block_id>blocks_stream_to_tagged_stream_0</source_block_id>
+ <sink_block_id>digital_ofdm_tx_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>header_data</source_key>
- <sink_key>header_data</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_block_id>digital_ofdm_tx_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>digital_ofdm_serializer_vcc_0</source_block_id>
- <sink_block_id>digital_constellation_decoder_cb_0_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>
<connection>
- <source_block_id>digital_header_payload_demux_0</source_block_id>
- <sink_block_id>virtual_sink_0_0</sink_block_id>
- <source_key>1</source_key>
+ <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>
@@ -2014,34 +1648,34 @@
<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_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>uhd_usrp_source_0</source_block_id>
- <sink_block_id>digital_ofdm_sync_sc_cfb_0</sink_block_id>
+ <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>analog_noise_source_x_0</source_block_id>
- <sink_block_id>blocks_throttle_0</sink_block_id>
+ <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>analog_frequency_modulator_fc_0</source_block_id>
- <sink_block_id>blocks_multiply_xx_0</sink_block_id>
+ <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>digital_ofdm_sync_sc_cfb_0</source_block_id>
- <sink_block_id>analog_frequency_modulator_fc_0</sink_block_id>
+ <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>0</sink_key>
+ <sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>digital_ofdm_sync_sc_cfb_0</source_block_id>
@@ -2050,80 +1684,98 @@
<sink_key>1</sink_key>
</connection>
<connection>
- <source_block_id>blocks_multiply_xx_0</source_block_id>
+ <source_block_id>digital_header_payload_demux_0</source_block_id>
+ <sink_block_id>virtual_sink_1</sink_block_id>
+ <source_key>1</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>header_data</source_key>
+ <sink_key>header_data</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_chanest_vcvc_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>
<connection>
- <source_block_id>blocks_delay_0</source_block_id>
- <sink_block_id>blocks_multiply_xx_0</sink_block_id>
+ <source_block_id>digital_ofdm_frame_equalizer_vcvc_0</source_block_id>
+ <sink_block_id>digital_ofdm_serializer_vcc_header</sink_block_id>
<source_key>0</source_key>
- <sink_key>1</sink_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_block_id>digital_ofdm_serializer_vcc_header</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>uhd_usrp_source_0</source_block_id>
- <sink_block_id>blocks_delay_0</sink_block_id>
+ <source_block_id>digital_constellation_decoder_cb_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>fft_vxx_0</source_block_id>
- <sink_block_id>digital_ofdm_chanest_vcvc_1</sink_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>virtual_source_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_ofdm_chanest_vcvc_1</source_block_id>
- <sink_block_id>digital_ofdm_frame_equalizer_vcvc_0_0</sink_block_id>
+ <source_block_id>virtual_source_1</source_block_id>
+ <sink_block_id>fft_vxx_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>virtual_source_0_0</source_block_id>
- <sink_block_id>fft_vxx_0_0</sink_block_id>
+ <source_block_id>digital_ofdm_serializer_vcc_payload</source_block_id>
+ <sink_block_id>virtual_sink_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_file_source_0</source_block_id>
- <sink_block_id>blocks_throttle_0</sink_block_id>
+ <source_block_id>digital_ofdm_frame_equalizer_vcvc_1</source_block_id>
+ <sink_block_id>digital_ofdm_serializer_vcc_payload</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>digital_crc32_bb_0</sink_block_id>
+ <source_block_id>fft_vxx_1</source_block_id>
+ <sink_block_id>digital_ofdm_frame_equalizer_vcvc_1</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>
+ <sink_block_id>blocks_tag_debug_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_block_id>blocks_repack_bits_bb_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>fft_vxx_0_0</source_block_id>
- <sink_block_id>digital_ofdm_frame_equalizer_vcvc_1</sink_block_id>
+ <source_block_id>virtual_source_0_0</source_block_id>
+ <sink_block_id>digital_constellation_decoder_cb_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>digital_ofdm_frame_equalizer_vcvc_1</source_block_id>
- <sink_block_id>digital_ofdm_serializer_vcc_1</sink_block_id>
+ <source_block_id>digital_constellation_decoder_cb_1</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>
diff --git a/gr-digital/examples/ofdm/tx_ofdm.grc b/gr-digital/examples/ofdm/tx_ofdm.grc
index 16312a5eca..c2995d919e 100644
--- a/gr-digital/examples/ofdm/tx_ofdm.grc
+++ b/gr-digital/examples/ofdm/tx_ofdm.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Sun Oct 6 15:44:14 2013</timestamp>
+ <timestamp>Sun Oct 27 16:23:43 2013</timestamp>
<block>
<key>options</key>
<param>
@@ -64,7 +64,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>fft_len</value>
+ <value>length_tag_key</value>
</param>
<param>
<key>_enabled</key>
@@ -72,11 +72,11 @@
</param>
<param>
<key>value</key>
- <value>64</value>
+ <value>"packet_len"</value>
</param>
<param>
<key>_coordinate</key>
- <value>(181, -1)</value>
+ <value>(352, 0)</value>
</param>
<param>
<key>_rotation</key>
@@ -87,7 +87,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>length_tag_name</value>
+ <value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
@@ -95,11 +95,11 @@
</param>
<param>
<key>value</key>
- <value>"packet_len"</value>
+ <value>100000</value>
</param>
<param>
<key>_coordinate</key>
- <value>(352, 0)</value>
+ <value>(255, 0)</value>
</param>
<param>
<key>_rotation</key>
@@ -110,7 +110,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>packet_len</value>
+ <value>rolloff</value>
</param>
<param>
<key>_enabled</key>
@@ -118,11 +118,11 @@
</param>
<param>
<key>value</key>
- <value>96</value>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(476, 0)</value>
+ <value>(898, -1)</value>
</param>
<param>
<key>_rotation</key>
@@ -133,7 +133,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>header_mod</value>
+ <value>payload_mod</value>
</param>
<param>
<key>_enabled</key>
@@ -141,11 +141,11 @@
</param>
<param>
<key>value</key>
- <value>digital.constellation_bpsk()</value>
+ <value>digital.constellation_qpsk()</value>
</param>
<param>
<key>_coordinate</key>
- <value>(567, 0)</value>
+ <value>(734, 0)</value>
</param>
<param>
<key>_rotation</key>
@@ -156,7 +156,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>payload_mod</value>
+ <value>header_mod</value>
</param>
<param>
<key>_enabled</key>
@@ -164,11 +164,11 @@
</param>
<param>
<key>value</key>
- <value>digital.constellation_qpsk()</value>
+ <value>digital.constellation_bpsk()</value>
</param>
<param>
<key>_coordinate</key>
- <value>(734, 0)</value>
+ <value>(567, 0)</value>
</param>
<param>
<key>_rotation</key>
@@ -179,7 +179,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>rolloff</value>
+ <value>packet_len</value>
</param>
<param>
<key>_enabled</key>
@@ -187,11 +187,11 @@
</param>
<param>
<key>value</key>
- <value>0</value>
+ <value>96</value>
</param>
<param>
<key>_coordinate</key>
- <value>(898, -1)</value>
+ <value>(476, 0)</value>
</param>
<param>
<key>_rotation</key>
@@ -202,7 +202,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>samp_rate</value>
+ <value>fft_len</value>
</param>
<param>
<key>_enabled</key>
@@ -210,11 +210,11 @@
</param>
<param>
<key>value</key>
- <value>100000</value>
+ <value>64</value>
</param>
<param>
<key>_coordinate</key>
- <value>(255, 0)</value>
+ <value>(181, -1)</value>
</param>
<param>
<key>_rotation</key>
@@ -225,7 +225,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>sync_word2</value>
+ <value>header_formatter</value>
</param>
<param>
<key>_enabled</key>
@@ -233,11 +233,11 @@
</param>
<param>
<key>value</key>
- <value>(0, 0, 0, 0, 0, 1, 1, -1.0, -1, 1.0, 1, 1.0, -1, -1.0, -1, 1.0, 1, -1.0, 1, 1.0, 1, -1.0, -1, -1.0, -1, 1.0, -1, 1.0, -1, 1.0, 1, -1.0, 0, 1.0, 1, -1.0, 1, 1.0, -1, -1.0, 1, -1.0, -1, -1.0, 1, 1.0, 1, -1.0, 1, 1.0, -1, 1.0, -1, -1.0, -1, 1.0, 1, -1.0, 0, 0, 0, 0, 0, 0)</value>
+ <value>digital.packet_header_ofdm(occupied_carriers, 1, length_tag_key)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(496, 128)</value>
+ <value>(708, 64)</value>
</param>
<param>
<key>_rotation</key>
@@ -248,7 +248,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>sync_word1</value>
+ <value>pilot_carriers</value>
</param>
<param>
<key>_enabled</key>
@@ -256,11 +256,11 @@
</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>
+ <value>((-21, -7, 7, 21,),)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(352, 128)</value>
+ <value>(480, 64)</value>
</param>
<param>
<key>_rotation</key>
@@ -294,7 +294,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>pilot_carriers</value>
+ <value>pilot_symbols</value>
</param>
<param>
<key>_enabled</key>
@@ -302,11 +302,11 @@
</param>
<param>
<key>value</key>
- <value>((-21, -7, 7, 21,),)</value>
+ <value>((1, 1, 1, -1,),)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(480, 64)</value>
+ <value>(601, 64)</value>
</param>
<param>
<key>_rotation</key>
@@ -317,7 +317,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>header_formatter</value>
+ <value>sync_word2</value>
</param>
<param>
<key>_enabled</key>
@@ -325,11 +325,11 @@
</param>
<param>
<key>value</key>
- <value>digital.packet_header_ofdm(occupied_carriers, 1, length_tag_name)</value>
+ <value>[0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, 0, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1, 1, -1, 1, -1, -1, -1, -1, 0, 0, 0, 0, 0] </value>
</param>
<param>
<key>_coordinate</key>
- <value>(708, 64)</value>
+ <value>(496, 128)</value>
</param>
<param>
<key>_rotation</key>
@@ -340,7 +340,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>pilot_symbols</value>
+ <value>sync_word1</value>
</param>
<param>
<key>_enabled</key>
@@ -348,11 +348,11 @@
</param>
<param>
<key>value</key>
- <value>((1, 1, 1, -1,),)</value>
+ <value>[0., 0., 0., 0., 0., 0., 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 0., 0., 0., 0., 0.]</value>
</param>
<param>
<key>_coordinate</key>
- <value>(601, 64)</value>
+ <value>(352, 128)</value>
</param>
<param>
<key>_rotation</key>
@@ -383,42 +383,22 @@
</param>
</block>
<block>
- <key>blocks_tagged_stream_mux</key>
+ <key>import</key>
<param>
<key>id</key>
- <value>blocks_tagged_stream_mux_0</value>
+ <value>import_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>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>import</key>
+ <value>import numpy</value>
</param>
<param>
<key>_coordinate</key>
- <value>(510, 428)</value>
+ <value>(237, 93)</value>
</param>
<param>
<key>_rotation</key>
@@ -426,22 +406,22 @@
</param>
</block>
<block>
- <key>virtual_sink</key>
+ <key>import</key>
<param>
<key>id</key>
- <value>virtual_sink_0_0</value>
+ <value>import_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>stream_id</key>
- <value>Payload Bits</value>
+ <key>import</key>
+ <value>from gnuradio.digital.utils import tagged_streams</value>
</param>
<param>
<key>_coordinate</key>
- <value>(746, 312)</value>
+ <value>(99, 93)</value>
</param>
<param>
<key>_rotation</key>
@@ -449,22 +429,22 @@
</param>
</block>
<block>
- <key>virtual_source</key>
+ <key>import</key>
<param>
<key>id</key>
- <value>virtual_source_0</value>
+ <value>import_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>stream_id</key>
- <value>Header Bits</value>
+ <key>import</key>
+ <value>import random</value>
</param>
<param>
<key>_coordinate</key>
- <value>(0, 384)</value>
+ <value>(3, 94)</value>
</param>
<param>
<key>_rotation</key>
@@ -472,30 +452,22 @@
</param>
</block>
<block>
- <key>digital_packet_headergenerator_bb</key>
+ <key>virtual_source</key>
<param>
<key>id</key>
- <value>digital_packet_headergenerator_bb_0</value>
+ <value>virtual_source_0_0_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>header_formatter</key>
- <value>header_formatter.formatter()</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>stream_id</key>
+ <value>Time Domain</value>
</param>
<param>
<key>_coordinate</key>
- <value>(514, 231)</value>
+ <value>(1, 747)</value>
</param>
<param>
<key>_rotation</key>
@@ -503,42 +475,22 @@
</param>
</block>
<block>
- <key>blocks_repack_bits_bb</key>
+ <key>virtual_sink</key>
<param>
<key>id</key>
- <value>blocks_repack_bits_bb_0</value>
+ <value>virtual_sink_0_0_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>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>stream_id</key>
+ <value>Pre-OFDM</value>
</param>
<param>
<key>_coordinate</key>
- <value>(522, 289)</value>
+ <value>(745, 441)</value>
</param>
<param>
<key>_rotation</key>
@@ -546,45 +498,34 @@
</param>
</block>
<block>
- <key>virtual_sink</key>
+ <key>digital_chunks_to_symbols_xx</key>
<param>
<key>id</key>
- <value>header_bits</value>
+ <value>digital_chunks_to_symbols_xx_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>stream_id</key>
- <value>Header Bits</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(748, 231)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
+ <key>in_type</key>
+ <value>byte</value>
</param>
- </block>
- <block>
- <key>digital_crc32_bb</key>
<param>
- <key>id</key>
- <value>digital_crc32_bb_0</value>
+ <key>out_type</key>
+ <value>complex</value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>symbol_table</key>
+ <value>payload_mod.points()</value>
</param>
<param>
- <key>check</key>
- <value>False</value>
+ <key>dimension</key>
+ <value>1</value>
</param>
<param>
- <key>lengthtagname</key>
- <value>length_tag_name</value>
+ <key>num_ports</key>
+ <value>1</value>
</param>
<param>
<key>affinity</key>
@@ -596,7 +537,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(242, 223)</value>
+ <value>(212, 450)</value>
</param>
<param>
<key>_rotation</key>
@@ -604,22 +545,22 @@
</param>
</block>
<block>
- <key>import</key>
+ <key>virtual_source</key>
<param>
<key>id</key>
- <value>import_0</value>
+ <value>virtual_source_0_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>import</key>
- <value>import numpy</value>
+ <key>stream_id</key>
+ <value>Pre-OFDM</value>
</param>
<param>
<key>_coordinate</key>
- <value>(237, 93)</value>
+ <value>(0, 578)</value>
</param>
<param>
<key>_rotation</key>
@@ -627,22 +568,22 @@
</param>
</block>
<block>
- <key>import</key>
+ <key>virtual_sink</key>
<param>
<key>id</key>
- <value>import_1</value>
+ <value>virtual_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>import</key>
- <value>from gnuradio.digital.utils import tagged_streams</value>
+ <key>stream_id</key>
+ <value>Time Domain</value>
</param>
<param>
<key>_coordinate</key>
- <value>(99, 93)</value>
+ <value>(855, 578)</value>
</param>
<param>
<key>_rotation</key>
@@ -650,68 +591,50 @@
</param>
</block>
<block>
- <key>import</key>
+ <key>fft_vxx</key>
<param>
<key>id</key>
- <value>import_0_0</value>
+ <value>fft_vxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>import</key>
- <value>import random</value>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(3, 94)</value>
+ <key>fft_size</key>
+ <value>fft_len</value>
</param>
<param>
- <key>_rotation</key>
- <value>0</value>
+ <key>forward</key>
+ <value>False</value>
</param>
- </block>
- <block>
- <key>virtual_source</key>
<param>
- <key>id</key>
- <value>virtual_source_0_0_0_0</value>
+ <key>window</key>
+ <value>()</value>
</param>
<param>
- <key>_enabled</key>
+ <key>shift</key>
<value>True</value>
</param>
<param>
- <key>stream_id</key>
- <value>Time Domain</value>
+ <key>nthreads</key>
+ <value>1</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(1, 747)</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>_rotation</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
- </block>
- <block>
- <key>virtual_sink</key>
- <param>
- <key>id</key>
- <value>virtual_sink_0_0_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>stream_id</key>
- <value>Pre-OFDM</value>
- </param>
<param>
<key>_coordinate</key>
- <value>(745, 441)</value>
+ <value>(414, 548)</value>
</param>
<param>
<key>_rotation</key>
@@ -719,10 +642,10 @@
</param>
</block>
<block>
- <key>blocks_vector_source_x</key>
+ <key>blocks_multiply_const_vxx</key>
<param>
<key>id</key>
- <value>blocks_vector_source_x_0</value>
+ <value>blocks_multiply_const_vxx_0</value>
</param>
<param>
<key>_enabled</key>
@@ -730,19 +653,11 @@
</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>
+ <value>complex</value>
</param>
<param>
- <key>repeat</key>
- <value>True</value>
+ <key>const</key>
+ <value>0.05</value>
</param>
<param>
<key>vlen</key>
@@ -758,7 +673,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(0, 215)</value>
+ <value>(209, 747)</value>
</param>
<param>
<key>_rotation</key>
@@ -769,7 +684,7 @@
<key>digital_chunks_to_symbols_xx</key>
<param>
<key>id</key>
- <value>digital_chunks_to_symbols_xx_0_0</value>
+ <value>digital_chunks_to_symbols_xx_0</value>
</param>
<param>
<key>_enabled</key>
@@ -785,7 +700,7 @@
</param>
<param>
<key>symbol_table</key>
- <value>payload_mod.points()</value>
+ <value>header_mod.points()</value>
</param>
<param>
<key>dimension</key>
@@ -805,7 +720,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(212, 450)</value>
+ <value>(214, 376)</value>
</param>
<param>
<key>_rotation</key>
@@ -813,34 +728,34 @@
</param>
</block>
<block>
- <key>digital_chunks_to_symbols_xx</key>
+ <key>analog_random_source_x</key>
<param>
<key>id</key>
- <value>digital_chunks_to_symbols_xx_0</value>
+ <value>analog_random_source_x_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>in_type</key>
+ <key>type</key>
<value>byte</value>
</param>
<param>
- <key>out_type</key>
- <value>complex</value>
+ <key>min</key>
+ <value>0</value>
</param>
<param>
- <key>symbol_table</key>
- <value>header_mod.points()</value>
+ <key>max</key>
+ <value>255</value>
</param>
<param>
- <key>dimension</key>
- <value>1</value>
+ <key>num_samps</key>
+ <value>1000</value>
</param>
<param>
- <key>num_ports</key>
- <value>1</value>
+ <key>repeat</key>
+ <value>True</value>
</param>
<param>
<key>affinity</key>
@@ -852,30 +767,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(214, 376)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>virtual_source</key>
- <param>
- <key>id</key>
- <value>virtual_source_0_0_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>stream_id</key>
- <value>Pre-OFDM</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(0, 578)</value>
+ <value>(13, 220)</value>
</param>
<param>
<key>_rotation</key>
@@ -883,38 +775,30 @@
</param>
</block>
<block>
- <key>digital_ofdm_carrier_allocator_cvc</key>
+ <key>blocks_tagged_stream_mux</key>
<param>
<key>id</key>
- <value>digital_ofdm_carrier_allocator_cvc_0</value>
+ <value>blocks_tagged_stream_mux_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>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
- <key>pilot_symbols</key>
- <value>pilot_symbols</value>
+ <key>ninputs</key>
+ <value>2</value>
</param>
<param>
- <key>sync_words</key>
- <value>(sync_word1, sync_word2)</value>
+ <key>lengthtagname</key>
+ <value>length_tag_key</value>
</param>
<param>
- <key>len_tag_key</key>
- <value>length_tag_name</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>affinity</key>
@@ -926,7 +810,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(191, 540)</value>
+ <value>(510, 428)</value>
</param>
<param>
<key>_rotation</key>
@@ -957,7 +841,7 @@
</param>
<param>
<key>tagname</key>
- <value>length_tag_name</value>
+ <value>length_tag_key</value>
</param>
<param>
<key>affinity</key>
@@ -969,30 +853,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(631, 563)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>virtual_sink</key>
- <param>
- <key>id</key>
- <value>virtual_sink_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>stream_id</key>
- <value>Time Domain</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(855, 578)</value>
+ <value>(632, 564)</value>
</param>
<param>
<key>_rotation</key>
@@ -1000,10 +861,10 @@
</param>
</block>
<block>
- <key>fft_vxx</key>
+ <key>blocks_tag_gate</key>
<param>
<key>id</key>
- <value>fft_vxx_0</value>
+ <value>blocks_tag_gate_0</value>
</param>
<param>
<key>_enabled</key>
@@ -1014,26 +875,14 @@
<value>complex</value>
</param>
<param>
- <key>fft_size</key>
- <value>fft_len</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>forward</key>
+ <key>propagate_tags</key>
<value>False</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>affinity</key>
<value></value>
</param>
@@ -1043,7 +892,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(414, 548)</value>
+ <value>(372, 747)</value>
</param>
<param>
<key>_rotation</key>
@@ -1051,26 +900,30 @@
</param>
</block>
<block>
- <key>blocks_multiply_const_vxx</key>
+ <key>blocks_repack_bits_bb</key>
<param>
<key>id</key>
- <value>blocks_multiply_const_vxx_0</value>
+ <value>blocks_repack_bits_bb_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
+ <key>k</key>
+ <value>8</value>
</param>
<param>
- <key>const</key>
- <value>0.05</value>
+ <key>l</key>
+ <value>payload_mod.bits_per_symbol()</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>len_tag_key</key>
+ <value>length_tag_key</value>
+ </param>
+ <param>
+ <key>align_output</key>
+ <value>False</value>
</param>
<param>
<key>affinity</key>
@@ -1082,7 +935,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(209, 747)</value>
+ <value>(710, 301)</value>
</param>
<param>
<key>_rotation</key>
@@ -1090,670 +943,431 @@
</param>
</block>
<block>
- <key>uhd_usrp_sink</key>
+ <key>digital_packet_headergenerator_bb</key>
<param>
<key>id</key>
- <value>uhd_usrp_sink_0</value>
+ <value>digital_packet_headergenerator_bb_0</value>
</param>
<param>
<key>_enabled</key>
- <value>False</value>
- </param>
- <param>
- <key>type</key>
- <value>fc32</value>
- </param>
- <param>
- <key>otw</key>
- <value></value>
- </param>
- <param>
- <key>stream_args</key>
- <value></value>
- </param>
- <param>
- <key>stream_chans</key>
- <value>[]</value>
- </param>
- <param>
- <key>dev_addr</key>
- <value></value>
- </param>
- <param>
- <key>sync</key>
- <value></value>
- </param>
- <param>
- <key>clock_rate</key>
- <value>0.0</value>
- </param>
- <param>
- <key>num_mboards</key>
- <value>1</value>
- </param>
- <param>
- <key>clock_source0</key>
- <value></value>
- </param>
- <param>
- <key>time_source0</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec0</key>
- <value></value>
- </param>
- <param>
- <key>clock_source1</key>
- <value></value>
- </param>
- <param>
- <key>time_source1</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec1</key>
- <value></value>
- </param>
- <param>
- <key>clock_source2</key>
- <value></value>
- </param>
- <param>
- <key>time_source2</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec2</key>
- <value></value>
- </param>
- <param>
- <key>clock_source3</key>
- <value></value>
- </param>
- <param>
- <key>time_source3</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec3</key>
- <value></value>
- </param>
- <param>
- <key>clock_source4</key>
- <value></value>
- </param>
- <param>
- <key>time_source4</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec4</key>
- <value></value>
- </param>
- <param>
- <key>clock_source5</key>
- <value></value>
- </param>
- <param>
- <key>time_source5</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec5</key>
- <value></value>
- </param>
- <param>
- <key>clock_source6</key>
- <value></value>
- </param>
- <param>
- <key>time_source6</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec6</key>
- <value></value>
- </param>
- <param>
- <key>clock_source7</key>
- <value></value>
- </param>
- <param>
- <key>time_source7</key>
- <value></value>
- </param>
- <param>
- <key>sd_spec7</key>
- <value></value>
- </param>
- <param>
- <key>nchan</key>
- <value>1</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>samp_rate</value>
- </param>
- <param>
- <key>center_freq0</key>
- <value>0</value>
- </param>
- <param>
- <key>gain0</key>
- <value>0</value>
- </param>
- <param>
- <key>ant0</key>
- <value></value>
- </param>
- <param>
- <key>bw0</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq1</key>
- <value>0</value>
- </param>
- <param>
- <key>gain1</key>
- <value>0</value>
- </param>
- <param>
- <key>ant1</key>
- <value></value>
- </param>
- <param>
- <key>bw1</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq2</key>
- <value>0</value>
- </param>
- <param>
- <key>gain2</key>
- <value>0</value>
- </param>
- <param>
- <key>ant2</key>
- <value></value>
- </param>
- <param>
- <key>bw2</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq3</key>
- <value>0</value>
- </param>
- <param>
- <key>gain3</key>
- <value>0</value>
- </param>
- <param>
- <key>ant3</key>
- <value></value>
- </param>
- <param>
- <key>bw3</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq4</key>
- <value>0</value>
- </param>
- <param>
- <key>gain4</key>
- <value>0</value>
- </param>
- <param>
- <key>ant4</key>
- <value></value>
- </param>
- <param>
- <key>bw4</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq5</key>
- <value>0</value>
- </param>
- <param>
- <key>gain5</key>
- <value>0</value>
- </param>
- <param>
- <key>ant5</key>
- <value></value>
- </param>
- <param>
- <key>bw5</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq6</key>
- <value>0</value>
+ <value>True</value>
</param>
<param>
- <key>gain6</key>
- <value>0</value>
+ <key>header_formatter</key>
+ <value>header_formatter.formatter()</value>
</param>
<param>
- <key>ant6</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw6</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq7</key>
- <value>0</value>
- </param>
- <param>
- <key>gain7</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>ant7</key>
- <value></value>
+ <key>_coordinate</key>
+ <value>(703, 242)</value>
</param>
<param>
- <key>bw7</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>blocks_stream_to_tagged_stream</key>
<param>
- <key>center_freq8</key>
- <value>0</value>
+ <key>id</key>
+ <value>blocks_stream_to_tagged_stream_0</value>
</param>
<param>
- <key>gain8</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>ant8</key>
- <value></value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>bw8</key>
- <value>0</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>center_freq9</key>
- <value>0</value>
+ <key>packet_len</key>
+ <value>packet_len</value>
</param>
<param>
- <key>gain9</key>
- <value>0</value>
+ <key>len_tag_key</key>
+ <value>length_tag_key</value>
</param>
<param>
- <key>ant9</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw9</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>center_freq10</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(193, 235)</value>
</param>
<param>
- <key>gain10</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>virtual_sink</key>
<param>
- <key>ant10</key>
- <value></value>
- </param>
- <param>
- <key>bw10</key>
- <value>0</value>
+ <key>id</key>
+ <value>header_bits</value>
</param>
<param>
- <key>center_freq11</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>gain11</key>
- <value>0</value>
+ <key>stream_id</key>
+ <value>Header Bits</value>
</param>
<param>
- <key>ant11</key>
- <value></value>
+ <key>_coordinate</key>
+ <value>(936, 243)</value>
</param>
<param>
- <key>bw11</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>virtual_sink</key>
<param>
- <key>center_freq12</key>
- <value>0</value>
+ <key>id</key>
+ <value>virtual_sink_0_0</value>
</param>
<param>
- <key>gain12</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>ant12</key>
- <value></value>
+ <key>stream_id</key>
+ <value>Payload Bits</value>
</param>
<param>
- <key>bw12</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(934, 324)</value>
</param>
<param>
- <key>center_freq13</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>virtual_source</key>
<param>
- <key>gain13</key>
- <value>0</value>
+ <key>id</key>
+ <value>virtual_source_0</value>
</param>
<param>
- <key>ant13</key>
- <value></value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>bw13</key>
- <value>0</value>
+ <key>stream_id</key>
+ <value>Header Bits</value>
</param>
<param>
- <key>center_freq14</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(1, 382)</value>
</param>
<param>
- <key>gain14</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>blocks_tag_debug</key>
<param>
- <key>ant14</key>
- <value></value>
- </param>
- <param>
- <key>bw14</key>
- <value>0</value>
+ <key>id</key>
+ <value>blocks_tag_debug_0</value>
</param>
<param>
- <key>center_freq15</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>gain15</key>
- <value>0</value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>ant15</key>
- <value></value>
+ <key>name</key>
+ <value>Rx'd Packets</value>
</param>
<param>
- <key>bw15</key>
- <value>0</value>
+ <key>num_inputs</key>
+ <value>1</value>
</param>
<param>
- <key>center_freq16</key>
- <value>0</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>gain16</key>
- <value>0</value>
+ <key>display</key>
+ <value>True</value>
</param>
<param>
- <key>ant16</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw16</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(437, 872)</value>
</param>
<param>
- <key>center_freq17</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>blocks_throttle</key>
<param>
- <key>gain17</key>
- <value>0</value>
+ <key>id</key>
+ <value>blocks_throttle_0</value>
</param>
<param>
- <key>ant17</key>
- <value></value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>bw17</key>
- <value>0</value>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
- <key>center_freq18</key>
- <value>0</value>
+ <key>samples_per_second</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>gain18</key>
- <value>0</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>ant18</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw18</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq19</key>
- <value>0</value>
- </param>
- <param>
- <key>gain19</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>ant19</key>
- <value></value>
- </param>
- <param>
- <key>bw19</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(558, 747)</value>
</param>
<param>
- <key>center_freq20</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>virtual_source</key>
<param>
- <key>gain20</key>
- <value>0</value>
+ <key>id</key>
+ <value>virtual_source_1</value>
</param>
<param>
- <key>ant20</key>
- <value></value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>bw20</key>
- <value>0</value>
+ <key>stream_id</key>
+ <value>Tx Signal</value>
</param>
<param>
- <key>center_freq21</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(5, 879)</value>
</param>
<param>
- <key>gain21</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>digital_crc32_bb</key>
<param>
- <key>ant21</key>
- <value></value>
+ <key>id</key>
+ <value>digital_crc32_bb_0</value>
</param>
<param>
- <key>bw21</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>center_freq22</key>
- <value>0</value>
+ <key>check</key>
+ <value>False</value>
</param>
<param>
- <key>gain22</key>
- <value>0</value>
+ <key>lengthtagname</key>
+ <value>length_tag_key</value>
</param>
<param>
- <key>ant22</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw22</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>center_freq23</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(430, 235)</value>
</param>
<param>
- <key>gain23</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>digital_ofdm_carrier_allocator_cvc</key>
<param>
- <key>ant23</key>
- <value></value>
+ <key>id</key>
+ <value>digital_ofdm_carrier_allocator_cvc_0</value>
</param>
<param>
- <key>bw23</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>center_freq24</key>
- <value>0</value>
+ <key>fft_len</key>
+ <value>fft_len</value>
</param>
<param>
- <key>gain24</key>
- <value>0</value>
+ <key>occupied_carriers</key>
+ <value>occupied_carriers</value>
</param>
<param>
- <key>ant24</key>
- <value></value>
+ <key>pilot_carriers</key>
+ <value>pilot_carriers</value>
</param>
<param>
- <key>bw24</key>
- <value>0</value>
+ <key>pilot_symbols</key>
+ <value>pilot_symbols</value>
</param>
<param>
- <key>center_freq25</key>
- <value>0</value>
+ <key>sync_words</key>
+ <value>(sync_word1, sync_word2)</value>
</param>
<param>
- <key>gain25</key>
- <value>0</value>
+ <key>len_tag_key</key>
+ <value>length_tag_key</value>
</param>
<param>
- <key>ant25</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw25</key>
- <value>0</value>
- </param>
- <param>
- <key>center_freq26</key>
- <value>0</value>
- </param>
- <param>
- <key>gain26</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>ant26</key>
- <value></value>
+ <key>_coordinate</key>
+ <value>(192, 540)</value>
</param>
<param>
- <key>bw26</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>digital_ofdm_rx</key>
<param>
- <key>center_freq27</key>
- <value>0</value>
+ <key>id</key>
+ <value>digital_ofdm_rx_0</value>
</param>
<param>
- <key>gain27</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>ant27</key>
- <value></value>
+ <key>fft_len</key>
+ <value>fft_len</value>
</param>
<param>
- <key>bw27</key>
- <value>0</value>
+ <key>cp_len</key>
+ <value>fft_len/4</value>
</param>
<param>
- <key>center_freq28</key>
- <value>0</value>
+ <key>packet_len_key</key>
+ <value>"length"</value>
</param>
<param>
- <key>gain28</key>
- <value>0</value>
+ <key>occupied_carriers</key>
+ <value>occupied_carriers</value>
</param>
<param>
- <key>ant28</key>
- <value></value>
+ <key>pilot_carriers</key>
+ <value>pilot_carriers</value>
</param>
<param>
- <key>bw28</key>
- <value>0</value>
+ <key>pilot_symbols</key>
+ <value>pilot_symbols</value>
</param>
<param>
- <key>center_freq29</key>
- <value>0</value>
+ <key>sync_word1</key>
+ <value>sync_word1</value>
</param>
<param>
- <key>gain29</key>
- <value>0</value>
+ <key>sync_word2</key>
+ <value>sync_word2</value>
</param>
<param>
- <key>ant29</key>
- <value></value>
+ <key>header_mod</key>
+ <value>"BPSK"</value>
</param>
<param>
- <key>bw29</key>
- <value>0</value>
+ <key>payload_mod</key>
+ <value>"QPSK"</value>
</param>
<param>
- <key>center_freq30</key>
- <value>0</value>
+ <key>scramble_bits</key>
+ <value>False</value>
</param>
<param>
- <key>gain30</key>
- <value>0</value>
+ <key>log</key>
+ <value>False</value>
</param>
<param>
- <key>ant30</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>bw30</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>center_freq31</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(193, 802)</value>
</param>
<param>
- <key>gain31</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>virtual_sink</key>
<param>
- <key>ant31</key>
- <value></value>
+ <key>id</key>
+ <value>virtual_sink_1</value>
</param>
<param>
- <key>bw31</key>
- <value>0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>affinity</key>
- <value></value>
+ <key>stream_id</key>
+ <value>Tx Signal</value>
</param>
<param>
<key>_coordinate</key>
- <value>(401, 670)</value>
+ <value>(771, 698)</value>
</param>
<param>
<key>_rotation</key>
@@ -1768,7 +1382,7 @@
</param>
<param>
<key>_enabled</key>
- <value>False</value>
+ <value>True</value>
</param>
<param>
<key>type</key>
@@ -1832,7 +1446,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(649, 718)</value>
+ <value>(773, 768)</value>
</param>
<param>
<key>_rotation</key>
@@ -1927,46 +1541,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(636, 832)</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>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(402, 747)</value>
+ <value>(775, 862)</value>
</param>
<param>
<key>_rotation</key>
@@ -1992,40 +1567,52 @@
<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_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>virtual_source_0_0_0_0</source_block_id>
+ <sink_block_id>blocks_multiply_const_vxx_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_repack_bits_bb_0</sink_block_id>
+ <source_block_id>virtual_source_0_0_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_packet_headergenerator_bb_0</source_block_id>
- <sink_block_id>header_bits</sink_block_id>
+ <source_block_id>digital_ofdm_carrier_allocator_cvc_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>blocks_repack_bits_bb_0</source_block_id>
- <sink_block_id>virtual_sink_0_0</sink_block_id>
+ <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>blocks_vector_source_x_0</source_block_id>
- <sink_block_id>digital_crc32_bb_0</sink_block_id>
+ <source_block_id>digital_ofdm_cyclic_prefixer_0</source_block_id>
+ <sink_block_id>virtual_sink_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_block_id>blocks_multiply_const_vxx_0</source_block_id>
+ <sink_block_id>blocks_tag_gate_0</sink_block_id>
<source_key>0</source_key>
- <sink_key>1</sink_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_tag_gate_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>digital_chunks_to_symbols_xx_0</source_block_id>
@@ -2034,56 +1621,68 @@
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>virtual_source_0_0_0_0</source_block_id>
- <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
+ <source_block_id>analog_random_source_x_0</source_block_id>
+ <sink_block_id>blocks_stream_to_tagged_stream_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_multiply_const_vxx_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>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_multiply_const_vxx_0</source_block_id>
- <sink_block_id>uhd_usrp_sink_0</sink_block_id>
+ <source_block_id>blocks_throttle_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>virtual_source_0_0_0</source_block_id>
- <sink_block_id>digital_ofdm_carrier_allocator_cvc_0</sink_block_id>
+ <source_block_id>blocks_stream_to_tagged_stream_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_ofdm_carrier_allocator_cvc_0</source_block_id>
- <sink_block_id>fft_vxx_0</sink_block_id>
+ <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>fft_vxx_0</source_block_id>
- <sink_block_id>digital_ofdm_cyclic_prefixer_0</sink_block_id>
+ <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>digital_ofdm_cyclic_prefixer_0</source_block_id>
- <sink_block_id>virtual_sink_0</sink_block_id>
+ <source_block_id>digital_packet_headergenerator_bb_0</source_block_id>
+ <sink_block_id>header_bits</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>wxgui_scopesink2_0</sink_block_id>
+ <source_block_id>blocks_repack_bits_bb_0</source_block_id>
+ <sink_block_id>virtual_sink_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_ofdm_rx_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>
+ <connection>
+ <source_block_id>virtual_source_1</source_block_id>
+ <sink_block_id>digital_ofdm_rx_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>wxgui_fftsink2_0</sink_block_id>
+ <sink_block_id>virtual_sink_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
diff --git a/gr-digital/python/digital/ofdm_txrx.py b/gr-digital/python/digital/ofdm_txrx.py
index b1ebc9e9c2..06e375e3d6 100644
--- a/gr-digital/python/digital/ofdm_txrx.py
+++ b/gr-digital/python/digital/ofdm_txrx.py
@@ -170,9 +170,10 @@ class ofdm_tx(gr.hier_block2):
if len(sync_word1) != self.fft_len:
raise ValueError("Length of sync sequence(s) must be FFT length.")
self.sync_words = [self.sync_word1,]
- self.sync_word2 = ()
if sync_word2 is None:
self.sync_word2 = _make_sync_word2(fft_len, occupied_carriers, pilot_carriers)
+ else:
+ self.sync_word2 = sync_word2
if len(self.sync_word2):
if len(self.sync_word2) != fft_len:
raise ValueError("Length of sync sequence(s) must be FFT length.")
@@ -342,8 +343,12 @@ class ofdm_rx(gr.hier_block2):
chanest = digital.ofdm_chanest_vcvc(self.sync_word1, self.sync_word2, 1)
header_constellation = _get_constellation(bps_header)
header_equalizer = digital.ofdm_equalizer_simpledfe(
- fft_len, header_constellation.base(),
- occupied_carriers, pilot_carriers, pilot_symbols, 0, 0
+ fft_len,
+ header_constellation.base(),
+ occupied_carriers,
+ pilot_carriers,
+ pilot_symbols,
+ symbols_skipped=0,
)
header_eq = digital.ofdm_frame_equalizer_vcvc(
header_equalizer.base(),
@@ -388,11 +393,13 @@ class ofdm_rx(gr.hier_block2):
payload_fft = fft.fft_vcc(self.fft_len, True, (), True)
payload_constellation = _get_constellation(bps_payload)
payload_equalizer = digital.ofdm_equalizer_simpledfe(
- fft_len, payload_constellation.base(),
+ fft_len,
+ payload_constellation.base(),
occupied_carriers,
pilot_carriers,
pilot_symbols,
- 1 # Skip 1 symbol (that was already in the header)
+ symbols_skipped=1, # (that was already in the header)
+ alpha=0.1
)
payload_eq = digital.ofdm_frame_equalizer_vcvc(
payload_equalizer.base(),
diff --git a/gr-digital/python/digital/packet_utils.py b/gr-digital/python/digital/packet_utils.py
index 2929758ef0..865f3adbb4 100644
--- a/gr-digital/python/digital/packet_utils.py
+++ b/gr-digital/python/digital/packet_utils.py
@@ -71,7 +71,7 @@ def conv_1_0_string_to_packed_binary_string(s):
default_access_code = \
conv_packed_binary_string_to_1_0_string('\xAC\xDD\xA4\xE2\xF2\x8C\x20\xFC')
-preamble = \
+default_preamble = \
conv_packed_binary_string_to_1_0_string('\xA4\xF2')
def is_1_0_string(s):
@@ -102,8 +102,8 @@ def make_header(payload_len, whitener_offset=0):
return struct.pack('!HH', val, val)
def make_packet(payload, samples_per_symbol, bits_per_symbol,
- access_code=default_access_code, pad_for_usrp=True,
- whitener_offset=0, whitening=True):
+ preamble=default_preamble, access_code=default_access_code,
+ pad_for_usrp=True, whitener_offset=0, whitening=True):
"""
Build a packet, given access code, payload, and whitener offset
@@ -111,12 +111,16 @@ def make_packet(payload, samples_per_symbol, bits_per_symbol,
payload: packet payload, len [0, 4096]
samples_per_symbol: samples per symbol (needed for padding calculation) (int)
bits_per_symbol: (needed for padding calculation) (int)
+ preamble: string of ascii 0's and 1's
access_code: string of ascii 0's and 1's
whitener_offset: offset into whitener string to use [0-16)
Packet will have access code at the beginning, followed by length, payload
and finally CRC-32.
"""
+ if not is_1_0_string(preamble):
+ raise ValueError, "preamble must be a string containing only 0's and 1's (%r)" % (preamble,)
+
if not is_1_0_string(access_code):
raise ValueError, "access_code must be a string containing only 0's and 1's (%r)" % (access_code,)
diff --git a/gr-digital/python/digital/pkt.py b/gr-digital/python/digital/pkt.py
index 434548906e..fbdcaa3a66 100644
--- a/gr-digital/python/digital/pkt.py
+++ b/gr-digital/python/digital/pkt.py
@@ -40,8 +40,8 @@ class mod_pkts(gr.hier_block2):
Send packets by calling send_pkt
"""
- def __init__(self, modulator, access_code=None, msgq_limit=2, pad_for_usrp=True,
- use_whitener_offset=False, modulate=True):
+ def __init__(self, modulator, preamble=None, access_code=None, msgq_limit=2,
+ pad_for_usrp=True, use_whitener_offset=False, modulate=True):
"""
Hierarchical block for sending packets
@@ -72,6 +72,12 @@ class mod_pkts(gr.hier_block2):
if not packet_utils.is_1_0_string(access_code):
raise ValueError, "Invalid access_code %r. Must be string of 1's and 0's" % (access_code,)
self._access_code = access_code
+
+ if preamble is None:
+ preamble = packet_utils.default_preamble
+ if not packet_utils.is_1_0_string(preamble):
+ raise ValueError, "Invalid preamble %r. Must be string of 1's and 0's" % (preamble,)
+ self._preamble = preamble
# accepts messages from the outside world
self._pkt_input = blocks.message_source(gr.sizeof_char, msgq_limit)
@@ -91,6 +97,7 @@ class mod_pkts(gr.hier_block2):
pkt = packet_utils.make_packet(payload,
self._modulator.samples_per_symbol(),
self._modulator.bits_per_symbol(),
+ self._preamble,
self._access_code,
self._pad_for_usrp,
self._whitener_offset)
diff --git a/gr-filter/lib/pfb_synthesizer_ccf_impl.cc b/gr-filter/lib/pfb_synthesizer_ccf_impl.cc
index 49f45ab8cd..5f0e330ab4 100644
--- a/gr-filter/lib/pfb_synthesizer_ccf_impl.cc
+++ b/gr-filter/lib/pfb_synthesizer_ccf_impl.cc
@@ -30,7 +30,7 @@
namespace gr {
namespace filter {
-
+
pfb_synthesizer_ccf::sptr
pfb_synthesizer_ccf::make(unsigned int numchans,
const std::vector<float> &taps,
@@ -78,6 +78,7 @@ namespace gr {
pfb_synthesizer_ccf_impl::~pfb_synthesizer_ccf_impl()
{
+ delete d_fft;
for(unsigned int i = 0; i < d_numchans; i++) {
delete d_filters[i];
}
diff --git a/gr-vocoder/lib/codec2/interp.c b/gr-vocoder/lib/codec2/interp.c
index 64372b050f..fad4554f43 100644
--- a/gr-vocoder/lib/codec2/interp.c
+++ b/gr-vocoder/lib/codec2/interp.c
@@ -212,6 +212,7 @@ float sample_log_amp_quad_nl(
/* find closest point to centre quadratic interpolator */
best_dist = 1E32;
+ m = 0;
for (i=0; i<np; i++)
if (fabs(w[i] - w_sample) < best_dist) {
best_dist = fabs(w[i] - w_sample);
diff --git a/gr-wxgui/python/wxgui/stdgui2.py b/gr-wxgui/python/wxgui/stdgui2.py
index b38589988e..d983dd58cd 100644
--- a/gr-wxgui/python/wxgui/stdgui2.py
+++ b/gr-wxgui/python/wxgui/stdgui2.py
@@ -79,6 +79,7 @@ class stdframe (wx.Frame):
def OnCloseWindow (self, event):
self.top_block().stop()
+ self.top_block().wait()
self.Destroy ()
def top_block (self):
diff --git a/grc/blocks/blks2_packet_encoder.xml b/grc/blocks/blks2_packet_encoder.xml
index b184ebd31c..88e1ba350c 100644
--- a/grc/blocks/blks2_packet_encoder.xml
+++ b/grc/blocks/blks2_packet_encoder.xml
@@ -11,6 +11,7 @@
<make>grc_blks2.packet_mod_$(type.fcn)(grc_blks2.packet_encoder(
samples_per_symbol=$samples_per_symbol,
bits_per_symbol=$bits_per_symbol,
+ preamble=$preamble,
access_code=$access_code,
pad_for_usrp=$pad_for_usrp,
),
@@ -58,6 +59,12 @@
<type>int</type>
</param>
<param>
+ <name>Preamble</name>
+ <key>preamble</key>
+ <value></value>
+ <type>string</type>
+ </param>
+ <param>
<name>Access Code</name>
<key>access_code</key>
<value></value>
@@ -93,6 +100,8 @@
<doc>
Packet encoder block, for use with the gnuradio modulator blocks: gmsk, dpsk, qam.
+Preamble: string of 1's and 0's, leave blank for automatic.
+
Access Code: string of 1's and 0's, leave blank for automatic.
Payload Length: 0 for automatic.
diff --git a/grc/grc_gnuradio/blks2/error_rate.py b/grc/grc_gnuradio/blks2/error_rate.py
index 95ded7dadc..77347ef9e3 100644
--- a/grc/grc_gnuradio/blks2/error_rate.py
+++ b/grc/grc_gnuradio/blks2/error_rate.py
@@ -113,7 +113,7 @@ class error_rate(gr.hier_block2):
#write sample
arr[i] = float(self._num_errs)/float(self._num_samps*self._bits_per_symbol)
#write message
- msg = blocks.message_from_string(arr.tostring(), 0, gr.sizeof_float, num)
+ msg = gr.message_from_string(arr.tostring(), 0, gr.sizeof_float, num)
self._msgq_source.insert_tail(msg)
def _handler_ser(self, samples):
@@ -136,5 +136,5 @@ class error_rate(gr.hier_block2):
#write sample
arr[i] = float(self._num_errs)/float(self._num_samps)
#write message
- msg = blocks.message_from_string(arr.tostring(), 0, gr.sizeof_float, num)
+ msg = gr.message_from_string(arr.tostring(), 0, gr.sizeof_float, num)
self._msgq_source.insert_tail(msg)
diff --git a/grc/grc_gnuradio/blks2/packet.py b/grc/grc_gnuradio/blks2/packet.py
index 10dd002471..872f08ca2e 100644
--- a/grc/grc_gnuradio/blks2/packet.py
+++ b/grc/grc_gnuradio/blks2/packet.py
@@ -68,7 +68,7 @@ class packet_encoder(gr.hier_block2):
Hierarchical block for wrapping packet-based modulators.
"""
- def __init__(self, samples_per_symbol, bits_per_symbol, access_code='', pad_for_usrp=True):
+ def __init__(self, samples_per_symbol, bits_per_symbol, preamble='', access_code='', pad_for_usrp=True):
"""
packet_mod constructor.
@@ -83,10 +83,15 @@ class packet_encoder(gr.hier_block2):
self._samples_per_symbol = samples_per_symbol
self._bits_per_symbol = bits_per_symbol
self._pad_for_usrp = pad_for_usrp
+ if not preamble: #get preamble
+ preamble = packet_utils.default_preamble
if not access_code: #get access code
access_code = packet_utils.default_access_code
+ if not packet_utils.is_1_0_string(preamble):
+ raise ValueError, "Invalid preamble %r. Must be string of 1's and 0's" % (preamble,)
if not packet_utils.is_1_0_string(access_code):
raise ValueError, "Invalid access_code %r. Must be string of 1's and 0's" % (access_code,)
+ self._preamble = preamble
self._access_code = access_code
self._pad_for_usrp = pad_for_usrp
#create blocks
@@ -113,6 +118,7 @@ class packet_encoder(gr.hier_block2):
payload,
self._samples_per_symbol,
self._bits_per_symbol,
+ self._preamble,
self._access_code,
self._pad_for_usrp
)
diff --git a/grc/python/FlowGraph.py b/grc/python/FlowGraph.py
index 180d605720..bf98c7ab38 100644
--- a/grc/python/FlowGraph.py
+++ b/grc/python/FlowGraph.py
@@ -82,7 +82,7 @@ class FlowGraph(_FlowGraph, _GUIFlowGraph):
return [{
'label': str(pad.get_param('label').get_evaluated()),
'type': str(pad.get_param('type').get_evaluated()),
- 'vlen': str(pad.get_param('vlen').get_evaluated()),
+ 'vlen': str(pad.get_param('vlen').get_value()),
'size': pad.get_param('type').get_opt('size'),
'optional': bool(pad.get_param('optional').get_evaluated()),
} for pad in expanded_pads]
diff --git a/grc/python/flow_graph.tmpl b/grc/python/flow_graph.tmpl
index 3e9520a14f..5daf80f685 100644
--- a/grc/python/flow_graph.tmpl
+++ b/grc/python/flow_graph.tmpl
@@ -322,11 +322,14 @@ if __name__ == '__main__':
#end if
#end if
tb.show()
+ def quitting():
+ tb.stop()
+ tb.wait()
+ qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting)
#for $m in $monitors
(tb.$m.get_id()).start()
#end for
qapp.exec_()
- tb.stop()
tb = None #to clean up Qt widgets
#elif $generate_options == 'no_gui'
tb = $(class_name)($(', '.join($params_eq_list)))
diff --git a/gruel/src/python/gruel/CMakeLists.txt b/gruel/src/python/gruel/CMakeLists.txt
deleted file mode 100644
index 377d1c4824..0000000000
--- a/gruel/src/python/gruel/CMakeLists.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-include(GrPython)
-
-########################################################################
-# Install python files
-########################################################################
-GR_PYTHON_INSTALL(
- FILES __init__.py
- DESTINATION ${GR_PYTHON_DIR}/gruel
- COMPONENT "gruel_python"
-)
-
-########################################################################
-# Setup unit tests
-########################################################################
-if(ENABLE_TESTING)
-include(GrTest)
-file(GLOB py_qa_test_files "qa_*.py")
-foreach(py_qa_test_file ${py_qa_test_files})
- get_filename_component(py_qa_test_name ${py_qa_test_file} NAME_WE)
- set(GR_TEST_TARGET_DEPS "")
- set(GR_TEST_LIBRARY_DIRS "")
- set(GR_TEST_PYTHON_DIRS
- ${CMAKE_BINARY_DIR}/gruel/src/python
- )
- GR_ADD_TEST(${py_qa_test_name} ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${py_qa_test_file})
-endforeach(py_qa_test_file)
-endif(ENABLE_TESTING)
diff --git a/volk/tmpl/volk_cpu.tmpl.c b/volk/tmpl/volk_cpu.tmpl.c
index d017c547e0..a7a50933cb 100644
--- a/volk/tmpl/volk_cpu.tmpl.c
+++ b/volk/tmpl/volk_cpu.tmpl.c
@@ -151,7 +151,7 @@ static int i_can_has_$arch.name (void) {
#end for
#if defined(HAVE_FENV_H)
- #if defined(FE_TONEARREST)
+ #if defined(FE_TONEAREST)
#include <fenv.h>
static inline void set_float_rounding(void){
fesetround(FE_TONEAREST);