summaryrefslogtreecommitdiff
path: root/gr-trellis/grc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-trellis/grc')
-rw-r--r--gr-trellis/grc/.gitignore23
-rw-r--r--gr-trellis/grc/Makefile.am39
-rw-r--r--gr-trellis/grc/trellis_encoder_xx.xml77
-rw-r--r--gr-trellis/grc/trellis_metrics_x.xml88
-rw-r--r--gr-trellis/grc/trellis_pccc_decoder_combined_xx.xml170
-rw-r--r--gr-trellis/grc/trellis_pccc_decoder_x.xml117
-rw-r--r--gr-trellis/grc/trellis_pccc_encoder_xx.xml98
-rw-r--r--gr-trellis/grc/trellis_permutation.xml81
-rw-r--r--gr-trellis/grc/trellis_sccc_decoder_combined_xx.xml170
-rw-r--r--gr-trellis/grc/trellis_sccc_decoder_x.xml117
-rw-r--r--gr-trellis/grc/trellis_sccc_encoder_xx.xml98
-rw-r--r--gr-trellis/grc/trellis_siso_combined_f.xml115
-rw-r--r--gr-trellis/grc/trellis_siso_f.xml88
-rw-r--r--gr-trellis/grc/trellis_viterbi_combined_xx.xml126
-rw-r--r--gr-trellis/grc/trellis_viterbi_x.xml69
15 files changed, 1476 insertions, 0 deletions
diff --git a/gr-trellis/grc/.gitignore b/gr-trellis/grc/.gitignore
new file mode 100644
index 000000000..f3462d009
--- /dev/null
+++ b/gr-trellis/grc/.gitignore
@@ -0,0 +1,23 @@
+/Makefile
+/Makefile.in
+/aclocal.m4
+/configure
+/config.h.in
+/stamp-h.in
+/libtool
+/config.log
+/config.h
+/config.cache
+/config.status
+/missing
+/stamp-h
+/stamp-h1
+/.deps
+/.libs
+/*.la
+/*.lo
+/autom4te.cache
+/*.cache
+/missing
+/make.log
+/*.pc
diff --git a/gr-trellis/grc/Makefile.am b/gr-trellis/grc/Makefile.am
new file mode 100644
index 000000000..518c7f055
--- /dev/null
+++ b/gr-trellis/grc/Makefile.am
@@ -0,0 +1,39 @@
+#
+# Copyright 2009 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+include $(top_srcdir)/Makefile.common
+
+grcblocksdir = $(grc_blocksdir)
+
+dist_grcblocks_DATA = \
+ trellis_encoder_xx.xml \
+ trellis_siso_combined_f.xml \
+ trellis_viterbi_x.xml \
+ trellis_metrics_x.xml \
+ trellis_siso_f.xml \
+ trellis_permutation.xml \
+ trellis_viterbi_combined_xx.xml \
+ trellis_sccc_encoder_xx.xml \
+ trellis_sccc_decoder_x.xml \
+ trellis_sccc_decoder_combined_xx.xml \
+ trellis_pccc_encoder_xx.xml \
+ trellis_pccc_decoder_x.xml \
+ trellis_pccc_decoder_combined_xx.xml
diff --git a/gr-trellis/grc/trellis_encoder_xx.xml b/gr-trellis/grc/trellis_encoder_xx.xml
new file mode 100644
index 000000000..639e948ec
--- /dev/null
+++ b/gr-trellis/grc/trellis_encoder_xx.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Trellis Encoder
+###################################################
+ -->
+
+<block>
+ <name>Trellis Encoder</name>
+ <key>trellis_encoder_xx</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.encoder_$(type)(trellis.fsm($fsm_args), $init_state)</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>FSM Args</name>
+ <key>fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Initial State</name>
+ <key>init_state</key>
+ <value>0</value>
+ <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 arguments are passed directly to the trellis.fsm() constructor.
+ </doc>
+</block>
diff --git a/gr-trellis/grc/trellis_metrics_x.xml b/gr-trellis/grc/trellis_metrics_x.xml
new file mode 100644
index 000000000..ccb59a36e
--- /dev/null
+++ b/gr-trellis/grc/trellis_metrics_x.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Trellis Metrics
+###################################################
+ -->
+
+
+<block>
+ <name>Trellis Metrics</name>
+ <key>trellis_metrics_x</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.metrics_$(type)($card, $dim, $table, $metric_type)</make>
+ <callback>set_TABLE($table)</callback>
+ <param>
+ <name>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>
+ <option>
+ <name>Int</name>
+ <key>i</key>
+ <opt>io:int</opt>
+ <opt>table:int_vector</opt>
+ </option>
+ <option>
+ <name>Short</name>
+ <key>s</key>
+ <opt>io:short</opt>
+ <opt>table:int_vector</opt>
+ </option>
+ </param>
+ <param>
+ <name>Output Cardinality</name>
+ <key>card</key>
+ <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>
+ <sink>
+ <name>in</name>
+ <type>$type.io</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>float</type>
+ </source>
+ <doc>
+Generate metrics required for Viterbi or SISO algorithms.
+ </doc>
+</block>
diff --git a/gr-trellis/grc/trellis_pccc_decoder_combined_xx.xml b/gr-trellis/grc/trellis_pccc_decoder_combined_xx.xml
new file mode 100644
index 000000000..ec58132f8
--- /dev/null
+++ b/gr-trellis/grc/trellis_pccc_decoder_combined_xx.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+## PCCC Decoder Combined
+###################################################
+ -->
+
+
+<block>
+ <name>PCCC Decoder Combo</name>
+ <key>trellis_pccc_decoder_combined_xx</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.pccc_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>FSM 1</name>
+ <key>o_fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Initial State 1</name>
+ <key>o_init_state</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Final State 1</name>
+ <key>o_final_state</key>
+ <value>-1</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>FSM 2</name>
+ <key>i_fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Initial State 2</name>
+ <key>i_init_state</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Final State 2</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>
+PCCC turbo 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_pccc_decoder_x.xml b/gr-trellis/grc/trellis_pccc_decoder_x.xml
new file mode 100644
index 000000000..e6eb03f11
--- /dev/null
+++ b/gr-trellis/grc/trellis_pccc_decoder_x.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+## PCCC Decoder
+###################################################
+ -->
+
+
+<block>
+ <name>PCCC Decoder</name>
+ <key>trellis_pccc_decoder_x</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.pccc_decoder_$(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)
+ </make>
+ <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>FSM 1</name>
+ <key>o_fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Initial State 1</name>
+ <key>o_init_state</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Final State 1</name>
+ <key>o_final_state</key>
+ <value>-1</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>FSM 2</name>
+ <key>i_fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Initial State 2</name>
+ <key>i_init_state</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Final State 2</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>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>
+ <sink>
+ <name>in</name>
+ <type>float</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>$out_type.io</type>
+ </source>
+ <doc>
+PCCC turbo Decoder.
+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_pccc_encoder_xx.xml b/gr-trellis/grc/trellis_pccc_encoder_xx.xml
new file mode 100644
index 000000000..6774f18d2
--- /dev/null
+++ b/gr-trellis/grc/trellis_pccc_encoder_xx.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+## PCCC Encoder
+###################################################
+ -->
+
+<block>
+ <name>PCCC Encoder</name>
+ <key>trellis_pccc_encoder_xx</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.pccc_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>FSM 1</name>
+ <key>o_fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Initial State 1</name>
+ <key>o_init_state</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>FSM 2</name>
+ <key>i_fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Initial State 2</name>
+ <key>i_init_state</key>
+ <value>0</value>
+ <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_permutation.xml b/gr-trellis/grc/trellis_permutation.xml
new file mode 100644
index 000000000..125a78d4d
--- /dev/null
+++ b/gr-trellis/grc/trellis_permutation.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Trellis Permutation
+###################################################
+ -->
+
+
+<block>
+ <name>Trellis Permutation</name>
+ <key>trellis_permutation</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.permutation($interleaver_size, $table, $syms_per_block, $type.size*$vlen)</make>
+ <param>
+ <name>Type</name>
+ <key>type</key>
+ <type>enum</type>
+ <option>
+ <name>Complex</name>
+ <key>complex</key>
+ <opt>size:gr.sizeof_gr_complex</opt>
+ </option>
+ <option>
+ <name>Float</name>
+ <key>float</key>
+ <opt>size:gr.sizeof_float</opt>
+ </option>
+ <option>
+ <name>Int</name>
+ <key>int</key>
+ <opt>size:gr.sizeof_int</opt>
+ </option>
+ <option>
+ <name>Short</name>
+ <key>short</key>
+ <opt>size:gr.sizeof_short</opt>
+ </option>
+ <option>
+ <name>Byte</name>
+ <key>byte</key>
+ <opt>size:gr.sizeof_char</opt>
+ </option>
+ </param>
+ <param>
+ <name>Interleaver Size</name>
+ <key>interleaver_size</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Table</name>
+ <key>table</key>
+ <type>int_vector</type>
+ </param>
+ <param>
+ <name>Symbols per Block</name>
+ <key>syms_per_block</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Vec Length</name>
+ <key>vlen</key>
+ <value>1</value>
+ <type>int</type>
+ </param>
+ <check>$vlen &gt; 0</check>
+ <sink>
+ <name>in</name>
+ <type>$type</type>
+ <vlen>$vlen</vlen>
+ </sink>
+ <source>
+ <name>out</name>
+ <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 000000000..81d800902
--- /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>0</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>0</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>
+SCCC turbo 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_decoder_x.xml b/gr-trellis/grc/trellis_sccc_decoder_x.xml
new file mode 100644
index 000000000..9fc24927b
--- /dev/null
+++ b/gr-trellis/grc/trellis_sccc_decoder_x.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+## SCCC Decoder
+###################################################
+ -->
+
+
+<block>
+ <name>SCCC Decoder</name>
+ <key>trellis_sccc_decoder_x</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.sccc_decoder_$(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)
+ </make>
+ <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>0</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>0</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>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>
+ <sink>
+ <name>in</name>
+ <type>float</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>$out_type.io</type>
+ </source>
+ <doc>
+SCCC turbo Decoder.
+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_sccc_encoder_xx.xml b/gr-trellis/grc/trellis_sccc_encoder_xx.xml
new file mode 100644
index 000000000..54d9c1e01
--- /dev/null
+++ b/gr-trellis/grc/trellis_sccc_encoder_xx.xml
@@ -0,0 +1,98 @@
+<?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>
+ <value>0</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>0</value>
+ <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
new file mode 100644
index 000000000..a39986a86
--- /dev/null
+++ b/gr-trellis/grc/trellis_siso_combined_f.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Trellis SISO Combined
+###################################################
+ -->
+
+
+<block>
+ <name>SISO Combo</name>
+ <key>trellis_siso_combined_f</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.siso_combined_f(trellis.fsm($fsm_args), $block_size, $init_state, $final_state, $a_post_in, $a_post_out, $siso_type, $dim, $table, $metric_type)</make>
+ <param>
+ <name>FSM Args</name>
+ <key>fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Block Size</name>
+ <key>block_size</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Initial State</name>
+ <key>init_state</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Final State</name>
+ <key>final_state</key>
+ <value>-1</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>A-posteriori In</name>
+ <key>a_post_in</key>
+ <type>enum</type>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ </option>
+ </param>
+ <param>
+ <name>A-posteriori Out</name>
+ <key>a_post_out</key>
+ <type>enum</type>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</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>Dimensionality</name>
+ <key>dim</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Constellation</name>
+ <key>table</key>
+ <type>real_vector</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>
+ <sink>
+ <name>in</name>
+ <type>float</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>float</type>
+ </source>
+ <doc>
+BCJR Algorithm combined with metric calculation. \
+The fsm arguments are passed directly to the trellis.fsm() constructor.
+ </doc>
+</block>
diff --git a/gr-trellis/grc/trellis_siso_f.xml b/gr-trellis/grc/trellis_siso_f.xml
new file mode 100644
index 000000000..e3fb502b3
--- /dev/null
+++ b/gr-trellis/grc/trellis_siso_f.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Trellis SISO
+###################################################
+ -->
+
+
+<block>
+ <name>SISO</name>
+ <key>trellis_siso_f</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.siso_f(trellis.fsm($fsm_args), $block_size, $init_state, $final_state, $a_post_in, $a_post_out, $siso_type)</make>
+ <param>
+ <name>FSM Args</name>
+ <key>fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Block Size</name>
+ <key>block_size</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Initial State</name>
+ <key>init_state</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Final State</name>
+ <key>final_state</key>
+ <value>-1</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>A-posteriori In</name>
+ <key>a_post_in</key>
+ <type>enum</type>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ </option>
+ </param>
+ <param>
+ <name>A-posteriori Out</name>
+ <key>a_post_out</key>
+ <type>enum</type>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</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>
+ <sink>
+ <name>in</name>
+ <type>float</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>float</type>
+ </source>
+ <doc>
+BCJR Algorithm. \
+The fsm arguments are passed directly to the trellis.fsm() constructor.
+ </doc>
+</block>
diff --git a/gr-trellis/grc/trellis_viterbi_combined_xx.xml b/gr-trellis/grc/trellis_viterbi_combined_xx.xml
new file mode 100644
index 000000000..200f07859
--- /dev/null
+++ b/gr-trellis/grc/trellis_viterbi_combined_xx.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Trellis Viterbi Combined
+###################################################
+ -->
+
+
+<block>
+ <name>Viterbi Combo</name>
+ <key>trellis_viterbi_combined_xx</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.viterbi_combined_$(type)$(out_type)(trellis.fsm($fsm_args), $block_size, $init_state, $final_state, $dim, $table, $metric_type)</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>
+ <option>
+ <name>Int</name>
+ <key>i</key>
+ <opt>io:int</opt>
+ <opt>table:int_vector</opt>
+ </option>
+ <option>
+ <name>Short</name>
+ <key>s</key>
+ <opt>io:short</opt>
+ <opt>table:int_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>FSM Args</name>
+ <key>fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Block Size</name>
+ <key>block_size</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Initial State</name>
+ <key>init_state</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Final State</name>
+ <key>final_state</key>
+ <value>-1</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>
+ <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_viterbi_x.xml b/gr-trellis/grc/trellis_viterbi_x.xml
new file mode 100644
index 000000000..d97e6707a
--- /dev/null
+++ b/gr-trellis/grc/trellis_viterbi_x.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Trellis Viterbi
+###################################################
+ -->
+
+
+<block>
+ <name>Viterbi</name>
+ <key>trellis_viterbi_x</key>
+ <category>Error Correction/Trellis</category>
+ <import>from gnuradio import trellis</import>
+ <make>trellis.viterbi_$(type)(trellis.fsm($fsm_args), $block_size, $init_state, $final_state)</make>
+ <param>
+ <name>Type</name>
+ <key>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>FSM Args</name>
+ <key>fsm_args</key>
+ <type>raw</type>
+ </param>
+ <param>
+ <name>Block Size</name>
+ <key>block_size</key>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Initial State</name>
+ <key>init_state</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Final State</name>
+ <key>final_state</key>
+ <value>-1</value>
+ <type>int</type>
+ </param>
+ <sink>
+ <name>in</name>
+ <type>float</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>$type.io</type>
+ </source>
+ <doc>
+Viterbi Decoder. \
+The fsm arguments are passed directly to the trellis.fsm() constructor.
+ </doc>
+</block>