diff options
author | Tom Rondeau <tom@trondeau.com> | 2014-05-20 15:46:50 -0400 |
---|---|---|
committer | Tom Rondeau <tom@trondeau.com> | 2014-05-20 15:46:50 -0400 |
commit | 81bc67650349bf5a9f770847bde03e530655e068 (patch) | |
tree | 4c988202a40069bf7f073dd0e7225c160d75e782 /gr-fec | |
parent | 675b74857419a381bd2816778f79022293e96237 (diff) |
fec: wip: fixing up allocated memory; allowing async encoder deployment to be used with CCSDS (packed input requirement).
Diffstat (limited to 'gr-fec')
-rw-r--r-- | gr-fec/examples/fecapi_async_decoders.grc | 582 | ||||
-rw-r--r-- | gr-fec/examples/fecapi_async_packed_decoders.grc | 409 | ||||
-rw-r--r-- | gr-fec/examples/fecapi_async_to_stream.grc | 42 | ||||
-rw-r--r-- | gr-fec/examples/fecapi_decoders.grc | 92 | ||||
-rw-r--r-- | gr-fec/examples/fecapi_tagged_decoders.grc | 38 | ||||
-rw-r--r-- | gr-fec/include/gnuradio/fec/async_encoder.h | 4 | ||||
-rw-r--r-- | gr-fec/lib/async_decoder_impl.cc | 2 | ||||
-rw-r--r-- | gr-fec/lib/async_encoder_impl.cc | 74 | ||||
-rw-r--r-- | gr-fec/lib/async_encoder_impl.h | 3 |
9 files changed, 849 insertions, 397 deletions
diff --git a/gr-fec/examples/fecapi_async_decoders.grc b/gr-fec/examples/fecapi_async_decoders.grc index 08a8826ba6..c641ebb624 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>Mon May 19 19:34:15 2014</timestamp> + <timestamp>Tue May 20 15:23:14 2014</timestamp> <block> <key>options</key> <param> @@ -716,49 +716,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>(408, 375)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>blocks_repack_bits_bb</key> <param> <key>id</key> @@ -1321,57 +1278,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>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> @@ -1662,6 +1568,486 @@ <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_TERMINATED</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(992, 537)</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_ccsds</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>qtgui_time_sink_x</key> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>name</key> + <value>QT GUI Plot</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>srate</key> + <value>samp_rate</value> + </param> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>ymin</key> + <value>-1</value> + </param> + <param> + <key>ymax</key> + <value>1</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</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></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(639, 250)</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>(408, 375)</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> @@ -1758,4 +2144,10 @@ <source_key>out</source_key> <sink_key>pdus</sink_key> </connection> + <connection> + <source_block_id>blocks_char_to_float_0_1</source_block_id> + <sink_block_id>qtgui_time_sink_x_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> </flow_graph> diff --git a/gr-fec/examples/fecapi_async_packed_decoders.grc b/gr-fec/examples/fecapi_async_packed_decoders.grc index dc8fdcbf1c..52cda86940 100644 --- a/gr-fec/examples/fecapi_async_packed_decoders.grc +++ b/gr-fec/examples/fecapi_async_packed_decoders.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Mon May 19 19:35:27 2014</timestamp> + <timestamp>Tue May 20 15:19:00 2014</timestamp> <block> <key>options</key> <param> @@ -744,49 +744,6 @@ </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> @@ -920,49 +877,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>(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> @@ -1341,10 +1255,10 @@ </param> </block> <block> - <key>variable_ccsds_encoder_def</key> + <key>variable_dummy_decoder_def</key> <param> <key>id</key> - <value>enc_ccsds</value> + <value>dec_dummy</value> </param> <param> <key>_enabled</key> @@ -1371,20 +1285,12 @@ <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> + <value>(598, 636)</value> </param> <param> <key>_rotation</key> @@ -1392,50 +1298,42 @@ </param> </block> <block> - <key>fec_async_encoder</key> + <key>variable_dummy_encoder_def</key> <param> <key>id</key> - <value>fec_async_encoder_0</value> + <value>enc_dummy</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>encoder</key> - <value>enc_cc</value> + <key>value</key> + <value>"ok"</value> </param> <param> - <key>packed</key> - <value>True</value> + <key>ndim</key> + <value>0</value> </param> <param> - <key>rev_unpack</key> - <value>True</value> + <key>dim1</key> + <value>1</value> </param> <param> - <key>rev_pack</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>(599, 112)</value> + <value>(599, 538)</value> </param> <param> <key>_rotation</key> @@ -1443,46 +1341,66 @@ </param> </block> <block> - <key>fec_async_decoder</key> + <key>variable_cc_encoder_def</key> <param> <key>id</key> - <value>fec_async_decoder_0</value> + <value>enc_cc</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>decoder</key> - <value>dec_cc</value> + <key>value</key> + <value>"ok"</value> </param> <param> - <key>packed</key> - <value>True</value> + <key>ndim</key> + <value>0</value> </param> <param> - <key>rev_pack</key> - <value>True</value> + <key>dim1</key> + <value>1</value> </param> <param> - <key>alias</key> - <value></value> + <key>dim2</key> + <value>1</value> </param> <param> - <key>affinity</key> - <value></value> + <key>framebits</key> + <value>8000</value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>k</key> + <value>k</value> </param> <param> - <key>maxoutbuf</key> + <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>(851, 111)</value> + <value>(401, 510)</value> </param> <param> <key>_rotation</key> @@ -1490,10 +1408,10 @@ </param> </block> <block> - <key>variable_dummy_decoder_def</key> + <key>variable_cc_decoder_def</key> <param> <key>id</key> - <value>dec_dummy</value> + <value>dec_cc</value> </param> <param> <key>_enabled</key> @@ -1513,19 +1431,47 @@ </param> <param> <key>dim2</key> - <value>1</value> + <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>(598, 636)</value> + <value>(402, 687)</value> </param> <param> <key>_rotation</key> @@ -1533,42 +1479,85 @@ </param> </block> <block> - <key>variable_dummy_encoder_def</key> + <key>blocks_tagged_stream_to_pdu</key> <param> <key>id</key> - <value>enc_dummy</value> + <value>blocks_tagged_stream_to_pdu_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>"ok"</value> + <key>type</key> + <value>byte</value> </param> <param> - <key>ndim</key> + <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>dim1</key> - <value>1</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>dim2</key> + <key>_coordinate</key> + <value>(363, 112)</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>framebits</key> - <value>8000</value> + <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>(599, 538)</value> + <value>(372, 367)</value> </param> <param> <key>_rotation</key> @@ -1576,10 +1565,10 @@ </param> </block> <block> - <key>variable_cc_encoder_def</key> + <key>variable_ccsds_encoder_def</key> <param> <key>id</key> - <value>enc_cc</value> + <value>enc_ccsds</value> </param> <param> <key>_enabled</key> @@ -1606,36 +1595,71 @@ <value>8000</value> </param> <param> - <key>k</key> - <value>k</value> + <key>state_start</key> + <value>0</value> </param> <param> - <key>rate</key> - <value>rate</value> + <key>mode</key> + <value>fec.CC_TERMINATED</value> </param> <param> - <key>polys</key> - <value>polys</value> + <key>alias</key> + <value></value> </param> <param> - <key>state_start</key> + <key>_coordinate</key> + <value>(1032, 503)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>fec_async_encoder</key> <param> - <key>mode</key> - <value>fec.CC_TERMINATED</value> + <key>id</key> + <value>fec_async_encoder_0</value> </param> <param> - <key>padding</key> - <value>False</value> + <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>(401, 510)</value> + <value>(599, 112)</value> </param> <param> <key>_rotation</key> @@ -1643,62 +1667,65 @@ </param> </block> <block> - <key>variable_cc_decoder_def</key> + <key>fec_async_decoder</key> <param> <key>id</key> - <value>dec_cc</value> + <value>fec_async_decoder_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>"ok"</value> + <key>decoder</key> + <value>dec_cc</value> </param> <param> - <key>ndim</key> - <value>0</value> + <key>packed</key> + <value>True</value> </param> <param> - <key>dim1</key> - <value>1</value> + <key>rev_pack</key> + <value>True</value> </param> <param> - <key>dim2</key> - <value>4</value> + <key>alias</key> + <value></value> </param> <param> - <key>framebits</key> - <value>8000</value> + <key>affinity</key> + <value></value> </param> <param> - <key>k</key> - <value>k</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>rate</key> - <value>rate</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>polys</key> - <value>polys</value> + <key>_coordinate</key> + <value>(851, 111)</value> </param> <param> - <key>state_start</key> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>note</key> <param> - <key>state_end</key> - <value>-1</value> + <key>id</key> + <value>note_ccsds</value> </param> <param> - <key>mode</key> - <value>fec.CC_TERMINATED</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>padding</key> - <value>False</value> + <key>note</key> + <value>When using CCSDS encoder, turn Rev. Unpacking to Off/False in the Async Decoder</value> </param> <param> <key>alias</key> @@ -1706,7 +1733,7 @@ </param> <param> <key>_coordinate</key> - <value>(402, 687)</value> + <value>(1034, 617)</value> </param> <param> <key>_rotation</key> diff --git a/gr-fec/examples/fecapi_async_to_stream.grc b/gr-fec/examples/fecapi_async_to_stream.grc index 84e10e775c..afd6fdbab8 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>Mon May 19 17:07:45 2014</timestamp> + <timestamp>Tue May 20 15:21:44 2014</timestamp> <block> <key>options</key> <param> @@ -1889,30 +1889,22 @@ </param> </block> <block> - <key>fec_async_encoder</key> + <key>digital_crc32_bb</key> <param> <key>id</key> - <value>fec_async_encoder_0</value> + <value>digital_crc32_bb_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> + <key>check</key> <value>True</value> </param> <param> - <key>rev_pack</key> - <value>True</value> + <key>lengthtagname</key> + <value>pkt_len</value> </param> <param> <key>alias</key> @@ -1932,7 +1924,7 @@ </param> <param> <key>_coordinate</key> - <value>(429, 148)</value> + <value>(1214, 332)</value> </param> <param> <key>_rotation</key> @@ -1940,22 +1932,30 @@ </param> </block> <block> - <key>digital_crc32_bb</key> + <key>fec_async_encoder</key> <param> <key>id</key> - <value>digital_crc32_bb_0</value> + <value>fec_async_encoder_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>check</key> + <key>encoder</key> + <value>enc_cc</value> + </param> + <param> + <key>packed</key> <value>True</value> </param> <param> - <key>lengthtagname</key> - <value>pkt_len</value> + <key>rev_unpack</key> + <value>True</value> + </param> + <param> + <key>rev_pack</key> + <value>True</value> </param> <param> <key>alias</key> @@ -1975,7 +1975,7 @@ </param> <param> <key>_coordinate</key> - <value>(1214, 332)</value> + <value>(429, 148)</value> </param> <param> <key>_rotation</key> diff --git a/gr-fec/examples/fecapi_decoders.grc b/gr-fec/examples/fecapi_decoders.grc index e48ee596a7..cec1b050d4 100644 --- a/gr-fec/examples/fecapi_decoders.grc +++ b/gr-fec/examples/fecapi_decoders.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Mon May 19 20:50:43 2014</timestamp> + <timestamp>Tue May 20 13:32:56 2014</timestamp> <block> <key>options</key> <param> @@ -325,49 +325,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>frame_size*8</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(370, 656)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>variable_cc_decoder_def</key> <param> <key>id</key> @@ -1815,7 +1772,7 @@ </param> <param> <key>ndim</key> - <value>2</value> + <value>1</value> </param> <param> <key>dim1</key> @@ -1835,7 +1792,50 @@ </param> <param> <key>_coordinate</key> - <value>(370, 562)</value> + <value>(371, 562)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_dummy_decoder_def</key> + <param> + <key>id</key> + <value>dec_dummy</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>1</value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>frame_size*8</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(371, 656)</value> </param> <param> <key>_rotation</key> diff --git a/gr-fec/examples/fecapi_tagged_decoders.grc b/gr-fec/examples/fecapi_tagged_decoders.grc index d2512cea56..bbb8282572 100644 --- a/gr-fec/examples/fecapi_tagged_decoders.grc +++ b/gr-fec/examples/fecapi_tagged_decoders.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue May 20 10:51:56 2014</timestamp> + <timestamp>Tue May 20 15:45:42 2014</timestamp> <block> <key>options</key> <param> @@ -68,7 +68,7 @@ <key>variable</key> <param> <key>id</key> - <value>rep</value> + <value>polys</value> </param> <param> <key>_enabled</key> @@ -76,7 +76,7 @@ </param> <param> <key>value</key> - <value>3</value> + <value>[109, 79]</value> </param> <param> <key>alias</key> @@ -84,7 +84,7 @@ </param> <param> <key>_coordinate</key> - <value>(365, 759)</value> + <value>(72, 584)</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>(30, 520)</value> + <value>(97, 520)</value> </param> <param> <key>_rotation</key> @@ -122,7 +122,7 @@ <key>variable</key> <param> <key>id</key> - <value>length_tag</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> @@ -130,7 +130,7 @@ </param> <param> <key>value</key> - <value>"packet_len"</value> + <value>50000</value> </param> <param> <key>alias</key> @@ -138,7 +138,7 @@ </param> <param> <key>_coordinate</key> - <value>(101, 73)</value> + <value>(12, 73)</value> </param> <param> <key>_rotation</key> @@ -149,7 +149,7 @@ <key>variable</key> <param> <key>id</key> - <value>samp_rate</value> + <value>length_tag</value> </param> <param> <key>_enabled</key> @@ -157,7 +157,7 @@ </param> <param> <key>value</key> - <value>50000</value> + <value>"packet_len"</value> </param> <param> <key>alias</key> @@ -165,7 +165,7 @@ </param> <param> <key>_coordinate</key> - <value>(12, 73)</value> + <value>(101, 73)</value> </param> <param> <key>_rotation</key> @@ -176,7 +176,7 @@ <key>variable</key> <param> <key>id</key> - <value>rate</value> + <value>k</value> </param> <param> <key>_enabled</key> @@ -184,7 +184,7 @@ </param> <param> <key>value</key> - <value>2</value> + <value>7</value> </param> <param> <key>alias</key> @@ -192,7 +192,7 @@ </param> <param> <key>_coordinate</key> - <value>(97, 520)</value> + <value>(30, 520)</value> </param> <param> <key>_rotation</key> @@ -203,7 +203,7 @@ <key>variable</key> <param> <key>id</key> - <value>polys</value> + <value>rep</value> </param> <param> <key>_enabled</key> @@ -211,7 +211,7 @@ </param> <param> <key>value</key> - <value>[109, 79]</value> + <value>3</value> </param> <param> <key>alias</key> @@ -219,7 +219,7 @@ </param> <param> <key>_coordinate</key> - <value>(72, 584)</value> + <value>(365, 759)</value> </param> <param> <key>_rotation</key> diff --git a/gr-fec/include/gnuradio/fec/async_encoder.h b/gr-fec/include/gnuradio/fec/async_encoder.h index 0310ae4c28..0d31bc401d 100644 --- a/gr-fec/include/gnuradio/fec/async_encoder.h +++ b/gr-fec/include/gnuradio/fec/async_encoder.h @@ -34,8 +34,8 @@ namespace gr { /*! * \brief Creates the encoder block for use in GNU Radio * flowgraphs with async message from a given FEC API object - * derived from the generic_encoder class. \ingroup - * error_coding_blk + * derived from the generic_encoder class. + * \ingroup error_coding_blk * * \details * diff --git a/gr-fec/lib/async_decoder_impl.cc b/gr-fec/lib/async_decoder_impl.cc index 8e9747609c..f5924ec1f9 100644 --- a/gr-fec/lib/async_decoder_impl.cc +++ b/gr-fec/lib/async_decoder_impl.cc @@ -91,7 +91,7 @@ namespace gr { { if(d_packed) { delete d_pack; - delete d_bits_out; + volk_free(d_bits_out); } volk_free(d_tmp_f32); diff --git a/gr-fec/lib/async_encoder_impl.cc b/gr-fec/lib/async_encoder_impl.cc index 556a8a5e9b..d6ce67d491 100644 --- a/gr-fec/lib/async_encoder_impl.cc +++ b/gr-fec/lib/async_encoder_impl.cc @@ -60,20 +60,42 @@ namespace gr { message_port_register_out(d_out_port); 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) ); + + d_unpack = new blocks::kernel::unpack_k_bits(8); + + int max_bits_out = d_encoder->get_output_size(); + d_bits_out = (uint8_t*)volk_malloc(max_bits_out*sizeof(uint8_t), + volk_get_alignment()); + } else { set_msg_handler(d_in_port, boost::bind(&async_encoder_impl::encode_unpacked, this ,_1) ); } + + if(d_packed || (strncmp(d_encoder->get_input_conversion(), "pack", 4) == 0)) { + // encode_unpacked: if input conversion is 'pack', pack the input bits + // encode_packed: used to repack the output + d_pack = new blocks::kernel::pack_k_bits(8); + + // encode_unpacked: Holds packed bits in when input conversion is packed + // encode_packed: holds the output bits of the encoder to be packed + int max_bits_in = d_encoder->get_input_size(); + d_bits_in = (uint8_t*)volk_malloc(max_bits_in*sizeof(uint8_t), + volk_get_alignment()); + } } async_encoder_impl::~async_encoder_impl() { if(d_packed) { delete d_unpack; + volk_free(d_bits_out); + } + + if(d_packed || (strncmp(d_encoder->get_input_conversion(), "pack", 4) == 0)) { delete d_pack; + volk_free(d_bits_in); } } @@ -96,8 +118,13 @@ namespace gr { 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); + if(strncmp(d_encoder->get_input_conversion(), "pack", 4) == 0) { + d_pack->pack(d_bits_in, bits_in, nbits_in/8); + d_encoder->generic_work((void*)d_bits_in, (void*)bits_out); + } + else { + 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); @@ -114,41 +141,44 @@ namespace gr { 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_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_in); - else - 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), - volk_get_alignment()); + if(strncmp(d_encoder->get_input_conversion(), "pack", 4) == 0) { + // If the input takes packed, anyways, don't go through the + // unpacker. Note that if we need the unpacking to reverse, + // we won't get that here and might have to correct for it in + // the decoder. + // d_bits_in > bytes_in, so we're abusing the existence of + // this allocated memory here + memcpy(d_bits_in, bytes_in, nbytes_in*sizeof(uint8_t)); + } + else { + // 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(d_bits_in, bytes_in, nbytes_in); + else + d_unpack->unpack(d_bits_in, bytes_in, nbytes_in); + } + // buffers for output bytes to go to pmt::pmt_t outvec = pmt::make_u8vector(nbytes_out, 0x00); uint8_t* bytes_out = pmt::u8vector_writable_elements(outvec, o0); // ENCODE! - d_encoder->generic_work((void*)bits_in, (void*)bits_out); + d_encoder->generic_work((void*)d_bits_in, (void*)d_bits_out); if(d_rev_pack) - d_pack->pack_rev(bytes_out, bits_out, nbytes_out); + d_pack->pack_rev(bytes_out, d_bits_out, nbytes_out); else - d_pack->pack(bytes_out, bits_out, nbytes_out); + d_pack->pack(bytes_out, d_bits_out, nbytes_out); pmt::pmt_t msg_pair = pmt::cons(meta, outvec); message_port_pub(d_out_port, msg_pair); - - volk_free(bits_in); - volk_free(bits_out); } int diff --git a/gr-fec/lib/async_encoder_impl.h b/gr-fec/lib/async_encoder_impl.h index 7cca623d35..fe48177b95 100644 --- a/gr-fec/lib/async_encoder_impl.h +++ b/gr-fec/lib/async_encoder_impl.h @@ -47,6 +47,9 @@ namespace gr { bool d_rev_unpack; bool d_rev_pack; + uint8_t* d_bits_in; + uint8_t* d_bits_out; + void encode_packed(pmt::pmt_t msg); void encode_unpacked(pmt::pmt_t msg); |