summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnuradio-examples/grc/trellis/interference_cancellation.grc763
-rw-r--r--gnuradio-examples/grc/trellis/readme.txt12
-rw-r--r--gnuradio-examples/grc/trellis/sccc.grc832
-rw-r--r--gr-trellis/grc/Makefile.am4
-rw-r--r--gr-trellis/grc/trellis_permutation.xml10
-rw-r--r--gr-trellis/grc/trellis_sccc_decoder_combined_xx.xml170
-rw-r--r--gr-trellis/grc/trellis_sccc_encoder_xx.xml96
-rw-r--r--gr-trellis/grc/trellis_siso_combined_f.xml2
-rw-r--r--gr-trellis/grc/trellis_siso_f.xml2
-rw-r--r--gr-trellis/grc/trellis_viterbi_combined_xx.xml2
-rw-r--r--gr-trellis/grc/trellis_viterbi_x.xml2
-rw-r--r--gr-trellis/src/lib/trellis_permutation.cc18
-rw-r--r--gr-trellis/src/lib/trellis_permutation.h8
-rw-r--r--gr-trellis/src/lib/trellis_permutation.i8
14 files changed, 1574 insertions, 355 deletions
diff --git a/gnuradio-examples/grc/trellis/interference_cancellation.grc b/gnuradio-examples/grc/trellis/interference_cancellation.grc
index e93babd787..7674b4bf16 100644
--- a/gnuradio-examples/grc/trellis/interference_cancellation.grc
+++ b/gnuradio-examples/grc/trellis/interference_cancellation.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Thu Mar 19 11:22:40 2009</timestamp>
+ <timestamp>Wed Aug 31 17:40:25 2011</timestamp>
<block>
<key>options</key>
<param>
@@ -36,6 +36,14 @@
<value>Custom</value>
</param>
<param>
+ <key>run_options</key>
+ <value>prompt</value>
+ </param>
+ <param>
+ <key>run</key>
+ <value>True</value>
+ </param>
+ <param>
<key>realtime_scheduling</key>
<value></value>
</param>
@@ -79,18 +87,22 @@
<value>100</value>
</param>
<param>
- <key>slider_length</key>
- <value>200</value>
+ <key>style</key>
+ <value>wx.SL_HORIZONTAL</value>
</param>
<param>
- <key>slider_type</key>
- <value>horizontal</value>
+ <key>converver</key>
+ <value>float_converter</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
<key>_coordinate</key>
<value>(243, 11)</value>
</param>
@@ -130,18 +142,22 @@
<value>100</value>
</param>
<param>
- <key>slider_length</key>
- <value>200</value>
+ <key>style</key>
+ <value>wx.SL_HORIZONTAL</value>
</param>
<param>
- <key>slider_type</key>
- <value>horizontal</value>
+ <key>converver</key>
+ <value>float_converter</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
<key>_coordinate</key>
<value>(447, 14)</value>
</param>
@@ -213,41 +229,6 @@
</param>
</block>
<block>
- <key>gr_chunks_to_symbols_xx</key>
- <param>
- <key>id</key>
- <value>gr_chunks_to_symbols_xx_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>in_type</key>
- <value>short</value>
- </param>
- <param>
- <key>out_type</key>
- <value>complex</value>
- </param>
- <param>
- <key>symbol_table</key>
- <value>1,1j,-1j,-1</value>
- </param>
- <param>
- <key>dimension</key>
- <value>1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(665, 187)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>gr_multiply_const_vxx</key>
<param>
<key>id</key>
@@ -344,6 +325,10 @@
<value>1</value>
</param>
<param>
+ <key>num_ports</key>
+ <value>1</value>
+ </param>
+ <param>
<key>_coordinate</key>
<value>(660, 311)</value>
</param>
@@ -638,6 +623,10 @@
<value>1</value>
</param>
<param>
+ <key>num_ports</key>
+ <value>1</value>
+ </param>
+ <param>
<key>_coordinate</key>
<value>(405, 998)</value>
</param>
@@ -816,6 +805,10 @@
<value>1</value>
</param>
<param>
+ <key>num_ports</key>
+ <value>1</value>
+ </param>
+ <param>
<key>_coordinate</key>
<value>(420, 1368)</value>
</param>
@@ -968,10 +961,10 @@
</param>
</block>
<block>
- <key>wxgui_numbersink2</key>
+ <key>trellis_encoder_xx</key>
<param>
<key>id</key>
- <value>wxgui_numbersink2_2</value>
+ <value>trellis_encoder_xx_1</value>
</param>
<param>
<key>_enabled</key>
@@ -979,71 +972,74 @@
</param>
<param>
<key>type</key>
- <value>float</value>
+ <value>ss</value>
</param>
<param>
- <key>title</key>
- <value>BER 2 (raw)</value>
+ <key>fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
</param>
<param>
- <key>units</key>
- <value>BER</value>
+ <key>init_state</key>
+ <value>0</value>
</param>
<param>
- <key>samp_rate</key>
- <value>R</value>
+ <key>_coordinate</key>
+ <value>(336, 311)</value>
</param>
<param>
- <key>base_value</key>
- <value>0.0</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>trellis_viterbi_combined_xx</key>
<param>
- <key>min_value</key>
- <value>0</value>
+ <key>id</key>
+ <value>trellis_viterbi_combined_xx_1</value>
</param>
<param>
- <key>max_value</key>
- <value>1.0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>factor</key>
- <value>1.0</value>
+ <key>type</key>
+ <value>c</value>
</param>
<param>
- <key>decimal_places</key>
- <value>6</value>
+ <key>out_type</key>
+ <value>s</value>
</param>
<param>
- <key>ref_level</key>
- <value>0</value>
+ <key>fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
</param>
<param>
- <key>number_rate</key>
- <value>15</value>
+ <key>block_size</key>
+ <value>1000</value>
</param>
<param>
- <key>peak_hold</key>
- <value>False</value>
+ <key>init_state</key>
+ <value>-1</value>
</param>
<param>
- <key>average</key>
- <value>False</value>
+ <key>final_state</key>
+ <value>-1</value>
</param>
<param>
- <key>avg_alpha</key>
- <value>0.001</value>
+ <key>dim</key>
+ <value>1</value>
</param>
<param>
- <key>show_gauge</key>
- <value>True</value>
+ <key>table</key>
+ <value>alpha**0.5*1,alpha**0.5*1j,alpha**0.5*(-1j),alpha**0.5*(-1)</value>
</param>
<param>
- <key>grid_pos</key>
- <value>0,1,1,1</value>
+ <key>metric_type</key>
+ <value>trellis.TRELLIS_EUCLIDEAN</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1260, 659)</value>
+ <value>(79, 501)</value>
</param>
<param>
<key>_rotation</key>
@@ -1051,10 +1047,10 @@
</param>
</block>
<block>
- <key>wxgui_numbersink2</key>
+ <key>trellis_viterbi_combined_xx</key>
<param>
<key>id</key>
- <value>wxgui_numbersink2_3</value>
+ <value>trellis_viterbi_combined_xx_2</value>
</param>
<param>
<key>_enabled</key>
@@ -1062,71 +1058,74 @@
</param>
<param>
<key>type</key>
- <value>float</value>
+ <value>c</value>
</param>
<param>
- <key>title</key>
- <value>BER 2 (after cancelling user 1)</value>
+ <key>out_type</key>
+ <value>s</value>
</param>
<param>
- <key>units</key>
- <value>BER</value>
+ <key>fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
</param>
<param>
- <key>samp_rate</key>
- <value>R</value>
+ <key>block_size</key>
+ <value>1000</value>
</param>
<param>
- <key>base_value</key>
- <value>0.0</value>
+ <key>init_state</key>
+ <value>-1</value>
</param>
<param>
- <key>min_value</key>
- <value>0</value>
+ <key>final_state</key>
+ <value>-1</value>
</param>
<param>
- <key>max_value</key>
- <value>1.0</value>
+ <key>dim</key>
+ <value>1</value>
</param>
<param>
- <key>factor</key>
- <value>1.0</value>
+ <key>table</key>
+ <value>(1-alpha)**0.5*1,(1-alpha)**0.5*1j,(1-alpha)**0.5*(-1j),(1-alpha)**0.5*(-1)</value>
</param>
<param>
- <key>decimal_places</key>
- <value>6</value>
+ <key>metric_type</key>
+ <value>trellis.TRELLIS_EUCLIDEAN</value>
</param>
<param>
- <key>ref_level</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(82, 766)</value>
</param>
<param>
- <key>number_rate</key>
- <value>15</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>trellis_encoder_xx</key>
<param>
- <key>peak_hold</key>
- <value>False</value>
+ <key>id</key>
+ <value>trellis_encoder_xx_2</value>
</param>
<param>
- <key>average</key>
- <value>False</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>avg_alpha</key>
- <value>0.001</value>
+ <key>type</key>
+ <value>ss</value>
</param>
<param>
- <key>show_gauge</key>
- <value>True</value>
+ <key>fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
</param>
<param>
- <key>grid_pos</key>
- <value>1,1,1,1</value>
+ <key>init_state</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1262, 1020)</value>
+ <value>(89, 998)</value>
</param>
<param>
<key>_rotation</key>
@@ -1134,10 +1133,10 @@
</param>
</block>
<block>
- <key>wxgui_numbersink2</key>
+ <key>trellis_viterbi_combined_xx</key>
<param>
<key>id</key>
- <value>wxgui_numbersink2_3_0</value>
+ <value>trellis_viterbi_combined_xx_0</value>
</param>
<param>
<key>_enabled</key>
@@ -1145,71 +1144,74 @@
</param>
<param>
<key>type</key>
- <value>float</value>
+ <value>c</value>
</param>
<param>
- <key>title</key>
- <value>BER 1 (after cancelling user 2)</value>
+ <key>out_type</key>
+ <value>s</value>
</param>
<param>
- <key>units</key>
- <value>BER</value>
+ <key>fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
</param>
<param>
- <key>samp_rate</key>
- <value>R</value>
+ <key>block_size</key>
+ <value>1000</value>
</param>
<param>
- <key>base_value</key>
- <value>0.0</value>
+ <key>init_state</key>
+ <value>-1</value>
</param>
<param>
- <key>min_value</key>
- <value>0</value>
+ <key>final_state</key>
+ <value>-1</value>
</param>
<param>
- <key>max_value</key>
- <value>1.0</value>
+ <key>dim</key>
+ <value>1</value>
</param>
<param>
- <key>factor</key>
- <value>1.0</value>
+ <key>table</key>
+ <value>(1-alpha)**0.5*1,(1-alpha)**0.5*1j,(1-alpha)**0.5*(-1j),(1-alpha)**0.5*(-1)</value>
</param>
<param>
- <key>decimal_places</key>
- <value>6</value>
+ <key>metric_type</key>
+ <value>trellis.TRELLIS_EUCLIDEAN</value>
</param>
<param>
- <key>ref_level</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(83, 1111)</value>
</param>
<param>
- <key>number_rate</key>
- <value>15</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>trellis_encoder_xx</key>
<param>
- <key>peak_hold</key>
- <value>False</value>
+ <key>id</key>
+ <value>trellis_encoder_xx_2_0</value>
</param>
<param>
- <key>average</key>
- <value>False</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>avg_alpha</key>
- <value>0.001</value>
+ <key>type</key>
+ <value>ss</value>
</param>
<param>
- <key>show_gauge</key>
- <value>True</value>
+ <key>fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
</param>
<param>
- <key>grid_pos</key>
- <value>1,0,1,1</value>
+ <key>init_state</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1269, 1417)</value>
+ <value>(105, 1367)</value>
</param>
<param>
<key>_rotation</key>
@@ -1217,53 +1219,54 @@
</param>
</block>
<block>
- <key>variable</key>
+ <key>trellis_viterbi_combined_xx</key>
<param>
<key>id</key>
- <value>R</value>
+ <value>trellis_viterbi_combined_xx_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>10e3</value>
+ <key>type</key>
+ <value>c</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(748, 12)</value>
+ <key>out_type</key>
+ <value>s</value>
</param>
<param>
- <key>_rotation</key>
- <value>0</value>
+ <key>fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
</param>
- </block>
- <block>
- <key>trellis_encoder_xx</key>
<param>
- <key>id</key>
- <value>trellis_encoder_xx_0</value>
+ <key>block_size</key>
+ <value>1000</value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>init_state</key>
+ <value>-1</value>
</param>
<param>
- <key>type</key>
- <value>ss</value>
+ <key>final_state</key>
+ <value>-1</value>
</param>
<param>
- <key>fsm_args</key>
- <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
+ <key>dim</key>
+ <value>1</value>
</param>
<param>
- <key>init_state</key>
- <value>0</value>
+ <key>table</key>
+ <value>alpha**0.5*1,alpha**0.5*1j,alpha**0.5*(-1j),alpha**0.5*(-1)</value>
+ </param>
+ <param>
+ <key>metric_type</key>
+ <value>trellis.TRELLIS_EUCLIDEAN</value>
</param>
<param>
<key>_coordinate</key>
- <value>(334, 190)</value>
+ <value>(75, 1495)</value>
</param>
<param>
<key>_rotation</key>
@@ -1271,10 +1274,10 @@
</param>
</block>
<block>
- <key>trellis_encoder_xx</key>
+ <key>gr_add_xx</key>
<param>
<key>id</key>
- <value>trellis_encoder_xx_1</value>
+ <value>gr_add_xx_1</value>
</param>
<param>
<key>_enabled</key>
@@ -1282,19 +1285,19 @@
</param>
<param>
<key>type</key>
- <value>ss</value>
+ <value>complex</value>
</param>
<param>
- <key>fsm_args</key>
- <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
+ <key>num_inputs</key>
+ <value>2</value>
</param>
<param>
- <key>init_state</key>
- <value>0</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(336, 311)</value>
+ <value>(1400, 262)</value>
</param>
<param>
<key>_rotation</key>
@@ -1302,10 +1305,10 @@
</param>
</block>
<block>
- <key>trellis_viterbi_combined_xx</key>
+ <key>wxgui_scopesink2</key>
<param>
<key>id</key>
- <value>trellis_viterbi_combined_xx_1</value>
+ <value>wxgui_scopesink2_0</value>
</param>
<param>
<key>_enabled</key>
@@ -1313,43 +1316,63 @@
</param>
<param>
<key>type</key>
- <value>c</value>
+ <value>complex</value>
</param>
<param>
- <key>out_type</key>
- <value>s</value>
+ <key>title</key>
+ <value>Scope Plot</value>
</param>
<param>
- <key>fsm_args</key>
- <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
+ <key>samp_rate</key>
+ <value>R</value>
</param>
<param>
- <key>block_size</key>
- <value>1000</value>
+ <key>v_scale</key>
+ <value>0</value>
</param>
<param>
- <key>init_state</key>
- <value>-1</value>
+ <key>v_offset</key>
+ <value>0</value>
</param>
<param>
- <key>final_state</key>
- <value>-1</value>
+ <key>t_scale</key>
+ <value>0</value>
</param>
<param>
- <key>dim</key>
+ <key>ac_couple</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>xy_mode</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
<value>1</value>
</param>
<param>
- <key>table</key>
- <value>alpha**0.5*1,alpha**0.5*1j,alpha**0.5*(-1j),alpha**0.5*(-1)</value>
+ <key>win_size</key>
+ <value></value>
</param>
<param>
- <key>metric_type</key>
- <value>trellis.TRELLIS_EUCLIDEAN</value>
+ <key>grid_pos</key>
+ <value></value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
+ <key>trig_mode</key>
+ <value>gr.gr_TRIG_MODE_AUTO</value>
+ </param>
+ <param>
+ <key>y_axis_label</key>
+ <value>Counts</value>
</param>
<param>
<key>_coordinate</key>
- <value>(79, 501)</value>
+ <value>(1533, 149)</value>
</param>
<param>
<key>_rotation</key>
@@ -1357,54 +1380,53 @@
</param>
</block>
<block>
- <key>trellis_viterbi_combined_xx</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>trellis_viterbi_combined_xx_2</value>
+ <value>prefix</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>c</value>
- </param>
- <param>
- <key>out_type</key>
- <value>s</value>
+ <key>value</key>
+ <value>"/n/harrisville/x/anastas/gnuradio_trunk/"</value>
</param>
<param>
- <key>fsm_args</key>
- <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
+ <key>_coordinate</key>
+ <value>(871, 14)</value>
</param>
<param>
- <key>block_size</key>
- <value>1000</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>trellis_encoder_xx</key>
<param>
- <key>init_state</key>
- <value>-1</value>
+ <key>id</key>
+ <value>trellis_encoder_xx_0</value>
</param>
<param>
- <key>final_state</key>
- <value>-1</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>dim</key>
- <value>1</value>
+ <key>type</key>
+ <value>ss</value>
</param>
<param>
- <key>table</key>
- <value>(1-alpha)**0.5*1,(1-alpha)**0.5*1j,(1-alpha)**0.5*(-1j),(1-alpha)**0.5*(-1)</value>
+ <key>fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
</param>
<param>
- <key>metric_type</key>
- <value>trellis.TRELLIS_EUCLIDEAN</value>
+ <key>init_state</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(82, 766)</value>
+ <value>(340, 187)</value>
</param>
<param>
<key>_rotation</key>
@@ -1412,10 +1434,10 @@
</param>
</block>
<block>
- <key>trellis_encoder_xx</key>
+ <key>gr_throttle</key>
<param>
<key>id</key>
- <value>trellis_encoder_xx_2</value>
+ <value>gr_throttle_0</value>
</param>
<param>
<key>_enabled</key>
@@ -1423,19 +1445,19 @@
</param>
<param>
<key>type</key>
- <value>ss</value>
+ <value>short</value>
</param>
<param>
- <key>fsm_args</key>
- <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
+ <key>samples_per_second</key>
+ <value>R</value>
</param>
<param>
- <key>init_state</key>
- <value>0</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(89, 998)</value>
+ <value>(534, 149)</value>
</param>
<param>
<key>_rotation</key>
@@ -1443,54 +1465,61 @@
</param>
</block>
<block>
- <key>trellis_viterbi_combined_xx</key>
+ <key>gr_chunks_to_symbols_xx</key>
<param>
<key>id</key>
- <value>trellis_viterbi_combined_xx_0</value>
+ <value>gr_chunks_to_symbols_xx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>c</value>
+ <key>in_type</key>
+ <value>short</value>
</param>
<param>
<key>out_type</key>
- <value>s</value>
+ <value>complex</value>
</param>
<param>
- <key>fsm_args</key>
- <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
+ <key>symbol_table</key>
+ <value>1,1j,-1j,-1</value>
</param>
<param>
- <key>block_size</key>
- <value>1000</value>
+ <key>dimension</key>
+ <value>1</value>
</param>
<param>
- <key>init_state</key>
- <value>-1</value>
+ <key>num_ports</key>
+ <value>1</value>
</param>
<param>
- <key>final_state</key>
- <value>-1</value>
+ <key>_coordinate</key>
+ <value>(682, 186)</value>
</param>
<param>
- <key>dim</key>
- <value>1</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>variable</key>
<param>
- <key>table</key>
- <value>(1-alpha)**0.5*1,(1-alpha)**0.5*1j,(1-alpha)**0.5*(-1j),(1-alpha)**0.5*(-1)</value>
+ <key>id</key>
+ <value>R</value>
</param>
<param>
- <key>metric_type</key>
- <value>trellis.TRELLIS_EUCLIDEAN</value>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>100e3</value>
</param>
<param>
<key>_coordinate</key>
- <value>(83, 1111)</value>
+ <value>(748, 12)</value>
</param>
<param>
<key>_rotation</key>
@@ -1498,10 +1527,10 @@
</param>
</block>
<block>
- <key>trellis_encoder_xx</key>
+ <key>wxgui_numbersink2</key>
<param>
<key>id</key>
- <value>trellis_encoder_xx_2_0</value>
+ <value>wxgui_numbersink2_0</value>
</param>
<param>
<key>_enabled</key>
@@ -1509,74 +1538,75 @@
</param>
<param>
<key>type</key>
- <value>ss</value>
+ <value>float</value>
</param>
<param>
- <key>fsm_args</key>
- <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
+ <key>title</key>
+ <value>BER 1 (raw)</value>
</param>
<param>
- <key>init_state</key>
- <value>0</value>
+ <key>units</key>
+ <value>BER</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(105, 1367)</value>
+ <key>samp_rate</key>
+ <value>R</value>
</param>
<param>
- <key>_rotation</key>
+ <key>min_value</key>
<value>0</value>
</param>
- </block>
- <block>
- <key>trellis_viterbi_combined_xx</key>
<param>
- <key>id</key>
- <value>trellis_viterbi_combined_xx_0_0</value>
+ <key>max_value</key>
+ <value>1</value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>factor</key>
+ <value>1.0</value>
</param>
<param>
- <key>type</key>
- <value>c</value>
+ <key>decimal_places</key>
+ <value>6</value>
</param>
<param>
- <key>out_type</key>
- <value>s</value>
+ <key>ref_level</key>
+ <value>0</value>
</param>
<param>
- <key>fsm_args</key>
- <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value>
+ <key>number_rate</key>
+ <value>15</value>
</param>
<param>
- <key>block_size</key>
- <value>1000</value>
+ <key>peak_hold</key>
+ <value>False</value>
</param>
<param>
- <key>init_state</key>
- <value>-1</value>
+ <key>average</key>
+ <value>True</value>
</param>
<param>
- <key>final_state</key>
- <value>-1</value>
+ <key>avg_alpha</key>
+ <value>0.001</value>
</param>
<param>
- <key>dim</key>
- <value>1</value>
+ <key>show_gauge</key>
+ <value>True</value>
</param>
<param>
- <key>table</key>
- <value>alpha**0.5*1,alpha**0.5*1j,alpha**0.5*(-1j),alpha**0.5*(-1)</value>
+ <key>win_size</key>
+ <value></value>
</param>
<param>
- <key>metric_type</key>
- <value>trellis.TRELLIS_EUCLIDEAN</value>
+ <key>grid_pos</key>
+ <value>0,0,1,1</value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(75, 1495)</value>
+ <value>(1267, 410)</value>
</param>
<param>
<key>_rotation</key>
@@ -1584,53 +1614,86 @@
</param>
</block>
<block>
- <key>variable</key>
+ <key>wxgui_numbersink2</key>
<param>
<key>id</key>
- <value>prefix</value>
+ <value>wxgui_numbersink2_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>"../../../"</value>
+ <key>type</key>
+ <value>float</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(871, 14)</value>
+ <key>title</key>
+ <value>BER 2 (raw)</value>
</param>
<param>
- <key>_rotation</key>
+ <key>units</key>
+ <value>BER</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>R</value>
+ </param>
+ <param>
+ <key>min_value</key>
<value>0</value>
</param>
- </block>
- <block>
- <key>gr_add_xx</key>
<param>
- <key>id</key>
- <value>gr_add_xx_1</value>
+ <key>max_value</key>
+ <value>1.0</value>
</param>
<param>
- <key>_enabled</key>
+ <key>factor</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>decimal_places</key>
+ <value>6</value>
+ </param>
+ <param>
+ <key>ref_level</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>number_rate</key>
+ <value>15</value>
+ </param>
+ <param>
+ <key>peak_hold</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>average</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
+ <key>avg_alpha</key>
+ <value>0.001</value>
</param>
<param>
- <key>num_inputs</key>
- <value>2</value>
+ <key>show_gauge</key>
+ <value>True</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>win_size</key>
+ <value></value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value>0,1,1,1</value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(1400, 262)</value>
+ <value>(1260, 659)</value>
</param>
<param>
<key>_rotation</key>
@@ -1641,7 +1704,7 @@
<key>wxgui_numbersink2</key>
<param>
<key>id</key>
- <value>wxgui_numbersink2_0</value>
+ <value>wxgui_numbersink2_3</value>
</param>
<param>
<key>_enabled</key>
@@ -1653,7 +1716,7 @@
</param>
<param>
<key>title</key>
- <value>BER 1 (raw)</value>
+ <value>BER 2 (after cancelling user 1)</value>
</param>
<param>
<key>units</key>
@@ -1664,16 +1727,12 @@
<value>R</value>
</param>
<param>
- <key>base_value</key>
- <value>0.0</value>
- </param>
- <param>
<key>min_value</key>
<value>0</value>
</param>
<param>
<key>max_value</key>
- <value>1</value>
+ <value>1.0</value>
</param>
<param>
<key>factor</key>
@@ -1697,7 +1756,7 @@
</param>
<param>
<key>average</key>
- <value>False</value>
+ <value>True</value>
</param>
<param>
<key>avg_alpha</key>
@@ -1708,12 +1767,20 @@
<value>True</value>
</param>
<param>
+ <key>win_size</key>
+ <value></value>
+ </param>
+ <param>
<key>grid_pos</key>
- <value>0,0,1,1</value>
+ <value>1,1,1,1</value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(1267, 410)</value>
+ <value>(1262, 1020)</value>
</param>
<param>
<key>_rotation</key>
@@ -1721,10 +1788,10 @@
</param>
</block>
<block>
- <key>wxgui_scopesink2</key>
+ <key>wxgui_numbersink2</key>
<param>
<key>id</key>
- <value>wxgui_scopesink2_0</value>
+ <value>wxgui_numbersink2_3_0</value>
</param>
<param>
<key>_enabled</key>
@@ -1732,43 +1799,75 @@
</param>
<param>
<key>type</key>
- <value>complex</value>
+ <value>float</value>
</param>
<param>
<key>title</key>
- <value>Scope Plot</value>
+ <value>BER 1 (after cancelling user 2)</value>
+ </param>
+ <param>
+ <key>units</key>
+ <value>BER</value>
</param>
<param>
<key>samp_rate</key>
<value>R</value>
</param>
<param>
- <key>v_scale</key>
+ <key>min_value</key>
<value>0</value>
</param>
<param>
- <key>t_scale</key>
+ <key>max_value</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>factor</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>decimal_places</key>
+ <value>6</value>
+ </param>
+ <param>
+ <key>ref_level</key>
<value>0</value>
</param>
<param>
- <key>ac_couple</key>
+ <key>number_rate</key>
+ <value>15</value>
+ </param>
+ <param>
+ <key>peak_hold</key>
<value>False</value>
</param>
<param>
- <key>xy_mode</key>
+ <key>average</key>
<value>True</value>
</param>
<param>
- <key>num_inputs</key>
- <value>1</value>
+ <key>avg_alpha</key>
+ <value>0.001</value>
+ </param>
+ <param>
+ <key>show_gauge</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>win_size</key>
+ <value></value>
</param>
<param>
<key>grid_pos</key>
+ <value>1,0,1,1</value>
+ </param>
+ <param>
+ <key>notebook</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(1533, 149)</value>
+ <value>(1269, 1417)</value>
</param>
<param>
<key>_rotation</key>
@@ -1782,12 +1881,6 @@
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>trellis_encoder_xx_0</source_block_id>
- <sink_block_id>gr_chunks_to_symbols_xx_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
<source_block_id>trellis_encoder_xx_1</source_block_id>
<sink_block_id>gr_chunks_to_symbols_xx_1</sink_block_id>
<source_key>0</source_key>
@@ -2069,4 +2162,16 @@
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
+ <connection>
+ <source_block_id>trellis_encoder_xx_0</source_block_id>
+ <sink_block_id>gr_throttle_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_throttle_0</source_block_id>
+ <sink_block_id>gr_chunks_to_symbols_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
</flow_graph>
diff --git a/gnuradio-examples/grc/trellis/readme.txt b/gnuradio-examples/grc/trellis/readme.txt
index d620fd6282..75966c4be6 100644
--- a/gnuradio-examples/grc/trellis/readme.txt
+++ b/gnuradio-examples/grc/trellis/readme.txt
@@ -1,5 +1,7 @@
-This is an example of using gr-trellis in grc.
+These are examples of using gr-trellis in grc.
+INTERFERENCE CANCELLATION
+-------------------------
Two users are transmitting simultaneously using convolutionally encoded QPSK, each with power P1=alpha*P and P2=(1-alpha)*P.
The combined signal is observed in noise and four different receivers are considered:
1) A viterbi decoder decoding user 1 assuming user 2 is noise
@@ -13,4 +15,12 @@ The combined signal is observed in noise and four different receivers are consid
You can change the signal to noise ratio P/sigma^2 and the allocation of power to the two users, alpha.
+
+Serially Concatenated Convolutionsl Codes
+-----------------------------------------
+An SCCC can be defined by an outer and an inner FSM together with an interleaver
+and a modulation type. You can change the SNR and observe the estimated BER.
+
+
+
Enjoy.
diff --git a/gnuradio-examples/grc/trellis/sccc.grc b/gnuradio-examples/grc/trellis/sccc.grc
new file mode 100644
index 0000000000..166e70f502
--- /dev/null
+++ b/gnuradio-examples/grc/trellis/sccc.grc
@@ -0,0 +1,832 @@
+<?xml version='1.0' encoding='ASCII'?>
+<flow_graph>
+ <timestamp>Wed Aug 31 19:29:07 2011</timestamp>
+ <block>
+ <key>options</key>
+ <param>
+ <key>id</key>
+ <value>sccc</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>title</key>
+ <value>Serially Concatenated Convolutional Code</value>
+ </param>
+ <param>
+ <key>author</key>
+ <value>AA</value>
+ </param>
+ <param>
+ <key>description</key>
+ <value>gnuradio flow graph</value>
+ </param>
+ <param>
+ <key>window_size</key>
+ <value>2048, 2048</value>
+ </param>
+ <param>
+ <key>generate_options</key>
+ <value>wx_gui</value>
+ </param>
+ <param>
+ <key>category</key>
+ <value>Custom</value>
+ </param>
+ <param>
+ <key>run_options</key>
+ <value>prompt</value>
+ </param>
+ <param>
+ <key>run</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>realtime_scheduling</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(10, 10)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>noisevar</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>10**(-snr_db/10)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(389, 15)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>random_source_x</key>
+ <param>
+ <key>id</key>
+ <value>random_source_x_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>short</value>
+ </param>
+ <param>
+ <key>min</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>max</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>num_samps</key>
+ <value>1000</value>
+ </param>
+ <param>
+ <key>repeat</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(21, 170)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>prefix</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>"/n/harrisville/x/anastas/gnuradio_trunk/"</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(590, 15)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>block</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>1000</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(764, 16)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_add_xx</key>
+ <param>
+ <key>id</key>
+ <value>gr_add_xx_1</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(951, 256)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_sub_xx</key>
+ <param>
+ <key>id</key>
+ <value>gr_sub_xx_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>short</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(445, 517)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_multiply_xx</key>
+ <param>
+ <key>id</key>
+ <value>gr_multiply_xx_2_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>short</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(228.25, 798.39170361874085)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_short_to_float</key>
+ <param>
+ <key>id</key>
+ <value>gr_short_to_float_1_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(416, 815)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_slider</key>
+ <param>
+ <key>id</key>
+ <value>snr_db</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>SNR (dB)</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>5</value>
+ </param>
+ <param>
+ <key>min</key>
+ <value>-10</value>
+ </param>
+ <param>
+ <key>max</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>num_steps</key>
+ <value>100</value>
+ </param>
+ <param>
+ <key>style</key>
+ <value>wx.SL_HORIZONTAL</value>
+ </param>
+ <param>
+ <key>converver</key>
+ <value>float_converter</value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value></value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(229, 13)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>R</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>10e3</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(482, 17)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>wxgui_scopesink2</key>
+ <param>
+ <key>id</key>
+ <value>wxgui_scopesink2_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>title</key>
+ <value>Scope Plot</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>R</value>
+ </param>
+ <param>
+ <key>v_scale</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>v_offset</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>t_scale</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>ac_couple</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>xy_mode</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>win_size</key>
+ <value></value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value></value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
+ <key>trig_mode</key>
+ <value>gr.gr_TRIG_MODE_AUTO</value>
+ </param>
+ <param>
+ <key>y_axis_label</key>
+ <value>Counts</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(952, 73)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_throttle</key>
+ <param>
+ <key>id</key>
+ <value>gr_throttle_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>short</value>
+ </param>
+ <param>
+ <key>samples_per_second</key>
+ <value>R</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(514, 105)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_chunks_to_symbols_xx</key>
+ <param>
+ <key>id</key>
+ <value>gr_chunks_to_symbols_xx_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>in_type</key>
+ <value>short</value>
+ </param>
+ <param>
+ <key>out_type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>symbol_table</key>
+ <value>1,0,1j,0,-1j,0,-1,0, 0,1,0,1j,0,-1j,0,-1</value>
+ </param>
+ <param>
+ <key>dimension</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>num_ports</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(551, 184)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_noise_source_x</key>
+ <param>
+ <key>id</key>
+ <value>gr_noise_source_x_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>noise_type</key>
+ <value>gr.GR_GAUSSIAN</value>
+ </param>
+ <param>
+ <key>amp</key>
+ <value>noisevar</value>
+ </param>
+ <param>
+ <key>seed</key>
+ <value>42</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(672, 290)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>trellis_sccc_encoder_xx</key>
+ <param>
+ <key>id</key>
+ <value>trellis_sccc_encoder_xx_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>ss</value>
+ </param>
+ <param>
+ <key>o_fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_4.fsm"</value>
+ </param>
+ <param>
+ <key>o_init_state</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>i_fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn2o3_4.fsm"</value>
+ </param>
+ <param>
+ <key>i_init_state</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>interleaver_args</key>
+ <value>trellis.interleaver(block,666)</value>
+ </param>
+ <param>
+ <key>bl</key>
+ <value>block</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(242, 154)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>wxgui_numbersink2</key>
+ <param>
+ <key>id</key>
+ <value>wxgui_numbersink2_3_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>float</value>
+ </param>
+ <param>
+ <key>title</key>
+ <value>BER</value>
+ </param>
+ <param>
+ <key>units</key>
+ <value>BER</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>R</value>
+ </param>
+ <param>
+ <key>min_value</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>max_value</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>factor</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>decimal_places</key>
+ <value>6</value>
+ </param>
+ <param>
+ <key>ref_level</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>number_rate</key>
+ <value>15</value>
+ </param>
+ <param>
+ <key>peak_hold</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>average</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>avg_alpha</key>
+ <value>0.001</value>
+ </param>
+ <param>
+ <key>show_gauge</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>win_size</key>
+ <value></value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value>1,0,1,1</value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(688, 572)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>trellis_sccc_decoder_combined_xx</key>
+ <param>
+ <key>id</key>
+ <value>trellis_sccc_decoder_combined_xx_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>c</value>
+ </param>
+ <param>
+ <key>out_type</key>
+ <value>s</value>
+ </param>
+ <param>
+ <key>o_fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_4.fsm"</value>
+ </param>
+ <param>
+ <key>o_init_state</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>o_final_state</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>i_fsm_args</key>
+ <value>prefix+"gr-trellis/src/examples/fsm_files/awgn2o3_4.fsm"</value>
+ </param>
+ <param>
+ <key>i_init_state</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>i_final_state</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>interleaver</key>
+ <value>trellis.interleaver(block,666)</value>
+ </param>
+ <param>
+ <key>block_size</key>
+ <value>block</value>
+ </param>
+ <param>
+ <key>iterations</key>
+ <value>5</value>
+ </param>
+ <param>
+ <key>dim</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>table</key>
+ <value>1,0,1j,0,-1j,0,-1,0, 0,1,0,1j,0,-1j,0,-1</value>
+ </param>
+ <param>
+ <key>metric_type</key>
+ <value>trellis.TRELLIS_EUCLIDEAN</value>
+ </param>
+ <param>
+ <key>siso_type</key>
+ <value>trellis.TRELLIS_SUM_PRODUCT</value>
+ </param>
+ <param>
+ <key>scaling</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(159, 335)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <connection>
+ <source_block_id>random_source_x_0</source_block_id>
+ <sink_block_id>gr_sub_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_throttle_0</source_block_id>
+ <sink_block_id>gr_chunks_to_symbols_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_add_xx_1</source_block_id>
+ <sink_block_id>wxgui_scopesink2_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_noise_source_x_0</source_block_id>
+ <sink_block_id>gr_add_xx_1</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>1</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_chunks_to_symbols_xx_0</source_block_id>
+ <sink_block_id>gr_add_xx_1</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>random_source_x_0</source_block_id>
+ <sink_block_id>trellis_sccc_encoder_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>trellis_sccc_encoder_xx_0</source_block_id>
+ <sink_block_id>gr_throttle_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_add_xx_1</source_block_id>
+ <sink_block_id>trellis_sccc_decoder_combined_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>trellis_sccc_decoder_combined_xx_0</source_block_id>
+ <sink_block_id>gr_sub_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>1</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_multiply_xx_2_0</source_block_id>
+ <sink_block_id>gr_short_to_float_1_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_short_to_float_1_0</source_block_id>
+ <sink_block_id>wxgui_numbersink2_3_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_sub_xx_0</source_block_id>
+ <sink_block_id>gr_multiply_xx_2_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_sub_xx_0</source_block_id>
+ <sink_block_id>gr_multiply_xx_2_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>1</sink_key>
+ </connection>
+</flow_graph>
diff --git a/gr-trellis/grc/Makefile.am b/gr-trellis/grc/Makefile.am
index 377f5e8460..25bc29a873 100644
--- a/gr-trellis/grc/Makefile.am
+++ b/gr-trellis/grc/Makefile.am
@@ -30,4 +30,6 @@ dist_grcblocks_DATA = \
trellis_metrics_x.xml \
trellis_siso_f.xml \
trellis_permutation.xml \
- trellis_viterbi_combined_xx.xml
+ trellis_viterbi_combined_xx.xml \
+ trellis_sccc_encoder_xx.xml \
+ trellis_sccc_decoder_combined_xx.xml
diff --git a/gr-trellis/grc/trellis_permutation.xml b/gr-trellis/grc/trellis_permutation.xml
index 6bd14e6b79..125a78d4d5 100644
--- a/gr-trellis/grc/trellis_permutation.xml
+++ b/gr-trellis/grc/trellis_permutation.xml
@@ -11,7 +11,7 @@
<key>trellis_permutation</key>
<category>Error Correction/Trellis</category>
<import>from gnuradio import trellis</import>
- <make>trellis.permutation($block_size, $table, $syms_per_block, $type.size*$vlen)</make>
+ <make>trellis.permutation($interleaver_size, $table, $syms_per_block, $type.size*$vlen)</make>
<param>
<name>Type</name>
<key>type</key>
@@ -43,8 +43,8 @@
</option>
</param>
<param>
- <name>Block Size</name>
- <key>block_size</key>
+ <name>Interleaver Size</name>
+ <key>interleaver_size</key>
<type>int</type>
</param>
<param>
@@ -74,4 +74,8 @@
<type>$type</type>
<vlen>$vlen</vlen>
</source>
+ <doc>
+Interleaver size is given in blocks.
+One Symbol = (in/out type) * (vector length)
+ </doc>
</block>
diff --git a/gr-trellis/grc/trellis_sccc_decoder_combined_xx.xml b/gr-trellis/grc/trellis_sccc_decoder_combined_xx.xml
new file mode 100644
index 0000000000..de7dfc8427
--- /dev/null
+++ b/gr-trellis/grc/trellis_sccc_decoder_combined_xx.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+## SCCC Decoder Combined
+###################################################
+ -->
+
+
+<block>
+ <name>SCCC Decoder Combo</name>
+ <key>trellis_sccc_decoder_combined_xx</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.sccc_decoder_combined_$(type)$(out_type)(
+ trellis.fsm($o_fsm_args), $o_init_state, $o_final_state,
+ trellis.fsm($i_fsm_args), $i_init_state, $i_final_state,
+ trellis.interleaver($interleaver),
+ $block_size,
+ $iterations,
+ $siso_type,
+ $dim, $table, $metric_type,
+ $scaling)
+ </make>
+ <callback>set_TABLE($table)</callback>
+ <param>
+ <name>Input Type</name>
+ <key>type</key>
+ <type>enum</type>
+ <option>
+ <name>Complex</name>
+ <key>c</key>
+ <opt>io:complex</opt>
+ <opt>table:complex_vector</opt>
+ </option>
+ <option>
+ <name>Float</name>
+ <key>f</key>
+ <opt>io:float</opt>
+ <opt>table:real_vector</opt>
+ </option>
+ </param>
+ <param>
+ <name>Output Type</name>
+ <key>out_type</key>
+ <type>enum</type>
+ <option>
+ <name>Int</name>
+ <key>i</key>
+ <opt>io:int</opt>
+ </option>
+ <option>
+ <name>Short</name>
+ <key>s</key>
+ <opt>io:short</opt>
+ </option>
+ <option>
+ <name>Byte</name>
+ <key>b</key>
+ <opt>io:byte</opt>
+ </option>
+ </param>
+ <param>
+ <name>Outer FSM</name>
+ <key>o_fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Outer Initial State</name>
+ <key>o_init_state</key>
+ <value>-1</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Outer Final State</name>
+ <key>o_final_state</key>
+ <value>-1</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Inner FSM</name>
+ <key>i_fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Inner Initial State</name>
+ <key>i_init_state</key>
+ <value>-1</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Inner Final State</name>
+ <key>i_final_state</key>
+ <value>-1</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Interleaver</name>
+ <key>interleaver</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Block Size</name>
+ <key>block_size</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Iterations</name>
+ <key>iterations</key>
+ <value>10</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Dimensionality</name>
+ <key>dim</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Constellation</name>
+ <key>table</key>
+ <type>$type.table</type>
+ </param>
+ <param>
+ <name>Metric Type</name>
+ <key>metric_type</key>
+ <type>enum</type>
+ <option>
+ <name>Euclidean</name>
+ <key>trellis.TRELLIS_EUCLIDEAN</key>
+ </option>
+ <option>
+ <name>Hard Symbol</name>
+ <key>trellis.TRELLIS_HARD_SYMBOL</key>
+ </option>
+ <option>
+ <name>Hard Bit</name>
+ <key>trellis.TRELLIS_HARD_BIT</key>
+ </option>
+ </param>
+ <param>
+ <name>SISO Type</name>
+ <key>siso_type</key>
+ <type>enum</type>
+ <option>
+ <name>Min Sum</name>
+ <key>trellis.TRELLIS_MIN_SUM</key>
+ </option>
+ <option>
+ <name>Sum Product</name>
+ <key>trellis.TRELLIS_SUM_PRODUCT</key>
+ </option>
+ </param>
+ <param>
+ <name>Scaling</name>
+ <key>scaling</key>
+ <value>1.0</value>
+ <type>real</type>
+ </param>
+ <sink>
+ <name>in</name>
+ <type>$type.io</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>$out_type.io</type>
+ </source>
+ <doc>
+Viterbi Decoder combined with metric calculation. \
+The fsm arguments are passed directly to the trellis.fsm() constructor.
+ </doc>
+</block>
diff --git a/gr-trellis/grc/trellis_sccc_encoder_xx.xml b/gr-trellis/grc/trellis_sccc_encoder_xx.xml
new file mode 100644
index 0000000000..04b0b8e667
--- /dev/null
+++ b/gr-trellis/grc/trellis_sccc_encoder_xx.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##SCCC Encoder
+###################################################
+ -->
+
+<block>
+ <name>SCCC Encoder</name>
+ <key>trellis_sccc_encoder_xx</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.sccc_encoder_$(type)(trellis.fsm($o_fsm_args), $o_init_state, trellis.fsm($i_fsm_args), $i_init_state, trellis.interleaver($interleaver_args), $bl)</make>
+ <param>
+ <name>Type</name>
+ <key>type</key>
+ <type>enum</type>
+ <option>
+ <name>Byte->Byte</name>
+ <key>bb</key>
+ <opt>input:byte</opt>
+ <opt>output:byte</opt>
+ </option>
+ <option>
+ <name>Byte->Short</name>
+ <key>bs</key>
+ <opt>input:byte</opt>
+ <opt>output:short</opt>
+ </option>
+ <option>
+ <name>Byte->Int</name>
+ <key>bi</key>
+ <opt>input:byte</opt>
+ <opt>output:int</opt>
+ </option>
+ <option>
+ <name>Short->Short</name>
+ <key>ss</key>
+ <opt>input:short</opt>
+ <opt>output:short</opt>
+ </option>
+ <option>
+ <name>Short->Int</name>
+ <key>si</key>
+ <opt>input:short</opt>
+ <opt>output:int</opt>
+ </option>
+ <option>
+ <name>Int->Int</name>
+ <key>ii</key>
+ <opt>input:int</opt>
+ <opt>output:int</opt>
+ </option>
+ </param>
+ <param>
+ <name>Outer FSM</name>
+ <key>o_fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Outer Initial State</name>
+ <key>o_init_state</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Inner FSM</name>
+ <key>i_fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Inner Initial State</name>
+ <key>i_init_state</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Interleaver</name>
+ <key>interleaver_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Blocklength</name>
+ <key>bl</key>
+ <type>int</type>
+ </param>
+ <sink>
+ <name>in</name>
+ <type>$type.input</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>$type.output</type>
+ </source>
+ <doc>
+The fsm and interleaver arguments are passed directly to the trellis.fsm() and trellis.interleaver() constructors.
+ </doc>
+</block>
diff --git a/gr-trellis/grc/trellis_siso_combined_f.xml b/gr-trellis/grc/trellis_siso_combined_f.xml
index 48ed8dd760..b09b12ae97 100644
--- a/gr-trellis/grc/trellis_siso_combined_f.xml
+++ b/gr-trellis/grc/trellis_siso_combined_f.xml
@@ -7,7 +7,7 @@
<block>
- <name>Trellis SISO Combo</name>
+ <name>SISO Combo</name>
<key>trellis_siso_combined_f</key>
<category>Error Correction/Trellis</category>
<import>from gnuradio import trellis</import>
diff --git a/gr-trellis/grc/trellis_siso_f.xml b/gr-trellis/grc/trellis_siso_f.xml
index 21af005fa2..f956c35778 100644
--- a/gr-trellis/grc/trellis_siso_f.xml
+++ b/gr-trellis/grc/trellis_siso_f.xml
@@ -7,7 +7,7 @@
<block>
- <name>Trellis SISO</name>
+ <name>SISO</name>
<key>trellis_siso_f</key>
<category>Error Correction/Trellis</category>
<import>from gnuradio import trellis</import>
diff --git a/gr-trellis/grc/trellis_viterbi_combined_xx.xml b/gr-trellis/grc/trellis_viterbi_combined_xx.xml
index 874c64a587..714c5284cb 100644
--- a/gr-trellis/grc/trellis_viterbi_combined_xx.xml
+++ b/gr-trellis/grc/trellis_viterbi_combined_xx.xml
@@ -7,7 +7,7 @@
<block>
- <name>Trellis Viterbi Combo</name>
+ <name>Viterbi Combo</name>
<key>trellis_viterbi_combined_xx</key>
<category>Error Correction/Trellis</category>
<import>from gnuradio import trellis</import>
diff --git a/gr-trellis/grc/trellis_viterbi_x.xml b/gr-trellis/grc/trellis_viterbi_x.xml
index 3f85d95cbf..a0c69c36aa 100644
--- a/gr-trellis/grc/trellis_viterbi_x.xml
+++ b/gr-trellis/grc/trellis_viterbi_x.xml
@@ -7,7 +7,7 @@
<block>
- <name>Trellis Viterbi</name>
+ <name>Viterbi</name>
<key>trellis_viterbi_x</key>
<category>Error Correction/Trellis</category>
<import>from gnuradio import trellis</import>
diff --git a/gr-trellis/src/lib/trellis_permutation.cc b/gr-trellis/src/lib/trellis_permutation.cc
index a32390742b..416fc58ec1 100644
--- a/gr-trellis/src/lib/trellis_permutation.cc
+++ b/gr-trellis/src/lib/trellis_permutation.cc
@@ -30,19 +30,19 @@
#include <string.h>
trellis_permutation_sptr
-trellis_make_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t NBYTES_INOUT)
+trellis_make_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t BYTES_PER_SYMBOL)
{
- return gnuradio::get_initial_sptr(new trellis_permutation (K,TABLE,SYMS_PER_BLOCK,NBYTES_INOUT));
+ return gnuradio::get_initial_sptr(new trellis_permutation (K,TABLE,SYMS_PER_BLOCK,BYTES_PER_SYMBOL));
}
-trellis_permutation::trellis_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t NBYTES_INOUT)
+trellis_permutation::trellis_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t BYTES_PER_SYMBOL)
: gr_sync_block ("permutation",
- gr_make_io_signature (1, -1, NBYTES_INOUT),
- gr_make_io_signature (1, -1, NBYTES_INOUT)),
+ gr_make_io_signature (1, -1, BYTES_PER_SYMBOL),
+ gr_make_io_signature (1, -1, BYTES_PER_SYMBOL)),
d_K (K),
d_TABLE (TABLE),
d_SYMS_PER_BLOCK (SYMS_PER_BLOCK),
- d_NBYTES_INOUT (NBYTES_INOUT)
+ d_BYTES_PER_SYMBOL (BYTES_PER_SYMBOL)
{
set_output_multiple (d_K*SYMS_PER_BLOCK);
//std::cout << d_K << "\n";
@@ -72,9 +72,9 @@ trellis_permutation::work (int noutput_items,
int j0 = i%d_K;
// new position of block within packet (in blocks)
int k0 = d_TABLE[j0];
- memcpy(&(out[i*d_SYMS_PER_BLOCK*d_NBYTES_INOUT]),
- &(in[(i0+k0)*d_SYMS_PER_BLOCK*d_NBYTES_INOUT]),
- d_NBYTES_INOUT*d_SYMS_PER_BLOCK);
+ memcpy(&(out[i*d_SYMS_PER_BLOCK*d_BYTES_PER_SYMBOL]),
+ &(in[(i0+k0)*d_SYMS_PER_BLOCK*d_BYTES_PER_SYMBOL]),
+ d_BYTES_PER_SYMBOL*d_SYMS_PER_BLOCK);
}
// end per stream processing
}
diff --git a/gr-trellis/src/lib/trellis_permutation.h b/gr-trellis/src/lib/trellis_permutation.h
index 5505caf891..a5c858a8b8 100644
--- a/gr-trellis/src/lib/trellis_permutation.h
+++ b/gr-trellis/src/lib/trellis_permutation.h
@@ -30,7 +30,7 @@
class trellis_permutation;
typedef boost::shared_ptr<trellis_permutation> trellis_permutation_sptr;
-trellis_permutation_sptr trellis_make_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t NBYTES_INOUT);
+trellis_permutation_sptr trellis_make_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t BYTES_PER_SYMBOL);
/*!
* \brief Permutation.
@@ -39,18 +39,18 @@ trellis_permutation_sptr trellis_make_permutation (int K, const std::vector<int>
class trellis_permutation : public gr_sync_block
{
private:
- friend trellis_permutation_sptr trellis_make_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t NBYTES_INOUT);
+ friend trellis_permutation_sptr trellis_make_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t BYTES_PER_SYMBOL);
int d_K;
std::vector<int> d_TABLE;
int d_SYMS_PER_BLOCK;
- size_t d_NBYTES_INOUT;
+ size_t d_BYTES_PER_SYMBOL;
trellis_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t NBYTES);
public:
int K () const { return d_K; }
const std::vector<int> & TABLE () const { return d_TABLE; }
int SYMS_PER_BLOCK () const { return d_SYMS_PER_BLOCK; }
- size_t NBYTES_INOUT () const { return d_NBYTES_INOUT; }
+ size_t BYTES_PER_SYMBOL () const { return d_BYTES_PER_SYMBOL; }
int work (int noutput_items,
gr_vector_const_void_star &input_items,
diff --git a/gr-trellis/src/lib/trellis_permutation.i b/gr-trellis/src/lib/trellis_permutation.i
index 834a36986f..1433a65844 100644
--- a/gr-trellis/src/lib/trellis_permutation.i
+++ b/gr-trellis/src/lib/trellis_permutation.i
@@ -22,7 +22,7 @@
GR_SWIG_BLOCK_MAGIC(trellis,permutation);
-trellis_permutation_sptr trellis_make_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t NBYTES_INOUT);
+trellis_permutation_sptr trellis_make_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t BYTES_PER_SYMBOL);
class trellis_permutation : public gr_sync_block
{
@@ -30,12 +30,12 @@ private:
int d_K;
std::vector<int> d_TABLE;
int d_SYMS_PER_BLOCK;
- size_t d_NBYTES_INOUT;
- trellis_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t NBYTES_INOUT);
+ size_t d_BYTES_PER_SYMBOL;
+ trellis_permutation (int K, const std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t BYTES_PER_SYMBOL);
public:
int K () const { return d_K; }
const std::vector<int> & TABLE () const { return d_TABLE; }
int SYMS_PER_BLOCK () const { return d_SYMS_PER_BLOCK; }
- size_t NBYTES_INOUT () const { return d_NBYTES_INOUT; }
+ size_t BYTES_PER_SYMBOL () const { return d_BYTES_PER_SYMBOL; }
};