diff options
author | Tom Rondeau <tom@trondeau.com> | 2014-05-19 15:53:10 -0400 |
---|---|---|
committer | Tom Rondeau <tom@trondeau.com> | 2014-05-19 19:41:48 -0400 |
commit | fbbde8d01ab43b7a3ffd5ca9d65cf50a84e2a7be (patch) | |
tree | 70b64a639fcd0d26b1b3204627b42183d1b1add3 /gr-fec | |
parent | 39c8a266183789b352622f03d518ba6c37ba3168 (diff) |
fec: wip: async encoder/decoder working deployments.
Decoder uses API signatures to do shifting, data conversions. New examples showing use.
Diffstat (limited to 'gr-fec')
-rw-r--r-- | gr-fec/examples/CMakeLists.txt | 1 | ||||
-rw-r--r-- | gr-fec/examples/fecapi_async_decoders.grc | 803 | ||||
-rw-r--r-- | gr-fec/examples/fecapi_async_encoders.grc | 500 | ||||
-rw-r--r-- | gr-fec/examples/fecapi_async_packed_decoders.grc | 1812 | ||||
-rw-r--r-- | gr-fec/examples/fecapi_async_to_stream.grc | 308 | ||||
-rw-r--r-- | gr-fec/grc/fec_async_decoder.xml | 37 | ||||
-rw-r--r-- | gr-fec/grc/fec_async_encoder.xml | 21 | ||||
-rw-r--r-- | gr-fec/include/gnuradio/fec/async_decoder.h | 7 | ||||
-rw-r--r-- | gr-fec/include/gnuradio/fec/async_encoder.h | 2 | ||||
-rw-r--r-- | gr-fec/lib/async_decoder_impl.cc | 172 | ||||
-rw-r--r-- | gr-fec/lib/async_decoder_impl.h | 20 | ||||
-rw-r--r-- | gr-fec/lib/async_encoder_impl.cc | 74 | ||||
-rw-r--r-- | gr-fec/lib/async_encoder_impl.h | 7 | ||||
-rw-r--r-- | gr-fec/lib/cc_encoder_impl.cc | 2 |
14 files changed, 2888 insertions, 878 deletions
diff --git a/gr-fec/examples/CMakeLists.txt b/gr-fec/examples/CMakeLists.txt index fa7a3d5440..b203e9cc8b 100644 --- a/gr-fec/examples/CMakeLists.txt +++ b/gr-fec/examples/CMakeLists.txt @@ -28,6 +28,7 @@ install( fecapi_async_decoders.grc fecapi_async_encoders.grc fecapi_async_to_stream.grc + fecapi_async_packed_decoders.grc fecapi_tagged_decoders.grc fecapi_tagged_encoders.grc DESTINATION ${GR_PKG_FEC_EXAMPLES_DIR} diff --git a/gr-fec/examples/fecapi_async_decoders.grc b/gr-fec/examples/fecapi_async_decoders.grc index 2598e84d1d..08a8826ba6 100644 --- a/gr-fec/examples/fecapi_async_decoders.grc +++ b/gr-fec/examples/fecapi_async_decoders.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Sat May 17 11:37:22 2014</timestamp> + <timestamp>Mon May 19 19:34:15 2014</timestamp> <block> <key>options</key> <param> @@ -173,6 +173,33 @@ </param> </block> <block> + <key>variable</key> + <param> + <key>id</key> + <value>rep</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(785, 473)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> <key>parameter</key> <param> <key>id</key> @@ -278,10 +305,10 @@ </param> </block> <block> - <key>blocks_vector_source_x</key> + <key>blocks_throttle</key> <param> <key>id</key> - <value>blocks_vector_source_x_0_1_0</value> + <value>blocks_throttle_0</value> </param> <param> <key>_enabled</key> @@ -292,22 +319,18 @@ <value>byte</value> </param> <param> - <key>vector</key> - <value>(frame_size/15)*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value> + <key>samples_per_second</key> + <value>samp_rate</value> </param> <param> - <key>tags</key> - <value>[]</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>repeat</key> + <key>ignoretag</key> <value>True</value> </param> <param> - <key>vlen</key> - <value>1</value> - </param> - <param> <key>alias</key> <value></value> </param> @@ -325,58 +348,50 @@ </param> <param> <key>_coordinate</key> - <value>(61, 140)</value> + <value>(109, 224)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>blocks_throttle</key> + <key>variable_dummy_encoder_def</key> <param> <key>id</key> - <value>blocks_throttle_0</value> + <value>enc_dummy</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>value</key> + <value>"ok"</value> </param> <param> - <key>samples_per_second</key> - <value>samp_rate</value> + <key>ndim</key> + <value>0</value> </param> <param> - <key>vlen</key> + <key>dim1</key> <value>1</value> </param> <param> - <key>ignoretag</key> - <value>True</value> + <key>dim2</key> + <value>1</value> </param> <param> - <key>alias</key> - <value></value> + <key>framebits</key> + <value>8000</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>(109, 224)</value> + <value>(599, 538)</value> </param> <param> <key>_rotation</key> @@ -384,54 +399,46 @@ </param> </block> <block> - <key>blocks_stream_to_tagged_stream</key> + <key>variable_dummy_decoder_def</key> <param> <key>id</key> - <value>blocks_stream_to_tagged_stream_0_0</value> + <value>dec_dummy</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>value</key> + <value>"ok"</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>ndim</key> + <value>0</value> </param> <param> - <key>packet_len</key> - <value>frame_size</value> + <key>dim1</key> + <value>1</value> </param> <param> - <key>len_tag_key</key> - <value>pkt_len</value> + <key>dim2</key> + <value>1</value> </param> <param> - <key>alias</key> - <value></value> + <key>framebits</key> + <value>8000</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>(83, 279)</value> + <value>(598, 636)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> @@ -470,30 +477,38 @@ </param> <param> <key>_coordinate</key> - <value>(83, 369)</value> + <value>(364, 143)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>blocks_char_to_float</key> + <key>blocks_stream_to_tagged_stream</key> <param> <key>id</key> - <value>blocks_char_to_float_0_1</value> + <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>scale</key> - <value>1</value> + <key>packet_len</key> + <value>frame_size</value> + </param> + <param> + <key>len_tag_key</key> + <value>pkt_len</value> </param> <param> <key>alias</key> @@ -513,26 +528,30 @@ </param> <param> <key>_coordinate</key> - <value>(707, 188)</value> + <value>(69, 281)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> - <key>digital_crc32_async_bb</key> + <key>blocks_pdu_to_tagged_stream</key> <param> <key>id</key> - <value>digital_crc32_async_bb_0</value> + <value>blocks_pdu_to_tagged_stream_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>check</key> - <value>False</value> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>pkt_len</value> </param> <param> <key>alias</key> @@ -552,7 +571,7 @@ </param> <param> <key>_coordinate</key> - <value>(101, 441)</value> + <value>(411, 239)</value> </param> <param> <key>_rotation</key> @@ -560,34 +579,18 @@ </param> </block> <block> - <key>analog_random_source_x</key> + <key>digital_map_bb</key> <param> <key>id</key> - <value>analog_random_source_x_0</value> + <value>digital_map_bb_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> + <value>True</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>map</key> + <value>[-1,1]</value> </param> <param> <key>alias</key> @@ -607,7 +610,7 @@ </param> <param> <key>_coordinate</key> - <value>(50, 502)</value> + <value>(409, 311)</value> </param> <param> <key>_rotation</key> @@ -646,7 +649,7 @@ </param> <param> <key>rep</key> - <value>3</value> + <value>rep</value> </param> <param> <key>alias</key> @@ -662,49 +665,6 @@ </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>8000</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(598, 636)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>variable_repetition_decoder_def</key> <param> <key>id</key> @@ -720,7 +680,7 @@ </param> <param> <key>ndim</key> - <value>1</value> + <value>0</value> </param> <param> <key>dim1</key> @@ -736,7 +696,7 @@ </param> <param> <key>rep</key> - <value>3</value> + <value>rep</value> </param> <param> <key>prob</key> @@ -756,63 +716,24 @@ </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_0_1</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>"ok"</value> - </param> - <param> - <key>ndim</key> - <value>0</value> - </param> - <param> - <key>dim1</key> + <key>vlen</key> <value>1</value> </param> <param> - <key>dim2</key> + <key>scale</key> <value>1</value> </param> <param> - <key>framebits</key> - <value>8000</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(599, 538)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>digital_map_bb</key> - <param> - <key>id</key> - <value>digital_map_bb_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>map</key> - <value>[-1,1]</value> - </param> - <param> <key>alias</key> <value></value> </param> @@ -830,7 +751,7 @@ </param> <param> <key>_coordinate</key> - <value>(713, 279)</value> + <value>(408, 375)</value> </param> <param> <key>_rotation</key> @@ -841,7 +762,7 @@ <key>blocks_repack_bits_bb</key> <param> <key>id</key> - <value>blocks_repack_bits_bb_0</value> + <value>blocks_repack_bits_bb_0_0</value> </param> <param> <key>_enabled</key> @@ -864,10 +785,6 @@ <value>False</value> </param> <param> - <key>swap</key> - <value>False</value> - </param> - <param> <key>alias</key> <value></value> </param> @@ -885,105 +802,7 @@ </param> <param> <key>_coordinate</key> - <value>(452, 354)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blocks_pdu_to_tagged_stream</key> - <param> - <key>id</key> - <value>blocks_pdu_to_tagged_stream_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>tag</key> - <value>pkt_len</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>(400, 252)</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_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>k</key> - <value>1</value> - </param> - <param> - <key>l</key> - <value>8</value> - </param> - <param> - <key>len_tag_key</key> - <value>pkt_len</value> - </param> - <param> - <key>align_output</key> - <value>False</value> - </param> - <param> - <key>swap</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>(925, 309)</value> + <value>(137, 354)</value> </param> <param> <key>_rotation</key> @@ -994,7 +813,7 @@ <key>blocks_char_to_float</key> <param> <key>id</key> - <value>blocks_char_to_float_0_0_0_0</value> + <value>blocks_char_to_float_0_1_0</value> </param> <param> <key>_enabled</key> @@ -1026,50 +845,7 @@ </param> <param> <key>_coordinate</key> - <value>(1200, 191)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>digital_crc32_bb</key> - <param> - <key>id</key> - <value>digital_crc32_bb_0</value> - </param> - <param> - <key>_enabled</key> - <value>False</value> - </param> - <param> - <key>check</key> - <value>True</value> - </param> - <param> - <key>lengthtagname</key> - <value>pkt_len</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>(1214, 332)</value> + <value>(420, 430)</value> </param> <param> <key>_rotation</key> @@ -1108,15 +884,15 @@ </param> <param> <key>ymin</key> - <value>-1</value> + <value>-0.5</value> </param> <param> <key>ymax</key> - <value>140</value> + <value>1.5</value> </param> <param> <key>nconnections</key> - <value>1</value> + <value>2</value> </param> <param> <key>update_time</key> @@ -1156,7 +932,7 @@ </param> <param> <key>label1</key> - <value>Input</value> + <value>Decoded</value> </param> <param> <key>width1</key> @@ -1180,7 +956,7 @@ </param> <param> <key>label2</key> - <value>Dummy</value> + <value>Input</value> </param> <param> <key>width2</key> @@ -1404,7 +1180,140 @@ </param> <param> <key>_coordinate</key> - <value>(1364, 167)</value> + <value>(1059, 368)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>fec_async_decoder</key> + <param> + <key>id</key> + <value>fec_async_decoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>decoder</key> + <value>dec_cc</value> + </param> + <param> + <key>packed</key> + <value>False</value> + </param> + <param> + <key>rev_pack</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>(852, 142)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>id</key> + <value>blocks_pdu_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>tag</key> + <value>pkt_len</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>(860, 224)</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_0_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>(865, 308)</value> </param> <param> <key>_rotation</key> @@ -1426,6 +1335,10 @@ <value>enc_cc</value> </param> <param> + <key>packed</key> + <value>False</value> + </param> + <param> <key>rev_unpack</key> <value>True</value> </param> @@ -1451,7 +1364,7 @@ </param> <param> <key>_coordinate</key> - <value>(429, 148)</value> + <value>(600, 143)</value> </param> <param> <key>_rotation</key> @@ -1459,38 +1372,77 @@ </param> </block> <block> - <key>fec_extended_decoder</key> + <key>blocks_tagged_stream_to_pdu</key> <param> <key>id</key> - <value>fec_extended_decoder_0_1_0</value> + <value>blocks_tagged_stream_to_pdu_1</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>fec_extended_decoder</value> + <key>type</key> + <value>float</value> </param> <param> - <key>decoder_list</key> - <value>dec_cc</value> + <key>tag</key> + <value>pkt_len</value> </param> <param> - <key>threadtype</key> - <value>none</value> + <key>alias</key> + <value></value> </param> <param> - <key>ann</key> - <value>None</value> + <key>affinity</key> + <value></value> </param> <param> - <key>puncpat</key> - <value>puncpat</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>lentagname</key> - <value>pkt_len</value> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(601, 375)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_vector_source_x</key> + <param> + <key>id</key> + <value>blocks_vector_source_x_0_1_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>vector</key> + <value>(frame_size/15)*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value> + </param> + <param> + <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> @@ -1510,12 +1462,67 @@ </param> <param> <key>_coordinate</key> - <value>(883, 156)</value> + <value>(60, 140)</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>(50, 502)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> </block> <block> <key>variable_cc_encoder_def</key> @@ -1565,7 +1572,11 @@ </param> <param> <key>mode</key> - <value>fec.CC_TAILBITING</value> + <value>fec.CC_TERMINATED</value> + </param> + <param> + <key>padding</key> + <value>False</value> </param> <param> <key>alias</key> @@ -1596,7 +1607,7 @@ </param> <param> <key>ndim</key> - <value>1</value> + <value>0</value> </param> <param> <key>dim1</key> @@ -1632,7 +1643,11 @@ </param> <param> <key>mode</key> - <value>fec.CC_TAILBITING</value> + <value>fec.CC_TERMINATED</value> + </param> + <param> + <key>padding</key> + <value>False</value> </param> <param> <key>alias</key> @@ -1640,7 +1655,7 @@ </param> <param> <key>_coordinate</key> - <value>(400, 668)</value> + <value>(401, 687)</value> </param> <param> <key>_rotation</key> @@ -1666,81 +1681,81 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_tagged_stream_to_pdu_0</source_block_id> - <sink_block_id>digital_crc32_async_bb_0</sink_block_id> - <source_key>pdus</source_key> - <sink_key>in</sink_key> - </connection> - <connection> - <source_block_id>digital_crc32_async_bb_0</source_block_id> - <sink_block_id>fec_async_encoder_0</sink_block_id> - <source_key>out</source_key> - <sink_key>in</sink_key> + <source_block_id>digital_map_bb_0</source_block_id> + <sink_block_id>blocks_char_to_float_0_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> </connection> <connection> - <source_block_id>fec_async_encoder_0</source_block_id> - <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_block_id>fec_async_decoder_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id> <source_key>out</source_key> <sink_key>pdus</sink_key> </connection> <connection> <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id> - <sink_block_id>blocks_tagged_stream_to_pdu_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_0_0</source_block_id> - <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_crc32_bb_0</source_block_id> - <sink_block_id>blocks_char_to_float_0_0_0_0</sink_block_id> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>blocks_tagged_stream_to_pdu_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> - <sink_block_id>digital_crc32_bb_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> + <source_block_id>blocks_tagged_stream_to_pdu_0</source_block_id> + <sink_block_id>fec_async_encoder_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> </connection> <connection> <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id> - <sink_block_id>blocks_repack_bits_bb_0</sink_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>blocks_repack_bits_bb_0</source_block_id> - <sink_block_id>digital_map_bb_0</sink_block_id> + <source_block_id>blocks_char_to_float_0_1</source_block_id> + <sink_block_id>blocks_tagged_stream_to_pdu_1</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_map_bb_0</source_block_id> - <sink_block_id>blocks_char_to_float_0_1</sink_block_id> + <source_block_id>blocks_char_to_float_0_0_0_0</source_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_decoder_0_1_0</source_block_id> - <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>blocks_char_to_float_0_1_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_char_to_float_0_1</source_block_id> - <sink_block_id>fec_extended_decoder_0_1_0</sink_block_id> + <source_block_id>blocks_char_to_float_0_1_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> <source_key>0</source_key> - <sink_key>0</sink_key> + <sink_key>1</sink_key> </connection> <connection> - <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <source_block_id>blocks_pdu_to_tagged_stream_0_0</source_block_id> <sink_block_id>blocks_char_to_float_0_0_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> + <connection> + <source_block_id>blocks_tagged_stream_to_pdu_1</source_block_id> + <sink_block_id>fec_async_decoder_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>fec_async_encoder_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_key>out</source_key> + <sink_key>pdus</sink_key> + </connection> </flow_graph> diff --git a/gr-fec/examples/fecapi_async_encoders.grc b/gr-fec/examples/fecapi_async_encoders.grc index 445c0cc84a..3dd0d0f8fe 100644 --- a/gr-fec/examples/fecapi_async_encoders.grc +++ b/gr-fec/examples/fecapi_async_encoders.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Sat May 17 17:21:35 2014</timestamp> + <timestamp>Mon May 19 16:19:57 2014</timestamp> <block> <key>options</key> <param> @@ -333,61 +333,6 @@ </param> </block> <block> - <key>blocks_repack_bits_bb</key> - <param> - <key>id</key> - <value>blocks_repack_bits_bb_0_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>pkt_len</value> - </param> - <param> - <key>align_output</key> - <value>False</value> - </param> - <param> - <key>swap</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>(374, 368)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>blocks_pdu_to_tagged_stream</key> <param> <key>id</key> @@ -431,49 +376,6 @@ </param> </block> <block> - <key>blocks_char_to_float</key> - <param> - <key>id</key> - <value>blocks_char_to_float_0_1</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>(1027, 297)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>qtgui_time_sink_x</key> <param> <key>id</key> @@ -907,61 +809,6 @@ </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>pkt_len</value> - </param> - <param> - <key>align_output</key> - <value>True</value> - </param> - <param> - <key>swap</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>(803, 265)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>blocks_throttle</key> <param> <key>id</key> @@ -1107,100 +954,6 @@ </param> </block> <block> - <key>fec_async_encoder</key> - <param> - <key>id</key> - <value>fec_async_encoder_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>encoder</key> - <value>enc_cc</value> - </param> - <param> - <key>rev_unpack</key> - <value>True</value> - </param> - <param> - <key>rev_pack</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>(371, 281)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>fec_extended_tagged_encoder</key> - <param> - <key>id</key> - <value>fec_extended_tagged_encoder_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>encoder_list</key> - <value>enc_cc</value> - </param> - <param> - <key>puncpat</key> - <value>puncpat</value> - </param> - <param> - <key>lentagname</key> - <value>pkt_len</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>(588, 384)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>variable_cc_encoder_def</key> <param> <key>id</key> @@ -1251,6 +1004,10 @@ <value>fec.CC_STREAMING</value> </param> <param> + <key>padding</key> + <value>False</value> + </param> + <param> <key>alias</key> <value></value> </param> @@ -1451,6 +1208,10 @@ <value>fec.CC_STREAMING</value> </param> <param> + <key>padding</key> + <value>False</value> + </param> + <param> <key>alias</key> <value></value> </param> @@ -1506,6 +1267,249 @@ <value>0</value> </param> </block> + <block> + <key>fec_async_encoder</key> + <param> + <key>id</key> + <value>fec_async_encoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>encoder</key> + <value>enc_cc</value> + </param> + <param> + <key>packed</key> + <value>False</value> + </param> + <param> + <key>rev_unpack</key> + <value>True</value> + </param> + <param> + <key>rev_pack</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>(349, 296)</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>pkt_len</value> + </param> + <param> + <key>align_output</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>(804, 273)</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_1</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>(1034, 297)</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_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>pkt_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>(331, 376)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>fec_extended_tagged_encoder</key> + <param> + <key>id</key> + <value>fec_extended_tagged_encoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>encoder_list</key> + <value>enc_cc</value> + </param> + <param> + <key>puncpat</key> + <value>puncpat</value> + </param> + <param> + <key>lentagname</key> + <value>pkt_len</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>(553, 384)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> <connection> <source_block_id>blocks_vector_source_x_0_1_0</source_block_id> <sink_block_id>blocks_throttle_0</sink_block_id> diff --git a/gr-fec/examples/fecapi_async_packed_decoders.grc b/gr-fec/examples/fecapi_async_packed_decoders.grc new file mode 100644 index 0000000000..dc8fdcbf1c --- /dev/null +++ b/gr-fec/examples/fecapi_async_packed_decoders.grc @@ -0,0 +1,1812 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Mon May 19 19:35:27 2014</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>fecapi_async_decoders</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value></value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>2000,2000</value> + </param> + <param> + <key>generate_options</key> + <value>qt_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>rep</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(785, 473)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(332, 536)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>polys</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>[109, 79]</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(308, 600)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>k</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>7</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(264, 535)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>50000</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 73)</value> + </param> + <param> + <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>(171, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>id</key> + <value>puncpat</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value></value> + </param> + <param> + <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>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(282, 11)</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>(366, 10)</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>(109, 224)</value> + </param> + <param> + <key>_rotation</key> + <value>0</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>(50, 502)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>blocks_vector_source_x</key> + <param> + <key>id</key> + <value>blocks_vector_source_x_0_1_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>vector</key> + <value>(frame_size/15)*[0, 0, 1, 0, 3, 0, 7, 0, 15, 0, 31, 0, 63, 0, 127]</value> + </param> + <param> + <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> + <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>(60, 140)</value> + </param> + <param> + <key>_rotation</key> + <value>180</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>0</value> + </param> + <param> + <key>dim1</key> + <value>4</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(781, 538)</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>0</value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + <param> + <key>prob</key> + <value>0.5</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(781, 651)</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_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>(865, 308)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>id</key> + <value>blocks_pdu_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>tag</key> + <value>pkt_len</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>(860, 224)</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</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>pkt_len</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>(93, 328)</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_1_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>(362, 429)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_to_pdu</key> + <param> + <key>id</key> + <value>blocks_tagged_stream_to_pdu_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>pkt_len</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>(363, 112)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>pkt_len</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>(408, 190)</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>pkt_len</value> + </param> + <param> + <key>align_output</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>(544, 256)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>id</key> + <value>digital_map_bb_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>map</key> + <value>[-1,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>(379, 280)</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_0_1</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>(372, 367)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_to_pdu</key> + <param> + <key>id</key> + <value>blocks_tagged_stream_to_pdu_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>tag</key> + <value>pkt_len</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>(583, 367)</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_0</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>512</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>140</value> + </param> + <param> + <key>nconnections</key> + <value>2</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_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>""</value> + </param> + <param> + <key>label1</key> + <value>Decoded</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>Input</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>Rep. (Rate=3)</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>CC (K=7, Rate=2)</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>CCSDS</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>(1059, 368)</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>0</value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</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>_coordinate</key> + <value>(995, 506)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>fec_async_encoder</key> + <param> + <key>id</key> + <value>fec_async_encoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>encoder</key> + <value>enc_cc</value> + </param> + <param> + <key>packed</key> + <value>True</value> + </param> + <param> + <key>rev_unpack</key> + <value>True</value> + </param> + <param> + <key>rev_pack</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>(599, 112)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>fec_async_decoder</key> + <param> + <key>id</key> + <value>fec_async_decoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>decoder</key> + <value>dec_cc</value> + </param> + <param> + <key>packed</key> + <value>True</value> + </param> + <param> + <key>rev_pack</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>(851, 111)</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>0</value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(598, 636)</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>0</value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(599, 538)</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>0</value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</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>padding</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(401, 510)</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>0</value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>4</value> + </param> + <param> + <key>framebits</key> + <value>8000</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_TERMINATED</value> + </param> + <param> + <key>padding</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(402, 687)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <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_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</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_0</source_block_id> + <sink_block_id>blocks_char_to_float_0_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>fec_async_decoder_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id> + <source_key>out</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>blocks_char_to_float_0_0_0_0</source_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>blocks_pdu_to_tagged_stream_0_0</source_block_id> + <sink_block_id>blocks_char_to_float_0_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_0_1_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>blocks_stream_to_tagged_stream_0_0</source_block_id> + <sink_block_id>blocks_char_to_float_0_1_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>blocks_tagged_stream_to_pdu_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>digital_map_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_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_tagged_stream_to_pdu_1</source_block_id> + <sink_block_id>fec_async_decoder_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>fec_async_encoder_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_key>out</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_to_pdu_0</source_block_id> + <sink_block_id>fec_async_encoder_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>blocks_char_to_float_0_1</source_block_id> + <sink_block_id>blocks_tagged_stream_to_pdu_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-fec/examples/fecapi_async_to_stream.grc b/gr-fec/examples/fecapi_async_to_stream.grc index 0692573ac1..84e10e775c 100644 --- a/gr-fec/examples/fecapi_async_to_stream.grc +++ b/gr-fec/examples/fecapi_async_to_stream.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Sat May 17 19:23:33 2014</timestamp> + <timestamp>Mon May 19 17:07:45 2014</timestamp> <block> <key>options</key> <param> @@ -637,10 +637,6 @@ <value>False</value> </param> <param> - <key>swap</key> - <value>False</value> - </param> - <param> <key>alias</key> <value></value> </param> @@ -1606,22 +1602,34 @@ </param> </block> <block> - <key>blocks_char_to_float</key> + <key>fec_extended_tagged_decoder</key> <param> <key>id</key> - <value>blocks_char_to_float_0_0_0_0</value> + <value>fec_extended_tagged_decoder_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>value</key> + <value>fec_extended_decoder</value> </param> <param> - <key>scale</key> - <value>1</value> + <key>decoder_list</key> + <value>dec_cc</value> + </param> + <param> + <key>ann</key> + <value>None</value> + </param> + <param> + <key>puncpat</key> + <value>puncpat</value> + </param> + <param> + <key>lentagname</key> + <value>pkt_len</value> </param> <param> <key>alias</key> @@ -1641,7 +1649,7 @@ </param> <param> <key>_coordinate</key> - <value>(1200, 191)</value> + <value>(875, 164)</value> </param> <param> <key>_rotation</key> @@ -1649,54 +1657,70 @@ </param> </block> <block> - <key>blocks_repack_bits_bb</key> + <key>variable_cc_decoder_def</key> <param> <key>id</key> - <value>blocks_repack_bits_bb_0_0</value> + <value>dec_cc</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>k</key> - <value>1</value> + <key>value</key> + <value>"ok"</value> </param> <param> - <key>l</key> - <value>8</value> + <key>ndim</key> + <value>0</value> </param> <param> - <key>len_tag_key</key> - <value>pkt_len</value> + <key>dim1</key> + <value>1</value> </param> <param> - <key>align_output</key> - <value>False</value> + <key>dim2</key> + <value>4</value> </param> <param> - <key>swap</key> - <value>False</value> + <key>framebits</key> + <value>8000</value> </param> <param> - <key>alias</key> - <value></value> + <key>k</key> + <value>k</value> </param> <param> - <key>affinity</key> - <value></value> + <key>rate</key> + <value>rate</value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>polys</key> + <value>polys</value> </param> <param> - <key>maxoutbuf</key> + <key>state_start</key> <value>0</value> </param> <param> + <key>state_end</key> + <value>-1</value> + </param> + <param> + <key>mode</key> + <value>fec.CC_TERMINATED</value> + </param> + <param> + <key>padding</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(925, 309)</value> + <value>(400, 684)</value> </param> <param> <key>_rotation</key> @@ -1704,42 +1728,66 @@ </param> </block> <block> - <key>digital_crc32_bb</key> + <key>variable_cc_encoder_def</key> <param> <key>id</key> - <value>digital_crc32_bb_0</value> + <value>enc_cc</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>check</key> - <value>True</value> + <key>value</key> + <value>"ok"</value> </param> <param> - <key>lengthtagname</key> - <value>pkt_len</value> + <key>ndim</key> + <value>0</value> </param> <param> - <key>alias</key> - <value></value> + <key>dim1</key> + <value>1</value> </param> <param> - <key>affinity</key> - <value></value> + <key>dim2</key> + <value>1</value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>framebits</key> + <value>8000</value> </param> <param> - <key>maxoutbuf</key> + <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>padding</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(1214, 332)</value> + <value>(401, 510)</value> </param> <param> <key>_rotation</key> @@ -1747,26 +1795,30 @@ </param> </block> <block> - <key>fec_async_encoder</key> + <key>blocks_repack_bits_bb</key> <param> <key>id</key> - <value>fec_async_encoder_0</value> + <value>blocks_repack_bits_bb_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>encoder</key> - <value>enc_cc</value> + <key>k</key> + <value>1</value> </param> <param> - <key>rev_unpack</key> - <value>True</value> + <key>l</key> + <value>8</value> </param> <param> - <key>rev_pack</key> - <value>True</value> + <key>len_tag_key</key> + <value>pkt_len</value> + </param> + <param> + <key>align_output</key> + <value>False</value> </param> <param> <key>alias</key> @@ -1786,7 +1838,7 @@ </param> <param> <key>_coordinate</key> - <value>(429, 148)</value> + <value>(925, 309)</value> </param> <param> <key>_rotation</key> @@ -1794,34 +1846,22 @@ </param> </block> <block> - <key>fec_extended_tagged_decoder</key> + <key>blocks_char_to_float</key> <param> <key>id</key> - <value>fec_extended_tagged_decoder_0</value> + <value>blocks_char_to_float_0_0_0_0</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_cc</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>pkt_len</value> + <key>scale</key> + <value>1</value> </param> <param> <key>alias</key> @@ -1841,7 +1881,7 @@ </param> <param> <key>_coordinate</key> - <value>(875, 164)</value> + <value>(1200, 191)</value> </param> <param> <key>_rotation</key> @@ -1849,70 +1889,50 @@ </param> </block> <block> - <key>variable_cc_decoder_def</key> + <key>fec_async_encoder</key> <param> <key>id</key> - <value>dec_cc</value> + <value>fec_async_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>0</value> - </param> - <param> - <key>dim1</key> - <value>1</value> + <key>encoder</key> + <value>enc_cc</value> </param> <param> - <key>dim2</key> - <value>4</value> + <key>packed</key> + <value>True</value> </param> <param> - <key>framebits</key> - <value>8000</value> + <key>rev_unpack</key> + <value>True</value> </param> <param> - <key>k</key> - <value>k</value> + <key>rev_pack</key> + <value>True</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_TERMINATED</value> - </param> - <param> - <key>padding</key> - <value>True</value> - </param> - <param> - <key>alias</key> - <value></value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(400, 684)</value> + <value>(429, 148)</value> </param> <param> <key>_rotation</key> @@ -1920,66 +1940,42 @@ </param> </block> <block> - <key>variable_cc_encoder_def</key> + <key>digital_crc32_bb</key> <param> <key>id</key> - <value>enc_cc</value> + <value>digital_crc32_bb_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>"ok"</value> - </param> - <param> - <key>ndim</key> - <value>0</value> - </param> - <param> - <key>dim1</key> - <value>1</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>framebits</key> - <value>8000</value> + <key>check</key> + <value>True</value> </param> <param> - <key>k</key> - <value>k</value> + <key>lengthtagname</key> + <value>pkt_len</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>padding</key> - <value>True</value> - </param> - <param> - <key>alias</key> - <value></value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(401, 510)</value> + <value>(1214, 332)</value> </param> <param> <key>_rotation</key> @@ -2041,12 +2037,6 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> - <sink_block_id>digital_crc32_bb_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id> <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> <source_key>0</source_key> @@ -2082,4 +2072,10 @@ <source_key>0</source_key> <sink_key>0</sink_key> </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>digital_crc32_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> </flow_graph> diff --git a/gr-fec/grc/fec_async_decoder.xml b/gr-fec/grc/fec_async_decoder.xml index 1f9ff99690..30bf0d1f92 100644 --- a/gr-fec/grc/fec_async_decoder.xml +++ b/gr-fec/grc/fec_async_decoder.xml @@ -3,44 +3,43 @@ <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> + <make>fec.async_decoder($decoder, $packed, $rev_pack)</make> <param> - <name>Constituent Decoder</name> + <name>Decoder Obj.</name> <key>decoder</key> - <value>decoder_variable</value> <type>raw</type> </param> <param> - <name>Input Type</name> - <key>itype</key> + <name>Packed</name> + <key>packed</key> + <value>False</value> <type>enum</type> + <hide>part</hide> <option> - <name>Byte</name> - <key>byte</key> - <opt>size:gr.sizeof_char</opt> + <name>No</name> + <key>False</key> </option> <option> - <name>Float</name> - <key>float</key> - <opt>size:gr.sizeof_float</opt> + <name>Yes</name> + <key>True</key> </option> </param> <param> - <name>Output Type</name> - <key>otype</key> + <name>Rev. Packing</name> + <key>rev_pack</key> + <value>True</value> <type>enum</type> + <hide>#if $packed() == 'True' then 'part' else 'all'#</hide> <option> - <name>Byte</name> - <key>byte</key> - <opt>size:gr.sizeof_char</opt> + <name>Yes</name> + <key>True</key> </option> <option> - <name>Float</name> - <key>float</key> - <opt>size:gr.sizeof_float</opt> + <name>No</name> + <key>False</key> </option> </param> diff --git a/gr-fec/grc/fec_async_encoder.xml b/gr-fec/grc/fec_async_encoder.xml index 16a01edb91..55b1acd707 100644 --- a/gr-fec/grc/fec_async_encoder.xml +++ b/gr-fec/grc/fec_async_encoder.xml @@ -3,20 +3,36 @@ <name>FEC Async Encoder</name> <key>fec_async_encoder</key> <import>from gnuradio import fec</import> - <make>fec.async_encoder($encoder, $rev_unpack, $rev_pack)</make> + <make>fec.async_encoder($encoder, $packed, $rev_unpack, $rev_pack)</make> <param> <name>Encoder Obj.</name> <key>encoder</key> - <value>encoder_variable</value> <type>raw</type> </param> <param> + <name>Packed</name> + <key>packed</key> + <value>False</value> + <type>enum</type> + <hide>part</hide> + <option> + <name>No</name> + <key>False</key> + </option> + <option> + <name>Yes</name> + <key>True</key> + </option> + </param> + + <param> <name>Rev. Unpacking</name> <key>rev_unpack</key> <value>True</value> <type>enum</type> + <hide>#if $packed() == 'True' then 'part' else 'all'#</hide> <option> <name>Yes</name> <key>True</key> @@ -32,6 +48,7 @@ <key>rev_pack</key> <value>True</value> <type>enum</type> + <hide>#if $packed() == 'True' then 'part' else 'all'#</hide> <option> <name>Yes</name> <key>True</key> diff --git a/gr-fec/include/gnuradio/fec/async_decoder.h b/gr-fec/include/gnuradio/fec/async_decoder.h index b68bd7157a..46fa9bef27 100644 --- a/gr-fec/include/gnuradio/fec/async_decoder.h +++ b/gr-fec/include/gnuradio/fec/async_decoder.h @@ -50,12 +50,11 @@ namespace gr { * 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. + * \param packed Sets output to packed bytes if true; otherwise, 1 bit per byte + * \param rev_pack If packing bits, should they be reversed? */ static sptr make(generic_decoder::sptr my_decoder, - size_t input_item_size, - size_t output_item_size); + bool packed=false, bool rev_pack=true); virtual int general_work(int noutput_items, gr_vector_int& ninput_items, diff --git a/gr-fec/include/gnuradio/fec/async_encoder.h b/gr-fec/include/gnuradio/fec/async_encoder.h index d0d160e079..cbaba97a58 100644 --- a/gr-fec/include/gnuradio/fec/async_encoder.h +++ b/gr-fec/include/gnuradio/fec/async_encoder.h @@ -50,10 +50,12 @@ namespace gr { * 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. + * \param packed True if working on packed bytes (like PDUs) * \param rev_unpack Reverse the unpacking order from input bytes to bits * \param rev_pack Reverse the packing order from bits to output bytes */ static sptr make(generic_encoder::sptr my_encoder, + bool packed=false, bool rev_unpack=true, bool rev_pack=true); virtual int general_work(int noutput_items, diff --git a/gr-fec/lib/async_decoder_impl.cc b/gr-fec/lib/async_decoder_impl.cc index d3cfd2c05f..8e9747609c 100644 --- a/gr-fec/lib/async_decoder_impl.cc +++ b/gr-fec/lib/async_decoder_impl.cc @@ -26,76 +26,188 @@ #include "async_decoder_impl.h" #include <gnuradio/io_signature.h> +#include <volk/volk.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) + bool packed, bool rev_pack) { return gnuradio::get_initial_sptr - (new async_decoder_impl(my_decoder, input_item_size, output_item_size)); + (new async_decoder_impl(my_decoder, packed, rev_pack)); } async_decoder_impl::async_decoder_impl(generic_decoder::sptr my_decoder, - size_t input_item_size, - size_t output_item_size) + bool packed, bool rev_pack) : 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_input_item_size(sizeof(float)), d_output_item_size(sizeof(char)) { + d_in_port = pmt::mp("in"); + d_out_port = pmt::mp("out"); + d_decoder = my_decoder; - message_port_register_in(pmt::mp("in")); - message_port_register_out(pmt::mp("out")); - set_msg_handler(pmt::mp("pdus"), boost::bind(&async_decoder_impl::decode, this ,_1)); + + if(d_decoder->get_history() > 0) { + throw std::runtime_error("async_decoder deploment does not support decoders with history requirements."); + } + + d_packed = packed; + d_rev_pack = rev_pack; + + message_port_register_in(d_in_port); + message_port_register_out(d_out_port); + + if(d_packed) { + d_pack = new blocks::kernel::pack_k_bits(8); + set_msg_handler(d_in_port, boost::bind(&async_decoder_impl::decode_packed, this ,_1)); + } + else { + set_msg_handler(d_in_port, boost::bind(&async_decoder_impl::decode_unpacked, this ,_1)); + } + + // The maximum frame size is set by the initial frame size of the decoder. + d_max_bits_in = d_decoder->get_input_size(); + d_tmp_f32 = (float*)volk_malloc(d_max_bits_in*sizeof(float), + volk_get_alignment()); + + if(strncmp(d_decoder->get_input_conversion(), "uchar", 5) == 0) { + d_tmp_u8 = (int8_t*)volk_malloc(d_max_bits_in*sizeof(uint8_t), + volk_get_alignment()); + } + + if(d_packed) { + int max_bits_out = d_decoder->get_output_size(); + d_bits_out = (uint8_t*)volk_malloc(max_bits_out*sizeof(uint8_t), + volk_get_alignment()); + } } async_decoder_impl::~async_decoder_impl() { + if(d_packed) { + delete d_pack; + delete d_bits_out; + } + + volk_free(d_tmp_f32); + + if(strncmp(d_decoder->get_input_conversion(), "uchar", 5) == 0) { + volk_free(d_tmp_u8); + } } void - async_decoder_impl::decode(pmt::pmt_t msg) + async_decoder_impl::decode_unpacked(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; + // Watch out for this diff. It might be over-specializing to the + // CC decoder in terminated mode that has an extra rate(K-1) + // bits added on to the transmitted frame. + int diff = d_decoder->rate()*d_decoder->get_input_size() - d_decoder->get_output_size(); - // 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()); - } + int nbits_in = pmt::length(bits); + int nbits_out = nbits_in*d_decoder->rate() - diff; - printf("decoder :: blksize_in = %d, blksize_out = %d\n", blksize_in, blksize_out); + // Check here if the frame size is larger than what we've + // allocated for in the constructor. + if(nbits_in > d_max_bits_in) { + throw std::runtime_error("async_decoder: Received frame larger than max frame size."); + } - pmt::pmt_t outvec(pmt::make_u8vector(blksize_out * nblocks, 0xFF)); - printf("decoder :: outvec len = %d (%d blks)\n", blksize_out * nblocks, nblocks); + d_decoder->set_frame_size(nbits_out); - // get pmt buffer pointers size_t o0(0); const float* f32in = pmt::f32vector_elements(bits, o0); + pmt::pmt_t outvec(pmt::make_u8vector(nbits_out, 0x00)); 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; + if(strncmp(d_decoder->get_input_conversion(), "uchar", 5) == 0) { + volk_32f_s32f_multiply_32f(d_tmp_f32, f32in, 48.0f, nbits_in); + } + else { + memcpy(d_tmp_f32, f32in, nbits_in*sizeof(float)); + } + + if(d_decoder->get_shift() != 0) { + for(int n = 0; n < nbits_in; n++) + d_tmp_f32[n] += d_decoder->get_shift(); + } + + if(strncmp(d_decoder->get_input_conversion(), "uchar", 5) == 0) { + //volk_32f_s32f_convert_8i(d_tmp_u8, d_tmp_f32, 1, nbits_in); + for(int n = 0; n < nbits_in; n++) + d_tmp_u8[n] = static_cast<uint8_t>(d_tmp_f32[n]); - // DECODE! - d_decoder->generic_work((void*)&f32in[offset_in], (void*)&u8out[offset_out]); + d_decoder->generic_work((void*)d_tmp_u8, (void*)u8out); } + else { + d_decoder->generic_work((void*)d_tmp_f32, (void*)u8out); + } + + message_port_pub(d_out_port, pmt::cons(meta, outvec)); + } + + void + async_decoder_impl::decode_packed(pmt::pmt_t msg) + { + // extract input pdu + pmt::pmt_t meta(pmt::car(msg)); + pmt::pmt_t bits(pmt::cdr(msg)); + + size_t o0 = 0; + int nbits_in = pmt::length(bits); + int nbits_out = nbits_in*d_decoder->rate(); + int nbytes_out = nbits_out/8; + + // Check here if the frame size is larger than what we've + // allocated for in the constructor. + if(nbits_in > d_max_bits_in) { + throw std::runtime_error("async_decoder: Received frame larger than max frame size."); + } + + d_decoder->set_frame_size(nbits_out); + + pmt::pmt_t outvec(pmt::make_u8vector(nbytes_out, 0x00)); + uint8_t* bytes_out = pmt::u8vector_writable_elements(outvec, o0); + const float* f32in = pmt::f32vector_elements(bits, o0); + + if(strncmp(d_decoder->get_input_conversion(), "uchar", 5) == 0) { + volk_32f_s32f_multiply_32f(d_tmp_f32, f32in, 48.0f, nbits_in); + } + else { + memcpy(d_tmp_f32, f32in, nbits_in*sizeof(float)); + } + + if(d_decoder->get_shift() != 0) { + for(int n = 0; n < nbits_in; n++) + d_tmp_f32[n] += d_decoder->get_shift(); + } + + if(strncmp(d_decoder->get_input_conversion(), "uchar", 5) == 0) { + //volk_32f_s32f_convert_8i(d_tmp_u8, d_tmp_f32, 1.0, nbits_in); + for(int n = 0; n < nbits_in; n++) + d_tmp_u8[n] = static_cast<uint8_t>(d_tmp_f32[n]); + + d_decoder->generic_work((void*)d_tmp_u8, (void*)d_bits_out); + } + else { + d_decoder->generic_work((void*)d_tmp_f32, (void*)d_bits_out); + } + + if(d_rev_pack) + d_pack->pack_rev(bytes_out, d_bits_out, nbytes_out); + else + d_pack->pack(bytes_out, d_bits_out, nbytes_out); - message_port_pub(pmt::mp("pdus"), pmt::cons(meta, outvec)); + message_port_pub(d_out_port, pmt::cons(meta, outvec)); } int diff --git a/gr-fec/lib/async_decoder_impl.h b/gr-fec/lib/async_decoder_impl.h index 5f4c5c44a0..c3c7a7c3ff 100644 --- a/gr-fec/lib/async_decoder_impl.h +++ b/gr-fec/lib/async_decoder_impl.h @@ -24,6 +24,7 @@ #define INCLUDED_FEC_ASYNC_DECODER_IMPL_H #include <gnuradio/fec/async_decoder.h> +#include <gnuradio/blocks/pack_k_bits.h> namespace gr { namespace fec { @@ -35,12 +36,25 @@ namespace gr { size_t d_input_item_size; size_t d_output_item_size; - void decode(pmt::pmt_t msg); + pmt::pmt_t d_in_port; + pmt::pmt_t d_out_port; + + blocks::kernel::pack_k_bits *d_pack; + + bool d_packed; + bool d_rev_pack; + + int d_max_bits_in; + float *d_tmp_f32; + int8_t *d_tmp_u8; + uint8_t *d_bits_out; + + void decode_packed(pmt::pmt_t msg); + void decode_unpacked(pmt::pmt_t msg); public: async_decoder_impl(generic_decoder::sptr my_decoder, - size_t input_item_size, - size_t output_item_size); + bool packed=false, bool rev_pack=true); ~async_decoder_impl(); int general_work(int noutput_items, diff --git a/gr-fec/lib/async_encoder_impl.cc b/gr-fec/lib/async_encoder_impl.cc index ff7480f00a..556a8a5e9b 100644 --- a/gr-fec/lib/async_encoder_impl.cc +++ b/gr-fec/lib/async_encoder_impl.cc @@ -34,14 +34,14 @@ namespace gr { async_encoder::sptr async_encoder::make(generic_encoder::sptr my_encoder, - bool rev_unpack, bool rev_pack) + bool packed, bool rev_unpack, bool rev_pack) { return gnuradio::get_initial_sptr - (new async_encoder_impl(my_encoder, rev_unpack, rev_pack)); + (new async_encoder_impl(my_encoder, packed, rev_unpack, rev_pack)); } async_encoder_impl::async_encoder_impl(generic_encoder::sptr my_encoder, - bool rev_unpack, bool rev_pack) + bool packed, bool rev_unpack, bool rev_pack) : block("async_encoder", io_signature::make(0,0,0), io_signature::make(0,0,0)), @@ -51,48 +51,83 @@ namespace gr { d_out_port = pmt::mp("out"); d_encoder = my_encoder; - d_unpack = new blocks::kernel::unpack_k_bits(8); - d_pack = new blocks::kernel::pack_k_bits(8); + d_packed = packed; d_rev_unpack = rev_unpack; d_rev_pack = rev_pack; message_port_register_in(d_in_port); message_port_register_out(d_out_port); - set_msg_handler(d_in_port, boost::bind(&async_encoder_impl::encode, this ,_1) ); + + if(d_packed) { + d_unpack = new blocks::kernel::unpack_k_bits(8); + d_pack = new blocks::kernel::pack_k_bits(8); + set_msg_handler(d_in_port, boost::bind(&async_encoder_impl::encode_packed, this ,_1) ); + } + else { + set_msg_handler(d_in_port, boost::bind(&async_encoder_impl::encode_unpacked, this ,_1) ); + } } async_encoder_impl::~async_encoder_impl() { - delete d_unpack; - delete d_pack; + if(d_packed) { + delete d_unpack; + delete d_pack; + } } void - async_encoder_impl::encode(pmt::pmt_t msg) + async_encoder_impl::encode_unpacked(pmt::pmt_t msg) + { + // extract input pdu + pmt::pmt_t meta(pmt::car(msg)); + pmt::pmt_t bits(pmt::cdr(msg)); + + size_t o0 = 0; + int nbits_in = pmt::length(bits); + const uint8_t* bits_in = pmt::u8vector_elements(bits, o0); + + d_encoder->set_frame_size(nbits_in); + + int nbits_out = d_encoder->get_output_size(); + + // buffers for output bits to go to + pmt::pmt_t outvec = pmt::make_u8vector(nbits_out, 0x00); + uint8_t* bits_out = pmt::u8vector_writable_elements(outvec, o0); + + // ENCODE! + d_encoder->generic_work((void*)bits_in, (void*)bits_out); + + pmt::pmt_t msg_pair = pmt::cons(meta, outvec); + message_port_pub(d_out_port, msg_pair); + } + + void + async_encoder_impl::encode_packed(pmt::pmt_t msg) { // extract input pdu pmt::pmt_t meta(pmt::car(msg)); pmt::pmt_t bytes(pmt::cdr(msg)); - int nbytes = pmt::length(bytes); - int nbits = 8*nbytes; size_t o0 = 0; + int nbytes_in = pmt::length(bytes); + int nbits_in = 8*nbytes_in; const uint8_t* bytes_in = pmt::u8vector_elements(bytes, o0); - uint8_t* bits_in = (uint8_t*)volk_malloc(nbits*sizeof(uint8_t), + uint8_t* bits_in = (uint8_t*)volk_malloc(nbits_in*sizeof(uint8_t), volk_get_alignment()); + d_encoder->set_frame_size(nbits_in); + + int nbits_out = d_encoder->get_output_size(); + int nbytes_out = nbits_out/8; + // Encoder takes a stream of bits, but PDU's are received as // bytes, so we unpack them here. if(d_rev_unpack) - d_unpack->unpack_rev(bits_in, bytes_in, nbytes); + d_unpack->unpack_rev(bits_in, bytes_in, nbytes_in); else - d_unpack->unpack(bits_in, bytes_in, nbytes); - - d_encoder->set_frame_size(nbits); - - int nbits_out = d_encoder->get_output_size(); - int nbytes_out = nbits_out/8; + d_unpack->unpack(bits_in, bytes_in, nbytes_in); // buffers for bits/bytes to go to uint8_t* bits_out = (uint8_t*)volk_malloc(nbits_out*sizeof(uint8_t), @@ -104,7 +139,6 @@ namespace gr { // ENCODE! d_encoder->generic_work((void*)bits_in, (void*)bits_out); - // Encoder produces bits, so repack them here to bytes. if(d_rev_pack) d_pack->pack_rev(bytes_out, bits_out, nbytes_out); else diff --git a/gr-fec/lib/async_encoder_impl.h b/gr-fec/lib/async_encoder_impl.h index 2c43b0d386..7cca623d35 100644 --- a/gr-fec/lib/async_encoder_impl.h +++ b/gr-fec/lib/async_encoder_impl.h @@ -40,14 +40,19 @@ namespace gr { pmt::pmt_t d_in_port; pmt::pmt_t d_out_port; - void encode(pmt::pmt_t msg); blocks::kernel::unpack_k_bits *d_unpack; blocks::kernel::pack_k_bits *d_pack; + + bool d_packed; bool d_rev_unpack; bool d_rev_pack; + void encode_packed(pmt::pmt_t msg); + void encode_unpacked(pmt::pmt_t msg); + public: async_encoder_impl(generic_encoder::sptr my_encoder, + bool packed=false, bool rev_unpack=true, bool rev_pack=true); ~async_encoder_impl(); diff --git a/gr-fec/lib/cc_encoder_impl.cc b/gr-fec/lib/cc_encoder_impl.cc index 90d2ee4c1c..75d7dcd66b 100644 --- a/gr-fec/lib/cc_encoder_impl.cc +++ b/gr-fec/lib/cc_encoder_impl.cc @@ -127,7 +127,7 @@ namespace gr { double cc_encoder_impl::rate() { - return 1.0/static_cast<double>(d_rate); + return static_cast<double>(d_rate); } int |