summaryrefslogtreecommitdiff
path: root/gr-fec
diff options
context:
space:
mode:
authorTom Rondeau <tom@trondeau.com>2014-05-13 18:12:37 -0400
committerTom Rondeau <tom@trondeau.com>2014-05-17 17:45:15 -0400
commit2e26269d32a357688f6fea652137d9a1900c3a29 (patch)
tree33bbc1abfc5934b8de032eb5dbeaffdd28ec5ceb /gr-fec
parent5f0247e7cdb7e63e970f009530944e29fb99913c (diff)
fec: wip: cleaning up tagged decoder, rep code.
Diffstat (limited to 'gr-fec')
-rw-r--r--gr-fec/doc/fec.dox154
-rw-r--r--gr-fec/examples/ber_curve_gen.grc296
-rw-r--r--gr-fec/examples/fecapi_decoders.grc682
-rw-r--r--gr-fec/examples/fecapi_tagged_decoders.grc1099
-rw-r--r--gr-fec/lib/repetition_decoder_impl.cc2
-rw-r--r--gr-fec/lib/repetition_encoder_impl.cc2
-rw-r--r--gr-fec/lib/tagged_decoder_impl.cc9
-rw-r--r--gr-fec/lib/tagged_decoder_impl.h1
-rw-r--r--gr-fec/lib/tagged_encoder_impl.cc2
-rw-r--r--gr-fec/python/fec/extended_decoder.py7
-rw-r--r--gr-fec/python/fec/fec_test.py8
11 files changed, 1532 insertions, 730 deletions
diff --git a/gr-fec/doc/fec.dox b/gr-fec/doc/fec.dox
index 3f8850e589..eddf1b1161 100644
--- a/gr-fec/doc/fec.dox
+++ b/gr-fec/doc/fec.dox
@@ -22,8 +22,112 @@ by using:
\endcode
+\section fec_using Using the FEC Encoders and Decoders
+
+The FECAPI consists of two layers, the coding blocks themselves and
+the coder objects. The coding blocks are the encoders or decoders that
+fit into the GNU Radio flowgraph and act as shells to move data to and
+from the coder objects. It is in the objects that the actual
+coding/decoding gets done. The coding blocks use the API of the coder
+objects to interact with the scheduler and set up the input/output
+item buffers that move data between blocks.
+
+The gr::fec::encoder block is a relatively simple wrapper for the
+encoding objects. It uses the encoding object information about the
+input/output sizes and input/output item sizes to set up the
+interaction with the scheduler. Typically, a coder will add redundancy
+to the stream making the output longer by some amount than the input
+stream. This block simply takes in an encoder object, specifically an
+object that derives from gr::fec::generic_encoder. It also takes in
+the input and output items sizes that the encoder will expect, which
+we can just ask the encoder for. Typically, the encodes expect
+unpacked bytes in and unpacked bytes out.
+
+The gr::fec::decoder block is similarly simple to wrap the decoding
+objects. It uses the decoding object information about the
+input/output sizes and input/output item sizes to set up the
+interaction with the scheduler. Since a decoder typically uses the
+redundancy from the input stream to correct for errors, the input
+stream will be longer than the output stream by the rate of the
+code. This block simply takes in an decoder object, specifically an
+object that derives from gr::fec::generic_decoder. It also takes in
+the input and output items sizes that the decoder will expect, which
+we can just ask the encoder for. The decoders may take a float input
+or a byte. The byte may be a hard decision or a quantized soft
+decision, depending on how the decoder object behaves.
+
+Normally, though, we don't work directly with the encoder() or
+decoder() blocks but a wrapper around those blocks. GNU Radio's gr-fec
+package comes with Python classes, fec.extended_encoder and
+fec.extended_decoder, to make things easier. For one thing, these
+extended hier_block2 blocks take care of the puncturing and
+depuncturing operations often found in FEC codes. The other thing that
+these blocks do for us is reads the API of the encoder/decoder objects
+to properly convert the data in or out, depending on how the coding
+object works.
+
+For instance, a generic_decoder takes in floating point values (which
+should be soft decisions). However, a decoder might instead want to
+work on 8-bit quantized soft decisions and so expects unsigned
+chars. Specifying 'uchar' as the
+gr::fec::generic_decoder::get_input_conversion() of the decoder block tells the
+fec.extended_decoder to convert the float to a byte.
+
+In GRC, we would add an "FEC Extended Encoder" to our transmitter or
+an "FEC Extended Decoder" to the receiver. We would then use one of
+the encoder or decoder FEC variable blocks to define the parameters of
+the particular code we want to use. We can find these codes under the
+[Error Coding] category in GRC. The encoders are found under
+[Encoders] and similarly the decoders under the [Decoders]
+categories. Putting these onto the canvas creates a variable that we
+can then pass to the extended encoder or decoder blocks.
+
+Most of the parameters of the encoder and decoder definitions should
+be fairly obvious based on the type of code. See the documentation for
+each coding object for more details. In the following section \ref
+fec_parallelism, we explain the Parallelism and Dimension properties.
+
+
\section fec_coding_vars Encoding/Decoding Variables
+GNU Radio currently has a minor subset of coders available:
+
+Coders:
+
+\li gr::fec::code::dummy_encoder
+\li gr::fec::code::repetition_encoder
+\li gr::fec::code::cc_encoder
+\li gr::fec::code::ccsds_encoder
+
+Decoders:
+\li gr::fec::code::dummy_decoder
+\li gr::fec::code::repetition_decoder
+\li gr::fec::code::cc_decoder
+
+
+When building a new FECAPI encoder or decoder, the dummy
+encoder/decoder block would be a good place to start. This coding set
+does no processing on the data. For the encoder, each bit is simply
+passed through directly. For the dummy decoder, the input data are
+floats, so -1's become 0 and 1's stay as 1, but nothing else is done
+to the data. Mainly, these blocks are used for references and to make
+it easy to compare implementations with and without codes by easily
+dropping in these objects instead of restructuring the entire
+flowgraph. The ber_curve_gen.grc example file uses the dummy codes to
+show the curve to compare against the actual codes.
+
+Although mentioned in the convolutional coder and decoder classes, it
+is worth another mention. The cc_encoder is a generic convolutional
+encoder that can take any value of K, rate, and polynomials to encode
+a data stream. However, the cc_decoder is not as general, even though
+it is technically parameterized as such. The cc_decoder block
+currently <i>only</i> uses K=7, rate=2, and two polynomials (because
+the rate is two). We can, in fact, alter the polynomials, but a
+default of [109, 79] is typically. Eventually, we will make this block
+more generic for different rates and constraint lengths and take this
+particular code implementation as the set CCSDS decoder, much like we
+have the ccsds_encoder class.
+
\subsection fec_parallelism Parallelism
The code variables in GNU Radio Companion have the ability to create
@@ -41,7 +145,7 @@ of coder blocks. The code that accepts these variables must understand
how to handle the parallelism. Most applications would set this to 1.
The standard fec.extended_encoder ("FEC Extended Encoder" in GRC) and
-fec.exended_decoder ("FEC Extended Decoder" in GRC) can handle a
+fec.extended_decoder ("FEC Extended Decoder" in GRC) can handle a
Parallelism of 1. They accept a list of coder variables as defined by
Dimension 1 and can multithread the application based on the
"Threading Type" setting:
@@ -78,4 +182,52 @@ simultaneously. Dimension 2 in this case allows the same concept of
parallelism discussed above with the <b>None</b>, <b>Ordinary</b>, and
<b>Capillary</b> models of threading.
+
+\section fec_api The API of the FECAPI
+
+The FECAPI defined by the parent generic_encoder and generic_decoder
+classes defines a set of virtual functions, some pure virtual, to
+allow the encoders/decoders to interact with the GNU Radio blocks. See
+the associated documentation of the generic_encoder and
+generic_decoder classes to know more about each of the API functions,
+some of which a child class is <i>required</i> to implement.
+
+The functions of the encoder and decoder are:
+
+\li double gr::fec::generic_encoder::rate()
+\li int gr::fec::generic_encoder::get_input_size()
+\li int gr::fec::generic_encoder::get_output_size()
+\li int gr::fec::generic_encoder::get_history()
+\li float gr::fec::generic_encoder::get_shift()
+\li const char* gr::fec::generic_encoder::get_input_conversion()
+\li const char* gr::fec::generic_encoder::get_output_conversion()
+\li bool gr::fec::generic_encoder::set_frame_size(unsigned int frame_size)
+
+Note: there is no get_input_item_size (or output) as the encoders
+always expect to work on bits.
+
+\li double gr::fec::generic_decoder::rate()
+\li int gr::fec::generic_decoder::get_input_size()
+\li int gr::fec::generic_decoder::get_output_size()
+\li int gr::fec::generic_decoder::get_history()
+\li float gr::fec::generic_decoder::get_shift()
+\li int gr::fec::generic_decoder::get_input_item_size()
+\li int gr::fec::generic_decoder::get_output_item_size()
+\li const char* gr::fec::generic_decoder::get_input_conversion()
+\li const char* gr::fec::generic_decoder::get_output_conversion()
+\li bool gr::fec::generic_decoder::set_frame_size(unsigned int frame_size)
+
+Whenever an FECAPI object refers to the frame size, it always means
+the number of bits in the uncoded frame. This means the number of bits
+going into an encoder and the number of bits coming out of a decoder.
+
+\section fec_examples FEC Examples
+
+\li ber_curve_gen.grc
+\li ber_test.grc
+\li fecapi_decoders.grc
+\li fecapi_encoders.grc
+\li fecapi_tagged_decoders.grc
+\li fecapi_tagged_encoders.grc
+
*/
diff --git a/gr-fec/examples/ber_curve_gen.grc b/gr-fec/examples/ber_curve_gen.grc
index dfc57b3bf4..455dca4cf5 100644
--- a/gr-fec/examples/ber_curve_gen.grc
+++ b/gr-fec/examples/ber_curve_gen.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Tue May 13 14:23:51 2014</timestamp>
+ <timestamp>Tue May 13 19:32:00 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -68,7 +68,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>esno_0</value>
+ <value>samp_rate_0</value>
</param>
<param>
<key>_enabled</key>
@@ -76,7 +76,7 @@
</param>
<param>
<key>value</key>
- <value>numpy.arange(0, 8, .5) </value>
+ <value>35000000</value>
</param>
<param>
<key>alias</key>
@@ -84,7 +84,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(13, 193)</value>
+ <value>(12, 99)</value>
</param>
<param>
<key>_rotation</key>
@@ -95,7 +95,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>framebits</value>
+ <value>k</value>
</param>
<param>
<key>_enabled</key>
@@ -103,7 +103,7 @@
</param>
<param>
<key>value</key>
- <value>4096</value>
+ <value>7</value>
</param>
<param>
<key>alias</key>
@@ -111,7 +111,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(160, 101)</value>
+ <value>(16, 370)</value>
</param>
<param>
<key>_rotation</key>
@@ -122,7 +122,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>rate</value>
+ <value>polys</value>
</param>
<param>
<key>_enabled</key>
@@ -130,7 +130,7 @@
</param>
<param>
<key>value</key>
- <value>2</value>
+ <value>[79, 109]</value>
</param>
<param>
<key>alias</key>
@@ -138,7 +138,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(249, 373)</value>
+ <value>(110, 371)</value>
</param>
<param>
<key>_rotation</key>
@@ -149,7 +149,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>polys</value>
+ <value>rate</value>
</param>
<param>
<key>_enabled</key>
@@ -157,7 +157,7 @@
</param>
<param>
<key>value</key>
- <value>[79, 109]</value>
+ <value>2</value>
</param>
<param>
<key>alias</key>
@@ -165,7 +165,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(110, 371)</value>
+ <value>(249, 373)</value>
</param>
<param>
<key>_rotation</key>
@@ -176,7 +176,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>k</value>
+ <value>framebits</value>
</param>
<param>
<key>_enabled</key>
@@ -184,7 +184,7 @@
</param>
<param>
<key>value</key>
- <value>7</value>
+ <value>4096</value>
</param>
<param>
<key>alias</key>
@@ -192,7 +192,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(16, 370)</value>
+ <value>(160, 101)</value>
</param>
<param>
<key>_rotation</key>
@@ -203,7 +203,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>samp_rate_0</value>
+ <value>esno_0</value>
</param>
<param>
<key>_enabled</key>
@@ -211,7 +211,7 @@
</param>
<param>
<key>value</key>
- <value>35000000</value>
+ <value>numpy.arange(0, 8, .5) </value>
</param>
<param>
<key>alias</key>
@@ -219,7 +219,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(12, 99)</value>
+ <value>(13, 193)</value>
</param>
<param>
<key>_rotation</key>
@@ -605,6 +605,134 @@
<bus_source>1</bus_source>
</block>
<block>
+ <key>fec_bercurve_generator</key>
+ <param>
+ <key>id</key>
+ <value>fec_bercurve_generator_0_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>esno</key>
+ <value>esno_0</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>samp_rate_0</value>
+ </param>
+ <param>
+ <key>encoder_list</key>
+ <value>enc_rep</value>
+ </param>
+ <param>
+ <key>decoder_list</key>
+ <value>dec_rep</value>
+ </param>
+ <param>
+ <key>puncpat</key>
+ <value>'11'</value>
+ </param>
+ <param>
+ <key>threadtype</key>
+ <value>"capillary"</value>
+ </param>
+ <param>
+ <key>seed</key>
+ <value>-100</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(481, 132)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <bus_source>1</bus_source>
+ </block>
+ <block>
+ <key>fec_bercurve_generator</key>
+ <param>
+ <key>id</key>
+ <value>fec_bercurve_generator_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>esno</key>
+ <value>esno_0</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>samp_rate_0</value>
+ </param>
+ <param>
+ <key>encoder_list</key>
+ <value>enc_cc</value>
+ </param>
+ <param>
+ <key>decoder_list</key>
+ <value>dec_cc</value>
+ </param>
+ <param>
+ <key>puncpat</key>
+ <value>'11'</value>
+ </param>
+ <param>
+ <key>threadtype</key>
+ <value>"capillary"</value>
+ </param>
+ <param>
+ <key>seed</key>
+ <value>-100</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(481, 260)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <bus_source>1</bus_source>
+ </block>
+ <block>
<key>qtgui_bercurve_sink</key>
<param>
<key>id</key>
@@ -624,7 +752,7 @@
</param>
<param>
<key>berlimit</key>
- <value>-15</value>
+ <value>-10</value>
</param>
<param>
<key>num_curves</key>
@@ -908,134 +1036,6 @@
</param>
<bus_sink>1</bus_sink>
</block>
- <block>
- <key>fec_bercurve_generator</key>
- <param>
- <key>id</key>
- <value>fec_bercurve_generator_0_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>esno</key>
- <value>esno_0</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>samp_rate_0</value>
- </param>
- <param>
- <key>encoder_list</key>
- <value>enc_rep</value>
- </param>
- <param>
- <key>decoder_list</key>
- <value>dec_rep</value>
- </param>
- <param>
- <key>puncpat</key>
- <value>'11'</value>
- </param>
- <param>
- <key>threadtype</key>
- <value>"capillary"</value>
- </param>
- <param>
- <key>seed</key>
- <value>-100</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(481, 132)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- <bus_source>1</bus_source>
- </block>
- <block>
- <key>fec_bercurve_generator</key>
- <param>
- <key>id</key>
- <value>fec_bercurve_generator_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>esno</key>
- <value>esno_0</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>samp_rate_0</value>
- </param>
- <param>
- <key>encoder_list</key>
- <value>enc_cc</value>
- </param>
- <param>
- <key>decoder_list</key>
- <value>dec_cc</value>
- </param>
- <param>
- <key>puncpat</key>
- <value>'11'</value>
- </param>
- <param>
- <key>threadtype</key>
- <value>"capillary"</value>
- </param>
- <param>
- <key>seed</key>
- <value>-100</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(481, 260)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- <bus_source>1</bus_source>
- </block>
<connection>
<source_block_id>fec_bercurve_generator_0_0_0</source_block_id>
<sink_block_id>qtgui_bercurve_sink_0</sink_block_id>
diff --git a/gr-fec/examples/fecapi_decoders.grc b/gr-fec/examples/fecapi_decoders.grc
index 41692d38fb..403eca017e 100644
--- a/gr-fec/examples/fecapi_decoders.grc
+++ b/gr-fec/examples/fecapi_decoders.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Tue May 13 17:26:19 2014</timestamp>
+ <timestamp>Tue May 13 17:44:52 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -798,49 +798,6 @@
</param>
</block>
<block>
- <key>blocks_char_to_float</key>
- <param>
- <key>id</key>
- <value>blocks_char_to_float_0_0_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>scale</key>
- <value>1</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1466, 435)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>fec_extended_decoder</key>
<param>
<key>id</key>
@@ -943,49 +900,6 @@
</param>
</block>
<block>
- <key>blocks_char_to_float</key>
- <param>
- <key>id</key>
- <value>blocks_char_to_float_0_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>scale</key>
- <value>1</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1465, 584)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>fec_extended_decoder</key>
<param>
<key>id</key>
@@ -1147,57 +1061,6 @@
</param>
</block>
<block>
- <key>blocks_delay</key>
- <param>
- <key>id</key>
- <value>blocks_delay_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>False</value>
- </param>
- <param>
- <key>type</key>
- <value>float</value>
- </param>
- <param>
- <key>delay</key>
- <value>32</value>
- </param>
- <param>
- <key>num_ports</key>
- <value>1</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(695, 184)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>blocks_vector_source_x</key>
<param>
<key>id</key>
@@ -1606,6 +1469,517 @@
</param>
</block>
<block>
+ <key>blocks_char_to_float</key>
+ <param>
+ <key>id</key>
+ <value>blocks_char_to_float_0_0_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>scale</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1466, 435)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_char_to_float</key>
+ <param>
+ <key>id</key>
+ <value>blocks_char_to_float_0_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>scale</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1465, 584)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_sub_xx</key>
+ <param>
+ <key>id</key>
+ <value>blocks_sub_xx_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>float</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1836, 569)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_abs_xx</key>
+ <param>
+ <key>id</key>
+ <value>blocks_abs_xx_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>float</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1434, 834)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>qtgui_time_sink_x</key>
+ <param>
+ <key>id</key>
+ <value>qtgui_time_sink_x_1</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>float</value>
+ </param>
+ <param>
+ <key>name</key>
+ <value>QT GUI Plot</value>
+ </param>
+ <param>
+ <key>size</key>
+ <value>1024</value>
+ </param>
+ <param>
+ <key>srate</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
+ <key>autoscale</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>ymin</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>ymax</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>nconnections</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>update_time</key>
+ <value>0.01</value>
+ </param>
+ <param>
+ <key>entags</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>gui_hint</key>
+ <value></value>
+ </param>
+ <param>
+ <key>tr_mode</key>
+ <value>qtgui.TRIG_MODE_NORM</value>
+ </param>
+ <param>
+ <key>tr_slope</key>
+ <value>qtgui.TRIG_SLOPE_POS</value>
+ </param>
+ <param>
+ <key>tr_level</key>
+ <value>0.1</value>
+ </param>
+ <param>
+ <key>tr_delay</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>tr_chan</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>tr_tag</key>
+ <value>""</value>
+ </param>
+ <param>
+ <key>label1</key>
+ <value></value>
+ </param>
+ <param>
+ <key>width1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>color1</key>
+ <value>"blue"</value>
+ </param>
+ <param>
+ <key>style1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>marker1</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>alpha1</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>label2</key>
+ <value></value>
+ </param>
+ <param>
+ <key>width2</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>color2</key>
+ <value>"red"</value>
+ </param>
+ <param>
+ <key>style2</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>marker2</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>alpha2</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>label3</key>
+ <value></value>
+ </param>
+ <param>
+ <key>width3</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>color3</key>
+ <value>"green"</value>
+ </param>
+ <param>
+ <key>style3</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>marker3</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>alpha3</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>label4</key>
+ <value></value>
+ </param>
+ <param>
+ <key>width4</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>color4</key>
+ <value>"black"</value>
+ </param>
+ <param>
+ <key>style4</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>marker4</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>alpha4</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>label5</key>
+ <value></value>
+ </param>
+ <param>
+ <key>width5</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>color5</key>
+ <value>"cyan"</value>
+ </param>
+ <param>
+ <key>style5</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>marker5</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>alpha5</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>label6</key>
+ <value></value>
+ </param>
+ <param>
+ <key>width6</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>color6</key>
+ <value>"magenta"</value>
+ </param>
+ <param>
+ <key>style6</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>marker6</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>alpha6</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>label7</key>
+ <value></value>
+ </param>
+ <param>
+ <key>width7</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>color7</key>
+ <value>"yellow"</value>
+ </param>
+ <param>
+ <key>style7</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>marker7</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>alpha7</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>label8</key>
+ <value></value>
+ </param>
+ <param>
+ <key>width8</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>color8</key>
+ <value>"dark red"</value>
+ </param>
+ <param>
+ <key>style8</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>marker8</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>alpha8</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>label9</key>
+ <value></value>
+ </param>
+ <param>
+ <key>width9</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>color9</key>
+ <value>"dark green"</value>
+ </param>
+ <param>
+ <key>style9</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>marker9</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>alpha9</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>label10</key>
+ <value></value>
+ </param>
+ <param>
+ <key>width10</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>color10</key>
+ <value>"blue"</value>
+ </param>
+ <param>
+ <key>style10</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>marker10</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>alpha10</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1587, 793)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
<key>qtgui_time_sink_x</key>
<param>
<key>id</key>
@@ -1649,7 +2023,7 @@
</param>
<param>
<key>update_time</key>
- <value>0.10</value>
+ <value>0.01</value>
</param>
<param>
<key>entags</key>
@@ -1971,12 +2345,6 @@
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_char_to_float_0_1</source_block_id>
- <sink_block_id>blocks_delay_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
<source_block_id>digital_map_bb_0_0</source_block_id>
<sink_block_id>blocks_char_to_float_0</sink_block_id>
<source_key>0</source_key>
@@ -2084,4 +2452,28 @@
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
+ <connection>
+ <source_block_id>blocks_char_to_float_0_0_0</source_block_id>
+ <sink_block_id>blocks_sub_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_char_to_float_0_0</source_block_id>
+ <sink_block_id>blocks_sub_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>1</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_sub_xx_0</source_block_id>
+ <sink_block_id>blocks_abs_xx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_abs_xx_0</source_block_id>
+ <sink_block_id>qtgui_time_sink_x_1</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
</flow_graph>
diff --git a/gr-fec/examples/fecapi_tagged_decoders.grc b/gr-fec/examples/fecapi_tagged_decoders.grc
index 977970985b..8d038e1ee5 100644
--- a/gr-fec/examples/fecapi_tagged_decoders.grc
+++ b/gr-fec/examples/fecapi_tagged_decoders.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Tue May 13 16:28:59 2014</timestamp>
+ <timestamp>Tue May 13 18:15:54 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -68,15 +68,15 @@
<key>variable</key>
<param>
<key>id</key>
- <value>samp_rate</value>
+ <value>polys</value>
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>False</value>
</param>
<param>
<key>value</key>
- <value>50000</value>
+ <value>[79, 109]</value>
</param>
<param>
<key>alias</key>
@@ -84,7 +84,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(9, 95)</value>
+ <value>(368, 684)</value>
</param>
<param>
<key>_rotation</key>
@@ -95,7 +95,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>length_tag</value>
+ <value>rate</value>
</param>
<param>
<key>_enabled</key>
@@ -103,7 +103,7 @@
</param>
<param>
<key>value</key>
- <value>"packet_len"</value>
+ <value>2</value>
</param>
<param>
<key>alias</key>
@@ -111,7 +111,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(202, 112)</value>
+ <value>(410, 599)</value>
</param>
<param>
<key>_rotation</key>
@@ -122,7 +122,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>k</value>
+ <value>polys</value>
</param>
<param>
<key>_enabled</key>
@@ -130,7 +130,7 @@
</param>
<param>
<key>value</key>
- <value>7</value>
+ <value>[109, 79]</value>
</param>
<param>
<key>alias</key>
@@ -138,7 +138,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(352, 1017)</value>
+ <value>(226, 687)</value>
</param>
<param>
<key>_rotation</key>
@@ -149,7 +149,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>polys</value>
+ <value>k</value>
</param>
<param>
<key>_enabled</key>
@@ -157,7 +157,7 @@
</param>
<param>
<key>value</key>
- <value>[109, 79]</value>
+ <value>7</value>
</param>
<param>
<key>alias</key>
@@ -165,7 +165,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(269, 1102)</value>
+ <value>(309, 602)</value>
</param>
<param>
<key>_rotation</key>
@@ -176,15 +176,15 @@
<key>variable</key>
<param>
<key>id</key>
- <value>polys</value>
+ <value>length_tag</value>
</param>
<param>
<key>_enabled</key>
- <value>False</value>
+ <value>True</value>
</param>
<param>
<key>value</key>
- <value>[79, 109]</value>
+ <value>"packet_len"</value>
</param>
<param>
<key>alias</key>
@@ -192,7 +192,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(411, 1099)</value>
+ <value>(202, 112)</value>
</param>
<param>
<key>_rotation</key>
@@ -203,7 +203,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>rate</value>
+ <value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
@@ -211,7 +211,7 @@
</param>
<param>
<key>value</key>
- <value>2</value>
+ <value>50000</value>
</param>
<param>
<key>alias</key>
@@ -219,7 +219,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(453, 1014)</value>
+ <value>(9, 95)</value>
</param>
<param>
<key>_rotation</key>
@@ -227,38 +227,77 @@
</param>
</block>
<block>
- <key>blocks_unpack_k_bits_bb</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>blocks_unpack_k_bits_bb_0_0</value>
+ <value>puncpat</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>k</key>
- <value>8</value>
+ <key>label</key>
+ <value></value>
</param>
<param>
- <key>alias</key>
+ <key>value</key>
+ <value>'11'</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>string</value>
+ </param>
+ <param>
+ <key>short_id</key>
<value></value>
</param>
<param>
- <key>affinity</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(248, 9)</value>
</param>
<param>
- <key>maxoutbuf</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>parameter</key>
+ <param>
+ <key>id</key>
+ <value>frame_size</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>Frame Size</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>30</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>intx</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value></value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
<param>
<key>_coordinate</key>
- <value>(359, 341)</value>
+ <value>(484, 10)</value>
</param>
<param>
<key>_rotation</key>
@@ -266,34 +305,57 @@
</param>
</block>
<block>
- <key>blocks_vector_source_x</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>blocks_vector_source_x_0_1_0</value>
+ <value>MTU</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>label</key>
+ <value>MTU</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>1000</value>
+ </param>
+ <param>
<key>type</key>
- <value>byte</value>
+ <value>intx</value>
</param>
<param>
- <key>vector</key>
- <value>4*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value>
+ <key>short_id</key>
+ <value></value>
</param>
<param>
- <key>tags</key>
- <value>[]</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>repeat</key>
+ <key>_coordinate</key>
+ <value>(365, 9)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_unpack_k_bits_bb</key>
+ <param>
+ <key>id</key>
+ <value>blocks_unpack_k_bits_bb_0_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>k</key>
+ <value>8</value>
</param>
<param>
<key>alias</key>
@@ -313,7 +375,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(123, 218)</value>
+ <value>(99, 404)</value>
</param>
<param>
<key>_rotation</key>
@@ -364,73 +426,62 @@
</param>
<param>
<key>_coordinate</key>
- <value>(100, 341)</value>
+ <value>(358, 404)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
- <key>blocks_ctrlport_monitor_performance</key>
+ <key>analog_random_source_x</key>
<param>
<key>id</key>
- <value>blocks_ctrlport_monitor_performance_0</value>
+ <value>analog_random_source_x_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
- <key>en</key>
- <value>True</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(651, 15)</value>
+ <key>min</key>
+ <value>0</value>
</param>
<param>
- <key>_rotation</key>
- <value>0</value>
+ <key>max</key>
+ <value>256</value>
</param>
- </block>
- <block>
- <key>parameter</key>
<param>
- <key>id</key>
- <value>puncpat</value>
+ <key>num_samps</key>
+ <value>1000</value>
</param>
<param>
- <key>_enabled</key>
+ <key>repeat</key>
<value>True</value>
</param>
<param>
- <key>label</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>value</key>
- <value>'11'</value>
- </param>
- <param>
- <key>type</key>
- <value>string</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>short_id</key>
- <value></value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(248, 9)</value>
+ <value>(30, 271)</value>
</param>
<param>
<key>_rotation</key>
@@ -438,77 +489,54 @@
</param>
</block>
<block>
- <key>parameter</key>
+ <key>blocks_vector_source_x</key>
<param>
<key>id</key>
- <value>frame_size</value>
+ <value>blocks_vector_source_x_0_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>Frame Size</value>
- </param>
- <param>
- <key>value</key>
- <value>30</value>
- </param>
- <param>
<key>type</key>
- <value>intx</value>
- </param>
- <param>
- <key>short_id</key>
- <value></value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
+ <value>byte</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(484, 10)</value>
+ <key>vector</key>
+ <value>4*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value>
</param>
<param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>parameter</key>
- <param>
- <key>id</key>
- <value>MTU</value>
+ <key>tags</key>
+ <value>[]</value>
</param>
<param>
- <key>_enabled</key>
+ <key>repeat</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>MTU</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>value</key>
- <value>1000</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>type</key>
- <value>intx</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>short_id</key>
- <value></value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(365, 9)</value>
+ <value>(271, 211)</value>
</param>
<param>
<key>_rotation</key>
@@ -559,7 +587,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(595, 331)</value>
+ <value>(281, 473)</value>
</param>
<param>
<key>_rotation</key>
@@ -567,77 +595,30 @@
</param>
</block>
<block>
- <key>analog_random_source_x</key>
+ <key>fec_extended_encoder</key>
<param>
<key>id</key>
- <value>analog_random_source_x_0</value>
+ <value>fec_extended_encoder_2</value>
</param>
<param>
<key>_enabled</key>
- <value>False</value>
- </param>
- <param>
- <key>type</key>
- <value>byte</value>
- </param>
- <param>
- <key>min</key>
- <value>0</value>
- </param>
- <param>
- <key>max</key>
- <value>256</value>
- </param>
- <param>
- <key>num_samps</key>
- <value>1000</value>
- </param>
- <param>
- <key>repeat</key>
<value>True</value>
</param>
<param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(387, 203)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>180</value>
- </param>
- </block>
- <block>
- <key>blocks_char_to_float</key>
- <param>
- <key>id</key>
- <value>blocks_char_to_float_1_0</value>
+ <key>encoder_list</key>
+ <value>enc_cc</value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>threadtype</key>
+ <value>none</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>puncpat</key>
+ <value>puncpat</value>
</param>
<param>
- <key>scale</key>
- <value>1</value>
+ <key>lentagname</key>
+ <value>length_tag</value>
</param>
<param>
<key>alias</key>
@@ -657,7 +638,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1242, 536)</value>
+ <value>(705, 453)</value>
</param>
<param>
<key>_rotation</key>
@@ -668,7 +649,7 @@
<key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>blocks_char_to_float_1</value>
+ <value>blocks_char_to_float_1_2</value>
</param>
<param>
<key>_enabled</key>
@@ -700,7 +681,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(678, 536)</value>
+ <value>(1235, 186)</value>
</param>
<param>
<key>_rotation</key>
@@ -711,7 +692,7 @@
<key>digital_map_bb</key>
<param>
<key>id</key>
- <value>digital_map_bb_0</value>
+ <value>digital_map_bb_0_1</value>
</param>
<param>
<key>_enabled</key>
@@ -739,7 +720,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(493, 536)</value>
+ <value>(1050, 186)</value>
</param>
<param>
<key>_rotation</key>
@@ -747,22 +728,30 @@
</param>
</block>
<block>
- <key>blocks_char_to_float</key>
+ <key>fec_extended_encoder</key>
<param>
<key>id</key>
- <value>blocks_char_to_float_1_0_0</value>
+ <value>fec_extended_encoder_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>encoder_list</key>
+ <value>enc_dummy</value>
</param>
<param>
- <key>scale</key>
- <value>1</value>
+ <key>threadtype</key>
+ <value>none</value>
+ </param>
+ <param>
+ <key>puncpat</key>
+ <value>puncpat</value>
+ </param>
+ <param>
+ <key>lentagname</key>
+ <value>length_tag</value>
</param>
<param>
<key>alias</key>
@@ -782,7 +771,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1231, 689)</value>
+ <value>(705, 155)</value>
</param>
<param>
<key>_rotation</key>
@@ -793,7 +782,7 @@
<key>fec_extended_decoder</key>
<param>
<key>id</key>
- <value>fec_extended_decoder_0_0_0</value>
+ <value>fec_extended_decoder_2</value>
</param>
<param>
<key>_enabled</key>
@@ -841,7 +830,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(899, 647)</value>
+ <value>(1455, 443)</value>
</param>
<param>
<key>_rotation</key>
@@ -849,22 +838,30 @@
</param>
</block>
<block>
- <key>blocks_char_to_float</key>
+ <key>fec_extended_encoder</key>
<param>
<key>id</key>
- <value>blocks_char_to_float_1_1</value>
+ <value>fec_extended_encoder_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>encoder_list</key>
+ <value>enc_rep</value>
</param>
<param>
- <key>scale</key>
- <value>1</value>
+ <key>threadtype</key>
+ <value>none</value>
+ </param>
+ <param>
+ <key>puncpat</key>
+ <value>puncpat</value>
+ </param>
+ <param>
+ <key>lentagname</key>
+ <value>length_tag</value>
</param>
<param>
<key>alias</key>
@@ -884,7 +881,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(685, 689)</value>
+ <value>(704, 301)</value>
</param>
<param>
<key>_rotation</key>
@@ -895,7 +892,7 @@
<key>digital_map_bb</key>
<param>
<key>id</key>
- <value>digital_map_bb_0_0</value>
+ <value>digital_map_bb_0</value>
</param>
<param>
<key>_enabled</key>
@@ -923,7 +920,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(502, 689)</value>
+ <value>(1049, 332)</value>
</param>
<param>
<key>_rotation</key>
@@ -931,50 +928,42 @@
</param>
</block>
<block>
- <key>variable_ccsds_encoder_def</key>
+ <key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>enc_ccsds</value>
+ <value>blocks_char_to_float_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>"ok"</value>
- </param>
- <param>
- <key>ndim</key>
+ <key>vlen</key>
<value>1</value>
</param>
<param>
- <key>dim1</key>
+ <key>scale</key>
<value>1</value>
</param>
<param>
- <key>dim2</key>
- <value>4</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>framebits</key>
- <value>frame_size*8</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>state_start</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>mode</key>
- <value>fec.CC_STREAMING</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1172, 822)</value>
+ <value>(1234, 332)</value>
</param>
<param>
<key>_rotation</key>
@@ -982,46 +971,42 @@
</param>
</block>
<block>
- <key>variable_repetition_encoder_def</key>
+ <key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>enc_rep</value>
+ <value>blocks_char_to_float_1_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>"ok"</value>
- </param>
- <param>
- <key>ndim</key>
+ <key>vlen</key>
<value>1</value>
</param>
<param>
- <key>dim1</key>
+ <key>scale</key>
<value>1</value>
</param>
<param>
- <key>dim2</key>
- <value>1</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>framebits</key>
- <value>MTU*8</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>rep</key>
- <value>3</value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(874, 869)</value>
+ <value>(1241, 483)</value>
</param>
<param>
<key>_rotation</key>
@@ -1029,50 +1014,38 @@
</param>
</block>
<block>
- <key>variable_repetition_decoder_def</key>
+ <key>digital_map_bb</key>
<param>
<key>id</key>
- <value>dec_rep</value>
+ <value>digital_map_bb_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>"ok"</value>
- </param>
- <param>
- <key>ndim</key>
- <value>1</value>
- </param>
- <param>
- <key>dim1</key>
- <value>1</value>
- </param>
- <param>
- <key>dim2</key>
- <value>1</value>
+ <key>map</key>
+ <value>[-1, 1]</value>
</param>
<param>
- <key>framebits</key>
- <value>MTU*8</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>rep</key>
- <value>3</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>prob</key>
- <value>0.5</value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(874, 1011)</value>
+ <value>(1058, 485)</value>
</param>
<param>
<key>_rotation</key>
@@ -1080,10 +1053,10 @@
</param>
</block>
<block>
- <key>variable_ccsds_decoder_def</key>
+ <key>fec_extended_decoder</key>
<param>
<key>id</key>
- <value>dec_ccsds</value>
+ <value>fec_extended_decoder_1</value>
</param>
<param>
<key>_enabled</key>
@@ -1091,43 +1064,47 @@
</param>
<param>
<key>value</key>
- <value>"ok"</value>
+ <value>fec_extended_decoder</value>
</param>
<param>
- <key>ndim</key>
- <value>1</value>
+ <key>decoder_list</key>
+ <value>dec_rep</value>
</param>
<param>
- <key>dim1</key>
- <value>1</value>
+ <key>threadtype</key>
+ <value>none</value>
</param>
<param>
- <key>dim2</key>
- <value>4</value>
+ <key>ann</key>
+ <value>None</value>
</param>
<param>
- <key>framebits</key>
- <value>frame_size*8</value>
+ <key>puncpat</key>
+ <value>puncpat</value>
</param>
<param>
- <key>state_start</key>
- <value>0</value>
+ <key>lentagname</key>
+ <value>length_tag</value>
</param>
<param>
- <key>end_state</key>
- <value>-1</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>mode</key>
- <value>fec.CC_STREAMING</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1171, 988)</value>
+ <value>(1454, 290)</value>
</param>
<param>
<key>_rotation</key>
@@ -1135,10 +1112,10 @@
</param>
</block>
<block>
- <key>variable_cc_encoder_def</key>
+ <key>fec_extended_decoder</key>
<param>
<key>id</key>
- <value>enc_cc</value>
+ <value>fec_extended_decoder_0</value>
</param>
<param>
<key>_enabled</key>
@@ -1146,51 +1123,47 @@
</param>
<param>
<key>value</key>
- <value>"ok"</value>
+ <value>fec_extended_decoder</value>
</param>
<param>
- <key>ndim</key>
- <value>1</value>
+ <key>decoder_list</key>
+ <value>dec_dummy</value>
</param>
<param>
- <key>dim1</key>
- <value>1</value>
+ <key>threadtype</key>
+ <value>none</value>
</param>
<param>
- <key>dim2</key>
- <value>1</value>
+ <key>ann</key>
+ <value>None</value>
</param>
<param>
- <key>framebits</key>
- <value>MTU*8</value>
+ <key>puncpat</key>
+ <value>puncpat</value>
</param>
<param>
- <key>k</key>
- <value>k</value>
+ <key>lentagname</key>
+ <value>length_tag</value>
</param>
<param>
- <key>rate</key>
- <value>rate</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>polys</key>
- <value>polys</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>state_start</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>mode</key>
- <value>fec.CC_STREAMING</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(567, 843)</value>
+ <value>(1455, 143)</value>
</param>
<param>
<key>_rotation</key>
@@ -1198,66 +1171,42 @@
</param>
</block>
<block>
- <key>variable_cc_decoder_def</key>
+ <key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>dec_cc</value>
+ <value>blocks_char_to_float_1_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>"ok"</value>
- </param>
- <param>
- <key>ndim</key>
+ <key>vlen</key>
<value>1</value>
</param>
<param>
- <key>dim1</key>
+ <key>scale</key>
<value>1</value>
</param>
<param>
- <key>dim2</key>
- <value>4</value>
- </param>
- <param>
- <key>framebits</key>
- <value>MTU*8</value>
- </param>
- <param>
- <key>k</key>
- <value>k</value>
- </param>
- <param>
- <key>rate</key>
- <value>rate</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>polys</key>
- <value>polys</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>state_start</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>state_end</key>
- <value>-1</value>
- </param>
- <param>
- <key>mode</key>
- <value>fec.CC_STREAMING</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(563, 1076)</value>
+ <value>(1802, 485)</value>
</param>
<param>
<key>_rotation</key>
@@ -1265,30 +1214,22 @@
</param>
</block>
<block>
- <key>fec_extended_encoder</key>
+ <key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>fec_extended_encoder_0_0</value>
+ <value>blocks_char_to_float_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>encoder_list</key>
- <value>enc_cc</value>
- </param>
- <param>
- <key>threadtype</key>
- <value>none</value>
- </param>
- <param>
- <key>puncpat</key>
- <value>puncpat</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>lentagname</key>
- <value>length_tag</value>
+ <key>scale</key>
+ <value>1</value>
</param>
<param>
<key>alias</key>
@@ -1308,7 +1249,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(138, 658)</value>
+ <value>(1798, 332)</value>
</param>
<param>
<key>_rotation</key>
@@ -1316,38 +1257,22 @@
</param>
</block>
<block>
- <key>fec_extended_decoder</key>
+ <key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>fec_extended_decoder_0_0</value>
+ <value>blocks_char_to_float_1_0_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>fec_extended_decoder</value>
- </param>
- <param>
- <key>decoder_list</key>
- <value>dec_ccsds</value>
- </param>
- <param>
- <key>threadtype</key>
- <value>none</value>
- </param>
- <param>
- <key>ann</key>
- <value>None</value>
- </param>
- <param>
- <key>puncpat</key>
- <value>puncpat</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>lentagname</key>
- <value>length_tag</value>
+ <key>scale</key>
+ <value>1</value>
</param>
<param>
<key>alias</key>
@@ -1367,7 +1292,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(900, 494)</value>
+ <value>(1799, 186)</value>
</param>
<param>
<key>_rotation</key>
@@ -1378,7 +1303,7 @@
<key>qtgui_time_sink_x</key>
<param>
<key>id</key>
- <value>qtgui_time_sink_x_0</value>
+ <value>qtgui_time_sink_x_1</value>
</param>
<param>
<key>_enabled</key>
@@ -1414,11 +1339,11 @@
</param>
<param>
<key>nconnections</key>
- <value>2</value>
+ <value>3</value>
</param>
<param>
<key>update_time</key>
- <value>0.10</value>
+ <value>0.01</value>
</param>
<param>
<key>entags</key>
@@ -1430,7 +1355,7 @@
</param>
<param>
<key>tr_mode</key>
- <value>qtgui.TRIG_MODE_FREE</value>
+ <value>qtgui.TRIG_MODE_NORM</value>
</param>
<param>
<key>tr_slope</key>
@@ -1438,7 +1363,7 @@
</param>
<param>
<key>tr_level</key>
- <value>0.0</value>
+ <value>0.1</value>
</param>
<param>
<key>tr_delay</key>
@@ -1454,7 +1379,7 @@
</param>
<param>
<key>label1</key>
- <value></value>
+ <value>None</value>
</param>
<param>
<key>width1</key>
@@ -1478,7 +1403,7 @@
</param>
<param>
<key>label2</key>
- <value></value>
+ <value>Rep (Rate=3)</value>
</param>
<param>
<key>width2</key>
@@ -1498,11 +1423,11 @@
</param>
<param>
<key>alpha2</key>
- <value>0.6</value>
+ <value>1.0</value>
</param>
<param>
<key>label3</key>
- <value></value>
+ <value>CC (K=7, Rate=2)</value>
</param>
<param>
<key>width3</key>
@@ -1702,7 +1627,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1478, 577)</value>
+ <value>(2061, 300)</value>
</param>
<param>
<key>_rotation</key>
@@ -1710,62 +1635,346 @@
</param>
</block>
<block>
- <key>fec_extended_encoder</key>
+ <key>variable_cc_encoder_def</key>
<param>
<key>id</key>
- <value>fec_extended_encoder_0</value>
+ <value>enc_cc</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>encoder_list</key>
- <value>enc_ccsds</value>
+ <key>value</key>
+ <value>"ok"</value>
</param>
<param>
- <key>threadtype</key>
- <value>none</value>
+ <key>ndim</key>
+ <value>1</value>
</param>
<param>
- <key>puncpat</key>
- <value>puncpat</value>
+ <key>dim1</key>
+ <value>1</value>
</param>
<param>
- <key>lentagname</key>
- <value>length_tag</value>
+ <key>dim2</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>framebits</key>
+ <value>MTU*8</value>
+ </param>
+ <param>
+ <key>k</key>
+ <value>k</value>
+ </param>
+ <param>
+ <key>rate</key>
+ <value>rate</value>
+ </param>
+ <param>
+ <key>polys</key>
+ <value>polys</value>
+ </param>
+ <param>
+ <key>state_start</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>mode</key>
+ <value>fec.CC_STREAMING</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
- <key>affinity</key>
+ <key>_coordinate</key>
+ <value>(509, 598)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_cc_decoder_def</key>
+ <param>
+ <key>id</key>
+ <value>dec_cc</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>"ok"</value>
+ </param>
+ <param>
+ <key>ndim</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim2</key>
+ <value>4</value>
+ </param>
+ <param>
+ <key>framebits</key>
+ <value>MTU*8</value>
+ </param>
+ <param>
+ <key>k</key>
+ <value>k</value>
+ </param>
+ <param>
+ <key>rate</key>
+ <value>rate</value>
+ </param>
+ <param>
+ <key>polys</key>
+ <value>polys</value>
+ </param>
+ <param>
+ <key>state_start</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>state_end</key>
+ <value>-1</value>
+ </param>
+ <param>
+ <key>mode</key>
+ <value>fec.CC_STREAMING</value>
+ </param>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>minoutbuf</key>
+ <key>_coordinate</key>
+ <value>(505, 831)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_repetition_decoder_def</key>
+ <param>
+ <key>id</key>
+ <value>dec_rep</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>"ok"</value>
+ </param>
+ <param>
+ <key>ndim</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim2</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>framebits</key>
+ <value>MTU*8</value>
+ </param>
+ <param>
+ <key>rep</key>
+ <value>3</value>
+ </param>
+ <param>
+ <key>prob</key>
+ <value>0.5</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(799, 741)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>variable_repetition_encoder_def</key>
<param>
- <key>maxoutbuf</key>
+ <key>id</key>
+ <value>enc_rep</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>"ok"</value>
+ </param>
+ <param>
+ <key>ndim</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim2</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>framebits</key>
+ <value>MTU*8</value>
+ </param>
+ <param>
+ <key>rep</key>
+ <value>3</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(799, 599)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_dummy_decoder_def</key>
+ <param>
+ <key>id</key>
+ <value>dec_dummy</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>"ok"</value>
+ </param>
+ <param>
+ <key>ndim</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim2</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>framebits</key>
+ <value>MTU*8</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1094, 722)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>variable_dummy_encoder_def</key>
+ <param>
+ <key>id</key>
+ <value>enc_dummy</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>"ok"</value>
+ </param>
+ <param>
+ <key>ndim</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim1</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>dim2</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>framebits</key>
+ <value>MTU*8</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
<param>
<key>_coordinate</key>
- <value>(138, 505)</value>
+ <value>(1092, 599)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_ctrlport_monitor_performance</key>
+ <param>
+ <key>id</key>
+ <value>blocks_ctrlport_monitor_performance_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>en</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(651, 15)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
- <connection>
- <source_block_id>analog_random_source_x_0</source_block_id>
- <sink_block_id>blocks_throttle_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
<connection>
<source_block_id>blocks_vector_source_x_0_1_0</source_block_id>
<sink_block_id>blocks_throttle_0</sink_block_id>
@@ -1774,7 +1983,7 @@
</connection>
<connection>
<source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
- <sink_block_id>fec_extended_encoder_0</sink_block_id>
+ <sink_block_id>fec_extended_encoder_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
@@ -1791,50 +2000,62 @@
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_extended_decoder_0_0_0</source_block_id>
- <sink_block_id>blocks_char_to_float_1_0_0</sink_block_id>
+ <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
+ <sink_block_id>fec_extended_encoder_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_char_to_float_1_1</source_block_id>
- <sink_block_id>fec_extended_decoder_0_0_0</sink_block_id>
+ <source_block_id>analog_random_source_x_0</source_block_id>
+ <sink_block_id>blocks_throttle_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_extended_encoder_0_0</source_block_id>
- <sink_block_id>digital_map_bb_0_0</sink_block_id>
+ <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
+ <sink_block_id>fec_extended_encoder_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id>
- <sink_block_id>fec_extended_encoder_0_0</sink_block_id>
+ <source_block_id>digital_map_bb_0_1</source_block_id>
+ <sink_block_id>blocks_char_to_float_1_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_char_to_float_1_0</source_block_id>
- <sink_block_id>qtgui_time_sink_x_0</sink_block_id>
+ <source_block_id>blocks_char_to_float_1_2</source_block_id>
+ <sink_block_id>fec_extended_decoder_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fec_extended_decoder_0</source_block_id>
+ <sink_block_id>blocks_char_to_float_1_0_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>fec_extended_encoder_0</source_block_id>
+ <sink_block_id>digital_map_bb_0_1</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fec_extended_encoder_1</source_block_id>
<sink_block_id>digital_map_bb_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fec_extended_decoder_0_0</source_block_id>
+ <source_block_id>fec_extended_decoder_1</source_block_id>
<sink_block_id>blocks_char_to_float_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_char_to_float_1</source_block_id>
- <sink_block_id>fec_extended_decoder_0_0</sink_block_id>
+ <sink_block_id>fec_extended_decoder_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
@@ -1845,14 +2066,44 @@
<sink_key>0</sink_key>
</connection>
<connection>
+ <source_block_id>digital_map_bb_0_0</source_block_id>
+ <sink_block_id>blocks_char_to_float_1_1</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fec_extended_encoder_2</source_block_id>
+ <sink_block_id>digital_map_bb_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_char_to_float_1_1</source_block_id>
+ <sink_block_id>fec_extended_decoder_2</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>fec_extended_decoder_2</source_block_id>
+ <sink_block_id>blocks_char_to_float_1_0_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
<source_block_id>blocks_char_to_float_1_0_0</source_block_id>
- <sink_block_id>qtgui_time_sink_x_0</sink_block_id>
+ <sink_block_id>qtgui_time_sink_x_1</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>2</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>blocks_char_to_float_1_0</source_block_id>
+ <sink_block_id>qtgui_time_sink_x_1</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
- <source_block_id>digital_map_bb_0_0</source_block_id>
- <sink_block_id>blocks_char_to_float_1_1</sink_block_id>
+ <source_block_id>blocks_char_to_float_1_0_1</source_block_id>
+ <sink_block_id>qtgui_time_sink_x_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
diff --git a/gr-fec/lib/repetition_decoder_impl.cc b/gr-fec/lib/repetition_decoder_impl.cc
index b7b3f00c01..bce41de5ca 100644
--- a/gr-fec/lib/repetition_decoder_impl.cc
+++ b/gr-fec/lib/repetition_decoder_impl.cc
@@ -125,7 +125,7 @@ namespace gr {
repetition_decoder_impl::generic_work(void *inbuffer, void *outbuffer)
{
const float *in = (const float*)inbuffer;
- int8_t *out = (int8_t*)outbuffer;
+ unsigned char *out = (unsigned char *) outbuffer;
for(unsigned int i = 0; i < d_frame_size; i++) {
for(unsigned int r = 0; r < d_rep; r++) {
diff --git a/gr-fec/lib/repetition_encoder_impl.cc b/gr-fec/lib/repetition_encoder_impl.cc
index a608ed652b..dd6bc01615 100644
--- a/gr-fec/lib/repetition_encoder_impl.cc
+++ b/gr-fec/lib/repetition_encoder_impl.cc
@@ -87,7 +87,7 @@ namespace gr {
double
repetition_encoder_impl::rate()
{
- return 1.0/static_cast<double>(d_rep);
+ return static_cast<double>(d_rep);
}
void
diff --git a/gr-fec/lib/tagged_decoder_impl.cc b/gr-fec/lib/tagged_decoder_impl.cc
index 595537c925..bccf5147ff 100644
--- a/gr-fec/lib/tagged_decoder_impl.cc
+++ b/gr-fec/lib/tagged_decoder_impl.cc
@@ -52,7 +52,6 @@ namespace gr {
lengthtagname),
d_input_item_size(input_item_size), d_output_item_size(output_item_size)
{
- d_inbuf = buf_sptr(new unsigned char[(my_decoder->get_input_size() + my_decoder->get_history())*input_item_size]);
d_decoder = my_decoder;
set_relative_rate(d_decoder->rate());
@@ -77,18 +76,14 @@ namespace gr {
const unsigned char *in = (unsigned char*)input_items[0];
unsigned char *out = (unsigned char *)output_items[0];
- d_decoder->set_frame_size(ninput_items[0]/2);
+ d_decoder->set_frame_size(ninput_items[0]*d_decoder->rate());
if(noutput_items < d_decoder->get_output_size())
return 0;
GR_LOG_DEBUG(d_debug_logger, boost::format("%1%, %2%, %3%") \
% noutput_items % ninput_items[0] % d_decoder->get_output_size());
- memcpy((void *)d_inbuf.get(),
- in+(d_decoder->get_input_size() * d_input_item_size),
- (d_decoder->get_input_size() + d_decoder->get_history()) * d_input_item_size);
-
- d_decoder->generic_work((void*)d_inbuf.get(), (void*)(out));
+ d_decoder->generic_work((void*)in, (void*)out);
add_item_tag(0, nitems_written(0) + d_decoder->get_output_size()*d_output_item_size,
pmt::intern(d_decoder->alias()), pmt::PMT_T, pmt::intern(alias()));
diff --git a/gr-fec/lib/tagged_decoder_impl.h b/gr-fec/lib/tagged_decoder_impl.h
index 4eeab25f75..ec81a4fa76 100644
--- a/gr-fec/lib/tagged_decoder_impl.h
+++ b/gr-fec/lib/tagged_decoder_impl.h
@@ -34,7 +34,6 @@ namespace gr {
generic_decoder::sptr d_decoder;
size_t d_input_item_size;
size_t d_output_item_size;
- buf_sptr d_inbuf;
public:
tagged_decoder_impl(generic_decoder::sptr my_decoder,
diff --git a/gr-fec/lib/tagged_encoder_impl.cc b/gr-fec/lib/tagged_encoder_impl.cc
index f914866df1..4d19e4c668 100644
--- a/gr-fec/lib/tagged_encoder_impl.cc
+++ b/gr-fec/lib/tagged_encoder_impl.cc
@@ -54,6 +54,8 @@ namespace gr {
d_input_item_size(input_item_size), d_output_item_size(output_item_size)
{
d_encoder = my_encoder;
+
+ set_relative_rate(d_encoder->rate());
}
tagged_encoder_impl::~tagged_encoder_impl()
diff --git a/gr-fec/python/fec/extended_decoder.py b/gr-fec/python/fec/extended_decoder.py
index 072adcde07..792d7dfeb3 100644
--- a/gr-fec/python/fec/extended_decoder.py
+++ b/gr-fec/python/fec/extended_decoder.py
@@ -20,11 +20,16 @@
# Boston, MA 02110-1301, USA.
#
-from gnuradio import gr, blocks, digital
+from gnuradio import gr, blocks
import fec_swig as fec
from bitflip import *
import sys
+if sys.modules.has_key("gnuradio.digital"):
+ digital = sys.modules["gnuradio.digital"]
+else:
+ from gnuradio import digital
+
from threaded_decoder import threaded_decoder
from capillary_threaded_decoder import capillary_threaded_decoder
diff --git a/gr-fec/python/fec/fec_test.py b/gr-fec/python/fec/fec_test.py
index 0a7524af74..6466a0bcb4 100644
--- a/gr-fec/python/fec/fec_test.py
+++ b/gr-fec/python/fec/fec_test.py
@@ -21,8 +21,14 @@
#
from gnuradio.fec.bitflip import read_bitlist
-from gnuradio import gr, blocks, analog, digital
+from gnuradio import gr, blocks, analog
import math
+import sys
+
+if sys.modules.has_key("gnuradio.digital"):
+ digital = sys.modules["gnuradio.digital"]
+else:
+ from gnuradio import digital
from extended_encoder import extended_encoder
from extended_decoder import extended_decoder