commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] [gnuradio] 15/25: fec: polar: moving polar codes into


From: git
Subject: [Commit-gnuradio] [gnuradio] 15/25: fec: polar: moving polar codes into ::code:: namespace like the others.
Date: Wed, 23 Sep 2015 14:51:38 +0000 (UTC)

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

jcorgan pushed a commit to branch master
in repository gnuradio.

commit aa47616d7569f3ad00b38e39d71e3364efd123b3
Author: Tom Rondeau <address@hidden>
Date:   Tue Sep 22 15:06:30 2015 -0400

    fec: polar: moving polar codes into ::code:: namespace like the others.
---
 gr-fec/doc/fec.dox                                 |    3 +
 gr-fec/examples/polar_code_example.grc             | 1895 ++++++++++++++++++--
 gr-fec/include/gnuradio/fec/polar_common.h         |   52 +-
 gr-fec/include/gnuradio/fec/polar_decoder_common.h |   41 +-
 gr-fec/include/gnuradio/fec/polar_decoder_sc.h     |   38 +-
 .../include/gnuradio/fec/polar_decoder_sc_list.h   |   49 +-
 gr-fec/include/gnuradio/fec/polar_encoder.h        |   57 +-
 gr-fec/lib/polar_common.cc                         |   18 +-
 gr-fec/lib/polar_decoder_common.cc                 |   16 +-
 gr-fec/lib/polar_decoder_sc.cc                     |   30 +-
 gr-fec/lib/polar_decoder_sc_list.cc                |   26 +-
 gr-fec/lib/polar_encoder.cc                        |   30 +-
 gr-fec/lib/scl_list.cc                             |   17 +-
 gr-fec/lib/scl_list.h                              |   10 +-
 14 files changed, 1936 insertions(+), 346 deletions(-)

diff --git a/gr-fec/doc/fec.dox b/gr-fec/doc/fec.dox
index 5a3d12d..1c50c81 100644
--- a/gr-fec/doc/fec.dox
+++ b/gr-fec/doc/fec.dox
@@ -233,11 +233,14 @@ Coders:
 \li gr::fec::code::repetition_encoder
 \li gr::fec::code::cc_encoder
 \li gr::fec::code::ccsds_encoder
+\li gr::fec::code::polar_encoder
 
 Decoders:
 \li gr::fec::code::dummy_decoder
 \li gr::fec::code::repetition_decoder
 \li gr::fec::code::cc_decoder
+\li gr::fec::code::polar_decoder_sc
+\li gr::fec::code::polar_decoder_sc_list
 
 
 When building a new FECAPI encoder or decoder variable, the dummy
diff --git a/gr-fec/examples/polar_code_example.grc 
b/gr-fec/examples/polar_code_example.grc
index 6ea290c..1aa1e85 100644
--- a/gr-fec/examples/polar_code_example.grc
+++ b/gr-fec/examples/polar_code_example.grc
@@ -85,7 +85,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(312, 219)</value>
+      <value>(192, 11)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -112,7 +112,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(312, 283)</value>
+      <value>(192, 75)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -128,6 +128,69 @@
     </param>
   </block>
   <block>
+    <key>variable_qtgui_range</key>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>0.1</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(24, 283)</value>
+    </param>
+    <param>
+      <key>gui_hint</key>
+      <value>0,0,1,2</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>noise</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>Noive Voltage</value>
+    </param>
+    <param>
+      <key>min_len</key>
+      <value>200</value>
+    </param>
+    <param>
+      <key>orient</key>
+      <value>Qt.Horizontal</value>
+    </param>
+    <param>
+      <key>start</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>step</key>
+      <value>0.01</value>
+    </param>
+    <param>
+      <key>stop</key>
+      <value>2</value>
+    </param>
+    <param>
+      <key>rangeType</key>
+      <value>float</value>
+    </param>
+    <param>
+      <key>widget</key>
+      <value>counter_slider</value>
+    </param>
+  </block>
+  <block>
     <key>variable_polar_code_configurator</key>
     <param>
       <key>num_info_bits</key>
@@ -151,7 +214,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(416, 219)</value>
+      <value>(296, 11)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -206,7 +269,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(792, 219)</value>
+      <value>(680, 11)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -257,7 +320,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(624, 219)</value>
+      <value>(504, 11)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -312,7 +375,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(712, 11)</value>
+      <value>(896, 11)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -359,7 +422,11 @@
     </param>
   </block>
   <block>
-    <key>analog_random_source_x</key>
+    <key>analog_fastnoise_source_x</key>
+    <param>
+      <key>amp</key>
+      <value>noise</value>
+    </param>
     <param>
       <key>alias</key>
       <value></value>
@@ -378,7 +445,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(264, 371)</value>
+      <value>(16, 411)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -386,39 +453,39 @@
     </param>
     <param>
       <key>id</key>
-      <value>analog_random_source_x_0</value>
+      <value>analog_fastnoise_source_x_0</value>
     </param>
     <param>
       <key>maxoutbuf</key>
       <value>0</value>
     </param>
     <param>
-      <key>max</key>
-      <value>256</value>
-    </param>
-    <param>
       <key>minoutbuf</key>
       <value>0</value>
     </param>
     <param>
-      <key>min</key>
-      <value>0</value>
+      <key>noise_type</key>
+      <value>analog.GR_GAUSSIAN</value>
     </param>
     <param>
-      <key>num_samps</key>
-      <value>2 ** 10 +1</value>
+      <key>type</key>
+      <value>short</value>
     </param>
     <param>
-      <key>type</key>
-      <value>byte</value>
+      <key>seed</key>
+      <value>0</value>
     </param>
     <param>
-      <key>repeat</key>
-      <value>True</value>
+      <key>samples</key>
+      <value>8192</value>
     </param>
   </block>
   <block>
-    <key>blocks_char_to_float</key>
+    <key>analog_fastnoise_source_x</key>
+    <param>
+      <key>amp</key>
+      <value>noise</value>
+    </param>
     <param>
       <key>alias</key>
       <value></value>
@@ -437,7 +504,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(704, 427)</value>
+      <value>(224, 907)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -445,7 +512,7 @@
     </param>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_0</value>
+      <value>analog_fastnoise_source_x_0_0</value>
     </param>
     <param>
       <key>maxoutbuf</key>
@@ -456,16 +523,24 @@
       <value>0</value>
     </param>
     <param>
-      <key>scale</key>
-      <value>1.0</value>
+      <key>noise_type</key>
+      <value>analog.GR_GAUSSIAN</value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
+      <key>type</key>
+      <value>short</value>
+    </param>
+    <param>
+      <key>seed</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>samples</key>
+      <value>8192</value>
     </param>
   </block>
   <block>
-    <key>blocks_char_to_float</key>
+    <key>analog_random_source_x</key>
     <param>
       <key>alias</key>
       <value></value>
@@ -484,7 +559,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(704, 395)</value>
+      <value>(24, 171)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -492,27 +567,39 @@
     </param>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_0_1</value>
+      <value>analog_random_source_x_0</value>
     </param>
     <param>
       <key>maxoutbuf</key>
       <value>0</value>
     </param>
     <param>
+      <key>max</key>
+      <value>256</value>
+    </param>
+    <param>
       <key>minoutbuf</key>
       <value>0</value>
     </param>
     <param>
-      <key>scale</key>
-      <value>1.0</value>
+      <key>min</key>
+      <value>0</value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
+      <key>num_samps</key>
+      <value>2 ** 10 +1</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>byte</value>
+    </param>
+    <param>
+      <key>repeat</key>
+      <value>True</value>
     </param>
   </block>
   <block>
-    <key>blocks_char_to_float</key>
+    <key>blocks_add_xx</key>
     <param>
       <key>alias</key>
       <value></value>
@@ -531,7 +618,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(192, 603)</value>
+      <value>(480, 393)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -539,7 +626,11 @@
     </param>
     <param>
       <key>id</key>
-      <value>blocks_char_to_float_0_2</value>
+      <value>blocks_add_xx_0</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>short</value>
     </param>
     <param>
       <key>maxoutbuf</key>
@@ -550,8 +641,8 @@
       <value>0</value>
     </param>
     <param>
-      <key>scale</key>
-      <value>1</value>
+      <key>num_inputs</key>
+      <value>2</value>
     </param>
     <param>
       <key>vlen</key>
@@ -559,7 +650,7 @@
     </param>
   </block>
   <block>
-    <key>blocks_pack_k_bits_bb</key>
+    <key>blocks_add_xx</key>
     <param>
       <key>alias</key>
       <value></value>
@@ -578,7 +669,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(560, 603)</value>
+      <value>(480, 897)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -586,11 +677,11 @@
     </param>
     <param>
       <key>id</key>
-      <value>blocks_pack_k_bits_bb_0</value>
+      <value>blocks_add_xx_0_0</value>
     </param>
     <param>
-      <key>k</key>
-      <value>8</value>
+      <key>type</key>
+      <value>short</value>
     </param>
     <param>
       <key>maxoutbuf</key>
@@ -600,9 +691,17 @@
       <key>minoutbuf</key>
       <value>0</value>
     </param>
+    <param>
+      <key>num_inputs</key>
+      <value>2</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
   </block>
   <block>
-    <key>blocks_unpack_k_bits_bb</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>alias</key>
       <value></value>
@@ -621,7 +720,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(184, 499)</value>
+      <value>(1096, 507)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -629,11 +728,7 @@
     </param>
     <param>
       <key>id</key>
-      <value>blocks_unpack_k_bits_bb_0</value>
-    </param>
-    <param>
-      <key>k</key>
-      <value>8</value>
+      <value>blocks_char_to_float_0</value>
     </param>
     <param>
       <key>maxoutbuf</key>
@@ -643,9 +738,17 @@
       <key>minoutbuf</key>
       <value>0</value>
     </param>
+    <param>
+      <key>scale</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
   </block>
   <block>
-    <key>digital_map_bb</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>alias</key>
       <value></value>
@@ -664,7 +767,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(80, 603)</value>
+      <value>(448, 675)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -672,11 +775,7 @@
     </param>
     <param>
       <key>id</key>
-      <value>digital_map_bb_0</value>
-    </param>
-    <param>
-      <key>map</key>
-      <value>[-1, 1]</value>
+      <value>blocks_char_to_float_0_0</value>
     </param>
     <param>
       <key>maxoutbuf</key>
@@ -686,17 +785,17 @@
       <key>minoutbuf</key>
       <value>0</value>
     </param>
-  </block>
-  <block>
-    <key>fec_ber_bf</key>
     <param>
-      <key>berlimit</key>
-      <value>-7.0</value>
+      <key>scale</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>berminerrors</key>
-      <value>10000</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
+  </block>
+  <block>
+    <key>blocks_char_to_float</key>
     <param>
       <key>alias</key>
       <value></value>
@@ -715,7 +814,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(704, 577)</value>
+      <value>(1096, 451)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -723,7 +822,7 @@
     </param>
     <param>
       <key>id</key>
-      <value>fec_ber_bf_0</value>
+      <value>blocks_char_to_float_0_1</value>
     </param>
     <param>
       <key>maxoutbuf</key>
@@ -734,16 +833,16 @@
       <value>0</value>
     </param>
     <param>
-      <key>test_mode</key>
-      <value>False</value>
+      <key>scale</key>
+      <value>1.0</value>
     </param>
-  </block>
-  <block>
-    <key>fec_extended_decoder</key>
     <param>
-      <key>ann</key>
-      <value>None</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
+  </block>
+  <block>
+    <key>blocks_char_to_float</key>
     <param>
       <key>alias</key>
       <value></value>
@@ -757,16 +856,12 @@
       <value></value>
     </param>
     <param>
-      <key>decoder_list</key>
-      <value>polar_decoder</value>
-    </param>
-    <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(328, 579)</value>
+      <value>(552, 635)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -774,7 +869,7 @@
     </param>
     <param>
       <key>id</key>
-      <value>fec_extended_decoder_0</value>
+      <value>blocks_char_to_float_0_1_0</value>
     </param>
     <param>
       <key>maxoutbuf</key>
@@ -785,20 +880,16 @@
       <value>0</value>
     </param>
     <param>
-      <key>puncpat</key>
-      <value>'11'</value>
-    </param>
-    <param>
-      <key>threadtype</key>
-      <value>none</value>
+      <key>scale</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>value</key>
-      <value>fec_extended_decoder</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
   </block>
   <block>
-    <key>fec_extended_encoder</key>
+    <key>blocks_char_to_float</key>
     <param>
       <key>alias</key>
       <value></value>
@@ -816,12 +907,8 @@
       <value>True</value>
     </param>
     <param>
-      <key>encoder_list</key>
-      <value>polar_encoder</value>
-    </param>
-    <param>
       <key>_coordinate</key>
-      <value>(328, 483)</value>
+      <value>(488, 507)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -829,7 +916,7 @@
     </param>
     <param>
       <key>id</key>
-      <value>fec_extended_encoder_0</value>
+      <value>blocks_char_to_float_0_2</value>
     </param>
     <param>
       <key>maxoutbuf</key>
@@ -840,24 +927,16 @@
       <value>0</value>
     </param>
     <param>
-      <key>puncpat</key>
-      <value>'11'</value>
+      <key>scale</key>
+      <value>1</value>
     </param>
     <param>
-      <key>threadtype</key>
-      <value>none</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
   </block>
   <block>
-    <key>qtgui_number_sink</key>
-    <param>
-      <key>autoscale</key>
-      <value>False</value>
-    </param>
-    <param>
-      <key>avg</key>
-      <value>0</value>
-    </param>
+    <key>blocks_char_to_short</key>
     <param>
       <key>alias</key>
       <value></value>
@@ -876,207 +955,1361 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(848, 571)</value>
-    </param>
-    <param>
-      <key>gui_hint</key>
-      <value></value>
+      <value>(296, 385)</value>
     </param>
     <param>
       <key>_rotation</key>
       <value>0</value>
     </param>
     <param>
-      <key>graph_type</key>
-      <value>qtgui.NUM_GRAPH_HORIZ</value>
-    </param>
-    <param>
       <key>id</key>
-      <value>qtgui_number_sink_0</value>
+      <value>blocks_char_to_short_0</value>
     </param>
     <param>
-      <key>type</key>
-      <value>float</value>
+      <key>maxoutbuf</key>
+      <value>0</value>
     </param>
     <param>
-      <key>color1</key>
-      <value>("black", "black")</value>
+      <key>minoutbuf</key>
+      <value>0</value>
     </param>
     <param>
-      <key>factor1</key>
+      <key>vlen</key>
       <value>1</value>
     </param>
+  </block>
+  <block>
+    <key>blocks_char_to_short</key>
     <param>
-      <key>label1</key>
+      <key>alias</key>
       <value></value>
     </param>
     <param>
-      <key>unit1</key>
+      <key>comment</key>
       <value></value>
     </param>
     <param>
-      <key>color10</key>
-      <value>("black", "black")</value>
+      <key>affinity</key>
+      <value></value>
     </param>
     <param>
-      <key>factor10</key>
-      <value>1</value>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
-      <key>label10</key>
-      <value></value>
+      <key>_coordinate</key>
+      <value>(256, 865)</value>
     </param>
     <param>
-      <key>unit10</key>
-      <value></value>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_char_to_short_0_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_pack_k_bits_bb</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(912, 507)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_pack_k_bits_bb_0</value>
+    </param>
+    <param>
+      <key>k</key>
+      <value>8</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_pack_k_bits_bb</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(464, 827)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>180</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_pack_k_bits_bb_0_0</value>
+    </param>
+    <param>
+      <key>k</key>
+      <value>8</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_short_to_char</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(608, 401)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_short_to_char_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_short_to_char</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(592, 913)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_short_to_char_0_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_unpack_k_bits_bb</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(240, 227)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_unpack_k_bits_bb_0</value>
+    </param>
+    <param>
+      <key>k</key>
+      <value>8</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>digital_map_bb</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(344, 507)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>digital_map_bb_0</value>
+    </param>
+    <param>
+      <key>map</key>
+      <value>[-1, 1]</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>fec_ber_bf</key>
+    <param>
+      <key>berlimit</key>
+      <value>-7.0</value>
+    </param>
+    <param>
+      <key>berminerrors</key>
+      <value>10000</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(824, 201)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>fec_ber_bf_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>test_mode</key>
+      <value>False</value>
+    </param>
+  </block>
+  <block>
+    <key>fec_ber_bf</key>
+    <param>
+      <key>berlimit</key>
+      <value>-7.0</value>
+    </param>
+    <param>
+      <key>berminerrors</key>
+      <value>10000</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(264, 745)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>fec_ber_bf_0_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>test_mode</key>
+      <value>False</value>
+    </param>
+  </block>
+  <block>
+    <key>fec_extended_decoder</key>
+    <param>
+      <key>ann</key>
+      <value>None</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>decoder_list</key>
+      <value>polar_decoder</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(656, 483)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>fec_extended_decoder_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>puncpat</key>
+      <value>'11'</value>
+    </param>
+    <param>
+      <key>threadtype</key>
+      <value>none</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>fec_extended_decoder</value>
+    </param>
+  </block>
+  <block>
+    <key>fec_extended_encoder</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>encoder_list</key>
+      <value>polar_encoder</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(424, 275)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>fec_extended_encoder_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>puncpat</key>
+      <value>'11'</value>
+    </param>
+    <param>
+      <key>threadtype</key>
+      <value>none</value>
+    </param>
+  </block>
+  <block>
+    <key>qtgui_number_sink</key>
+    <param>
+      <key>autoscale</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>avg</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1016, 187)</value>
+    </param>
+    <param>
+      <key>gui_hint</key>
+      <value>2,0,1,1</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>graph_type</key>
+      <value>qtgui.NUM_GRAPH_HORIZ</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>qtgui_number_sink_0</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>float</value>
+    </param>
+    <param>
+      <key>color1</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label1</key>
+      <value>BER</value>
+    </param>
+    <param>
+      <key>unit1</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color10</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor10</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label10</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit10</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color2</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label2</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit2</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color3</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor3</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label3</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit3</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color4</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor4</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label4</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit4</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color5</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor5</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label5</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit5</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color6</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor6</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label6</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit6</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color7</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor7</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label7</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit7</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color8</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor8</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label8</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit8</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color9</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor9</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label9</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit9</key>
+      <value></value>
+    </param>
+    <param>
+      <key>max</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>min</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>name</key>
+      <value>Coded</value>
+    </param>
+    <param>
+      <key>nconnections</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>update_time</key>
+      <value>0.10</value>
+    </param>
+  </block>
+  <block>
+    <key>qtgui_number_sink</key>
+    <param>
+      <key>autoscale</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>avg</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(448, 731)</value>
+    </param>
+    <param>
+      <key>gui_hint</key>
+      <value>2,1,1,1</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>graph_type</key>
+      <value>qtgui.NUM_GRAPH_HORIZ</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>qtgui_number_sink_0_0</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>float</value>
+    </param>
+    <param>
+      <key>color1</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor1</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label1</key>
+      <value>BER</value>
+    </param>
+    <param>
+      <key>unit1</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color10</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor10</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label10</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit10</key>
+      <value></value>
     </param>
     <param>
       <key>color2</key>
       <value>("black", "black")</value>
     </param>
     <param>
-      <key>factor2</key>
+      <key>factor2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label2</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit2</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color3</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor3</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label3</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit3</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color4</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor4</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label4</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit4</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color5</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor5</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label5</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit5</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color6</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor6</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label6</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit6</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color7</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor7</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label7</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit7</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color8</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor8</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label8</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit8</key>
+      <value></value>
+    </param>
+    <param>
+      <key>color9</key>
+      <value>("black", "black")</value>
+    </param>
+    <param>
+      <key>factor9</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>label9</key>
+      <value></value>
+    </param>
+    <param>
+      <key>unit9</key>
+      <value></value>
+    </param>
+    <param>
+      <key>max</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>min</key>
+      <value>-10</value>
+    </param>
+    <param>
+      <key>name</key>
+      <value>Uncoded</value>
+    </param>
+    <param>
+      <key>nconnections</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>update_time</key>
+      <value>0.10</value>
+    </param>
+  </block>
+  <block>
+    <key>qtgui_time_sink_x</key>
+    <param>
+      <key>autoscale</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>ctrlpanel</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>entags</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1288, 459)</value>
+    </param>
+    <param>
+      <key>gui_hint</key>
+      <value>1,0,1,1</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>grid</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>qtgui_time_sink_x_0</value>
+    </param>
+    <param>
+      <key>legend</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>alpha1</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>color1</key>
+      <value>"blue"</value>
+    </param>
+    <param>
+      <key>label1</key>
+      <value>Transmitted</value>
+    </param>
+    <param>
+      <key>marker1</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>style1</key>
       <value>1</value>
     </param>
     <param>
-      <key>label2</key>
-      <value></value>
+      <key>width1</key>
+      <value>1</value>
     </param>
     <param>
-      <key>unit2</key>
+      <key>alpha10</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>color10</key>
+      <value>"blue"</value>
+    </param>
+    <param>
+      <key>label10</key>
       <value></value>
     </param>
     <param>
-      <key>color3</key>
-      <value>("black", "black")</value>
+      <key>marker10</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>factor3</key>
+      <key>style10</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>width10</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>alpha2</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>color2</key>
+      <value>"red"</value>
+    </param>
+    <param>
+      <key>label2</key>
+      <value>Received</value>
+    </param>
+    <param>
+      <key>marker2</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>style2</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>width2</key>
       <value>1</value>
     </param>
     <param>
+      <key>alpha3</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>color3</key>
+      <value>"green"</value>
+    </param>
+    <param>
       <key>label3</key>
       <value></value>
     </param>
     <param>
-      <key>unit3</key>
-      <value></value>
+      <key>marker3</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>color4</key>
-      <value>("black", "black")</value>
+      <key>style3</key>
+      <value>1</value>
     </param>
     <param>
-      <key>factor4</key>
+      <key>width3</key>
       <value>1</value>
     </param>
     <param>
+      <key>alpha4</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>color4</key>
+      <value>"black"</value>
+    </param>
+    <param>
       <key>label4</key>
       <value></value>
     </param>
     <param>
-      <key>unit4</key>
-      <value></value>
+      <key>marker4</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>color5</key>
-      <value>("black", "black")</value>
+      <key>style4</key>
+      <value>1</value>
     </param>
     <param>
-      <key>factor5</key>
+      <key>width4</key>
       <value>1</value>
     </param>
     <param>
+      <key>alpha5</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>color5</key>
+      <value>"cyan"</value>
+    </param>
+    <param>
       <key>label5</key>
       <value></value>
     </param>
     <param>
-      <key>unit5</key>
-      <value></value>
+      <key>marker5</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>color6</key>
-      <value>("black", "black")</value>
+      <key>style5</key>
+      <value>1</value>
     </param>
     <param>
-      <key>factor6</key>
+      <key>width5</key>
       <value>1</value>
     </param>
     <param>
+      <key>alpha6</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>color6</key>
+      <value>"magenta"</value>
+    </param>
+    <param>
       <key>label6</key>
       <value></value>
     </param>
     <param>
-      <key>unit6</key>
-      <value></value>
+      <key>marker6</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>color7</key>
-      <value>("black", "black")</value>
+      <key>style6</key>
+      <value>1</value>
     </param>
     <param>
-      <key>factor7</key>
+      <key>width6</key>
       <value>1</value>
     </param>
     <param>
+      <key>alpha7</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>color7</key>
+      <value>"yellow"</value>
+    </param>
+    <param>
       <key>label7</key>
       <value></value>
     </param>
     <param>
-      <key>unit7</key>
-      <value></value>
+      <key>marker7</key>
+      <value>-1</value>
     </param>
     <param>
-      <key>color8</key>
-      <value>("black", "black")</value>
+      <key>style7</key>
+      <value>1</value>
     </param>
     <param>
-      <key>factor8</key>
+      <key>width7</key>
       <value>1</value>
     </param>
     <param>
+      <key>alpha8</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>color8</key>
+      <value>"dark red"</value>
+    </param>
+    <param>
       <key>label8</key>
       <value></value>
     </param>
     <param>
-      <key>unit8</key>
-      <value></value>
+      <key>marker8</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>style8</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>width8</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>alpha9</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>color9</key>
+      <value>"dark green"</value>
+    </param>
+    <param>
+      <key>label9</key>
+      <value></value>
+    </param>
+    <param>
+      <key>marker9</key>
+      <value>-1</value>
+    </param>
+    <param>
+      <key>style9</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>width9</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>name</key>
+      <value>Coded</value>
+    </param>
+    <param>
+      <key>nconnections</key>
+      <value>2</value>
+    </param>
+    <param>
+      <key>size</key>
+      <value>1024</value>
+    </param>
+    <param>
+      <key>srate</key>
+      <value>samp_rate</value>
+    </param>
+    <param>
+      <key>tr_chan</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>tr_delay</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>tr_level</key>
+      <value>0.0</value>
     </param>
     <param>
-      <key>color9</key>
-      <value>("black", "black")</value>
+      <key>tr_mode</key>
+      <value>qtgui.TRIG_MODE_FREE</value>
     </param>
     <param>
-      <key>factor9</key>
-      <value>1</value>
+      <key>tr_slope</key>
+      <value>qtgui.TRIG_SLOPE_POS</value>
     </param>
     <param>
-      <key>label9</key>
-      <value></value>
+      <key>tr_tag</key>
+      <value>""</value>
     </param>
     <param>
-      <key>unit9</key>
-      <value></value>
+      <key>type</key>
+      <value>float</value>
     </param>
     <param>
-      <key>max</key>
-      <value>1</value>
+      <key>update_time</key>
+      <value>0.10</value>
     </param>
     <param>
-      <key>min</key>
-      <value>-1</value>
+      <key>ylabel</key>
+      <value>Amplitude</value>
     </param>
     <param>
-      <key>name</key>
+      <key>yunit</key>
       <value>""</value>
     </param>
     <param>
-      <key>nconnections</key>
-      <value>1</value>
+      <key>ymax</key>
+      <value>0</value>
     </param>
     <param>
-      <key>update_time</key>
-      <value>0.10</value>
+      <key>ymin</key>
+      <value>-10</value>
     </param>
   </block>
   <block>
@@ -1111,11 +2344,11 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(840, 395)</value>
+      <value>(736, 643)</value>
     </param>
     <param>
       <key>gui_hint</key>
-      <value></value>
+      <value>1,1,1,1</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1127,7 +2360,7 @@
     </param>
     <param>
       <key>id</key>
-      <value>qtgui_time_sink_x_0</value>
+      <value>qtgui_time_sink_x_0_0</value>
     </param>
     <param>
       <key>legend</key>
@@ -1143,7 +2376,7 @@
     </param>
     <param>
       <key>label1</key>
-      <value></value>
+      <value>Transmitted</value>
     </param>
     <param>
       <key>marker1</key>
@@ -1191,7 +2424,7 @@
     </param>
     <param>
       <key>label2</key>
-      <value></value>
+      <value>Received</value>
     </param>
     <param>
       <key>marker2</key>
@@ -1375,7 +2608,7 @@
     </param>
     <param>
       <key>name</key>
-      <value>""</value>
+      <value>Uncoded</value>
     </param>
     <param>
       <key>nconnections</key>
@@ -1383,7 +2616,7 @@
     </param>
     <param>
       <key>size</key>
-      <value>2048</value>
+      <value>1024</value>
     </param>
     <param>
       <key>srate</key>
@@ -1438,11 +2671,179 @@
       <value>-1</value>
     </param>
   </block>
+  <block>
+    <key>virtual_sink</key>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(240, 155)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>virtual_sink_0</value>
+    </param>
+    <param>
+      <key>stream_id</key>
+      <value>input_packed</value>
+    </param>
+  </block>
+  <block>
+    <key>virtual_sink</key>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(424, 227)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>virtual_sink_0_0</value>
+    </param>
+    <param>
+      <key>stream_id</key>
+      <value>input_unpacked</value>
+    </param>
+  </block>
+  <block>
+    <key>virtual_source</key>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(32, 739)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>virtual_source_0</value>
+    </param>
+    <param>
+      <key>stream_id</key>
+      <value>input_packed</value>
+    </param>
+  </block>
+  <block>
+    <key>virtual_source</key>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1080, 395)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>180</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>virtual_source_0_0</value>
+    </param>
+    <param>
+      <key>stream_id</key>
+      <value>input_packed</value>
+    </param>
+  </block>
+  <block>
+    <key>virtual_source</key>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(504, 587)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>180</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>virtual_source_0_0_0</value>
+    </param>
+    <param>
+      <key>stream_id</key>
+      <value>input_packed</value>
+    </param>
+  </block>
+  <block>
+    <key>virtual_source</key>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(8, 827)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>virtual_source_0_1</value>
+    </param>
+    <param>
+      <key>stream_id</key>
+      <value>input_unpacked</value>
+    </param>
+  </block>
   <connection>
-    <source_block_id>analog_random_source_x_0</source_block_id>
-    <sink_block_id>blocks_char_to_float_0_1</sink_block_id>
+    <source_block_id>analog_fastnoise_source_x_0</source_block_id>
+    <sink_block_id>blocks_add_xx_0</sink_block_id>
     <source_key>0</source_key>
-    <sink_key>0</sink_key>
+    <sink_key>1</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>analog_fastnoise_source_x_0_0</source_block_id>
+    <sink_block_id>blocks_add_xx_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>1</sink_key>
   </connection>
   <connection>
     <source_block_id>analog_random_source_x_0</source_block_id>
@@ -1457,24 +2858,66 @@
     <sink_key>0</sink_key>
   </connection>
   <connection>
+    <source_block_id>analog_random_source_x_0</source_block_id>
+    <sink_block_id>virtual_sink_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_add_xx_0</source_block_id>
+    <sink_block_id>blocks_short_to_char_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_add_xx_0_0</source_block_id>
+    <sink_block_id>blocks_short_to_char_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
     <source_block_id>blocks_char_to_float_0</source_block_id>
     <sink_block_id>qtgui_time_sink_x_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>1</sink_key>
   </connection>
   <connection>
+    <source_block_id>blocks_char_to_float_0_0</source_block_id>
+    <sink_block_id>qtgui_time_sink_x_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>1</sink_key>
+  </connection>
+  <connection>
     <source_block_id>blocks_char_to_float_0_1</source_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>blocks_char_to_float_0_1_0</source_block_id>
+    <sink_block_id>qtgui_time_sink_x_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
     <source_block_id>blocks_char_to_float_0_2</source_block_id>
     <sink_block_id>fec_extended_decoder_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
+    <source_block_id>blocks_char_to_short_0</source_block_id>
+    <sink_block_id>blocks_add_xx_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_char_to_short_0_0</source_block_id>
+    <sink_block_id>blocks_add_xx_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
     <source_block_id>blocks_pack_k_bits_bb_0</source_block_id>
     <sink_block_id>blocks_char_to_float_0</sink_block_id>
     <source_key>0</source_key>
@@ -1487,12 +2930,42 @@
     <sink_key>1</sink_key>
   </connection>
   <connection>
+    <source_block_id>blocks_pack_k_bits_bb_0_0</source_block_id>
+    <sink_block_id>blocks_char_to_float_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_pack_k_bits_bb_0_0</source_block_id>
+    <sink_block_id>fec_ber_bf_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>1</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_short_to_char_0</source_block_id>
+    <sink_block_id>digital_map_bb_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_short_to_char_0_0</source_block_id>
+    <sink_block_id>blocks_pack_k_bits_bb_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
     <source_block_id>blocks_unpack_k_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_unpack_k_bits_bb_0</source_block_id>
+    <sink_block_id>virtual_sink_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
     <source_block_id>digital_map_bb_0</source_block_id>
     <sink_block_id>blocks_char_to_float_0_2</sink_block_id>
     <source_key>0</source_key>
@@ -1505,6 +2978,12 @@
     <sink_key>0</sink_key>
   </connection>
   <connection>
+    <source_block_id>fec_ber_bf_0_0</source_block_id>
+    <sink_block_id>qtgui_number_sink_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
     <source_block_id>fec_extended_decoder_0</source_block_id>
     <sink_block_id>blocks_pack_k_bits_bb_0</sink_block_id>
     <source_key>0</source_key>
@@ -1512,7 +2991,31 @@
   </connection>
   <connection>
     <source_block_id>fec_extended_encoder_0</source_block_id>
-    <sink_block_id>digital_map_bb_0</sink_block_id>
+    <sink_block_id>blocks_char_to_short_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>virtual_source_0</source_block_id>
+    <sink_block_id>fec_ber_bf_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>virtual_source_0_0</source_block_id>
+    <sink_block_id>blocks_char_to_float_0_1</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>virtual_source_0_0_0</source_block_id>
+    <sink_block_id>blocks_char_to_float_0_1_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>virtual_source_0_1</source_block_id>
+    <sink_block_id>blocks_char_to_short_0_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-fec/include/gnuradio/fec/polar_common.h 
b/gr-fec/include/gnuradio/fec/polar_common.h
index 66392cc..3ee7815 100644
--- a/gr-fec/include/gnuradio/fec/polar_common.h
+++ b/gr-fec/include/gnuradio/fec/polar_common.h
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -37,30 +37,40 @@ namespace gr {
 
 namespace gr {
   namespace fec {
+    namespace code {
 
     /*!
      * \brief POLAR code common operations and attributes
-     * Erdal Arikan "Channel Polarization: A Method for Contructing 
Capacity-Achieving Codes for Symmetric Binary-Input Memoryless Channels", 2009
      * \ingroup error_coding_blk
      *
      * \details
-     * polar codes are based on this paper by Erdal Arikan
-     * "Channel Polarization: A Method for Contructing Capacity-Achieving 
Codes for Symmetric Binary-Input Memoryless Channels", 2009
-     * block holds common information for encoders and decoders. All polar 
encoder/decoders inherit from polar_common.
+     * Polar codes are based on this paper by Erdal Arikan "Channel
+     * Polarization: A Method for Contructing Capacity-Achieving Codes
+     * for Symmetric Binary-Input Memoryless Channels", 2009 block
+     * holds common information for encoders and decoders. All polar
+     * encoder/decoders inherit from polar_common.
      *
      * class holds common info. It is common to all encoders and decoders.
-     * \param block_size codeword size. MUST be a power of 2.
-     * \param num_info_bits represents the number of information bits in a 
block. Also called frame_size. <= block_size
-     * \param frozen_bit_positions is an integer vector which defines the 
position of all frozen bits in a block.
-     * Its size MUST be equal to block_size - num_info_bits.
-     * Also it must be sorted and every position must only occur once.
-     * \param frozen_bit_values holds an unpacked byte for every frozen bit 
position.
-     * It defines if a frozen bit is fixed to '0' or '1'. Defaults to all ZERO.
      */
     class FEC_API polar_common
     {
     public:
-      polar_common(int block_size, int num_info_bits, std::vector<int> 
frozen_bit_positions, std::vector<char> frozen_bit_values);
+      /*!
+       * \param block_size codeword size. MUST be a power of 2.
+       * \param num_info_bits represents the number of information
+       *        bits in a block. Also called frame_size. <= block_size
+       * \param frozen_bit_positions is an integer vector which
+       *        defines the position of all frozen bits in a block.
+       *        Its size MUST be equal to block_size - num_info_bits.
+       *        Also it must be sorted and every position must only
+       *        occur once.
+       * \param frozen_bit_values holds an unpacked byte for every
+       *        frozen bit position.  It defines if a frozen bit is
+       *        fixed to '0' or '1'. Defaults to all ZERO.
+       */
+      polar_common(int block_size, int num_info_bits,
+                   std::vector<int> frozen_bit_positions,
+                   std::vector<char> frozen_bit_values);
       ~polar_common();
 
     protected:
@@ -70,8 +80,10 @@ namespace gr {
 
       // helper functions
       long bit_reverse(long value, int active_bits) const;
-      void print_packed_bit_array(const unsigned char* printed_array, const 
int num_bytes) const;
-      void print_unpacked_bit_array(const unsigned char* bits, const unsigned 
int num_bytes) const;
+      void print_packed_bit_array(const unsigned char* printed_array,
+                                  const int num_bytes) const;
+      void print_unpacked_bit_array(const unsigned char* bits,
+                                    const unsigned int num_bytes) const;
 
       std::vector<int> d_frozen_bit_positions;
       std::vector<char> d_frozen_bit_values;
@@ -87,8 +99,8 @@ namespace gr {
       gr::blocks::kernel::unpack_k_bits *d_unpacker; // convenience for 
'print_packed_bit_array' function.
     };
 
+    } //namespace code
   } // namespace fec
 } // namespace gr
 
 #endif /* INCLUDED_FEC_POLAR_COMMON_H */
-
diff --git a/gr-fec/include/gnuradio/fec/polar_decoder_common.h 
b/gr-fec/include/gnuradio/fec/polar_decoder_common.h
index 2376e8f..7a18ba8 100644
--- a/gr-fec/include/gnuradio/fec/polar_decoder_common.h
+++ b/gr-fec/include/gnuradio/fec/polar_decoder_common.h
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -30,22 +30,31 @@
 
 namespace gr {
   namespace fec {
+    namespace code {
 
     /*!
-     * \brief Class holds common methods and attributes for different decoder 
implementations
-     *
-     * \param block_size codeword size. MUST be a power of 2.
-     * \param num_info_bits represents the number of information bits in a 
block. Also called frame_size. <= block_size
-     * \param frozen_bit_positions is an integer vector which defines the 
position of all frozen bits in a block.
-     * Its size MUST be equal to block_size - num_info_bits.
-     * Also it must be sorted and every position must only occur once.
-     * \param frozen_bit_values holds an unpacked byte for every frozen bit 
position.
-     * It defines if a frozen bit is fixed to '0' or '1'. Defaults to all ZERO.
+     * \brief Class holds common methods and attributes for different
+     * decoder implementations
      */
     class FEC_API polar_decoder_common : public generic_decoder, public 
polar_common
     {
     public:
-      polar_decoder_common(int block_size, int num_info_bits, std::vector<int> 
frozen_bit_positions, std::vector<char> frozen_bit_values);
+      /*!
+       *
+       * \param block_size codeword size. MUST be a power of 2.
+       * \param num_info_bits represents the number of information bits
+       *        in a block. Also called frame_size. <= block_size
+       * \param frozen_bit_positions is an integer vector which defines
+       *        the position of all frozen bits in a block.  Its size
+       *        MUST be equal to block_size - num_info_bits.  Also it
+       *        must be sorted and every position must only occur once.
+       * \param frozen_bit_values holds an unpacked byte for every
+       *        frozen bit position. It defines if a frozen bit is
+       *        fixed to '0' or '1'. Defaults to all ZERO.
+       */
+      polar_decoder_common(int block_size, int num_info_bits,
+                           std::vector<int> frozen_bit_positions,
+                           std::vector<char> frozen_bit_values);
       ~polar_decoder_common();
 
       // FECAPI
@@ -84,8 +93,8 @@ namespace gr {
 
     };
 
+    } // namespace code
   } // namespace fec
 } // namespace gr
 
 #endif /* INCLUDED_FEC_POLAR_DECODER_COMMON_H */
-
diff --git a/gr-fec/include/gnuradio/fec/polar_decoder_sc.h 
b/gr-fec/include/gnuradio/fec/polar_decoder_sc.h
index d32c1c9..295e930 100644
--- a/gr-fec/include/gnuradio/fec/polar_decoder_sc.h
+++ b/gr-fec/include/gnuradio/fec/polar_decoder_sc.h
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -30,6 +30,7 @@
 
 namespace gr {
   namespace fec {
+    namespace code {
 
     /*!
      * \brief Standard successive cancellation (SC) decoder for POLAR codes
@@ -42,23 +43,32 @@ namespace gr {
     class FEC_API polar_decoder_sc : public polar_decoder_common
     {
     public:
+
       /*!
        * \param block_size codeword size. MUST be a power of 2.
-       * \param num_info_bits represents the number of information bits in a 
block. Also called frame_size. <= block_size
-       * \param frozen_bit_positions is an integer vector which defines the 
position of all frozen bits in a block.
-       * Its size MUST be equal to block_size - num_info_bits.
-       * Also it must be sorted and every position must only occur once.
-       * \param frozen_bit_values holds an unpacked byte for every frozen bit 
position.
-       * It defines if a frozen bit is fixed to '0' or '1'. Defaults to all 
ZERO.
+       * \param num_info_bits represents the number of information
+       *        bits in a block. Also called frame_size. <= block_size
+       * \param frozen_bit_positions is an integer vector which
+       *        defines the position of all frozen bits in a block.
+       *        Its size MUST be equal to block_size - num_info_bits.
+       *        Also it must be sorted and every position must only
+       *        occur once.
+       * \param frozen_bit_values holds an unpacked byte for every
+       *        frozen bit position. It defines if a frozen bit is
+       *        fixed to '0' or '1'. Defaults to all ZERO.
        */
-      static generic_decoder::sptr make(int block_size, int num_info_bits, 
std::vector<int> frozen_bit_positions, std::vector<char> frozen_bit_values);
+      static generic_decoder::sptr make(int block_size, int num_info_bits,
+                                        std::vector<int> frozen_bit_positions,
+                                        std::vector<char> frozen_bit_values);
       ~polar_decoder_sc();
 
       // FECAPI
       void generic_work(void *in_buffer, void *out_buffer);
 
     private:
-      polar_decoder_sc(int block_size, int num_info_bits, std::vector<int> 
frozen_bit_positions, std::vector<char> frozen_bit_values);
+      polar_decoder_sc(int block_size, int num_info_bits,
+                       std::vector<int> frozen_bit_positions,
+                       std::vector<char> frozen_bit_values);
 
       float* d_llr_vec;
       unsigned char* d_u_hat_vec;
@@ -67,8 +77,8 @@ namespace gr {
       void sc_decode(float* llrs, unsigned char* u);
     };
 
+    } // namespace code
   } // namespace fec
 } // namespace gr
 
 #endif /* INCLUDED_FEC_POLAR_DECODER_SC_H */
-
diff --git a/gr-fec/include/gnuradio/fec/polar_decoder_sc_list.h 
b/gr-fec/include/gnuradio/fec/polar_decoder_sc_list.h
index 1bd9d91..6f7033b 100644
--- a/gr-fec/include/gnuradio/fec/polar_decoder_sc_list.h
+++ b/gr-fec/include/gnuradio/fec/polar_decoder_sc_list.h
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -29,19 +29,21 @@
 
 namespace gr {
   namespace fec {
+    namespace code {
+
     namespace polar {
       class scl_list;
       class path;
     }
 
     /*!
-     * \brief Successive cancellation list (SCL) decoder for polar codes
-     * decoder is based on Tal, Vardy "List Decoding of Polar Codes", 2012
-     * LLR version: Balatsoukas-Stimming, Parizi, Burg "LLR-based Successive 
Cancellation List Decoding of Polar Codes", 2015
+     * \brief Successive cancellation list (SCL) decoder for polar
+     * codes.
      *
      * \details
-     * decoder is based on Tal, Vardy "List Decoding of Polar Codes", 2012
-     * LLR version: Balatsoukas-Stimming, Parizi, Burg "LLR-based Successive 
Cancellation List Decoding of Polar Codes", 2015
+     * Decoder is based on Tal, Vardy "List Decoding of Polar Codes",
+     * 2012 LLR version: Balatsoukas-Stimming, Parizi, Burg "LLR-based
+     * Successive Cancellation List Decoding of Polar Codes", 2015.
      *
      * Block expects float input with bits mapped 1 --> 1, 0 --> -1
      * Or: f = 2.0 * bit - 1.0
@@ -52,21 +54,29 @@ namespace gr {
       /*!
        * \param max_list_size caps number of followed decoding paths.
        * \param block_size codeword size. MUST be a power of 2.
-       * \param num_info_bits represents the number of information bits in a 
block. Also called frame_size. <= block_size
-       * \param frozen_bit_positions is an integer vector which defines the 
position of all frozen bits in a block.
-       * Its size MUST be equal to block_size - num_info_bits.
-       * Also it must be sorted and every position must only occur once.
-       * \param frozen_bit_values holds an unpacked byte for every frozen bit 
position.
-       * It defines if a frozen bit is fixed to '0' or '1'. Defaults to all 
ZERO.
+       * \param num_info_bits represents the number of information
+       *        bits in a block. Also called frame_size. <= block_size
+       * \param frozen_bit_positions is an integer vector which
+       *        defines the position of all frozen bits in a block.
+       *        Its size MUST be equal to block_size - num_info_bits.
+       *        Also it must be sorted and every position must only
+       *        occur once.
+       * \param frozen_bit_values holds an unpacked byte for every
+       *        frozen bit position. It defines if a frozen bit is
+       *        fixed to '0' or '1'. Defaults to all ZERO.
        */
-      static generic_decoder::sptr make(int max_list_size, int block_size, int 
num_info_bits, std::vector<int> frozen_bit_positions, std::vector<char> 
frozen_bit_values);
+      static generic_decoder::sptr make(int max_list_size, int block_size,
+                                        int num_info_bits, std::vector<int> 
frozen_bit_positions,
+                                        std::vector<char> frozen_bit_values);
       ~polar_decoder_sc_list();
 
       // FECAPI
       void generic_work(void *in_buffer, void *out_buffer);
 
     private:
-      polar_decoder_sc_list(int max_list_size, int block_size, int 
num_info_bits, std::vector<int> frozen_bit_positions, std::vector<char> 
frozen_bit_values);
+      polar_decoder_sc_list(int max_list_size, int block_size,
+                            int num_info_bits, std::vector<int> 
frozen_bit_positions,
+                            std::vector<char> frozen_bit_values);
 
       polar::scl_list* d_scl;
 
@@ -76,8 +86,9 @@ namespace gr {
       void calculate_llrs_for_list(const int u_num);
       void set_bit_in_list(const int u_num);
     };
+
+    } // namespace code
   } // namespace fec
 } // namespace gr
 
 #endif /* INCLUDED_POLAR_FEC_DECODER_SC_LIST_H */
-
diff --git a/gr-fec/include/gnuradio/fec/polar_encoder.h 
b/gr-fec/include/gnuradio/fec/polar_encoder.h
index 4ce1b11..e3b4557 100644
--- a/gr-fec/include/gnuradio/fec/polar_encoder.h
+++ b/gr-fec/include/gnuradio/fec/polar_encoder.h
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -30,6 +30,7 @@
 
 namespace gr {
   namespace fec {
+    namespace code {
 
     /*!
      * \brief POLAR encoder
@@ -46,16 +47,25 @@ namespace gr {
       /*!
        * Factory for a polar code encoder object.
        *
-       * \param block_size defines the codeword size. It MUST be a power of 2.
-       * \param num_info_bits represents the number of information bits in a 
block. Also called frame_size.
-       * \param frozen_bit_positions is an integer vector which defines the 
position of all frozen bits in a block.
-       * Its size MUST be equal to block_size - num_info_bits.
-       * Also it must be sorted and every position must only occur once.
-       * \param frozen_bit_values holds an unpacked byte for every frozen bit 
position.
-       * It defines if a frozen bit is fixed to '0' or '1'. Defaults to all 
ZERO.
-       * \param is_packed, choose 1 active bit/byte or 8 active bit/byte. if 
false, VOLK polar encoder is used.
+       * \param block_size defines the codeword size. It MUST be a
+       *        power of 2.
+       * \param num_info_bits represents the number of information
+       *        bits in a block. Also called frame_size.
+       * \param frozen_bit_positions is an integer vector which
+       *        defines the position of all frozen bits in a block.
+       *        Its size MUST be equal to block_size - num_info_bits.
+       *        Also it must be sorted and every position must only
+       *        occur once.
+       * \param frozen_bit_values holds an unpacked byte for every
+       *        frozen bit position. It defines if a frozen bit is
+       *        fixed to '0' or '1'. Defaults to all ZERO.
+       * \param is_packed choose 1 active bit/byte or 8 active
+       *        bit/byte. if false, VOLK polar encoder is used.
        */
-      static generic_encoder::sptr make(int block_size, int num_info_bits, 
std::vector<int> frozen_bit_positions, std::vector<char> frozen_bit_values, 
bool is_packed = false);
+      static generic_encoder::sptr make(int block_size, int num_info_bits,
+                                        std::vector<int> frozen_bit_positions,
+                                        std::vector<char> frozen_bit_values,
+                                        bool is_packed = false);
       ~polar_encoder();
 
       // FECAPI
@@ -68,7 +78,9 @@ namespace gr {
       const char* get_output_conversion(){return d_is_packed ? "packed_bits" : 
"none";};
 
     private:
-      polar_encoder(int block_size, int num_info_bits, std::vector<int>& 
frozen_bit_positions, std::vector<char>& frozen_bit_values, bool is_packed);
+      polar_encoder(int block_size, int num_info_bits,
+                    std::vector<int>& frozen_bit_positions,
+                    std::vector<char>& frozen_bit_values, bool is_packed);
       std::vector<int> d_info_bit_reversed_positions;
       bool d_is_packed;
 
@@ -77,9 +89,15 @@ namespace gr {
 
       // methods insert input bits and frozen bits into packed array for 
encoding
       unsigned char* d_frozen_bit_prototype; // packed frozen bits are written 
onto it and later copies are used.
-      void insert_packed_frozen_bits_and_reverse(unsigned char* target, const 
unsigned char* input) const;
-      void insert_unpacked_bit_into_packed_array_at_position(unsigned char* 
target, const unsigned char bit, const int pos) const;
-      void insert_packet_bit_into_packed_array_at_position(unsigned char* 
target, const unsigned char bit, const int target_pos, const int bit_pos) const;
+      void insert_packed_frozen_bits_and_reverse(unsigned char* target,
+                                                 const unsigned char* input) 
const;
+      void insert_unpacked_bit_into_packed_array_at_position(unsigned char* 
target,
+                                                             const unsigned 
char bit,
+                                                             const int pos) 
const;
+      void insert_packet_bit_into_packed_array_at_position(unsigned char* 
target,
+                                                           const unsigned char 
bit,
+                                                           const int 
target_pos,
+                                                           const int bit_pos) 
const;
 
       // packed encoding methods
       void encode_vector_packed(unsigned char* target) const;
@@ -94,8 +112,9 @@ namespace gr {
       unsigned char* d_frozen_bit_mask;
       unsigned char* d_frozen_bits;
     };
+
+    } // namespace code
   } // namespace fec
 } // namespace gr
 
 #endif /* INCLUDED_FEC_POLAR_ENCODER_H */
-
diff --git a/gr-fec/lib/polar_common.cc b/gr-fec/lib/polar_common.cc
index 3138aa5..9952ba0 100644
--- a/gr-fec/lib/polar_common.cc
+++ b/gr-fec/lib/polar_common.cc
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -35,10 +35,9 @@
 #include <iostream>
 #include <vector>
 
-namespace gr
-{
-  namespace fec
-  {
+namespace gr {
+  namespace fec {
+    namespace code {
 
     polar_common::polar_common(int block_size, int num_info_bits,
                                std::vector<int> frozen_bit_positions,
@@ -132,5 +131,6 @@ namespace gr
       std::cout << ")" << std::endl;
     }
 
+    } /* namespace code */
   } /* namespace fec */
 } /* namespace gr */
diff --git a/gr-fec/lib/polar_decoder_common.cc 
b/gr-fec/lib/polar_decoder_common.cc
index e9138aa..cb5a6db 100644
--- a/gr-fec/lib/polar_decoder_common.cc
+++ b/gr-fec/lib/polar_decoder_common.cc
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -32,12 +32,13 @@
 
 namespace gr {
   namespace fec {
+    namespace code {
 
     polar_decoder_common::polar_decoder_common(int block_size, int 
num_info_bits,
                                                std::vector<int> 
frozen_bit_positions,
                                                std::vector<char> 
frozen_bit_values) :
-        polar_common(block_size, num_info_bits, frozen_bit_positions, 
frozen_bit_values),
-        d_frozen_bit_counter(0)
+      polar_common(block_size, num_info_bits, frozen_bit_positions, 
frozen_bit_values),
+      d_frozen_bit_counter(0)
     {
     }
 
@@ -187,5 +188,6 @@ namespace gr {
       }
     }
 
+    } /* namespace code */
   } /* namespace fec */
 } /* namespace gr */
diff --git a/gr-fec/lib/polar_decoder_sc.cc b/gr-fec/lib/polar_decoder_sc.cc
index 1b872d0..1412946 100644
--- a/gr-fec/lib/polar_decoder_sc.cc
+++ b/gr-fec/lib/polar_decoder_sc.cc
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -31,23 +31,25 @@
 #include <cmath>
 #include <cstdio>
 
-namespace gr
-{
-  namespace fec
-  {
+namespace gr {
+  namespace fec {
+    namespace code {
 
     generic_decoder::sptr
-    polar_decoder_sc::make(int block_size, int num_info_bits, std::vector<int> 
frozen_bit_positions,
+    polar_decoder_sc::make(int block_size, int num_info_bits,
+                           std::vector<int> frozen_bit_positions,
                            std::vector<char> frozen_bit_values)
     {
-      return generic_decoder::sptr(
-          new polar_decoder_sc(block_size, num_info_bits, 
frozen_bit_positions, frozen_bit_values));
+      return generic_decoder::sptr
+        (new polar_decoder_sc(block_size, num_info_bits,
+                              frozen_bit_positions,
+                              frozen_bit_values));
     }
 
     polar_decoder_sc::polar_decoder_sc(int block_size, int num_info_bits,
                                        std::vector<int> frozen_bit_positions,
                                        std::vector<char> frozen_bit_values) :
-        polar_decoder_common(block_size, num_info_bits, frozen_bit_positions, 
frozen_bit_values)
+      polar_decoder_common(block_size, num_info_bits, frozen_bit_positions, 
frozen_bit_values)
     {
       d_llr_vec = (float*) volk_malloc(sizeof(float) * block_size * 
(block_power() + 1), volk_get_alignment());
       memset(d_llr_vec, 0, sizeof(float) * block_size * (block_power() + 1));
@@ -89,5 +91,7 @@ namespace gr
       }
       return llr_bit_decision(llr);
     }
+
+    } /* namespace code */
   } /* namespace fec */
 } /* namespace gr */
diff --git a/gr-fec/lib/polar_decoder_sc_list.cc 
b/gr-fec/lib/polar_decoder_sc_list.cc
index 3065997..041cd89 100644
--- a/gr-fec/lib/polar_decoder_sc_list.cc
+++ b/gr-fec/lib/polar_decoder_sc_list.cc
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -32,10 +32,9 @@
 #include <cmath>
 #include <algorithm>
 
-namespace gr
-{
-  namespace fec
-  {
+namespace gr {
+  namespace fec {
+    namespace code {
 
     generic_decoder::sptr
     polar_decoder_sc_list::make(int max_list_size, int block_size, int 
num_info_bits,
@@ -43,7 +42,8 @@ namespace gr
                                 std::vector<char> frozen_bit_values)
     {
       return generic_decoder::sptr(
-          new polar_decoder_sc_list(max_list_size, block_size, num_info_bits, 
frozen_bit_positions,
+          new polar_decoder_sc_list(max_list_size, block_size, num_info_bits,
+                                    frozen_bit_positions,
                                     frozen_bit_values));
     }
 
@@ -51,7 +51,7 @@ namespace gr
                                                  int num_info_bits,
                                                  std::vector<int> 
frozen_bit_positions,
                                                  std::vector<char> 
frozen_bit_values) :
-            polar_decoder_common(block_size, num_info_bits, 
frozen_bit_positions, frozen_bit_values)
+      polar_decoder_common(block_size, num_info_bits, frozen_bit_positions, 
frozen_bit_values)
     {
       d_scl = new polar::scl_list(max_list_size, block_size, block_power());
     }
@@ -117,7 +117,7 @@ namespace gr
         d_scl->set_info_bit(u_num);
       }
     }
+
+    } /* namespace code */
   } /* namespace fec */
 } /* namespace gr */
-
-
diff --git a/gr-fec/lib/polar_encoder.cc b/gr-fec/lib/polar_encoder.cc
index eeb283e..ed5288b 100644
--- a/gr-fec/lib/polar_encoder.cc
+++ b/gr-fec/lib/polar_encoder.cc
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -33,18 +33,20 @@
 #include <gnuradio/blocks/pack_k_bits.h>
 #include <gnuradio/blocks/unpack_k_bits.h>
 
-namespace gr
-{
-  namespace fec
-  {
+namespace gr {
+  namespace fec {
+    namespace code {
 
     generic_encoder::sptr
-    polar_encoder::make(int block_size, int num_info_bits, std::vector<int> 
frozen_bit_positions,
+    polar_encoder::make(int block_size, int num_info_bits,
+                        std::vector<int> frozen_bit_positions,
                         std::vector<char> frozen_bit_values, bool is_packed)
     {
-      return generic_encoder::sptr(
-          new polar_encoder(block_size, num_info_bits, frozen_bit_positions, 
frozen_bit_values,
-                            is_packed));
+      return generic_encoder::sptr
+        (new polar_encoder(block_size, num_info_bits,
+                           frozen_bit_positions,
+                           frozen_bit_values,
+                           is_packed));
     }
 
     polar_encoder::polar_encoder(int block_size, int num_info_bits,
@@ -226,5 +228,7 @@ namespace gr
       insert_unpacked_bit_into_packed_array_at_position(target, (bit >> (7 - 
bit_pos)) & 0x01,
                                                         target_pos);
     }
+
+    } /* namespace code */
   } /* namespace fec */
 } /* namespace gr */
diff --git a/gr-fec/lib/scl_list.cc b/gr-fec/lib/scl_list.cc
index f36c48f..5ad8037 100644
--- a/gr-fec/lib/scl_list.cc
+++ b/gr-fec/lib/scl_list.cc
@@ -28,10 +28,14 @@
 
 namespace gr {
   namespace fec {
-    namespace polar {
-
-      scl_list::scl_list(const unsigned int size, const unsigned int 
block_size, const unsigned int block_power):
-          d_list_size(size), d_block_size(block_size), 
d_block_power(block_power), d_num_buff_elements(block_size * (block_power + 1))
+    namespace code {
+      namespace polar {
+
+      scl_list::scl_list(const unsigned int size,
+                         const unsigned int block_size,
+                         const unsigned int block_power):
+          d_list_size(size), d_block_size(block_size), 
d_block_power(block_power),
+          d_num_buff_elements(block_size * (block_power + 1))
       {
         for(unsigned int i = 0; i < 2 * size; i++){
           d_path_list.push_back(new path());
@@ -164,7 +168,9 @@ namespace gr {
       {
         for(unsigned int i = 0; i < d_active_path_counter; i++){
           d_path_list[i]->u_vec[bit_pos] = frozen_bit;
-          d_path_list[i]->path_metric = 
update_path_metric(d_path_list[i]->path_metric, 
d_path_list[i]->llr_vec[bit_pos], frozen_bit);
+          d_path_list[i]->path_metric = 
update_path_metric(d_path_list[i]->path_metric,
+                                                           
d_path_list[i]->llr_vec[bit_pos],
+                                                           frozen_bit);
         }
         d_active_pos = 0;
       }
@@ -182,5 +188,6 @@ namespace gr {
       }
 
     } /* namespace polar */
+    } /* namespace code */
   } /* namespace fec */
 } /* namespace gr */
diff --git a/gr-fec/lib/scl_list.h b/gr-fec/lib/scl_list.h
index 5a93db2..d0f62f2 100644
--- a/gr-fec/lib/scl_list.h
+++ b/gr-fec/lib/scl_list.h
@@ -27,6 +27,8 @@
 
 namespace gr {
   namespace fec {
+    namespace code {
+
     namespace polar {
       struct path {
         path();
@@ -58,10 +60,13 @@ namespace gr {
         void reset();
 
         // comparator for std::sort
-        static bool path_compare(path* first, path* second){return 
first->path_metric < second->path_metric;};
+        static bool path_compare(path* first, path* second) {
+          return first->path_metric < second->path_metric;
+        };
 
       public:
-        scl_list(const unsigned int list_size, const unsigned int block_size, 
const unsigned int block_power);
+        scl_list(const unsigned int list_size, const unsigned int block_size,
+                 const unsigned int block_power);
         virtual
         ~scl_list();
         const unsigned int size() const {return d_list_size;};
@@ -75,6 +80,7 @@ namespace gr {
       };
 
     } /* namespace polar */
+    } /* namespace code */
   } /* namespace fec */
 } /* namespace gr */
 



reply via email to

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