[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 14/25: polar: updated documentation and exa
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 14/25: polar: updated documentation and examples |
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 3474fccd70a9d6dfc9c82be847988428e03efbeb
Author: Johannes Demel <address@hidden>
Date: Tue Sep 22 17:57:23 2015 +0200
polar: updated documentation and examples
---
....grc => fecapi_polar_async_packed_decoders.grc} | 864 +++++++++++-----
..._code_example.grc => fecapi_polar_decoders.grc} | 1033 +++++++++++++++-----
..._code_example.grc => fecapi_polar_encoders.grc} | 803 ++++++++++-----
gr-fec/examples/polar_ber_curve_gen.grc | 4 +-
gr-fec/examples/polar_code_example.grc | 38 +-
gr-fec/include/gnuradio/fec/polar_common.h | 12 +-
gr-fec/include/gnuradio/fec/polar_decoder_common.h | 9 +-
gr-fec/include/gnuradio/fec/polar_decoder_sc.h | 11 +
.../include/gnuradio/fec/polar_decoder_sc_list.h | 14 +-
gr-fec/include/gnuradio/fec/polar_encoder.h | 18 +-
gr-fec/python/fec/qa_polar_decoder_sc.py | 2 +-
gr-fec/python/fec/qa_polar_decoder_sc_list.py | 2 +-
12 files changed, 2066 insertions(+), 744 deletions(-)
diff --git a/gr-fec/examples/polar_encoder_decoder_chain.grc
b/gr-fec/examples/fecapi_polar_async_packed_decoders.grc
similarity index 61%
rename from gr-fec/examples/polar_encoder_decoder_chain.grc
rename to gr-fec/examples/fecapi_polar_async_packed_decoders.grc
index b5d27ca..e7660cf 100644
--- a/gr-fec/examples/polar_encoder_decoder_chain.grc
+++ b/gr-fec/examples/fecapi_polar_async_packed_decoders.grc
@@ -1,12 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<?grc format='1' created='3.7.9'?>
<flow_graph>
- <timestamp>Mon Jun 15 10:51:02 2015</timestamp>
+ <timestamp>Tue Sep 22 15:36:05 2015</timestamp>
<block>
<key>options</key>
<param>
<key>author</key>
- <value>Johannes Demel</value>
+ <value></value>
</param>
<param>
<key>alias</key>
@@ -22,16 +22,7 @@
</param>
<param>
<key>comment</key>
- <value># for rough throughput measurements.
-
- tb = polar_encoder_decoder_chain()
- start_time = time.time()
- tb.start()
- tb.wait()
- stop_time = time.time()
- diff = stop_time - start_time
- throughput = tb.head_samps / diff
- print("execution time: {0:.6f} for {1:e} samples with throughput: {2:,.2f}
Sps".format(diff, tb.head_samps, throughput))</value>
+ <value></value>
</param>
<param>
<key>description</key>
@@ -43,7 +34,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(10, 10)</value>
+ <value>(8, 8)</value>
</param>
<param>
<key>_rotation</key>
@@ -51,11 +42,11 @@
</param>
<param>
<key>generate_options</key>
- <value>no_gui</value>
+ <value>qt_gui</value>
</param>
<param>
<key>id</key>
- <value>polar_encoder_decoder_chain</value>
+ <value>fecapi_polar_decoder_examples</value>
</param>
<param>
<key>max_nouts</key>
@@ -67,7 +58,7 @@
</param>
<param>
<key>run_options</key>
- <value>run</value>
+ <value>prompt</value>
</param>
<param>
<key>run</key>
@@ -79,14 +70,17 @@
</param>
<param>
<key>title</key>
- <value>POLAR Encoder and Decoder</value>
+ <value>Polar decoder examples</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>comment</key>
- <value></value>
+ <value>codeword size of polar codes.
+
+MUST be a power of 2!
+MUST be greater than 'frame_size'.</value>
</param>
<param>
<key>_enabled</key>
@@ -94,7 +88,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(704, 35)</value>
+ <value>(840, 499)</value>
</param>
<param>
<key>_rotation</key>
@@ -106,22 +100,147 @@
</param>
<param>
<key>value</key>
- <value>2 ** 11</value>
+ <value>512</value>
</param>
</block>
<block>
- <key>variable</key>
+ <key>variable_polar_code_configurator</key>
+ <param>
+ <key>num_info_bits</key>
+ <value>frame_size * 8</value>
+ </param>
+ <param>
+ <key>block_size</key>
+ <value>block_size</value>
+ </param>
+ <param>
+ <key>channel</key>
+ <value>polar.CHANNEL_TYPE_BEC</value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value>Block is used to configure polar encoders and decoders.
+
+returns dictionary with requested configuration.
+
+most important dict values: 'values' and 'positions'</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(664, 499)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>polar_config</value>
+ </param>
+ <param>
+ <key>design_snr</key>
+ <value>0.0</value>
+ </param>
+ <param>
+ <key>mu</key>
+ <value>32</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_polar_decoder_sc_def</key>
+ <param>
+ <key>num_info_bits</key>
+ <value>frame_size * 8</value>
+ </param>
+ <param>
+ <key>block_size</key>
+ <value>block_size</value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value>Standard 'Successive Cancellation' decoder.
+
+performs better with greater block size.
+This is due to stronger polarization at higher block sizes.</value>
+ </param>
+ <param>
+ <key>dim1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim2</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>frozen_bit_positions</key>
+ <value>polar_config['positions']</value>
+ </param>
+ <param>
+ <key>frozen_bit_values</key>
+ <value>polar_config['values']</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(400, 651)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>polar_decoder_sc</value>
+ </param>
+ <param>
+ <key>ndim</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_polar_encoder_def</key>
+ <param>
+ <key>num_info_bits</key>
+ <value>frame_size * 8</value>
+ </param>
+ <param>
+ <key>block_size</key>
+ <value>block_size</value>
+ </param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
+ <key>dim1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim2</key>
+ <value>1</value>
+ </param>
+ <param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>frozen_bit_positions</key>
+ <value>polar_config['positions']</value>
+ </param>
+ <param>
+ <key>frozen_bit_values</key>
+ <value>polar_config['values']</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(360, 11)</value>
+ <value>(400, 507)</value>
</param>
<param>
<key>_rotation</key>
@@ -129,11 +248,15 @@
</param>
<param>
<key>id</key>
- <value>head_samps</value>
+ <value>polar_encoder_sc</value>
</param>
<param>
- <key>value</key>
- <value>2 ** 23# encoder: 32, decoder: 23</value>
+ <key>is_packed</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>ndim</key>
+ <value>0</value>
</param>
</block>
<block>
@@ -148,7 +271,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(792, 35)</value>
+ <value>(8, 99)</value>
</param>
<param>
<key>_rotation</key>
@@ -156,38 +279,93 @@
</param>
<param>
<key>id</key>
- <value>n_info_bits</value>
+ <value>samp_rate</value>
</param>
<param>
<key>value</key>
- <value>block_size / 2</value>
+ <value>int(50e3)</value>
</param>
</block>
<block>
- <key>variable_polar_code_configurator</key>
+ <key>analog_random_source_x</key>
<param>
- <key>num_info_bits</key>
- <value>n_info_bits</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>block_size</key>
- <value>block_size</value>
+ <key>comment</key>
+ <value></value>
</param>
<param>
- <key>channel</key>
- <value>BSC</value>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(136, 459)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ <param>
+ <key>id</key>
+ <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>min</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>num_samps</key>
+ <value>1000</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>
+ <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>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(704, 99)</value>
+ <value>(1176, 307)</value>
</param>
<param>
<key>_rotation</key>
@@ -195,105 +373,218 @@
</param>
<param>
<key>id</key>
- <value>polar_config</value>
+ <value>blocks_char_to_float_0_0_0_0</value>
</param>
<param>
- <key>design_snr</key>
- <value>-1.0</value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>mu</key>
- <value>32</value>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>scale</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
</param>
</block>
<block>
- <key>variable_polar_decoder_sc_def</key>
+ <key>blocks_char_to_float</key>
<param>
- <key>num_info_bits</key>
- <value>n_info_bits</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>block_size</key>
- <value>block_size</value>
+ <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>(672, 235)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>blocks_char_to_float_0_1</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>scale</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_char_to_float</key>
+ <param>
+ <key>alias</key>
+ <value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
- <key>dim1</key>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(656, 395)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>blocks_char_to_float_0_1_0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>scale</key>
<value>1</value>
</param>
<param>
- <key>dim2</key>
- <value>4</value>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_ctrlport_monitor_performance</key>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value></value>
</param>
<param>
<key>_enabled</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>en</key>
<value>True</value>
</param>
<param>
- <key>frozen_bit_positions</key>
- <value>polar_config['positions']</value>
+ <key>_coordinate</key>
+ <value>(384, 11)</value>
</param>
<param>
- <key>frozen_bit_values</key>
- <value>polar_config['values']</value>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>blocks_ctrlport_monitor_performance_0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_pdu_to_tagged_stream</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>(864, 555)</value>
+ <value>(952, 155)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>blocks_pdu_to_tagged_stream_0</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>_rotation</key>
- <value>0</value>
+ <key>tag</key>
+ <value>pkt_len</value>
</param>
<param>
- <key>id</key>
- <value>polar_decoder</value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>ndim</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
</block>
<block>
- <key>variable_polar_encoder_def</key>
+ <key>blocks_pdu_to_tagged_stream</key>
<param>
- <key>num_info_bits</key>
- <value>n_info_bits</value>
- </param>
- <param>
- <key>block_size</key>
- <value>block_size</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
- <key>dim1</key>
- <value>1</value>
- </param>
- <param>
- <key>dim2</key>
- <value>4</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
<key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>frozen_bit_positions</key>
- <value>polar_config['positions']</value>
- </param>
- <param>
- <key>frozen_bit_values</key>
- <value>polar_config['values']</value>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(192, 451)</value>
+ <value>(976, 307)</value>
</param>
<param>
<key>_rotation</key>
@@ -301,74 +592,86 @@
</param>
<param>
<key>id</key>
- <value>polar_encoder</value>
+ <value>blocks_pdu_to_tagged_stream_0_0</value>
</param>
<param>
- <key>is_packed</key>
- <value>False</value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>ndim</key>
+ <key>tag</key>
+ <value>pkt_len</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
<value>0</value>
</param>
</block>
<block>
- <key>variable_polar_decoder_sc_list_def</key>
+ <key>blocks_repack_bits_bb</key>
<param>
- <key>num_info_bits</key>
- <value>n_info_bits</value>
+ <key>k</key>
+ <value>8</value>
</param>
<param>
- <key>block_size</key>
- <value>block_size</value>
+ <key>l</key>
+ <value>1</value>
</param>
<param>
- <key>comment</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>dim1</key>
- <value>1</value>
+ <key>comment</key>
+ <value></value>
</param>
<param>
- <key>dim2</key>
- <value>4</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>frozen_bit_positions</key>
- <value>polar_config['positions']</value>
- </param>
- <param>
- <key>frozen_bit_values</key>
- <value>polar_config['values']</value>
+ <key>endianness</key>
+ <value>gr.GR_MSB_FIRST</value>
</param>
<param>
<key>_coordinate</key>
- <value>(608, 539)</value>
+ <value>(920, 227)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
<param>
<key>id</key>
- <value>polar_scld</value>
+ <value>blocks_repack_bits_bb_0</value>
</param>
<param>
- <key>max_list_size</key>
- <value>8</value>
+ <key>len_tag_key</key>
+ <value>pkt_len</value>
</param>
<param>
- <key>ndim</key>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
<value>0</value>
</param>
+ <param>
+ <key>align_output</key>
+ <value>False</value>
+ </param>
</block>
<block>
- <key>analog_random_source_x</key>
+ <key>blocks_stream_to_tagged_stream</key>
<param>
<key>alias</key>
<value></value>
@@ -387,7 +690,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(0, 323)</value>
+ <value>(168, 387)</value>
</param>
<param>
<key>_rotation</key>
@@ -395,39 +698,35 @@
</param>
<param>
<key>id</key>
- <value>analog_random_source_x_0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
+ <value>blocks_stream_to_tagged_stream_0_0</value>
</param>
<param>
- <key>max</key>
- <value>2</value>
+ <key>len_tag_key</key>
+ <value>pkt_len</value>
</param>
<param>
- <key>minoutbuf</key>
+ <key>maxoutbuf</key>
<value>0</value>
</param>
<param>
- <key>min</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>num_samps</key>
- <value>2 ** 10 </value>
+ <key>packet_len</key>
+ <value>frame_size</value>
</param>
<param>
<key>type</key>
<value>byte</value>
</param>
<param>
- <key>repeat</key>
- <value>True</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
</block>
<block>
- <key>blocks_char_to_float</key>
+ <key>blocks_tagged_stream_to_pdu</key>
<param>
<key>alias</key>
<value></value>
@@ -442,11 +741,11 @@
</param>
<param>
<key>_enabled</key>
- <value>False</value>
+ <value>True</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1112, 347)</value>
+ <value>(488, 155)</value>
</param>
<param>
<key>_rotation</key>
@@ -454,27 +753,27 @@
</param>
<param>
<key>id</key>
- <value>blocks_char_to_float_0</value>
+ <value>blocks_tagged_stream_to_pdu_0</value>
</param>
<param>
- <key>maxoutbuf</key>
- <value>0</value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>tag</key>
+ <value>pkt_len</value>
</param>
<param>
- <key>scale</key>
- <value>1.0</value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
</block>
<block>
- <key>blocks_char_to_float</key>
+ <key>blocks_tagged_stream_to_pdu</key>
<param>
<key>alias</key>
<value></value>
@@ -489,11 +788,11 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(736, 347)</value>
+ <value>(528, 307)</value>
</param>
<param>
<key>_rotation</key>
@@ -501,27 +800,27 @@
</param>
<param>
<key>id</key>
- <value>blocks_char_to_float_0_1</value>
+ <value>blocks_tagged_stream_to_pdu_1</value>
</param>
<param>
- <key>maxoutbuf</key>
- <value>0</value>
+ <key>type</key>
+ <value>float</value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>tag</key>
+ <value>pkt_len</value>
</param>
<param>
- <key>scale</key>
- <value>1</value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
</block>
<block>
- <key>blocks_head</key>
+ <key>blocks_throttle</key>
<param>
<key>alias</key>
<value></value>
@@ -540,7 +839,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(944, 459)</value>
+ <value>(168, 307)</value>
</param>
<param>
<key>_rotation</key>
@@ -548,7 +847,11 @@
</param>
<param>
<key>id</key>
- <value>blocks_head_0</value>
+ <value>blocks_throttle_0</value>
+ </param>
+ <param>
+ <key>ignoretag</key>
+ <value>True</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -559,8 +862,8 @@
<value>0</value>
</param>
<param>
- <key>num_items</key>
- <value>head_samps</value>
+ <key>samples_per_second</key>
+ <value>samp_rate</value>
</param>
<param>
<key>type</key>
@@ -572,16 +875,12 @@
</param>
</block>
<block>
- <key>blocks_null_sink</key>
+ <key>blocks_vector_source_x</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
- <key>bus_conns</key>
- <value>[[0,],]</value>
- </param>
- <param>
<key>comment</key>
<value></value>
</param>
@@ -595,28 +894,44 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1152, 465)</value>
+ <value>(136, 203)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
<param>
<key>id</key>
- <value>blocks_null_sink_0</value>
+ <value>blocks_vector_source_x_0_1_0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>type</key>
<value>byte</value>
</param>
<param>
- <key>num_inputs</key>
- <value>1</value>
+ <key>repeat</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>tags</key>
+ <value>[]</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
+ <param>
+ <key>vector</key>
+ <value>(frame_size/15)*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0,
127]</value>
+ </param>
</block>
<block>
<key>digital_map_bb</key>
@@ -638,11 +953,11 @@
</param>
<param>
<key>_coordinate</key>
- <value>(624, 347)</value>
+ <value>(808, 235)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
<param>
<key>id</key>
@@ -650,7 +965,7 @@
</param>
<param>
<key>map</key>
- <value>[-1, 1]</value>
+ <value>[-1,1]</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -662,11 +977,7 @@
</param>
</block>
<block>
- <key>fec_extended_decoder</key>
- <param>
- <key>ann</key>
- <value>None</value>
- </param>
+ <key>fec_async_decoder</key>
<param>
<key>alias</key>
<value></value>
@@ -680,8 +991,8 @@
<value></value>
</param>
<param>
- <key>decoder_list</key>
- <value>polar_scld</value>
+ <key>decoder</key>
+ <value>polar_decoder_sc</value>
</param>
<param>
<key>_enabled</key>
@@ -689,7 +1000,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(872, 323)</value>
+ <value>(736, 307)</value>
</param>
<param>
<key>_rotation</key>
@@ -697,7 +1008,7 @@
</param>
<param>
<key>id</key>
- <value>fec_extended_decoder_0</value>
+ <value>fec_async_decoder_0</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -708,20 +1019,16 @@
<value>0</value>
</param>
<param>
- <key>puncpat</key>
- <value>'11'</value>
- </param>
- <param>
- <key>threadtype</key>
- <value>none</value>
+ <key>packed</key>
+ <value>True</value>
</param>
<param>
- <key>value</key>
- <value>fec_extended_decoder</value>
+ <key>rev_pack</key>
+ <value>False</value>
</param>
</block>
<block>
- <key>fec_extended_encoder</key>
+ <key>fec_async_encoder</key>
<param>
<key>alias</key>
<value></value>
@@ -736,15 +1043,15 @@
</param>
<param>
<key>_enabled</key>
- <value>0</value>
+ <value>True</value>
</param>
<param>
- <key>encoder_list</key>
- <value>polar_encoder</value>
+ <key>encoder</key>
+ <value>polar_encoder_sc</value>
</param>
<param>
<key>_coordinate</key>
- <value>(192, 331)</value>
+ <value>(712, 155)</value>
</param>
<param>
<key>_rotation</key>
@@ -752,7 +1059,7 @@
</param>
<param>
<key>id</key>
- <value>fec_extended_encoder_0</value>
+ <value>fec_async_encoder_0</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -763,16 +1070,63 @@
<value>0</value>
</param>
<param>
- <key>puncpat</key>
- <value>'11'</value>
+ <key>packed</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>rev_pack</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>rev_unpack</key>
+ <value>False</value>
+ </param>
+ </block>
+ <block>
+ <key>parameter</key>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(184, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>frame_size</value>
</param>
<param>
- <key>threadtype</key>
- <value>none</value>
+ <key>label</key>
+ <value>Frame Size</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value></value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>intx</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>30</value>
</param>
</block>
<block>
- <key>import</key>
+ <key>parameter</key>
<param>
<key>alias</key>
<value></value>
@@ -787,7 +1141,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1208, 19)</value>
+ <value>(296, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -795,18 +1149,30 @@
</param>
<param>
<key>id</key>
- <value>import_0</value>
+ <value>puncpat</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value></value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value></value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>string</value>
</param>
<param>
- <key>import</key>
- <value>import time</value>
+ <key>value</key>
+ <value>'11'</value>
</param>
</block>
<block>
<key>qtgui_time_sink_x</key>
<param>
<key>autoscale</key>
- <value>True</value>
+ <value>False</value>
</param>
<param>
<key>alias</key>
@@ -830,11 +1196,11 @@
</param>
<param>
<key>_enabled</key>
- <value>False</value>
+ <value>True</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1256, 331)</value>
+ <value>(1336, 363)</value>
</param>
<param>
<key>gui_hint</key>
@@ -866,7 +1232,7 @@
</param>
<param>
<key>label1</key>
- <value></value>
+ <value>Decoded</value>
</param>
<param>
<key>marker1</key>
@@ -906,7 +1272,7 @@
</param>
<param>
<key>alpha2</key>
- <value>1.0</value>
+ <value>0.6</value>
</param>
<param>
<key>color2</key>
@@ -914,7 +1280,7 @@
</param>
<param>
<key>label2</key>
- <value></value>
+ <value>Input</value>
</param>
<param>
<key>marker2</key>
@@ -938,7 +1304,7 @@
</param>
<param>
<key>label3</key>
- <value></value>
+ <value>Rep. (Rate=3)</value>
</param>
<param>
<key>marker3</key>
@@ -962,7 +1328,7 @@
</param>
<param>
<key>label4</key>
- <value></value>
+ <value>CC (K=7, Rate=2)</value>
</param>
<param>
<key>marker4</key>
@@ -986,7 +1352,7 @@
</param>
<param>
<key>label5</key>
- <value></value>
+ <value>CCSDS</value>
</param>
<param>
<key>marker5</key>
@@ -1098,15 +1464,15 @@
</param>
<param>
<key>name</key>
- <value>""</value>
+ <value></value>
</param>
<param>
<key>nconnections</key>
- <value>1</value>
+ <value>2</value>
</param>
<param>
<key>size</key>
- <value>2048</value>
+ <value>512</value>
</param>
<param>
<key>srate</key>
@@ -1142,7 +1508,7 @@
</param>
<param>
<key>update_time</key>
- <value>0.10</value>
+ <value>0.01</value>
</param>
<param>
<key>ylabel</key>
@@ -1154,7 +1520,7 @@
</param>
<param>
<key>ymax</key>
- <value>1</value>
+ <value>140</value>
</param>
<param>
<key>ymin</key>
@@ -1163,56 +1529,98 @@
</block>
<connection>
<source_block_id>analog_random_source_x_0</source_block_id>
- <sink_block_id>digital_map_bb_0</sink_block_id>
+ <sink_block_id>blocks_throttle_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>analog_random_source_x_0</source_block_id>
- <sink_block_id>fec_extended_encoder_0</sink_block_id>
+ <source_block_id>blocks_char_to_float_0_0_0_0</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</source_block_id>
+ <sink_block_id>blocks_tagged_stream_to_pdu_1</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>
+ <source_block_id>blocks_char_to_float_0_1_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_pdu_to_tagged_stream_0</source_block_id>
+ <sink_block_id>blocks_repack_bits_bb_0</sink_block_id>
+ <source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_char_to_float_0_1</source_block_id>
- <sink_block_id>fec_extended_decoder_0</sink_block_id>
+ <source_block_id>blocks_pdu_to_tagged_stream_0_0</source_block_id>
+ <sink_block_id>blocks_char_to_float_0_0_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_repack_bits_bb_0</source_block_id>
+ <sink_block_id>digital_map_bb_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_head_0</source_block_id>
- <sink_block_id>blocks_null_sink_0</sink_block_id>
+ <source_block_id>blocks_stream_to_tagged_stream_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>digital_map_bb_0</source_block_id>
- <sink_block_id>blocks_char_to_float_0_1</sink_block_id>
+ <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
+ <sink_block_id>blocks_tagged_stream_to_pdu_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_extended_decoder_0</source_block_id>
- <sink_block_id>blocks_char_to_float_0</sink_block_id>
+ <source_block_id>blocks_tagged_stream_to_pdu_0</source_block_id>
+ <sink_block_id>fec_async_encoder_0</sink_block_id>
+ <source_key>pdus</source_key>
+ <sink_key>in</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_tagged_stream_to_pdu_1</source_block_id>
+ <sink_block_id>fec_async_decoder_0</sink_block_id>
+ <source_key>pdus</source_key>
+ <sink_key>in</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_throttle_0</source_block_id>
+ <sink_block_id>blocks_stream_to_tagged_stream_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_extended_decoder_0</source_block_id>
- <sink_block_id>blocks_head_0</sink_block_id>
+ <source_block_id>blocks_vector_source_x_0_1_0</source_block_id>
+ <sink_block_id>blocks_throttle_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_extended_encoder_0</source_block_id>
- <sink_block_id>blocks_head_0</sink_block_id>
+ <source_block_id>digital_map_bb_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>fec_async_decoder_0</source_block_id>
+ <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id>
+ <source_key>out</source_key>
+ <sink_key>pdus</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fec_async_encoder_0</source_block_id>
+ <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id>
+ <source_key>out</source_key>
+ <sink_key>pdus</sink_key>
+ </connection>
</flow_graph>
diff --git a/gr-fec/examples/polar_code_example.grc
b/gr-fec/examples/fecapi_polar_decoders.grc
similarity index 60%
copy from gr-fec/examples/polar_code_example.grc
copy to gr-fec/examples/fecapi_polar_decoders.grc
index ae388d6..83e86fd 100644
--- a/gr-fec/examples/polar_code_example.grc
+++ b/gr-fec/examples/fecapi_polar_decoders.grc
@@ -1,12 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<?grc format='1' created='3.7.9'?>
<flow_graph>
- <timestamp>Thu Jul 16 16:19:12 2015</timestamp>
+ <timestamp>Tue Sep 22 15:13:38 2015</timestamp>
<block>
<key>options</key>
<param>
<key>author</key>
- <value>Johannes Demel</value>
+ <value></value>
</param>
<param>
<key>alias</key>
@@ -34,7 +34,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(10, 10)</value>
+ <value>(8, 8)</value>
</param>
<param>
<key>_rotation</key>
@@ -46,7 +46,7 @@
</param>
<param>
<key>id</key>
- <value>polar_code_example</value>
+ <value>fecapi_polar_decoders</value>
</param>
<param>
<key>max_nouts</key>
@@ -70,14 +70,17 @@
</param>
<param>
<key>title</key>
- <value>POLAR code example flowgraph</value>
+ <value>Polar Decoders Example</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>comment</key>
- <value></value>
+ <value>codeword size of polar codes.
+
+MUST be a power of 2!
+MUST be greater than 'frame_size'.</value>
</param>
<param>
<key>_enabled</key>
@@ -85,7 +88,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(560, 267)</value>
+ <value>(1320, 547)</value>
</param>
<param>
<key>_rotation</key>
@@ -97,22 +100,34 @@
</param>
<param>
<key>value</key>
- <value>1024</value>
+ <value>512</value>
</param>
</block>
<block>
- <key>variable</key>
+ <key>variable_dummy_decoder_def</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
+ <key>dim1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim2</key>
+ <value>1</value>
+ </param>
+ <param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>framebits</key>
+ <value>frame_size*8</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(560, 331)</value>
+ <value>(152, 643)</value>
</param>
<param>
<key>_rotation</key>
@@ -120,18 +135,61 @@
</param>
<param>
<key>id</key>
- <value>n_info_bits</value>
+ <value>dec_dummy</value>
</param>
<param>
<key>value</key>
- <value>block_size / 2</value>
+ <value>"ok"</value>
+ </param>
+ <param>
+ <key>ndim</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_dummy_encoder_def</key>
+ <param>
+ <key>comment</key>
+ <value></value>
+ </param>
+ <param>
+ <key>dim1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim2</key>
+ <value>4</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>framebits</key>
+ <value>frame_size*8</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(152, 563)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>enc_dummy</value>
+ </param>
+ <param>
+ <key>ndim</key>
+ <value>0</value>
</param>
</block>
<block>
<key>variable_polar_code_configurator</key>
<param>
<key>num_info_bits</key>
- <value>n_info_bits</value>
+ <value>frame_size * 8</value>
</param>
<param>
<key>block_size</key>
@@ -139,11 +197,15 @@
</param>
<param>
<key>channel</key>
- <value>BSC</value>
+ <value>polar.CHANNEL_TYPE_BEC</value>
</param>
<param>
<key>comment</key>
- <value></value>
+ <value>Block is used to configure polar encoders and decoders.
+
+returns dictionary with requested configuration.
+
+most important dict values: 'values' and 'positions'</value>
</param>
<param>
<key>_enabled</key>
@@ -151,7 +213,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(664, 267)</value>
+ <value>(1144, 547)</value>
</param>
<param>
<key>_rotation</key>
@@ -174,7 +236,7 @@
<key>variable_polar_decoder_sc_def</key>
<param>
<key>num_info_bits</key>
- <value>n_info_bits</value>
+ <value>frame_size * 8</value>
</param>
<param>
<key>block_size</key>
@@ -182,7 +244,64 @@
</param>
<param>
<key>comment</key>
- <value></value>
+ <value>Standard 'Successive Cancellation' decoder.
+
+performs better with greater block size.
+This is due to stronger polarization at higher block sizes.</value>
+ </param>
+ <param>
+ <key>dim1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim2</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>frozen_bit_positions</key>
+ <value>polar_config['positions']</value>
+ </param>
+ <param>
+ <key>frozen_bit_values</key>
+ <value>polar_config['values']</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(408, 691)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>polar_decoder_sc</value>
+ </param>
+ <param>
+ <key>ndim</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_polar_decoder_sc_list_def</key>
+ <param>
+ <key>num_info_bits</key>
+ <value>frame_size * 8</value>
+ </param>
+ <param>
+ <key>block_size</key>
+ <value>block_size</value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value>Advanced 'Successive Cancellation List' decoder
+
+Greater list size usually results in better decoding performance.
+But it is computationally more heavy.</value>
</param>
<param>
<key>dim1</key>
@@ -206,7 +325,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1040, 267)</value>
+ <value>(776, 691)</value>
</param>
<param>
<key>_rotation</key>
@@ -214,7 +333,11 @@
</param>
<param>
<key>id</key>
- <value>polar_decoder</value>
+ <value>polar_decoder_scl</value>
+ </param>
+ <param>
+ <key>max_list_size</key>
+ <value>8</value>
</param>
<param>
<key>ndim</key>
@@ -225,7 +348,7 @@
<key>variable_polar_encoder_def</key>
<param>
<key>num_info_bits</key>
- <value>n_info_bits</value>
+ <value>frame_size * 8</value>
</param>
<param>
<key>block_size</key>
@@ -257,7 +380,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(872, 267)</value>
+ <value>(408, 547)</value>
</param>
<param>
<key>_rotation</key>
@@ -265,7 +388,7 @@
</param>
<param>
<key>id</key>
- <value>polar_encoder</value>
+ <value>polar_encoder_sc</value>
</param>
<param>
<key>is_packed</key>
@@ -277,10 +400,10 @@
</param>
</block>
<block>
- <key>variable_polar_decoder_sc_list_def</key>
+ <key>variable_polar_encoder_def</key>
<param>
<key>num_info_bits</key>
- <value>n_info_bits</value>
+ <value>frame_size * 8</value>
</param>
<param>
<key>block_size</key>
@@ -300,7 +423,7 @@
</param>
<param>
<key>_enabled</key>
- <value>0</value>
+ <value>True</value>
</param>
<param>
<key>frozen_bit_positions</key>
@@ -312,7 +435,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(960, 59)</value>
+ <value>(776, 547)</value>
</param>
<param>
<key>_rotation</key>
@@ -320,11 +443,11 @@
</param>
<param>
<key>id</key>
- <value>polar_scld</value>
+ <value>polar_encoder_scl</value>
</param>
<param>
- <key>max_list_size</key>
- <value>8</value>
+ <key>is_packed</key>
+ <value>False</value>
</param>
<param>
<key>ndim</key>
@@ -355,7 +478,7 @@
</param>
<param>
<key>value</key>
- <value>350e3</value>
+ <value>50000</value>
</param>
</block>
<block>
@@ -374,15 +497,15 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>False</value>
</param>
<param>
<key>_coordinate</key>
- <value>(512, 419)</value>
+ <value>(160, 459)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
<param>
<key>id</key>
@@ -406,7 +529,7 @@
</param>
<param>
<key>num_samps</key>
- <value>2 ** 10 +1</value>
+ <value>1000</value>
</param>
<param>
<key>type</key>
@@ -437,7 +560,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(952, 475)</value>
+ <value>(768, 427)</value>
</param>
<param>
<key>_rotation</key>
@@ -457,7 +580,7 @@
</param>
<param>
<key>scale</key>
- <value>1.0</value>
+ <value>1</value>
</param>
<param>
<key>vlen</key>
@@ -484,7 +607,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(952, 443)</value>
+ <value>(1136, 427)</value>
</param>
<param>
<key>_rotation</key>
@@ -492,7 +615,7 @@
</param>
<param>
<key>id</key>
- <value>blocks_char_to_float_0_1</value>
+ <value>blocks_char_to_float_0_0</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -504,7 +627,7 @@
</param>
<param>
<key>scale</key>
- <value>1.0</value>
+ <value>1</value>
</param>
<param>
<key>vlen</key>
@@ -531,7 +654,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(440, 651)</value>
+ <value>(1136, 331)</value>
</param>
<param>
<key>_rotation</key>
@@ -539,7 +662,7 @@
</param>
<param>
<key>id</key>
- <value>blocks_char_to_float_0_2</value>
+ <value>blocks_char_to_float_0_0_0</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -559,7 +682,7 @@
</param>
</block>
<block>
- <key>blocks_pack_k_bits_bb</key>
+ <key>blocks_char_to_float</key>
<param>
<key>alias</key>
<value></value>
@@ -578,7 +701,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(808, 651)</value>
+ <value>(1136, 235)</value>
</param>
<param>
<key>_rotation</key>
@@ -586,11 +709,7 @@
</param>
<param>
<key>id</key>
- <value>blocks_pack_k_bits_bb_0</value>
- </param>
- <param>
- <key>k</key>
- <value>8</value>
+ <value>blocks_char_to_float_0_0_0_0</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -600,9 +719,17 @@
<key>minoutbuf</key>
<value>0</value>
</param>
+ <param>
+ <key>scale</key>
+ <value>1</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 +748,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(432, 547)</value>
+ <value>(432, 147)</value>
</param>
<param>
<key>_rotation</key>
@@ -629,11 +756,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_1</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -643,9 +766,17 @@
<key>minoutbuf</key>
<value>0</value>
</param>
+ <param>
+ <key>scale</key>
+ <value>1</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 +795,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(328, 651)</value>
+ <value>(768, 331)</value>
</param>
<param>
<key>_rotation</key>
@@ -672,11 +803,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_2</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -686,17 +813,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</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 +842,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(952, 625)</value>
+ <value>(768, 235)</value>
</param>
<param>
<key>_rotation</key>
@@ -723,7 +850,7 @@
</param>
<param>
<key>id</key>
- <value>fec_ber_bf_0</value>
+ <value>blocks_char_to_float_0_2_0</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -734,16 +861,47 @@
<value>0</value>
</param>
<param>
- <key>test_mode</key>
- <value>False</value>
+ <key>scale</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
</param>
</block>
<block>
- <key>fec_extended_decoder</key>
+ <key>blocks_ctrlport_monitor_performance</key>
<param>
- <key>ann</key>
- <value>None</value>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>en</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(392, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>blocks_ctrlport_monitor_performance_0</value>
</param>
+ </block>
+ <block>
+ <key>blocks_throttle</key>
<param>
<key>alias</key>
<value></value>
@@ -757,16 +915,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>(576, 627)</value>
+ <value>(208, 267)</value>
</param>
<param>
<key>_rotation</key>
@@ -774,7 +928,11 @@
</param>
<param>
<key>id</key>
- <value>fec_extended_decoder_0</value>
+ <value>blocks_throttle_0</value>
+ </param>
+ <param>
+ <key>ignoretag</key>
+ <value>True</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -785,20 +943,20 @@
<value>0</value>
</param>
<param>
- <key>puncpat</key>
- <value>'11'</value>
+ <key>samples_per_second</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>threadtype</key>
- <value>none</value>
+ <key>type</key>
+ <value>byte</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_unpack_k_bits_bb</key>
<param>
<key>alias</key>
<value></value>
@@ -816,12 +974,8 @@
<value>True</value>
</param>
<param>
- <key>encoder_list</key>
- <value>polar_encoder</value>
- </param>
- <param>
<key>_coordinate</key>
- <value>(576, 531)</value>
+ <value>(224, 371)</value>
</param>
<param>
<key>_rotation</key>
@@ -829,7 +983,11 @@
</param>
<param>
<key>id</key>
- <value>fec_extended_encoder_0</value>
+ <value>blocks_unpack_k_bits_bb_0</value>
+ </param>
+ <param>
+ <key>k</key>
+ <value>8</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -839,25 +997,9 @@
<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>
+ <key>blocks_vector_source_x</key>
<param>
<key>alias</key>
<value></value>
@@ -876,214 +1018,595 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1096, 619)</value>
+ <value>(168, 139)</value>
</param>
<param>
- <key>gui_hint</key>
- <value></value>
+ <key>_rotation</key>
+ <value>180</value>
</param>
<param>
- <key>_rotation</key>
- <value>0</value>
+ <key>id</key>
+ <value>blocks_vector_source_x_0_1_0</value>
</param>
<param>
- <key>graph_type</key>
- <value>qtgui.NUM_GRAPH_HORIZ</value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>id</key>
- <value>qtgui_number_sink_0</value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>type</key>
- <value>float</value>
+ <value>byte</value>
</param>
<param>
- <key>color1</key>
- <value>("black", "black")</value>
+ <key>repeat</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>tags</key>
+ <value>[]</value>
</param>
<param>
- <key>factor1</key>
+ <key>vlen</key>
<value>1</value>
</param>
<param>
- <key>label1</key>
+ <key>vector</key>
+ <value>(frame_size/15)*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0,
127]</value>
+ </param>
+ </block>
+ <block>
+ <key>digital_map_bb</key>
+ <param>
+ <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>
+ <key>_coordinate</key>
+ <value>(656, 427)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>digital_map_bb_0_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>digital_map_bb</key>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>unit10</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>color2</key>
- <value>("black", "black")</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>factor2</key>
- <value>1</value>
+ <key>_coordinate</key>
+ <value>(656, 331)</value>
</param>
<param>
- <key>label2</key>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>digital_map_bb_0_0_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>digital_map_bb</key>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit2</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>color3</key>
- <value>("black", "black")</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>factor3</key>
- <value>1</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>label3</key>
+ <key>_coordinate</key>
+ <value>(656, 235)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>digital_map_bb_0_0_0_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_extended_decoder</key>
+ <param>
+ <key>ann</key>
+ <value>None</value>
+ </param>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit3</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>color4</key>
- <value>("black", "black")</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>factor4</key>
- <value>1</value>
+ <key>decoder_list</key>
+ <value>polar_decoder_scl</value>
</param>
<param>
- <key>label4</key>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(912, 403)</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>puncpat</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_decoder</key>
+ <param>
+ <key>ann</key>
+ <value>None</value>
+ </param>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit4</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>color5</key>
- <value>("black", "black")</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>factor5</key>
- <value>1</value>
+ <key>decoder_list</key>
+ <value>polar_decoder_sc</value>
</param>
<param>
- <key>label5</key>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(912, 307)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>fec_extended_decoder_0_1</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>puncpat</key>
+ <value>puncpat</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_decoder</key>
+ <param>
+ <key>ann</key>
+ <value>None</value>
+ </param>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit5</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>color6</key>
- <value>("black", "black")</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>factor6</key>
- <value>1</value>
+ <key>decoder_list</key>
+ <value>dec_dummy</value>
</param>
<param>
- <key>label6</key>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(912, 211)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>fec_extended_decoder_0_1_0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>puncpat</key>
+ <value>puncpat</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>unit6</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>color7</key>
- <value>("black", "black")</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>factor7</key>
- <value>1</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>label7</key>
+ <key>encoder_list</key>
+ <value>polar_encoder_scl</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(432, 411)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>fec_extended_encoder_1</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>puncpat</key>
+ <value>puncpat</value>
+ </param>
+ <param>
+ <key>threadtype</key>
+ <value>capillary</value>
+ </param>
+ </block>
+ <block>
+ <key>fec_extended_encoder</key>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit7</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>color8</key>
- <value>("black", "black")</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>factor8</key>
- <value>1</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>label8</key>
+ <key>encoder_list</key>
+ <value>polar_encoder_sc</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(432, 315)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>fec_extended_encoder_1_0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>puncpat</key>
+ <value>puncpat</value>
+ </param>
+ <param>
+ <key>threadtype</key>
+ <value>capillary</value>
+ </param>
+ </block>
+ <block>
+ <key>fec_extended_encoder</key>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit8</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>color9</key>
- <value>("black", "black")</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>factor9</key>
- <value>1</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>label9</key>
+ <key>encoder_list</key>
+ <value>enc_dummy</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(432, 219)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>fec_extended_encoder_1_0_0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>puncpat</key>
+ <value>puncpat</value>
+ </param>
+ <param>
+ <key>threadtype</key>
+ <value>capillary</value>
+ </param>
+ </block>
+ <block>
+ <key>parameter</key>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit9</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>max</key>
- <value>1</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>min</key>
- <value>-1</value>
+ <key>_coordinate</key>
+ <value>(200, 11)</value>
</param>
<param>
- <key>name</key>
- <value>""</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
<param>
- <key>nconnections</key>
- <value>1</value>
+ <key>id</key>
+ <value>frame_size</value>
</param>
<param>
- <key>update_time</key>
- <value>0.10</value>
+ <key>label</key>
+ <value>Frame Size</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value></value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>intx</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>30</value>
+ </param>
+ </block>
+ <block>
+ <key>parameter</key>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(312, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>puncpat</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value></value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value></value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>string</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>'11'</value>
</param>
</block>
<block>
<key>qtgui_time_sink_x</key>
<param>
<key>autoscale</key>
- <value>True</value>
+ <value>False</value>
</param>
<param>
<key>alias</key>
@@ -1111,7 +1634,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1088, 443)</value>
+ <value>(1408, 153)</value>
</param>
<param>
<key>gui_hint</key>
@@ -1143,7 +1666,7 @@
</param>
<param>
<key>label1</key>
- <value></value>
+ <value>Input</value>
</param>
<param>
<key>marker1</key>
@@ -1183,7 +1706,7 @@
</param>
<param>
<key>alpha2</key>
- <value>1.0</value>
+ <value>0.6</value>
</param>
<param>
<key>color2</key>
@@ -1191,7 +1714,7 @@
</param>
<param>
<key>label2</key>
- <value></value>
+ <value>Dummy</value>
</param>
<param>
<key>marker2</key>
@@ -1215,7 +1738,7 @@
</param>
<param>
<key>label3</key>
- <value></value>
+ <value>Polar with SC decoder</value>
</param>
<param>
<key>marker3</key>
@@ -1239,7 +1762,7 @@
</param>
<param>
<key>label4</key>
- <value></value>
+ <value>Polar with SC list decoder</value>
</param>
<param>
<key>marker4</key>
@@ -1263,7 +1786,7 @@
</param>
<param>
<key>label5</key>
- <value></value>
+ <value>CCSDS</value>
</param>
<param>
<key>marker5</key>
@@ -1375,11 +1898,11 @@
</param>
<param>
<key>name</key>
- <value>""</value>
+ <value></value>
</param>
<param>
<key>nconnections</key>
- <value>2</value>
+ <value>4</value>
</param>
<param>
<key>size</key>
@@ -1419,7 +1942,7 @@
</param>
<param>
<key>update_time</key>
- <value>0.10</value>
+ <value>0.01</value>
</param>
<param>
<key>ylabel</key>
@@ -1431,33 +1954,39 @@
</param>
<param>
<key>ymax</key>
- <value>1</value>
+ <value>1.5</value>
</param>
<param>
<key>ymin</key>
- <value>-1</value>
+ <value>-0.5</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>
+ <sink_block_id>blocks_throttle_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>analog_random_source_x_0</source_block_id>
- <sink_block_id>blocks_unpack_k_bits_bb_0</sink_block_id>
+ <source_block_id>blocks_char_to_float_0</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>analog_random_source_x_0</source_block_id>
- <sink_block_id>fec_ber_bf_0</sink_block_id>
+ <source_block_id>blocks_char_to_float_0_0</source_block_id>
+ <sink_block_id>qtgui_time_sink_x_0</sink_block_id>
<source_key>0</source_key>
- <sink_key>0</sink_key>
+ <sink_key>3</sink_key>
</connection>
<connection>
- <source_block_id>blocks_char_to_float_0</source_block_id>
+ <source_block_id>blocks_char_to_float_0_0_0</source_block_id>
+ <sink_block_id>qtgui_time_sink_x_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>2</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_char_to_float_0_0_0_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>
@@ -1470,49 +1999,103 @@
</connection>
<connection>
<source_block_id>blocks_char_to_float_0_2</source_block_id>
- <sink_block_id>fec_extended_decoder_0</sink_block_id>
+ <sink_block_id>fec_extended_decoder_0_1</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_block_id>blocks_char_to_float_0_2_0</source_block_id>
+ <sink_block_id>fec_extended_decoder_0_1_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>fec_ber_bf_0</sink_block_id>
+ <source_block_id>blocks_throttle_0</source_block_id>
+ <sink_block_id>blocks_unpack_k_bits_bb_0</sink_block_id>
<source_key>0</source_key>
- <sink_key>1</sink_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_unpack_k_bits_bb_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>blocks_unpack_k_bits_bb_0</source_block_id>
- <sink_block_id>fec_extended_encoder_0</sink_block_id>
+ <sink_block_id>fec_extended_encoder_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>digital_map_bb_0</source_block_id>
+ <source_block_id>blocks_unpack_k_bits_bb_0</source_block_id>
+ <sink_block_id>fec_extended_encoder_1_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_1_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_vector_source_x_0_1_0</source_block_id>
+ <sink_block_id>blocks_throttle_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_map_bb_0_0</source_block_id>
+ <sink_block_id>blocks_char_to_float_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>digital_map_bb_0_0_0</source_block_id>
<sink_block_id>blocks_char_to_float_0_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_ber_bf_0</source_block_id>
- <sink_block_id>qtgui_number_sink_0</sink_block_id>
+ <source_block_id>digital_map_bb_0_0_0_0</source_block_id>
+ <sink_block_id>blocks_char_to_float_0_2_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>
+ <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>fec_extended_decoder_0_1</source_block_id>
+ <sink_block_id>blocks_char_to_float_0_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fec_extended_decoder_0_1_0</source_block_id>
+ <sink_block_id>blocks_char_to_float_0_0_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fec_extended_encoder_1</source_block_id>
+ <sink_block_id>digital_map_bb_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fec_extended_encoder_1_0</source_block_id>
+ <sink_block_id>digital_map_bb_0_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_extended_encoder_0</source_block_id>
- <sink_block_id>digital_map_bb_0</sink_block_id>
+ <source_block_id>fec_extended_encoder_1_0_0</source_block_id>
+ <sink_block_id>digital_map_bb_0_0_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
diff --git a/gr-fec/examples/polar_code_example.grc
b/gr-fec/examples/fecapi_polar_encoders.grc
similarity index 67%
copy from gr-fec/examples/polar_code_example.grc
copy to gr-fec/examples/fecapi_polar_encoders.grc
index ae388d6..93036fd 100644
--- a/gr-fec/examples/polar_code_example.grc
+++ b/gr-fec/examples/fecapi_polar_encoders.grc
@@ -1,12 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<?grc format='1' created='3.7.9'?>
<flow_graph>
- <timestamp>Thu Jul 16 16:19:12 2015</timestamp>
+ <timestamp>Tue Sep 22 15:53:02 2015</timestamp>
<block>
<key>options</key>
<param>
<key>author</key>
- <value>Johannes Demel</value>
+ <value></value>
</param>
<param>
<key>alias</key>
@@ -34,7 +34,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(10, 10)</value>
+ <value>(8, 8)</value>
</param>
<param>
<key>_rotation</key>
@@ -46,7 +46,7 @@
</param>
<param>
<key>id</key>
- <value>polar_code_example</value>
+ <value>fecapi_polar_encoders</value>
</param>
<param>
<key>max_nouts</key>
@@ -70,34 +70,7 @@
</param>
<param>
<key>title</key>
- <value>POLAR code example flowgraph</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>comment</key>
- <value></value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(560, 267)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- <param>
- <key>id</key>
- <value>block_size</value>
- </param>
- <param>
- <key>value</key>
- <value>1024</value>
+ <value>Polar encoder examples</value>
</param>
</block>
<block>
@@ -112,7 +85,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(560, 331)</value>
+ <value>(8, 155)</value>
</param>
<param>
<key>_rotation</key>
@@ -124,7 +97,7 @@
</param>
<param>
<key>value</key>
- <value>block_size / 2</value>
+ <value>frame_size * 8</value>
</param>
</block>
<block>
@@ -139,11 +112,15 @@
</param>
<param>
<key>channel</key>
- <value>BSC</value>
+ <value>polar.CHANNEL_TYPE_BEC</value>
</param>
<param>
<key>comment</key>
- <value></value>
+ <value>Block is used to configure polar encoders and decoders.
+
+returns dictionary with requested configuration.
+
+most important dict values: 'values' and 'positions'</value>
</param>
<param>
<key>_enabled</key>
@@ -151,7 +128,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(664, 267)</value>
+ <value>(704, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -171,7 +148,7 @@
</param>
</block>
<block>
- <key>variable_polar_decoder_sc_def</key>
+ <key>variable_polar_encoder_def</key>
<param>
<key>num_info_bits</key>
<value>n_info_bits</value>
@@ -194,7 +171,7 @@
</param>
<param>
<key>_enabled</key>
- <value>1</value>
+ <value>True</value>
</param>
<param>
<key>frozen_bit_positions</key>
@@ -206,7 +183,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1040, 267)</value>
+ <value>(1152, 635)</value>
</param>
<param>
<key>_rotation</key>
@@ -214,7 +191,11 @@
</param>
<param>
<key>id</key>
- <value>polar_decoder</value>
+ <value>polar_encoder_async</value>
+ </param>
+ <param>
+ <key>is_packed</key>
+ <value>False</value>
</param>
<param>
<key>ndim</key>
@@ -225,7 +206,7 @@
<key>variable_polar_encoder_def</key>
<param>
<key>num_info_bits</key>
- <value>n_info_bits</value>
+ <value>frame_size * 8</value>
</param>
<param>
<key>block_size</key>
@@ -257,7 +238,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(872, 267)</value>
+ <value>(488, 635)</value>
</param>
<param>
<key>_rotation</key>
@@ -265,7 +246,7 @@
</param>
<param>
<key>id</key>
- <value>polar_encoder</value>
+ <value>polar_encoder_stream</value>
</param>
<param>
<key>is_packed</key>
@@ -277,7 +258,7 @@
</param>
</block>
<block>
- <key>variable_polar_decoder_sc_list_def</key>
+ <key>variable_polar_encoder_def</key>
<param>
<key>num_info_bits</key>
<value>n_info_bits</value>
@@ -300,7 +281,7 @@
</param>
<param>
<key>_enabled</key>
- <value>0</value>
+ <value>True</value>
</param>
<param>
<key>frozen_bit_positions</key>
@@ -312,7 +293,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(960, 59)</value>
+ <value>(840, 635)</value>
</param>
<param>
<key>_rotation</key>
@@ -320,11 +301,11 @@
</param>
<param>
<key>id</key>
- <value>polar_scld</value>
+ <value>polar_encoder_tagged</value>
</param>
<param>
- <key>max_list_size</key>
- <value>8</value>
+ <key>is_packed</key>
+ <value>False</value>
</param>
<param>
<key>ndim</key>
@@ -343,7 +324,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(8, 107)</value>
+ <value>(8, 91)</value>
</param>
<param>
<key>_rotation</key>
@@ -355,7 +336,7 @@
</param>
<param>
<key>value</key>
- <value>350e3</value>
+ <value>int(50e3)</value>
</param>
</block>
<block>
@@ -374,15 +355,15 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>False</value>
</param>
<param>
<key>_coordinate</key>
- <value>(512, 419)</value>
+ <value>(208, 483)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
<param>
<key>id</key>
@@ -406,7 +387,7 @@
</param>
<param>
<key>num_samps</key>
- <value>2 ** 10 +1</value>
+ <value>1000</value>
</param>
<param>
<key>type</key>
@@ -418,6 +399,52 @@
</param>
</block>
<block>
+ <key>parameter</key>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value>codeword size of polar codes.
+
+MUST be a power of 2!
+MUST be greater than 'frame_size'.</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(296, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>block_size</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>Block size</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value></value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>intx</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>512</value>
+ </param>
+ </block>
+ <block>
<key>blocks_char_to_float</key>
<param>
<key>alias</key>
@@ -433,11 +460,11 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(952, 475)</value>
+ <value>(1064, 499)</value>
</param>
<param>
<key>_rotation</key>
@@ -445,7 +472,7 @@
</param>
<param>
<key>id</key>
- <value>blocks_char_to_float_0</value>
+ <value>blocks_char_to_float_0_1</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -457,7 +484,7 @@
</param>
<param>
<key>scale</key>
- <value>1.0</value>
+ <value>1</value>
</param>
<param>
<key>vlen</key>
@@ -480,11 +507,11 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(952, 443)</value>
+ <value>(1064, 259)</value>
</param>
<param>
<key>_rotation</key>
@@ -492,7 +519,7 @@
</param>
<param>
<key>id</key>
- <value>blocks_char_to_float_0_1</value>
+ <value>blocks_char_to_float_1_0_0</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -504,7 +531,7 @@
</param>
<param>
<key>scale</key>
- <value>1.0</value>
+ <value>1</value>
</param>
<param>
<key>vlen</key>
@@ -527,11 +554,11 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(440, 651)</value>
+ <value>(1064, 339)</value>
</param>
<param>
<key>_rotation</key>
@@ -539,7 +566,7 @@
</param>
<param>
<key>id</key>
- <value>blocks_char_to_float_0_2</value>
+ <value>blocks_char_to_float_1_0_0_1</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -559,7 +586,38 @@
</param>
</block>
<block>
- <key>blocks_pack_k_bits_bb</key>
+ <key>blocks_ctrlport_monitor_performance</key>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>en</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(496, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>blocks_ctrlport_monitor_performance_0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_pdu_to_tagged_stream</key>
<param>
<key>alias</key>
<value></value>
@@ -574,11 +632,11 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(808, 651)</value>
+ <value>(536, 499)</value>
</param>
<param>
<key>_rotation</key>
@@ -586,11 +644,15 @@
</param>
<param>
<key>id</key>
- <value>blocks_pack_k_bits_bb_0</value>
+ <value>blocks_pdu_to_tagged_stream_0</value>
</param>
<param>
- <key>k</key>
- <value>8</value>
+ <key>type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>tag</key>
+ <value>pkt_len</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -602,7 +664,15 @@
</param>
</block>
<block>
- <key>blocks_unpack_k_bits_bb</key>
+ <key>blocks_repack_bits_bb</key>
+ <param>
+ <key>k</key>
+ <value>8</value>
+ </param>
+ <param>
+ <key>l</key>
+ <value>1</value>
+ </param>
<param>
<key>alias</key>
<value></value>
@@ -617,11 +687,15 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>1</value>
+ </param>
+ <param>
+ <key>endianness</key>
+ <value>gr.GR_MSB_FIRST</value>
</param>
<param>
<key>_coordinate</key>
- <value>(432, 547)</value>
+ <value>(736, 491)</value>
</param>
<param>
<key>_rotation</key>
@@ -629,11 +703,11 @@
</param>
<param>
<key>id</key>
- <value>blocks_unpack_k_bits_bb_0</value>
+ <value>blocks_repack_bits_bb_0</value>
</param>
<param>
- <key>k</key>
- <value>8</value>
+ <key>len_tag_key</key>
+ <value>pkt_len</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -643,9 +717,21 @@
<key>minoutbuf</key>
<value>0</value>
</param>
+ <param>
+ <key>align_output</key>
+ <value>False</value>
+ </param>
</block>
<block>
- <key>digital_map_bb</key>
+ <key>blocks_repack_bits_bb</key>
+ <param>
+ <key>k</key>
+ <value>8</value>
+ </param>
+ <param>
+ <key>l</key>
+ <value>1</value>
+ </param>
<param>
<key>alias</key>
<value></value>
@@ -660,11 +746,15 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>1</value>
+ </param>
+ <param>
+ <key>endianness</key>
+ <value>gr.GR_MSB_FIRST</value>
</param>
<param>
<key>_coordinate</key>
- <value>(328, 651)</value>
+ <value>(640, 331)</value>
</param>
<param>
<key>_rotation</key>
@@ -672,11 +762,11 @@
</param>
<param>
<key>id</key>
- <value>digital_map_bb_0</value>
+ <value>blocks_repack_bits_bb_0_0</value>
</param>
<param>
- <key>map</key>
- <value>[-1, 1]</value>
+ <key>len_tag_key</key>
+ <value>length_tag</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -686,17 +776,13 @@
<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>
+ <key>align_output</key>
+ <value>False</value>
</param>
+ </block>
+ <block>
+ <key>blocks_stream_to_tagged_stream</key>
<param>
<key>alias</key>
<value></value>
@@ -711,11 +797,11 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(952, 625)</value>
+ <value>(424, 331)</value>
</param>
<param>
<key>_rotation</key>
@@ -723,7 +809,11 @@
</param>
<param>
<key>id</key>
- <value>fec_ber_bf_0</value>
+ <value>blocks_stream_to_tagged_stream_0</value>
+ </param>
+ <param>
+ <key>len_tag_key</key>
+ <value>length_tag</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -734,17 +824,21 @@
<value>0</value>
</param>
<param>
- <key>test_mode</key>
- <value>False</value>
+ <key>packet_len</key>
+ <value>frame_size</value>
</param>
- </block>
- <block>
- <key>fec_extended_decoder</key>
<param>
- <key>ann</key>
- <value>None</value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_stream_to_tagged_stream</key>
+ <param>
<key>alias</key>
<value></value>
</param>
@@ -757,16 +851,12 @@
<value></value>
</param>
<param>
- <key>decoder_list</key>
- <value>polar_decoder</value>
- </param>
- <param>
<key>_enabled</key>
- <value>True</value>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(576, 627)</value>
+ <value>(424, 411)</value>
</param>
<param>
<key>_rotation</key>
@@ -774,7 +864,11 @@
</param>
<param>
<key>id</key>
- <value>fec_extended_decoder_0</value>
+ <value>blocks_stream_to_tagged_stream_0_0</value>
+ </param>
+ <param>
+ <key>len_tag_key</key>
+ <value>pkt_len</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -785,20 +879,20 @@
<value>0</value>
</param>
<param>
- <key>puncpat</key>
- <value>'11'</value>
+ <key>packet_len</key>
+ <value>frame_size</value>
</param>
<param>
- <key>threadtype</key>
- <value>none</value>
+ <key>type</key>
+ <value>byte</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_tagged_stream_to_pdu</key>
<param>
<key>alias</key>
<value></value>
@@ -813,15 +907,58 @@
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>1</value>
</param>
<param>
- <key>encoder_list</key>
- <value>polar_encoder</value>
+ <key>_coordinate</key>
+ <value>(648, 419)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>blocks_tagged_stream_to_pdu_0</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>tag</key>
+ <value>pkt_len</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_throttle</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>(576, 531)</value>
+ <value>(216, 355)</value>
</param>
<param>
<key>_rotation</key>
@@ -829,7 +966,11 @@
</param>
<param>
<key>id</key>
- <value>fec_extended_encoder_0</value>
+ <value>blocks_throttle_0</value>
+ </param>
+ <param>
+ <key>ignoretag</key>
+ <value>True</value>
</param>
<param>
<key>maxoutbuf</key>
@@ -840,25 +981,64 @@
<value>0</value>
</param>
<param>
- <key>puncpat</key>
- <value>'11'</value>
+ <key>samples_per_second</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>threadtype</key>
- <value>none</value>
+ <key>type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
</param>
</block>
<block>
- <key>qtgui_number_sink</key>
+ <key>blocks_unpack_k_bits_bb</key>
<param>
- <key>autoscale</key>
- <value>False</value>
+ <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>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(424, 259)</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>avg</key>
+ <key>maxoutbuf</key>
<value>0</value>
</param>
<param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_vector_source_x</key>
+ <param>
<key>alias</key>
<value></value>
</param>
@@ -876,214 +1056,293 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1096, 619)</value>
- </param>
- <param>
- <key>gui_hint</key>
- <value></value>
+ <value>(176, 251)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
- <key>graph_type</key>
- <value>qtgui.NUM_GRAPH_HORIZ</value>
+ <key>id</key>
+ <value>blocks_vector_source_x_0_1_0</value>
</param>
<param>
- <key>id</key>
- <value>qtgui_number_sink_0</value>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>type</key>
- <value>float</value>
+ <value>byte</value>
</param>
<param>
- <key>color1</key>
- <value>("black", "black")</value>
+ <key>repeat</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>tags</key>
+ <value>[]</value>
</param>
<param>
- <key>factor1</key>
+ <key>vlen</key>
<value>1</value>
</param>
<param>
- <key>label1</key>
+ <key>vector</key>
+ <value>(frame_size/15)*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0,
127]</value>
+ </param>
+ </block>
+ <block>
+ <key>fec_async_encoder</key>
+ <param>
+ <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>
+ <key>_enabled</key>
<value>1</value>
</param>
<param>
- <key>label10</key>
- <value></value>
+ <key>encoder</key>
+ <value>polar_encoder_async</value>
</param>
<param>
- <key>unit10</key>
- <value></value>
+ <key>_coordinate</key>
+ <value>(872, 419)</value>
</param>
<param>
- <key>color2</key>
- <value>("black", "black")</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
<param>
- <key>factor2</key>
- <value>1</value>
+ <key>id</key>
+ <value>fec_async_encoder_0</value>
</param>
<param>
- <key>label2</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>unit2</key>
- <value></value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>color3</key>
- <value>("black", "black")</value>
+ <key>packed</key>
+ <value>True</value>
</param>
<param>
- <key>factor3</key>
- <value>1</value>
+ <key>rev_pack</key>
+ <value>False</value>
</param>
<param>
- <key>label3</key>
+ <key>rev_unpack</key>
+ <value>False</value>
+ </param>
+ </block>
+ <block>
+ <key>fec_extended_encoder</key>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit3</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>color4</key>
- <value>("black", "black")</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>factor4</key>
+ <key>_enabled</key>
<value>1</value>
</param>
<param>
- <key>label4</key>
- <value></value>
+ <key>encoder_list</key>
+ <value>polar_encoder_stream</value>
</param>
<param>
- <key>unit4</key>
- <value></value>
+ <key>_coordinate</key>
+ <value>(568, 243)</value>
</param>
<param>
- <key>color5</key>
- <value>("black", "black")</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
<param>
- <key>factor5</key>
- <value>1</value>
+ <key>id</key>
+ <value>fec_extended_encoder_0_0_0</value>
</param>
<param>
- <key>label5</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>unit5</key>
- <value></value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>color6</key>
- <value>("black", "black")</value>
+ <key>puncpat</key>
+ <value>puncpat</value>
</param>
<param>
- <key>factor6</key>
- <value>1</value>
+ <key>threadtype</key>
+ <value>none</value>
</param>
+ </block>
+ <block>
+ <key>fec_extended_tagged_encoder</key>
<param>
- <key>label6</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit6</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>color7</key>
- <value>("black", "black")</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>factor7</key>
+ <key>_enabled</key>
<value>1</value>
</param>
<param>
- <key>label7</key>
+ <key>encoder_list</key>
+ <value>polar_encoder_tagged</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(824, 323)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>fec_extended_tagged_encoder_0_0</value>
+ </param>
+ <param>
+ <key>lentagname</key>
+ <value>length_tag</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>puncpat</key>
+ <value>puncpat</value>
+ </param>
+ </block>
+ <block>
+ <key>parameter</key>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit7</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>color8</key>
- <value>("black", "black")</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>factor8</key>
- <value>1</value>
+ <key>_coordinate</key>
+ <value>(184, 11)</value>
</param>
<param>
- <key>label8</key>
- <value></value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
<param>
- <key>unit8</key>
+ <key>id</key>
+ <value>frame_size</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>Frame Size</value>
+ </param>
+ <param>
+ <key>short_id</key>
<value></value>
</param>
<param>
- <key>color9</key>
- <value>("black", "black")</value>
+ <key>type</key>
+ <value>intx</value>
</param>
<param>
- <key>factor9</key>
- <value>1</value>
+ <key>value</key>
+ <value>30</value>
</param>
+ </block>
+ <block>
+ <key>parameter</key>
<param>
- <key>label9</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>unit9</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>max</key>
- <value>1</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>min</key>
- <value>-1</value>
+ <key>_coordinate</key>
+ <value>(408, 11)</value>
</param>
<param>
- <key>name</key>
- <value>""</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
<param>
- <key>nconnections</key>
- <value>1</value>
+ <key>id</key>
+ <value>puncpat</value>
</param>
<param>
- <key>update_time</key>
- <value>0.10</value>
+ <key>label</key>
+ <value></value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value></value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>string</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>'11'</value>
</param>
</block>
<block>
<key>qtgui_time_sink_x</key>
<param>
<key>autoscale</key>
- <value>True</value>
+ <value>False</value>
</param>
<param>
<key>alias</key>
@@ -1111,7 +1370,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1088, 443)</value>
+ <value>(1264, 313)</value>
</param>
<param>
<key>gui_hint</key>
@@ -1127,7 +1386,7 @@
</param>
<param>
<key>id</key>
- <value>qtgui_time_sink_x_0</value>
+ <value>qtgui_time_sink_x_0_0_1</value>
</param>
<param>
<key>legend</key>
@@ -1143,7 +1402,7 @@
</param>
<param>
<key>label1</key>
- <value></value>
+ <value>Polar extended encoder</value>
</param>
<param>
<key>marker1</key>
@@ -1183,7 +1442,7 @@
</param>
<param>
<key>alpha2</key>
- <value>1.0</value>
+ <value>0.6</value>
</param>
<param>
<key>color2</key>
@@ -1191,7 +1450,7 @@
</param>
<param>
<key>label2</key>
- <value></value>
+ <value>Polar extended tagged encoder</value>
</param>
<param>
<key>marker2</key>
@@ -1215,7 +1474,7 @@
</param>
<param>
<key>label3</key>
- <value></value>
+ <value>Polar async encoder</value>
</param>
<param>
<key>marker3</key>
@@ -1375,15 +1634,15 @@
</param>
<param>
<key>name</key>
- <value>""</value>
+ <value></value>
</param>
<param>
<key>nconnections</key>
- <value>2</value>
+ <value>3</value>
</param>
<param>
<key>size</key>
- <value>2048</value>
+ <value>2050</value>
</param>
<param>
<key>srate</key>
@@ -1411,7 +1670,7 @@
</param>
<param>
<key>tr_tag</key>
- <value>""</value>
+ <value>packet_len</value>
</param>
<param>
<key>type</key>
@@ -1419,7 +1678,7 @@
</param>
<param>
<key>update_time</key>
- <value>0.10</value>
+ <value>0.05</value>
</param>
<param>
<key>ylabel</key>
@@ -1431,88 +1690,118 @@
</param>
<param>
<key>ymax</key>
- <value>1</value>
+ <value>1.5</value>
</param>
<param>
<key>ymin</key>
- <value>-1</value>
+ <value>-0.5</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>
+ <sink_block_id>blocks_throttle_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>analog_random_source_x_0</source_block_id>
- <sink_block_id>blocks_unpack_k_bits_bb_0</sink_block_id>
+ <source_block_id>blocks_char_to_float_0_1</source_block_id>
+ <sink_block_id>qtgui_time_sink_x_0_0_1</sink_block_id>
<source_key>0</source_key>
- <sink_key>0</sink_key>
+ <sink_key>2</sink_key>
</connection>
<connection>
- <source_block_id>analog_random_source_x_0</source_block_id>
- <sink_block_id>fec_ber_bf_0</sink_block_id>
+ <source_block_id>blocks_char_to_float_1_0_0</source_block_id>
+ <sink_block_id>qtgui_time_sink_x_0_0_1</sink_block_id>
<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_block_id>blocks_char_to_float_1_0_0_1</source_block_id>
+ <sink_block_id>qtgui_time_sink_x_0_0_1</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_block_id>blocks_pdu_to_tagged_stream_0</source_block_id>
+ <sink_block_id>blocks_repack_bits_bb_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_char_to_float_0_2</source_block_id>
- <sink_block_id>fec_extended_decoder_0</sink_block_id>
+ <source_block_id>blocks_repack_bits_bb_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>blocks_pack_k_bits_bb_0</source_block_id>
- <sink_block_id>blocks_char_to_float_0</sink_block_id>
+ <source_block_id>blocks_repack_bits_bb_0_0</source_block_id>
+ <sink_block_id>fec_extended_tagged_encoder_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>fec_ber_bf_0</sink_block_id>
+ <source_block_id>blocks_stream_to_tagged_stream_0</source_block_id>
+ <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id>
<source_key>0</source_key>
- <sink_key>1</sink_key>
+ <sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_unpack_k_bits_bb_0</source_block_id>
- <sink_block_id>fec_extended_encoder_0</sink_block_id>
+ <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
+ <sink_block_id>blocks_tagged_stream_to_pdu_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_block_id>blocks_tagged_stream_to_pdu_0</source_block_id>
+ <sink_block_id>fec_async_encoder_0</sink_block_id>
+ <source_key>pdus</source_key>
+ <sink_key>in</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_throttle_0</source_block_id>
+ <sink_block_id>blocks_stream_to_tagged_stream_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_ber_bf_0</source_block_id>
- <sink_block_id>qtgui_number_sink_0</sink_block_id>
+ <source_block_id>blocks_throttle_0</source_block_id>
+ <sink_block_id>blocks_stream_to_tagged_stream_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_extended_decoder_0</source_block_id>
- <sink_block_id>blocks_pack_k_bits_bb_0</sink_block_id>
+ <source_block_id>blocks_throttle_0</source_block_id>
+ <sink_block_id>blocks_unpack_k_bits_bb_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_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_vector_source_x_0_1_0</source_block_id>
+ <sink_block_id>blocks_throttle_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fec_async_encoder_0</source_block_id>
+ <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id>
+ <source_key>out</source_key>
+ <sink_key>pdus</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fec_extended_encoder_0_0_0</source_block_id>
+ <sink_block_id>blocks_char_to_float_1_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_extended_encoder_0</source_block_id>
- <sink_block_id>digital_map_bb_0</sink_block_id>
+ <source_block_id>fec_extended_tagged_encoder_0_0</source_block_id>
+ <sink_block_id>blocks_char_to_float_1_0_0_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
diff --git a/gr-fec/examples/polar_ber_curve_gen.grc
b/gr-fec/examples/polar_ber_curve_gen.grc
index 5c3c5c9..19fbaba 100644
--- a/gr-fec/examples/polar_ber_curve_gen.grc
+++ b/gr-fec/examples/polar_ber_curve_gen.grc
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
-<?grc format='1' created='3.7.8'?>
+<?grc format='1' created='3.7.9'?>
<flow_graph>
<timestamp>Fri Jul 17 15:23:09 2015</timestamp>
<block>
@@ -381,7 +381,7 @@
</param>
<param>
<key>channel</key>
- <value>bsc</value>
+ <value>polar.CHANNEL_TYPE_BEC</value>
</param>
<param>
<key>comment</key>
diff --git a/gr-fec/examples/polar_code_example.grc
b/gr-fec/examples/polar_code_example.grc
index ae388d6..6ea290c 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>(560, 267)</value>
+ <value>(312, 219)</value>
</param>
<param>
<key>_rotation</key>
@@ -112,7 +112,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(560, 331)</value>
+ <value>(312, 283)</value>
</param>
<param>
<key>_rotation</key>
@@ -139,7 +139,7 @@
</param>
<param>
<key>channel</key>
- <value>BSC</value>
+ <value>polar.CHANNEL_TYPE_BEC</value>
</param>
<param>
<key>comment</key>
@@ -151,7 +151,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(664, 267)</value>
+ <value>(416, 219)</value>
</param>
<param>
<key>_rotation</key>
@@ -206,7 +206,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1040, 267)</value>
+ <value>(792, 219)</value>
</param>
<param>
<key>_rotation</key>
@@ -257,7 +257,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(872, 267)</value>
+ <value>(624, 219)</value>
</param>
<param>
<key>_rotation</key>
@@ -312,7 +312,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(960, 59)</value>
+ <value>(712, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -378,7 +378,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(512, 419)</value>
+ <value>(264, 371)</value>
</param>
<param>
<key>_rotation</key>
@@ -437,7 +437,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(952, 475)</value>
+ <value>(704, 427)</value>
</param>
<param>
<key>_rotation</key>
@@ -484,7 +484,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(952, 443)</value>
+ <value>(704, 395)</value>
</param>
<param>
<key>_rotation</key>
@@ -531,7 +531,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(440, 651)</value>
+ <value>(192, 603)</value>
</param>
<param>
<key>_rotation</key>
@@ -578,7 +578,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(808, 651)</value>
+ <value>(560, 603)</value>
</param>
<param>
<key>_rotation</key>
@@ -621,7 +621,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(432, 547)</value>
+ <value>(184, 499)</value>
</param>
<param>
<key>_rotation</key>
@@ -664,7 +664,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(328, 651)</value>
+ <value>(80, 603)</value>
</param>
<param>
<key>_rotation</key>
@@ -715,7 +715,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(952, 625)</value>
+ <value>(704, 577)</value>
</param>
<param>
<key>_rotation</key>
@@ -766,7 +766,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(576, 627)</value>
+ <value>(328, 579)</value>
</param>
<param>
<key>_rotation</key>
@@ -821,7 +821,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(576, 531)</value>
+ <value>(328, 483)</value>
</param>
<param>
<key>_rotation</key>
@@ -876,7 +876,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1096, 619)</value>
+ <value>(848, 571)</value>
</param>
<param>
<key>gui_hint</key>
@@ -1111,7 +1111,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1088, 443)</value>
+ <value>(840, 395)</value>
</param>
<param>
<key>gui_hint</key>
diff --git a/gr-fec/include/gnuradio/fec/polar_common.h
b/gr-fec/include/gnuradio/fec/polar_common.h
index 8bf1a61..66392cc 100644
--- a/gr-fec/include/gnuradio/fec/polar_common.h
+++ b/gr-fec/include/gnuradio/fec/polar_common.h
@@ -46,12 +46,16 @@ namespace gr {
* \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.
*
* class holds common info. It is common to all encoders and decoders.
- * block_size: MUST be a power of 2.
- * num_info_bits: any integer <= block_size
- * frozen_bit_positions: elements specify position of frozen bits in each
frame. size MUST be equal to block_size - num_info_bits
- * frozen_bit_values: desired frozen bit values. '0' appended if smaller
than frozen_bit_positions.
+ * \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
{
diff --git a/gr-fec/include/gnuradio/fec/polar_decoder_common.h
b/gr-fec/include/gnuradio/fec/polar_decoder_common.h
index 6f192e5..2376e8f 100644
--- a/gr-fec/include/gnuradio/fec/polar_decoder_common.h
+++ b/gr-fec/include/gnuradio/fec/polar_decoder_common.h
@@ -34,6 +34,13 @@ namespace gr {
/*!
* \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.
*/
class FEC_API polar_decoder_common : public generic_decoder, public
polar_common
{
@@ -42,7 +49,7 @@ namespace gr {
~polar_decoder_common();
// FECAPI
- double rate(){return (1.0 * get_input_size() / get_output_size());};
+ double rate(){return (1.0 * get_output_size() / get_input_size());};
int get_input_size(){return block_size();};
int get_output_size(){return num_info_bits();};
bool set_frame_size(unsigned int frame_size){return false;};
diff --git a/gr-fec/include/gnuradio/fec/polar_decoder_sc.h
b/gr-fec/include/gnuradio/fec/polar_decoder_sc.h
index 35f22dd..d32c1c9 100644
--- a/gr-fec/include/gnuradio/fec/polar_decoder_sc.h
+++ b/gr-fec/include/gnuradio/fec/polar_decoder_sc.h
@@ -33,6 +33,8 @@ namespace gr {
/*!
* \brief Standard successive cancellation (SC) decoder for POLAR codes
+ *
+ * \details
* It expects float input with bits mapped 1 --> 1, 0 --> -1
* Or: f = 2.0 * bit - 1.0
*
@@ -40,6 +42,15 @@ 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.
+ */
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();
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 5dbad0e..1bd9d91 100644
--- a/gr-fec/include/gnuradio/fec/polar_decoder_sc_list.h
+++ b/gr-fec/include/gnuradio/fec/polar_decoder_sc_list.h
@@ -40,15 +40,25 @@ namespace gr {
* LLR version: Balatsoukas-Stimming, Parizi, Burg "LLR-based Successive
Cancellation List Decoding of Polar Codes", 2015
*
* \details
- * max_list_size: specifies the maximum number of code paths to follow.
+ * 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
- *
*/
class FEC_API polar_decoder_sc_list : public polar_decoder_common
{
public:
+ /*!
+ * \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.
+ */
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();
diff --git a/gr-fec/include/gnuradio/fec/polar_encoder.h
b/gr-fec/include/gnuradio/fec/polar_encoder.h
index 530a6de..4ce1b11 100644
--- a/gr-fec/include/gnuradio/fec/polar_encoder.h
+++ b/gr-fec/include/gnuradio/fec/polar_encoder.h
@@ -37,14 +37,24 @@ namespace gr {
* \ingroup error_coding_blk
*
* \details
- * Additional parameters
- * is_packed: choose 1 active bit/byte or 8 active bit/byte.
- * if false, VOLK polar encoder is used.
- *
+ * expects values with MSB first. It needs a full information word and
encodes it in one pass.
+ * Output is a codeword of block_size.
*/
class FEC_API polar_encoder : public generic_encoder, public polar_common
{
public:
+ /*!
+ * 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.
+ */
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();
diff --git a/gr-fec/python/fec/qa_polar_decoder_sc.py
b/gr-fec/python/fec/qa_polar_decoder_sc.py
index 030142d..1ef4580 100644
--- a/gr-fec/python/fec/qa_polar_decoder_sc.py
+++ b/gr-fec/python/fec/qa_polar_decoder_sc.py
@@ -51,7 +51,7 @@ class test_polar_decoder_sc(gr_unittest.TestCase):
self.assertEqual(num_info_bits, polar_decoder.get_output_size())
self.assertEqual(block_size, polar_decoder.get_input_size())
- self.assertFloatTuplesAlmostEqual((float(block_size) / num_info_bits,
), (polar_decoder.rate(), ))
+ self.assertFloatTuplesAlmostEqual((float(num_info_bits) / block_size,
), (polar_decoder.rate(), ))
self.assertFalse(polar_decoder.set_frame_size(10))
def test_002_one_vector(self):
diff --git a/gr-fec/python/fec/qa_polar_decoder_sc_list.py
b/gr-fec/python/fec/qa_polar_decoder_sc_list.py
index 6b1fe3d..adbb736 100644
--- a/gr-fec/python/fec/qa_polar_decoder_sc_list.py
+++ b/gr-fec/python/fec/qa_polar_decoder_sc_list.py
@@ -52,7 +52,7 @@ class test_polar_decoder_sc_list(gr_unittest.TestCase):
self.assertEqual(num_info_bits, polar_decoder.get_output_size())
self.assertEqual(block_size, polar_decoder.get_input_size())
- self.assertFloatTuplesAlmostEqual((float(block_size) / num_info_bits,
), (polar_decoder.rate(), ))
+ self.assertFloatTuplesAlmostEqual((float(num_info_bits) / block_size,
), (polar_decoder.rate(), ))
self.assertFalse(polar_decoder.set_frame_size(10))
def test_002_one_vector(self):
- [Commit-gnuradio] [gnuradio] 07/25: polar: updated polar code example GRC, (continued)
- [Commit-gnuradio] [gnuradio] 07/25: polar: updated polar code example GRC, git, 2015/09/23
- [Commit-gnuradio] [gnuradio] 02/25: polar: encoder implemented in C++, git, 2015/09/23
- [Commit-gnuradio] [gnuradio] 25/25: Merge remote-tracking branch 'tom/socis/master', git, 2015/09/23
- [Commit-gnuradio] [gnuradio] 06/25: polar: refarctoring and clean-up, git, 2015/09/23
- [Commit-gnuradio] [gnuradio] 03/25: polar: SC and SC List decoder implemented in C++, git, 2015/09/23
- [Commit-gnuradio] [gnuradio] 01/25: polar: Python test code for polar codes, git, 2015/09/23
- [Commit-gnuradio] [gnuradio] 04/25: polar: Python implementation for channel construction, git, 2015/09/23
- [Commit-gnuradio] [gnuradio] 13/25: polar: updated documentation and examples, git, 2015/09/23
- [Commit-gnuradio] [gnuradio] 15/25: fec: polar: moving polar codes into ::code:: namespace like the others., git, 2015/09/23
- [Commit-gnuradio] [gnuradio] 16/25: fec: polar: whitespace fixes/tabs to go along with namespace change from last commit., git, 2015/09/23
- [Commit-gnuradio] [gnuradio] 14/25: polar: updated documentation and examples,
git <=