commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] [gnuradio] 40/57: fec: wip: adding async (PDU) encoder


From: git
Subject: [Commit-gnuradio] [gnuradio] 40/57: fec: wip: adding async (PDU) encoder and decoder blocks.
Date: Wed, 21 May 2014 03:10:30 +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 5a55bb4e468812f3620323ab948d1ee4f12eab59
Author: Tom Rondeau <address@hidden>
Date:   Thu May 15 16:43:16 2014 -0400

    fec: wip: adding async (PDU) encoder and decoder blocks.
---
 gr-fec/examples/fecapi_tagged_decoders.grc         | 1222 +++++++++---------
 gr-fec/examples/fecapi_tagged_encoders.grc         | 1348 ++++++++++++++------
 gr-fec/grc/fec_async_decoder.xml                   |   62 +
 gr-fec/grc/fec_async_encoder.xml                   |   30 +
 gr-fec/grc/fec_block_tree.xml                      |    4 +
 gr-fec/grc/fec_tagged_decoder.xml                  |   67 +
 gr-fec/grc/fec_tagged_encoder.xml                  |   67 +
 gr-fec/grc/variable_dummy_decoder_def_list.xml     |   12 +-
 gr-fec/grc/variable_dummy_encoder_def_list.xml     |   12 +-
 .../grc/variable_repetition_decoder_def_list.xml   |   11 +-
 .../grc/variable_repetition_encoder_def_list.xml   |   12 +-
 gr-fec/include/gnuradio/fec/CMakeLists.txt         |    2 +
 gr-fec/include/gnuradio/fec/async_decoder.h        |   69 +
 gr-fec/include/gnuradio/fec/async_encoder.h        |   65 +
 gr-fec/include/gnuradio/fec/tagged_decoder.h       |    1 -
 gr-fec/lib/CMakeLists.txt                          |    2 +
 gr-fec/lib/async_decoder_impl.cc                   |  111 ++
 gr-fec/lib/async_decoder_impl.h                    |   55 +
 gr-fec/lib/async_encoder_impl.cc                   |  118 ++
 gr-fec/lib/async_encoder_impl.h                    |   53 +
 gr-fec/swig/fec_swig.i                             |    6 +
 21 files changed, 2290 insertions(+), 1039 deletions(-)

diff --git a/gr-fec/examples/fecapi_tagged_decoders.grc 
b/gr-fec/examples/fecapi_tagged_decoders.grc
index 8d038e1..9734732 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 18:15:54 2014</timestamp>
+  <timestamp>Wed May 14 12:22:39 2014</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -344,18 +344,34 @@
     </param>
   </block>
   <block>
-    <key>blocks_unpack_k_bits_bb</key>
+    <key>blocks_vector_source_x</key>
     <param>
       <key>id</key>
-      <value>blocks_unpack_k_bits_bb_0_0</value>
+      <value>blocks_vector_source_x_0_1_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>k</key>
-      <value>8</value>
+      <key>type</key>
+      <value>byte</value>
+    </param>
+    <param>
+      <key>vector</key>
+      <value>4*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value>
+    </param>
+    <param>
+      <key>tags</key>
+      <value>[]</value>
+    </param>
+    <param>
+      <key>repeat</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
       <key>alias</key>
@@ -375,38 +391,30 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(99, 404)</value>
+      <value>(271, 211)</value>
     </param>
     <param>
       <key>_rotation</key>
-      <value>180</value>
+      <value>0</value>
     </param>
   </block>
   <block>
-    <key>blocks_throttle</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>blocks_throttle_0</value>
+      <value>blocks_char_to_float_1_2</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>byte</value>
-    </param>
-    <param>
-      <key>samples_per_second</key>
-      <value>samp_rate</value>
-    </param>
-    <param>
       <key>vlen</key>
       <value>1</value>
     </param>
     <param>
-      <key>ignoretag</key>
-      <value>True</value>
+      <key>scale</key>
+      <value>1</value>
     </param>
     <param>
       <key>alias</key>
@@ -426,42 +434,26 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(358, 404)</value>
+      <value>(1235, 186)</value>
     </param>
     <param>
       <key>_rotation</key>
-      <value>180</value>
+      <value>0</value>
     </param>
   </block>
   <block>
-    <key>analog_random_source_x</key>
+    <key>digital_map_bb</key>
     <param>
       <key>id</key>
-      <value>analog_random_source_x_0</value>
+      <value>digital_map_bb_0_1</value>
     </param>
     <param>
       <key>_enabled</key>
-      <value>False</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>byte</value>
-    </param>
-    <param>
-      <key>min</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>max</key>
-      <value>256</value>
-    </param>
-    <param>
-      <key>num_samps</key>
-      <value>1000</value>
+      <value>True</value>
     </param>
     <param>
-      <key>repeat</key>
-      <value>True</value>
+      <key>map</key>
+      <value>[-1, 1]</value>
     </param>
     <param>
       <key>alias</key>
@@ -481,7 +473,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(30, 271)</value>
+      <value>(1050, 186)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -489,34 +481,38 @@
     </param>
   </block>
   <block>
-    <key>blocks_vector_source_x</key>
+    <key>fec_extended_decoder</key>
     <param>
       <key>id</key>
-      <value>blocks_vector_source_x_0_1_0</value>
+      <value>fec_extended_decoder_2</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>byte</value>
+      <key>value</key>
+      <value>fec_extended_decoder</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>decoder_list</key>
+      <value>dec_cc</value>
     </param>
     <param>
-      <key>tags</key>
-      <value>[]</value>
+      <key>threadtype</key>
+      <value>none</value>
     </param>
     <param>
-      <key>repeat</key>
-      <value>True</value>
+      <key>ann</key>
+      <value>None</value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
+      <key>puncpat</key>
+      <value>puncpat</value>
+    </param>
+    <param>
+      <key>lentagname</key>
+      <value>length_tag</value>
     </param>
     <param>
       <key>alias</key>
@@ -536,7 +532,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(271, 211)</value>
+      <value>(1455, 443)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -544,30 +540,18 @@
     </param>
   </block>
   <block>
-    <key>blocks_stream_to_tagged_stream</key>
+    <key>digital_map_bb</key>
     <param>
       <key>id</key>
-      <value>blocks_stream_to_tagged_stream_0_0</value>
+      <value>digital_map_bb_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>byte</value>
-    </param>
-    <param>
-      <key>vlen</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>packet_len</key>
-      <value>frame_size*8</value>
-    </param>
-    <param>
-      <key>len_tag_key</key>
-      <value>length_tag</value>
+      <key>map</key>
+      <value>[-1, 1]</value>
     </param>
     <param>
       <key>alias</key>
@@ -587,7 +571,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(281, 473)</value>
+      <value>(1049, 332)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -595,30 +579,22 @@
     </param>
   </block>
   <block>
-    <key>fec_extended_encoder</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>fec_extended_encoder_2</value>
+      <value>blocks_char_to_float_1</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>
@@ -638,7 +614,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(705, 453)</value>
+      <value>(1234, 332)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -649,7 +625,7 @@
     <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_1_2</value>
+      <value>blocks_char_to_float_1_1</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -681,7 +657,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1235, 186)</value>
+      <value>(1241, 483)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -692,7 +668,7 @@
     <key>digital_map_bb</key>
     <param>
       <key>id</key>
-      <value>digital_map_bb_0_1</value>
+      <value>digital_map_bb_0_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -720,7 +696,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1050, 186)</value>
+      <value>(1058, 485)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -728,24 +704,32 @@
     </param>
   </block>
   <block>
-    <key>fec_extended_encoder</key>
+    <key>fec_extended_decoder</key>
     <param>
       <key>id</key>
-      <value>fec_extended_encoder_0</value>
+      <value>fec_extended_decoder_1</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>encoder_list</key>
-      <value>enc_dummy</value>
+      <key>value</key>
+      <value>fec_extended_decoder</value>
+    </param>
+    <param>
+      <key>decoder_list</key>
+      <value>dec_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>
@@ -771,7 +755,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(705, 155)</value>
+      <value>(1454, 290)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -782,7 +766,7 @@
     <key>fec_extended_decoder</key>
     <param>
       <key>id</key>
-      <value>fec_extended_decoder_2</value>
+      <value>fec_extended_decoder_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -794,7 +778,7 @@
     </param>
     <param>
       <key>decoder_list</key>
-      <value>dec_cc</value>
+      <value>dec_dummy</value>
     </param>
     <param>
       <key>threadtype</key>
@@ -830,7 +814,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1455, 443)</value>
+      <value>(1455, 143)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -838,30 +822,22 @@
     </param>
   </block>
   <block>
-    <key>fec_extended_encoder</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>fec_extended_encoder_1</value>
+      <value>blocks_char_to_float_1_0_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>encoder_list</key>
-      <value>enc_rep</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>
@@ -881,7 +857,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(704, 301)</value>
+      <value>(1802, 485)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -889,18 +865,22 @@
     </param>
   </block>
   <block>
-    <key>digital_map_bb</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>digital_map_bb_0</value>
+      <value>blocks_char_to_float_1_0</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>
@@ -920,7 +900,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1049, 332)</value>
+      <value>(1798, 332)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -931,7 +911,7 @@
     <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_1</value>
+      <value>blocks_char_to_float_1_0_1</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -963,7 +943,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1234, 332)</value>
+      <value>(1799, 186)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -971,328 +951,334 @@
     </param>
   </block>
   <block>
-    <key>blocks_char_to_float</key>
+    <key>qtgui_time_sink_x</key>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_1_1</value>
+      <value>qtgui_time_sink_x_1</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
+      <key>type</key>
+      <value>float</value>
     </param>
     <param>
-      <key>scale</key>
-      <value>1</value>
+      <key>name</key>
+      <value>QT GUI Plot</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>size</key>
+      <value>2048</value>
     </param>
     <param>
-      <key>affinity</key>
-      <value></value>
+      <key>srate</key>
+      <value>samp_rate</value>
     </param>
     <param>
-      <key>minoutbuf</key>
-      <value>0</value>
+      <key>autoscale</key>
+      <value>False</value>
     </param>
     <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
+      <key>ymin</key>
+      <value>-0.5</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(1241, 483)</value>
+      <key>ymax</key>
+      <value>1.5</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>nconnections</key>
+      <value>3</value>
     </param>
-  </block>
-  <block>
-    <key>digital_map_bb</key>
     <param>
-      <key>id</key>
-      <value>digital_map_bb_0_0</value>
-    </param>
+      <key>update_time</key>
+      <value>0.01</value>
+    </param>
     <param>
-      <key>_enabled</key>
+      <key>entags</key>
       <value>True</value>
     </param>
     <param>
-      <key>map</key>
-      <value>[-1, 1]</value>
+      <key>gui_hint</key>
+      <value></value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>tr_mode</key>
+      <value>qtgui.TRIG_MODE_NORM</value>
     </param>
     <param>
-      <key>affinity</key>
-      <value></value>
+      <key>tr_slope</key>
+      <value>qtgui.TRIG_SLOPE_POS</value>
     </param>
     <param>
-      <key>minoutbuf</key>
+      <key>tr_level</key>
+      <value>0.1</value>
+    </param>
+    <param>
+      <key>tr_delay</key>
       <value>0</value>
     </param>
     <param>
-      <key>maxoutbuf</key>
+      <key>tr_chan</key>
       <value>0</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(1058, 485)</value>
+      <key>tr_tag</key>
+      <value>""</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>label1</key>
+      <value>None</value>
     </param>
-  </block>
-  <block>
-    <key>fec_extended_decoder</key>
     <param>
-      <key>id</key>
-      <value>fec_extended_decoder_1</value>
+      <key>width1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>color1</key>
+      <value>"blue"</value>
     </param>
     <param>
-      <key>value</key>
-      <value>fec_extended_decoder</value>
+      <key>style1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>decoder_list</key>
-      <value>dec_rep</value>
+      <key>marker1</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>threadtype</key>
-      <value>none</value>
+      <key>alpha1</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>ann</key>
-      <value>None</value>
+      <key>label2</key>
+      <value>Rep (Rate=3)</value>
     </param>
     <param>
-      <key>puncpat</key>
-      <value>puncpat</value>
+      <key>width2</key>
+      <value>1</value>
     </param>
     <param>
-      <key>lentagname</key>
-      <value>length_tag</value>
+      <key>color2</key>
+      <value>"red"</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>style2</key>
+      <value>1</value>
     </param>
     <param>
-      <key>affinity</key>
-      <value></value>
+      <key>marker2</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>minoutbuf</key>
-      <value>0</value>
+      <key>alpha2</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
+      <key>label3</key>
+      <value>CC (K=7, Rate=2)</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(1454, 290)</value>
+      <key>width3</key>
+      <value>1</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>color3</key>
+      <value>"green"</value>
     </param>
-  </block>
-  <block>
-    <key>fec_extended_decoder</key>
     <param>
-      <key>id</key>
-      <value>fec_extended_decoder_0</value>
+      <key>style3</key>
+      <value>1</value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>marker3</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>value</key>
-      <value>fec_extended_decoder</value>
+      <key>alpha3</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>decoder_list</key>
-      <value>dec_dummy</value>
+      <key>label4</key>
+      <value></value>
     </param>
     <param>
-      <key>threadtype</key>
-      <value>none</value>
+      <key>width4</key>
+      <value>1</value>
     </param>
     <param>
-      <key>ann</key>
-      <value>None</value>
+      <key>color4</key>
+      <value>"black"</value>
     </param>
     <param>
-      <key>puncpat</key>
-      <value>puncpat</value>
+      <key>style4</key>
+      <value>1</value>
     </param>
     <param>
-      <key>lentagname</key>
-      <value>length_tag</value>
+      <key>marker4</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>alpha4</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>affinity</key>
+      <key>label5</key>
       <value></value>
     </param>
     <param>
-      <key>minoutbuf</key>
-      <value>0</value>
+      <key>width5</key>
+      <value>1</value>
     </param>
     <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
+      <key>color5</key>
+      <value>"cyan"</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(1455, 143)</value>
+      <key>style5</key>
+      <value>1</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>marker5</key>
+      <value>-1</value>
     </param>
-  </block>
-  <block>
-    <key>blocks_char_to_float</key>
     <param>
-      <key>id</key>
-      <value>blocks_char_to_float_1_0_0</value>
+      <key>alpha5</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>label6</key>
+      <value></value>
     </param>
     <param>
-      <key>vlen</key>
+      <key>width6</key>
       <value>1</value>
     </param>
     <param>
-      <key>scale</key>
+      <key>color6</key>
+      <value>"magenta"</value>
+    </param>
+    <param>
+      <key>style6</key>
       <value>1</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>marker6</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>affinity</key>
+      <key>alpha6</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label7</key>
       <value></value>
     </param>
     <param>
-      <key>minoutbuf</key>
-      <value>0</value>
+      <key>width7</key>
+      <value>1</value>
     </param>
     <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
+      <key>color7</key>
+      <value>"yellow"</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(1802, 485)</value>
+      <key>style7</key>
+      <value>1</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>marker7</key>
+      <value>-1</value>
     </param>
-  </block>
-  <block>
-    <key>blocks_char_to_float</key>
     <param>
-      <key>id</key>
-      <value>blocks_char_to_float_1_0</value>
+      <key>alpha7</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>label8</key>
+      <value></value>
     </param>
     <param>
-      <key>vlen</key>
+      <key>width8</key>
       <value>1</value>
     </param>
     <param>
-      <key>scale</key>
+      <key>color8</key>
+      <value>"dark red"</value>
+    </param>
+    <param>
+      <key>style8</key>
       <value>1</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>marker8</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>affinity</key>
+      <key>alpha8</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>label9</key>
       <value></value>
     </param>
     <param>
-      <key>minoutbuf</key>
-      <value>0</value>
+      <key>width9</key>
+      <value>1</value>
     </param>
     <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
+      <key>color9</key>
+      <value>"dark green"</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(1798, 332)</value>
+      <key>style9</key>
+      <value>1</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>marker9</key>
+      <value>-1</value>
     </param>
-  </block>
-  <block>
-    <key>blocks_char_to_float</key>
     <param>
-      <key>id</key>
-      <value>blocks_char_to_float_1_0_1</value>
+      <key>alpha9</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>label10</key>
+      <value></value>
     </param>
     <param>
-      <key>vlen</key>
+      <key>width10</key>
       <value>1</value>
     </param>
     <param>
-      <key>scale</key>
+      <key>color10</key>
+      <value>"blue"</value>
+    </param>
+    <param>
+      <key>style10</key>
       <value>1</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>marker10</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>affinity</key>
-      <value></value>
+      <key>alpha10</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>minoutbuf</key>
-      <value>0</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1799, 186)</value>
+      <value>(2061, 300)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1300,322 +1286,375 @@
     </param>
   </block>
   <block>
-    <key>qtgui_time_sink_x</key>
+    <key>variable_cc_encoder_def</key>
     <param>
       <key>id</key>
-      <value>qtgui_time_sink_x_1</value>
+      <value>enc_cc</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>float</value>
+      <key>value</key>
+      <value>"ok"</value>
     </param>
     <param>
-      <key>name</key>
-      <value>QT GUI Plot</value>
+      <key>ndim</key>
+      <value>1</value>
     </param>
     <param>
-      <key>size</key>
-      <value>2048</value>
+      <key>dim1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>srate</key>
-      <value>samp_rate</value>
+      <key>dim2</key>
+      <value>1</value>
     </param>
     <param>
-      <key>autoscale</key>
-      <value>False</value>
+      <key>framebits</key>
+      <value>MTU*8</value>
     </param>
     <param>
-      <key>ymin</key>
-      <value>-0.5</value>
+      <key>k</key>
+      <value>k</value>
     </param>
     <param>
-      <key>ymax</key>
-      <value>1.5</value>
+      <key>rate</key>
+      <value>rate</value>
     </param>
     <param>
-      <key>nconnections</key>
-      <value>3</value>
+      <key>polys</key>
+      <value>polys</value>
     </param>
     <param>
-      <key>update_time</key>
-      <value>0.01</value>
+      <key>state_start</key>
+      <value>0</value>
     </param>
     <param>
-      <key>entags</key>
-      <value>True</value>
+      <key>mode</key>
+      <value>fec.CC_STREAMING</value>
     </param>
     <param>
-      <key>gui_hint</key>
+      <key>alias</key>
       <value></value>
     </param>
     <param>
-      <key>tr_mode</key>
-      <value>qtgui.TRIG_MODE_NORM</value>
+      <key>_coordinate</key>
+      <value>(509, 598)</value>
     </param>
     <param>
-      <key>tr_slope</key>
-      <value>qtgui.TRIG_SLOPE_POS</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>variable_cc_decoder_def</key>
     <param>
-      <key>tr_level</key>
-      <value>0.1</value>
+      <key>id</key>
+      <value>dec_cc</value>
     </param>
     <param>
-      <key>tr_delay</key>
-      <value>0</value>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
-      <key>tr_chan</key>
-      <value>0</value>
+      <key>value</key>
+      <value>"ok"</value>
     </param>
     <param>
-      <key>tr_tag</key>
-      <value>""</value>
+      <key>ndim</key>
+      <value>1</value>
     </param>
     <param>
-      <key>label1</key>
-      <value>None</value>
+      <key>dim1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>width1</key>
-      <value>1</value>
+      <key>dim2</key>
+      <value>4</value>
     </param>
     <param>
-      <key>color1</key>
-      <value>"blue"</value>
+      <key>framebits</key>
+      <value>MTU*8</value>
     </param>
     <param>
-      <key>style1</key>
-      <value>1</value>
+      <key>k</key>
+      <value>k</value>
     </param>
     <param>
-      <key>marker1</key>
+      <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>alpha1</key>
-      <value>1.0</value>
+      <key>mode</key>
+      <value>fec.CC_STREAMING</value>
     </param>
     <param>
-      <key>label2</key>
-      <value>Rep (Rate=3)</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>width2</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>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>"ok"</value>
+    </param>
+    <param>
+      <key>ndim</key>
       <value>1</value>
     </param>
     <param>
-      <key>color2</key>
-      <value>"red"</value>
+      <key>dim1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>style2</key>
+      <key>dim2</key>
       <value>1</value>
     </param>
     <param>
-      <key>marker2</key>
-      <value>-1</value>
+      <key>framebits</key>
+      <value>MTU*8</value>
     </param>
     <param>
-      <key>alpha2</key>
-      <value>1.0</value>
+      <key>rep</key>
+      <value>3</value>
     </param>
     <param>
-      <key>label3</key>
-      <value>CC (K=7, Rate=2)</value>
+      <key>prob</key>
+      <value>0.5</value>
     </param>
     <param>
-      <key>width3</key>
-      <value>1</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>color3</key>
-      <value>"green"</value>
+      <key>_coordinate</key>
+      <value>(799, 741)</value>
     </param>
     <param>
-      <key>style3</key>
-      <value>1</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>variable_dummy_decoder_def</key>
     <param>
-      <key>marker3</key>
-      <value>-1</value>
+      <key>id</key>
+      <value>dec_dummy</value>
     </param>
     <param>
-      <key>alpha3</key>
-      <value>1.0</value>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
-      <key>label4</key>
-      <value></value>
+      <key>value</key>
+      <value>"ok"</value>
     </param>
     <param>
-      <key>width4</key>
+      <key>ndim</key>
       <value>1</value>
     </param>
     <param>
-      <key>color4</key>
-      <value>"black"</value>
+      <key>dim1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>style4</key>
+      <key>dim2</key>
       <value>1</value>
     </param>
     <param>
-      <key>marker4</key>
-      <value>-1</value>
+      <key>framebits</key>
+      <value>MTU*8</value>
     </param>
     <param>
-      <key>alpha4</key>
-      <value>1.0</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>label5</key>
-      <value></value>
+      <key>_coordinate</key>
+      <value>(1094, 722)</value>
     </param>
     <param>
-      <key>width5</key>
-      <value>1</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>variable_dummy_encoder_def</key>
     <param>
-      <key>color5</key>
-      <value>"cyan"</value>
+      <key>id</key>
+      <value>enc_dummy</value>
     </param>
     <param>
-      <key>style5</key>
-      <value>1</value>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
-      <key>marker5</key>
-      <value>-1</value>
+      <key>value</key>
+      <value>"ok"</value>
     </param>
     <param>
-      <key>alpha5</key>
-      <value>1.0</value>
+      <key>ndim</key>
+      <value>1</value>
     </param>
     <param>
-      <key>label6</key>
-      <value></value>
+      <key>dim1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>width6</key>
+      <key>dim2</key>
       <value>1</value>
     </param>
     <param>
-      <key>color6</key>
-      <value>"magenta"</value>
+      <key>framebits</key>
+      <value>MTU*8</value>
     </param>
     <param>
-      <key>style6</key>
-      <value>1</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>marker6</key>
-      <value>-1</value>
+      <key>_coordinate</key>
+      <value>(1092, 599)</value>
     </param>
     <param>
-      <key>alpha6</key>
-      <value>1.0</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>blocks_ctrlport_monitor_performance</key>
     <param>
-      <key>label7</key>
-      <value></value>
+      <key>id</key>
+      <value>blocks_ctrlport_monitor_performance_0</value>
     </param>
     <param>
-      <key>width7</key>
-      <value>1</value>
+      <key>_enabled</key>
+      <value>False</value>
     </param>
     <param>
-      <key>color7</key>
-      <value>"yellow"</value>
+      <key>en</key>
+      <value>True</value>
     </param>
     <param>
-      <key>style7</key>
-      <value>1</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>marker7</key>
-      <value>-1</value>
+      <key>_coordinate</key>
+      <value>(651, 15)</value>
     </param>
     <param>
-      <key>alpha7</key>
-      <value>1.0</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>variable_repetition_encoder_def</key>
     <param>
-      <key>label8</key>
-      <value></value>
+      <key>id</key>
+      <value>enc_rep</value>
     </param>
     <param>
-      <key>width8</key>
-      <value>1</value>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
-      <key>color8</key>
-      <value>"dark red"</value>
+      <key>value</key>
+      <value>"ok"</value>
     </param>
     <param>
-      <key>style8</key>
+      <key>ndim</key>
       <value>1</value>
     </param>
     <param>
-      <key>marker8</key>
-      <value>-1</value>
+      <key>dim1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>alpha8</key>
-      <value>1.0</value>
+      <key>dim2</key>
+      <value>1</value>
     </param>
     <param>
-      <key>label9</key>
-      <value></value>
+      <key>framebits</key>
+      <value>MTU*8</value>
     </param>
     <param>
-      <key>width9</key>
-      <value>1</value>
+      <key>rep</key>
+      <value>3</value>
     </param>
     <param>
-      <key>color9</key>
-      <value>"dark green"</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>style9</key>
-      <value>1</value>
+      <key>_coordinate</key>
+      <value>(799, 599)</value>
     </param>
     <param>
-      <key>marker9</key>
-      <value>-1</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>analog_random_source_x</key>
     <param>
-      <key>alpha9</key>
-      <value>1.0</value>
+      <key>id</key>
+      <value>analog_random_source_x_0</value>
     </param>
     <param>
-      <key>label10</key>
-      <value></value>
+      <key>_enabled</key>
+      <value>False</value>
     </param>
     <param>
-      <key>width10</key>
-      <value>1</value>
+      <key>type</key>
+      <value>byte</value>
     </param>
     <param>
-      <key>color10</key>
-      <value>"blue"</value>
+      <key>min</key>
+      <value>0</value>
     </param>
     <param>
-      <key>style10</key>
-      <value>1</value>
+      <key>max</key>
+      <value>256</value>
     </param>
     <param>
-      <key>marker10</key>
-      <value>-1</value>
+      <key>num_samps</key>
+      <value>1000</value>
     </param>
     <param>
-      <key>alpha10</key>
-      <value>1.0</value>
+      <key>repeat</key>
+      <value>True</value>
     </param>
     <param>
       <key>alias</key>
@@ -1626,8 +1665,16 @@
       <value></value>
     </param>
     <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
       <key>_coordinate</key>
-      <value>(2061, 300)</value>
+      <value>(29, 205)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1635,180 +1682,152 @@
     </param>
   </block>
   <block>
-    <key>variable_cc_encoder_def</key>
+    <key>blocks_throttle</key>
     <param>
       <key>id</key>
-      <value>enc_cc</value>
+      <value>blocks_throttle_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>
+      <key>type</key>
+      <value>byte</value>
     </param>
     <param>
-      <key>dim1</key>
-      <value>1</value>
+      <key>samples_per_second</key>
+      <value>samp_rate</value>
     </param>
     <param>
-      <key>dim2</key>
+      <key>vlen</key>
       <value>1</value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
-    </param>
-    <param>
-      <key>k</key>
-      <value>k</value>
+      <key>ignoretag</key>
+      <value>True</value>
     </param>
     <param>
-      <key>rate</key>
-      <value>rate</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>polys</key>
-      <value>polys</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>(509, 598)</value>
+      <value>(409, 349)</value>
     </param>
     <param>
       <key>_rotation</key>
-      <value>0</value>
+      <value>180</value>
     </param>
   </block>
   <block>
-    <key>variable_cc_decoder_def</key>
+    <key>blocks_stream_to_tagged_stream</key>
     <param>
       <key>id</key>
-      <value>dec_cc</value>
+      <value>blocks_stream_to_tagged_stream_0_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>
+      <key>type</key>
+      <value>byte</value>
     </param>
     <param>
-      <key>dim1</key>
+      <key>vlen</key>
       <value>1</value>
     </param>
     <param>
-      <key>dim2</key>
-      <value>4</value>
-    </param>
-    <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
+      <key>packet_len</key>
+      <value>frame_size</value>
     </param>
     <param>
-      <key>k</key>
-      <value>k</value>
+      <key>len_tag_key</key>
+      <value>length_tag</value>
     </param>
     <param>
-      <key>rate</key>
-      <value>rate</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>polys</key>
-      <value>polys</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>state_start</key>
+      <key>minoutbuf</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>
+      <key>maxoutbuf</key>
+      <value>0</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(505, 831)</value>
+      <value>(71, 339)</value>
     </param>
     <param>
       <key>_rotation</key>
-      <value>0</value>
+      <value>180</value>
     </param>
   </block>
   <block>
-    <key>variable_repetition_decoder_def</key>
+    <key>fec_extended_encoder</key>
     <param>
       <key>id</key>
-      <value>dec_rep</value>
+      <value>fec_extended_encoder_2</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>"ok"</value>
+      <key>encoder_list</key>
+      <value>enc_cc</value>
     </param>
     <param>
-      <key>ndim</key>
-      <value>1</value>
+      <key>threadtype</key>
+      <value>none</value>
     </param>
     <param>
-      <key>dim1</key>
-      <value>1</value>
+      <key>puncpat</key>
+      <value>puncpat</value>
     </param>
     <param>
-      <key>dim2</key>
-      <value>1</value>
+      <key>lentagname</key>
+      <value>length_tag</value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>rep</key>
-      <value>3</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>prob</key>
-      <value>0.5</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>(799, 741)</value>
+      <value>(705, 453)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1816,46 +1835,50 @@
     </param>
   </block>
   <block>
-    <key>variable_repetition_encoder_def</key>
+    <key>fec_extended_encoder</key>
     <param>
       <key>id</key>
-      <value>enc_rep</value>
+      <value>fec_extended_encoder_1</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>"ok"</value>
+      <key>encoder_list</key>
+      <value>enc_rep</value>
     </param>
     <param>
-      <key>ndim</key>
-      <value>1</value>
+      <key>threadtype</key>
+      <value>none</value>
     </param>
     <param>
-      <key>dim1</key>
-      <value>1</value>
+      <key>puncpat</key>
+      <value>puncpat</value>
     </param>
     <param>
-      <key>dim2</key>
-      <value>1</value>
+      <key>lentagname</key>
+      <value>length_tag</value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>rep</key>
-      <value>3</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>(799, 599)</value>
+      <value>(704, 301)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1863,42 +1886,50 @@
     </param>
   </block>
   <block>
-    <key>variable_dummy_decoder_def</key>
+    <key>fec_extended_encoder</key>
     <param>
       <key>id</key>
-      <value>dec_dummy</value>
+      <value>fec_extended_encoder_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>"ok"</value>
+      <key>encoder_list</key>
+      <value>enc_dummy</value>
     </param>
     <param>
-      <key>ndim</key>
-      <value>1</value>
+      <key>threadtype</key>
+      <value>none</value>
     </param>
     <param>
-      <key>dim1</key>
-      <value>1</value>
+      <key>puncpat</key>
+      <value>puncpat</value>
     </param>
     <param>
-      <key>dim2</key>
-      <value>1</value>
+      <key>lentagname</key>
+      <value>length_tag</value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>MTU*8</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>(1094, 722)</value>
+      <value>(705, 155)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1906,69 +1937,50 @@
     </param>
   </block>
   <block>
-    <key>variable_dummy_encoder_def</key>
+    <key>blocks_repack_bits_bb</key>
     <param>
       <key>id</key>
-      <value>enc_dummy</value>
+      <value>blocks_repack_bits_bb_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>
+      <key>k</key>
+      <value>8</value>
     </param>
     <param>
-      <key>dim1</key>
+      <key>l</key>
       <value>1</value>
     </param>
     <param>
-      <key>dim2</key>
-      <value>1</value>
+      <key>len_tag_key</key>
+      <value>packet_len</value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
+      <key>align_output</key>
+      <value>False</value>
     </param>
     <param>
       <key>alias</key>
       <value></value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(1092, 599)</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>_rotation</key>
+      <key>minoutbuf</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>
+      <key>maxoutbuf</key>
+      <value>0</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(651, 15)</value>
+      <value>(353, 435)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1982,42 +1994,12 @@
     <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_1</sink_block_id>
-    <source_key>0</source_key>
-    <sink_key>0</sink_key>
-  </connection>
-  <connection>
-    <source_block_id>blocks_unpack_k_bits_bb_0_0</source_block_id>
-    <sink_block_id>blocks_stream_to_tagged_stream_0_0</sink_block_id>
-    <source_key>0</source_key>
-    <sink_key>0</sink_key>
-  </connection>
-  <connection>
-    <source_block_id>blocks_throttle_0</source_block_id>
-    <sink_block_id>blocks_unpack_k_bits_bb_0_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_2</sink_block_id>
-    <source_key>0</source_key>
-    <sink_key>0</sink_key>
-  </connection>
-  <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_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>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>
@@ -2107,4 +2089,34 @@
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
+  <connection>
+    <source_block_id>blocks_stream_to_tagged_stream_0_0_0</source_block_id>
+    <sink_block_id>blocks_repack_bits_bb_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_throttle_0</source_block_id>
+    <sink_block_id>blocks_stream_to_tagged_stream_0_0_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>fec_extended_encoder_2</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>fec_extended_encoder_1</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>fec_extended_encoder_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
 </flow_graph>
diff --git a/gr-fec/examples/fecapi_tagged_encoders.grc 
b/gr-fec/examples/fecapi_tagged_encoders.grc
index 0af3d84..c3505e6 100644
--- a/gr-fec/examples/fecapi_tagged_encoders.grc
+++ b/gr-fec/examples/fecapi_tagged_encoders.grc
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Tue May 13 16:20:56 2014</timestamp>
+  <timestamp>Wed May 14 12:19:46 2014</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -68,7 +68,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>length_tag</value>
+      <value>k</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -76,7 +76,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>"packet_len"</value>
+      <value>7</value>
     </param>
     <param>
       <key>alias</key>
@@ -84,7 +84,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(152, 116)</value>
+      <value>(421, 692)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -95,7 +95,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>samp_rate</value>
+      <value>polys</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -103,7 +103,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>50000</value>
+      <value>[109, 79]</value>
     </param>
     <param>
       <key>alias</key>
@@ -111,7 +111,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(13, 88)</value>
+      <value>(335, 777)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -122,15 +122,15 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>rate</value>
+      <value>polys</value>
     </param>
     <param>
       <key>_enabled</key>
-      <value>True</value>
+      <value>False</value>
     </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>(522, 694)</value>
+      <value>(479, 781)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -149,15 +149,15 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>polys</value>
+      <value>rate</value>
     </param>
     <param>
       <key>_enabled</key>
-      <value>False</value>
+      <value>True</value>
     </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>(479, 781)</value>
+      <value>(522, 694)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -176,7 +176,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>polys</value>
+      <value>samp_rate</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -184,7 +184,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>[109, 79]</value>
+      <value>50000</value>
     </param>
     <param>
       <key>alias</key>
@@ -192,7 +192,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(335, 777)</value>
+      <value>(13, 88)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -203,7 +203,7 @@
     <key>variable</key>
     <param>
       <key>id</key>
-      <value>k</value>
+      <value>length_tag</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -211,7 +211,7 @@
     </param>
     <param>
       <key>value</key>
-      <value>7</value>
+      <value>"packet_len"</value>
     </param>
     <param>
       <key>alias</key>
@@ -219,7 +219,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(421, 692)</value>
+      <value>(152, 116)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -227,73 +227,34 @@
     </param>
   </block>
   <block>
-    <key>analog_random_source_x</key>
+    <key>blocks_vector_source_x</key>
     <param>
       <key>id</key>
-      <value>analog_random_source_x_0</value>
+      <value>blocks_vector_source_x_0_1_0</value>
     </param>
     <param>
       <key>_enabled</key>
-      <value>False</value>
+      <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>256</value>
+      <key>vector</key>
+      <value>4*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value>
     </param>
     <param>
-      <key>num_samps</key>
-      <value>1000</value>
+      <key>tags</key>
+      <value>[]</value>
     </param>
     <param>
       <key>repeat</key>
       <value>True</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>(92, 616)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>180</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>k</key>
-      <value>8</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
       <key>alias</key>
@@ -313,7 +274,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(128, 428)</value>
+      <value>(94, 226)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -321,50 +282,38 @@
     </param>
   </block>
   <block>
-    <key>blocks_throttle</key>
+    <key>parameter</key>
     <param>
       <key>id</key>
-      <value>blocks_throttle_0</value>
+      <value>puncpat</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>byte</value>
-    </param>
-    <param>
-      <key>samples_per_second</key>
-      <value>samp_rate</value>
+      <key>label</key>
+      <value></value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
+      <key>value</key>
+      <value>'11'</value>
     </param>
     <param>
-      <key>ignoretag</key>
-      <value>True</value>
+      <key>type</key>
+      <value>string</value>
     </param>
     <param>
-      <key>alias</key>
+      <key>short_id</key>
       <value></value>
     </param>
     <param>
-      <key>affinity</key>
+      <key>alias</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>(120, 355)</value>
+      <value>(247, 11)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -372,65 +321,37 @@
     </param>
   </block>
   <block>
-    <key>blocks_vector_source_x</key>
+    <key>blocks_ctrlport_monitor_performance</key>
     <param>
       <key>id</key>
-      <value>blocks_vector_source_x_0_1_0</value>
+      <value>blocks_ctrlport_monitor_performance_0</value>
     </param>
     <param>
       <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>byte</value>
-    </param>
-    <param>
-      <key>vector</key>
-      <value>4*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value>
-    </param>
-    <param>
-      <key>tags</key>
-      <value>[]</value>
+      <value>False</value>
     </param>
     <param>
-      <key>repeat</key>
+      <key>en</key>
       <value>True</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>(94, 226)</value>
+      <value>(651, 10)</value>
     </param>
     <param>
       <key>_rotation</key>
-      <value>180</value>
+      <value>0</value>
     </param>
   </block>
   <block>
     <key>parameter</key>
     <param>
       <key>id</key>
-      <value>puncpat</value>
+      <value>frame_size</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -438,15 +359,15 @@
     </param>
     <param>
       <key>label</key>
-      <value></value>
+      <value>Frame Size</value>
     </param>
     <param>
       <key>value</key>
-      <value>'11'</value>
+      <value>30</value>
     </param>
     <param>
       <key>type</key>
-      <value>string</value>
+      <value>intx</value>
     </param>
     <param>
       <key>short_id</key>
@@ -458,7 +379,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(247, 11)</value>
+      <value>(483, 10)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -466,30 +387,34 @@
     </param>
   </block>
   <block>
-    <key>parameter</key>
+    <key>variable_dummy_encoder_def</key>
     <param>
       <key>id</key>
-      <value>MTU</value>
+      <value>enc_dummy</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>label</key>
-      <value>MTU</value>
+      <key>value</key>
+      <value>"ok"</value>
     </param>
     <param>
-      <key>value</key>
-      <value>1500</value>
+      <key>ndim</key>
+      <value>1</value>
     </param>
     <param>
-      <key>type</key>
-      <value>intx</value>
+      <key>dim1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>short_id</key>
-      <value></value>
+      <key>dim2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>framebits</key>
+      <value>MTU*8</value>
     </param>
     <param>
       <key>alias</key>
@@ -497,7 +422,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(364, 9)</value>
+      <value>(1209, 693)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -505,30 +430,34 @@
     </param>
   </block>
   <block>
-    <key>fec_extended_encoder</key>
+    <key>analog_random_source_x</key>
     <param>
       <key>id</key>
-      <value>fec_extended_encoder_0</value>
+      <value>analog_random_source_x_0</value>
     </param>
     <param>
       <key>_enabled</key>
-      <value>True</value>
+      <value>False</value>
     </param>
     <param>
-      <key>encoder_list</key>
-      <value>enc_cc</value>
+      <key>type</key>
+      <value>byte</value>
     </param>
     <param>
-      <key>threadtype</key>
-      <value>none</value>
+      <key>min</key>
+      <value>0</value>
     </param>
     <param>
-      <key>puncpat</key>
-      <value>puncpat</value>
+      <key>max</key>
+      <value>256</value>
     </param>
     <param>
-      <key>lentagname</key>
-      <value>length_tag</value>
+      <key>num_samps</key>
+      <value>1000</value>
+    </param>
+    <param>
+      <key>repeat</key>
+      <value>True</value>
     </param>
     <param>
       <key>alias</key>
@@ -548,30 +477,38 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(540, 494)</value>
+      <value>(92, 703)</value>
     </param>
     <param>
       <key>_rotation</key>
-      <value>0</value>
+      <value>180</value>
     </param>
   </block>
   <block>
-    <key>blocks_char_to_float</key>
+    <key>blocks_throttle</key>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_1</value>
+      <value>blocks_throttle_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
+      <key>type</key>
+      <value>byte</value>
+    </param>
+    <param>
+      <key>samples_per_second</key>
+      <value>samp_rate</value>
+    </param>
+    <param>
       <key>vlen</key>
       <value>1</value>
     </param>
     <param>
-      <key>scale</key>
-      <value>1</value>
+      <key>ignoretag</key>
+      <value>True</value>
     </param>
     <param>
       <key>alias</key>
@@ -591,7 +528,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(881, 525)</value>
+      <value>(120, 338)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -599,26 +536,144 @@
     </param>
   </block>
   <block>
-    <key>blocks_ctrlport_monitor_performance</key>
+    <key>blocks_stream_to_tagged_stream</key>
     <param>
       <key>id</key>
-      <value>blocks_ctrlport_monitor_performance_0</value>
+      <value>blocks_stream_to_tagged_stream_0_0</value>
     </param>
     <param>
       <key>_enabled</key>
-      <value>False</value>
-    </param>
-    <param>
-      <key>en</key>
       <value>True</value>
     </param>
     <param>
-      <key>alias</key>
+      <key>type</key>
+      <value>byte</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>packet_len</key>
+      <value>frame_size</value>
+    </param>
+    <param>
+      <key>len_tag_key</key>
+      <value>length_tag</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>(651, 10)</value>
+      <value>(119, 411)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>180</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_char_to_float</key>
+    <param>
+      <key>id</key>
+      <value>blocks_char_to_float_1_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>(937, 452)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>fec_extended_encoder</key>
+    <param>
+      <key>id</key>
+      <value>fec_extended_encoder_2</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>encoder_list</key>
+      <value>enc_ccsds</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>
+      <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>(598, 421)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -629,7 +684,7 @@
     <key>parameter</key>
     <param>
       <key>id</key>
-      <value>frame_size</value>
+      <value>MTU</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -637,11 +692,11 @@
     </param>
     <param>
       <key>label</key>
-      <value>Frame Size</value>
+      <value>MTU</value>
     </param>
     <param>
       <key>value</key>
-      <value>30</value>
+      <value>1000</value>
     </param>
     <param>
       <key>type</key>
@@ -657,7 +712,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(483, 10)</value>
+      <value>(364, 9)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -665,29 +720,115 @@
     </param>
   </block>
   <block>
-    <key>blocks_stream_to_tagged_stream</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>id</key>
-      <value>blocks_stream_to_tagged_stream_0_0</value>
+      <value>blocks_char_to_float_1_0_0_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>byte</value>
+      <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>(936, 326)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_char_to_float</key>
+    <param>
+      <key>id</key>
+      <value>blocks_char_to_float_1_0_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
       <key>vlen</key>
       <value>1</value>
     </param>
     <param>
-      <key>packet_len</key>
-      <value>frame_size*8</value>
+      <key>scale</key>
+      <value>1</value>
     </param>
     <param>
-      <key>len_tag_key</key>
+      <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>(936, 197)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>fec_extended_encoder</key>
+    <param>
+      <key>id</key>
+      <value>fec_extended_encoder_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <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>
@@ -708,7 +849,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(158, 515)</value>
+      <value>(598, 166)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -716,42 +857,93 @@
     </param>
   </block>
   <block>
-    <key>variable_dummy_encoder_def</key>
+    <key>fec_extended_encoder</key>
     <param>
       <key>id</key>
-      <value>enc_dummy</value>
+      <value>fec_extended_encoder_1</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>"ok"</value>
+      <key>encoder_list</key>
+      <value>enc_rep</value>
     </param>
     <param>
-      <key>ndim</key>
-      <value>1</value>
+      <key>threadtype</key>
+      <value>none</value>
     </param>
     <param>
-      <key>dim1</key>
-      <value>1</value>
+      <key>puncpat</key>
+      <value>puncpat</value>
     </param>
     <param>
-      <key>dim2</key>
+      <key>lentagname</key>
+      <value>length_tag</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>(598, 295)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_char_to_float</key>
+    <param>
+      <key>id</key>
+      <value>blocks_char_to_float_1</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>vlen</key>
       <value>1</value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
+      <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>(1209, 693)</value>
+      <value>(936, 578)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -759,207 +951,385 @@
     </param>
   </block>
   <block>
-    <key>variable_cc_encoder_def</key>
+    <key>fec_extended_encoder</key>
     <param>
       <key>id</key>
+      <value>fec_extended_encoder_3</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>
+    </param>
+    <param>
+      <key>lentagname</key>
+      <value>length_tag</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>(598, 547)</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>value</key>
-      <value>"ok"</value>
+      <key>type</key>
+      <value>float</value>
     </param>
     <param>
-      <key>ndim</key>
+      <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>1</value>
+    </param>
+    <param>
+      <key>update_time</key>
+      <value>0.05</value>
+    </param>
+    <param>
+      <key>entags</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>gui_hint</key>
+      <value>0,0,1,1</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>packet_len</value>
+    </param>
+    <param>
+      <key>label1</key>
+      <value>None</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>CC</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></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>dim1</key>
-      <value>2</value>
+      <key>color4</key>
+      <value>"black"</value>
     </param>
     <param>
-      <key>dim2</key>
+      <key>style4</key>
       <value>1</value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
-    </param>
-    <param>
-      <key>k</key>
-      <value>k</value>
+      <key>marker4</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>rate</key>
-      <value>rate</value>
+      <key>alpha4</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>polys</key>
-      <value>polys</value>
+      <key>label5</key>
+      <value></value>
     </param>
     <param>
-      <key>state_start</key>
-      <value>0</value>
+      <key>width5</key>
+      <value>1</value>
     </param>
     <param>
-      <key>mode</key>
-      <value>fec.CC_TERMINATED</value>
+      <key>color5</key>
+      <value>"cyan"</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>style5</key>
+      <value>1</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(618, 691)</value>
+      <key>marker5</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>alpha5</key>
+      <value>1.0</value>
     </param>
-  </block>
-  <block>
-    <key>variable_ccsds_encoder_def</key>
     <param>
-      <key>id</key>
-      <value>enc_ccsds</value>
+      <key>label6</key>
+      <value></value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>width6</key>
+      <value>1</value>
     </param>
     <param>
-      <key>value</key>
-      <value>"ok"</value>
+      <key>color6</key>
+      <value>"magenta"</value>
     </param>
     <param>
-      <key>ndim</key>
+      <key>style6</key>
       <value>1</value>
     </param>
     <param>
-      <key>dim1</key>
-      <value>2</value>
+      <key>marker6</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>dim2</key>
-      <value>4</value>
+      <key>alpha6</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>framebits</key>
-      <value>MTU*8</value>
+      <key>label7</key>
+      <value></value>
     </param>
     <param>
-      <key>state_start</key>
-      <value>0</value>
+      <key>width7</key>
+      <value>1</value>
     </param>
     <param>
-      <key>mode</key>
-      <value>fec.CC_TERMINATED</value>
+      <key>color7</key>
+      <value>"yellow"</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>style7</key>
+      <value>1</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(909, 693)</value>
+      <key>marker7</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>alpha7</key>
+      <value>1.0</value>
     </param>
-  </block>
-  <block>
-    <key>fec_extended_encoder</key>
     <param>
-      <key>id</key>
-      <value>fec_extended_encoder_0_0</value>
+      <key>label8</key>
+      <value></value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>width8</key>
+      <value>1</value>
     </param>
     <param>
-      <key>encoder_list</key>
-      <value>enc_ccsds</value>
+      <key>color8</key>
+      <value>"dark red"</value>
     </param>
     <param>
-      <key>threadtype</key>
-      <value>none</value>
+      <key>style8</key>
+      <value>1</value>
     </param>
     <param>
-      <key>puncpat</key>
-      <value>puncpat</value>
+      <key>marker8</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>lentagname</key>
-      <value>length_tag</value>
+      <key>alpha8</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>alias</key>
+      <key>label9</key>
       <value></value>
     </param>
     <param>
-      <key>affinity</key>
-      <value></value>
+      <key>width9</key>
+      <value>1</value>
     </param>
     <param>
-      <key>minoutbuf</key>
-      <value>0</value>
+      <key>color9</key>
+      <value>"dark green"</value>
     </param>
     <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
+      <key>style9</key>
+      <value>1</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(542, 364)</value>
+      <key>marker9</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>alpha9</key>
+      <value>1.0</value>
     </param>
-  </block>
-  <block>
-    <key>blocks_char_to_float</key>
     <param>
-      <key>id</key>
-      <value>blocks_char_to_float_1_0</value>
+      <key>label10</key>
+      <value></value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>width10</key>
+      <value>1</value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
+      <key>color10</key>
+      <value>"blue"</value>
     </param>
     <param>
-      <key>scale</key>
+      <key>style10</key>
       <value>1</value>
     </param>
     <param>
-      <key>alias</key>
-      <value></value>
+      <key>marker10</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>affinity</key>
-      <value></value>
+      <key>alpha10</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>minoutbuf</key>
-      <value>0</value>
+      <key>alias</key>
+      <value></value>
     </param>
     <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(881, 395)</value>
+      <value>(1167, 166)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -970,7 +1340,7 @@
     <key>qtgui_time_sink_x</key>
     <param>
       <key>id</key>
-      <value>qtgui_time_sink_x_0_0</value>
+      <value>qtgui_time_sink_x_1</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1018,7 +1388,7 @@
     </param>
     <param>
       <key>gui_hint</key>
-      <value></value>
+      <value>1,0,1,1</value>
     </param>
     <param>
       <key>tr_mode</key>
@@ -1046,7 +1416,7 @@
     </param>
     <param>
       <key>label1</key>
-      <value>CCSDS</value>
+      <value>Rep (Rate=3)</value>
     </param>
     <param>
       <key>width1</key>
@@ -1281,94 +1651,8 @@
       <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>(1112, 364)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>blocks_char_to_float</key>
-    <param>
-      <key>id</key>
-      <value>blocks_char_to_float_1_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>(880, 262)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>fec_extended_encoder</key>
-    <param>
-      <key>id</key>
-      <value>fec_extended_encoder_0_0_0</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <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>
+      <key>alpha10</key>
+      <value>1.0</value>
     </param>
     <param>
       <key>alias</key>
@@ -1379,16 +1663,8 @@
       <value></value>
     </param>
     <param>
-      <key>minoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>maxoutbuf</key>
-      <value>0</value>
-    </param>
-    <param>
       <key>_coordinate</key>
-      <value>(541, 231)</value>
+      <value>(1167, 295)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1399,7 +1675,7 @@
     <key>qtgui_time_sink_x</key>
     <param>
       <key>id</key>
-      <value>qtgui_time_sink_x_0_0_1</value>
+      <value>qtgui_time_sink_x_2</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1447,7 +1723,7 @@
     </param>
     <param>
       <key>gui_hint</key>
-      <value></value>
+      <value>2,0,1,1</value>
     </param>
     <param>
       <key>tr_mode</key>
@@ -1723,7 +1999,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1111, 231)</value>
+      <value>(1168, 421)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1734,7 +2010,7 @@
     <key>qtgui_time_sink_x</key>
     <param>
       <key>id</key>
-      <value>qtgui_time_sink_x_0_0_0</value>
+      <value>qtgui_time_sink_x_3</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1782,7 +2058,7 @@
     </param>
     <param>
       <key>gui_hint</key>
-      <value></value>
+      <value>3,0,1,1</value>
     </param>
     <param>
       <key>tr_mode</key>
@@ -1810,7 +2086,7 @@
     </param>
     <param>
       <key>label1</key>
-      <value>CCSDS</value>
+      <value>CC</value>
     </param>
     <param>
       <key>width1</key>
@@ -2058,7 +2334,219 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1112, 494)</value>
+      <value>(1167, 547)</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>(1210, 819)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_ccsds_encoder_def</key>
+    <param>
+      <key>id</key>
+      <value>enc_ccsds</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>state_start</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>mode</key>
+      <value>fec.CC_TERMINATED</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(909, 693)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_cc_encoder_def</key>
+    <param>
+      <key>id</key>
+      <value>enc_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>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_TERMINATED</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(618, 691)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_repack_bits_bb</key>
+    <param>
+      <key>id</key>
+      <value>blocks_repack_bits_bb_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>k</key>
+      <value>8</value>
+    </param>
+    <param>
+      <key>l</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>len_tag_key</key>
+      <value>packet_len</value>
+    </param>
+    <param>
+      <key>align_output</key>
+      <value>False</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>(145, 509)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -2066,80 +2554,98 @@
     </param>
   </block>
   <connection>
-    <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
-    <sink_block_id>fec_extended_encoder_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</source_block_id>
-    <sink_block_id>blocks_char_to_float_1</sink_block_id>
+    <source_block_id>blocks_vector_source_x_0_1_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>analog_random_source_x_0</source_block_id>
-    <sink_block_id>blocks_throttle_0</sink_block_id>
+    <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
+    <sink_block_id>blocks_repack_bits_bb_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blocks_vector_source_x_0_1_0</source_block_id>
-    <sink_block_id>blocks_throttle_0</sink_block_id>
+    <source_block_id>blocks_repack_bits_bb_0</source_block_id>
+    <sink_block_id>fec_extended_encoder_3</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blocks_unpack_k_bits_bb_0_0</source_block_id>
+    <source_block_id>blocks_throttle_0</source_block_id>
     <sink_block_id>blocks_stream_to_tagged_stream_0_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blocks_throttle_0</source_block_id>
-    <sink_block_id>blocks_unpack_k_bits_bb_0_0</sink_block_id>
+    <source_block_id>blocks_repack_bits_bb_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_char_to_float_1</source_block_id>
-    <sink_block_id>qtgui_time_sink_x_0_0_0</sink_block_id>
+    <source_block_id>blocks_repack_bits_bb_0</source_block_id>
+    <sink_block_id>fec_extended_encoder_1</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_0</sink_block_id>
+    <source_block_id>blocks_repack_bits_bb_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_0</source_block_id>
+    <sink_block_id>qtgui_time_sink_x_2</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>blocks_char_to_float_1_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>fec_extended_encoder_0_0_0</source_block_id>
+    <source_block_id>fec_extended_encoder_0</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_0_1</sink_block_id>
+    <sink_block_id>qtgui_time_sink_x_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>blocks_char_to_float_1_0</sink_block_id>
+    <source_block_id>fec_extended_encoder_1</source_block_id>
+    <sink_block_id>blocks_char_to_float_1_0_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</source_block_id>
-    <sink_block_id>qtgui_time_sink_x_0_0</sink_block_id>
+    <source_block_id>blocks_char_to_float_1_0_0_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>
   <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>blocks_char_to_float_1</source_block_id>
+    <sink_block_id>qtgui_time_sink_x_3</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>fec_extended_encoder_3</source_block_id>
+    <sink_block_id>blocks_char_to_float_1</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-fec/grc/fec_async_decoder.xml b/gr-fec/grc/fec_async_decoder.xml
new file mode 100644
index 0000000..4cc7be7
--- /dev/null
+++ b/gr-fec/grc/fec_async_decoder.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<block>
+  <name>FEC Async Decoder</name>
+  <key>fec_async_decoder</key>
+  <import>from gnuradio import fec</import>
+  <make>fec.async_decoder($decoder, $itype.size, $otype.size)</make>
+
+  <param>
+    <name>Constituent Decoder</name>
+    <key>decoder</key>
+    <value>decoder_variable</value>
+    <type>raw</type>
+  </param>
+
+  <param>
+    <name>Input Type</name>
+    <key>itype</key>
+    <type>enum</type>
+    <option>
+      <name>Byte</name>
+      <key>byte</key>
+      <opt>size:gr.sizeof_char</opt>
+    </option>
+    <option>
+      <name>Float</name>
+      <key>float</key>
+      <opt>size:gr.sizeof_float</opt>
+    </option>
+  </param>
+
+  <param>
+    <name>Output Type</name>
+    <key>otype</key>
+    <type>enum</type>
+    <option>
+      <name>Byte</name>
+      <key>byte</key>
+      <opt>size:gr.sizeof_char</opt>
+    </option>
+    <option>
+      <name>Float</name>
+      <key>float</key>
+      <opt>size:gr.sizeof_float</opt>
+    </option>
+  </param>
+
+  <sink>
+    <name>pdus</name>
+    <type>message</type>
+    <optional>1</optional>
+  </sink>
+
+  <source>
+    <name>pdus</name>
+    <type>message</type>
+    <optional>1</optional>
+  </source>
+
+  <doc>
+  </doc>
+
+</block>
diff --git a/gr-fec/grc/fec_async_encoder.xml b/gr-fec/grc/fec_async_encoder.xml
new file mode 100644
index 0000000..5b58c64
--- /dev/null
+++ b/gr-fec/grc/fec_async_encoder.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<block>
+  <name>FEC Async Encoder</name>
+  <key>fec_async_encoder</key>
+  <import>from gnuradio import fec</import>
+  <make>fec.async_encoder($encoder)</make>
+
+  <param>
+    <name>Constituent Encoder</name>
+    <key>encoder</key>
+    <value>encoder_variable</value>
+    <type>raw</type>
+  </param>
+
+  <sink>
+    <name>pdus</name>
+    <type>message</type>
+    <optional>1</optional>
+  </sink>
+
+  <source>
+    <name>pdus</name>
+    <type>message</type>
+    <optional>1</optional>
+  </source>
+
+  <doc>
+  </doc>
+
+</block>
diff --git a/gr-fec/grc/fec_block_tree.xml b/gr-fec/grc/fec_block_tree.xml
index 8828210..93b2829 100644
--- a/gr-fec/grc/fec_block_tree.xml
+++ b/gr-fec/grc/fec_block_tree.xml
@@ -25,6 +25,10 @@
     <block>fec_extended_decoder</block>
     <block>fec_generic_encoder</block>
     <block>fec_generic_decoder</block>
+    <block>fec_tagged_encoder</block>
+    <block>fec_tagged_decoder</block>
+    <block>fec_async_encoder</block>
+    <block>fec_async_decoder</block>
     <block>fec_decode_ccsds_27_fb</block>
     <block>fec_encode_ccsds_27_bb</block>
     <block>fec_puncture_xx</block>
diff --git a/gr-fec/grc/fec_tagged_decoder.xml 
b/gr-fec/grc/fec_tagged_decoder.xml
new file mode 100644
index 0000000..9f8cf25
--- /dev/null
+++ b/gr-fec/grc/fec_tagged_decoder.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<block>
+  <name>FEC Tagged Decoder</name>
+  <key>fec_tagged_decoder</key>
+  <import>from gnuradio import fec</import>
+  <make>fec.tagged_decoder($decoder, $itype.size, $otype.size, 
$lentagname)</make>
+
+  <param>
+    <name>Constituent Decoder</name>
+    <key>decoder</key>
+    <value>decoder_variable</value>
+    <type>raw</type>
+  </param>
+
+  <param>
+    <name>Input Type</name>
+    <key>itype</key>
+    <type>enum</type>
+    <option>
+      <name>Byte</name>
+      <key>byte</key>
+      <opt>size:gr.sizeof_char</opt>
+    </option>
+    <option>
+      <name>Float</name>
+      <key>float</key>
+      <opt>size:gr.sizeof_float</opt>
+    </option>
+  </param>
+
+  <param>
+    <name>Output Type</name>
+    <key>otype</key>
+    <type>enum</type>
+    <option>
+      <name>Byte</name>
+      <key>byte</key>
+      <opt>size:gr.sizeof_char</opt>
+    </option>
+    <option>
+      <name>Float</name>
+      <key>float</key>
+      <opt>size:gr.sizeof_float</opt>
+    </option>
+  </param>
+
+  <param>
+    <name>Length Tag Name</name>
+    <key>lentagname</key>
+    <value>"pkt_len"</value>
+    <type>string</type>
+  </param>
+
+  <sink>
+    <name>in</name>
+    <type>$itype</type>
+  </sink>
+
+  <source>
+    <name>out</name>
+    <type>$otype</type>
+  </source>
+
+  <doc>
+  </doc>
+
+</block>
diff --git a/gr-fec/grc/fec_tagged_encoder.xml 
b/gr-fec/grc/fec_tagged_encoder.xml
new file mode 100644
index 0000000..300d186
--- /dev/null
+++ b/gr-fec/grc/fec_tagged_encoder.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<block>
+  <name>FEC Tagged Encoder</name>
+  <key>fec_tagged_encoder</key>
+  <import>from gnuradio import fec</import>
+  <make>fec.tagged_encoder($encoder, $itype.size, $otype.size, 
$lentagname)</make>
+
+  <param>
+    <name>Constituent Encoder</name>
+    <key>encoder</key>
+    <value>encoder_variable</value>
+    <type>raw</type>
+  </param>
+
+  <param>
+    <name>Input Type</name>
+    <key>itype</key>
+    <type>enum</type>
+    <option>
+      <name>Byte</name>
+      <key>byte</key>
+      <opt>size:gr.sizeof_char</opt>
+    </option>
+    <option>
+      <name>Float</name>
+      <key>float</key>
+      <opt>size:gr.sizeof_float</opt>
+    </option>
+  </param>
+
+  <param>
+    <name>Output Type</name>
+    <key>otype</key>
+    <type>enum</type>
+    <option>
+      <name>Byte</name>
+      <key>byte</key>
+      <opt>size:gr.sizeof_char</opt>
+    </option>
+    <option>
+      <name>Float</name>
+      <key>float</key>
+      <opt>size:gr.sizeof_float</opt>
+    </option>
+  </param>
+
+  <param>
+    <name>Length Tag Name</name>
+    <key>lentagname</key>
+    <value>"pkt_len"</value>
+    <type>string</type>
+  </param>
+
+  <sink>
+    <name>in</name>
+    <type>$itype</type>
+  </sink>
+
+  <source>
+    <name>out</name>
+    <type>$otype</type>
+  </source>
+
+  <doc>
+  </doc>
+
+</block>
diff --git a/gr-fec/grc/variable_dummy_decoder_def_list.xml 
b/gr-fec/grc/variable_dummy_decoder_def_list.xml
index f89a42b..49728d3 100644
--- a/gr-fec/grc/variable_dummy_decoder_def_list.xml
+++ b/gr-fec/grc/variable_dummy_decoder_def_list.xml
@@ -9,10 +9,12 @@
     <key>variable_dummy_decoder_def</key>
     <import>from gnuradio import fec</import>
     <var_make>
-#if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.dummy_decoder.make($framebits)), 
range(0,$dim1) ); #slurp
+#if int($ndim())==0 #
+self.$(id) = $(id) = fec.dummy_decoder.make($framebits)
+#else if int($ndim())==1 #
+self.$(id) = $(id) = map((lambda a: fec.dummy_decoder.make($framebits)), 
range(0,$dim1)) #slurp
 #else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: 
fec.dummy_decoder.make($framebits)), range(0,$dim2) ) ), range(0,$dim1)); #slurp
+self.$(id) = $(id) = map((lambda b: map((lambda a: 
fec.dummy_decoder.make($framebits)), range(0,$dim2))), range(0,$dim1)) #slurp
 #end if</var_make>
     <make></make>
 
@@ -30,6 +32,10 @@ self.$(id) = $(id) = map( (lambda b: map( ( lambda a: 
fec.dummy_decoder.make($fr
         <value></value>
         <type>enum</type>
         <option>
+            <name>0</name>
+            <key>0</key>
+        </option>
+        <option>
             <name>1</name>
             <key>1</key>
         </option>
diff --git a/gr-fec/grc/variable_dummy_encoder_def_list.xml 
b/gr-fec/grc/variable_dummy_encoder_def_list.xml
index ca59c07..086ac20 100644
--- a/gr-fec/grc/variable_dummy_encoder_def_list.xml
+++ b/gr-fec/grc/variable_dummy_encoder_def_list.xml
@@ -9,10 +9,12 @@
     <key>variable_dummy_encoder_def</key>
     <import>from gnuradio import fec</import>
     <var_make>
-#if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.dummy_encoder_make($framebits)), 
range(0,$dim1) ); #slurp
+#if int($ndim())==0 #
+self.$(id) = $(id) = fec.dummy_encoder_make($framebits)
+#else if int($ndim())==1 #
+self.$(id) = $(id) = map((lambda a: fec.dummy_encoder_make($framebits)), 
range(0,$dim1)) #slurp
 #else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: 
fec.dummy_encoder_make($framebits)), range(0,$dim2) ) ), range(0,$dim1)); #slurp
+self.$(id) = $(id) = map((lambda b: map((lambda a: 
fec.dummy_encoder_make($framebits)), range(0,$dim2))), range(0,$dim1)) #slurp
 #end if</var_make>
     <make></make>
 
@@ -30,6 +32,10 @@ self.$(id) = $(id) = map( (lambda b: map( ( lambda a: 
fec.dummy_encoder_make($fr
         <value></value>
         <type>enum</type>
         <option>
+            <name>0</name>
+            <key>0</key>
+        </option>
+        <option>
             <name>1</name>
             <key>1</key>
         </option>
diff --git a/gr-fec/grc/variable_repetition_decoder_def_list.xml 
b/gr-fec/grc/variable_repetition_decoder_def_list.xml
index 1e94f26..c3ab1dc 100644
--- a/gr-fec/grc/variable_repetition_decoder_def_list.xml
+++ b/gr-fec/grc/variable_repetition_decoder_def_list.xml
@@ -9,10 +9,11 @@
     <key>variable_repetition_decoder_def</key>
     <import>from gnuradio import fec</import>
     <var_make>
-#if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.repetition_decoder.make($framebits, 
$rep, $prob)), range(0,$dim1) ); #slurp
+#if int($ndim())==0 #
+self.$(id) = $(id) = fec.repetition_decoder.make($framebits, $rep, $prob)
+self.$(id) = $(id) = map( (lambda a: fec.repetition_decoder.make($framebits, 
$rep, $prob)), range(0,$dim1) ) #slurp
 #else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: 
fec.repetition_decoder.make($framebits, $rep, $prob)), range(0,$dim2) ) ), 
range(0,$dim1)); #slurp
+self.$(id) = $(id) = map( (lambda b: map( ( lambda a: 
fec.repetition_decoder.make($framebits, $rep, $prob)), range(0,$dim2) ) ), 
range(0,$dim1)) #slurp
 #end if</var_make>
     <make></make>
 
@@ -30,6 +31,10 @@ self.$(id) = $(id) = map( (lambda b: map( ( lambda a: 
fec.repetition_decoder.mak
         <value></value>
         <type>enum</type>
         <option>
+            <name>0</name>
+            <key>0</key>
+        </option>
+        <option>
             <name>1</name>
             <key>1</key>
         </option>
diff --git a/gr-fec/grc/variable_repetition_encoder_def_list.xml 
b/gr-fec/grc/variable_repetition_encoder_def_list.xml
index f5d877f..13c5682 100644
--- a/gr-fec/grc/variable_repetition_encoder_def_list.xml
+++ b/gr-fec/grc/variable_repetition_encoder_def_list.xml
@@ -9,10 +9,12 @@
     <key>variable_repetition_encoder_def</key>
     <import>from gnuradio import fec</import>
     <var_make>
-#if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.repetition_encoder_make($framebits, 
$rep)), range(0,$dim1) ); #slurp
+#if int($ndim())==0 #
+self.$(id) = $(id) = fec.repetition_encoder_make($framebits, $rep)
+#else if int($ndim())==1 #
+self.$(id) = $(id) = map( (lambda a: fec.repetition_encoder_make($framebits, 
$rep)), range(0,$dim1) ) #slurp
 #else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: 
fec.repetition_encoder_make($framebits, $rep)), range(0,$dim2) ) ), 
range(0,$dim1)); #slurp
+self.$(id) = $(id) = map( (lambda b: map( ( lambda a: 
fec.repetition_encoder_make($framebits, $rep)), range(0,$dim2) ) ), 
range(0,$dim1)) #slurp
 #end if</var_make>
     <make></make>
 
@@ -30,6 +32,10 @@ self.$(id) = $(id) = map( (lambda b: map( ( lambda a: 
fec.repetition_encoder_mak
         <value></value>
         <type>enum</type>
         <option>
+            <name>0</name>
+            <key>0</key>
+        </option>
+        <option>
             <name>1</name>
             <key>1</key>
         </option>
diff --git a/gr-fec/include/gnuradio/fec/CMakeLists.txt 
b/gr-fec/include/gnuradio/fec/CMakeLists.txt
index 4d3b58a..a91a68a 100644
--- a/gr-fec/include/gnuradio/fec/CMakeLists.txt
+++ b/gr-fec/include/gnuradio/fec/CMakeLists.txt
@@ -82,6 +82,8 @@ install(FILES
     encoder.h
     tagged_decoder.h
     tagged_encoder.h
+    async_decoder.h
+    async_encoder.h
     cc_decoder.h
     cc_encoder.h
     ccsds_encoder.h
diff --git a/gr-fec/include/gnuradio/fec/async_decoder.h 
b/gr-fec/include/gnuradio/fec/async_decoder.h
new file mode 100644
index 0000000..2053d64
--- /dev/null
+++ b/gr-fec/include/gnuradio/fec/async_decoder.h
@@ -0,0 +1,69 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2014 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_FEC_ASYNC_DECODER_H
+#define INCLUDED_FEC_ASYNC_DECODER_H
+
+#include <gnuradio/fec/api.h>
+#include <gnuradio/fec/generic_decoder.h>
+#include <gnuradio/block.h>
+#include <boost/shared_ptr.hpp>
+
+namespace gr {
+  namespace fec {
+
+    /*!
+     * \brief Creates the decoder block for use in GNU Radio
+     * flowgraphs from a given FECAPI object derived from the
+     * generic_decoder class.
+     * \ingroup error_coding_blk
+     *
+     * \details
+     *
+     * Decodes frames received as a PDU over a message port.
+     */
+    class FEC_API async_decoder : virtual public block
+    {
+    public:
+      typedef boost::shared_ptr<async_decoder> sptr;
+
+      /*!
+       * Build the PDU-based FEC decoder block from an FECAPI decoder object.
+       *
+       * \param my_decoder An FECAPI decoder object child of the 
generic_decoder class.
+       * \param input_item_size size of a block of data for the decoder.
+       * \param output_item_size size of a block of data the decoder will 
produce.
+       */
+      static sptr make(generic_decoder::sptr my_decoder,
+                       size_t input_item_size,
+                       size_t output_item_size);
+
+      virtual int general_work(int noutput_items,
+                               gr_vector_int& ninput_items,
+                               gr_vector_const_void_star &input_items,
+                               gr_vector_void_star &output_items) = 0;
+    };
+
+  } /* namespace fec */
+} /* namespace gr */
+
+#endif /* INCLUDED_FEC_ASYNC_DECODER_H */
diff --git a/gr-fec/include/gnuradio/fec/async_encoder.h 
b/gr-fec/include/gnuradio/fec/async_encoder.h
new file mode 100644
index 0000000..fef1883
--- /dev/null
+++ b/gr-fec/include/gnuradio/fec/async_encoder.h
@@ -0,0 +1,65 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2014 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_FEC_ASYNC_ENCODER_H
+#define INCLUDED_FEC_ASYNC_ENCODER_H
+
+#include <gnuradio/fec/api.h>
+#include <gnuradio/fec/generic_encoder.h>
+#include <gnuradio/block.h>
+#include <boost/shared_ptr.hpp>
+
+namespace gr {
+  namespace fec {
+
+    /*!
+     * \brief Creates the encoder block for use in GNU Radio
+     * flowgraphs from a given FECAPI object derived from the
+     * generic_encoder class.
+     * \ingroup error_coding_blk
+     *
+     * \details
+     *
+     * Encodes frames received as a PDU over a message port.
+     */
+    class FEC_API async_encoder : virtual public block
+    {
+    public:
+      typedef boost::shared_ptr<async_encoder> sptr;
+
+      /*!
+       * Build the PDU-based FEC encoder block from an FECAPI encoder object.
+       *
+       * \param my_encoder An FECAPI encoder object child of the 
generic_encoder class.
+       */
+      static sptr make(generic_encoder::sptr my_encoder);
+
+      virtual int general_work(int noutput_items,
+                               gr_vector_int& ninput_items,
+                               gr_vector_const_void_star &input_items,
+                               gr_vector_void_star &output_items) = 0;
+    };
+
+  } /* namespace fec */
+} /* namespace gr */
+
+#endif /* INCLUDED_FEC_ASYNC_ENCODER_H */
diff --git a/gr-fec/include/gnuradio/fec/tagged_decoder.h 
b/gr-fec/include/gnuradio/fec/tagged_decoder.h
index 6249037..4eba17a 100644
--- a/gr-fec/include/gnuradio/fec/tagged_decoder.h
+++ b/gr-fec/include/gnuradio/fec/tagged_decoder.h
@@ -28,7 +28,6 @@
 #include <gnuradio/tagged_stream_block.h>
 #include <boost/shared_ptr.hpp>
 #include <boost/shared_array.hpp>
-#include <boost/format.hpp>
 
 namespace gr {
   namespace fec {
diff --git a/gr-fec/lib/CMakeLists.txt b/gr-fec/lib/CMakeLists.txt
index 42940be..16f47c8 100644
--- a/gr-fec/lib/CMakeLists.txt
+++ b/gr-fec/lib/CMakeLists.txt
@@ -55,6 +55,8 @@ list(APPEND gnuradio_fec_sources
   encoder_impl.cc
   tagged_decoder_impl.cc
   tagged_encoder_impl.cc
+  async_decoder_impl.cc
+  async_encoder_impl.cc
   cc_decoder_impl.cc
   cc_encoder_impl.cc
   ccsds_encoder_impl.cc
diff --git a/gr-fec/lib/async_decoder_impl.cc b/gr-fec/lib/async_decoder_impl.cc
new file mode 100644
index 0000000..b235f95
--- /dev/null
+++ b/gr-fec/lib/async_decoder_impl.cc
@@ -0,0 +1,111 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2014 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "async_decoder_impl.h"
+#include <gnuradio/io_signature.h>
+#include <stdio.h>
+
+
+namespace gr {
+  namespace fec {
+
+    async_decoder::sptr
+    async_decoder::make(generic_decoder::sptr my_decoder,
+                        size_t input_item_size, size_t output_item_size)
+    {
+      return gnuradio::get_initial_sptr
+        (new async_decoder_impl(my_decoder, input_item_size, 
output_item_size));
+    }
+
+    async_decoder_impl::async_decoder_impl(generic_decoder::sptr my_decoder,
+                                           size_t input_item_size,
+                                           size_t output_item_size)
+      : block("async_decoder",
+              io_signature::make(0,0,0),
+              io_signature::make(0,0,0)),
+        d_input_item_size(input_item_size), 
d_output_item_size(output_item_size)
+    {
+      d_decoder = my_decoder;
+      message_port_register_in(pmt::mp("pdus"));
+      message_port_register_out(pmt::mp("pdus"));
+      set_msg_handler(pmt::mp("pdus"), 
boost::bind(&async_decoder_impl::decode, this ,_1));
+    }
+
+    async_decoder_impl::~async_decoder_impl()
+    {
+    }
+
+    void
+    async_decoder_impl::decode(pmt::pmt_t msg)
+    {
+      // extract input pdu
+      pmt::pmt_t meta(pmt::car(msg));
+      pmt::pmt_t bits(pmt::cdr(msg));
+
+      int nbits = pmt::length(bits);
+      int blksize_in = d_decoder->get_input_size();
+      int blksize_out = d_decoder->get_output_size();
+      int nblocks = nbits/blksize_in;
+
+      // nbits sanity check
+      if(nbits % blksize_in != 0){
+        throw std::runtime_error((boost::format("nbits_in %% blksize_in != 0 
in fec_decoder_asyn! %d bits in, %d blksize") \
+                                  % nbits % blksize_in).str());
+      }
+
+      printf("decoder :: blksize_in = %d, blksize_out = %d\n", blksize_in, 
blksize_out);
+
+      pmt::pmt_t outvec(pmt::make_u8vector(blksize_out * nblocks, 0xFF));
+      printf("decoder :: outvec len = %d (%d blks)\n", blksize_out * nblocks, 
nblocks);
+
+      // get pmt buffer pointers
+      size_t o0(0);
+      const float* f32in = pmt::f32vector_elements(bits, o0);
+      uint8_t* u8out = pmt::u8vector_writable_elements(outvec, o0);
+
+      // loop over n fec blocks
+      for(int i = 0; i < nblocks; i++) {
+        size_t offset_in = i * blksize_in;
+        size_t offset_out = i * blksize_out;
+
+        // DECODE!
+        d_decoder->generic_work((void*)&f32in[offset_in], 
(void*)&u8out[offset_out]);
+      }
+
+      message_port_pub(pmt::mp("pdus"),  pmt::cons(meta, outvec));
+    }
+
+    int
+    async_decoder_impl::general_work(int noutput_items,
+                                     gr_vector_int& ninput_items,
+                                     gr_vector_const_void_star &input_items,
+                                     gr_vector_void_star &output_items)
+    {
+      return noutput_items;
+    }
+
+  } /* namespace fec */
+} /* namespace gr */
diff --git a/gr-fec/lib/async_decoder_impl.h b/gr-fec/lib/async_decoder_impl.h
new file mode 100644
index 0000000..9d1744c
--- /dev/null
+++ b/gr-fec/lib/async_decoder_impl.h
@@ -0,0 +1,55 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2014 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_FEC_ASYNC_DECODER_IMPL_H
+#define INCLUDED_FEC_ASYNC_DECODER_IMPL_H
+
+#include <gnuradio/fec/async_decoder.h>
+
+namespace gr {
+  namespace fec {
+
+    class FEC_API async_decoder_impl : public async_decoder
+    {
+    private:
+      generic_decoder::sptr d_decoder;
+      size_t d_input_item_size;
+      size_t d_output_item_size;
+
+      void decode(pmt::pmt_t msg);
+
+    public:
+      async_decoder_impl(generic_decoder::sptr my_decoder,
+                         size_t input_item_size,
+                         size_t output_item_size);
+      ~async_decoder_impl();
+
+      int general_work(int noutput_items,
+                       gr_vector_int& ninput_items,
+                       gr_vector_const_void_star &input_items,
+                       gr_vector_void_star &output_items);
+    };
+
+  } /* namespace fec */
+} /* namespace gr */
+
+#endif /* INCLUDED_FEC_ASYNC_DECODER_IMPL_H */
diff --git a/gr-fec/lib/async_encoder_impl.cc b/gr-fec/lib/async_encoder_impl.cc
new file mode 100644
index 0000000..b12ece1
--- /dev/null
+++ b/gr-fec/lib/async_encoder_impl.cc
@@ -0,0 +1,118 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2014 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "async_encoder_impl.h"
+#include <gnuradio/io_signature.h>
+#include <stdio.h>
+
+namespace gr {
+  namespace fec {
+
+    async_encoder::sptr
+    async_encoder::make(generic_encoder::sptr my_encoder)
+    {
+      return gnuradio::get_initial_sptr
+        (new async_encoder_impl(my_encoder));
+    }
+
+    async_encoder_impl::async_encoder_impl(generic_encoder::sptr my_encoder)
+      : block("async_encoder",
+              io_signature::make(0,0,0),
+              io_signature::make(0,0,0)),
+        d_input_item_size(sizeof(char)), d_output_item_size(sizeof(char))
+    {
+      d_encoder = my_encoder;
+      message_port_register_in(pmt::mp("pdus"));
+      message_port_register_out(pmt::mp("pdus"));
+      set_msg_handler(pmt::mp("pdus"), 
boost::bind(&async_encoder_impl::encode, this ,_1) );
+    }
+
+    async_encoder_impl::~async_encoder_impl()
+    {
+    }
+
+    void
+    async_encoder_impl::encode(pmt::pmt_t msg)
+    {
+      // extract input pdu
+      pmt::pmt_t meta(pmt::car(msg));
+      pmt::pmt_t bits(pmt::cdr(msg));
+
+      int nbits = pmt::length(bits);
+      int blksize_in = d_encoder->get_input_size();
+      int blksize_out = (int)d_encoder->rate();
+      int nblocks = nbits/blksize_in;
+
+      printf("async_encoder: blksize_in = %d, blksize_out = %d nblocks=%d\n",
+             blksize_in, blksize_out, nblocks);
+
+      pmt::pmt_t outvec(pmt::make_u8vector(blksize_out * nblocks, 0xFF));
+
+      printf("encoder: outvec len = %d\n", blksize_out * nblocks);
+
+      // get pmt buffer pointers
+      size_t o0(0);
+      const uint8_t* u8in = pmt::u8vector_elements(bits,o0);
+      uint8_t* u8tmp = pmt::u8vector_writable_elements(bits,o0);
+      uint8_t* u8out = pmt::u8vector_writable_elements(outvec,o0);
+
+      // alloc playspace
+      std::vector<uint8_t> blks_out(blksize_out);
+
+      // loop over n fec blocks
+      for(int i = 0; i < nblocks; i++) {
+        size_t offset_in = i * blksize_in;
+        size_t offset_out = i * blksize_out;
+
+        for(int jj = 0; jj < blksize_in; jj++) {
+          u8tmp[offset_in + jj] = 0x01 & u8in[offset_in + jj];
+          //printf("in[%zd]=%u ", offset_in+jj, u8tmp[offset_in + jj]);
+          //fflush(stdout);
+        }
+
+        // ENCODE!
+        d_encoder->generic_work((void*)&u8tmp[offset_in], (void*)&blks_out[0]);
+
+        // convert float -> u8
+        for(int j = 0; j < blksize_out; j++) {
+          u8out[offset_out + j] = (blks_out[j] > 0);
+        }
+      }
+
+      message_port_pub(pmt::mp("pdus"), pmt::cons(meta, outvec));
+    }
+
+    int
+    async_encoder_impl::general_work(int noutput_items,
+                                     gr_vector_int& ninput_items,
+                                     gr_vector_const_void_star &input_items,
+                                     gr_vector_void_star &output_items)
+    {
+      return noutput_items;
+    }
+
+  } /* namespace fec */
+} /* namespace gr */
diff --git a/gr-fec/lib/async_encoder_impl.h b/gr-fec/lib/async_encoder_impl.h
new file mode 100644
index 0000000..99b628c
--- /dev/null
+++ b/gr-fec/lib/async_encoder_impl.h
@@ -0,0 +1,53 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2014 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_FEC_ASYNC_ENCODER_IMPL_H
+#define INCLUDED_FEC_ASYNC_ENCODER_IMPL_H
+
+#include <gnuradio/fec/async_encoder.h>
+
+namespace gr {
+  namespace fec {
+
+    class FEC_API async_encoder_impl : public async_encoder
+    {
+    private:
+      generic_encoder::sptr d_encoder;
+      size_t d_input_item_size;
+      size_t d_output_item_size;
+
+      void encode(pmt::pmt_t msg);
+
+    public:
+      async_encoder_impl(generic_encoder::sptr my_encoder);
+      ~async_encoder_impl();
+
+      int general_work(int noutput_items,
+                       gr_vector_int& ninput_items,
+                       gr_vector_const_void_star &input_items,
+                       gr_vector_void_star &output_items);
+    };
+
+  } /* namespace fec */
+} /* namespace gr */
+
+#endif /* INCLUDED_FEC_ASYNC_ENCODER_IMPL_H */
diff --git a/gr-fec/swig/fec_swig.i b/gr-fec/swig/fec_swig.i
index 051896c..8ad845f 100644
--- a/gr-fec/swig/fec_swig.i
+++ b/gr-fec/swig/fec_swig.i
@@ -42,6 +42,8 @@
 #include "gnuradio/fec/encoder.h"
 #include "gnuradio/fec/tagged_decoder.h"
 #include "gnuradio/fec/tagged_encoder.h"
+#include "gnuradio/fec/async_decoder.h"
+#include "gnuradio/fec/async_encoder.h"
 #include "gnuradio/fec/cc_decoder.h"
 #include "gnuradio/fec/cc_encoder.h"
 #include "gnuradio/fec/ccsds_encoder.h"
@@ -64,6 +66,8 @@
 %include "gnuradio/fec/encoder.h"
 %include "gnuradio/fec/tagged_decoder.h"
 %include "gnuradio/fec/tagged_encoder.h"
+%include "gnuradio/fec/async_decoder.h"
+%include "gnuradio/fec/async_encoder.h"
 %include "gnuradio/fec/cc_decoder.h"
 %include "gnuradio/fec/cc_encoder.h"
 %include "gnuradio/fec/ccsds_encoder.h"
@@ -83,6 +87,8 @@ GR_SWIG_BLOCK_MAGIC2(fec, decoder);
 GR_SWIG_BLOCK_MAGIC2(fec, encoder);
 GR_SWIG_BLOCK_MAGIC2(fec, tagged_decoder);
 GR_SWIG_BLOCK_MAGIC2(fec, tagged_encoder);
+GR_SWIG_BLOCK_MAGIC2(fec, async_decoder);
+GR_SWIG_BLOCK_MAGIC2(fec, async_encoder);
 GR_SWIG_BLOCK_MAGIC2(fec, decode_ccsds_27_fb);
 GR_SWIG_BLOCK_MAGIC2(fec, encode_ccsds_27_bb);
 GR_SWIG_BLOCK_MAGIC2(fec, ber_bf);



reply via email to

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