diff options
author | Tom Rondeau <tom@trondeau.com> | 2014-05-13 18:12:37 -0400 |
---|---|---|
committer | Tom Rondeau <tom@trondeau.com> | 2014-05-17 17:45:15 -0400 |
commit | 2e26269d32a357688f6fea652137d9a1900c3a29 (patch) | |
tree | 33bbc1abfc5934b8de032eb5dbeaffdd28ec5ceb /gr-fec | |
parent | 5f0247e7cdb7e63e970f009530944e29fb99913c (diff) |
fec: wip: cleaning up tagged decoder, rep code.
Diffstat (limited to 'gr-fec')
-rw-r--r-- | gr-fec/doc/fec.dox | 154 | ||||
-rw-r--r-- | gr-fec/examples/ber_curve_gen.grc | 296 | ||||
-rw-r--r-- | gr-fec/examples/fecapi_decoders.grc | 682 | ||||
-rw-r--r-- | gr-fec/examples/fecapi_tagged_decoders.grc | 1099 | ||||
-rw-r--r-- | gr-fec/lib/repetition_decoder_impl.cc | 2 | ||||
-rw-r--r-- | gr-fec/lib/repetition_encoder_impl.cc | 2 | ||||
-rw-r--r-- | gr-fec/lib/tagged_decoder_impl.cc | 9 | ||||
-rw-r--r-- | gr-fec/lib/tagged_decoder_impl.h | 1 | ||||
-rw-r--r-- | gr-fec/lib/tagged_encoder_impl.cc | 2 | ||||
-rw-r--r-- | gr-fec/python/fec/extended_decoder.py | 7 | ||||
-rw-r--r-- | gr-fec/python/fec/fec_test.py | 8 |
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 |