[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 52/57: fec: wip: async encoder/decoder work
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 52/57: fec: wip: async encoder/decoder working deployments. |
Date: |
Wed, 21 May 2014 03:10:32 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
trondeau pushed a commit to branch master
in repository gnuradio.
commit fbbde8d01ab43b7a3ffd5ca9d65cf50a84e2a7be
Author: Tom Rondeau <address@hidden>
Date: Mon May 19 15:53:10 2014 -0400
fec: wip: async encoder/decoder working deployments.
Decoder uses API signatures to do shifting, data conversions. New examples
showing use.
---
gr-fec/examples/CMakeLists.txt | 1 +
gr-fec/examples/fecapi_async_decoders.grc | 913 +++++++++++----------
gr-fec/examples/fecapi_async_encoders.grc | 500 +++++------
...coders.grc => fecapi_async_packed_decoders.grc} | 730 ++++++++--------
gr-fec/examples/fecapi_async_to_stream.grc | 308 ++++---
gr-fec/grc/fec_async_decoder.xml | 37 +-
gr-fec/grc/fec_async_encoder.xml | 21 +-
gr-fec/include/gnuradio/fec/async_decoder.h | 7 +-
gr-fec/include/gnuradio/fec/async_encoder.h | 2 +
gr-fec/lib/async_decoder_impl.cc | 172 +++-
gr-fec/lib/async_decoder_impl.h | 20 +-
gr-fec/lib/async_encoder_impl.cc | 74 +-
gr-fec/lib/async_encoder_impl.h | 7 +-
gr-fec/lib/cc_encoder_impl.cc | 2 +-
14 files changed, 1529 insertions(+), 1265 deletions(-)
diff --git a/gr-fec/examples/CMakeLists.txt b/gr-fec/examples/CMakeLists.txt
index fa7a3d5..b203e9c 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 2598e84..08a8826 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,10 +665,10 @@
</param>
</block>
<block>
- <key>variable_dummy_decoder_def</key>
+ <key>variable_repetition_decoder_def</key>
<param>
<key>id</key>
- <value>dec_dummy</value>
+ <value>dec_rep</value>
</param>
<param>
<key>_enabled</key>
@@ -677,7 +680,7 @@
</param>
<param>
<key>ndim</key>
- <value>1</value>
+ <value>0</value>
</param>
<param>
<key>dim1</key>
@@ -692,12 +695,20 @@
<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>(598, 636)</value>
+ <value>(781, 651)</value>
</param>
<param>
<key>_rotation</key>
@@ -705,50 +716,42 @@
</param>
</block>
<block>
- <key>variable_repetition_decoder_def</key>
+ <key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>dec_rep</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>1</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>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>rep</key>
- <value>3</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>prob</key>
- <value>0.5</value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(781, 651)</value>
+ <value>(408, 375)</value>
</param>
<param>
<key>_rotation</key>
@@ -756,225 +759,41 @@
</param>
</block>
<block>
- <key>variable_dummy_encoder_def</key>
+ <key>blocks_repack_bits_bb</key>
<param>
<key>id</key>
- <value>enc_dummy</value>
+ <value>blocks_repack_bits_bb_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>"ok"</value>
- </param>
- <param>
- <key>ndim</key>
- <value>0</value>
+ <key>k</key>
+ <value>8</value>
</param>
<param>
- <key>dim1</key>
+ <key>l</key>
<value>1</value>
</param>
<param>
- <key>dim2</key>
- <value>1</value>
+ <key>len_tag_key</key>
+ <value>pkt_len</value>
</param>
<param>
- <key>framebits</key>
- <value>8000</value>
+ <key>align_output</key>
+ <value>False</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
- <key>_coordinate</key>
- <value>(599, 538)</value>
+ <key>affinity</key>
+ <value></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>
- <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>(713, 279)</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>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>(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>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
@@ -983,7 +802,7 @@
</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,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1364, 167)</value>
+ <value>(1059, 368)</value>
</param>
<param>
<key>_rotation</key>
@@ -1412,22 +1188,22 @@
</param>
</block>
<block>
- <key>fec_async_encoder</key>
+ <key>fec_async_decoder</key>
<param>
<key>id</key>
- <value>fec_async_encoder_0</value>
+ <value>fec_async_decoder_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>encoder</key>
- <value>enc_cc</value>
+ <key>decoder</key>
+ <value>dec_cc</value>
</param>
<param>
- <key>rev_unpack</key>
- <value>True</value>
+ <key>packed</key>
+ <value>False</value>
</param>
<param>
<key>rev_pack</key>
@@ -1451,7 +1227,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(429, 148)</value>
+ <value>(852, 142)</value>
</param>
<param>
<key>_rotation</key>
@@ -1459,37 +1235,21 @@
</param>
</block>
<block>
- <key>fec_extended_decoder</key>
+ <key>blocks_pdu_to_tagged_stream</key>
<param>
<key>id</key>
- <value>fec_extended_decoder_0_1_0</value>
+ <value>blocks_pdu_to_tagged_stream_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>threadtype</key>
- <value>none</value>
- </param>
- <param>
- <key>ann</key>
- <value>None</value>
- </param>
- <param>
- <key>puncpat</key>
- <value>puncpat</value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>lentagname</key>
+ <key>tag</key>
<value>pkt_len</value>
</param>
<param>
@@ -1510,41 +1270,288 @@
</param>
<param>
<key>_coordinate</key>
- <value>(883, 156)</value>
+ <value>(860, 224)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
- <key>variable_cc_encoder_def</key>
+ <key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>enc_cc</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>"ok"</value>
- </param>
- <param>
- <key>ndim</key>
- <value>0</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>dim1</key>
+ <key>scale</key>
<value>1</value>
</param>
<param>
- <key>dim2</key>
- <value>1</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>framebits</key>
+ <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>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>(600, 143)</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>(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>
+ <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>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>
+ <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>
@@ -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 445c0cc..3dd0d0f 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_decoders.grc
b/gr-fec/examples/fecapi_async_packed_decoders.grc
similarity index 90%
copy from gr-fec/examples/fecapi_async_decoders.grc
copy to gr-fec/examples/fecapi_async_packed_decoders.grc
index 2598e84..dc8fdcb 100644
--- a/gr-fec/examples/fecapi_async_decoders.grc
+++ b/gr-fec/examples/fecapi_async_packed_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:35:27 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -68,7 +68,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>samp_rate</value>
+ <value>rep</value>
</param>
<param>
<key>_enabled</key>
@@ -76,7 +76,7 @@
</param>
<param>
<key>value</key>
- <value>50000</value>
+ <value>3</value>
</param>
<param>
<key>alias</key>
@@ -84,7 +84,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(10, 73)</value>
+ <value>(785, 473)</value>
</param>
<param>
<key>_rotation</key>
@@ -95,7 +95,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>k</value>
+ <value>rate</value>
</param>
<param>
<key>_enabled</key>
@@ -103,7 +103,7 @@
</param>
<param>
<key>value</key>
- <value>7</value>
+ <value>2</value>
</param>
<param>
<key>alias</key>
@@ -111,7 +111,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(264, 535)</value>
+ <value>(332, 536)</value>
</param>
<param>
<key>_rotation</key>
@@ -149,7 +149,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>rate</value>
+ <value>k</value>
</param>
<param>
<key>_enabled</key>
@@ -157,7 +157,7 @@
</param>
<param>
<key>value</key>
- <value>2</value>
+ <value>7</value>
</param>
<param>
<key>alias</key>
@@ -165,7 +165,34 @@
</param>
<param>
<key>_coordinate</key>
- <value>(332, 536)</value>
+ <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>
@@ -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,37 +348,41 @@
</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>analog_random_source_x</key>
<param>
<key>id</key>
- <value>blocks_throttle_0</value>
+ <value>analog_random_source_x_0</value>
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>False</value>
</param>
<param>
<key>type</key>
<value>byte</value>
</param>
<param>
- <key>samples_per_second</key>
- <value>samp_rate</value>
+ <key>min</key>
+ <value>0</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>max</key>
+ <value>256</value>
</param>
<param>
- <key>ignoretag</key>
+ <key>num_samps</key>
+ <value>1000</value>
+ </param>
+ <param>
+ <key>repeat</key>
<value>True</value>
</param>
<param>
@@ -376,18 +403,18 @@
</param>
<param>
<key>_coordinate</key>
- <value>(109, 224)</value>
+ <value>(50, 502)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
- <key>blocks_stream_to_tagged_stream</key>
+ <key>blocks_vector_source_x</key>
<param>
<key>id</key>
- <value>blocks_stream_to_tagged_stream_0_0</value>
+ <value>blocks_vector_source_x_0_1_0</value>
</param>
<param>
<key>_enabled</key>
@@ -398,16 +425,20 @@
<value>byte</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <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>packet_len</key>
- <value>frame_size</value>
+ <key>tags</key>
+ <value>[]</value>
</param>
<param>
- <key>len_tag_key</key>
- <value>pkt_len</value>
+ <key>repeat</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>alias</key>
@@ -427,7 +458,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(83, 279)</value>
+ <value>(60, 140)</value>
</param>
<param>
<key>_rotation</key>
@@ -435,85 +466,97 @@
</param>
</block>
<block>
- <key>blocks_tagged_stream_to_pdu</key>
+ <key>variable_repetition_encoder_def</key>
<param>
<key>id</key>
- <value>blocks_tagged_stream_to_pdu_0</value>
+ <value>enc_rep</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>tag</key>
- <value>pkt_len</value>
+ <key>ndim</key>
+ <value>0</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>dim1</key>
+ <value>4</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>
- <value>0</value>
+ <key>rep</key>
+ <value>rep</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(83, 369)</value>
+ <value>(781, 538)</value>
</param>
<param>
<key>_rotation</key>
- <value>180</value>
+ <value>0</value>
</param>
</block>
<block>
- <key>blocks_char_to_float</key>
+ <key>variable_repetition_decoder_def</key>
<param>
<key>id</key>
- <value>blocks_char_to_float_0_1</value>
+ <value>dec_rep</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>vlen</key>
+ <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>scale</key>
+ <key>dim2</key>
<value>1</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>framebits</key>
+ <value>8000</value>
</param>
<param>
- <key>affinity</key>
- <value></value>
+ <key>rep</key>
+ <value>rep</value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>prob</key>
+ <value>0.5</value>
</param>
<param>
- <key>maxoutbuf</key>
- <value>0</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(707, 188)</value>
+ <value>(781, 651)</value>
</param>
<param>
<key>_rotation</key>
@@ -521,18 +564,22 @@
</param>
</block>
<block>
- <key>digital_crc32_async_bb</key>
+ <key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>digital_crc32_async_bb_0</value>
+ <value>blocks_char_to_float_0_0_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>check</key>
- <value>False</value>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>scale</key>
+ <value>1</value>
</param>
<param>
<key>alias</key>
@@ -552,7 +599,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(101, 441)</value>
+ <value>(865, 308)</value>
</param>
<param>
<key>_rotation</key>
@@ -560,34 +607,22 @@
</param>
</block>
<block>
- <key>analog_random_source_x</key>
+ <key>blocks_pdu_to_tagged_stream</key>
<param>
<key>id</key>
- <value>analog_random_source_x_0</value>
+ <value>blocks_pdu_to_tagged_stream_0_0</value>
</param>
<param>
<key>_enabled</key>
- <value>False</value>
+ <value>True</value>
</param>
<param>
<key>type</key>
<value>byte</value>
</param>
<param>
- <key>min</key>
- <value>0</value>
- </param>
- <param>
- <key>max</key>
- <value>256</value>
- </param>
- <param>
- <key>num_samps</key>
- <value>1000</value>
- </param>
- <param>
- <key>repeat</key>
- <value>True</value>
+ <key>tag</key>
+ <value>pkt_len</value>
</param>
<param>
<key>alias</key>
@@ -607,7 +642,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(50, 502)</value>
+ <value>(860, 224)</value>
</param>
<param>
<key>_rotation</key>
@@ -615,89 +650,50 @@
</param>
</block>
<block>
- <key>variable_repetition_encoder_def</key>
+ <key>blocks_stream_to_tagged_stream</key>
<param>
<key>id</key>
- <value>enc_rep</value>
+ <value>blocks_stream_to_tagged_stream_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>"ok"</value>
- </param>
- <param>
- <key>ndim</key>
- <value>0</value>
- </param>
- <param>
- <key>dim1</key>
- <value>4</value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>dim2</key>
+ <key>vlen</key>
<value>1</value>
</param>
<param>
- <key>framebits</key>
- <value>8000</value>
+ <key>packet_len</key>
+ <value>frame_size</value>
</param>
<param>
- <key>rep</key>
- <value>3</value>
+ <key>len_tag_key</key>
+ <value>pkt_len</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
- <key>_coordinate</key>
- <value>(781, 538)</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>_rotation</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
- </block>
- <block>
- <key>variable_dummy_decoder_def</key>
- <param>
- <key>id</key>
- <value>dec_dummy</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>"ok"</value>
- </param>
- <param>
- <key>ndim</key>
- <value>1</value>
- </param>
<param>
- <key>dim1</key>
- <value>1</value>
- </param>
- <param>
- <key>dim2</key>
- <value>1</value>
- </param>
- <param>
- <key>framebits</key>
- <value>8000</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(598, 636)</value>
+ <value>(93, 328)</value>
</param>
<param>
<key>_rotation</key>
@@ -705,93 +701,42 @@
</param>
</block>
<block>
- <key>variable_repetition_decoder_def</key>
+ <key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>dec_rep</value>
+ <value>blocks_char_to_float_0_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>"ok"</value>
- </param>
- <param>
- <key>ndim</key>
- <value>1</value>
- </param>
- <param>
- <key>dim1</key>
+ <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>rep</key>
- <value>3</value>
- </param>
- <param>
- <key>prob</key>
- <value>0.5</value>
- </param>
- <param>
<key>alias</key>
<value></value>
</param>
<param>
- <key>_coordinate</key>
- <value>(781, 651)</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>_rotation</key>
+ <key>minoutbuf</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>
+ <key>maxoutbuf</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>
+ <value>(362, 429)</value>
</param>
<param>
<key>_rotation</key>
@@ -799,18 +744,22 @@
</param>
</block>
<block>
- <key>digital_map_bb</key>
+ <key>blocks_tagged_stream_to_pdu</key>
<param>
<key>id</key>
- <value>digital_map_bb_0</value>
+ <value>blocks_tagged_stream_to_pdu_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>map</key>
- <value>[-1,1]</value>
+ <key>type</key>
+ <value>byte</value>
+ </param>
+ <param>
+ <key>tag</key>
+ <value>pkt_len</value>
</param>
<param>
<key>alias</key>
@@ -830,7 +779,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(713, 279)</value>
+ <value>(363, 112)</value>
</param>
<param>
<key>_rotation</key>
@@ -838,36 +787,24 @@
</param>
</block>
<block>
- <key>blocks_repack_bits_bb</key>
+ <key>blocks_pdu_to_tagged_stream</key>
<param>
<key>id</key>
- <value>blocks_repack_bits_bb_0</value>
+ <value>blocks_pdu_to_tagged_stream_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>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>len_tag_key</key>
+ <key>tag</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>
@@ -885,7 +822,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(452, 354)</value>
+ <value>(408, 190)</value>
</param>
<param>
<key>_rotation</key>
@@ -893,24 +830,32 @@
</param>
</block>
<block>
- <key>blocks_pdu_to_tagged_stream</key>
+ <key>blocks_repack_bits_bb</key>
<param>
<key>id</key>
- <value>blocks_pdu_to_tagged_stream_0</value>
+ <value>blocks_repack_bits_bb_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>byte</value>
+ <key>k</key>
+ <value>8</value>
+ </param>
+ <param>
+ <key>l</key>
+ <value>1</value>
</param>
<param>
- <key>tag</key>
+ <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>
@@ -928,42 +873,26 @@
</param>
<param>
<key>_coordinate</key>
- <value>(400, 252)</value>
+ <value>(544, 256)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
- <key>blocks_repack_bits_bb</key>
+ <key>digital_map_bb</key>
<param>
<key>id</key>
- <value>blocks_repack_bits_bb_0_0</value>
+ <value>digital_map_bb_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>
+ <key>map</key>
+ <value>[-1,1]</value>
</param>
<param>
<key>alias</key>
@@ -983,18 +912,18 @@
</param>
<param>
<key>_coordinate</key>
- <value>(925, 309)</value>
+ <value>(379, 280)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
<key>blocks_char_to_float</key>
<param>
<key>id</key>
- <value>blocks_char_to_float_0_0_0_0</value>
+ <value>blocks_char_to_float_0_1</value>
</param>
<param>
<key>_enabled</key>
@@ -1026,7 +955,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1200, 191)</value>
+ <value>(372, 367)</value>
</param>
<param>
<key>_rotation</key>
@@ -1034,21 +963,21 @@
</param>
</block>
<block>
- <key>digital_crc32_bb</key>
+ <key>blocks_tagged_stream_to_pdu</key>
<param>
<key>id</key>
- <value>digital_crc32_bb_0</value>
+ <value>blocks_tagged_stream_to_pdu_1</value>
</param>
<param>
<key>_enabled</key>
- <value>False</value>
+ <value>True</value>
</param>
<param>
- <key>check</key>
- <value>True</value>
+ <key>type</key>
+ <value>float</value>
</param>
<param>
- <key>lengthtagname</key>
+ <key>tag</key>
<value>pkt_len</value>
</param>
<param>
@@ -1069,7 +998,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1214, 332)</value>
+ <value>(583, 367)</value>
</param>
<param>
<key>_rotation</key>
@@ -1116,7 +1045,7 @@
</param>
<param>
<key>nconnections</key>
- <value>1</value>
+ <value>2</value>
</param>
<param>
<key>update_time</key>
@@ -1156,7 +1085,7 @@
</param>
<param>
<key>label1</key>
- <value>Input</value>
+ <value>Decoded</value>
</param>
<param>
<key>width1</key>
@@ -1180,7 +1109,7 @@
</param>
<param>
<key>label2</key>
- <value>Dummy</value>
+ <value>Input</value>
</param>
<param>
<key>width2</key>
@@ -1404,7 +1333,58 @@
</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>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>
@@ -1426,6 +1406,10 @@
<value>enc_cc</value>
</param>
<param>
+ <key>packed</key>
+ <value>True</value>
+ </param>
+ <param>
<key>rev_unpack</key>
<value>True</value>
</param>
@@ -1451,7 +1435,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(429, 148)</value>
+ <value>(599, 112)</value>
</param>
<param>
<key>_rotation</key>
@@ -1459,58 +1443,132 @@
</param>
</block>
<block>
- <key>fec_extended_decoder</key>
+ <key>fec_async_decoder</key>
<param>
<key>id</key>
- <value>fec_extended_decoder_0_1_0</value>
+ <value>fec_async_decoder_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>fec_extended_decoder</value>
+ <key>decoder</key>
+ <value>dec_cc</value>
</param>
<param>
- <key>decoder_list</key>
- <value>dec_cc</value>
+ <key>packed</key>
+ <value>True</value>
</param>
<param>
- <key>threadtype</key>
- <value>none</value>
+ <key>rev_pack</key>
+ <value>True</value>
</param>
<param>
- <key>ann</key>
- <value>None</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>puncpat</key>
- <value>puncpat</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>lentagname</key>
- <value>pkt_len</value>
+ <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>affinity</key>
- <value></value>
+ <key>_coordinate</key>
+ <value>(598, 636)</value>
</param>
<param>
- <key>minoutbuf</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>variable_dummy_encoder_def</key>
<param>
- <key>maxoutbuf</key>
+ <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>(883, 156)</value>
+ <value>(599, 538)</value>
</param>
<param>
<key>_rotation</key>
@@ -1565,7 +1623,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 +1658,7 @@
</param>
<param>
<key>ndim</key>
- <value>1</value>
+ <value>0</value>
</param>
<param>
<key>dim1</key>
@@ -1632,7 +1694,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 +1706,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(400, 668)</value>
+ <value>(402, 687)</value>
</param>
<param>
<key>_rotation</key>
@@ -1666,50 +1732,44 @@
<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>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>digital_crc32_bb_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_repack_bits_bb_0_0</source_block_id>
- <sink_block_id>digital_crc32_bb_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>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_pdu_to_tagged_stream_0</source_block_id>
- <sink_block_id>blocks_repack_bits_bb_0</sink_block_id>
+ <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>
@@ -1720,26 +1780,32 @@
<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_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>fec_extended_decoder_0_1_0</source_block_id>
- <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
+ <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>blocks_char_to_float_0_1</source_block_id>
- <sink_block_id>fec_extended_decoder_0_1_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
+ <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_repack_bits_bb_0_0</source_block_id>
- <sink_block_id>blocks_char_to_float_0_0_0_0</sink_block_id>
+ <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>
diff --git a/gr-fec/examples/fecapi_async_to_stream.grc
b/gr-fec/examples/fecapi_async_to_stream.grc
index 0692573..84e10e7 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 1f9ff99..30bf0d1 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 16a01ed..55b1acd 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 b68bd71..46fa9be 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 d0d160e..cbaba97 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 d3cfd2c..8e97476 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 5f4c5c4..c3c7a7c 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 ff7480f..556a8a5 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 2c43b0d..7cca623 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 90d2ee4..75d7dcd 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
- [Commit-gnuradio] [gnuradio] 22/57: fec: wip: adding block that correlates against an access code and produces a tagged stream ofthe payload (stripped access code)., (continued)
- [Commit-gnuradio] [gnuradio] 22/57: fec: wip: adding block that correlates against an access code and produces a tagged stream ofthe payload (stripped access code)., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 53/57: fec: wip: adding qa code., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 50/57: fec: wip: adding concept of padding for CC encoder/decoder., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 54/57: fec: mostly documentation updates, spell check, etc., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 55/57: fec: wip: fixing up allocated memory; allowing async encoder deployment to be used with CCSDS (packed input requirement)., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 41/57: digital: adding an async message passsing CRC32 calc/check block for PDUs., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 38/57: fec: wip: cleaning up tagged decoder, rep code., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 57/57: digital: fixing up some work done in the fec api development., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 40/57: fec: wip: adding async (PDU) encoder and decoder blocks., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 36/57: fec: wip: mods for ber plotting. Now adding theoretical BPSK in AWGN curve., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 52/57: fec: wip: async encoder/decoder working deployments.,
git <=
- [Commit-gnuradio] [gnuradio] 16/57: fec: Merging fecapi with support for CC code., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 33/57: fec: wip: adding a dummy encoder/decoder and repetition code to exercise the API., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 49/57: blocks: adding reverse packing/unpacking functions., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 28/57: fec: updating puncturing, adding documentation, adding CCSDS encoder., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 05/57: codec2 library update, git, 2014/05/20