diff options
author | Tom Rondeau <tom@trondeau.com> | 2014-05-15 16:43:16 -0400 |
---|---|---|
committer | Tom Rondeau <tom@trondeau.com> | 2014-05-17 17:45:16 -0400 |
commit | 5a55bb4e468812f3620323ab948d1ee4f12eab59 (patch) | |
tree | 05c4783b79bd9f37dd45ab2e14b523adf06121df /gr-fec | |
parent | 0e28a39e8e821f5bdd721b783ce939d480266c08 (diff) |
fec: wip: adding async (PDU) encoder and decoder blocks.
Diffstat (limited to 'gr-fec')
21 files changed, 1967 insertions, 716 deletions
diff --git a/gr-fec/examples/fecapi_tagged_decoders.grc b/gr-fec/examples/fecapi_tagged_decoders.grc index 8d038e1ee5..9734732cc5 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 18:15:54 2014</timestamp> + <timestamp>Wed May 14 12:22:39 2014</timestamp> <block> <key>options</key> <param> @@ -344,151 +344,6 @@ </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>k</key> - <value>8</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>(99, 404)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>blocks_throttle</key> - <param> - <key>id</key> - <value>blocks_throttle_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>ignoretag</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>(358, 404)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>analog_random_source_x</key> - <param> - <key>id</key> - <value>analog_random_source_x_0</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>(30, 271)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>blocks_vector_source_x</key> <param> <key>id</key> @@ -544,108 +399,6 @@ </param> </block> <block> - <key>blocks_stream_to_tagged_stream</key> - <param> - <key>id</key> - <value>blocks_stream_to_tagged_stream_0_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>packet_len</key> - <value>frame_size*8</value> - </param> - <param> - <key>len_tag_key</key> - <value>length_tag</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>(281, 473)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>fec_extended_encoder</key> - <param> - <key>id</key> - <value>fec_extended_encoder_2</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> - </param> - <param> - <key>lentagname</key> - <value>length_tag</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>(705, 453)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>blocks_char_to_float</key> <param> <key>id</key> @@ -728,57 +481,6 @@ </param> </block> <block> - <key>fec_extended_encoder</key> - <param> - <key>id</key> - <value>fec_extended_encoder_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>encoder_list</key> - <value>enc_dummy</value> - </param> - <param> - <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> - <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>(705, 155)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>fec_extended_decoder</key> <param> <key>id</key> @@ -838,57 +540,6 @@ </param> </block> <block> - <key>fec_extended_encoder</key> - <param> - <key>id</key> - <value>fec_extended_encoder_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>encoder_list</key> - <value>enc_rep</value> - </param> - <param> - <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> - <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>(704, 301)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>digital_map_bb</key> <param> <key>id</key> @@ -1816,10 +1467,10 @@ </param> </block> <block> - <key>variable_repetition_encoder_def</key> + <key>variable_dummy_decoder_def</key> <param> <key>id</key> - <value>enc_rep</value> + <value>dec_dummy</value> </param> <param> <key>_enabled</key> @@ -1846,16 +1497,12 @@ <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> + <value>(1094, 722)</value> </param> <param> <key>_rotation</key> @@ -1863,10 +1510,10 @@ </param> </block> <block> - <key>variable_dummy_decoder_def</key> + <key>variable_dummy_encoder_def</key> <param> <key>id</key> - <value>dec_dummy</value> + <value>enc_dummy</value> </param> <param> <key>_enabled</key> @@ -1898,7 +1545,7 @@ </param> <param> <key>_coordinate</key> - <value>(1094, 722)</value> + <value>(1092, 599)</value> </param> <param> <key>_rotation</key> @@ -1906,10 +1553,37 @@ </param> </block> <block> - <key>variable_dummy_encoder_def</key> + <key>blocks_ctrlport_monitor_performance</key> <param> <key>id</key> - <value>enc_dummy</value> + <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> + <block> + <key>variable_repetition_encoder_def</key> + <param> + <key>id</key> + <value>enc_rep</value> </param> <param> <key>_enabled</key> @@ -1936,12 +1610,16 @@ <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>(1092, 599)</value> + <value>(799, 599)</value> </param> <param> <key>_rotation</key> @@ -1949,17 +1627,33 @@ </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> + <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> @@ -1967,8 +1661,326 @@ <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>(651, 15)</value> + <value>(29, 205)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_throttle</key> + <param> + <key>id</key> + <value>blocks_throttle_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>ignoretag</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>(409, 349)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>blocks_stream_to_tagged_stream</key> + <param> + <key>id</key> + <value>blocks_stream_to_tagged_stream_0_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>packet_len</key> + <value>frame_size</value> + </param> + <param> + <key>len_tag_key</key> + <value>length_tag</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>(71, 339)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>fec_extended_encoder</key> + <param> + <key>id</key> + <value>fec_extended_encoder_2</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> + </param> + <param> + <key>lentagname</key> + <value>length_tag</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>(705, 453)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>fec_extended_encoder</key> + <param> + <key>id</key> + <value>fec_extended_encoder_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>encoder_list</key> + <value>enc_rep</value> + </param> + <param> + <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> + <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>(704, 301)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>fec_extended_encoder</key> + <param> + <key>id</key> + <value>fec_extended_encoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>encoder_list</key> + <value>enc_dummy</value> + </param> + <param> + <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> + <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>(705, 155)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>1</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>align_output</key> + <value>False</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>(353, 435)</value> </param> <param> <key>_rotation</key> @@ -1982,42 +1994,12 @@ <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_1</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blocks_unpack_k_bits_bb_0_0</source_block_id> - <sink_block_id>blocks_stream_to_tagged_stream_0_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blocks_throttle_0</source_block_id> - <sink_block_id>blocks_unpack_k_bits_bb_0_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_2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> <source_block_id>analog_random_source_x_0</source_block_id> <sink_block_id>blocks_throttle_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</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> <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> @@ -2107,4 +2089,34 @@ <source_key>0</source_key> <sink_key>0</sink_key> </connection> + <connection> + <source_block_id>blocks_stream_to_tagged_stream_0_0_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_throttle_0</source_block_id> + <sink_block_id>blocks_stream_to_tagged_stream_0_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>fec_extended_encoder_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>fec_extended_encoder_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>fec_extended_encoder_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> </flow_graph> diff --git a/gr-fec/examples/fecapi_tagged_encoders.grc b/gr-fec/examples/fecapi_tagged_encoders.grc index 0af3d84b03..c3505e6c42 100644 --- a/gr-fec/examples/fecapi_tagged_encoders.grc +++ b/gr-fec/examples/fecapi_tagged_encoders.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue May 13 16:20:56 2014</timestamp> + <timestamp>Wed May 14 12:19:46 2014</timestamp> <block> <key>options</key> <param> @@ -68,7 +68,7 @@ <key>variable</key> <param> <key>id</key> - <value>length_tag</value> + <value>k</value> </param> <param> <key>_enabled</key> @@ -76,7 +76,7 @@ </param> <param> <key>value</key> - <value>"packet_len"</value> + <value>7</value> </param> <param> <key>alias</key> @@ -84,7 +84,7 @@ </param> <param> <key>_coordinate</key> - <value>(152, 116)</value> + <value>(421, 692)</value> </param> <param> <key>_rotation</key> @@ -95,7 +95,7 @@ <key>variable</key> <param> <key>id</key> - <value>samp_rate</value> + <value>polys</value> </param> <param> <key>_enabled</key> @@ -103,7 +103,7 @@ </param> <param> <key>value</key> - <value>50000</value> + <value>[109, 79]</value> </param> <param> <key>alias</key> @@ -111,7 +111,7 @@ </param> <param> <key>_coordinate</key> - <value>(13, 88)</value> + <value>(335, 777)</value> </param> <param> <key>_rotation</key> @@ -122,15 +122,15 @@ <key>variable</key> <param> <key>id</key> - <value>rate</value> + <value>polys</value> </param> <param> <key>_enabled</key> - <value>True</value> + <value>False</value> </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>(522, 694)</value> + <value>(479, 781)</value> </param> <param> <key>_rotation</key> @@ -149,15 +149,15 @@ <key>variable</key> <param> <key>id</key> - <value>polys</value> + <value>rate</value> </param> <param> <key>_enabled</key> - <value>False</value> + <value>True</value> </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>(479, 781)</value> + <value>(522, 694)</value> </param> <param> <key>_rotation</key> @@ -176,7 +176,7 @@ <key>variable</key> <param> <key>id</key> - <value>polys</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> @@ -184,7 +184,7 @@ </param> <param> <key>value</key> - <value>[109, 79]</value> + <value>50000</value> </param> <param> <key>alias</key> @@ -192,7 +192,7 @@ </param> <param> <key>_coordinate</key> - <value>(335, 777)</value> + <value>(13, 88)</value> </param> <param> <key>_rotation</key> @@ -203,7 +203,7 @@ <key>variable</key> <param> <key>id</key> - <value>k</value> + <value>length_tag</value> </param> <param> <key>_enabled</key> @@ -211,7 +211,7 @@ </param> <param> <key>value</key> - <value>7</value> + <value>"packet_len"</value> </param> <param> <key>alias</key> @@ -219,7 +219,7 @@ </param> <param> <key>_coordinate</key> - <value>(421, 692)</value> + <value>(152, 116)</value> </param> <param> <key>_rotation</key> @@ -227,36 +227,36 @@ </param> </block> <block> - <key>analog_random_source_x</key> + <key>blocks_vector_source_x</key> <param> <key>id</key> - <value>analog_random_source_x_0</value> + <value>blocks_vector_source_x_0_1_0</value> </param> <param> <key>_enabled</key> - <value>False</value> + <value>True</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> + <key>vector</key> + <value>4*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value> </param> <param> - <key>num_samps</key> - <value>1000</value> + <key>tags</key> + <value>[]</value> </param> <param> <key>repeat</key> <value>True</value> </param> <param> + <key>vlen</key> + <value>1</value> + </param> + <param> <key>alias</key> <value></value> </param> @@ -274,7 +274,7 @@ </param> <param> <key>_coordinate</key> - <value>(92, 616)</value> + <value>(94, 226)</value> </param> <param> <key>_rotation</key> @@ -282,89 +282,104 @@ </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> - <value></value> + <key>value</key> + <value>'11'</value> </param> <param> - <key>affinity</key> - <value></value> + <key>type</key> + <value>string</value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>short_id</key> + <value></value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(128, 428)</value> + <value>(247, 11)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>blocks_throttle</key> + <key>blocks_ctrlport_monitor_performance</key> <param> <key>id</key> - <value>blocks_throttle_0</value> + <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>type</key> - <value>byte</value> + <key>alias</key> + <value></value> </param> <param> - <key>samples_per_second</key> - <value>samp_rate</value> + <key>_coordinate</key> + <value>(651, 10)</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>parameter</key> <param> - <key>ignoretag</key> + <key>id</key> + <value>frame_size</value> + </param> + <param> + <key>_enabled</key> <value>True</value> </param> <param> - <key>alias</key> - <value></value> + <key>label</key> + <value>Frame Size</value> </param> <param> - <key>affinity</key> - <value></value> + <key>value</key> + <value>30</value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>type</key> + <value>intx</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>short_id</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(120, 355)</value> + <value>(483, 10)</value> </param> <param> <key>_rotation</key> @@ -372,132 +387,148 @@ </param> </block> <block> - <key>blocks_vector_source_x</key> + <key>variable_dummy_encoder_def</key> <param> <key>id</key> - <value>blocks_vector_source_x_0_1_0</value> + <value>enc_dummy</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</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>value</key> + <value>"ok"</value> </param> <param> - <key>tags</key> - <value>[]</value> + <key>ndim</key> + <value>1</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>dim1</key> + <value>1</value> </param> <param> - <key>vlen</key> + <key>dim2</key> <value>1</value> </param> <param> - <key>alias</key> - <value></value> + <key>framebits</key> + <value>MTU*8</value> </param> <param> - <key>affinity</key> + <key>alias</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>(94, 226)</value> + <value>(1209, 693)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>parameter</key> + <key>analog_random_source_x</key> <param> <key>id</key> - <value>puncpat</value> + <value>analog_random_source_x_0</value> </param> <param> <key>_enabled</key> - <value>True</value> + <value>False</value> </param> <param> - <key>label</key> - <value></value> + <key>type</key> + <value>byte</value> </param> <param> - <key>value</key> - <value>'11'</value> + <key>min</key> + <value>0</value> </param> <param> - <key>type</key> - <value>string</value> + <key>max</key> + <value>256</value> </param> <param> - <key>short_id</key> - <value></value> + <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>(247, 11)</value> + <value>(92, 703)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> - <key>parameter</key> + <key>blocks_throttle</key> <param> <key>id</key> - <value>MTU</value> + <value>blocks_throttle_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>MTU</value> + <key>type</key> + <value>byte</value> </param> <param> - <key>value</key> - <value>1500</value> + <key>samples_per_second</key> + <value>samp_rate</value> </param> <param> - <key>type</key> - <value>intx</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>short_id</key> - <value></value> + <key>ignoretag</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>(364, 9)</value> + <value>(120, 338)</value> </param> <param> <key>_rotation</key> @@ -505,29 +536,29 @@ </param> </block> <block> - <key>fec_extended_encoder</key> + <key>blocks_stream_to_tagged_stream</key> <param> <key>id</key> - <value>fec_extended_encoder_0</value> + <value>blocks_stream_to_tagged_stream_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>encoder_list</key> - <value>enc_cc</value> + <key>type</key> + <value>byte</value> </param> <param> - <key>threadtype</key> - <value>none</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>puncpat</key> - <value>puncpat</value> + <key>packet_len</key> + <value>frame_size</value> </param> <param> - <key>lentagname</key> + <key>len_tag_key</key> <value>length_tag</value> </param> <param> @@ -548,18 +579,18 @@ </param> <param> <key>_coordinate</key> - <value>(540, 494)</value> + <value>(119, 411)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> <key>blocks_char_to_float</key> <param> <key>id</key> - <value>blocks_char_to_float_1</value> + <value>blocks_char_to_float_1_0</value> </param> <param> <key>_enabled</key> @@ -591,7 +622,7 @@ </param> <param> <key>_coordinate</key> - <value>(881, 525)</value> + <value>(937, 452)</value> </param> <param> <key>_rotation</key> @@ -599,26 +630,50 @@ </param> </block> <block> - <key>blocks_ctrlport_monitor_performance</key> + <key>fec_extended_encoder</key> <param> <key>id</key> - <value>blocks_ctrlport_monitor_performance_0</value> + <value>fec_extended_encoder_2</value> </param> <param> <key>_enabled</key> - <value>False</value> + <value>True</value> </param> <param> - <key>en</key> - <value>True</value> + <key>encoder_list</key> + <value>enc_ccsds</value> + </param> + <param> + <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> <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>(651, 10)</value> + <value>(598, 421)</value> </param> <param> <key>_rotation</key> @@ -629,7 +684,7 @@ <key>parameter</key> <param> <key>id</key> - <value>frame_size</value> + <value>MTU</value> </param> <param> <key>_enabled</key> @@ -637,11 +692,11 @@ </param> <param> <key>label</key> - <value>Frame Size</value> + <value>MTU</value> </param> <param> <key>value</key> - <value>30</value> + <value>1000</value> </param> <param> <key>type</key> @@ -657,7 +712,7 @@ </param> <param> <key>_coordinate</key> - <value>(483, 10)</value> + <value>(364, 9)</value> </param> <param> <key>_rotation</key> @@ -665,30 +720,22 @@ </param> </block> <block> - <key>blocks_stream_to_tagged_stream</key> + <key>blocks_char_to_float</key> <param> <key>id</key> - <value>blocks_stream_to_tagged_stream_0_0</value> + <value>blocks_char_to_float_1_0_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> - </param> - <param> <key>vlen</key> <value>1</value> </param> <param> - <key>packet_len</key> - <value>frame_size*8</value> - </param> - <param> - <key>len_tag_key</key> - <value>length_tag</value> + <key>scale</key> + <value>1</value> </param> <param> <key>alias</key> @@ -708,7 +755,7 @@ </param> <param> <key>_coordinate</key> - <value>(158, 515)</value> + <value>(936, 326)</value> </param> <param> <key>_rotation</key> @@ -716,42 +763,42 @@ </param> </block> <block> - <key>variable_dummy_encoder_def</key> + <key>blocks_char_to_float</key> <param> <key>id</key> - <value>enc_dummy</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> + <key>vlen</key> + <value>1</value> </param> <param> - <key>ndim</key> + <key>scale</key> <value>1</value> </param> <param> - <key>dim1</key> - <value>1</value> + <key>alias</key> + <value></value> </param> <param> - <key>dim2</key> - <value>1</value> + <key>affinity</key> + <value></value> </param> <param> - <key>framebits</key> - <value>MTU*8</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>(1209, 693)</value> + <value>(936, 197)</value> </param> <param> <key>_rotation</key> @@ -759,62 +806,50 @@ </param> </block> <block> - <key>variable_cc_encoder_def</key> + <key>fec_extended_encoder</key> <param> <key>id</key> - <value>enc_cc</value> + <value>fec_extended_encoder_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>2</value> + <key>encoder_list</key> + <value>enc_dummy</value> </param> <param> - <key>dim2</key> - <value>1</value> + <key>threadtype</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_TERMINATED</value> - </param> - <param> - <key>alias</key> - <value></value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(618, 691)</value> + <value>(598, 166)</value> </param> <param> <key>_rotation</key> @@ -822,50 +857,50 @@ </param> </block> <block> - <key>variable_ccsds_encoder_def</key> + <key>fec_extended_encoder</key> <param> <key>id</key> - <value>enc_ccsds</value> + <value>fec_extended_encoder_1</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>"ok"</value> + <key>encoder_list</key> + <value>enc_rep</value> </param> <param> - <key>ndim</key> - <value>1</value> + <key>threadtype</key> + <value>none</value> </param> <param> - <key>dim1</key> - <value>2</value> + <key>puncpat</key> + <value>puncpat</value> </param> <param> - <key>dim2</key> - <value>4</value> + <key>lentagname</key> + <value>length_tag</value> </param> <param> - <key>framebits</key> - <value>MTU*8</value> + <key>alias</key> + <value></value> </param> <param> - <key>state_start</key> - <value>0</value> + <key>affinity</key> + <value></value> </param> <param> - <key>mode</key> - <value>fec.CC_TERMINATED</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>(909, 693)</value> + <value>(598, 295)</value> </param> <param> <key>_rotation</key> @@ -873,30 +908,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</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>encoder_list</key> - <value>enc_ccsds</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> @@ -916,7 +943,7 @@ </param> <param> <key>_coordinate</key> - <value>(542, 364)</value> + <value>(936, 578)</value> </param> <param> <key>_rotation</key> @@ -924,22 +951,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</value> + <value>fec_extended_encoder_3</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>encoder_list</key> + <value>enc_cc</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> @@ -959,7 +994,7 @@ </param> <param> <key>_coordinate</key> - <value>(881, 395)</value> + <value>(598, 547)</value> </param> <param> <key>_rotation</key> @@ -970,7 +1005,7 @@ <key>qtgui_time_sink_x</key> <param> <key>id</key> - <value>qtgui_time_sink_x_0_0</value> + <value>qtgui_time_sink_x_0</value> </param> <param> <key>_enabled</key> @@ -1018,7 +1053,7 @@ </param> <param> <key>gui_hint</key> - <value></value> + <value>0,0,1,1</value> </param> <param> <key>tr_mode</key> @@ -1046,7 +1081,7 @@ </param> <param> <key>label1</key> - <value>CCSDS</value> + <value>None</value> </param> <param> <key>width1</key> @@ -1294,7 +1329,7 @@ </param> <param> <key>_coordinate</key> - <value>(1112, 364)</value> + <value>(1167, 166)</value> </param> <param> <key>_rotation</key> @@ -1302,93 +1337,334 @@ </param> </block> <block> - <key>blocks_char_to_float</key> + <key>qtgui_time_sink_x</key> <param> <key>id</key> - <value>blocks_char_to_float_1_0_0</value> + <value>qtgui_time_sink_x_1</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>vlen</key> + <key>type</key> + <value>float</value> + </param> + <param> + <key>name</key> + <value>QT GUI Plot</value> + </param> + <param> + <key>size</key> + <value>2048</value> + </param> + <param> + <key>srate</key> + <value>samp_rate</value> + </param> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>ymin</key> + <value>-0.5</value> + </param> + <param> + <key>ymax</key> + <value>1.5</value> + </param> + <param> + <key>nconnections</key> <value>1</value> </param> <param> - <key>scale</key> + <key>update_time</key> + <value>0.05</value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</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>packet_len</value> + </param> + <param> + <key>label1</key> + <value>Rep (Rate=3)</value> + </param> + <param> + <key>width1</key> <value>1</value> </param> <param> - <key>alias</key> + <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>CC</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>0.6</value> + </param> + <param> + <key>label3</key> <value></value> </param> <param> - <key>affinity</key> + <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>minoutbuf</key> - <value>0</value> + <key>width4</key> + <value>1</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>color4</key> + <value>"black"</value> </param> <param> - <key>_coordinate</key> - <value>(880, 262)</value> + <key>style4</key> + <value>1</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>marker4</key> + <value>-1</value> </param> - </block> - <block> - <key>fec_extended_encoder</key> <param> - <key>id</key> - <value>fec_extended_encoder_0_0_0</value> + <key>alpha4</key> + <value>1.0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>label5</key> + <value></value> </param> <param> - <key>encoder_list</key> - <value>enc_dummy</value> + <key>width5</key> + <value>1</value> </param> <param> - <key>threadtype</key> - <value>none</value> + <key>color5</key> + <value>"cyan"</value> </param> <param> - <key>puncpat</key> - <value>puncpat</value> + <key>style5</key> + <value>1</value> </param> <param> - <key>lentagname</key> - <value>length_tag</value> + <key>marker5</key> + <value>-1</value> </param> <param> - <key>alias</key> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> <value></value> </param> <param> - <key>affinity</key> + <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>minoutbuf</key> - <value>0</value> + <key>width7</key> + <value>1</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <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>(541, 231)</value> + <value>(1167, 295)</value> </param> <param> <key>_rotation</key> @@ -1399,7 +1675,7 @@ <key>qtgui_time_sink_x</key> <param> <key>id</key> - <value>qtgui_time_sink_x_0_0_1</value> + <value>qtgui_time_sink_x_2</value> </param> <param> <key>_enabled</key> @@ -1447,7 +1723,7 @@ </param> <param> <key>gui_hint</key> - <value></value> + <value>2,0,1,1</value> </param> <param> <key>tr_mode</key> @@ -1723,7 +1999,7 @@ </param> <param> <key>_coordinate</key> - <value>(1111, 231)</value> + <value>(1168, 421)</value> </param> <param> <key>_rotation</key> @@ -1734,7 +2010,7 @@ <key>qtgui_time_sink_x</key> <param> <key>id</key> - <value>qtgui_time_sink_x_0_0_0</value> + <value>qtgui_time_sink_x_3</value> </param> <param> <key>_enabled</key> @@ -1782,7 +2058,7 @@ </param> <param> <key>gui_hint</key> - <value></value> + <value>3,0,1,1</value> </param> <param> <key>tr_mode</key> @@ -1810,7 +2086,7 @@ </param> <param> <key>label1</key> - <value>CCSDS</value> + <value>CC</value> </param> <param> <key>width1</key> @@ -2058,7 +2334,219 @@ </param> <param> <key>_coordinate</key> - <value>(1112, 494)</value> + <value>(1167, 547)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_encoder_def</key> + <param> + <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>(1210, 819)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_ccsds_encoder_def</key> + <param> + <key>id</key> + <value>enc_ccsds</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>state_start</key> + <value>0</value> + </param> + <param> + <key>mode</key> + <value>fec.CC_TERMINATED</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(909, 693)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_cc_encoder_def</key> + <param> + <key>id</key> + <value>enc_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>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_TERMINATED</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(618, 691)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>1</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>align_output</key> + <value>False</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>(145, 509)</value> </param> <param> <key>_rotation</key> @@ -2066,80 +2554,98 @@ </param> </block> <connection> - <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id> - <sink_block_id>fec_extended_encoder_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</source_block_id> - <sink_block_id>blocks_char_to_float_1</sink_block_id> + <source_block_id>blocks_vector_source_x_0_1_0</source_block_id> + <sink_block_id>blocks_throttle_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>analog_random_source_x_0</source_block_id> - <sink_block_id>blocks_throttle_0</sink_block_id> + <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_vector_source_x_0_1_0</source_block_id> - <sink_block_id>blocks_throttle_0</sink_block_id> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>fec_extended_encoder_3</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_unpack_k_bits_bb_0_0</source_block_id> + <source_block_id>blocks_throttle_0</source_block_id> <sink_block_id>blocks_stream_to_tagged_stream_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_throttle_0</source_block_id> - <sink_block_id>blocks_unpack_k_bits_bb_0_0</sink_block_id> + <source_block_id>blocks_repack_bits_bb_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_char_to_float_1</source_block_id> - <sink_block_id>qtgui_time_sink_x_0_0_0</sink_block_id> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>fec_extended_encoder_1</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id> - <sink_block_id>fec_extended_encoder_0_0_0</sink_block_id> + <source_block_id>blocks_repack_bits_bb_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_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_2</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>blocks_char_to_float_1_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>fec_extended_encoder_0_0_0</source_block_id> + <source_block_id>fec_extended_encoder_0</source_block_id> <sink_block_id>blocks_char_to_float_1_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>blocks_char_to_float_1_0_0</source_block_id> - <sink_block_id>qtgui_time_sink_x_0_0_1</sink_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>fec_extended_encoder_0_0</source_block_id> - <sink_block_id>blocks_char_to_float_1_0</sink_block_id> + <source_block_id>fec_extended_encoder_1</source_block_id> + <sink_block_id>blocks_char_to_float_1_0_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</source_block_id> - <sink_block_id>qtgui_time_sink_x_0_0</sink_block_id> + <source_block_id>blocks_char_to_float_1_0_0_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> <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>blocks_char_to_float_1</source_block_id> + <sink_block_id>qtgui_time_sink_x_3</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>fec_extended_encoder_3</source_block_id> + <sink_block_id>blocks_char_to_float_1</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-fec/grc/fec_async_decoder.xml b/gr-fec/grc/fec_async_decoder.xml new file mode 100644 index 0000000000..4cc7be7650 --- /dev/null +++ b/gr-fec/grc/fec_async_decoder.xml @@ -0,0 +1,62 @@ +<?xml version="1.0"?>
+<block>
+ <name>FEC Async Decoder</name>
+ <key>fec_async_decoder</key>
+ <import>from gnuradio import fec</import>
+ <make>fec.async_decoder($decoder, $itype.size, $otype.size)</make>
+
+ <param>
+ <name>Constituent Decoder</name>
+ <key>decoder</key>
+ <value>decoder_variable</value>
+ <type>raw</type>
+ </param>
+
+ <param>
+ <name>Input Type</name>
+ <key>itype</key>
+ <type>enum</type>
+ <option>
+ <name>Byte</name>
+ <key>byte</key>
+ <opt>size:gr.sizeof_char</opt>
+ </option>
+ <option>
+ <name>Float</name>
+ <key>float</key>
+ <opt>size:gr.sizeof_float</opt>
+ </option>
+ </param>
+
+ <param>
+ <name>Output Type</name>
+ <key>otype</key>
+ <type>enum</type>
+ <option>
+ <name>Byte</name>
+ <key>byte</key>
+ <opt>size:gr.sizeof_char</opt>
+ </option>
+ <option>
+ <name>Float</name>
+ <key>float</key>
+ <opt>size:gr.sizeof_float</opt>
+ </option>
+ </param>
+
+ <sink>
+ <name>pdus</name>
+ <type>message</type>
+ <optional>1</optional>
+ </sink>
+
+ <source>
+ <name>pdus</name>
+ <type>message</type>
+ <optional>1</optional>
+ </source>
+
+ <doc>
+ </doc>
+
+</block>
diff --git a/gr-fec/grc/fec_async_encoder.xml b/gr-fec/grc/fec_async_encoder.xml new file mode 100644 index 0000000000..5b58c645ed --- /dev/null +++ b/gr-fec/grc/fec_async_encoder.xml @@ -0,0 +1,30 @@ +<?xml version="1.0"?>
+<block>
+ <name>FEC Async Encoder</name>
+ <key>fec_async_encoder</key>
+ <import>from gnuradio import fec</import>
+ <make>fec.async_encoder($encoder)</make>
+
+ <param>
+ <name>Constituent Encoder</name>
+ <key>encoder</key>
+ <value>encoder_variable</value>
+ <type>raw</type>
+ </param>
+
+ <sink>
+ <name>pdus</name>
+ <type>message</type>
+ <optional>1</optional>
+ </sink>
+
+ <source>
+ <name>pdus</name>
+ <type>message</type>
+ <optional>1</optional>
+ </source>
+
+ <doc>
+ </doc>
+
+</block>
diff --git a/gr-fec/grc/fec_block_tree.xml b/gr-fec/grc/fec_block_tree.xml index 88282104b4..93b282903c 100644 --- a/gr-fec/grc/fec_block_tree.xml +++ b/gr-fec/grc/fec_block_tree.xml @@ -25,6 +25,10 @@ <block>fec_extended_decoder</block> <block>fec_generic_encoder</block> <block>fec_generic_decoder</block> + <block>fec_tagged_encoder</block> + <block>fec_tagged_decoder</block> + <block>fec_async_encoder</block> + <block>fec_async_decoder</block> <block>fec_decode_ccsds_27_fb</block> <block>fec_encode_ccsds_27_bb</block> <block>fec_puncture_xx</block> diff --git a/gr-fec/grc/fec_tagged_decoder.xml b/gr-fec/grc/fec_tagged_decoder.xml new file mode 100644 index 0000000000..9f8cf255e3 --- /dev/null +++ b/gr-fec/grc/fec_tagged_decoder.xml @@ -0,0 +1,67 @@ +<?xml version="1.0"?> +<block> + <name>FEC Tagged Decoder</name> + <key>fec_tagged_decoder</key> + <import>from gnuradio import fec</import> + <make>fec.tagged_decoder($decoder, $itype.size, $otype.size, $lentagname)</make> + + <param> + <name>Constituent Decoder</name> + <key>decoder</key> + <value>decoder_variable</value> + <type>raw</type> + </param> + + <param> + <name>Input Type</name> + <key>itype</key> + <type>enum</type> + <option> + <name>Byte</name> + <key>byte</key> + <opt>size:gr.sizeof_char</opt> + </option> + <option> + <name>Float</name> + <key>float</key> + <opt>size:gr.sizeof_float</opt> + </option> + </param> + + <param> + <name>Output Type</name> + <key>otype</key> + <type>enum</type> + <option> + <name>Byte</name> + <key>byte</key> + <opt>size:gr.sizeof_char</opt> + </option> + <option> + <name>Float</name> + <key>float</key> + <opt>size:gr.sizeof_float</opt> + </option> + </param> + + <param> + <name>Length Tag Name</name> + <key>lentagname</key> + <value>"pkt_len"</value> + <type>string</type> + </param> + + <sink> + <name>in</name> + <type>$itype</type> + </sink> + + <source> + <name>out</name> + <type>$otype</type> + </source> + + <doc> + </doc> + +</block> diff --git a/gr-fec/grc/fec_tagged_encoder.xml b/gr-fec/grc/fec_tagged_encoder.xml new file mode 100644 index 0000000000..300d1866b9 --- /dev/null +++ b/gr-fec/grc/fec_tagged_encoder.xml @@ -0,0 +1,67 @@ +<?xml version="1.0"?> +<block> + <name>FEC Tagged Encoder</name> + <key>fec_tagged_encoder</key> + <import>from gnuradio import fec</import> + <make>fec.tagged_encoder($encoder, $itype.size, $otype.size, $lentagname)</make> + + <param> + <name>Constituent Encoder</name> + <key>encoder</key> + <value>encoder_variable</value> + <type>raw</type> + </param> + + <param> + <name>Input Type</name> + <key>itype</key> + <type>enum</type> + <option> + <name>Byte</name> + <key>byte</key> + <opt>size:gr.sizeof_char</opt> + </option> + <option> + <name>Float</name> + <key>float</key> + <opt>size:gr.sizeof_float</opt> + </option> + </param> + + <param> + <name>Output Type</name> + <key>otype</key> + <type>enum</type> + <option> + <name>Byte</name> + <key>byte</key> + <opt>size:gr.sizeof_char</opt> + </option> + <option> + <name>Float</name> + <key>float</key> + <opt>size:gr.sizeof_float</opt> + </option> + </param> + + <param> + <name>Length Tag Name</name> + <key>lentagname</key> + <value>"pkt_len"</value> + <type>string</type> + </param> + + <sink> + <name>in</name> + <type>$itype</type> + </sink> + + <source> + <name>out</name> + <type>$otype</type> + </source> + + <doc> + </doc> + +</block> diff --git a/gr-fec/grc/variable_dummy_decoder_def_list.xml b/gr-fec/grc/variable_dummy_decoder_def_list.xml index f89a42b50c..49728d357f 100644 --- a/gr-fec/grc/variable_dummy_decoder_def_list.xml +++ b/gr-fec/grc/variable_dummy_decoder_def_list.xml @@ -9,10 +9,12 @@ <key>variable_dummy_decoder_def</key> <import>from gnuradio import fec</import> <var_make> -#if int($ndim())==1 # -self.$(id) = $(id) = map( (lambda a: fec.dummy_decoder.make($framebits)), range(0,$dim1) ); #slurp +#if int($ndim())==0 # +self.$(id) = $(id) = fec.dummy_decoder.make($framebits) +#else if int($ndim())==1 # +self.$(id) = $(id) = map((lambda a: fec.dummy_decoder.make($framebits)), range(0,$dim1)) #slurp #else -self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.dummy_decoder.make($framebits)), range(0,$dim2) ) ), range(0,$dim1)); #slurp +self.$(id) = $(id) = map((lambda b: map((lambda a: fec.dummy_decoder.make($framebits)), range(0,$dim2))), range(0,$dim1)) #slurp #end if</var_make> <make></make> @@ -30,6 +32,10 @@ self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.dummy_decoder.make($fr <value></value> <type>enum</type> <option> + <name>0</name> + <key>0</key> + </option> + <option> <name>1</name> <key>1</key> </option> diff --git a/gr-fec/grc/variable_dummy_encoder_def_list.xml b/gr-fec/grc/variable_dummy_encoder_def_list.xml index ca59c0799c..086ac20876 100644 --- a/gr-fec/grc/variable_dummy_encoder_def_list.xml +++ b/gr-fec/grc/variable_dummy_encoder_def_list.xml @@ -9,10 +9,12 @@ <key>variable_dummy_encoder_def</key> <import>from gnuradio import fec</import> <var_make> -#if int($ndim())==1 # -self.$(id) = $(id) = map( (lambda a: fec.dummy_encoder_make($framebits)), range(0,$dim1) ); #slurp +#if int($ndim())==0 # +self.$(id) = $(id) = fec.dummy_encoder_make($framebits) +#else if int($ndim())==1 # +self.$(id) = $(id) = map((lambda a: fec.dummy_encoder_make($framebits)), range(0,$dim1)) #slurp #else -self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.dummy_encoder_make($framebits)), range(0,$dim2) ) ), range(0,$dim1)); #slurp +self.$(id) = $(id) = map((lambda b: map((lambda a: fec.dummy_encoder_make($framebits)), range(0,$dim2))), range(0,$dim1)) #slurp #end if</var_make> <make></make> @@ -30,6 +32,10 @@ self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.dummy_encoder_make($fr <value></value> <type>enum</type> <option> + <name>0</name> + <key>0</key> + </option> + <option> <name>1</name> <key>1</key> </option> diff --git a/gr-fec/grc/variable_repetition_decoder_def_list.xml b/gr-fec/grc/variable_repetition_decoder_def_list.xml index 1e94f265b2..c3ab1dcc99 100644 --- a/gr-fec/grc/variable_repetition_decoder_def_list.xml +++ b/gr-fec/grc/variable_repetition_decoder_def_list.xml @@ -9,10 +9,11 @@ <key>variable_repetition_decoder_def</key> <import>from gnuradio import fec</import> <var_make> -#if int($ndim())==1 # -self.$(id) = $(id) = map( (lambda a: fec.repetition_decoder.make($framebits, $rep, $prob)), range(0,$dim1) ); #slurp +#if int($ndim())==0 # +self.$(id) = $(id) = fec.repetition_decoder.make($framebits, $rep, $prob) +self.$(id) = $(id) = map( (lambda a: fec.repetition_decoder.make($framebits, $rep, $prob)), range(0,$dim1) ) #slurp #else -self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.repetition_decoder.make($framebits, $rep, $prob)), range(0,$dim2) ) ), range(0,$dim1)); #slurp +self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.repetition_decoder.make($framebits, $rep, $prob)), range(0,$dim2) ) ), range(0,$dim1)) #slurp #end if</var_make> <make></make> @@ -30,6 +31,10 @@ self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.repetition_decoder.mak <value></value> <type>enum</type> <option> + <name>0</name> + <key>0</key> + </option> + <option> <name>1</name> <key>1</key> </option> diff --git a/gr-fec/grc/variable_repetition_encoder_def_list.xml b/gr-fec/grc/variable_repetition_encoder_def_list.xml index f5d877f838..13c5682895 100644 --- a/gr-fec/grc/variable_repetition_encoder_def_list.xml +++ b/gr-fec/grc/variable_repetition_encoder_def_list.xml @@ -9,10 +9,12 @@ <key>variable_repetition_encoder_def</key> <import>from gnuradio import fec</import> <var_make> -#if int($ndim())==1 # -self.$(id) = $(id) = map( (lambda a: fec.repetition_encoder_make($framebits, $rep)), range(0,$dim1) ); #slurp +#if int($ndim())==0 # +self.$(id) = $(id) = fec.repetition_encoder_make($framebits, $rep) +#else if int($ndim())==1 # +self.$(id) = $(id) = map( (lambda a: fec.repetition_encoder_make($framebits, $rep)), range(0,$dim1) ) #slurp #else -self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.repetition_encoder_make($framebits, $rep)), range(0,$dim2) ) ), range(0,$dim1)); #slurp +self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.repetition_encoder_make($framebits, $rep)), range(0,$dim2) ) ), range(0,$dim1)) #slurp #end if</var_make> <make></make> @@ -30,6 +32,10 @@ self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.repetition_encoder_mak <value></value> <type>enum</type> <option> + <name>0</name> + <key>0</key> + </option> + <option> <name>1</name> <key>1</key> </option> diff --git a/gr-fec/include/gnuradio/fec/CMakeLists.txt b/gr-fec/include/gnuradio/fec/CMakeLists.txt index 4d3b58a7f0..a91a68a996 100644 --- a/gr-fec/include/gnuradio/fec/CMakeLists.txt +++ b/gr-fec/include/gnuradio/fec/CMakeLists.txt @@ -82,6 +82,8 @@ install(FILES encoder.h tagged_decoder.h tagged_encoder.h + async_decoder.h + async_encoder.h cc_decoder.h cc_encoder.h ccsds_encoder.h diff --git a/gr-fec/include/gnuradio/fec/async_decoder.h b/gr-fec/include/gnuradio/fec/async_decoder.h new file mode 100644 index 0000000000..2053d6494f --- /dev/null +++ b/gr-fec/include/gnuradio/fec/async_decoder.h @@ -0,0 +1,69 @@ +/* -*- c++ -*- */
+/*
+ * Copyright 2014 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_FEC_ASYNC_DECODER_H
+#define INCLUDED_FEC_ASYNC_DECODER_H
+
+#include <gnuradio/fec/api.h>
+#include <gnuradio/fec/generic_decoder.h>
+#include <gnuradio/block.h>
+#include <boost/shared_ptr.hpp>
+
+namespace gr {
+ namespace fec {
+
+ /*!
+ * \brief Creates the decoder block for use in GNU Radio
+ * flowgraphs from a given FECAPI object derived from the
+ * generic_decoder class.
+ * \ingroup error_coding_blk
+ *
+ * \details
+ *
+ * Decodes frames received as a PDU over a message port.
+ */
+ class FEC_API async_decoder : virtual public block
+ {
+ public:
+ typedef boost::shared_ptr<async_decoder> sptr;
+
+ /*!
+ * Build the PDU-based FEC decoder block from an FECAPI decoder object.
+ *
+ * \param my_decoder An FECAPI decoder object child of the generic_decoder class.
+ * \param input_item_size size of a block of data for the decoder.
+ * \param output_item_size size of a block of data the decoder will produce.
+ */
+ static sptr make(generic_decoder::sptr my_decoder,
+ size_t input_item_size,
+ size_t output_item_size);
+
+ virtual int general_work(int noutput_items,
+ gr_vector_int& ninput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items) = 0;
+ };
+
+ } /* namespace fec */
+} /* namespace gr */
+
+#endif /* INCLUDED_FEC_ASYNC_DECODER_H */
diff --git a/gr-fec/include/gnuradio/fec/async_encoder.h b/gr-fec/include/gnuradio/fec/async_encoder.h new file mode 100644 index 0000000000..fef1883b56 --- /dev/null +++ b/gr-fec/include/gnuradio/fec/async_encoder.h @@ -0,0 +1,65 @@ +/* -*- c++ -*- */
+/*
+ * Copyright 2014 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_FEC_ASYNC_ENCODER_H
+#define INCLUDED_FEC_ASYNC_ENCODER_H
+
+#include <gnuradio/fec/api.h>
+#include <gnuradio/fec/generic_encoder.h>
+#include <gnuradio/block.h>
+#include <boost/shared_ptr.hpp>
+
+namespace gr {
+ namespace fec {
+
+ /*!
+ * \brief Creates the encoder block for use in GNU Radio
+ * flowgraphs from a given FECAPI object derived from the
+ * generic_encoder class.
+ * \ingroup error_coding_blk
+ *
+ * \details
+ *
+ * Encodes frames received as a PDU over a message port.
+ */
+ class FEC_API async_encoder : virtual public block
+ {
+ public:
+ typedef boost::shared_ptr<async_encoder> sptr;
+
+ /*!
+ * Build the PDU-based FEC encoder block from an FECAPI encoder object.
+ *
+ * \param my_encoder An FECAPI encoder object child of the generic_encoder class.
+ */
+ static sptr make(generic_encoder::sptr my_encoder);
+
+ virtual int general_work(int noutput_items,
+ gr_vector_int& ninput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items) = 0;
+ };
+
+ } /* namespace fec */
+} /* namespace gr */
+
+#endif /* INCLUDED_FEC_ASYNC_ENCODER_H */
diff --git a/gr-fec/include/gnuradio/fec/tagged_decoder.h b/gr-fec/include/gnuradio/fec/tagged_decoder.h index 6249037579..4eba17a7a2 100644 --- a/gr-fec/include/gnuradio/fec/tagged_decoder.h +++ b/gr-fec/include/gnuradio/fec/tagged_decoder.h @@ -28,7 +28,6 @@ #include <gnuradio/tagged_stream_block.h> #include <boost/shared_ptr.hpp> #include <boost/shared_array.hpp> -#include <boost/format.hpp> namespace gr { namespace fec { diff --git a/gr-fec/lib/CMakeLists.txt b/gr-fec/lib/CMakeLists.txt index 42940be4c4..16f47c8ab8 100644 --- a/gr-fec/lib/CMakeLists.txt +++ b/gr-fec/lib/CMakeLists.txt @@ -55,6 +55,8 @@ list(APPEND gnuradio_fec_sources encoder_impl.cc tagged_decoder_impl.cc tagged_encoder_impl.cc + async_decoder_impl.cc + async_encoder_impl.cc cc_decoder_impl.cc cc_encoder_impl.cc ccsds_encoder_impl.cc diff --git a/gr-fec/lib/async_decoder_impl.cc b/gr-fec/lib/async_decoder_impl.cc new file mode 100644 index 0000000000..b235f959f5 --- /dev/null +++ b/gr-fec/lib/async_decoder_impl.cc @@ -0,0 +1,111 @@ +/* -*- c++ -*- */
+/*
+ * Copyright 2014 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "async_decoder_impl.h"
+#include <gnuradio/io_signature.h>
+#include <stdio.h>
+
+
+namespace gr {
+ namespace fec {
+
+ async_decoder::sptr
+ async_decoder::make(generic_decoder::sptr my_decoder,
+ size_t input_item_size, size_t output_item_size)
+ {
+ return gnuradio::get_initial_sptr
+ (new async_decoder_impl(my_decoder, input_item_size, output_item_size));
+ }
+
+ async_decoder_impl::async_decoder_impl(generic_decoder::sptr my_decoder,
+ size_t input_item_size,
+ size_t output_item_size)
+ : block("async_decoder",
+ io_signature::make(0,0,0),
+ io_signature::make(0,0,0)),
+ d_input_item_size(input_item_size), d_output_item_size(output_item_size)
+ {
+ d_decoder = my_decoder;
+ message_port_register_in(pmt::mp("pdus"));
+ message_port_register_out(pmt::mp("pdus"));
+ set_msg_handler(pmt::mp("pdus"), boost::bind(&async_decoder_impl::decode, this ,_1));
+ }
+
+ async_decoder_impl::~async_decoder_impl()
+ {
+ }
+
+ void
+ async_decoder_impl::decode(pmt::pmt_t msg)
+ {
+ // extract input pdu
+ pmt::pmt_t meta(pmt::car(msg));
+ pmt::pmt_t bits(pmt::cdr(msg));
+
+ int nbits = pmt::length(bits);
+ int blksize_in = d_decoder->get_input_size();
+ int blksize_out = d_decoder->get_output_size();
+ int nblocks = nbits/blksize_in;
+
+ // nbits sanity check
+ if(nbits % blksize_in != 0){
+ throw std::runtime_error((boost::format("nbits_in %% blksize_in != 0 in fec_decoder_asyn! %d bits in, %d blksize") \
+ % nbits % blksize_in).str());
+ }
+
+ printf("decoder :: blksize_in = %d, blksize_out = %d\n", blksize_in, blksize_out);
+
+ pmt::pmt_t outvec(pmt::make_u8vector(blksize_out * nblocks, 0xFF));
+ printf("decoder :: outvec len = %d (%d blks)\n", blksize_out * nblocks, nblocks);
+
+ // get pmt buffer pointers
+ size_t o0(0);
+ const float* f32in = pmt::f32vector_elements(bits, o0);
+ uint8_t* u8out = pmt::u8vector_writable_elements(outvec, o0);
+
+ // loop over n fec blocks
+ for(int i = 0; i < nblocks; i++) {
+ size_t offset_in = i * blksize_in;
+ size_t offset_out = i * blksize_out;
+
+ // DECODE!
+ d_decoder->generic_work((void*)&f32in[offset_in], (void*)&u8out[offset_out]);
+ }
+
+ message_port_pub(pmt::mp("pdus"), pmt::cons(meta, outvec));
+ }
+
+ int
+ async_decoder_impl::general_work(int noutput_items,
+ gr_vector_int& ninput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items)
+ {
+ return noutput_items;
+ }
+
+ } /* namespace fec */
+} /* namespace gr */
diff --git a/gr-fec/lib/async_decoder_impl.h b/gr-fec/lib/async_decoder_impl.h new file mode 100644 index 0000000000..9d1744c49d --- /dev/null +++ b/gr-fec/lib/async_decoder_impl.h @@ -0,0 +1,55 @@ +/* -*- c++ -*- */
+/*
+ * Copyright 2014 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_FEC_ASYNC_DECODER_IMPL_H
+#define INCLUDED_FEC_ASYNC_DECODER_IMPL_H
+
+#include <gnuradio/fec/async_decoder.h>
+
+namespace gr {
+ namespace fec {
+
+ class FEC_API async_decoder_impl : public async_decoder
+ {
+ private:
+ generic_decoder::sptr d_decoder;
+ size_t d_input_item_size;
+ size_t d_output_item_size;
+
+ void decode(pmt::pmt_t msg);
+
+ public:
+ async_decoder_impl(generic_decoder::sptr my_decoder,
+ size_t input_item_size,
+ size_t output_item_size);
+ ~async_decoder_impl();
+
+ int general_work(int noutput_items,
+ gr_vector_int& ninput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
+ };
+
+ } /* namespace fec */
+} /* namespace gr */
+
+#endif /* INCLUDED_FEC_ASYNC_DECODER_IMPL_H */
diff --git a/gr-fec/lib/async_encoder_impl.cc b/gr-fec/lib/async_encoder_impl.cc new file mode 100644 index 0000000000..b12ece1f3a --- /dev/null +++ b/gr-fec/lib/async_encoder_impl.cc @@ -0,0 +1,118 @@ +/* -*- c++ -*- */
+/*
+ * Copyright 2014 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "async_encoder_impl.h"
+#include <gnuradio/io_signature.h>
+#include <stdio.h>
+
+namespace gr {
+ namespace fec {
+
+ async_encoder::sptr
+ async_encoder::make(generic_encoder::sptr my_encoder)
+ {
+ return gnuradio::get_initial_sptr
+ (new async_encoder_impl(my_encoder));
+ }
+
+ async_encoder_impl::async_encoder_impl(generic_encoder::sptr my_encoder)
+ : block("async_encoder",
+ io_signature::make(0,0,0),
+ io_signature::make(0,0,0)),
+ d_input_item_size(sizeof(char)), d_output_item_size(sizeof(char))
+ {
+ d_encoder = my_encoder;
+ message_port_register_in(pmt::mp("pdus"));
+ message_port_register_out(pmt::mp("pdus"));
+ set_msg_handler(pmt::mp("pdus"), boost::bind(&async_encoder_impl::encode, this ,_1) );
+ }
+
+ async_encoder_impl::~async_encoder_impl()
+ {
+ }
+
+ void
+ async_encoder_impl::encode(pmt::pmt_t msg)
+ {
+ // extract input pdu
+ pmt::pmt_t meta(pmt::car(msg));
+ pmt::pmt_t bits(pmt::cdr(msg));
+
+ int nbits = pmt::length(bits);
+ int blksize_in = d_encoder->get_input_size();
+ int blksize_out = (int)d_encoder->rate();
+ int nblocks = nbits/blksize_in;
+
+ printf("async_encoder: blksize_in = %d, blksize_out = %d nblocks=%d\n",
+ blksize_in, blksize_out, nblocks);
+
+ pmt::pmt_t outvec(pmt::make_u8vector(blksize_out * nblocks, 0xFF));
+
+ printf("encoder: outvec len = %d\n", blksize_out * nblocks);
+
+ // get pmt buffer pointers
+ size_t o0(0);
+ const uint8_t* u8in = pmt::u8vector_elements(bits,o0);
+ uint8_t* u8tmp = pmt::u8vector_writable_elements(bits,o0);
+ uint8_t* u8out = pmt::u8vector_writable_elements(outvec,o0);
+
+ // alloc playspace
+ std::vector<uint8_t> blks_out(blksize_out);
+
+ // loop over n fec blocks
+ for(int i = 0; i < nblocks; i++) {
+ size_t offset_in = i * blksize_in;
+ size_t offset_out = i * blksize_out;
+
+ for(int jj = 0; jj < blksize_in; jj++) {
+ u8tmp[offset_in + jj] = 0x01 & u8in[offset_in + jj];
+ //printf("in[%zd]=%u ", offset_in+jj, u8tmp[offset_in + jj]);
+ //fflush(stdout);
+ }
+
+ // ENCODE!
+ d_encoder->generic_work((void*)&u8tmp[offset_in], (void*)&blks_out[0]);
+
+ // convert float -> u8
+ for(int j = 0; j < blksize_out; j++) {
+ u8out[offset_out + j] = (blks_out[j] > 0);
+ }
+ }
+
+ message_port_pub(pmt::mp("pdus"), pmt::cons(meta, outvec));
+ }
+
+ int
+ async_encoder_impl::general_work(int noutput_items,
+ gr_vector_int& ninput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items)
+ {
+ return noutput_items;
+ }
+
+ } /* namespace fec */
+} /* namespace gr */
diff --git a/gr-fec/lib/async_encoder_impl.h b/gr-fec/lib/async_encoder_impl.h new file mode 100644 index 0000000000..99b628cc9b --- /dev/null +++ b/gr-fec/lib/async_encoder_impl.h @@ -0,0 +1,53 @@ +/* -*- c++ -*- */
+/*
+ * Copyright 2014 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_FEC_ASYNC_ENCODER_IMPL_H
+#define INCLUDED_FEC_ASYNC_ENCODER_IMPL_H
+
+#include <gnuradio/fec/async_encoder.h>
+
+namespace gr {
+ namespace fec {
+
+ class FEC_API async_encoder_impl : public async_encoder
+ {
+ private:
+ generic_encoder::sptr d_encoder;
+ size_t d_input_item_size;
+ size_t d_output_item_size;
+
+ void encode(pmt::pmt_t msg);
+
+ public:
+ async_encoder_impl(generic_encoder::sptr my_encoder);
+ ~async_encoder_impl();
+
+ int general_work(int noutput_items,
+ gr_vector_int& ninput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
+ };
+
+ } /* namespace fec */
+} /* namespace gr */
+
+#endif /* INCLUDED_FEC_ASYNC_ENCODER_IMPL_H */
diff --git a/gr-fec/swig/fec_swig.i b/gr-fec/swig/fec_swig.i index 051896c942..8ad845fd1c 100644 --- a/gr-fec/swig/fec_swig.i +++ b/gr-fec/swig/fec_swig.i @@ -42,6 +42,8 @@ #include "gnuradio/fec/encoder.h" #include "gnuradio/fec/tagged_decoder.h" #include "gnuradio/fec/tagged_encoder.h" +#include "gnuradio/fec/async_decoder.h" +#include "gnuradio/fec/async_encoder.h" #include "gnuradio/fec/cc_decoder.h" #include "gnuradio/fec/cc_encoder.h" #include "gnuradio/fec/ccsds_encoder.h" @@ -64,6 +66,8 @@ %include "gnuradio/fec/encoder.h" %include "gnuradio/fec/tagged_decoder.h" %include "gnuradio/fec/tagged_encoder.h" +%include "gnuradio/fec/async_decoder.h" +%include "gnuradio/fec/async_encoder.h" %include "gnuradio/fec/cc_decoder.h" %include "gnuradio/fec/cc_encoder.h" %include "gnuradio/fec/ccsds_encoder.h" @@ -83,6 +87,8 @@ GR_SWIG_BLOCK_MAGIC2(fec, decoder); GR_SWIG_BLOCK_MAGIC2(fec, encoder); GR_SWIG_BLOCK_MAGIC2(fec, tagged_decoder); GR_SWIG_BLOCK_MAGIC2(fec, tagged_encoder); +GR_SWIG_BLOCK_MAGIC2(fec, async_decoder); +GR_SWIG_BLOCK_MAGIC2(fec, async_encoder); GR_SWIG_BLOCK_MAGIC2(fec, decode_ccsds_27_fb); GR_SWIG_BLOCK_MAGIC2(fec, encode_ccsds_27_bb); GR_SWIG_BLOCK_MAGIC2(fec, ber_bf); |