commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] [gnuradio] 38/57: fec: wip: cleaning up tagged decoder


From: git
Subject: [Commit-gnuradio] [gnuradio] 38/57: fec: wip: cleaning up tagged decoder, rep code.
Date: Wed, 21 May 2014 03:10:29 +0000 (UTC)

This is an automated email from the git hooks/post-receive script.

trondeau pushed a commit to branch master
in repository gnuradio.

commit 2e26269d32a357688f6fea652137d9a1900c3a29
Author: Tom Rondeau <address@hidden>
Date:   Tue May 13 18:12:37 2014 -0400

    fec: wip: cleaning up tagged decoder, rep code.
---
 gr-fec/doc/fec.dox                         |  154 +++-
 gr-fec/examples/ber_curve_gen.grc          |  296 ++++----
 gr-fec/examples/fecapi_decoders.grc        |  804 +++++++++++++++-----
 gr-fec/examples/fecapi_tagged_decoders.grc | 1137 +++++++++++++++++-----------
 gr-fec/lib/repetition_decoder_impl.cc      |    2 +-
 gr-fec/lib/repetition_encoder_impl.cc      |    2 +-
 gr-fec/lib/tagged_decoder_impl.cc          |    9 +-
 gr-fec/lib/tagged_decoder_impl.h           |    1 -
 gr-fec/lib/tagged_encoder_impl.cc          |    2 +
 gr-fec/python/fec/extended_decoder.py      |    7 +-
 gr-fec/python/fec/fec_test.py              |    8 +-
 11 files changed, 1612 insertions(+), 810 deletions(-)

diff --git a/gr-fec/doc/fec.dox b/gr-fec/doc/fec.dox
index 3f8850e..eddf1b1 100644
--- a/gr-fec/doc/fec.dox
+++ b/gr-fec/doc/fec.dox
@@ -22,8 +22,112 @@ by using:
 \endcode
 
 
+\section fec_using Using the FEC Encoders and Decoders
+
+The FECAPI consists of two layers, the coding blocks themselves and
+the coder objects. The coding blocks are the encoders or decoders that
+fit into the GNU Radio flowgraph and act as shells to move data to and
+from the coder objects. It is in the objects that the actual
+coding/decoding gets done. The coding blocks use the API of the coder
+objects to interact with the scheduler and set up the input/output
+item buffers that move data between blocks.
+
+The gr::fec::encoder block is a relatively simple wrapper for the
+encoding objects. It uses the encoding object information about the
+input/output sizes and input/output item sizes to set up the
+interaction with the scheduler. Typically, a coder will add redundancy
+to the stream making the output longer by some amount than the input
+stream. This block simply takes in an encoder object, specifically an
+object that derives from gr::fec::generic_encoder. It also takes in
+the input and output items sizes that the encoder will expect, which
+we can just ask the encoder for. Typically, the encodes expect
+unpacked bytes in and unpacked bytes out.
+
+The gr::fec::decoder block is similarly simple to wrap the decoding
+objects. It uses the decoding object information about the
+input/output sizes and input/output item sizes to set up the
+interaction with the scheduler. Since a decoder typically uses the
+redundancy from the input stream to correct for errors, the input
+stream will be longer than the output stream by the rate of the
+code. This block simply takes in an decoder object, specifically an
+object that derives from gr::fec::generic_decoder. It also takes in
+the input and output items sizes that the decoder will expect, which
+we can just ask the encoder for. The decoders may take a float input
+or a byte. The byte may be a hard decision or a quantized soft
+decision, depending on how the decoder object behaves.
+
+Normally, though, we don't work directly with the encoder() or
+decoder() blocks but a wrapper around those blocks. GNU Radio's gr-fec
+package comes with Python classes, fec.extended_encoder and
+fec.extended_decoder, to make things easier. For one thing, these
+extended hier_block2 blocks take care of the puncturing and
+depuncturing operations often found in FEC codes. The other thing that
+these blocks do for us is reads the API of the encoder/decoder objects
+to properly convert the data in or out, depending on how the coding
+object works.
+
+For instance, a generic_decoder takes in floating point values (which
+should be soft decisions). However, a decoder might instead want to
+work on 8-bit quantized soft decisions and so expects unsigned
+chars. Specifying 'uchar' as the
+gr::fec::generic_decoder::get_input_conversion() of the decoder block tells the
+fec.extended_decoder to convert the float to a byte.
+
+In GRC, we would add an "FEC Extended Encoder" to our transmitter or
+an "FEC Extended Decoder" to the receiver. We would then use one of
+the encoder or decoder FEC variable blocks to define the parameters of
+the particular code we want to use. We can find these codes under the
+[Error Coding] category in GRC. The encoders are found under
+[Encoders] and similarly the decoders under the [Decoders]
+categories. Putting these onto the canvas creates a variable that we
+can then pass to the extended encoder or decoder blocks.
+
+Most of the parameters of the encoder and decoder definitions should
+be fairly obvious based on the type of code. See the documentation for
+each coding object for more details. In the following section \ref
+fec_parallelism, we explain the Parallelism and Dimension properties.
+
+
 \section fec_coding_vars Encoding/Decoding Variables
 
+GNU Radio currently has a minor subset of coders available:
+
+Coders:
+
+\li gr::fec::code::dummy_encoder
+\li gr::fec::code::repetition_encoder
+\li gr::fec::code::cc_encoder
+\li gr::fec::code::ccsds_encoder
+
+Decoders:
+\li gr::fec::code::dummy_decoder
+\li gr::fec::code::repetition_decoder
+\li gr::fec::code::cc_decoder
+
+
+When building a new FECAPI encoder or decoder, the dummy
+encoder/decoder block would be a good place to start. This coding set
+does no processing on the data. For the encoder, each bit is simply
+passed through directly. For the dummy decoder, the input data are
+floats, so -1's become 0 and 1's stay as 1, but nothing else is done
+to the data. Mainly, these blocks are used for references and to make
+it easy to compare implementations with and without codes by easily
+dropping in these objects instead of restructuring the entire
+flowgraph. The ber_curve_gen.grc example file uses the dummy codes to
+show the curve to compare against the actual codes.
+
+Although mentioned in the convolutional coder and decoder classes, it
+is worth another mention. The cc_encoder is a generic convolutional
+encoder that can take any value of K, rate, and polynomials to encode
+a data stream. However, the cc_decoder is not as general, even though
+it is technically parameterized as such. The cc_decoder block
+currently <i>only</i> uses K=7, rate=2, and two polynomials (because
+the rate is two). We can, in fact, alter the polynomials, but a
+default of [109, 79] is typically. Eventually, we will make this block
+more generic for different rates and constraint lengths and take this
+particular code implementation as the set CCSDS decoder, much like we
+have the ccsds_encoder class.
+
 \subsection fec_parallelism Parallelism
 
 The code variables in GNU Radio Companion have the ability to create
@@ -41,7 +145,7 @@ of coder blocks. The code that accepts these variables must 
understand
 how to handle the parallelism. Most applications would set this to 1.
 
 The standard fec.extended_encoder ("FEC Extended Encoder" in GRC) and
-fec.exended_decoder ("FEC Extended Decoder" in GRC) can handle a
+fec.extended_decoder ("FEC Extended Decoder" in GRC) can handle a
 Parallelism of 1. They accept a list of coder variables as defined by
 Dimension 1 and can multithread the application based on the
 "Threading Type" setting:
@@ -78,4 +182,52 @@ simultaneously. Dimension 2 in this case allows the same 
concept of
 parallelism discussed above with the <b>None</b>, <b>Ordinary</b>, and
 <b>Capillary</b> models of threading.
 
+
+\section fec_api The API of the FECAPI
+
+The FECAPI defined by the parent generic_encoder and generic_decoder
+classes defines a set of virtual functions, some pure virtual, to
+allow the encoders/decoders to interact with the GNU Radio blocks. See
+the associated documentation of the generic_encoder and
+generic_decoder classes to know more about each of the API functions,
+some of which a child class is <i>required</i> to implement.
+
+The functions of the encoder and decoder are:
+
+\li double gr::fec::generic_encoder::rate()
+\li int gr::fec::generic_encoder::get_input_size()
+\li int gr::fec::generic_encoder::get_output_size()
+\li int gr::fec::generic_encoder::get_history()
+\li float gr::fec::generic_encoder::get_shift()
+\li const char* gr::fec::generic_encoder::get_input_conversion()
+\li const char* gr::fec::generic_encoder::get_output_conversion()
+\li bool gr::fec::generic_encoder::set_frame_size(unsigned int frame_size)
+
+Note: there is no get_input_item_size (or output) as the encoders
+always expect to work on bits.
+
+\li double gr::fec::generic_decoder::rate()
+\li int gr::fec::generic_decoder::get_input_size()
+\li int gr::fec::generic_decoder::get_output_size()
+\li int gr::fec::generic_decoder::get_history()
+\li float gr::fec::generic_decoder::get_shift()
+\li int gr::fec::generic_decoder::get_input_item_size()
+\li int gr::fec::generic_decoder::get_output_item_size()
+\li const char* gr::fec::generic_decoder::get_input_conversion()
+\li const char* gr::fec::generic_decoder::get_output_conversion()
+\li bool gr::fec::generic_decoder::set_frame_size(unsigned int frame_size)
+
+Whenever an FECAPI object refers to the frame size, it always means
+the number of bits in the uncoded frame. This means the number of bits
+going into an encoder and the number of bits coming out of a decoder.
+
+\section fec_examples FEC Examples
+
+\li ber_curve_gen.grc
+\li ber_test.grc
+\li fecapi_decoders.grc
+\li fecapi_encoders.grc
+\li fecapi_tagged_decoders.grc
+\li fecapi_tagged_encoders.grc
+
 */
diff --git a/gr-fec/examples/ber_curve_gen.grc 
b/gr-fec/examples/ber_curve_gen.grc
index dfc57b3..455dca4 100644
--- a/gr-fec/examples/ber_curve_gen.grc
+++ b/gr-fec/examples/ber_curve_gen.grc
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Tue May 13 14:23:51 2014</timestamp>
+  <timestamp>Tue May 13 19:32:00 2014</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -68,7 +68,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>esno_0</value>
+      <value>samp_rate_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -76,7 +76,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>numpy.arange(0, 8, .5) </value>
+      <value>35000000</value>
     </param>
     <param>
       <key>alias</key>
@@ -84,7 +84,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(13, 193)</value>
+      <value>(12, 99)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -95,7 +95,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>framebits</value>
+      <value>k</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -103,7 +103,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>4096</value>
+      <value>7</value>
     </param>
     <param>
       <key>alias</key>
@@ -111,7 +111,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(160, 101)</value>
+      <value>(16, 370)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -122,7 +122,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>rate</value>
+      <value>polys</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -130,7 +130,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>2</value>
+      <value>[79, 109]</value>
     </param>
     <param>
       <key>alias</key>
@@ -138,7 +138,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(249, 373)</value>
+      <value>(110, 371)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -149,7 +149,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>polys</value>
+      <value>rate</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -157,7 +157,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>[79, 109]</value>
+      <value>2</value>
     </param>
     <param>
       <key>alias</key>
@@ -165,7 +165,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(110, 371)</value>
+      <value>(249, 373)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -176,7 +176,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>k</value>
+      <value>framebits</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -184,7 +184,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>7</value>
+      <value>4096</value>
     </param>
     <param>
       <key>alias</key>
@@ -192,7 +192,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(16, 370)</value>
+      <value>(160, 101)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -203,7 +203,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>samp_rate_0</value>
+      <value>esno_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -211,7 +211,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>35000000</value>
+      <value>numpy.arange(0, 8, .5) </value>
     </param>
     <param>
       <key>alias</key>
@@ -219,7 +219,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(12, 99)</value>
+      <value>(13, 193)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -605,6 +605,134 @@
     <bus_source>1</bus_source>
   </block>
   <block>
+    <key>fec_bercurve_generator</key>
+    <param>
+      <key>id</key>
+      <value>fec_bercurve_generator_0_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>esno</key>
+      <value>esno_0</value>
+    </param>
+    <param>
+      <key>samp_rate</key>
+      <value>samp_rate_0</value>
+    </param>
+    <param>
+      <key>encoder_list</key>
+      <value>enc_rep</value>
+    </param>
+    <param>
+      <key>decoder_list</key>
+      <value>dec_rep</value>
+    </param>
+    <param>
+      <key>puncpat</key>
+      <value>'11'</value>
+    </param>
+    <param>
+      <key>threadtype</key>
+      <value>"capillary"</value>
+    </param>
+    <param>
+      <key>seed</key>
+      <value>-100</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(481, 132)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <bus_source>1</bus_source>
+  </block>
+  <block>
+    <key>fec_bercurve_generator</key>
+    <param>
+      <key>id</key>
+      <value>fec_bercurve_generator_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>esno</key>
+      <value>esno_0</value>
+    </param>
+    <param>
+      <key>samp_rate</key>
+      <value>samp_rate_0</value>
+    </param>
+    <param>
+      <key>encoder_list</key>
+      <value>enc_cc</value>
+    </param>
+    <param>
+      <key>decoder_list</key>
+      <value>dec_cc</value>
+    </param>
+    <param>
+      <key>puncpat</key>
+      <value>'11'</value>
+    </param>
+    <param>
+      <key>threadtype</key>
+      <value>"capillary"</value>
+    </param>
+    <param>
+      <key>seed</key>
+      <value>-100</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(481, 260)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <bus_source>1</bus_source>
+  </block>
+  <block>
     <key>qtgui_bercurve_sink</key>
     <param>
       <key>id</key>
@@ -624,7 +752,7 @@
     </param>
     <param>
       <key>berlimit</key>
-      <value>-15</value>
+      <value>-10</value>
     </param>
     <param>
       <key>num_curves</key>
@@ -908,134 +1036,6 @@
     </param>
     <bus_sink>1</bus_sink>
   </block>
-  <block>
-    <key>fec_bercurve_generator</key>
-    <param>
-      <key>id</key>
-      <value>fec_bercurve_generator_0_0</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>esno</key>
-      <value>esno_0</value>
-    </param>
-    <param>
-      <key>samp_rate</key>
-      <value>samp_rate_0</value>
-    </param>
-    <param>
-      <key>encoder_list</key>
-      <value>enc_rep</value>
-    </param>
-    <param>
-      <key>decoder_list</key>
-      <value>dec_rep</value>
-    </param>
-    <param>
-      <key>puncpat</key>
-      <value>'11'</value>
-    </param>
-    <param>
-      <key>threadtype</key>
-      <value>"capillary"</value>
-    </param>
-    <param>
-      <key>seed</key>
-      <value>-100</value>
-    </param>
-    <param>
-      <key>alias</key>
-      <value></value>
-    </param>
-    <param>
-      <key>affinity</key>
-      <value></value>
-    </param>
-    <param>
-      <key>minoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(481, 132)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-    <bus_source>1</bus_source>
-  </block>
-  <block>
-    <key>fec_bercurve_generator</key>
-    <param>
-      <key>id</key>
-      <value>fec_bercurve_generator_0</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>esno</key>
-      <value>esno_0</value>
-    </param>
-    <param>
-      <key>samp_rate</key>
-      <value>samp_rate_0</value>
-    </param>
-    <param>
-      <key>encoder_list</key>
-      <value>enc_cc</value>
-    </param>
-    <param>
-      <key>decoder_list</key>
-      <value>dec_cc</value>
-    </param>
-    <param>
-      <key>puncpat</key>
-      <value>'11'</value>
-    </param>
-    <param>
-      <key>threadtype</key>
-      <value>"capillary"</value>
-    </param>
-    <param>
-      <key>seed</key>
-      <value>-100</value>
-    </param>
-    <param>
-      <key>alias</key>
-      <value></value>
-    </param>
-    <param>
-      <key>affinity</key>
-      <value></value>
-    </param>
-    <param>
-      <key>minoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(481, 260)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-    <bus_source>1</bus_source>
-  </block>
   <connection>
     <source_block_id>fec_bercurve_generator_0_0_0</source_block_id>
     <sink_block_id>qtgui_bercurve_sink_0</sink_block_id>
diff --git a/gr-fec/examples/fecapi_decoders.grc 
b/gr-fec/examples/fecapi_decoders.grc
index 41692d3..403eca0 100644
--- a/gr-fec/examples/fecapi_decoders.grc
+++ b/gr-fec/examples/fecapi_decoders.grc
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Tue May 13 17:26:19 2014</timestamp>
+  <timestamp>Tue May 13 17:44:52 2014</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -798,49 +798,6 @@
     </param>
   </block>
   <block>
-    <key>blocks_char_to_float</key>
-    <param>
-      <key>id</key>
-      <value>blocks_char_to_float_0_0_0</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>vlen</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>scale</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>alias</key>
-      <value></value>
-    </param>
-    <param>
-      <key>affinity</key>
-      <value></value>
-    </param>
-    <param>
-      <key>minoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(1466, 435)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
     <key>fec_extended_decoder</key>
     <param>
       <key>id</key>
@@ -943,49 +900,6 @@
     </param>
   </block>
   <block>
-    <key>blocks_char_to_float</key>
-    <param>
-      <key>id</key>
-      <value>blocks_char_to_float_0_0</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>vlen</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>scale</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>alias</key>
-      <value></value>
-    </param>
-    <param>
-      <key>affinity</key>
-      <value></value>
-    </param>
-    <param>
-      <key>minoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(1465, 584)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
     <key>fec_extended_decoder</key>
     <param>
       <key>id</key>
@@ -1147,57 +1061,6 @@
     </param>
   </block>
   <block>
-    <key>blocks_delay</key>
-    <param>
-      <key>id</key>
-      <value>blocks_delay_0</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>False</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>float</value>
-    </param>
-    <param>
-      <key>delay</key>
-      <value>32</value>
-    </param>
-    <param>
-      <key>num_ports</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>vlen</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>alias</key>
-      <value></value>
-    </param>
-    <param>
-      <key>affinity</key>
-      <value></value>
-    </param>
-    <param>
-      <key>minoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(695, 184)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
     <key>blocks_vector_source_x</key>
     <param>
       <key>id</key>
@@ -1606,141 +1469,652 @@
     </param>
   </block>
   <block>
-    <key>qtgui_time_sink_x</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>qtgui_time_sink_x_0</value>
+      <value>blocks_char_to_float_0_0_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>float</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
-      <key>name</key>
-      <value>QT GUI Plot</value>
+      <key>scale</key>
+      <value>1</value>
     </param>
     <param>
-      <key>size</key>
-      <value>2048</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>srate</key>
-      <value>samp_rate</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>autoscale</key>
-      <value>False</value>
+      <key>minoutbuf</key>
+      <value>0</value>
     </param>
     <param>
-      <key>ymin</key>
-      <value>-0.5</value>
+      <key>maxoutbuf</key>
+      <value>0</value>
     </param>
     <param>
-      <key>ymax</key>
-      <value>1.5</value>
+      <key>_coordinate</key>
+      <value>(1466, 435)</value>
     </param>
     <param>
-      <key>nconnections</key>
-      <value>4</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>blocks_char_to_float</key>
     <param>
-      <key>update_time</key>
-      <value>0.10</value>
+      <key>id</key>
+      <value>blocks_char_to_float_0_0</value>
     </param>
     <param>
-      <key>entags</key>
+      <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>gui_hint</key>
-      <value></value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
-      <key>tr_mode</key>
-      <value>qtgui.TRIG_MODE_FREE</value>
+      <key>scale</key>
+      <value>1</value>
     </param>
     <param>
-      <key>tr_slope</key>
-      <value>qtgui.TRIG_SLOPE_POS</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>tr_level</key>
-      <value>0.0</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>tr_delay</key>
+      <key>minoutbuf</key>
       <value>0</value>
     </param>
     <param>
-      <key>tr_chan</key>
+      <key>maxoutbuf</key>
       <value>0</value>
     </param>
     <param>
-      <key>tr_tag</key>
-      <value>""</value>
+      <key>_coordinate</key>
+      <value>(1465, 584)</value>
     </param>
     <param>
-      <key>label1</key>
-      <value>Input</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>blocks_sub_xx</key>
     <param>
-      <key>width1</key>
-      <value>1</value>
+      <key>id</key>
+      <value>blocks_sub_xx_0</value>
     </param>
     <param>
-      <key>color1</key>
-      <value>"blue"</value>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
-      <key>style1</key>
-      <value>1</value>
+      <key>type</key>
+      <value>float</value>
     </param>
     <param>
-      <key>marker1</key>
-      <value>-1</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
-      <key>alpha1</key>
-      <value>1.0</value>
+      <key>num_inputs</key>
+      <value>2</value>
     </param>
     <param>
-      <key>label2</key>
-      <value>Dummy</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>width2</key>
-      <value>1</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>color2</key>
-      <value>"red"</value>
+      <key>minoutbuf</key>
+      <value>0</value>
     </param>
     <param>
-      <key>style2</key>
-      <value>1</value>
+      <key>maxoutbuf</key>
+      <value>0</value>
     </param>
     <param>
-      <key>marker2</key>
-      <value>-1</value>
+      <key>_coordinate</key>
+      <value>(1836, 569)</value>
     </param>
     <param>
-      <key>alpha2</key>
-      <value>0.6</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>blocks_abs_xx</key>
     <param>
-      <key>label3</key>
-      <value>Rep. (Rate=3)</value>
+      <key>id</key>
+      <value>blocks_abs_xx_0</value>
     </param>
     <param>
-      <key>width3</key>
-      <value>1</value>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
-      <key>color3</key>
+      <key>type</key>
+      <value>float</value>
+    </param>
+    <param>
+      <key>num_inputs</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1434, 834)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>qtgui_time_sink_x</key>
+    <param>
+      <key>id</key>
+      <value>qtgui_time_sink_x_1</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>float</value>
+    </param>
+    <param>
+      <key>name</key>
+      <value>QT GUI Plot</value>
+    </param>
+    <param>
+      <key>size</key>
+      <value>1024</value>
+    </param>
+    <param>
+      <key>srate</key>
+      <value>samp_rate</value>
+    </param>
+    <param>
+      <key>autoscale</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>ymin</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>ymax</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>nconnections</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>update_time</key>
+      <value>0.01</value>
+    </param>
+    <param>
+      <key>entags</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>gui_hint</key>
+      <value></value>
+    </param>
+    <param>
+      <key>tr_mode</key>
+      <value>qtgui.TRIG_MODE_NORM</value>
+    </param>
+    <param>
+      <key>tr_slope</key>
+      <value>qtgui.TRIG_SLOPE_POS</value>
+    </param>
+    <param>
+      <key>tr_level</key>
+      <value>0.1</value>
+    </param>
+    <param>
+      <key>tr_delay</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>tr_chan</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>tr_tag</key>
+      <value>""</value>
+    </param>
+    <param>
+      <key>label1</key>
+      <value></value>
+    </param>
+    <param>
+      <key>width1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color1</key>
+      <value>"blue"</value>
+    </param>
+    <param>
+      <key>style1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker1</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha1</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label2</key>
+      <value></value>
+    </param>
+    <param>
+      <key>width2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color2</key>
+      <value>"red"</value>
+    </param>
+    <param>
+      <key>style2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker2</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha2</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label3</key>
+      <value></value>
+    </param>
+    <param>
+      <key>width3</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color3</key>
+      <value>"green"</value>
+    </param>
+    <param>
+      <key>style3</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker3</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha3</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label4</key>
+      <value></value>
+    </param>
+    <param>
+      <key>width4</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color4</key>
+      <value>"black"</value>
+    </param>
+    <param>
+      <key>style4</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker4</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha4</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label5</key>
+      <value></value>
+    </param>
+    <param>
+      <key>width5</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color5</key>
+      <value>"cyan"</value>
+    </param>
+    <param>
+      <key>style5</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker5</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha5</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label6</key>
+      <value></value>
+    </param>
+    <param>
+      <key>width6</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color6</key>
+      <value>"magenta"</value>
+    </param>
+    <param>
+      <key>style6</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker6</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha6</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label7</key>
+      <value></value>
+    </param>
+    <param>
+      <key>width7</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color7</key>
+      <value>"yellow"</value>
+    </param>
+    <param>
+      <key>style7</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker7</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha7</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label8</key>
+      <value></value>
+    </param>
+    <param>
+      <key>width8</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color8</key>
+      <value>"dark red"</value>
+    </param>
+    <param>
+      <key>style8</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker8</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha8</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label9</key>
+      <value></value>
+    </param>
+    <param>
+      <key>width9</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color9</key>
+      <value>"dark green"</value>
+    </param>
+    <param>
+      <key>style9</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker9</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha9</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label10</key>
+      <value></value>
+    </param>
+    <param>
+      <key>width10</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color10</key>
+      <value>"blue"</value>
+    </param>
+    <param>
+      <key>style10</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker10</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha10</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1587, 793)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>qtgui_time_sink_x</key>
+    <param>
+      <key>id</key>
+      <value>qtgui_time_sink_x_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>float</value>
+    </param>
+    <param>
+      <key>name</key>
+      <value>QT GUI Plot</value>
+    </param>
+    <param>
+      <key>size</key>
+      <value>2048</value>
+    </param>
+    <param>
+      <key>srate</key>
+      <value>samp_rate</value>
+    </param>
+    <param>
+      <key>autoscale</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>ymin</key>
+      <value>-0.5</value>
+    </param>
+    <param>
+      <key>ymax</key>
+      <value>1.5</value>
+    </param>
+    <param>
+      <key>nconnections</key>
+      <value>4</value>
+    </param>
+    <param>
+      <key>update_time</key>
+      <value>0.01</value>
+    </param>
+    <param>
+      <key>entags</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>gui_hint</key>
+      <value></value>
+    </param>
+    <param>
+      <key>tr_mode</key>
+      <value>qtgui.TRIG_MODE_FREE</value>
+    </param>
+    <param>
+      <key>tr_slope</key>
+      <value>qtgui.TRIG_SLOPE_POS</value>
+    </param>
+    <param>
+      <key>tr_level</key>
+      <value>0.0</value>
+    </param>
+    <param>
+      <key>tr_delay</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>tr_chan</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>tr_tag</key>
+      <value>""</value>
+    </param>
+    <param>
+      <key>label1</key>
+      <value>Input</value>
+    </param>
+    <param>
+      <key>width1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color1</key>
+      <value>"blue"</value>
+    </param>
+    <param>
+      <key>style1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker1</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha1</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label2</key>
+      <value>Dummy</value>
+    </param>
+    <param>
+      <key>width2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color2</key>
+      <value>"red"</value>
+    </param>
+    <param>
+      <key>style2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>marker2</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>alpha2</key>
+      <value>0.6</value>
+    </param>
+    <param>
+      <key>label3</key>
+      <value>Rep. (Rate=3)</value>
+    </param>
+    <param>
+      <key>width3</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>color3</key>
       <value>"green"</value>
     </param>
     <param>
@@ -1971,12 +2345,6 @@
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blocks_char_to_float_0_1</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_map_bb_0_0</source_block_id>
     <sink_block_id>blocks_char_to_float_0</sink_block_id>
     <source_key>0</source_key>
@@ -2084,4 +2452,28 @@
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
+  <connection>
+    <source_block_id>blocks_char_to_float_0_0_0</source_block_id>
+    <sink_block_id>blocks_sub_xx_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_char_to_float_0_0</source_block_id>
+    <sink_block_id>blocks_sub_xx_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>1</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_sub_xx_0</source_block_id>
+    <sink_block_id>blocks_abs_xx_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_abs_xx_0</source_block_id>
+    <sink_block_id>qtgui_time_sink_x_1</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
 </flow_graph>
diff --git a/gr-fec/examples/fecapi_tagged_decoders.grc 
b/gr-fec/examples/fecapi_tagged_decoders.grc
index 9779709..8d038e1 100644
--- a/gr-fec/examples/fecapi_tagged_decoders.grc
+++ b/gr-fec/examples/fecapi_tagged_decoders.grc
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Tue May 13 16:28:59 2014</timestamp>
+  <timestamp>Tue May 13 18:15:54 2014</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -68,15 +68,15 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>samp_rate</value>
+      <value>polys</value>
     </param>
     <param>
       <key>_enabled</key>
-      <value>True</value>
+      <value>False</value>
     </param>
     <param>
       <key>value</key>
-      <value>50000</value>
+      <value>[79, 109]</value>
     </param>
     <param>
       <key>alias</key>
@@ -84,7 +84,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(9, 95)</value>
+      <value>(368, 684)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -95,7 +95,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>length_tag</value>
+      <value>rate</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -103,7 +103,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>"packet_len"</value>
+      <value>2</value>
     </param>
     <param>
       <key>alias</key>
@@ -111,7 +111,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(202, 112)</value>
+      <value>(410, 599)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -122,7 +122,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>k</value>
+      <value>polys</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -130,7 +130,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>7</value>
+      <value>[109, 79]</value>
     </param>
     <param>
       <key>alias</key>
@@ -138,7 +138,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(352, 1017)</value>
+      <value>(226, 687)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -149,7 +149,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>polys</value>
+      <value>k</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -157,7 +157,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>[109, 79]</value>
+      <value>7</value>
     </param>
     <param>
       <key>alias</key>
@@ -165,7 +165,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(269, 1102)</value>
+      <value>(309, 602)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -176,15 +176,15 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>polys</value>
+      <value>length_tag</value>
     </param>
     <param>
       <key>_enabled</key>
-      <value>False</value>
+      <value>True</value>
     </param>
     <param>
       <key>value</key>
-      <value>[79, 109]</value>
+      <value>"packet_len"</value>
     </param>
     <param>
       <key>alias</key>
@@ -192,7 +192,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(411, 1099)</value>
+      <value>(202, 112)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -203,7 +203,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>rate</value>
+      <value>samp_rate</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -211,7 +211,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>2</value>
+      <value>50000</value>
     </param>
     <param>
       <key>alias</key>
@@ -219,7 +219,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(453, 1014)</value>
+      <value>(9, 95)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -227,38 +227,77 @@
     </param>
   </block>
   <block>
-    <key>blocks_unpack_k_bits_bb</key>
+    <key>parameter</key>
     <param>
       <key>id</key>
-      <value>blocks_unpack_k_bits_bb_0_0</value>
+      <value>puncpat</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>k</key>
-      <value>8</value>
+      <key>label</key>
+      <value></value>
     </param>
     <param>
-      <key>alias</key>
+      <key>value</key>
+      <value>'11'</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>string</value>
+    </param>
+    <param>
+      <key>short_id</key>
       <value></value>
     </param>
     <param>
-      <key>affinity</key>
+      <key>alias</key>
       <value></value>
     </param>
     <param>
-      <key>minoutbuf</key>
-      <value>0</value>
+      <key>_coordinate</key>
+      <value>(248, 9)</value>
     </param>
     <param>
-      <key>maxoutbuf</key>
+      <key>_rotation</key>
       <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>parameter</key>
+    <param>
+      <key>id</key>
+      <value>frame_size</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>Frame Size</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>30</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>intx</value>
+    </param>
+    <param>
+      <key>short_id</key>
+      <value></value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
     <param>
       <key>_coordinate</key>
-      <value>(359, 341)</value>
+      <value>(484, 10)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -266,34 +305,57 @@
     </param>
   </block>
   <block>
-    <key>blocks_vector_source_x</key>
+    <key>parameter</key>
     <param>
       <key>id</key>
-      <value>blocks_vector_source_x_0_1_0</value>
+      <value>MTU</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
+      <key>label</key>
+      <value>MTU</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>1000</value>
+    </param>
+    <param>
       <key>type</key>
-      <value>byte</value>
+      <value>intx</value>
     </param>
     <param>
-      <key>vector</key>
-      <value>4*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value>
+      <key>short_id</key>
+      <value></value>
     </param>
     <param>
-      <key>tags</key>
-      <value>[]</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>repeat</key>
+      <key>_coordinate</key>
+      <value>(365, 9)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_unpack_k_bits_bb</key>
+    <param>
+      <key>id</key>
+      <value>blocks_unpack_k_bits_bb_0_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
+      <key>k</key>
+      <value>8</value>
     </param>
     <param>
       <key>alias</key>
@@ -313,7 +375,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(123, 218)</value>
+      <value>(99, 404)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -364,73 +426,62 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(100, 341)</value>
+      <value>(358, 404)</value>
     </param>
     <param>
       <key>_rotation</key>
-      <value>0</value>
+      <value>180</value>
     </param>
   </block>
   <block>
-    <key>blocks_ctrlport_monitor_performance</key>
+    <key>analog_random_source_x</key>
     <param>
       <key>id</key>
-      <value>blocks_ctrlport_monitor_performance_0</value>
+      <value>analog_random_source_x_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>False</value>
     </param>
     <param>
-      <key>en</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>alias</key>
-      <value></value>
+      <key>type</key>
+      <value>byte</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(651, 15)</value>
+      <key>min</key>
+      <value>0</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>max</key>
+      <value>256</value>
     </param>
-  </block>
-  <block>
-    <key>parameter</key>
     <param>
-      <key>id</key>
-      <value>puncpat</value>
+      <key>num_samps</key>
+      <value>1000</value>
     </param>
     <param>
-      <key>_enabled</key>
+      <key>repeat</key>
       <value>True</value>
     </param>
     <param>
-      <key>label</key>
+      <key>alias</key>
       <value></value>
     </param>
     <param>
-      <key>value</key>
-      <value>'11'</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>string</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>short_id</key>
-      <value></value>
+      <key>minoutbuf</key>
+      <value>0</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>maxoutbuf</key>
+      <value>0</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(248, 9)</value>
+      <value>(30, 271)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -438,77 +489,54 @@
     </param>
   </block>
   <block>
-    <key>parameter</key>
+    <key>blocks_vector_source_x</key>
     <param>
       <key>id</key>
-      <value>frame_size</value>
+      <value>blocks_vector_source_x_0_1_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>label</key>
-      <value>Frame Size</value>
-    </param>
-    <param>
-      <key>value</key>
-      <value>30</value>
-    </param>
-    <param>
       <key>type</key>
-      <value>intx</value>
-    </param>
-    <param>
-      <key>short_id</key>
-      <value></value>
-    </param>
-    <param>
-      <key>alias</key>
-      <value></value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(484, 10)</value>
+      <value>byte</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>vector</key>
+      <value>4*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value>
     </param>
-  </block>
-  <block>
-    <key>parameter</key>
     <param>
-      <key>id</key>
-      <value>MTU</value>
+      <key>tags</key>
+      <value>[]</value>
     </param>
     <param>
-      <key>_enabled</key>
+      <key>repeat</key>
       <value>True</value>
     </param>
     <param>
-      <key>label</key>
-      <value>MTU</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
-      <key>value</key>
-      <value>1000</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>type</key>
-      <value>intx</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>short_id</key>
-      <value></value>
+      <key>minoutbuf</key>
+      <value>0</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>maxoutbuf</key>
+      <value>0</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(365, 9)</value>
+      <value>(271, 211)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -559,7 +587,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(595, 331)</value>
+      <value>(281, 473)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -567,34 +595,30 @@
     </param>
   </block>
   <block>
-    <key>analog_random_source_x</key>
+    <key>fec_extended_encoder</key>
     <param>
       <key>id</key>
-      <value>analog_random_source_x_0</value>
+      <value>fec_extended_encoder_2</value>
     </param>
     <param>
       <key>_enabled</key>
-      <value>False</value>
+      <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>byte</value>
+      <key>encoder_list</key>
+      <value>enc_cc</value>
     </param>
     <param>
-      <key>min</key>
-      <value>0</value>
+      <key>threadtype</key>
+      <value>none</value>
     </param>
     <param>
-      <key>max</key>
-      <value>256</value>
-    </param>
-    <param>
-      <key>num_samps</key>
-      <value>1000</value>
+      <key>puncpat</key>
+      <value>puncpat</value>
     </param>
     <param>
-      <key>repeat</key>
-      <value>True</value>
+      <key>lentagname</key>
+      <value>length_tag</value>
     </param>
     <param>
       <key>alias</key>
@@ -614,18 +638,18 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(387, 203)</value>
+      <value>(705, 453)</value>
     </param>
     <param>
       <key>_rotation</key>
-      <value>180</value>
+      <value>0</value>
     </param>
   </block>
   <block>
     <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_1_0</value>
+      <value>blocks_char_to_float_1_2</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -657,7 +681,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1242, 536)</value>
+      <value>(1235, 186)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -665,22 +689,18 @@
     </param>
   </block>
   <block>
-    <key>blocks_char_to_float</key>
+    <key>digital_map_bb</key>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_1</value>
+      <value>digital_map_bb_0_1</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>scale</key>
-      <value>1</value>
+      <key>map</key>
+      <value>[-1, 1]</value>
     </param>
     <param>
       <key>alias</key>
@@ -700,7 +720,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(678, 536)</value>
+      <value>(1050, 186)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -708,18 +728,30 @@
     </param>
   </block>
   <block>
-    <key>digital_map_bb</key>
+    <key>fec_extended_encoder</key>
     <param>
       <key>id</key>
-      <value>digital_map_bb_0</value>
+      <value>fec_extended_encoder_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>map</key>
-      <value>[-1, 1]</value>
+      <key>encoder_list</key>
+      <value>enc_dummy</value>
+    </param>
+    <param>
+      <key>threadtype</key>
+      <value>none</value>
+    </param>
+    <param>
+      <key>puncpat</key>
+      <value>puncpat</value>
+    </param>
+    <param>
+      <key>lentagname</key>
+      <value>length_tag</value>
     </param>
     <param>
       <key>alias</key>
@@ -739,7 +771,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(493, 536)</value>
+      <value>(705, 155)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -747,22 +779,38 @@
     </param>
   </block>
   <block>
-    <key>blocks_char_to_float</key>
+    <key>fec_extended_decoder</key>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_1_0_0</value>
+      <value>fec_extended_decoder_2</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
+      <key>value</key>
+      <value>fec_extended_decoder</value>
     </param>
     <param>
-      <key>scale</key>
-      <value>1</value>
+      <key>decoder_list</key>
+      <value>dec_cc</value>
+    </param>
+    <param>
+      <key>threadtype</key>
+      <value>none</value>
+    </param>
+    <param>
+      <key>ann</key>
+      <value>None</value>
+    </param>
+    <param>
+      <key>puncpat</key>
+      <value>puncpat</value>
+    </param>
+    <param>
+      <key>lentagname</key>
+      <value>length_tag</value>
     </param>
     <param>
       <key>alias</key>
@@ -782,7 +830,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1231, 689)</value>
+      <value>(1455, 443)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -790,32 +838,24 @@
     </param>
   </block>
   <block>
-    <key>fec_extended_decoder</key>
+    <key>fec_extended_encoder</key>
     <param>
       <key>id</key>
-      <value>fec_extended_decoder_0_0_0</value>
+      <value>fec_extended_encoder_1</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>fec_extended_decoder</value>
-    </param>
-    <param>
-      <key>decoder_list</key>
-      <value>dec_cc</value>
+      <key>encoder_list</key>
+      <value>enc_rep</value>
     </param>
     <param>
       <key>threadtype</key>
       <value>none</value>
     </param>
     <param>
-      <key>ann</key>
-      <value>None</value>
-    </param>
-    <param>
       <key>puncpat</key>
       <value>puncpat</value>
     </param>
@@ -841,7 +881,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(899, 647)</value>
+      <value>(704, 301)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -849,22 +889,18 @@
     </param>
   </block>
   <block>
-    <key>blocks_char_to_float</key>
+    <key>digital_map_bb</key>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_1_1</value>
+      <value>digital_map_bb_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>scale</key>
-      <value>1</value>
+      <key>map</key>
+      <value>[-1, 1]</value>
     </param>
     <param>
       <key>alias</key>
@@ -884,7 +920,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(685, 689)</value>
+      <value>(1049, 332)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -892,18 +928,22 @@
     </param>
   </block>
   <block>
-    <key>digital_map_bb</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>digital_map_bb_0_0</value>
+      <value>blocks_char_to_float_1</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>map</key>
-      <value>[-1, 1]</value>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>scale</key>
+      <value>1</value>
     </param>
     <param>
       <key>alias</key>
@@ -923,7 +963,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(502, 689)</value>
+      <value>(1234, 332)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -931,50 +971,42 @@
     </param>
   </block>
   <block>
-    <key>variable_ccsds_encoder_def</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>enc_ccsds</value>
+      <value>blocks_char_to_float_1_1</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>"ok"</value>
-    </param>
-    <param>
-      <key>ndim</key>
+      <key>vlen</key>
       <value>1</value>
     </param>
     <param>
-      <key>dim1</key>
+      <key>scale</key>
       <value>1</value>
     </param>
     <param>
-      <key>dim2</key>
-      <value>4</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>frame_size*8</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>state_start</key>
+      <key>minoutbuf</key>
       <value>0</value>
     </param>
     <param>
-      <key>mode</key>
-      <value>fec.CC_STREAMING</value>
-    </param>
-    <param>
-      <key>alias</key>
-      <value></value>
+      <key>maxoutbuf</key>
+      <value>0</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1172, 822)</value>
+      <value>(1241, 483)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -982,46 +1014,38 @@
     </param>
   </block>
   <block>
-    <key>variable_repetition_encoder_def</key>
+    <key>digital_map_bb</key>
     <param>
       <key>id</key>
-      <value>enc_rep</value>
+      <value>digital_map_bb_0_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>"ok"</value>
-    </param>
-    <param>
-      <key>ndim</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>dim1</key>
-      <value>1</value>
+      <key>map</key>
+      <value>[-1, 1]</value>
     </param>
     <param>
-      <key>dim2</key>
-      <value>1</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>rep</key>
-      <value>3</value>
+      <key>minoutbuf</key>
+      <value>0</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>maxoutbuf</key>
+      <value>0</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(874, 869)</value>
+      <value>(1058, 485)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1029,10 +1053,10 @@
     </param>
   </block>
   <block>
-    <key>variable_repetition_decoder_def</key>
+    <key>fec_extended_decoder</key>
     <param>
       <key>id</key>
-      <value>dec_rep</value>
+      <value>fec_extended_decoder_1</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1040,39 +1064,47 @@
     </param>
     <param>
       <key>value</key>
-      <value>"ok"</value>
+      <value>fec_extended_decoder</value>
     </param>
     <param>
-      <key>ndim</key>
-      <value>1</value>
+      <key>decoder_list</key>
+      <value>dec_rep</value>
     </param>
     <param>
-      <key>dim1</key>
-      <value>1</value>
+      <key>threadtype</key>
+      <value>none</value>
     </param>
     <param>
-      <key>dim2</key>
-      <value>1</value>
+      <key>ann</key>
+      <value>None</value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
+      <key>puncpat</key>
+      <value>puncpat</value>
     </param>
     <param>
-      <key>rep</key>
-      <value>3</value>
+      <key>lentagname</key>
+      <value>length_tag</value>
     </param>
     <param>
-      <key>prob</key>
-      <value>0.5</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>alias</key>
+      <key>affinity</key>
       <value></value>
     </param>
     <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
       <key>_coordinate</key>
-      <value>(874, 1011)</value>
+      <value>(1454, 290)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1080,10 +1112,10 @@
     </param>
   </block>
   <block>
-    <key>variable_ccsds_decoder_def</key>
+    <key>fec_extended_decoder</key>
     <param>
       <key>id</key>
-      <value>dec_ccsds</value>
+      <value>fec_extended_decoder_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1091,43 +1123,47 @@
     </param>
     <param>
       <key>value</key>
-      <value>"ok"</value>
+      <value>fec_extended_decoder</value>
     </param>
     <param>
-      <key>ndim</key>
-      <value>1</value>
+      <key>decoder_list</key>
+      <value>dec_dummy</value>
     </param>
     <param>
-      <key>dim1</key>
-      <value>1</value>
+      <key>threadtype</key>
+      <value>none</value>
     </param>
     <param>
-      <key>dim2</key>
-      <value>4</value>
+      <key>ann</key>
+      <value>None</value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>frame_size*8</value>
+      <key>puncpat</key>
+      <value>puncpat</value>
     </param>
     <param>
-      <key>state_start</key>
-      <value>0</value>
+      <key>lentagname</key>
+      <value>length_tag</value>
     </param>
     <param>
-      <key>end_state</key>
-      <value>-1</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>mode</key>
-      <value>fec.CC_STREAMING</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1171, 988)</value>
+      <value>(1455, 143)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1135,129 +1171,42 @@
     </param>
   </block>
   <block>
-    <key>variable_cc_encoder_def</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>enc_cc</value>
+      <value>blocks_char_to_float_1_0_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>"ok"</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
-      <key>ndim</key>
+      <key>scale</key>
       <value>1</value>
     </param>
     <param>
-      <key>dim1</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>dim2</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
-    </param>
-    <param>
-      <key>k</key>
-      <value>k</value>
-    </param>
-    <param>
-      <key>rate</key>
-      <value>rate</value>
-    </param>
-    <param>
-      <key>polys</key>
-      <value>polys</value>
-    </param>
-    <param>
-      <key>state_start</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>mode</key>
-      <value>fec.CC_STREAMING</value>
-    </param>
-    <param>
       <key>alias</key>
       <value></value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(567, 843)</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>_rotation</key>
+      <key>minoutbuf</key>
       <value>0</value>
     </param>
-  </block>
-  <block>
-    <key>variable_cc_decoder_def</key>
-    <param>
-      <key>id</key>
-      <value>dec_cc</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>value</key>
-      <value>"ok"</value>
-    </param>
-    <param>
-      <key>ndim</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>dim1</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>dim2</key>
-      <value>4</value>
-    </param>
-    <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
-    </param>
-    <param>
-      <key>k</key>
-      <value>k</value>
-    </param>
-    <param>
-      <key>rate</key>
-      <value>rate</value>
-    </param>
-    <param>
-      <key>polys</key>
-      <value>polys</value>
-    </param>
     <param>
-      <key>state_start</key>
+      <key>maxoutbuf</key>
       <value>0</value>
     </param>
     <param>
-      <key>state_end</key>
-      <value>-1</value>
-    </param>
-    <param>
-      <key>mode</key>
-      <value>fec.CC_STREAMING</value>
-    </param>
-    <param>
-      <key>alias</key>
-      <value></value>
-    </param>
-    <param>
       <key>_coordinate</key>
-      <value>(563, 1076)</value>
+      <value>(1802, 485)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1265,30 +1214,22 @@
     </param>
   </block>
   <block>
-    <key>fec_extended_encoder</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>fec_extended_encoder_0_0</value>
+      <value>blocks_char_to_float_1_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>encoder_list</key>
-      <value>enc_cc</value>
-    </param>
-    <param>
-      <key>threadtype</key>
-      <value>none</value>
-    </param>
-    <param>
-      <key>puncpat</key>
-      <value>puncpat</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
-      <key>lentagname</key>
-      <value>length_tag</value>
+      <key>scale</key>
+      <value>1</value>
     </param>
     <param>
       <key>alias</key>
@@ -1308,7 +1249,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(138, 658)</value>
+      <value>(1798, 332)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1316,38 +1257,22 @@
     </param>
   </block>
   <block>
-    <key>fec_extended_decoder</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>fec_extended_decoder_0_0</value>
+      <value>blocks_char_to_float_1_0_1</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>fec_extended_decoder</value>
-    </param>
-    <param>
-      <key>decoder_list</key>
-      <value>dec_ccsds</value>
-    </param>
-    <param>
-      <key>threadtype</key>
-      <value>none</value>
-    </param>
-    <param>
-      <key>ann</key>
-      <value>None</value>
-    </param>
-    <param>
-      <key>puncpat</key>
-      <value>puncpat</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
-      <key>lentagname</key>
-      <value>length_tag</value>
+      <key>scale</key>
+      <value>1</value>
     </param>
     <param>
       <key>alias</key>
@@ -1367,7 +1292,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(900, 494)</value>
+      <value>(1799, 186)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1378,7 +1303,7 @@
     <key>qtgui_time_sink_x</key>
     <param>
       <key>id</key>
-      <value>qtgui_time_sink_x_0</value>
+      <value>qtgui_time_sink_x_1</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1414,11 +1339,11 @@
     </param>
     <param>
       <key>nconnections</key>
-      <value>2</value>
+      <value>3</value>
     </param>
     <param>
       <key>update_time</key>
-      <value>0.10</value>
+      <value>0.01</value>
     </param>
     <param>
       <key>entags</key>
@@ -1430,7 +1355,7 @@
     </param>
     <param>
       <key>tr_mode</key>
-      <value>qtgui.TRIG_MODE_FREE</value>
+      <value>qtgui.TRIG_MODE_NORM</value>
     </param>
     <param>
       <key>tr_slope</key>
@@ -1438,7 +1363,7 @@
     </param>
     <param>
       <key>tr_level</key>
-      <value>0.0</value>
+      <value>0.1</value>
     </param>
     <param>
       <key>tr_delay</key>
@@ -1454,7 +1379,7 @@
     </param>
     <param>
       <key>label1</key>
-      <value></value>
+      <value>None</value>
     </param>
     <param>
       <key>width1</key>
@@ -1478,7 +1403,7 @@
     </param>
     <param>
       <key>label2</key>
-      <value></value>
+      <value>Rep (Rate=3)</value>
     </param>
     <param>
       <key>width2</key>
@@ -1498,11 +1423,11 @@
     </param>
     <param>
       <key>alpha2</key>
-      <value>0.6</value>
+      <value>1.0</value>
     </param>
     <param>
       <key>label3</key>
-      <value></value>
+      <value>CC (K=7, Rate=2)</value>
     </param>
     <param>
       <key>width3</key>
@@ -1702,7 +1627,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1478, 577)</value>
+      <value>(2061, 300)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1710,62 +1635,346 @@
     </param>
   </block>
   <block>
-    <key>fec_extended_encoder</key>
+    <key>variable_cc_encoder_def</key>
     <param>
       <key>id</key>
-      <value>fec_extended_encoder_0</value>
+      <value>enc_cc</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>encoder_list</key>
-      <value>enc_ccsds</value>
+      <key>value</key>
+      <value>"ok"</value>
     </param>
     <param>
-      <key>threadtype</key>
-      <value>none</value>
+      <key>ndim</key>
+      <value>1</value>
     </param>
     <param>
-      <key>puncpat</key>
-      <value>puncpat</value>
+      <key>dim1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>lentagname</key>
-      <value>length_tag</value>
+      <key>dim2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>framebits</key>
+      <value>MTU*8</value>
+    </param>
+    <param>
+      <key>k</key>
+      <value>k</value>
+    </param>
+    <param>
+      <key>rate</key>
+      <value>rate</value>
+    </param>
+    <param>
+      <key>polys</key>
+      <value>polys</value>
+    </param>
+    <param>
+      <key>state_start</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>mode</key>
+      <value>fec.CC_STREAMING</value>
     </param>
     <param>
       <key>alias</key>
       <value></value>
     </param>
     <param>
-      <key>affinity</key>
+      <key>_coordinate</key>
+      <value>(509, 598)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_cc_decoder_def</key>
+    <param>
+      <key>id</key>
+      <value>dec_cc</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>"ok"</value>
+    </param>
+    <param>
+      <key>ndim</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>dim1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>dim2</key>
+      <value>4</value>
+    </param>
+    <param>
+      <key>framebits</key>
+      <value>MTU*8</value>
+    </param>
+    <param>
+      <key>k</key>
+      <value>k</value>
+    </param>
+    <param>
+      <key>rate</key>
+      <value>rate</value>
+    </param>
+    <param>
+      <key>polys</key>
+      <value>polys</value>
+    </param>
+    <param>
+      <key>state_start</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>state_end</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>mode</key>
+      <value>fec.CC_STREAMING</value>
+    </param>
+    <param>
+      <key>alias</key>
       <value></value>
     </param>
     <param>
-      <key>minoutbuf</key>
+      <key>_coordinate</key>
+      <value>(505, 831)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
       <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>variable_repetition_decoder_def</key>
+    <param>
+      <key>id</key>
+      <value>dec_rep</value>
+    </param>
     <param>
-      <key>maxoutbuf</key>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>"ok"</value>
+    </param>
+    <param>
+      <key>ndim</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>dim1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>dim2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>framebits</key>
+      <value>MTU*8</value>
+    </param>
+    <param>
+      <key>rep</key>
+      <value>3</value>
+    </param>
+    <param>
+      <key>prob</key>
+      <value>0.5</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(799, 741)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
       <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>variable_repetition_encoder_def</key>
+    <param>
+      <key>id</key>
+      <value>enc_rep</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>"ok"</value>
+    </param>
+    <param>
+      <key>ndim</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>dim1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>dim2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>framebits</key>
+      <value>MTU*8</value>
+    </param>
+    <param>
+      <key>rep</key>
+      <value>3</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
     <param>
       <key>_coordinate</key>
-      <value>(138, 505)</value>
+      <value>(799, 599)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_dummy_decoder_def</key>
+    <param>
+      <key>id</key>
+      <value>dec_dummy</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>"ok"</value>
+    </param>
+    <param>
+      <key>ndim</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>dim1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>dim2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>framebits</key>
+      <value>MTU*8</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1094, 722)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_dummy_encoder_def</key>
+    <param>
+      <key>id</key>
+      <value>enc_dummy</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>"ok"</value>
+    </param>
+    <param>
+      <key>ndim</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>dim1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>dim2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>framebits</key>
+      <value>MTU*8</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1092, 599)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_ctrlport_monitor_performance</key>
+    <param>
+      <key>id</key>
+      <value>blocks_ctrlport_monitor_performance_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>en</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(651, 15)</value>
     </param>
     <param>
       <key>_rotation</key>
       <value>0</value>
     </param>
   </block>
-  <connection>
-    <source_block_id>analog_random_source_x_0</source_block_id>
-    <sink_block_id>blocks_throttle_0</sink_block_id>
-    <source_key>0</source_key>
-    <sink_key>0</sink_key>
-  </connection>
   <connection>
     <source_block_id>blocks_vector_source_x_0_1_0</source_block_id>
     <sink_block_id>blocks_throttle_0</sink_block_id>
@@ -1774,7 +1983,7 @@
   </connection>
   <connection>
     <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
-    <sink_block_id>fec_extended_encoder_0</sink_block_id>
+    <sink_block_id>fec_extended_encoder_1</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
@@ -1791,50 +2000,62 @@
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>fec_extended_decoder_0_0_0</source_block_id>
-    <sink_block_id>blocks_char_to_float_1_0_0</sink_block_id>
+    <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
+    <sink_block_id>fec_extended_encoder_2</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blocks_char_to_float_1_1</source_block_id>
-    <sink_block_id>fec_extended_decoder_0_0_0</sink_block_id>
+    <source_block_id>analog_random_source_x_0</source_block_id>
+    <sink_block_id>blocks_throttle_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>fec_extended_encoder_0_0</source_block_id>
-    <sink_block_id>digital_map_bb_0_0</sink_block_id>
+    <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
+    <sink_block_id>fec_extended_encoder_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
-    <sink_block_id>fec_extended_encoder_0_0</sink_block_id>
+    <source_block_id>digital_map_bb_0_1</source_block_id>
+    <sink_block_id>blocks_char_to_float_1_2</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blocks_char_to_float_1_0</source_block_id>
-    <sink_block_id>qtgui_time_sink_x_0</sink_block_id>
+    <source_block_id>blocks_char_to_float_1_2</source_block_id>
+    <sink_block_id>fec_extended_decoder_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>fec_extended_decoder_0</source_block_id>
+    <sink_block_id>blocks_char_to_float_1_0_1</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
     <source_block_id>fec_extended_encoder_0</source_block_id>
+    <sink_block_id>digital_map_bb_0_1</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>fec_extended_encoder_1</source_block_id>
     <sink_block_id>digital_map_bb_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>fec_extended_decoder_0_0</source_block_id>
+    <source_block_id>fec_extended_decoder_1</source_block_id>
     <sink_block_id>blocks_char_to_float_1_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
     <source_block_id>blocks_char_to_float_1</source_block_id>
-    <sink_block_id>fec_extended_decoder_0_0</sink_block_id>
+    <sink_block_id>fec_extended_decoder_1</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
@@ -1845,14 +2066,44 @@
     <sink_key>0</sink_key>
   </connection>
   <connection>
+    <source_block_id>digital_map_bb_0_0</source_block_id>
+    <sink_block_id>blocks_char_to_float_1_1</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>fec_extended_encoder_2</source_block_id>
+    <sink_block_id>digital_map_bb_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_char_to_float_1_1</source_block_id>
+    <sink_block_id>fec_extended_decoder_2</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>fec_extended_decoder_2</source_block_id>
+    <sink_block_id>blocks_char_to_float_1_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
     <source_block_id>blocks_char_to_float_1_0_0</source_block_id>
-    <sink_block_id>qtgui_time_sink_x_0</sink_block_id>
+    <sink_block_id>qtgui_time_sink_x_1</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>2</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_char_to_float_1_0</source_block_id>
+    <sink_block_id>qtgui_time_sink_x_1</sink_block_id>
     <source_key>0</source_key>
     <sink_key>1</sink_key>
   </connection>
   <connection>
-    <source_block_id>digital_map_bb_0_0</source_block_id>
-    <sink_block_id>blocks_char_to_float_1_1</sink_block_id>
+    <source_block_id>blocks_char_to_float_1_0_1</source_block_id>
+    <sink_block_id>qtgui_time_sink_x_1</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-fec/lib/repetition_decoder_impl.cc 
b/gr-fec/lib/repetition_decoder_impl.cc
index b7b3f00..bce41de 100644
--- a/gr-fec/lib/repetition_decoder_impl.cc
+++ b/gr-fec/lib/repetition_decoder_impl.cc
@@ -125,7 +125,7 @@ namespace gr {
       repetition_decoder_impl::generic_work(void *inbuffer, void *outbuffer)
       {
         const float *in = (const float*)inbuffer;
-        int8_t *out = (int8_t*)outbuffer;
+        unsigned char *out = (unsigned char *) outbuffer;
 
         for(unsigned int i = 0; i < d_frame_size; i++) {
           for(unsigned int r = 0; r < d_rep; r++) {
diff --git a/gr-fec/lib/repetition_encoder_impl.cc 
b/gr-fec/lib/repetition_encoder_impl.cc
index a608ed6..dd6bc01 100644
--- a/gr-fec/lib/repetition_encoder_impl.cc
+++ b/gr-fec/lib/repetition_encoder_impl.cc
@@ -87,7 +87,7 @@ namespace gr {
       double
       repetition_encoder_impl::rate()
       {
-        return 1.0/static_cast<double>(d_rep);
+        return static_cast<double>(d_rep);
       }
 
       void
diff --git a/gr-fec/lib/tagged_decoder_impl.cc 
b/gr-fec/lib/tagged_decoder_impl.cc
index 595537c..bccf514 100644
--- a/gr-fec/lib/tagged_decoder_impl.cc
+++ b/gr-fec/lib/tagged_decoder_impl.cc
@@ -52,7 +52,6 @@ namespace gr {
                             lengthtagname),
         d_input_item_size(input_item_size), 
d_output_item_size(output_item_size)
     {
-      d_inbuf = buf_sptr(new unsigned char[(my_decoder->get_input_size() + 
my_decoder->get_history())*input_item_size]);
       d_decoder = my_decoder;
 
       set_relative_rate(d_decoder->rate());
@@ -77,18 +76,14 @@ namespace gr {
       const unsigned char *in = (unsigned char*)input_items[0];
       unsigned char *out = (unsigned char *)output_items[0];
 
-      d_decoder->set_frame_size(ninput_items[0]/2);
+      d_decoder->set_frame_size(ninput_items[0]*d_decoder->rate());
       if(noutput_items < d_decoder->get_output_size())
         return 0;
 
       GR_LOG_DEBUG(d_debug_logger, boost::format("%1%, %2%, %3%")      \
                    % noutput_items % ninput_items[0] % 
d_decoder->get_output_size());
 
-      memcpy((void *)d_inbuf.get(),
-             in+(d_decoder->get_input_size() * d_input_item_size),
-             (d_decoder->get_input_size() + d_decoder->get_history()) * 
d_input_item_size);
-
-      d_decoder->generic_work((void*)d_inbuf.get(), (void*)(out));
+      d_decoder->generic_work((void*)in, (void*)out);
 
       add_item_tag(0, nitems_written(0) + 
d_decoder->get_output_size()*d_output_item_size,
                    pmt::intern(d_decoder->alias()), pmt::PMT_T, 
pmt::intern(alias()));
diff --git a/gr-fec/lib/tagged_decoder_impl.h b/gr-fec/lib/tagged_decoder_impl.h
index 4eeab25..ec81a4f 100644
--- a/gr-fec/lib/tagged_decoder_impl.h
+++ b/gr-fec/lib/tagged_decoder_impl.h
@@ -34,7 +34,6 @@ namespace gr {
       generic_decoder::sptr d_decoder;
       size_t d_input_item_size;
       size_t d_output_item_size;
-      buf_sptr d_inbuf;
 
     public:
       tagged_decoder_impl(generic_decoder::sptr my_decoder,
diff --git a/gr-fec/lib/tagged_encoder_impl.cc 
b/gr-fec/lib/tagged_encoder_impl.cc
index f914866..4d19e4c 100644
--- a/gr-fec/lib/tagged_encoder_impl.cc
+++ b/gr-fec/lib/tagged_encoder_impl.cc
@@ -54,6 +54,8 @@ namespace gr {
         d_input_item_size(input_item_size), 
d_output_item_size(output_item_size)
     {
       d_encoder = my_encoder;
+
+      set_relative_rate(d_encoder->rate());
     }
 
     tagged_encoder_impl::~tagged_encoder_impl()
diff --git a/gr-fec/python/fec/extended_decoder.py 
b/gr-fec/python/fec/extended_decoder.py
index 072adcd..792d7df 100644
--- a/gr-fec/python/fec/extended_decoder.py
+++ b/gr-fec/python/fec/extended_decoder.py
@@ -20,11 +20,16 @@
 # Boston, MA 02110-1301, USA.
 #
 
-from gnuradio import gr, blocks, digital
+from gnuradio import gr, blocks
 import fec_swig as fec
 from bitflip import *
 import sys
 
+if sys.modules.has_key("gnuradio.digital"):
+    digital = sys.modules["gnuradio.digital"]
+else:
+    from gnuradio import digital
+
 from threaded_decoder import threaded_decoder
 from capillary_threaded_decoder import capillary_threaded_decoder
 
diff --git a/gr-fec/python/fec/fec_test.py b/gr-fec/python/fec/fec_test.py
index 0a7524a..6466a0b 100644
--- a/gr-fec/python/fec/fec_test.py
+++ b/gr-fec/python/fec/fec_test.py
@@ -21,8 +21,14 @@
 #
 
 from gnuradio.fec.bitflip import read_bitlist
-from gnuradio import gr, blocks, analog, digital
+from gnuradio import gr, blocks, analog
 import math
+import sys
+
+if sys.modules.has_key("gnuradio.digital"):
+    digital = sys.modules["gnuradio.digital"]
+else:
+    from gnuradio import digital
 
 from extended_encoder import extended_encoder
 from extended_decoder import extended_decoder



reply via email to

[Prev in Thread] Current Thread [Next in Thread]