diff options
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 > 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); |