diff options
-rw-r--r-- | gr-blocks/grc/blocks_null_sink.block.yml | 2 | ||||
-rw-r--r-- | gr-blocks/grc/blocks_null_source.block.yml | 2 | ||||
-rw-r--r-- | gr-fec/examples/ber_curve_gen.grc | 2912 | ||||
-rw-r--r-- | gr-fec/grc/tpc_decoder_def_list.block.yml | 6 | ||||
-rw-r--r-- | gr-fec/grc/variable_cc_decoder_def_list.block.yml | 2 | ||||
-rw-r--r-- | gr-fec/grc/variable_cc_encoder_def_list.block.yml | 5 | ||||
-rw-r--r-- | gr-fec/grc/variable_dummy_decoder_def_list.block.yml | 2 | ||||
-rw-r--r-- | gr-fec/grc/variable_dummy_encoder_def_list.block.yml | 7 | ||||
-rw-r--r-- | gr-qtgui/grc/qtgui_ber_sink_b.block.yml | 10 | ||||
-rw-r--r-- | grc/blocks/grc.tree.yml | 4 | ||||
-rw-r--r-- | grc/core/FlowGraph.py | 2 | ||||
-rw-r--r-- | grc/core/blocks/block.py | 223 | ||||
-rw-r--r-- | grc/core/generator/cpp_top_block.py | 29 | ||||
-rw-r--r-- | grc/core/generator/top_block.py | 25 | ||||
-rw-r--r-- | grc/core/ports/port.py | 54 | ||||
-rw-r--r-- | grc/gui/Application.py | 4 | ||||
-rw-r--r-- | grc/gui/canvas/block.py | 27 | ||||
-rw-r--r-- | grc/gui/canvas/connection.py | 2 | ||||
-rw-r--r-- | grc/gui/canvas/flowgraph.py | 8 | ||||
-rw-r--r-- | grc/gui/canvas/port.py | 9 |
20 files changed, 873 insertions, 2462 deletions
diff --git a/gr-blocks/grc/blocks_null_sink.block.yml b/gr-blocks/grc/blocks_null_sink.block.yml index 4e3fbc754e..c6145cbced 100644 --- a/gr-blocks/grc/blocks_null_sink.block.yml +++ b/gr-blocks/grc/blocks_null_sink.block.yml @@ -21,7 +21,7 @@ parameters: dtype: int default: '1' hide: part -- id: bus_conns +- id: bus_structure_sink label: Bus Connections dtype: raw default: '[[0,],]' diff --git a/gr-blocks/grc/blocks_null_source.block.yml b/gr-blocks/grc/blocks_null_source.block.yml index 8a0faa6af3..fb28b50121 100644 --- a/gr-blocks/grc/blocks_null_source.block.yml +++ b/gr-blocks/grc/blocks_null_source.block.yml @@ -21,7 +21,7 @@ parameters: dtype: int default: '1' hide: part -- id: bus_conns +- id: bus_structure_source label: Bus Connections dtype: raw default: '[[0,],]' diff --git a/gr-fec/examples/ber_curve_gen.grc b/gr-fec/examples/ber_curve_gen.grc index afffcabeee..537e78174c 100644 --- a/gr-fec/examples/ber_curve_gen.grc +++ b/gr-fec/examples/ber_curve_gen.grc @@ -1,2414 +1,498 @@ -<?xml version='1.0' encoding='utf-8'?> -<?grc format='1' created='3.7.8'?> -<flow_graph> - <timestamp>Tue May 13 19:32:00 2014</timestamp> - <block> - <key>options</key> - <param> - <key>author</key> - <value></value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>description</key> - <value></value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(8, 11)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>generate_options</key> - <value>qt_gui</value> - </param> - <param> - <key>id</key> - <value>ber_curve_gen</value> - </param> - <param> - <key>max_nouts</key> - <value>0</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>run_options</key> - <value>prompt</value> - </param> - <param> - <key>run</key> - <value>True</value> - </param> - <param> - <key>thread_safe_setters</key> - <value></value> - </param> - <param> - <key>title</key> - <value></value> - </param> - <param> - <key>window_size</key> - <value>2000,2000</value> - </param> - </block> - <block> - <key>variable_cc_decoder_def</key> - <param> - <key>padding</key> - <value>False</value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>k</key> - <value>k</value> - </param> - <param> - <key>dim1</key> - <value>len(esno_0)</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>state_end</key> - <value>-1</value> - </param> - <param> - <key>framebits</key> - <value>framebits</value> - </param> - <param> - <key>_coordinate</key> - <value>(8, 659)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>dec_cc</value> - </param> - <param> - <key>value</key> - <value>"ok"</value> - </param> - <param> - <key>ndim</key> - <value>2</value> - </param> - <param> - <key>polys</key> - <value>polys</value> - </param> - <param> - <key>rate</key> - <value>rate</value> - </param> - <param> - <key>state_start</key> - <value>0</value> - </param> - <param> - <key>mode</key> - <value>fec.CC_STREAMING</value> - </param> - </block> - <block> - <key>variable_dummy_decoder_def</key> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>dim1</key> - <value>len(esno_0)</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>framebits</key> - <value>framebits</value> - </param> - <param> - <key>_coordinate</key> - <value>(424, 771)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>dec_dummy</value> - </param> - <param> - <key>value</key> - <value>"ok"</value> - </param> - <param> - <key>ndim</key> - <value>2</value> - </param> - </block> - <block> - <key>variable_ldpc_decoder_def</key> - <param> - <key>file</key> - <value>gr.prefix() + "/share/gnuradio/fec/ldpc/271.127.3.112"</value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>dim1</key> - <value>len(esno_0)</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(608, 739)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>dec_ldpc</value> - </param> - <param> - <key>value</key> - <value>"ok"</value> - </param> - <param> - <key>max_iter</key> - <value>50</value> - </param> - <param> - <key>ndim</key> - <value>2</value> - </param> - <param> - <key>sigma</key> - <value>0.5</value> - </param> - </block> - <block> - <key>variable_repetition_decoder_def</key> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>dim1</key> - <value>len(esno_0)</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>framebits</key> - <value>framebits</value> - </param> - <param> - <key>_coordinate</key> - <value>(216, 739)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>dec_rep</value> - </param> - <param> - <key>value</key> - <value>"ok"</value> - </param> - <param> - <key>ndim</key> - <value>2</value> - </param> - <param> - <key>rep</key> - <value>3</value> - </param> - <param> - <key>prob</key> - <value>0.5</value> - </param> - </block> - <block> - <key>variable_tpc_decoder_def</key> - <param> - <key>bval</key> - <value>9</value> - </param> - <param> - <key>col_poly</key> - <value>[43]</value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>decoder_type</key> - <value>1</value> - </param> - <param> - <key>dim1</key> - <value>len(esno_0)</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(776, 659)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>dec_tpc</value> - </param> - <param> - <key>value</key> - <value>"ok"</value> - </param> - <param> - <key>kcol</key> - <value>6</value> - </param> - <param> - <key>krow</key> - <value>26</value> - </param> - <param> - <key>max_iter</key> - <value>6</value> - </param> - <param> - <key>ndim</key> - <value>2</value> - </param> - <param> - <key>qval</key> - <value>3</value> - </param> - <param> - <key>row_poly</key> - <value>[3]</value> - </param> - </block> - <block> - <key>variable_cc_encoder_def</key> - <param> - <key>padding</key> - <value>False</value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>k</key> - <value>k</value> - </param> - <param> - <key>dim1</key> - <value>len(esno_0)</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>framebits</key> - <value>framebits</value> - </param> - <param> - <key>_coordinate</key> - <value>(8, 451)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>enc_cc</value> - </param> - <param> - <key>ndim</key> - <value>2</value> - </param> - <param> - <key>polys</key> - <value>polys</value> - </param> - <param> - <key>rate</key> - <value>rate</value> - </param> - <param> - <key>state_start</key> - <value>0</value> - </param> - <param> - <key>mode</key> - <value>fec.CC_STREAMING</value> - </param> - </block> - <block> - <key>variable_dummy_encoder_def</key> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>dim1</key> - <value>len(esno_0)</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>framebits</key> - <value>framebits</value> - </param> - <param> - <key>_coordinate</key> - <value>(424, 659)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>enc_dummy</value> - </param> - <param> - <key>ndim</key> - <value>2</value> - </param> - </block> - <block> - <key>variable_ldpc_encoder_def</key> - <param> - <key>file</key> - <value>gr.prefix() + "/share/gnuradio/fec/ldpc/271.127.3.112"</value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>dim1</key> - <value>len(esno_0)</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(608, 627)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>enc_ldpc</value> - </param> - <param> - <key>value</key> - <value>"ok"</value> - </param> - <param> - <key>ndim</key> - <value>2</value> - </param> - </block> - <block> - <key>variable_repetition_encoder_def</key> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>dim1</key> - <value>len(esno_0)</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>framebits</key> - <value>framebits</value> - </param> - <param> - <key>_coordinate</key> - <value>(216, 603)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>enc_rep</value> - </param> - <param> - <key>ndim</key> - <value>2</value> - </param> - <param> - <key>rep</key> - <value>3</value> - </param> - </block> - <block> - <key>variable_tpc_encoder_def</key> - <param> - <key>bval</key> - <value>9</value> - </param> - <param> - <key>col_poly</key> - <value>[43]</value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>dim1</key> - <value>len(esno_0)</value> - </param> - <param> - <key>dim2</key> - <value>1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(776, 467)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>enc_tpc</value> - </param> - <param> - <key>value</key> - <value>"ok"</value> - </param> - <param> - <key>kcol</key> - <value>6</value> - </param> - <param> - <key>krow</key> - <value>26</value> - </param> - <param> - <key>ndim</key> - <value>2</value> - </param> - <param> - <key>qval</key> - <value>3</value> - </param> - <param> - <key>row_poly</key> - <value>[3]</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(8, 139)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>esno_0</value> - </param> - <param> - <key>value</key> - <value>numpy.arange(0, 8, .5) </value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(112, 75)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>framebits</value> - </param> - <param> - <key>value</key> - <value>4096</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(8, 379)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>k</value> - </param> - <param> - <key>value</key> - <value>7</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(80, 379)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>polys</value> - </param> - <param> - <key>value</key> - <value>[79, 109]</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(8, 315)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>rate</value> - </param> - <param> - <key>value</key> - <value>2</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(8, 75)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>samp_rate_0</value> - </param> - <param> - <key>value</key> - <value>35000000</value> - </param> - </block> - <block> - <key>fec_bercurve_generator</key> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>decoder_list</key> - <value>dec_cc</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>encoder_list</key> - <value>enc_cc</value> - </param> - <param> - <key>esno</key> - <value>esno_0</value> - </param> - <param> - <key>_coordinate</key> - <value>(248, 203)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>fec_bercurve_generator_0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>seed</key> - <value>-100</value> - </param> - <param> - <key>puncpat</key> - <value>'11'</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate_0</value> - </param> - <param> - <key>threadtype</key> - <value>"capillary"</value> - </param> - <bus_source>1</bus_source> - </block> - <block> - <key>fec_bercurve_generator</key> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>decoder_list</key> - <value>dec_rep</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>encoder_list</key> - <value>enc_rep</value> - </param> - <param> - <key>esno</key> - <value>esno_0</value> - </param> - <param> - <key>_coordinate</key> - <value>(248, 107)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>fec_bercurve_generator_0_0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>seed</key> - <value>-100</value> - </param> - <param> - <key>puncpat</key> - <value>'11'</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate_0</value> - </param> - <param> - <key>threadtype</key> - <value>"capillary"</value> - </param> - <bus_source>1</bus_source> - </block> - <block> - <key>fec_bercurve_generator</key> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>decoder_list</key> - <value>dec_dummy</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>encoder_list</key> - <value>enc_dummy</value> - </param> - <param> - <key>esno</key> - <value>esno_0</value> - </param> - <param> - <key>_coordinate</key> - <value>(248, 11)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>fec_bercurve_generator_0_0_0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>seed</key> - <value>-100</value> - </param> - <param> - <key>puncpat</key> - <value>'11'</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate_0</value> - </param> - <param> - <key>threadtype</key> - <value>"capillary"</value> - </param> - <bus_source>1</bus_source> - </block> - <block> - <key>fec_bercurve_generator</key> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>decoder_list</key> - <value>dec_ldpc</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>encoder_list</key> - <value>enc_ldpc</value> - </param> - <param> - <key>esno</key> - <value>esno_0</value> - </param> - <param> - <key>_coordinate</key> - <value>(248, 299)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>fec_bercurve_generator_0_1</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>seed</key> - <value>-100</value> - </param> - <param> - <key>puncpat</key> - <value>'11'</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate_0</value> - </param> - <param> - <key>threadtype</key> - <value>"capillary"</value> - </param> - <bus_source>1</bus_source> - </block> - <block> - <key>fec_bercurve_generator</key> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>decoder_list</key> - <value>dec_tpc</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>encoder_list</key> - <value>enc_tpc</value> - </param> - <param> - <key>esno</key> - <value>esno_0</value> - </param> - <param> - <key>_coordinate</key> - <value>(248, 395)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>fec_bercurve_generator_0_1_0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>seed</key> - <value>-100</value> - </param> - <param> - <key>puncpat</key> - <value>'11'</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate_0</value> - </param> - <param> - <key>threadtype</key> - <value>"capillary"</value> - </param> - <bus_source>1</bus_source> - </block> - <block> - <key>qtgui_bercurve_sink</key> - <param> - <key>berlimit</key> - <value>-10</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>comment</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>curvenames</key> - <value>[]</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(696, 15)</value> - </param> - <param> - <key>gui_hint</key> - <value></value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - <param> - <key>id</key> - <value>qtgui_bercurve_sink_0</value> - </param> - <param> - <key>alpha1</key> - <value>1</value> - </param> - <param> - <key>color1</key> - <value>"blue"</value> - </param> - <param> - <key>label1</key> - <value>None</value> - </param> - <param> - <key>marker1</key> - <value>0</value> - </param> - <param> - <key>style1</key> - <value>1</value> - </param> - <param> - <key>width1</key> - <value>2</value> - </param> - <param> - <key>alpha10</key> - <value>1.0</value> - </param> - <param> - <key>color10</key> - <value>"red"</value> - </param> - <param> - <key>label10</key> - <value></value> - </param> - <param> - <key>marker10</key> - <value>0</value> - </param> - <param> - <key>style10</key> - <value>0</value> - </param> - <param> - <key>width10</key> - <value>1</value> - </param> - <param> - <key>alpha2</key> - <value>1</value> - </param> - <param> - <key>color2</key> - <value>"red"</value> - </param> - <param> - <key>label2</key> - <value>Rep. (Rate=3)</value> - </param> - <param> - <key>marker2</key> - <value>1</value> - </param> - <param> - <key>style2</key> - <value>2</value> - </param> - <param> - <key>width2</key> - <value>2</value> - </param> - <param> - <key>alpha3</key> - <value>1</value> - </param> - <param> - <key>color3</key> - <value>"magenta"</value> - </param> - <param> - <key>label3</key> - <value>CC (K=7, Rate=2)</value> - </param> - <param> - <key>marker3</key> - <value>0</value> - </param> - <param> - <key>style3</key> - <value>5</value> - </param> - <param> - <key>width3</key> - <value>2</value> - </param> - <param> - <key>alpha4</key> - <value>1.0</value> - </param> - <param> - <key>color4</key> - <value>"dark red"</value> - </param> - <param> - <key>label4</key> - <value>LDPC</value> - </param> - <param> - <key>marker4</key> - <value>0</value> - </param> - <param> - <key>style4</key> - <value>5</value> - </param> - <param> - <key>width4</key> - <value>2</value> - </param> - <param> - <key>alpha5</key> - <value>1.0</value> - </param> - <param> - <key>color5</key> - <value>"Dark Blue"</value> - </param> - <param> - <key>label5</key> - <value>TPC</value> - </param> - <param> - <key>marker5</key> - <value>0</value> - </param> - <param> - <key>style5</key> - <value>4</value> - </param> - <param> - <key>width5</key> - <value>2</value> - </param> - <param> - <key>alpha6</key> - <value>1.0</value> - </param> - <param> - <key>color6</key> - <value>"red"</value> - </param> - <param> - <key>label6</key> - <value></value> - </param> - <param> - <key>marker6</key> - <value>0</value> - </param> - <param> - <key>style6</key> - <value>0</value> - </param> - <param> - <key>width6</key> - <value>1</value> - </param> - <param> - <key>alpha7</key> - <value>1.0</value> - </param> - <param> - <key>color7</key> - <value>"red"</value> - </param> - <param> - <key>label7</key> - <value></value> - </param> - <param> - <key>marker7</key> - <value>0</value> - </param> - <param> - <key>style7</key> - <value>0</value> - </param> - <param> - <key>width7</key> - <value>1</value> - </param> - <param> - <key>alpha8</key> - <value>1.0</value> - </param> - <param> - <key>color8</key> - <value>"red"</value> - </param> - <param> - <key>label8</key> - <value></value> - </param> - <param> - <key>marker8</key> - <value>0</value> - </param> - <param> - <key>style8</key> - <value>0</value> - </param> - <param> - <key>width8</key> - <value>1</value> - </param> - <param> - <key>alpha9</key> - <value>1.0</value> - </param> - <param> - <key>color9</key> - <value>"red"</value> - </param> - <param> - <key>label9</key> - <value></value> - </param> - <param> - <key>marker9</key> - <value>0</value> - </param> - <param> - <key>style9</key> - <value>0</value> - </param> - <param> - <key>width9</key> - <value>1</value> - </param> - <param> - <key>berminerrors</key> - <value>1000</value> - </param> - <param> - <key>num_curves</key> - <value>5</value> - </param> - <param> - <key>update_time</key> - <value>0.10</value> - </param> - <param> - <key>ymax</key> - <value>0</value> - </param> - <param> - <key>ymin</key> - <value>-10</value> - </param> - <param> - <key>esno</key> - <value>esno_0</value> - </param> - <bus_sink>1</bus_sink> - </block> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>32</source_key> - <sink_key>162</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>0</source_key> - <sink_key>64</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>1</source_key> - <sink_key>65</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>10</source_key> - <sink_key>74</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>11</source_key> - <sink_key>75</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>12</source_key> - <sink_key>76</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>13</source_key> - <sink_key>77</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>14</source_key> - <sink_key>78</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>15</source_key> - <sink_key>79</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>16</source_key> - <sink_key>80</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>17</source_key> - <sink_key>81</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>18</source_key> - <sink_key>82</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>19</source_key> - <sink_key>83</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>2</source_key> - <sink_key>66</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>20</source_key> - <sink_key>84</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>21</source_key> - <sink_key>85</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>22</source_key> - <sink_key>86</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>23</source_key> - <sink_key>87</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>24</source_key> - <sink_key>88</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>25</source_key> - <sink_key>89</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>26</source_key> - <sink_key>90</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>27</source_key> - <sink_key>91</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>28</source_key> - <sink_key>92</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>29</source_key> - <sink_key>93</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>3</source_key> - <sink_key>67</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>30</source_key> - <sink_key>94</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>31</source_key> - <sink_key>95</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>4</source_key> - <sink_key>68</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>5</source_key> - <sink_key>69</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>6</source_key> - <sink_key>70</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>7</source_key> - <sink_key>71</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>8</source_key> - <sink_key>72</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>9</source_key> - <sink_key>73</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>32</source_key> - <sink_key>161</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>0</source_key> - <sink_key>32</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>1</source_key> - <sink_key>33</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>10</source_key> - <sink_key>42</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>11</source_key> - <sink_key>43</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>12</source_key> - <sink_key>44</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>13</source_key> - <sink_key>45</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>14</source_key> - <sink_key>46</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>15</source_key> - <sink_key>47</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>16</source_key> - <sink_key>48</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>17</source_key> - <sink_key>49</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>18</source_key> - <sink_key>50</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>19</source_key> - <sink_key>51</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>2</source_key> - <sink_key>34</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>20</source_key> - <sink_key>52</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>21</source_key> - <sink_key>53</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>22</source_key> - <sink_key>54</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>23</source_key> - <sink_key>55</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>24</source_key> - <sink_key>56</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>25</source_key> - <sink_key>57</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>26</source_key> - <sink_key>58</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>27</source_key> - <sink_key>59</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>28</source_key> - <sink_key>60</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>29</source_key> - <sink_key>61</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>3</source_key> - <sink_key>35</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>30</source_key> - <sink_key>62</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>31</source_key> - <sink_key>63</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>4</source_key> - <sink_key>36</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>5</source_key> - <sink_key>37</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>6</source_key> - <sink_key>38</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>7</source_key> - <sink_key>39</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>8</source_key> - <sink_key>40</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>9</source_key> - <sink_key>41</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>32</source_key> - <sink_key>160</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>1</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>10</source_key> - <sink_key>10</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>11</source_key> - <sink_key>11</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>12</source_key> - <sink_key>12</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>13</source_key> - <sink_key>13</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>14</source_key> - <sink_key>14</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>15</source_key> - <sink_key>15</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>16</source_key> - <sink_key>16</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>17</source_key> - <sink_key>17</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>18</source_key> - <sink_key>18</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>19</source_key> - <sink_key>19</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>2</source_key> - <sink_key>2</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>20</source_key> - <sink_key>20</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>21</source_key> - <sink_key>21</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>22</source_key> - <sink_key>22</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>23</source_key> - <sink_key>23</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>24</source_key> - <sink_key>24</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>25</source_key> - <sink_key>25</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>26</source_key> - <sink_key>26</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>27</source_key> - <sink_key>27</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>28</source_key> - <sink_key>28</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>29</source_key> - <sink_key>29</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>3</source_key> - <sink_key>3</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>30</source_key> - <sink_key>30</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>31</source_key> - <sink_key>31</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>4</source_key> - <sink_key>4</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>5</source_key> - <sink_key>5</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>6</source_key> - <sink_key>6</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>7</source_key> - <sink_key>7</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>8</source_key> - <sink_key>8</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_0_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>9</source_key> - <sink_key>9</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>32</source_key> - <sink_key>163</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>0</source_key> - <sink_key>96</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>1</source_key> - <sink_key>97</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>10</source_key> - <sink_key>106</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>11</source_key> - <sink_key>107</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>12</source_key> - <sink_key>108</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>13</source_key> - <sink_key>109</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>14</source_key> - <sink_key>110</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>15</source_key> - <sink_key>111</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>16</source_key> - <sink_key>112</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>17</source_key> - <sink_key>113</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>18</source_key> - <sink_key>114</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>19</source_key> - <sink_key>115</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>2</source_key> - <sink_key>98</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>20</source_key> - <sink_key>116</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>21</source_key> - <sink_key>117</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>22</source_key> - <sink_key>118</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>23</source_key> - <sink_key>119</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>24</source_key> - <sink_key>120</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>25</source_key> - <sink_key>121</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>26</source_key> - <sink_key>122</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>27</source_key> - <sink_key>123</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>28</source_key> - <sink_key>124</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>29</source_key> - <sink_key>125</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>3</source_key> - <sink_key>99</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>30</source_key> - <sink_key>126</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>31</source_key> - <sink_key>127</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>4</source_key> - <sink_key>100</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>5</source_key> - <sink_key>101</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>6</source_key> - <sink_key>102</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>7</source_key> - <sink_key>103</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>8</source_key> - <sink_key>104</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>9</source_key> - <sink_key>105</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>32</source_key> - <sink_key>164</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>0</source_key> - <sink_key>128</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>1</source_key> - <sink_key>129</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>10</source_key> - <sink_key>138</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>11</source_key> - <sink_key>139</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>12</source_key> - <sink_key>140</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>13</source_key> - <sink_key>141</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>14</source_key> - <sink_key>142</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>15</source_key> - <sink_key>143</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>16</source_key> - <sink_key>144</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>17</source_key> - <sink_key>145</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>18</source_key> - <sink_key>146</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>19</source_key> - <sink_key>147</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>2</source_key> - <sink_key>130</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>20</source_key> - <sink_key>148</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>21</source_key> - <sink_key>149</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>22</source_key> - <sink_key>150</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>23</source_key> - <sink_key>151</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>24</source_key> - <sink_key>152</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>25</source_key> - <sink_key>153</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>26</source_key> - <sink_key>154</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>27</source_key> - <sink_key>155</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>28</source_key> - <sink_key>156</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>29</source_key> - <sink_key>157</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>3</source_key> - <sink_key>131</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>30</source_key> - <sink_key>158</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>31</source_key> - <sink_key>159</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>4</source_key> - <sink_key>132</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>5</source_key> - <sink_key>133</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>6</source_key> - <sink_key>134</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>7</source_key> - <sink_key>135</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>8</source_key> - <sink_key>136</sink_key> - </connection> - <connection> - <source_block_id>fec_bercurve_generator_0_1_0</source_block_id> - <sink_block_id>qtgui_bercurve_sink_0</sink_block_id> - <source_key>9</source_key> - <sink_key>137</sink_key> - </connection> -</flow_graph> +options: + parameters: + author: '' + category: Custom + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: ber_curve_gen + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: 2000,2000 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 11] + rotation: 0 + state: enabled + +blocks: +- name: esno_0 + id: variable + parameters: + comment: '' + value: 'numpy.arange(0, 8, .5) ' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 139] + rotation: 0 + state: enabled +- name: framebits + id: variable + parameters: + comment: '' + value: '4096' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [112, 75] + rotation: 0 + state: enabled +- name: k + id: variable + parameters: + comment: '' + value: '7' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 379] + rotation: 0 + state: enabled +- name: polys + id: variable + parameters: + comment: '' + value: '[79, 109]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [80, 379] + rotation: 0 + state: enabled +- name: rate + id: variable + parameters: + comment: '' + value: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 315] + rotation: 0 + state: enabled +- name: samp_rate_0 + id: variable + parameters: + comment: '' + value: '35000000' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 75] + rotation: 0 + state: enabled +- name: dec_cc + id: variable_cc_decoder_def + parameters: + comment: '' + dim1: len(esno_0) + dim2: '1' + framebits: framebits + k: k + mode: fec.CC_STREAMING + ndim: '2' + padding: 'False' + polys: polys + rate: rate + state_end: '-1' + state_start: '0' + value: '"ok"' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 659] + rotation: 0 + state: enabled +- name: dec_dummy + id: variable_dummy_decoder_def + parameters: + comment: '' + dim1: len(esno_0) + dim2: '1' + framebits: framebits + ndim: '2' + value: '"ok"' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [424, 771] + rotation: 0 + state: enabled +- name: dec_ldpc + id: variable_ldpc_decoder_def + parameters: + comment: '' + dim1: len(esno_0) + dim2: '1' + file: gr.prefix() + "/share/gnuradio/fec/ldpc/271.127.3.112" + max_iter: '50' + ndim: '2' + sigma: '0.5' + value: '"ok"' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [608, 739] + rotation: 0 + state: enabled +- name: dec_rep + id: variable_repetition_decoder_def + parameters: + comment: '' + dim1: len(esno_0) + dim2: '1' + framebits: framebits + ndim: '2' + prob: '0.5' + rep: '3' + value: '"ok"' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [216, 739] + rotation: 0 + state: enabled +- name: dec_tpc + id: variable_tpc_decoder_def + parameters: + bval: '9' + col_poly: '[43]' + comment: '' + decoder_type: '1' + dim1: len(esno_0) + dim2: '1' + kcol: '6' + krow: '26' + max_iter: '6' + ndim: '2' + qval: '3' + row_poly: '[3]' + value: '"ok"' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [776, 659] + rotation: 0 + state: enabled +- name: enc_cc + id: variable_cc_encoder_def + parameters: + comment: '' + dim1: len(esno_0) + dim2: '1' + framebits: framebits + k: k + mode: fec.CC_STREAMING + ndim: '2' + padding: 'False' + polys: polys + rate: rate + state_start: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 451] + rotation: 0 + state: enabled +- name: enc_dummy + id: variable_dummy_encoder_def + parameters: + comment: '' + dim1: len(esno_0) + dim2: '1' + framebits: framebits + ndim: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [424, 659] + rotation: 0 + state: enabled +- name: enc_ldpc + id: variable_ldpc_encoder_def + parameters: + comment: '' + dim1: len(esno_0) + dim2: '1' + file: gr.prefix() + "/share/gnuradio/fec/ldpc/271.127.3.112" + ndim: '2' + value: '"ok"' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [608, 627] + rotation: 0 + state: enabled +- name: enc_rep + id: variable_repetition_encoder_def + parameters: + comment: '' + dim1: len(esno_0) + dim2: '1' + framebits: framebits + ndim: '2' + rep: '3' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [216, 603] + rotation: 0 + state: enabled +- name: enc_tpc + id: variable_tpc_encoder_def + parameters: + bval: '9' + col_poly: '[43]' + comment: '' + dim1: len(esno_0) + dim2: '1' + kcol: '6' + krow: '26' + ndim: '2' + qval: '3' + row_poly: '[3]' + value: '"ok"' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [776, 467] + rotation: 0 + state: enabled + +- name: fec_bercurve_generator_0 + id: fec_bercurve_generator + parameters: + affinity: '' + alias: '' + comment: '' + decoder_list: dec_cc + encoder_list: enc_cc + esno: esno_0 + maxoutbuf: '0' + minoutbuf: '0' + puncpat: '''11''' + samp_rate: samp_rate_0 + seed: '-100' + threadtype: '"capillary"' + states: + bus_sink: false + bus_source: true + bus_structure: null + coordinate: [248, 212.0] + rotation: 0 + state: enabled +- name: fec_bercurve_generator_0_0 + id: fec_bercurve_generator + parameters: + affinity: '' + alias: '' + comment: '' + decoder_list: dec_rep + encoder_list: enc_rep + esno: esno_0 + maxoutbuf: '0' + minoutbuf: '0' + puncpat: '''11''' + samp_rate: samp_rate_0 + seed: '-100' + threadtype: '"capillary"' + states: + bus_sink: false + bus_source: true + bus_structure: null + coordinate: [248, 116.0] + rotation: 0 + state: enabled +- name: fec_bercurve_generator_0_0_0 + id: fec_bercurve_generator + parameters: + affinity: '' + alias: '' + comment: '' + decoder_list: dec_dummy + encoder_list: enc_dummy + esno: esno_0 + maxoutbuf: '0' + minoutbuf: '0' + puncpat: '''11''' + samp_rate: samp_rate_0 + seed: '-100' + threadtype: '"capillary"' + states: + bus_sink: false + bus_source: true + bus_structure: null + coordinate: [248, 12.0] + rotation: 0 + state: enabled +- name: fec_bercurve_generator_0_1 + id: fec_bercurve_generator + parameters: + affinity: '' + alias: '' + comment: '' + decoder_list: dec_ldpc + encoder_list: enc_ldpc + esno: esno_0 + maxoutbuf: '0' + minoutbuf: '0' + puncpat: '''11''' + samp_rate: samp_rate_0 + seed: '-100' + threadtype: '"capillary"' + states: + bus_sink: false + bus_source: true + bus_structure: null + coordinate: [248, 332.0] + rotation: 0 + state: enabled +- name: fec_bercurve_generator_0_1_0 + id: fec_bercurve_generator + parameters: + affinity: '' + alias: '' + comment: '' + decoder_list: dec_tpc + encoder_list: enc_tpc + esno: esno_0 + maxoutbuf: '0' + minoutbuf: '0' + puncpat: '''11''' + samp_rate: samp_rate_0 + seed: '-100' + threadtype: '"capillary"' + states: + bus_sink: false + bus_source: true + bus_structure: null + coordinate: [248, 460.0] + rotation: 0 + state: enabled +- name: qtgui_bercurve_sink_0 + id: qtgui_bercurve_sink + parameters: + affinity: '' + alias: '' + alpha1: '1' + alpha10: '1.0' + alpha2: '1' + alpha3: '1' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + berlimit: '-10' + berminerrors: '1000' + bus_structure_sink: list(map(lambda b:list(map(lambda a:b * len(esno) * 2 + a, + range(len(esno)*2))), range(num_curves))) + color1: '"blue"' + color10: '"red"' + color2: '"red"' + color3: '"magenta"' + color4: '"dark red"' + color5: '"Dark Blue"' + color6: '"red"' + color7: '"red"' + color8: '"red"' + color9: '"red"' + comment: '' + curvenames: '[]' + esno: esno_0 + gui_hint: '' + label1: None + label10: '' + label2: Rep. (Rate=3) + label3: CC (K=7, Rate=2) + label4: LDPC + label5: TPC + label6: '' + label7: '' + label8: '' + label9: '' + marker1: '0' + marker10: '0' + marker2: '1' + marker3: '0' + marker4: '0' + marker5: '0' + marker6: '0' + marker7: '0' + marker8: '0' + marker9: '0' + num_curves: '5' + style1: '1' + style10: '0' + style2: '2' + style3: '5' + style4: '5' + style5: '4' + style6: '0' + style7: '0' + style8: '0' + style9: '0' + update_time: '0.10' + width1: '2' + width10: '1' + width2: '2' + width3: '2' + width4: '2' + width5: '2' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ymax: '0' + ymin: '-10' + states: + bus_sink: true + bus_source: false + bus_structure: null + coordinate: [696, 15] + rotation: 0 + state: enabled + +connections: +- [fec_bercurve_generator_0, '32', qtgui_bercurve_sink_0, '162'] +- [fec_bercurve_generator_0_0, '32', qtgui_bercurve_sink_0, '161'] +- [fec_bercurve_generator_0_0_0, '32', qtgui_bercurve_sink_0, '160'] +- [fec_bercurve_generator_0_1, '32', qtgui_bercurve_sink_0, '163'] +- [fec_bercurve_generator_0_1_0, '32', qtgui_bercurve_sink_0, '164'] + +metadata: + file_format: 1 diff --git a/gr-fec/grc/tpc_decoder_def_list.block.yml b/gr-fec/grc/tpc_decoder_def_list.block.yml index 7e7d1d7510..7a6f69f534 100644 --- a/gr-fec/grc/tpc_decoder_def_list.block.yml +++ b/gr-fec/grc/tpc_decoder_def_list.block.yml @@ -65,9 +65,11 @@ templates: % if int(ndim)==0: self.${id} = ${id} = fec.tpc_decoder_make(${row_poly}, ${col_poly}, ${krow}, ${kcol}, ${bval}, ${qval}, ${max_iter}, ${decoder_type}) % elif int(ndim)==1: - self.${id} = ${id} = list(map( (lambda a: fec.tpc_decoder_make(${row_poly}, ${col_poly}, ${krow}, ${kcol}, ${bval}, ${qval}, ${max_iter}, ${decoder_type})), range(0,${dim1}) )) + self.${id} = ${id} = list(map( (lambda a: fec.tpc_decoder_make(${row_poly}, ${col_poly}, ${krow}, ${kcol}, ${bval}, ${qval}, \ + ${max_iter}, ${decoder_type})), range(0,${dim1}) )) % else: - self.${id} = ${id} = list(map( (lambda b: map( ( lambda a: fec.tpc_decoder_make(${row_poly}, ${col_poly}, ${krow}, ${kcol}, ${bval}, ${qval}, ${max_iter}, ${decoder_type})), range(0,${dim2}) ) ), range(0,${dim1}))) + self.${id} = ${id} = list(map( (lambda b: list(map( ( lambda a: fec.tpc_decoder_make(${row_poly}, ${col_poly}, ${krow}, ${kcol}, \ + ${bval}, ${qval}, ${max_iter}, ${decoder_type})), range(0,${dim2})))), range(0,${dim1}))) % endif documentation: |- diff --git a/gr-fec/grc/variable_cc_decoder_def_list.block.yml b/gr-fec/grc/variable_cc_decoder_def_list.block.yml index 6dd39e2497..80eb1ab399 100644 --- a/gr-fec/grc/variable_cc_decoder_def_list.block.yml +++ b/gr-fec/grc/variable_cc_decoder_def_list.block.yml @@ -72,7 +72,7 @@ templates: % else: self.${id} = ${id} = list(map( (lambda b: map(\ ( lambda a: fec.cc_decoder.make(${framebits}, ${k}, ${rate}, ${polys}, ${state_start},\ - ${state_end}, ${mode}, ${padding})), range(0,${dim2}) ) ), range(0,${dim1}))) + ${state_end}, ${mode}, ${padding})), range(0,${dim2}) ) ), range(0,${dim1})))\ % endif documentation: "" diff --git a/gr-fec/grc/variable_cc_encoder_def_list.block.yml b/gr-fec/grc/variable_cc_encoder_def_list.block.yml index 8cdcdde3b0..fd31f731e0 100644 --- a/gr-fec/grc/variable_cc_encoder_def_list.block.yml +++ b/gr-fec/grc/variable_cc_encoder_def_list.block.yml @@ -60,9 +60,8 @@ templates: self.${id} = ${id} = list(map( (lambda a: fec.cc_encoder_make(${framebits},\ ${k}, ${rate}, ${polys}, ${state_start}, ${mode}, ${padding})), range(0,${dim1}))) % else: - self.${id} = ${id} = list(map( (lambda b: map( ( lambda a: fec.cc_encoder_make(${framebits},\ - ${k}, ${rate}, ${polys}, ${state_start}, ${mode}, ${padding})), range(0,${dim2})\) ), - range(0,${dim1}))) + self.${id} = ${id} = list(map( (lambda b:list(map( ( lambda a:fec.cc_encoder_make(${framebits}, ${k}, ${rate}, ${polys}, \ + ${state_start}, ${mode}, ${padding})), range(0,${dim2})))), range(0,${dim1}))) % endif documentation: "" diff --git a/gr-fec/grc/variable_dummy_decoder_def_list.block.yml b/gr-fec/grc/variable_dummy_decoder_def_list.block.yml index 68b580a2d5..c638818acf 100644 --- a/gr-fec/grc/variable_dummy_decoder_def_list.block.yml +++ b/gr-fec/grc/variable_dummy_decoder_def_list.block.yml @@ -37,7 +37,7 @@ templates: self.${id} = ${id} = list(map((lambda a: fec.dummy_decoder.make(${framebits})),\ range(0,${dim1}))) % else: - self.${id} = ${id} = list(map((lambda b: map((lambda\ + self.${id} = ${id} = list(map((lambda b: map((lambda \ a: fec.dummy_decoder.make(${framebits})), range(0,${dim2}))), range(0,${dim1})))\ % endif diff --git a/gr-fec/grc/variable_dummy_encoder_def_list.block.yml b/gr-fec/grc/variable_dummy_encoder_def_list.block.yml index 2e7fb7e828..d32664662e 100644 --- a/gr-fec/grc/variable_dummy_encoder_def_list.block.yml +++ b/gr-fec/grc/variable_dummy_encoder_def_list.block.yml @@ -30,11 +30,12 @@ templates: % if int(ndim)==0: self.${id} = ${id} = fec.dummy_encoder_make(${framebits})\ % elif int(ndim)==1: - self.${id} = ${id} = list(map((lambda a: fec.dummy_encoder_make(${framebits})),\ + self.${id} = ${id} = list(map((lambda a:fec.dummy_encoder_make(${framebits})),\ range(0,${dim1}))) % else: - self.${id} = ${id} = list(map((lambda b: map((lambda\ - a: fec.dummy_encoder_make(${framebits})), range(0,${dim2}))), range(0,${dim1})))\ + self.${id} = ${id} = list(map((lambda b:map((lambda a:\ + fec.dummy_encoder_make(${framebits})),\ + range(0,${dim2}))), range(0,${dim1}))) % endif documentation: "" diff --git a/gr-qtgui/grc/qtgui_ber_sink_b.block.yml b/gr-qtgui/grc/qtgui_ber_sink_b.block.yml index 97f74f574b..f2b1964321 100644 --- a/gr-qtgui/grc/qtgui_ber_sink_b.block.yml +++ b/gr-qtgui/grc/qtgui_ber_sink_b.block.yml @@ -311,6 +311,10 @@ parameters: label: Line 10 Alpha base_key: alpha1 hide: ${ ('part' if int(num_curves) >= 10 else 'all') } +- id: bus_structure_sink + default: list(map(lambda b:list(map(lambda a:b * len(esno) * 2 + a, range(len(esno)*2))), range(num_curves))) + dtype: raw + hide: all inputs: - domain: stream @@ -346,7 +350,11 @@ templates: ${color6}, ${color7}, ${color8}, ${color9}, ${color10}] alphas = [${alpha1}, ${alpha2}, ${alpha3}, ${alpha4}, ${alpha5}, ${alpha6}, ${alpha7}, ${alpha8}, ${alpha9}, ${alpha10}] - + styles = [${style1}, ${style2}, ${style3}, ${style4}, ${style5}, + ${style6}, ${style7}, ${style8}, ${style9}, ${style10}] + markers = [${marker1}, ${marker2}, ${marker3}, ${marker4}, ${marker5}, + ${marker6}, ${marker7}, ${marker8}, ${marker9}, ${marker10}] + for i in range(${num_curves}): if len(labels[i]) == 0: self.${id}.set_line_label(i, "Data {0}".format(i)) diff --git a/grc/blocks/grc.tree.yml b/grc/blocks/grc.tree.yml index dc1067d2eb..50b08291ef 100644 --- a/grc/blocks/grc.tree.yml +++ b/grc/blocks/grc.tree.yml @@ -4,6 +4,10 @@ - pad_sink - virtual_source - virtual_sink + - bus_sink + - bus_source + - bus_structure_sink + - bus_structure_source - epy_block - epy_module - note diff --git a/grc/core/FlowGraph.py b/grc/core/FlowGraph.py index 04b73957b3..b57a93d551 100644 --- a/grc/core/FlowGraph.py +++ b/grc/core/FlowGraph.py @@ -284,6 +284,7 @@ class FlowGraph(Element): connection = self.parent_platform.Connection( parent=self, source=porta, sink=portb) self.connections.add(connection) + return connection def disconnect(self, *ports): @@ -377,6 +378,7 @@ class FlowGraph(Element): block.import_data(**block_data) + self.rewrite() # TODO: Figure out why this has to be called twice to populate bus ports correctly self.rewrite() # evaluate stuff like nports before adding connections # build the connections diff --git a/grc/core/blocks/block.py b/grc/core/blocks/block.py index 50c7873e9d..29976af282 100644 --- a/grc/core/blocks/block.py +++ b/grc/core/blocks/block.py @@ -86,9 +86,28 @@ class Block(Element): self.active_sources = [] # on rewrite self.active_sinks = [] # on rewrite - self.states = {'state': True} + self.states = {'state': True, 'bus_source': False, 'bus_sink': False, 'bus_structure': None} + if 'cpp' in self.flags: - self.orig_cpp_templates = self.cpp_templates # The original template, in case we have to edit it when transpiling to C++ + self.orig_cpp_templates = self.cpp_templates # The original template, in case we have to edit it when transpiling to C++ + + self.current_bus_structure = {'source': '', 'sink': ''} + + def get_bus_structure(self, direction): + if direction == 'source': + bus_structure = self.bus_structure_source + else: + bus_structure = self.bus_structure_sink + + if not bus_structure: + return '' # TODO: Don't like empty strings. should change this to None eventually + + try: + clean_bus_structure = self.evaluate(bus_structure) + return clean_bus_structure + except: + return '' + # region Rewrite_and_Validation def rewrite(self): @@ -112,12 +131,81 @@ class Block(Element): self._rewrite_nports(ports) rekey(ports) + self.update_bus_logic() # disconnect hidden ports self.parent_flowgraph.disconnect(*[p for p in self.ports() if p.hidden]) self.active_sources = [p for p in self.sources if not p.hidden] self.active_sinks = [p for p in self.sinks if not p.hidden] + def update_bus_logic(self): + ############################### + ## Bus Logic + ############################### + + for direc in {'source','sink'}: + if direc == 'source': + ports = self.sources + ports_gui = self.filter_bus_port(self.sources) + bus_structure = self.get_bus_structure('source') + bus_state = self.bus_source + else: + ports = self.sinks + ports_gui = self.filter_bus_port(self.sinks) + bus_structure = self.get_bus_structure('sink') + bus_state = self.bus_sink + + # Remove the bus ports + removed_bus_ports = [] + removed_bus_connections = [] + if 'bus' in map(lambda a: a.dtype, ports): + for port in ports_gui: + for c in self.parent_flowgraph.connections: + if port is c.source_port or port is c.sink_port: + removed_bus_ports.append(port) + removed_bus_connections.append(c) + ports.remove(port) + + + if (bus_state): + struct = self.form_bus_structure(direc) + self.current_bus_structure[direc] = struct + + # Hide ports that are not part of the bus structure + #TODO: Blocks where it is desired to only have a subset + # of ports included in the bus still has some issues + for idx, port in enumerate(ports): + if any([idx in bus for bus in self.current_bus_structure[direc]]): + if (port.stored_hidden_state is None): + port.stored_hidden_state = port.hidden + port.hidden = True + + # Add the Bus Ports to the list of ports + for i in range(len(struct)): + # self.sinks = [port_factory(parent=self, **params) for params in self.inputs_data] + port = self.parent.parent.make_port(self,direction=direc,id=str(len(ports)),label='bus',dtype='bus',bus_struct=struct[i]) + ports.append(port) + + for (saved_port, connection) in zip(removed_bus_ports, removed_bus_connections): + if port.key == saved_port.key: + self.parent_flowgraph.connections.remove(connection) + if saved_port.is_source: + connection.source_port = port + if saved_port.is_sink: + connection.sink_port = port + self.parent_flowgraph.connections.add(connection) + + + else: + self.current_bus_structure[direc] = None + + # Re-enable the hidden property of the ports + for port in ports: + port.hidden = port.stored_hidden_state + port.stored_hidden_state = None + + + def _rewrite_nports(self, ports): for port in ports: if hasattr(port, 'master_port'): # Not a master port and no left-over clones @@ -238,6 +326,44 @@ class Block(Element): """Get the enabled state of the block""" return self.state != 'disabled' + @property + def bus_sink(self): + """Gets the block's current Toggle Bus Sink state.""" + return self.states['bus_sink'] + + @bus_sink.setter + def bus_sink(self, value): + """Sets the Toggle Bus Sink state for the block.""" + self.states['bus_sink'] = value + + @property + def bus_source(self): + """Gets the block's current Toggle Bus Sink state.""" + return self.states['bus_source'] + + @bus_source.setter + def bus_source(self, value): + """Sets the Toggle Bus Source state for the block.""" + self.states['bus_source'] = value + + @property + def bus_structure_source(self): + """Gets the block's current source bus structure.""" + try: + bus_structure = self.params['bus_structure_source'].value or None + except: + bus_structure = None + return bus_structure + + @property + def bus_structure_sink(self): + """Gets the block's current source bus structure.""" + try: + bus_structure = self.params['bus_structure_sink'].value or None + except: + bus_structure = None + return bus_structure + # endregion ############################################## @@ -461,3 +587,96 @@ class Block(Element): # Store hash and call rewrite pre_rewrite_hash = get_hash() self.rewrite() + + ############################################## + # Controller Modify + ############################################## + def filter_bus_port(self, ports): + buslist = [p for p in ports if p.dtype == 'bus'] + return buslist or ports + + def type_controller_modify(self, direction): + """ + Change the type controller. + + Args: + direction: +1 or -1 + + Returns: + true for change + """ + changed = False + type_param = None + for param in filter(lambda p: p.is_enum(), self.get_params()): + children = self.get_ports() + self.get_params() + # Priority to the type controller + if param.get_key() in ' '.join(map(lambda p: p._type, children)): type_param = param + # Use param if type param is unset + if not type_param: + type_param = param + if type_param: + # Try to increment the enum by direction + try: + keys = type_param.get_option_keys() + old_index = keys.index(type_param.get_value()) + new_index = (old_index + direction + len(keys)) % len(keys) + type_param.set_value(keys[new_index]) + changed = True + except: + pass + return changed + + def form_bus_structure(self, direc): + if direc == 'source': + ports = self.sources + bus_structure = self.get_bus_structure('source') + else: + ports = self.sinks + bus_structure = self.get_bus_structure('sink') + + struct = [range(len(ports))] + # struct = list(range(len(ports))) + #TODO for more complicated port structures, this code is needed but not working yet + if any([p.multiplicity for p in ports]): + structlet = [] + last = 0 + # group the ports with > n inputs together on the bus + cnt = 0 + idx = 0 + for p in ports: + if cnt > 0: + cnt -= 1 + continue + + if p.multiplicity > 1: + cnt = p.multiplicity-1 + structlet.append([idx+j for j in range(p.multiplicity)]) + else: + structlet.append([idx]) + + struct = structlet + if bus_structure: + struct = bus_structure + + self.current_bus_structure[direc] = struct + return struct + + def bussify(self, direc): + if direc == 'source': + ports = self.sources + ports_gui = self.filter_bus_port(self.sources) + self.bus_structure = self.get_bus_structure('source') + self.bus_source = not self.bus_source + else: + ports = self.sinks + ports_gui = self.filter_bus_port(self.sinks) + self.bus_structure = self.get_bus_structure('sink') + self.bus_sink = not self.bus_sink + + # Disconnect all the connections when toggling the bus state + for port in ports: + l_connections = list(port.connections()) + for connect in l_connections: + self.parent.remove_element(connect) + + self.update_bus_logic() diff --git a/grc/core/generator/cpp_top_block.py b/grc/core/generator/cpp_top_block.py index 4e668f25ce..d7b9c80ed4 100644 --- a/grc/core/generator/cpp_top_block.py +++ b/grc/core/generator/cpp_top_block.py @@ -353,9 +353,30 @@ class CppTopBlockGenerator(TopBlockGenerator): rendered = [] for con in sorted(connections, key=by_domain_and_blocks): template = templates[con.type] - code = template.render(make_port_sig=make_port_sig, source=con.source_port, sink=con.sink_port) - if not self._generate_options.startswith('hb'): - code = 'this->tb->' + code - rendered.append(code) + + if con.source_port.dtype != 'bus': + code = template.render(make_port_sig=make_port_sig, source=con.source_port, sink=con.sink_port) + if not self._generate_options.startswith('hb'): + code = 'this->tb->' + code + rendered.append(code) + else: + # Bus ports need to iterate over the underlying connections and then render + # the code for each subconnection + porta = con.source_port + portb = con.sink_port + fg = self._flow_graph + + if porta.dtype == 'bus' and portb.dtype == 'bus': + # which bus port is this relative to the bus structure + if len(porta.bus_structure) == len(portb.bus_structure): + for port_num in porta.bus_structure: + hidden_porta = porta.parent.sources[port_num] + hidden_portb = portb.parent.sinks[port_num] + connection = fg.parent_platform.Connection( + parent=self, source=hidden_porta, sink=hidden_portb) + code = template.render(make_port_sig=make_port_sig, source=hidden_porta, sink=hidden_portb) + if not self._generate_options.startswith('hb'): + code = 'this->tb->' + code + rendered.append(code) return rendered diff --git a/grc/core/generator/top_block.py b/grc/core/generator/top_block.py index d449d1baa9..32e8574aed 100644 --- a/grc/core/generator/top_block.py +++ b/grc/core/generator/top_block.py @@ -298,7 +298,28 @@ class TopBlockGenerator(object): rendered = [] for con in sorted(connections, key=by_domain_and_blocks): template = templates[con.type] - code = template.render(make_port_sig=make_port_sig, source=con.source_port, sink=con.sink_port) - rendered.append(code) + if con.source_port.dtype != 'bus': + code = template.render(make_port_sig=make_port_sig, source=con.source_port, sink=con.sink_port) + rendered.append(code) + else: + # Bus ports need to iterate over the underlying connections and then render + # the code for each subconnection + porta = con.source_port + portb = con.sink_port + fg = self._flow_graph + + if porta.dtype == 'bus' and portb.dtype == 'bus': + # which bus port is this relative to the bus structure + if len(porta.bus_structure) == len(portb.bus_structure): + for port_num_a,port_num_b in zip(porta.bus_structure,portb.bus_structure): + hidden_porta = porta.parent.sources[port_num_a] + hidden_portb = portb.parent.sinks[port_num_b] + connection = fg.parent_platform.Connection( + parent=self, source=hidden_porta, sink=hidden_portb) + code = template.render(make_port_sig=make_port_sig, source=hidden_porta, sink=hidden_portb) + rendered.append(code) + + + return rendered diff --git a/grc/core/ports/port.py b/grc/core/ports/port.py index d1a32e915c..dcaca5cbc5 100644 --- a/grc/core/ports/port.py +++ b/grc/core/ports/port.py @@ -39,7 +39,7 @@ class Port(Element): optional = EvaluatedFlag() def __init__(self, parent, direction, id, label='', domain=Constants.DEFAULT_DOMAIN, dtype='', - vlen='', multiplicity=1, optional=False, hide=False, **_): + vlen='', multiplicity=1, optional=False, hide=False, bus_struct=None, **_): """Make a new port from nested data.""" Element.__init__(self, parent) @@ -47,6 +47,14 @@ class Port(Element): self.key = id if not label: label = id if not id.isdigit() else {'sink': 'in', 'source': 'out'}[direction] + if dtype == 'bus': + #TODO - add some error checking in here + busses = [p for p in self.parent.ports() if p._dir == self._dir and p.dtype == 'bus'] + bus_structure = self.parent.current_bus_structure[self._dir] + bus_index = len(busses) + number = str(len(busses)) + '#' + str(len(bus_structure[bus_index])) + label = dtype + number + self.name = self._base_name = label self.domain = domain @@ -60,6 +68,9 @@ class Port(Element): self.multiplicity = multiplicity self.optional = optional self.hidden = hide + self.stored_hidden_state = None + self.bus_structure = bus_struct + # end of args ######################################################## self.clones = [] # References to cloned ports (for nports > 1) @@ -203,5 +214,42 @@ class Port(Element): enabled: None for all, True for enabled only, False for disabled only """ for con in self.parent_flowgraph.connections: - if self in con and (enabled is None or enabled == con.enabled): - yield con + #TODO clean this up - but how to get past this validation + # things don't compare simply with an x in y because + # bus ports are created differently. + port_in_con = False + if self.dtype == 'bus': + if self.is_sink: + if (self.parent.name == con.sink_port.parent.name and + self.name == con.sink_port.name): + port_in_con = True + elif self.is_source: + if (self.parent.name == con.source_port.parent.name and + self.name == con.source_port.name): + port_in_con = True + + if port_in_con: + yield con + + else: + if self in con and (enabled is None or enabled == con.enabled): + yield con + + def get_associated_ports(self): + if not self.dtype == 'bus': + return [self] + else: + if self.is_source: + get_ports = self.parent.sources + bus_structure = self.parent.current_bus_structure['source'] + else: + get_ports = self.parent.sinks + bus_structure = self.parent.current_bus_structure['sink'] + + ports = [i for i in get_ports if not i.dtype == 'bus'] + if bus_structure: + busses = [i for i in get_ports if i.dtype == 'bus'] + bus_index = busses.index(self) + ports = filter(lambda a: ports.index(a) in bus_structure[bus_index], ports) + return ports + diff --git a/grc/gui/Application.py b/grc/gui/Application.py index 8489580b06..fff663177b 100644 --- a/grc/gui/Application.py +++ b/grc/gui/Application.py @@ -802,8 +802,8 @@ class Application(Gtk.Application): Actions.BLOCK_CREATE_HIER.set_enabled(bool(selected_blocks)) Actions.OPEN_HIER.set_enabled(bool(selected_blocks)) - #Actions.BUSSIFY_SOURCES.set_enabled(bool(selected_blocks)) - #Actions.BUSSIFY_SINKS.set_enabled(bool(selected_blocks)) + Actions.BUSSIFY_SOURCES.set_enabled(bool(selected_blocks)) + Actions.BUSSIFY_SINKS.set_enabled(bool(selected_blocks)) Actions.RELOAD_BLOCKS.enable() Actions.FIND_BLOCKS.enable() diff --git a/grc/gui/canvas/block.py b/grc/gui/canvas/block.py index 31a474fae2..e55c76f2cf 100644 --- a/grc/gui/canvas/block.py +++ b/grc/gui/canvas/block.py @@ -128,16 +128,14 @@ class Block(CoreBlock, Drawable): self._area = (0, 0, self.height, self.width) self.bounds_from_area(self._area) - # bussified = self.current_bus_structure['source'], self.current_bus_structure['sink'] - bussified = False, False + bussified = self.current_bus_structure['source'], self.current_bus_structure['sink'] for ports, has_busses in zip((self.active_sources, self.active_sinks), bussified): if not ports: continue port_separation = PORT_SEPARATION if not has_busses else ports[0].height + PORT_SPACING offset = (self.height - (len(ports) - 1) * port_separation - ports[0].height) / 2 for port in ports: - port.create_shapes() - + port.create_shapes() port.coordinate = { 0: (+self.width, offset), 90: (offset, -port.width), @@ -193,24 +191,21 @@ class Block(CoreBlock, Drawable): def get_min_height_for_ports(ports): min_height = 2 * PORT_BORDER_SEPARATION + len(ports) * PORT_SEPARATION - if ports: - min_height -= ports[-1].height + # If any of the ports are bus ports - make the min height larger + if any([p.dtype == 'bus' for p in ports]): + min_height = 2 * PORT_BORDER_SEPARATION + sum( + port.height + PORT_SPACING for port in ports if port.dtype == 'bus' + ) - PORT_SPACING + + else: + if ports: + min_height -= ports[-1].height return min_height height = max(height, get_min_height_for_ports(self.active_sinks), get_min_height_for_ports(self.active_sources)) - # def get_min_height_for_bus_ports(ports): - # return 2 * PORT_BORDER_SEPARATION + sum( - # port.height + PORT_SPACING for port in ports if port.dtype == 'bus' - # ) - PORT_SPACING - # - # if self.current_bus_structure['sink']: - # height = max(height, get_min_height_for_bus_ports(self.active_sinks)) - # if self.current_bus_structure['source']: - # height = max(height, get_min_height_for_bus_ports(self.active_sources)) - self.width, self.height = width, height = Utils.align_to_grid((width, height)) self._surface_layouts_offsets = [ diff --git a/grc/gui/canvas/connection.py b/grc/gui/canvas/connection.py index 56dab45570..2accfaf4d6 100644 --- a/grc/gui/canvas/connection.py +++ b/grc/gui/canvas/connection.py @@ -113,7 +113,7 @@ class Connection(CoreConnection, Drawable): self._make_path() # no cr set --> only sets bounding_points for extent def _make_path(self, cr=None): - x_pos, y_pos = self.coordinate # is source connector coordinate + x_pos, y_pos = self.source_port.connector_coordinate_absolute # x_start, y_start = self.source_port.get_connector_coordinate() x_end, y_end = self.sink_port.connector_coordinate_absolute diff --git a/grc/gui/canvas/flowgraph.py b/grc/gui/canvas/flowgraph.py index ca27406e0e..5bdda4745e 100644 --- a/grc/gui/canvas/flowgraph.py +++ b/grc/gui/canvas/flowgraph.py @@ -487,7 +487,13 @@ class FlowGraph(CoreFlowgraph, Drawable): element.create_labels(cr) def create_shapes(self): - for element in self._elements_to_draw: + #TODO - this is a workaround for bus ports not having a proper coordinate + # until the shape is drawn. The workaround is to draw blocks before connections + + for element in filter(lambda x: x.is_block, self._elements_to_draw) : + element.create_shapes() + + for element in filter(lambda x: not x.is_block, self._elements_to_draw): element.create_shapes() def _drawables(self): diff --git a/grc/gui/canvas/port.py b/grc/gui/canvas/port.py index 2ea35f3dd3..b1a3867149 100644 --- a/grc/gui/canvas/port.py +++ b/grc/gui/canvas/port.py @@ -124,17 +124,18 @@ class Port(CorePort, Drawable): label_width, label_height = self.label_layout.get_size() self.width = 2 * Constants.PORT_LABEL_PADDING + label_width / Pango.SCALE - self.height = 2 * Constants.PORT_LABEL_PADDING + label_height / Pango.SCALE + self.height = (2 * Constants.PORT_LABEL_PADDING + label_height*(3 if self.dtype == 'bus' else 1) ) / Pango.SCALE self._label_layout_offsets = [0, Constants.PORT_LABEL_PADDING] - # if self.dtype == 'bus': - # self.height += Constants.PORT_EXTRA_BUS_HEIGHT - # self._label_layout_offsets[1] += Constants.PORT_EXTRA_BUS_HEIGHT / 2 + self.height += self.height % 2 # uneven height def draw(self, cr): """ Draw the socket with a label. """ + if self.hidden: + return + border_color = self._border_color cr.set_line_width(self._line_width_factor * cr.get_line_width()) cr.translate(*self.coordinate) |