diff options
90 files changed, 58442 insertions, 981 deletions
diff --git a/docs/doxygen/other/components.dox b/docs/doxygen/other/components.dox index 1e98beb6f2..564085fc80 100644 --- a/docs/doxygen/other/components.dox +++ b/docs/doxygen/other/components.dox @@ -22,6 +22,7 @@ All our in-tree components have their own top-level documentation: \li \subpage page_channels \li \subpage page_ctrlport \li \subpage page_digital +\li \subpage page_packet_comms \li \subpage page_fcd \li \subpage page_fec \li \subpage page_fft diff --git a/gnuradio-runtime/include/gnuradio/block_detail.h b/gnuradio-runtime/include/gnuradio/block_detail.h index a71030b439..8a9f4ab881 100644 --- a/gnuradio-runtime/include/gnuradio/block_detail.h +++ b/gnuradio-runtime/include/gnuradio/block_detail.h @@ -241,6 +241,8 @@ namespace gr { tpb_detail d_tpb; // used by thread-per-block scheduler int d_produce_or; + int consumed() const; + // ---------------------------------------------------------------------------- private: @@ -249,6 +251,7 @@ namespace gr { std::vector<buffer_reader_sptr> d_input; std::vector<buffer_sptr> d_output; bool d_done; + int d_consumed; // Performance counters float d_ins_noutput_items; diff --git a/gnuradio-runtime/lib/block_detail.cc b/gnuradio-runtime/lib/block_detail.cc index 484d849652..9e2e29fcd9 100644 --- a/gnuradio-runtime/lib/block_detail.cc +++ b/gnuradio-runtime/lib/block_detail.cc @@ -110,14 +110,22 @@ namespace gr { void block_detail::consume(int which_input, int how_many_items) { + d_consumed = how_many_items; if(how_many_items > 0) { input(which_input)->update_read_pointer(how_many_items); } } + int + block_detail::consumed() const + { + return d_consumed; + } + void block_detail::consume_each(int how_many_items) { + d_consumed = how_many_items; if(how_many_items > 0) { for(int i = 0; i < ninputs (); i++) { d_input[i]->update_read_pointer(how_many_items); diff --git a/gnuradio-runtime/lib/block_executor.cc b/gnuradio-runtime/lib/block_executor.cc index ef2e4948bd..585e65fc6e 100644 --- a/gnuradio-runtime/lib/block_executor.cc +++ b/gnuradio-runtime/lib/block_executor.cc @@ -464,16 +464,6 @@ namespace gr { m->set_is_unaligned(m->unaligned() != 0); } - // For some blocks that can change their produce/consume ratio - // (the relative_rate), we might want to automatically update - // based on the amount of items written/read. - // In the block constructor, use enable_update_rate(true). - if(m->update_rate()) { - rrate = ((double)(m->nitems_written(0)+n)) / ((double)m->nitems_read(0)); - if(rrate > 0) - m->set_relative_rate(rrate); - } - // Now propagate the tags based on the new relative rate if(!propagate_tags(m->tag_propagation_policy(), d, d_start_nitems_read, m->relative_rate(), @@ -486,6 +476,17 @@ namespace gr { if(n != block::WORK_CALLED_PRODUCE) d->produce_each(n); // advance write pointers + // For some blocks that can change their produce/consume ratio + // (the relative_rate), we might want to automatically update + // based on the amount of items written/read. + // In the block constructor, use enable_update_rate(true). + if(m->update_rate()) { + //rrate = ((double)(m->nitems_written(0))) / ((double)m->nitems_read(0)); + rrate = (double)n / (double)d->consumed(); + if(rrate > 0) + m->set_relative_rate(rrate); + } + if(d->d_produce_or > 0) // block produced something return READY; diff --git a/gr-blocks/examples/tags/test_tag_prop.grc b/gr-blocks/examples/tags/test_tag_prop.grc new file mode 100644 index 0000000000..e9e9d03c90 --- /dev/null +++ b/gr-blocks/examples/tags/test_tag_prop.grc @@ -0,0 +1,1145 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.9'?> +<flow_graph> + <timestamp>Wed Nov 18 11:09:33 2015</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>test_tag_prop</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </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>(176, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>value</key> + <value>8000</value> + </param> + </block> + <block> + <key>variable_tag_object</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(8, 275)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tag0</value> + </param> + <param> + <key>key</key> + <value>pmt.intern("mark")</value> + </param> + <param> + <key>offset</key> + <value>0</value> + </param> + <param> + <key>src</key> + <value>pmt.intern("src")</value> + </param> + <param> + <key>value</key> + <value>pmt.PMT_T</value> + </param> + </block> + <block> + <key>blocks_test_tag_variable_rate_ff</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_test_tag_variable_rate_ff_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>once</key> + <value>False</value> + </param> + <param> + <key>step</key> + <value>0.001</value> + </param> + </block> + <block> + <key>blocks_throttle</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(232, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_throttle_0</value> + </param> + <param> + <key>ignoretag</key> + <value>True</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_vector_source_x</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(8, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_vector_source_x_0_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>tags</key> + <value>[tag0, ]</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>vector</key> + <value>scipy.arange(-1, 1, 0.01)</value> + </param> + </block> + <block> + <key>blocks_vector_source_x</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(8, 171)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_vector_source_x_0_0_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>tags</key> + <value>[tag0, ]</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>vector</key> + <value>scipy.arange(-1, 1, 0.1)</value> + </param> + </block> + <block> + <key>import</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(272, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>import_scipy</value> + </param> + <param> + <key>import</key> + <value>import scipy</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(632, 91)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>500</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>1.5</value> + </param> + <param> + <key>ymin</key> + <value>-1.5</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 179)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>500</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>1.5</value> + </param> + <param> + <key>ymin</key> + <value>-1.5</value> + </param> + </block> + <connection> + <source_block_id>blocks_test_tag_variable_rate_ff_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_throttle_0</source_block_id> + <sink_block_id>blocks_test_tag_variable_rate_ff_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_throttle_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_vector_source_x_0_0</source_block_id> + <sink_block_id>blocks_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_vector_source_x_0_0_0</source_block_id> + <sink_block_id>blocks_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-blocks/grc/blocks_block_tree.xml b/gr-blocks/grc/blocks_block_tree.xml index a9441a9ffb..c4857f3b3a 100644 --- a/gr-blocks/grc/blocks_block_tree.xml +++ b/gr-blocks/grc/blocks_block_tree.xml @@ -66,6 +66,7 @@ <block>blocks_message_strobe</block> <block>blocks_message_strobe_random</block> <block>blocks_tags_strobe</block> + <block>blocks_test_tag_variable_rate_ff</block> </cat> <cat> <name>File Operators</name> @@ -96,6 +97,7 @@ <block>blocks_multiply_const_vxx</block> <block>blocks_multiply_conjugate_cc</block> <block>blocks_multiply_matrix_xx</block> + <block>blocks_multiply_by_tag_value_cc</block> <block>blocks_sub_xx</block> <block>blocks_conjugate_cc</block> <block>blocks_integrate_xx</block> @@ -196,6 +198,7 @@ <block>blocks_tagged_stream_mux</block> <block>blocks_tagged_stream_align</block> <block>blocks_stream_to_tagged_stream</block> + <block>blocks_test_tag_variable_rate_ff</block> </cat> <cat> <name>Type Converters</name> diff --git a/gr-blocks/grc/blocks_multiply_by_tag_value_cc.xml b/gr-blocks/grc/blocks_multiply_by_tag_value_cc.xml new file mode 100644 index 0000000000..cedca12bd1 --- /dev/null +++ b/gr-blocks/grc/blocks_multiply_by_tag_value_cc.xml @@ -0,0 +1,32 @@ +<?xml version="1.0"?> + +<block> + <name>Multiply by Tag Value</name> + <key>blocks_multiply_by_tag_value_cc</key> + <import>from gnuradio import blocks</import> + <make>blocks.multiply_by_tag_value_cc($tagname, $vlen)</make> + + <param> + <name>Tag Name</name> + <key>tagname</key> + <type>string</type> + </param> + + <param> + <name>Vec Length</name> + <key>vlen</key> + <value>1</value> + <type>int</type> + </param> + + <sink> + <name>in</name> + <type>complex</type> + </sink> + + <source> + <name>out</name> + <type>complex</type> + </source> + +</block> diff --git a/gr-blocks/grc/blocks_test_tag_variable_rate_ff.xml b/gr-blocks/grc/blocks_test_tag_variable_rate_ff.xml new file mode 100644 index 0000000000..2a6c4b52e8 --- /dev/null +++ b/gr-blocks/grc/blocks_test_tag_variable_rate_ff.xml @@ -0,0 +1,47 @@ +<?xml version="1.0"?> +<!-- +################################################### +## Test tag variable rate +################################################### +--> + +<block> + <name>Test Tag Variable Rate</name> + <key>blocks_test_tag_variable_rate_ff</key> + <import>from gnuradio import blocks</import> + <make>blocks.test_tag_variable_rate_ff($once, $step)</make> + + <param> + <name>Update Once</name> + <key>once</key> + <value>False</value> + <type>enum</type> + <option> + <name>True</name> + <key>True</key> + </option> + <option> + <name>False</name> + <key>False</key> + </option> + </param> + + <param> + <name>Update Step</name> + <key>step</key> + <value>0.001</value> + <type>float</type> + </param> + + <sink> + <name>in</name> + <type>float</type> + <nports>1</nports> + </sink> + + <source> + <name>out</name> + <type>float</type> + <nports>1</nports> + </source> +</block> diff --git a/gr-blocks/include/gnuradio/blocks/CMakeLists.txt b/gr-blocks/include/gnuradio/blocks/CMakeLists.txt index 77771b2777..38c79d60f3 100644 --- a/gr-blocks/include/gnuradio/blocks/CMakeLists.txt +++ b/gr-blocks/include/gnuradio/blocks/CMakeLists.txt @@ -132,6 +132,7 @@ install(FILES multiply_const_vcc.h multiply_const_ff.h multiply_const_vff.h + multiply_by_tag_value_cc.h nlog10_ff.h nop.h null_sink.h @@ -173,6 +174,7 @@ install(FILES tagged_stream_multiply_length.h tagged_stream_to_pdu.h tags_strobe.h + test_tag_variable_rate_ff.h threshold_ff.h throttle.h transcendental.h diff --git a/gr-blocks/include/gnuradio/blocks/multiply_by_tag_value_cc.h b/gr-blocks/include/gnuradio/blocks/multiply_by_tag_value_cc.h new file mode 100644 index 0000000000..f4aba9db65 --- /dev/null +++ b/gr-blocks/include/gnuradio/blocks/multiply_by_tag_value_cc.h @@ -0,0 +1,69 @@ +/* -*- c++ -*- */ +/* + * Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_MULTIPLY_BY_TAG_VALUE_CC_H +#define INCLUDED_MULTIPLY_BY_TAG_VALUE_CC_H + +#include <gnuradio/blocks/api.h> +#include <gnuradio/sync_block.h> + +namespace gr { + namespace blocks { + + /*! + * \brief output = input * complex constant + * \ingroup math_operators_blk + * + * \details + * The complex constant used by this block is found from a tag + * with the name specified by \p tag_name. The tag must contain a + * float/double or complex PMT value that will be converted into a + * gr_complex value. All input data is multiplied by this + * value until a new tag with an update value is found. The block + * starts with a value of '1.0' for the multiplier constant. + */ + class BLOCKS_API multiply_by_tag_value_cc : virtual public sync_block + { + public: + // gr::blocks::multiply_by_tag_value_cc::sptr + typedef boost::shared_ptr<multiply_by_tag_value_cc> sptr; + + /*! + * \brief Create an instance of multiply_by_tag_value_cc + * \param tag_name Tag's key that it will use to get the + * multiplicative constant. + * \param vlen Vector length of incoming stream + */ + static sptr make(const std::string& tag_name, + size_t vlen=1); + + /*! + * Get the current multiplicative constant. + * This block does not allow external setters. + */ + virtual gr_complex k() const = 0; + }; + + } /* namespace blocks */ +} /* namespace gr */ + +#endif /* INCLUDED_MULTIPLY_BY_TAG_VALUE_CC_H */ diff --git a/gr-blocks/include/gnuradio/blocks/test_tag_variable_rate_ff.h b/gr-blocks/include/gnuradio/blocks/test_tag_variable_rate_ff.h new file mode 100644 index 0000000000..7894ad525c --- /dev/null +++ b/gr-blocks/include/gnuradio/blocks/test_tag_variable_rate_ff.h @@ -0,0 +1,79 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_GR_TEST_TAG_VARIABLE_RATE_FF_H +#define INCLUDED_GR_TEST_TAG_VARIABLE_RATE_FF_H + +#include <gnuradio/blocks/api.h> +#include <gnuradio/block.h> + +namespace gr { + namespace blocks { + + /*! + * \brief Used for testing tag propagation. + * \ingroup measurement_tools_blk + * \ingroup stream_tag_tools_blk + * \ingroup debug_tools_blk + * + * This block resamples the stream by a factor that starts at 0.5 + * but varies around by some random walk. The relative rate of the + * block is initialized to 0.5 and the random number generator is + * seeded based on the time. For each input, if the random number + * is >= 0.5, the relative rate is increased by \p update_step; + * otherwise, it is decreased by \p update_step. + * + * The rate of the change of the resampling factor is set by the + * flag \p update_once. If this is set to true, then the rate is + * only updated once per work function. If it is set to false + * (default), then the rate is changed with every input sample. + * + * The block's ctor sets the propagation policy to TPP_DONT to + * stop tags from automatically propagating. Instead, we handle + * the tag propagation ourselves from within the work + * function. Because the relative_rate changes so fast, the tag + * placement cannot be based on a single factor after the call to + * work and must be handled when the samples are and based on the + * current resampling rate. + */ + class BLOCKS_API test_tag_variable_rate_ff : virtual public block + { + public: + // gr::blocks::test_tag_variable_rate_ff::sptr + typedef boost::shared_ptr<test_tag_variable_rate_ff> sptr; + + /*! + * Build a test_tag_variable_rate_ff block. + * + * \param update_once Update the resampling rate once per call + * to work (default=false). + * \param update_step How much to adjust the resampling rate by + * when the update occurs (default=0.001). + */ + static sptr make(bool update_once=false, + double update_step=0.001); + }; + + } /* namespace blocks */ +} /* namespace gr */ + +#endif /* INCLUDED_GR_TEST_TAG_VARIABLE_RATE_FF_H */ diff --git a/gr-blocks/lib/CMakeLists.txt b/gr-blocks/lib/CMakeLists.txt index 7c8ea14c40..643190c2ee 100644 --- a/gr-blocks/lib/CMakeLists.txt +++ b/gr-blocks/lib/CMakeLists.txt @@ -154,6 +154,7 @@ list(APPEND gr_blocks_sources multiply_const_vff_impl.cc multiply_matrix_cc_impl.cc multiply_matrix_ff_impl.cc + multiply_by_tag_value_cc_impl.cc nlog10_ff_impl.cc nop_impl.cc null_sink_impl.cc @@ -193,6 +194,7 @@ list(APPEND gr_blocks_sources tagged_stream_to_pdu_impl.cc tagged_stream_multiply_length_impl.cc tags_strobe_impl.cc + test_tag_variable_rate_ff_impl.cc threshold_ff_impl.cc throttle_impl.cc transcendental_impl.cc diff --git a/gr-blocks/lib/multiply_by_tag_value_cc_impl.cc b/gr-blocks/lib/multiply_by_tag_value_cc_impl.cc new file mode 100644 index 0000000000..456d57da32 --- /dev/null +++ b/gr-blocks/lib/multiply_by_tag_value_cc_impl.cc @@ -0,0 +1,128 @@ +/* -*- c++ -*- */ +/* + * Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <multiply_by_tag_value_cc_impl.h> +#include <gnuradio/io_signature.h> +#include <volk/volk.h> + +namespace gr { + namespace blocks { + + multiply_by_tag_value_cc::sptr + multiply_by_tag_value_cc::make(const std::string& tag_name, + size_t vlen) + { + return gnuradio::get_initial_sptr + (new multiply_by_tag_value_cc_impl(tag_name, vlen)); + } + + multiply_by_tag_value_cc_impl::multiply_by_tag_value_cc_impl(const std::string& tag_name, + size_t vlen) + : sync_block("multiply_by_tag_value_cc", + io_signature::make (1, 1, sizeof (gr_complex)*vlen), + io_signature::make (1, 1, sizeof (gr_complex)*vlen)), + d_vlen(vlen), d_k(gr_complex(1,0)) + { + d_tag_key = pmt::intern(tag_name); + + const int alignment_multiple = + volk_get_alignment() / sizeof(gr_complex); + set_alignment(std::max(1,alignment_multiple)); + } + + multiply_by_tag_value_cc_impl::~multiply_by_tag_value_cc_impl() + { + } + + gr_complex + multiply_by_tag_value_cc_impl::k() const + { + return d_k; + } + + int + multiply_by_tag_value_cc_impl::work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const gr_complex *in = (const gr_complex *) input_items[0]; + gr_complex *out = (gr_complex *) output_items[0]; + + std::vector<tag_t> tags; + get_tags_in_window(tags, 0, 0, noutput_items, d_tag_key); + + std::vector<tag_t>::iterator itag = tags.begin(); + + int start = 0, end; + while(itag != tags.end()) { + end = itag->offset - nitems_read(0); + end *= d_vlen; + + // Multiply based on the current value of k from 'start' to 'end' + volk_32fc_s32fc_multiply_32fc(&out[start], &in[start], d_k, (end-start)); + start = end; + + // Extract new value of k + pmt::pmt_t k = itag->value; + if(pmt::is_complex(k)) { + d_k = pmt::to_complex(k); + } + else if(pmt::is_number(k)) { + d_k = gr_complex(pmt::to_double(k), 0); + } + else { + GR_LOG_WARN(d_logger, + boost::format("Got key '%1%' with incompatible value of '%2%'") \ + % pmt::write_string(d_tag_key) % pmt::write_string(k)); + } + + itag++; + } + + volk_32fc_s32fc_multiply_32fc(&out[start], &in[start], d_k, + (d_vlen*noutput_items-start)); + + return noutput_items; + } + + void + multiply_by_tag_value_cc_impl::setup_rpc() + { +#ifdef GR_CTRLPORT + add_rpc_variable( + rpcbasic_sptr(new rpcbasic_register_get<multiply_by_tag_value_cc, gr_complex>( + alias(), "Constant", + &multiply_by_tag_value_cc::k, + pmt::from_complex(-1024.0f, 0.0f), + pmt::from_complex(1024.0f, 0.0f), + pmt::from_complex(0.0f, 0.0f), + "", "Constant to multiply", RPC_PRIVLVL_MIN, + DISPTIME | DISPOPTCPLX | DISPOPTSTRIP))); +#endif /* GR_CTRLPORT */ + } + + } /* namespace blocks */ +} /* namespace gr */ diff --git a/gr-blocks/lib/multiply_by_tag_value_cc_impl.h b/gr-blocks/lib/multiply_by_tag_value_cc_impl.h new file mode 100644 index 0000000000..23adcc9aab --- /dev/null +++ b/gr-blocks/lib/multiply_by_tag_value_cc_impl.h @@ -0,0 +1,56 @@ +/* -*- c++ -*- */ +/* + * Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_MULTIPLY_BY_TAG_VALUE_CC_IMPL_H +#define INCLUDED_MULTIPLY_BY_TAG_VALUE_CC_IMPL_H + +#include <gnuradio/blocks/multiply_by_tag_value_cc.h> + +namespace gr { + namespace blocks { + + class BLOCKS_API multiply_by_tag_value_cc_impl + : public multiply_by_tag_value_cc + { + private: + size_t d_vlen; + pmt::pmt_t d_tag_key; + gr_complex d_k; + + public: + multiply_by_tag_value_cc_impl(const std::string& tag_name, + size_t vlen); + ~multiply_by_tag_value_cc_impl(); + + gr_complex k() const; + + void setup_rpc(); + + int work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } /* namespace blocks */ +} /* namespace gr */ + +#endif /* INCLUDED_MULTIPLY_BY_TAG_VALUE_CC_IMPL_H */ diff --git a/gr-blocks/lib/test_tag_variable_rate_ff_impl.cc b/gr-blocks/lib/test_tag_variable_rate_ff_impl.cc new file mode 100644 index 0000000000..4927cc1408 --- /dev/null +++ b/gr-blocks/lib/test_tag_variable_rate_ff_impl.cc @@ -0,0 +1,139 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "test_tag_variable_rate_ff_impl.h" +#include <gnuradio/io_signature.h> +#include <string.h> +#include <iostream> +#include <iomanip> +#include <stdexcept> + +using namespace pmt; + +namespace gr { + namespace blocks { + + test_tag_variable_rate_ff::sptr + test_tag_variable_rate_ff::make(bool update_once, double update_step) + { + return gnuradio::get_initial_sptr + (new test_tag_variable_rate_ff_impl(update_once, update_step)); + } + + test_tag_variable_rate_ff_impl::test_tag_variable_rate_ff_impl(bool update_once, double update_step) + : block("test_tag_variable_rate_ff", + io_signature::make(1, 1, sizeof(float)), + io_signature::make(1, 1, sizeof(float))), + d_update_once(update_once), d_update_step(update_step) + { + set_tag_propagation_policy(TPP_DONT); + set_relative_rate(0.5); + d_accum = 0; + d_rrate = 0.5; + d_old_in = 0; + d_new_in = 0; + d_last_out = 0; + + srand48(time(NULL)); + } + + test_tag_variable_rate_ff_impl::~test_tag_variable_rate_ff_impl() + { + } + + int + test_tag_variable_rate_ff_impl::general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const float *in = (const float*)input_items[0]; + float *out = (float*)output_items[0]; + + GR_LOG_DEBUG(d_logger, "\n"); + GR_LOG_DEBUG(d_logger, boost::format("ninput_items: %1%") % ninput_items[0]); + GR_LOG_DEBUG(d_logger, boost::format("noutput_items: %1%") % noutput_items); + + if(d_update_once) { + if(drand48() > 0.5) { + d_rrate += d_update_step; + } + else { + d_rrate -= d_update_step; + if(d_rrate < d_update_step) + d_rrate = d_update_step; + } + } + + std::vector<tag_t> tags; + std::vector<tag_t>::iterator itags; + + int i = 0, j = 0; + while(i < ninput_items[0]) { + + if(!d_update_once) { + if(drand48() > 0.5) { + d_rrate += d_update_step; + } + else { + d_rrate -= d_update_step; + if(d_rrate < d_update_step) + d_rrate = d_update_step; + } + } + + d_accum += d_rrate; + if(d_accum >= 1.0) { + out[j] = in[i]; + + // Manage Tags + d_new_in = nitems_read(0) + i; + get_tags_in_range(tags, 0, d_old_in, d_new_in); + for(itags = tags.begin(); itags != tags.end(); itags++) { + tag_t new_tag = *itags; + new_tag.offset = d_last_out; + add_item_tag(0, new_tag); + } + d_old_in = d_new_in; + d_last_out = nitems_written(0) + j; + + // Book keeping + j++; + d_accum -= 1.0; + } + i++; + } + + GR_LOG_DEBUG(d_logger, boost::format("consuming: %1%") % i); + GR_LOG_DEBUG(d_logger, boost::format("producing: %1%") % j); + GR_LOG_DEBUG(d_logger, boost::format("block's rel rate: %1%") % d_rrate); + + consume_each(i); + return j; + } + + } /* namespace blocks */ +} /* namespace gr */ diff --git a/gr-blocks/lib/test_tag_variable_rate_ff_impl.h b/gr-blocks/lib/test_tag_variable_rate_ff_impl.h new file mode 100644 index 0000000000..0335ab6e66 --- /dev/null +++ b/gr-blocks/lib/test_tag_variable_rate_ff_impl.h @@ -0,0 +1,56 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_GR_TEST_TAG_VARIABLE_RATE_FF_IMPL_H +#define INCLUDED_GR_TEST_TAG_VARIABLE_RATE_FF_IMPL_H + +#include <gnuradio/blocks/test_tag_variable_rate_ff.h> + +namespace gr { + namespace blocks { + + class test_tag_variable_rate_ff_impl : public test_tag_variable_rate_ff + { + protected: + bool d_update_once; + double d_update_step; + double d_accum; + double d_rrate; + uint64_t d_old_in, d_new_in, d_last_out; + + public: + test_tag_variable_rate_ff_impl(bool update_once=false, + double update_step=0.001); + ~test_tag_variable_rate_ff_impl(); + + //void setup_rpc(); + + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } /* namespace blocks */ +} /* namespace gr */ + +#endif /* INCLUDED_GR_TEST_TAG_VARIABLE_RATE_FF_IMPL_H */ diff --git a/gr-blocks/swig/blocks_swig3.i b/gr-blocks/swig/blocks_swig3.i index 61a959b113..629ada54ea 100644 --- a/gr-blocks/swig/blocks_swig3.i +++ b/gr-blocks/swig/blocks_swig3.i @@ -70,6 +70,7 @@ #include "gnuradio/blocks/multiply_const_vcc.h" #include "gnuradio/blocks/multiply_matrix_cc.h" #include "gnuradio/blocks/multiply_matrix_ff.h" +#include "gnuradio/blocks/multiply_by_tag_value_cc.h" #include "gnuradio/blocks/mute_ss.h" #include "gnuradio/blocks/mute_ii.h" #include "gnuradio/blocks/mute_ff.h" @@ -118,6 +119,7 @@ %include "gnuradio/blocks/multiply_const_vcc.h" %include "gnuradio/blocks/multiply_matrix_cc.h" %include "gnuradio/blocks/multiply_matrix_ff.h" +%include "gnuradio/blocks/multiply_by_tag_value_cc.h" %include "gnuradio/blocks/mute_ss.h" %include "gnuradio/blocks/mute_ii.h" %include "gnuradio/blocks/mute_ff.h" @@ -165,6 +167,7 @@ GR_SWIG_BLOCK_MAGIC2(blocks, multiply_const_vff); GR_SWIG_BLOCK_MAGIC2(blocks, multiply_const_vcc); GR_SWIG_BLOCK_MAGIC2(blocks, multiply_matrix_cc); GR_SWIG_BLOCK_MAGIC2(blocks, multiply_matrix_ff); +GR_SWIG_BLOCK_MAGIC2(blocks, multiply_by_tag_value_cc); GR_SWIG_BLOCK_MAGIC2(blocks, mute_ss); GR_SWIG_BLOCK_MAGIC2(blocks, mute_ii); GR_SWIG_BLOCK_MAGIC2(blocks, mute_ff); diff --git a/gr-blocks/swig/blocks_swig5.i b/gr-blocks/swig/blocks_swig5.i index b35492c94a..51601a8c30 100644 --- a/gr-blocks/swig/blocks_swig5.i +++ b/gr-blocks/swig/blocks_swig5.i @@ -56,6 +56,7 @@ #include "gnuradio/blocks/tagged_stream_multiply_length.h" #include "gnuradio/blocks/tagged_stream_to_pdu.h" #include "gnuradio/blocks/tags_strobe.h" +#include "gnuradio/blocks/test_tag_variable_rate_ff.h" #include "gnuradio/blocks/threshold_ff.h" #include "gnuradio/blocks/transcendental.h" #include "gnuradio/blocks/tuntap_pdu.h" @@ -99,6 +100,7 @@ %include "gnuradio/blocks/tagged_stream_multiply_length.h" %include "gnuradio/blocks/tagged_stream_to_pdu.h" %include "gnuradio/blocks/tags_strobe.h" +%include "gnuradio/blocks/test_tag_variable_rate_ff.h" %include "gnuradio/blocks/threshold_ff.h" %include "gnuradio/blocks/transcendental.h" %include "gnuradio/blocks/tuntap_pdu.h" @@ -141,6 +143,7 @@ GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_mux); GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_multiply_length); GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_to_pdu); GR_SWIG_BLOCK_MAGIC2(blocks, tags_strobe); +GR_SWIG_BLOCK_MAGIC2(blocks, test_tag_variable_rate_ff); GR_SWIG_BLOCK_MAGIC2(blocks, threshold_ff); GR_SWIG_BLOCK_MAGIC2(blocks, transcendental); GR_SWIG_BLOCK_MAGIC2(blocks, tuntap_pdu); diff --git a/gr-digital/doc/packet_comms.dox b/gr-digital/doc/packet_comms.dox new file mode 100644 index 0000000000..9b9f59fbd7 --- /dev/null +++ b/gr-digital/doc/packet_comms.dox @@ -0,0 +1,653 @@ +/*! \page page_packet_comms Packet Communications + +\section packet_introduction Introduction + +This page describes... + +The point of these examples and the work is to provide a canonical +tool for exploring burst digital communications. Providing the entire +PHY chain in GRC is to help us more easily explore and extract +portions of the transmit and receive chains to better understand, +tweak, and optimize the system. + + +\section packet_tx Understanding the Transmitter + +The transmitter PHY layer defines the following properties of the +transmitted frame: + +- Data integrity check, generally a \ref gr::digital::crc32_async_bb + "CRC". Standard practice would be to calculate a CRC32 of the + payload and append this to the end of the frame. + +- \ref page_fec "Forward Error Correction (FEC)". For correcting bit + errors during reception, we use FEC codes, which have different + properties for complexity, correcting capabilities, and amounts of + added redundancy. See our \ref page_fec "FEC-API page" in the manual + for more on how to use these and what types of codes are already + available. + +- Frame formatting. We expect the data to have been delivered to the + transmitter from some higher layer (MAC/Network), which we treat as + the payload. The PHY layer then puts on a bit of its own framing in + order to properly transmit it for other radios to receive + correctly. This often involves some information about the payload + format, such as the length, the type of FEC code used, and the type + of modulation or modulation parameters. The PHY layer frame will + also often add a known word to the front to help with + synchronization and identification. We use the Packet Header + Formatter block for this, which is completely defined by a packet + formatter object. See the gr::digital::header_format_base class + to understand more about how these formatters are created and used. + + The \ref gr::digital::protocol_formatter_async "Protocol Formatter" + has two output paths, both emitted as PDUs from message ports. The + first message port is "header" that emits the header created for the + payload based on the formatter object. The second message port is + "payload" which is just the input payload PDU re-emitted. This + creates two paths, which allows us to separately modulate the header + and payload differently as well as encode the header with a + different FEC code. We often want to do this to provide a much + simpler and more robust modulation and FEC structure to the header + to ensure that it is correctly received and then use a different + modulation and code for the payload to maximize throughput. + + NOTE: If the header formatter adds the known word / access code + here, and then we apply an FEC code to the header, then we have the + problem that the known word is also encoded. The receiver must be + made aware of this and correctly look for the encoded known + word. The packet_tx hier block example is a case where this + happens. If we use a repetition encoder, the access code is now + three bits out for every bit in. The packet_rx receiver example has + to account for this in the Correlation Estimator block that is + correlating against the known word. + +- Modulators. We create a modulator path for both the header and + payload. We define the operations of these two paths completely + using a \ref gr::digital::constellation "Constellation Object" (see + the \ref digital_constellations "Digital Modulation" manual page for + more information). The constellation objects define the mapping from + bits to complex symbols. You can use these objects in various ways, + but the packet_tx.grc example provides one way. After moving from + the PDU to tagged stream mode, the \ref gr::blocks::repack_bits_bb + "Repack Bits block" takes the packed 8-bits/byte data and converts + this into "chunks" of the number of bits per symbol of the + modulation (using the \ref + gr::digital::constellation::bits_per_symbol() "bits_per_symbol()" + property of the constellation object). We then map these chunks into + some known mapping function, most often a form of Gray Coding, using + the \ref gr::digital::map_bb "Map block" and the constellation object's \ref + gr::digital::constellation::pre_diff_code() "pre_diff_code()" + function. We then move these remapped chunks to complex symbols, + again as defined by the constellation object through the \ref + gr::digital::constellation::points() "points()" function in the + \ref gr::digital::chunks_to_symbols_bc "Chunks to Symbols block". + +- Combine the header and payload. We need to take both the header and + payload paths back together into a single stream. In packet_tx.grc, + we are working with tagged streams, so both paths keep track of the + size of their segments. Using the Tagged Stream Mux block, we + recombine these two paths into one. + +- Burst Shaping and Filtering. The next stage shapes the packet for + burst transmission. We apply two blocks to shape the burst + appropriately. + + First, the \ref gr::digital::burst_shaper_cc "Burst Shaping block" + handles the structure of the burst by applying two different forms + of padding. First, there is a window that is applied to the time + domain of the burst. This involves a ramping up stage from 0 and a + ramping down stage back to 0. We define a window as a vector, and + the \ref gr::fft::window "fft.window" set of window functions is + useful here, such as using a Hann or Kaiser window. The size of the + window is split in half to apply the left half of the window for the + ramp-up and the right half of the window for the ramp-down. The + window has two different modes: to insert or not insert phasing + symbols. When inserting phasing symbols, a sequence of 1's and -1's + is inserted for the duration of the ramp-up and ramp-down + periods. So a window size of 20 will produce 10 alternative 1's and + -1's on the front of the burst and another 10 alternating symbols on + the rear of the burst. The window is then applied to these phasing + symbols and does not affect the burst symbols directly. If we are + not using the phasing symbols, the the window is applied to the + front and back of the burst directly. + + The Burst Shaper can also add padded 0's to the front or back of the + burst. This allows us to provide some extra control over the + structure of the burst. In particular, it can be useful to add + post-padding 0's that is the length of the delay of the pulse + shaping filter that will come next. This makes sure that the full + burst of samples is pushed through the filter and transmitted + completely. + + +\verbatim + ____________________ + / \ + / \ + / \ + ______/ \____ + | E | D | C | B | A | + + A: Pre-padding 0's + B: Ramp-up window + C: Frame + D: Ramp-down window + E: Post-padding 0's +\endverbatim + + + When using phasing symbols, C is the entire frame and sections B + and D are filled with alternative 1's and -1's. + + When not using phase symbols, the frame extends B through C to D. + + After creating this burst shape, we then put the burst through a + pulse shaping filter. This filter both shapes the complex samples + into appropriate symbols for transmission based on a spectral mask + as well as up-samples the burst to the specified number of samples + per symbol. In packet_tx, we are using a Polyphase Arbitrary + Resampler to perform this task for us, which means that we can + specify and real value for the number of samples/symbol, as long as + it is greater than or equal to 2.0. + + Typical pulse shape filters are \ref + gr::filter::firdes::root_raised_cosine "Root Raised Cosine (RRC)" + filters and \ref gr::filter::firdes::gaussian "Gaussian" filters. + + Because the pulse shape filter up-samples, in packet_tx, we use a + \ref gr::blocks::tagged_stream_multiply_length "Tagged Stream Multiply Length Tag block". + The resampler block knows nothing about + tagged streams, so when it up-samples, the \ref + page_tagged_stream_blocks "tagged stream block (TSB)" tag value does + not change. We need to change this tag's value, too, and so we use + the multiply length tag block for this purpose. This is helpful when + working with UHD devices, like in uhd_packet_tx.grc, because we can + explicitly tell the UHD USRP Sink block to expect a tagged stream to + manage the transmission of the burst. + +\subsection packet_tx_params Parameters of the packet_tx Example + +The canonical example for handling narrowband M-PSK or M-QAM is the +packet_tx.grc hierarchical block. + +- Header FEC Code (hdr_enc) +- Payload FEC Code (pld_enc) +- Header Constellation Object (hdr_const) +- Payload Constellation Object (pld_const) +- Protocol Formatter Object (formatter) +- Samples per symbol (sps as a float) +- Pulse shaping filter (psf_taps, designed for the polyphase arbitrary + resampler) + +We can see all of these objects and settings in the +packet_loopback_hier.grc example and uhd_packet_tx.grc if using a +UHD-compatibly radio front end. + +\subsection packet_tx_examples Examples + +The following examples exist to showcase how to control each stage of +the transmit processing. + +- tx_stage0.grc: simple creation of PDUs to input into the + transmitter. By default, this generates \ref gr::blocks::random_pdu + "random PDUs" for testing. However, we can switch in the \ref + gr::blocks::tuntap_pdu "TUNTAP PDU" block to create a tun or tap + device as the input of samples from some OS application. Note that + you will need root privileges to create a tun/tap device and + configure it. + + +- tx_stage1.grc: Adding a CRC to the frame. The Message Debug prints + the before and after adding the \ref gr::digital::crc32_async_bb + "CRC32", so we can see the original PDU and then the PDU with the + added 4 bytes of check. + + +- tx_stage2.grc: Adding \ref page_fec "forward error correction". This + adds an \ref gr::fec::async_encoder "FEC Async Encoder" block to + compare pre- and post-encoding. Three different FEC encoders are + available immediately in this example with the repetition encoder + enabled by default. This encoder just repeats every bit 3 times, so + it is easy to see the behavior before and after encoding. Simply + disable this FEC code and enabling one of the others will change the + encoding behavior. + + +- tx_stage3.grc: takes the payload with the CRC32 check and creates + the packet structure. Both the header and payload are printed out, + where the payload is the input payload+CRC and the header is defined + by the 'formatter' object. The default formatter just applies an + access code (using the default 64-bit + digital.packet_utils.default_access_code code) and then it + calculates the payload length (in bytes) as a 16-bit value. This + 16-bit length field is duplicated, so in the receiver it can check + both 16-bit fields to make sure they agree. This formatter also + takes a threshold value. The transmitter does not use this + threshold. That parameter is used in the receiver to know how many + bits can be wrong in the access code and still pass. + + Disabling the \ref gr::digital::header_format_default + "default header definition" and enabling the other 'formatter' to + change the protocol. This other protocol definition is the \ref + gr::digital::header_format_counter "counter header". It adds the + access code and payload length fields as the header like the default + formatter. This formatter includes two other fields as well: the + number of bits/symbol used in the payload modulator (as a 16-bit + field) and a 16-bit counter. Each packet transmitted increments this + counter by 1, which means we can keep track of how many packets we + have sent and/or received. + +- tx_stage4.grc: Here we add the modulation to both the header and + payload paths, defined by the hdr_const and pld_const objects, + respectively. Both are defined as BPSK constellations by + default. The output is shown in two \ref page_qtgui "QTGUI display" + graphs. We see the samples in time first, and this is triggering off + the TSB tag "packet_len". When the time display updates, we can see + the same pattern right after the tag, which is the header, and then + the changing samples are the random values in the payload. + + When we look at this Freq tab of this example, we just see a mostly + flat frequency response over the entire frequency range. This + response is due to the samples just being +1's and -1's with no + transition between them and sampled at 1 sampler per symbol. This is + not something that we can just transmit as a burst. The square + pulses we use provide horrible out-of-band (OOB) emissions if we put + this over the air directly, and each burst would go from 0 to +/-1 + within the coarse of a single sample, which again provides large OOB + emissions. We need to shape the bursts properly from here. + +- tx_stage5.grc: Adds the \ref gr::digital::burst_shaper_cc "Burst Shaper" + block. The default parameters are to use a Hann window of 50 symbols + and to add 10 0's as pre- and post-padding. We can adjust any of + these values to explore what the output burst looks like. We can + stop the time sink from updating and turn on the markers for the + Re{Data 0} channel to easily count the samples and observe the + effect of the window. + + As an aside, the window of 50 produces 25 phasing samples on either + side. This is a lot, but we did this to help show off the way the + window looks a bit more clearly. + +- tx_stage6.grc: We then need to up-sample the signal by the number of + samples/symbol (sps) and apply our pulse-shaping filter. Again, we + are using some larger numbers than we really would in an actual + scenario to make it visually clear what is happening. The psf_taps + filter creates an RRC filter designed for the 32-arm (set by nfilts) + polyphase filterbank resampler. In this RRC Filter Taps object, we + set the number of taps to be 15*sps*nfilts. The sps and nfilts are + properties of the sample stream and upsampling factor. The value 15 + is the number of symbols to represent in this filter; basically that + we are going to look over the history effects of 15 samples to + manage the inter-symbol interference (ISI). That is a long RRC filter + but done so to make the simulation look better. Five or seven is a + more realistic value. Similarly, we set sps=4 here to make the time + and frequency plots look better. Normally, we would want this closer + to 2. + + Now looking at the time domain plot, we see the filtered samples, + which are not as pretty as before. They have over- and under-shoots, + and if we turned on the line markers, we would not see the original + bits easily through this. That is the effect of the RRC filter, + which introduces ISI into the transmitted stream. However, when we + look at the frequency domain, we see a much better shape, which we + can transmit as part of our channel assignment. + +- tx_stage6a.grc: An aside here to study the RRC filters more. This + example adds a second RRC filter (without any resampling) that + matches the transmitter's RRC filter. The matched filter means that + the samples are filtered by two RRC filters, which together make a + raised cosine (RC) filter. This RC filter is what is known as a + Nyquist filter and has the properties of 0 (or very close to 0) + ISI. Though we introduced ISI in the transmit RRC filter, the second + stage at the receiver undoes that ISI making for a clean, filtered + signal. Turning on marker in the time domain shows two clean lines + at +1 and -1. The receiver just needs to know which of the sps + samples to grad to get the original symbol that was transmitted. But + that is the job of the receiver. + +At this point, we have an encoded, modulated, and shaped burst ready +to be transmitted out of a radio. The uhd_packet_tx.grc example puts +all this together, where we have packaged up most of the transmitter +behavior into packet_tx.grc. We then generate random PDU's, put them +through the packet_tx block, and then through a Multiply Const block +and into a USRP sink. The Multiply Const block is used for digital +scaling of the signal to allow us power control on top of the +transmitter gain inside the USRP radio itself. + + +\section packet_rx Understanding the Receiver + +The receiver is far more complicated. The work involved here is +largely in the detection and synchronization of the received +frames. We must assume that frames are coming in as bursts with +potentially random time intervals. + +It is important to understand that it is very difficult to make a +simple protocol work in all scenarios. We have to assume that some +packets will be lost through either a missed detection at the start or +poor synchronization statistics during processing of the burst. + +The generic receiver example can be found in packet_rx.grc. This hier +block provides the main detection, synchronization, header/payload +management, demodulation, and decoding of the PHY frames. The input to +this hier block should be not be too far off in frequency. The GNU +Radio block \ref gr::digital::fll_band_edge_cc "FLL Band-Edge" tends +to work well enough, though this is unnecessary if the radio are +synchronized in frequency some other way (e.g., with a GPSDO such as +is available on USRPs). + +The main flow of samples here is to detect a frame by discovering its +known word, which also provides initial estimates on timing and phase +offsets of the received frame. We then go through a clock sync block +to perform matched filtering and sample time correction to produce +resampled symbols at 1 sample/symbol. Now we have samples that are +split between the header and payload. We might have information inside +of the header that helps the receiver understand the payload. For +instance, the length of the payload is generally encoded in the +header. So we have to demux the header and payload. + +We assume that we know the length of the header in symbols, which we +pass on to the header demodulator chain. Knowing the header +modulation, we synchronize the phase and frequency, demodulate the +symbols into soft bits, decode those soft bits based on the known +header's FEC code, and then parse the header information. The header +parser extracts information about the payload, such as the number of +symbols in the payload and possibly the number of bits/symbol used in +the payload modulation. + +The \ref gr::digital::header_payload_demux "Header/Payload Demux" +block sends the appropriate number of samples to the payload demod +chain. This chain does its own phase/freq synchronization for the +appropriate constellation used in the payload, decodes the samples to +soft bits, performs the FEC decoding, and then does the CRC32 +check. If this passes, the payload is sent out of the hier block as a +PDU with the PHY layer framing stripped. + +When looking at the packet_rx.grc example, notice that we have +instrumented a number of debug ports along the way. These ports are +designed to make it possible for us to externally hook up graphing and +debug blocks in whatever way we are comfortable with to see the signal +along the path and more easily debug. + + +\subsection packet_rx_correst Correlation Estimator + +The first stage of the receiver searches for the known word prepended +to every burst from the transmitter. The known word has gone through +two stages of processing: encoding with the header's FEC (optional) +and modulated by the header's modulator. The correlation of the known +word is done at the input sample stage, so we have to recreate the +modulated and possible encoded known word at the receiver. + +To simplify dealing with the encoding process, in packet_rx.grc, we +assume one of two types of codes: dummy code (or not coded) and a 3x +repetition code. We then just simply calculated the preamble's bits +for both cases. Depending on the header decoder (hdr_dec) used, the +hier block knows which preamble to use. + +Next, we need to take the known, encoded word and modulate it with the +header's modulator and pulse shaping filter. We create a simple +modulator in the variable 'rxmod' that takes the header \ref +gr::digital::constellation "constellation object" (hdr_const), the +number of samples per symbol, and the pulse shape filter's bandwidth +parameter (eb). The \ref gr::digital::modulate_vector_bc "Modulate Vector" +block than combines this 'rxmod' modulator with the 'preamble' +known word into a vector of complex symbols, here called +'modulated_sync_word'. This variable is then passed to the \ref +gr::digital::corr_est_cc "Correlation Estimator" block. + +One tricky thing about burst communications and network setups is the +power of the received samples is unknown and time varying. It is +preferential to try to auto-detect the burst and scale the signal to ++/-1 before coming in to packet_rx. There is still a lot of work to be +done for AGC loops in the hardware and automatic scaling in +software. The Correlation Estimator tries to deal with this. We use a +threshold as an approximate probability of detection. This value +should be set very high; the default here is 99.9%. The correlation +tends to scale well as the amplitudes change and for relatively low +SNR conditions. Still, it is always possible to miss a detection event +or have a false positive. + +Another thing that the Correlation Estimator can do for us is provide +information for digital scaling the samples. When received over +hardware, the signals tend to be very small, but most of our follow-on +processing assumes they are about +/-1. The Correlation Estimator +finds the amplitude of the sample where the correlation peak was +found, inverts it, and sends it as a tag with the key 'amp_est'. We +can use this down stream to adjust the amplitude by rescaling the +samples from this value. For our packet_rx example, we use the \ref +gr::blocks::multiply_by_tag_value_cc "Multiply by Tag Value" block, +which updates its multiplicitive factor based on the tag. Much of this +could be handled by a good AGC routine in the hardware. + +Finally, the main purpose of the Correlation Estimator block is to +provide the down-stream synchronization blocks with initial estimates +of the timing and phase offset. The peak of the magnitude of the +correlation event corresponds to the sampling timing of the data +stream. + +\verbatim + 1. /\ 2. _ + / \ / \ + __/ \__ __/ \__ +\endverbatim + +The above two drawings show two different correlation scenarios. In +scenario 1, the timing is exact and the sample at the peak of that +curve is the proper sample time of the last symbol of the known +word. In scenario 2, there is a timing offset where the correct timing +offset is half-way between two samples. This would be a timing offset +of 0.5 (or -0.5). Knowing where that estimated offset is helps our +timing recover blocks start near the correct sample offset and then +track from there. + +The magnitude of the correlation helps us discover the timing +offset. The correlation itself is a complex vector. So where the peak +of the magnitude happens, we can look to the complex value of the +correlation at the same point and the phase difference between the +real and imaginary parts is the phase offset of the signal. + +The Correlation Estimator block calculates the time and phase offsets +and creates stream tags for "time_est" and "phase_est". It also +creates two other tags: "corr_start" and "corr_est," both of which +contain the value of the peak of the magnitude of the +correlation. Because there is a delay in the correlation algorithm +that is affected by the size of the correlation, we need to adjust +where the correlation event occurs to where the tags are actually +placed on the output stream. The block places the "corr_start" tag on +the sample where the correlation actually occurred. It then places the +other three tags offset by some "Tag marking delay," which is a +user-calculated value to place the tags at the correct spot in the +data stream for the actual start of the known word's first symbol. + +In packet_rx, we empirically discovered the tag marking delay for +different values of the samples/symbol ('sps') variable and made a +list 'mark_delays' that is index by 'sps' to properly set 'mark_delay' +for the start of the known word. Getting is correct has a huge effect +on the timing recover loop, which can take a while to converge if it +starts offset in time by a sample. + +See the example example_corr_est.grc to explore the Correlation +Estimator blocks more. + + +\subsection packet_rx_timing Timing Recovery + +After detecting the frame and estimating the time and phase estimates, +we have to actually perform the timing synchronization step. The +packet_rx example uses the +\ref gr::digital::pfb_clock_sync_ccf "Polyphase Clock Sync" block to +do this. This PFB clock sync (PCS) block typically performs blind +timing recovery on a series of samples. It is composed of 'nfilt' +filters in a filterbank where each filter represents a different phase +from [0, 2pi) in steps of 2pi/nfilts. The algorithm finds the correct +arm of the filterbank that corresponds to the time shift of the +samples. It also knows to look for a "time_est" stream tag and use +that information to set its phase arm estimate. If we have a time +estimate like scenario 1 above, we have perfect timing and so would +select the 0th arm of the filterbank. In scenario 2, we are off by +half a sample, so we select arm nfilts/2. The PCS is a tracking loop, +so it will start with the initial estimate and then keep track of the +timing as well as hone-in on actual timing information of the symbol +stream. + +The PCS block uses a filterbank concept to perform its tracking +operation. The filters within the filterbank operate best when they +are phase offsets of the matched filter. So not only does the +block recover the timing, it also performs the matched filtering and +produces the optimal 1 sample/symbol output. These are then optimally +sampled symbols in the complex constellation space. They need to be +mapped back to bits and decoded. But first, we need to parse the +header in order to discover information about the payload. + +See the example example_corr_est_and_clock_sync.grc to play with the +parameters of time synchronization. + + +\subsection packet_rx_hpd Header/Payload Demux + +Because the header and payload can be modulated differently, the rest +of the symbol processing has to be split into two chains. We do this +using the \ref gr::digital::header_payload_demux "Header/Payload Demux" +block (HPD). We assume that we know the protocol, and so the format, +coding, and modulation of the header. Generally speaking, these are +all controlled through three different objects: + +- formatter: An object that described the header structure, derived + from gr::digital::header_format_base. + +- hdr_const: An object that describes the bit and symbol mapping, + derived from gr::digital::constellation. + +- hdr_dec: An object that describes the FEC code, derived from + gr::fec::generic_decoder. + +Through these, we can ask for any parameter to set up the following +stages of processing. + +The HPD block is fairly complicated and we will only use it in one +kind of configuration here. See the manual page for the \ref +gr::digital::header_payload_demux "HPD" block itself for more +details. In our use of the HPD block, it receives the data stream and +looks for a Trigger Tag Key. We will use 'time_est', one of the tags +produced by the Correlation Estimator to indicate the sample that +starts the header. When the HPD block sees this trigger key, it passes +along a known number of symbols out of the 'header' stream port. We +know the number of symbols based on the formatter, constellation, and +FEC decoder objects. The formatter objects knows the number of bits in +the header via the header_nbits() function, the constellation knows +how many bits per symbol (via bits_per_symbol()), and the FEC decoder +knows the encoding rate (via 1/rate()). The number of symbols in the +header is therefore: + + (header_nbits() * 1/rate()) / bits_per_symbol() + +The HPD then sends this many symbols on to be processed. It holds up +any more processing until triggered to do so with information through +the 'header_data' input message port. The header processing chain will +end with the Packet Parser producing the message here. + +When the 'header_data' input message port receives valid information, +it releases the payload out of the 'payload' stream port. The main +thing that the 'header_data' input message port receives is +information about the length of the payload. The HPD parameter 'Length +tag key' is matched to the message received in 'header_data', which is +then used to gate the output of samples as the payload. In our case, +we specify the length as the number of symbols through the message key +'payload symbols'. This tag then becomes the tagged stream key for the +payload chain. + + +\subsection packet_rx_hdr_chain Header Processing Chain + +The header processing chain is kicked off when the HPD block receives +the trigger stream tag (i.e., 'time_est'). We must first correct the +phase and fine frequency offset of the received samples. The +Correlation Estimator block will help us with this through the +'phase_est' tag. The \ref gr::digital::costas_loop_cc "Costas Loop" +looks for this tag, and, when found, it will take this estimate and +reset its own internal phase value, which greatly speed up +acquisition. The Costas loop will then track the phase and frequency +over the course of the header. + +With the constellation locked in time, phase, and frequency, we can +not decode the complex symbols. We use a \ref +gr::digital::constellation_soft_decoder_cf "Constellation Soft Decoder" +block for this, which uses the 'hdr_const' object to know the mappings +from complex space to bits. Specifically, it performs a soft decoding, +so the outputs are soft decision bits, which is useful for FEC +decoding that is performed next. + +The \ref gr::fec::decoder "FEC decoder" operates on the soft decisions +based on the hdr_dec object. Because of the bounded nature of the +header, we would expect simple block codes used here as well as a +fairly robust and easy to process code. In the current examples, we +only provide no code (via the \ref gr::fec::code::dummy_encoder +"Dummy Encoder" / \ref gr::fec::code::dummy_decoder "Dummy Decoder" +classes) or a repetition code (via the +\ref gr::fec::code::repetition_encoder "Repetition Encoder" / \ref +gr::fec::code::repetition_decoder "Repetition Decoder" classes). The +output of the FEC decoder block is a bit stream where each item is +either a 1 or a 0. + +The last step in the header processing stage is to parse that bit +stream back into the header. The \ref gr::digital::protocol_parser_b +"Packet Parser" block does this by receiving a bit stream, passing it +to the \ref gr::digital::header_format_base::parse "parse" function of +the packet formatter object, and emitting a message with the +information about the parsed data. + +The packet parsing is explained in detail in the \ref +gr::digital::header_format_base "Packet Formatter Base" class. The +parse function packs together the received bits into the different +header fields, checks that the header is correct, and the constructs a +PMT dictionary of the header information, such as the payload length +and other possible information like the type of constellation or FEC +coding used on the payload bits. This is the message that gets passed +back to the HPD block to guide the payload processing. + +If the packet formatter parsing operation fails by not getting enough +data or if the data is corrupted, it will return false. When the +Packet Parser sees this, it emits a message that just contains a \ref +page_pmt "PMT" False (pmt::PMT_F), which resets the HPD block to start +looking for another header trigger event. + +If the header parsing completes successfully, the HPD block gets a +message with information about the payload. Most importantly, it gets +information about how many symbols make up the payload. It then sends +a tagged stream to the payload processing chain with this many +symbols. + + +\subsection packet_rx_pld_chain Payload Processing Chain + +The payload processing chain behaves very similarly to the header +processing chain for the first few blocks. It starts by locking the +phase and frequency in another \ref gr::digital::costas_loop_cc +"Costas loop", and then perform \ref +gr::digital::constellation_soft_decoder_cf "soft decoding" on the +symbols using the 'pld_const' object. Because we come in as symbols +and out as soft decisions, the constellation soft decoder will produce +\ref gr::digital::constellation::bits_per_symbol() "bits_per_symbol()" +times as many outputs as inputs, but the soft decoder will not change +the tag stream information. To compensate for this, we use a \ref +gr::blocks::tagged_stream_multiply_length +"Tagged Stream Multiply Length" block to update the tagged stream tag +"payload symbols". We then move from the tagged stream mode into PDU +mode and perform the FEC decoding through the \ref +gr::fec::async_decoder "asynchronous FEC decoder". This decoder is +nice in that it comes in with soft bits and produces packed +bytes. These packed bytes are now the full payload with the CRC32 +appended. The \ref gr::digital::crc32_async_bb "Async CRC32" block in +"Check CRC" mode will take this PDU of packed bytes, calculate the CRC +and check it against the final four bytes of the payload. If they +match, the PDU is stripped of the CRC bytes and the frame is passed +out of the hier block. This PDU frame is now ready for use in higher +layers of processing. + +This takes us through the entire processing chain on the +receiver. From here, it is a matter of tweaking parameters and playing +with options and other setups to improve behavior. + +*/ diff --git a/gr-digital/examples/CMakeLists.txt b/gr-digital/examples/CMakeLists.txt index 38ee443ab7..5f1adf08ab 100644 --- a/gr-digital/examples/CMakeLists.txt +++ b/gr-digital/examples/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2011 Free Software Foundation, Inc. +# Copyright 2016 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -95,3 +95,34 @@ install( DESTINATION ${GR_PKG_DIGITAL_EXAMPLES_DIR}/demod COMPONENT "digital_python" ) + + +# PACKET +install( + FILES + packet/burst_tagger.grc + packet/example_corr_est_and_clock_sync.grc + packet/example_corr_est_and_phase_sync.grc + packet/example_corr_est.grc + packet/formatter_crc.grc + packet/formatter_ofdm.grc + packet/packet_loopback_hier.grc + packet/packet_rx.grc + packet/packet_tx.grc + packet/simple_bpsk_tx.grc + packet/transmitter_sim_hier.grc + packet/tx_stage0.grc + packet/tx_stage1.grc + packet/tx_stage2.grc + packet/tx_stage3.grc + packet/tx_stage4.grc + packet/tx_stage5.grc + packet/tx_stage6a.grc + packet/tx_stage6.grc + packet/uhd_packet_rx.grc + packet/uhd_packet_rx_tun.grc + packet/uhd_packet_tx.grc + packet/uhd_packet_tx_tun.grc + DESTINATION ${GR_PKG_DIGITAL_EXAMPLES_DIR}/packet + COMPONENT "digital_python" +) diff --git a/gr-digital/examples/ofdm/tx_ofdm.grc b/gr-digital/examples/ofdm/tx_ofdm.grc index 368f16bd80..3c8aca2b69 100644 --- a/gr-digital/examples/ofdm/tx_ofdm.grc +++ b/gr-digital/examples/ofdm/tx_ofdm.grc @@ -1,160 +1,151 @@ -<?xml version='1.0' encoding='ASCII'?> +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> <flow_graph> <timestamp>Wed Jul 9 15:49:47 2014</timestamp> <block> - <key>variable</key> + <key>options</key> <param> - <key>id</key> - <value>sync_word2</value> + <key>author</key> + <value></value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>window_size</key> + <value>1280, 1024</value> </param> <param> - <key>value</key> - <value>[0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, 0, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1, 1, -1, 1, -1, -1, -1, -1, 0, 0, 0, 0, 0] </value> + <key>category</key> + <value>Custom</value> </param> <param> - <key>alias</key> + <key>comment</key> <value></value> </param> <param> + <key>description</key> + <value>Example of an OFDM Transmitter</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> <key>_coordinate</key> - <value>(496, 128)</value> + <value>(1, 0)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>variable</key> <param> - <key>id</key> - <value>length_tag_key</value> + <key>generate_options</key> + <value>qt_gui</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>hier_block_src_path</key> + <value>.:</value> </param> <param> - <key>value</key> - <value>"packet_len"</value> + <key>id</key> + <value>tx_ofdm</value> </param> <param> - <key>alias</key> - <value></value> + <key>max_nouts</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(352, 0)</value> + <key>qt_qss_theme</key> + <value></value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>realtime_scheduling</key> + <value></value> </param> - </block> - <block> - <key>variable</key> <param> - <key>id</key> - <value>samp_rate</value> + <key>run_command</key> + <value>{python} -u {filename}</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>run_options</key> + <value>run</value> </param> <param> - <key>value</key> - <value>100000</value> + <key>run</key> + <value>True</value> </param> <param> - <key>alias</key> + <key>thread_safe_setters</key> <value></value> </param> <param> - <key>_coordinate</key> - <value>(255, 0)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> + <key>title</key> + <value>OFDM Tx</value> </param> </block> <block> <key>variable</key> <param> - <key>id</key> - <value>rolloff</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>0</value> + <key>_coordinate</key> + <value>(181, -1)</value> </param> <param> - <key>alias</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(898, -1)</value> + <key>id</key> + <value>fft_len</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>value</key> + <value>64</value> </param> </block> <block> <key>variable</key> <param> - <key>id</key> - <value>payload_mod</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> - <value>True</value> + <value>1</value> </param> <param> - <key>value</key> - <value>digital.constellation_qpsk()</value> + <key>_coordinate</key> + <value>(720, 69)</value> </param> <param> - <key>alias</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(734, 0)</value> + <key>id</key> + <value>hdr_format</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>value</key> + <value>digital.header_format_ofdm(occupied_carriers, 1, length_tag_key,)</value> </param> </block> <block> <key>variable</key> <param> - <key>id</key> - <value>header_mod</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>digital.constellation_bpsk()</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> <key>_coordinate</key> <value>(567, 0)</value> </param> @@ -162,479 +153,462 @@ <key>_rotation</key> <value>0</value> </param> + <param> + <key>id</key> + <value>header_mod</value> + </param> + <param> + <key>value</key> + <value>digital.constellation_bpsk()</value> + </param> </block> <block> <key>variable</key> <param> - <key>id</key> - <value>packet_len</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>96</value> + <key>_coordinate</key> + <value>(352, 0)</value> </param> <param> - <key>alias</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(476, 0)</value> + <key>id</key> + <value>length_tag_key</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>value</key> + <value>"packet_len"</value> </param> </block> <block> <key>variable</key> <param> - <key>id</key> - <value>fft_len</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>64</value> + <key>_coordinate</key> + <value>(320, 69)</value> </param> <param> - <key>alias</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(181, -1)</value> + <key>id</key> + <value>occupied_carriers</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>value</key> + <value>(range(-26, -21) + range(-20, -7) + range(-6, 0) + range(1, 7) + range(8, 21) + range(22, 27),)</value> </param> </block> <block> <key>variable</key> <param> - <key>id</key> - <value>header_formatter</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>digital.packet_header_ofdm(occupied_carriers, 1, length_tag_key)</value> + <key>_coordinate</key> + <value>(476, 0)</value> </param> <param> - <key>alias</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(708, 64)</value> + <key>id</key> + <value>packet_len</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>value</key> + <value>96</value> </param> </block> <block> <key>variable</key> <param> - <key>id</key> - <value>pilot_carriers</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>((-21, -7, 7, 21,),)</value> + <key>_coordinate</key> + <value>(734, 0)</value> </param> <param> - <key>alias</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(480, 64)</value> + <key>id</key> + <value>payload_mod</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>value</key> + <value>digital.constellation_qpsk()</value> </param> </block> <block> <key>variable</key> <param> - <key>id</key> - <value>occupied_carriers</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>(range(-26, -21) + range(-20, -7) + range(-6, 0) + range(1, 7) + range(8, 21) + range(22, 27),)</value> + <key>_coordinate</key> + <value>(480, 69)</value> </param> <param> - <key>alias</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(329, 64)</value> + <key>id</key> + <value>pilot_carriers</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>value</key> + <value>((-21, -7, 7, 21,),)</value> </param> </block> <block> <key>variable</key> <param> - <key>id</key> - <value>pilot_symbols</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>((1, 1, 1, -1,),)</value> + <key>_coordinate</key> + <value>(608, 69)</value> </param> <param> - <key>alias</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(601, 64)</value> + <key>id</key> + <value>pilot_symbols</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>value</key> + <value>((1, 1, 1, -1,),)</value> </param> </block> <block> <key>variable</key> <param> - <key>id</key> - <value>sync_word1</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> - <value>True</value> + <value>1</value> </param> <param> - <key>value</key> - <value>[0., 0., 0., 0., 0., 0., 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 0., 0., 0., 0., 0.]</value> + <key>_coordinate</key> + <value>(898, -1)</value> </param> <param> - <key>alias</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(352, 128)</value> + <key>id</key> + <value>rolloff</value> </param> <param> - <key>_rotation</key> + <key>value</key> <value>0</value> </param> </block> <block> - <key>virtual_source</key> + <key>variable</key> <param> - <key>id</key> - <value>virtual_source_0_0</value> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>stream_id</key> - <value>Payload Bits</value> - </param> - <param> <key>_coordinate</key> - <value>(0, 458)</value> + <value>(255, 0)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>import</key> <param> <key>id</key> - <value>import_0</value> + <value>samp_rate</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>value</key> + <value>100000</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>import</key> - <value>import numpy</value> + <key>comment</key> + <value></value> </param> <param> - <key>alias</key> - <value></value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(237, 93)</value> + <value>(8, 93)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>import</key> <param> <key>id</key> - <value>import_1</value> + <value>sync_word1</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>value</key> + <value>[0., 0., 0., 0., 0., 0., 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 0., 0., 0., 0., 0.]</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>import</key> - <value>from gnuradio.digital.utils import tagged_streams</value> + <key>comment</key> + <value></value> </param> <param> - <key>alias</key> - <value></value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(99, 93)</value> + <value>(152, 93)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>import</key> <param> <key>id</key> - <value>import_0_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <value>sync_word2</value> </param> <param> - <key>import</key> - <value>import random</value> + <key>value</key> + <value>[0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, 0, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1, 1, -1, 1, -1, -1, -1, -1, 0, 0, 0, 0, 0] </value> </param> + </block> + <block> + <key>analog_random_source_x</key> <param> <key>alias</key> <value></value> </param> <param> - <key>_coordinate</key> - <value>(3, 94)</value> + <key>comment</key> + <value></value> </param> <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>virtual_source</key> - <param> - <key>id</key> - <value>virtual_source_0_0_0_0</value> + <key>affinity</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>stream_id</key> - <value>Time Domain</value> - </param> - <param> <key>_coordinate</key> - <value>(1, 747)</value> + <value>(16, 167)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>virtual_sink</key> <param> <key>id</key> - <value>virtual_sink_0_0_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <value>analog_random_source_x_0</value> </param> <param> - <key>stream_id</key> - <value>Pre-OFDM</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(745, 441)</value> + <key>max</key> + <value>255</value> </param> <param> - <key>_rotation</key> + <key>minoutbuf</key> <value>0</value> </param> - </block> - <block> - <key>digital_chunks_to_symbols_xx</key> <param> - <key>id</key> - <value>digital_chunks_to_symbols_xx_0_0</value> + <key>min</key> + <value>0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>num_samps</key> + <value>1000</value> </param> <param> - <key>in_type</key> + <key>type</key> <value>byte</value> </param> <param> - <key>out_type</key> - <value>complex</value> - </param> - <param> - <key>symbol_table</key> - <value>payload_mod.points()</value> + <key>repeat</key> + <value>True</value> </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> <param> - <key>dimension</key> - <value>1</value> + <key>alias</key> + <value></value> </param> <param> - <key>num_ports</key> - <value>1</value> + <key>comment</key> + <value></value> </param> <param> - <key>alias</key> - <value></value> + <key>const</key> + <value>0.05</value> </param> <param> <key>affinity</key> <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(212, 450)</value> + <value>(208, 692)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>virtual_source</key> <param> <key>id</key> - <value>virtual_source_0_0_0</value> + <value>blocks_multiply_const_vxx_0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>stream_id</key> - <value>Pre-OFDM</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(0, 578)</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>vlen</key> + <value>1</value> </param> </block> <block> - <key>virtual_sink</key> + <key>blocks_repack_bits_bb</key> <param> - <key>id</key> - <value>virtual_sink_0</value> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>payload_mod.bits_per_symbol()</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>_enabled</key> <value>True</value> </param> <param> - <key>stream_id</key> - <value>Time Domain</value> + <key>endianness</key> + <value>gr.GR_LSB_FIRST</value> </param> <param> <key>_coordinate</key> - <value>(855, 578)</value> + <value>(664, 245)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>fft_vxx</key> <param> <key>id</key> - <value>fft_vxx_0</value> + <value>blocks_repack_bits_bb_0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>len_tag_key</key> + <value>length_tag_key</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>fft_size</key> - <value>fft_len</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>forward</key> + <key>align_output</key> <value>False</value> </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> <param> - <key>window</key> - <value>()</value> - </param> - <param> - <key>shift</key> - <value>True</value> + <key>k</key> + <value>8</value> </param> <param> - <key>nthreads</key> + <key>l</key> <value>1</value> </param> <param> @@ -642,407 +616,396 @@ <value></value> </param> <param> + <key>comment</key> + <value></value> + </param> + <param> <key>affinity</key> <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>endianness</key> + <value>gr.GR_LSB_FIRST</value> </param> <param> <key>_coordinate</key> - <value>(414, 548)</value> + <value>(896, 157)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>blocks_multiply_const_vxx</key> <param> <key>id</key> - <value>blocks_multiply_const_vxx_0</value> + <value>blocks_repack_bits_bb_0_0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>len_tag_key</key> + <value>length_tag_key</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>const</key> - <value>0.05</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>align_output</key> + <value>False</value> </param> + </block> + <block> + <key>blocks_stream_to_tagged_stream</key> <param> <key>alias</key> <value></value> </param> <param> - <key>affinity</key> + <key>comment</key> <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>affinity</key> + <value></value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(209, 747)</value> + <value>(192, 181)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>digital_chunks_to_symbols_xx</key> <param> <key>id</key> - <value>digital_chunks_to_symbols_xx_0</value> + <value>blocks_stream_to_tagged_stream_0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>len_tag_key</key> + <value>length_tag_key</value> </param> <param> - <key>in_type</key> - <value>byte</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>out_type</key> - <value>complex</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>symbol_table</key> - <value>header_mod.points()</value> + <key>packet_len</key> + <value>packet_len</value> </param> <param> - <key>dimension</key> - <value>1</value> + <key>type</key> + <value>byte</value> </param> <param> - <key>num_ports</key> + <key>vlen</key> <value>1</value> </param> + </block> + <block> + <key>blocks_tag_debug</key> <param> <key>alias</key> <value></value> </param> <param> + <key>comment</key> + <value></value> + </param> + <param> <key>affinity</key> <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>display</key> + <value>True</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(214, 376)</value> + <value>(680, 822)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>analog_random_source_x</key> <param> <key>id</key> - <value>analog_random_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <value>blocks_tag_debug_0</value> </param> <param> <key>type</key> <value>byte</value> </param> <param> - <key>min</key> - <value>0</value> + <key>filter</key> + <value>""</value> </param> <param> - <key>max</key> - <value>255</value> + <key>name</key> + <value>Rx'd Packets</value> </param> <param> - <key>num_samps</key> - <value>1000</value> + <key>num_inputs</key> + <value>1</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>vlen</key> + <value>1</value> </param> + </block> + <block> + <key>blocks_tag_gate</key> <param> <key>alias</key> <value></value> </param> <param> - <key>affinity</key> + <key>comment</key> <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>affinity</key> + <value></value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(13, 220)</value> + <value>(376, 692)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>blocks_tagged_stream_mux</key> <param> <key>id</key> - <value>blocks_tagged_stream_mux_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <value>blocks_tag_gate_0</value> </param> <param> <key>type</key> <value>complex</value> </param> <param> - <key>ninputs</key> - <value>2</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>lengthtagname</key> - <value>length_tag_key</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>propagate_tags</key> + <value>False</value> </param> <param> - <key>tag_preserve_head_pos</key> - <value>0</value> + <key>vlen</key> + <value>1</value> </param> + </block> + <block> + <key>blocks_tagged_stream_mux</key> <param> <key>alias</key> <value></value> </param> <param> - <key>affinity</key> + <key>comment</key> <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>affinity</key> + <value></value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(510, 428)</value> + <value>(512, 369)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>digital_ofdm_cyclic_prefixer</key> <param> <key>id</key> - <value>digital_ofdm_cyclic_prefixer_0</value> + <value>blocks_tagged_stream_mux_0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>input_size</key> - <value>fft_len</value> + <key>lengthtagname</key> + <value>length_tag_key</value> </param> <param> - <key>cp_len</key> - <value>fft_len/4</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>rolloff</key> - <value>rolloff</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>tagname</key> - <value>length_tag_key</value> + <key>ninputs</key> + <value>2</value> + </param> + <param> + <key>tag_preserve_head_pos</key> + <value>0</value> </param> <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_throttle</key> + <param> <key>alias</key> <value></value> </param> <param> - <key>affinity</key> + <key>comment</key> <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>affinity</key> + <value></value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(632, 564)</value> + <value>(560, 692)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>blocks_tag_gate</key> <param> <key>id</key> - <value>blocks_tag_gate_0</value> + <value>blocks_throttle_0</value> </param> <param> - <key>_enabled</key> + <key>ignoretag</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>propagate_tags</key> - <value>False</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>samples_per_second</key> + <value>samp_rate</value> </param> <param> - <key>_coordinate</key> - <value>(372, 747)</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>vlen</key> + <value>1</value> </param> </block> <block> - <key>blocks_repack_bits_bb</key> + <key>channels_channel_model</key> <param> - <key>id</key> - <value>blocks_repack_bits_bb_0</value> + <key>alias</key> + <value></value> </param> <param> - <key>_enabled</key> + <key>block_tags</key> <value>True</value> </param> <param> - <key>k</key> - <value>8</value> + <key>comment</key> + <value></value> </param> <param> - <key>l</key> - <value>payload_mod.bits_per_symbol()</value> + <key>affinity</key> + <value></value> </param> <param> - <key>len_tag_key</key> - <value>length_tag_key</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>align_output</key> - <value>False</value> + <key>epsilon</key> + <value>1.0</value> </param> <param> - <key>alias</key> - <value></value> + <key>freq_offset</key> + <value>0.0</value> </param> <param> - <key>affinity</key> - <value></value> + <key>_coordinate</key> + <value>(192, 801)</value> </param> <param> - <key>minoutbuf</key> + <key>_rotation</key> <value>0</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>id</key> + <value>channels_channel_model_0</value> </param> <param> - <key>_coordinate</key> - <value>(710, 301)</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>_rotation</key> + <key>minoutbuf</key> <value>0</value> </param> - </block> - <block> - <key>digital_packet_headergenerator_bb</key> <param> - <key>id</key> - <value>digital_packet_headergenerator_bb_0</value> + <key>noise_voltage</key> + <value>0.0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>seed</key> + <value>0</value> </param> <param> - <key>header_formatter</key> - <value>header_formatter.formatter()</value> + <key>taps</key> + <value>1.0 + 1.0j</value> </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> <param> - <key>len_tag_key</key> - <value>"packet_len"</value> + <key>alias</key> + <value></value> </param> <param> - <key>alias</key> + <key>comment</key> <value></value> </param> <param> @@ -1050,198 +1013,205 @@ <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>dimension</key> + <value>1</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(703, 242)</value> + <value>(216, 317)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>blocks_stream_to_tagged_stream</key> <param> <key>id</key> - <value>blocks_stream_to_tagged_stream_0</value> + <value>digital_chunks_to_symbols_xx_0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>in_type</key> + <value>byte</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>vlen</key> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> <value>1</value> </param> <param> - <key>packet_len</key> - <value>packet_len</value> + <key>out_type</key> + <value>complex</value> </param> <param> - <key>len_tag_key</key> - <value>length_tag_key</value> + <key>symbol_table</key> + <value>header_mod.points()</value> </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> <param> <key>alias</key> <value></value> </param> <param> + <key>comment</key> + <value></value> + </param> + <param> <key>affinity</key> <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>dimension</key> + <value>1</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(193, 235)</value> + <value>(216, 397)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>virtual_sink</key> <param> <key>id</key> - <value>header_bits</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <value>digital_chunks_to_symbols_xx_0_0</value> </param> <param> - <key>stream_id</key> - <value>Header Bits</value> + <key>in_type</key> + <value>byte</value> </param> <param> - <key>_coordinate</key> - <value>(936, 243)</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>_rotation</key> + <key>minoutbuf</key> <value>0</value> </param> - </block> - <block> - <key>virtual_sink</key> <param> - <key>id</key> - <value>virtual_sink_0_0</value> + <key>num_ports</key> + <value>1</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>out_type</key> + <value>complex</value> </param> <param> - <key>stream_id</key> - <value>Payload Bits</value> + <key>symbol_table</key> + <value>payload_mod.points()</value> </param> + </block> + <block> + <key>digital_crc32_bb</key> <param> - <key>_coordinate</key> - <value>(934, 324)</value> + <key>alias</key> + <value></value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>comment</key> + <value></value> </param> - </block> - <block> - <key>virtual_source</key> <param> - <key>id</key> - <value>virtual_source_0</value> + <key>affinity</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>stream_id</key> - <value>Header Bits</value> - </param> - <param> <key>_coordinate</key> - <value>(1, 382)</value> + <value>(432, 182)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>digital_crc32_bb</key> <param> <key>id</key> <value>digital_crc32_bb_0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>lengthtagname</key> + <value>length_tag_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> </param> <param> <key>check</key> <value>False</value> </param> <param> - <key>lengthtagname</key> - <value>length_tag_key</value> + <key>packed</key> + <value>True</value> </param> + </block> + <block> + <key>digital_ofdm_carrier_allocator_cvc</key> <param> <key>alias</key> <value></value> </param> <param> + <key>comment</key> + <value></value> + </param> + <param> <key>affinity</key> <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>fft_len</key> + <value>fft_len</value> </param> <param> <key>_coordinate</key> - <value>(430, 235)</value> + <value>(192, 489)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>digital_ofdm_carrier_allocator_cvc</key> <param> <key>id</key> <value>digital_ofdm_carrier_allocator_cvc_0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>len_tag_key</key> + <value>length_tag_key</value> </param> <param> - <key>fft_len</key> - <value>fft_len</value> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> </param> <param> <key>occupied_carriers</key> @@ -1259,12 +1229,19 @@ <key>sync_words</key> <value>(sync_word1, sync_word2)</value> </param> + </block> + <block> + <key>digital_ofdm_cyclic_prefixer</key> + <param> + <key>alias</key> + <value></value> + </param> <param> - <key>len_tag_key</key> - <value>length_tag_key</value> + <key>cp_len</key> + <value>fft_len/4</value> </param> <param> - <key>alias</key> + <key>comment</key> <value></value> </param> <param> @@ -1272,93 +1249,107 @@ <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>input_size</key> + <value>fft_len</value> </param> <param> <key>_coordinate</key> - <value>(192, 540)</value> + <value>(632, 503)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>virtual_source</key> <param> <key>id</key> - <value>virtual_source_1</value> + <value>digital_ofdm_cyclic_prefixer_0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>tagname</key> + <value>length_tag_key</value> </param> <param> - <key>stream_id</key> - <value>Tx Signal</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(0, 894)</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>rolloff</key> + <value>rolloff</value> </param> </block> <block> - <key>virtual_sink</key> + <key>digital_ofdm_rx</key> <param> - <key>id</key> - <value>virtual_sink_1</value> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>cp_len</key> + <value>fft_len/4</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>stream_id</key> - <value>Tx Signal</value> + <key>fft_len</key> + <value>fft_len</value> </param> <param> <key>_coordinate</key> - <value>(990, 646)</value> + <value>(440, 766)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>digital_ofdm_rx</key> + <param> + <key>header_mod</key> + <value>"BPSK"</value> + </param> <param> <key>id</key> <value>digital_ofdm_rx_0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>log</key> + <value>False</value> </param> <param> - <key>fft_len</key> - <value>fft_len</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>cp_len</key> - <value>fft_len/4</value> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>occupied_carriers</key> + <value>occupied_carriers</value> </param> <param> <key>packet_len_key</key> <value>"length"</value> </param> <param> - <key>occupied_carriers</key> - <value>occupied_carriers</value> + <key>payload_mod</key> + <value>"QPSK"</value> </param> <param> <key>pilot_carriers</key> @@ -1369,6 +1360,10 @@ <value>pilot_symbols</value> </param> <param> + <key>scramble_bits</key> + <value>False</value> + </param> + <param> <key>sync_word1</key> <value>sync_word1</value> </param> @@ -1376,24 +1371,15 @@ <key>sync_word2</key> <value>sync_word2</value> </param> + </block> + <block> + <key>digital_protocol_formatter_bb</key> <param> - <key>header_mod</key> - <value>"BPSK"</value> - </param> - <param> - <key>payload_mod</key> - <value>"QPSK"</value> - </param> - <param> - <key>scramble_bits</key> - <value>False</value> - </param> - <param> - <key>log</key> - <value>False</value> + <key>alias</key> + <value></value> </param> <param> - <key>alias</key> + <key>comment</key> <value></value> </param> <param> @@ -1401,58 +1387,46 @@ <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>format</key> + <value>hdr_format</value> </param> <param> <key>_coordinate</key> - <value>(439, 823)</value> + <value>(656, 157)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>channels_channel_model</key> <param> <key>id</key> - <value>channels_channel_model_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <value>digital_protocol_formatter_bb_0</value> </param> <param> - <key>noise_voltage</key> - <value>0.0</value> - </param> - <param> - <key>freq_offset</key> - <value>0.0</value> - </param> - <param> - <key>epsilon</key> - <value>1.0</value> + <key>len_tag_key</key> + <value>length_tag_key</value> </param> <param> - <key>taps</key> - <value>1.0 + 1.0j</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>seed</key> + <key>minoutbuf</key> <value>0</value> </param> + </block> + <block> + <key>fft_vxx</key> <param> - <key>block_tags</key> - <value>True</value> + <key>alias</key> + <value></value> </param> <param> - <key>alias</key> + <key>comment</key> <value></value> </param> <param> @@ -1460,201 +1434,190 @@ <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>maxoutbuf</key> - <value>0</value> + <key>fft_size</key> + <value>fft_len</value> + </param> + <param> + <key>forward</key> + <value>False</value> </param> <param> <key>_coordinate</key> - <value>(193, 858)</value> + <value>(416, 496)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>blocks_tag_debug</key> <param> <key>id</key> - <value>blocks_tag_debug_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <value>fft_vxx_0</value> </param> <param> <key>type</key> - <value>byte</value> + <value>complex</value> </param> <param> - <key>name</key> - <value>Rx'd Packets</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>filter</key> - <value>""</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>num_inputs</key> + <key>nthreads</key> <value>1</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>shift</key> + <value>True</value> </param> <param> - <key>display</key> - <value>True</value> + <key>window</key> + <value>()</value> </param> + </block> + <block> + <key>virtual_sink</key> <param> - <key>alias</key> + <key>comment</key> <value></value> </param> <param> - <key>affinity</key> - <value></value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(689, 889)</value> + <value>(1104, 164)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> - </block> - <block> - <key>blocks_throttle</key> <param> <key>id</key> - <value>blocks_throttle_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <value>header_bits</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>stream_id</key> + <value>Header Bits</value> </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> <param> - <key>samples_per_second</key> - <value>samp_rate</value> + <key>autoscale</key> + <value>True</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>average</key> + <value>1.0</value> </param> <param> - <key>ignoretag</key> + <key>axislabels</key> <value>True</value> </param> <param> - <key>alias</key> - <value></value> + <key>bw</key> + <value>samp_rate</value> </param> <param> - <key>affinity</key> + <key>alias</key> <value></value> </param> <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> + <key>fc</key> <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(559, 747)</value> + <key>comment</key> + <value></value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>ctrlpanel</key> + <value>False</value> </param> - </block> - <block> - <key>qtgui_freq_sink_x</key> <param> - <key>id</key> - <value>qtgui_freq_sink_x_0</value> + <key>affinity</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>fftsize</key> + <value>1024</value> </param> <param> - <key>name</key> - <value>FFT Plot</value> + <key>_coordinate</key> + <value>(960, 759)</value> </param> <param> - <key>fftsize</key> - <value>1024</value> + <key>gui_hint</key> + <value></value> </param> <param> - <key>wintype</key> - <value>firdes.WIN_BLACKMAN_hARRIS</value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>fc</key> - <value>0</value> + <key>grid</key> + <value>False</value> </param> <param> - <key>bw</key> - <value>samp_rate</value> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> </param> <param> - <key>autoscale</key> + <key>legend</key> <value>True</value> </param> <param> - <key>average</key> + <key>alpha1</key> <value>1.0</value> </param> <param> - <key>ymin</key> - <value>-140</value> + <key>color1</key> + <value>"blue"</value> </param> <param> - <key>ymax</key> - <value>10</value> + <key>label1</key> + <value></value> </param> <param> - <key>nconnections</key> + <key>width1</key> <value>1</value> </param> <param> - <key>update_time</key> - <value>0.10</value> + <key>alpha10</key> + <value>1.0</value> </param> <param> - <key>gui_hint</key> - <value></value> + <key>color10</key> + <value>"dark blue"</value> </param> <param> - <key>label1</key> + <key>label10</key> <value></value> </param> <param> - <key>width1</key> + <key>width10</key> <value>1</value> </param> <param> - <key>color1</key> - <value>"blue"</value> + <key>alpha2</key> + <value>1.0</value> </param> <param> - <key>alpha1</key> - <value>1.0</value> + <key>color2</key> + <value>"red"</value> </param> <param> <key>label2</key> @@ -1665,12 +1628,12 @@ <value>1</value> </param> <param> - <key>color2</key> - <value>"red"</value> + <key>alpha3</key> + <value>1.0</value> </param> <param> - <key>alpha2</key> - <value>1.0</value> + <key>color3</key> + <value>"green"</value> </param> <param> <key>label3</key> @@ -1681,12 +1644,12 @@ <value>1</value> </param> <param> - <key>color3</key> - <value>"green"</value> + <key>alpha4</key> + <value>1.0</value> </param> <param> - <key>alpha3</key> - <value>1.0</value> + <key>color4</key> + <value>"black"</value> </param> <param> <key>label4</key> @@ -1697,12 +1660,12 @@ <value>1</value> </param> <param> - <key>color4</key> - <value>"black"</value> + <key>alpha5</key> + <value>1.0</value> </param> <param> - <key>alpha4</key> - <value>1.0</value> + <key>color5</key> + <value>"cyan"</value> </param> <param> <key>label5</key> @@ -1713,12 +1676,12 @@ <value>1</value> </param> <param> - <key>color5</key> - <value>"cyan"</value> + <key>alpha6</key> + <value>1.0</value> </param> <param> - <key>alpha5</key> - <value>1.0</value> + <key>color6</key> + <value>"magenta"</value> </param> <param> <key>label6</key> @@ -1729,12 +1692,12 @@ <value>1</value> </param> <param> - <key>color6</key> - <value>"magenta"</value> + <key>alpha7</key> + <value>1.0</value> </param> <param> - <key>alpha6</key> - <value>1.0</value> + <key>color7</key> + <value>"yellow"</value> </param> <param> <key>label7</key> @@ -1745,12 +1708,12 @@ <value>1</value> </param> <param> - <key>color7</key> - <value>"yellow"</value> + <key>alpha8</key> + <value>1.0</value> </param> <param> - <key>alpha7</key> - <value>1.0</value> + <key>color8</key> + <value>"dark red"</value> </param> <param> <key>label8</key> @@ -1761,12 +1724,12 @@ <value>1</value> </param> <param> - <key>color8</key> - <value>"dark red"</value> + <key>alpha9</key> + <value>1.0</value> </param> <param> - <key>alpha8</key> - <value>1.0</value> + <key>color9</key> + <value>"dark green"</value> </param> <param> <key>label9</key> @@ -1777,507 +1740,743 @@ <value>1</value> </param> <param> - <key>color9</key> - <value>"dark green"</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> - <key>alpha9</key> - <value>1.0</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>label10</key> - <value></value> + <key>name</key> + <value>FFT Plot</value> </param> <param> - <key>width10</key> + <key>nconnections</key> <value>1</value> </param> <param> - <key>color10</key> - <value>"dark blue"</value> + <key>showports</key> + <value>True</value> </param> <param> - <key>alpha10</key> - <value>1.0</value> + <key>freqhalf</key> + <value>True</value> </param> <param> - <key>alias</key> - <value></value> + <key>tr_chan</key> + <value>0</value> </param> <param> - <key>affinity</key> - <value></value> + <key>tr_level</key> + <value>0.0</value> </param> <param> - <key>_coordinate</key> - <value>(966, 841)</value> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>tr_tag</key> + <value>""</value> </param> - </block> - <block> - <key>qtgui_time_sink_x</key> <param> - <key>id</key> - <value>qtgui_time_sink_x_0</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>update_time</key> + <value>0.10</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> </param> <param> - <key>name</key> - <value>Scope Plot</value> + <key>label</key> + <value>Relative Gain</value> </param> <param> - <key>size</key> - <value>1024</value> + <key>ymax</key> + <value>10</value> </param> <param> - <key>srate</key> - <value>samp_rate</value> + <key>ymin</key> + <value>-140</value> </param> <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> <key>autoscale</key> <value>True</value> </param> <param> - <key>ymin</key> - <value>-1</value> + <key>axislabels</key> + <value>True</value> </param> <param> - <key>ymax</key> - <value>1</value> + <key>alias</key> + <value></value> </param> <param> - <key>nconnections</key> - <value>1</value> + <key>comment</key> + <value></value> </param> <param> - <key>update_time</key> - <value>0.10</value> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> </param> <param> <key>entags</key> <value>True</value> </param> <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 671)</value> + </param> + <param> <key>gui_hint</key> <value></value> </param> <param> - <key>tr_mode</key> - <value>qtgui.TRIG_MODE_FREE</value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>tr_slope</key> - <value>qtgui.TRIG_SLOPE_POS</value> + <key>grid</key> + <value>False</value> </param> <param> - <key>tr_level</key> - <value>0.0</value> + <key>id</key> + <value>qtgui_time_sink_x_0</value> </param> <param> - <key>tr_delay</key> - <value>0</value> + <key>legend</key> + <value>True</value> </param> <param> - <key>tr_chan</key> - <value>0</value> + <key>alpha1</key> + <value>1.0</value> </param> <param> - <key>tr_tag</key> - <value>""</value> + <key>color1</key> + <value>"blue"</value> </param> <param> <key>label1</key> <value>Scope Plot</value> </param> <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> <key>width1</key> <value>1</value> </param> <param> - <key>color1</key> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> <value>"blue"</value> </param> <param> - <key>style1</key> - <value>1</value> + <key>label10</key> + <value></value> </param> <param> - <key>marker1</key> + <key>marker10</key> <value>-1</value> </param> <param> - <key>alpha1</key> - <value>1.0</value> + <key>style10</key> + <value>1</value> </param> <param> - <key>label2</key> - <value></value> + <key>width10</key> + <value>1</value> </param> <param> - <key>width2</key> - <value>1</value> + <key>alpha2</key> + <value>1.0</value> </param> <param> <key>color2</key> <value>"red"</value> </param> <param> - <key>style2</key> - <value>1</value> + <key>label2</key> + <value></value> </param> <param> <key>marker2</key> <value>-1</value> </param> <param> - <key>alpha2</key> - <value>1.0</value> + <key>style2</key> + <value>1</value> </param> <param> - <key>label3</key> - <value></value> + <key>width2</key> + <value>1</value> </param> <param> - <key>width3</key> - <value>1</value> + <key>alpha3</key> + <value>1.0</value> </param> <param> <key>color3</key> <value>"green"</value> </param> <param> - <key>style3</key> - <value>1</value> + <key>label3</key> + <value></value> </param> <param> <key>marker3</key> <value>-1</value> </param> <param> - <key>alpha3</key> - <value>1.0</value> + <key>style3</key> + <value>1</value> </param> <param> - <key>label4</key> - <value></value> + <key>width3</key> + <value>1</value> </param> <param> - <key>width4</key> - <value>1</value> + <key>alpha4</key> + <value>1.0</value> </param> <param> <key>color4</key> <value>"black"</value> </param> <param> - <key>style4</key> - <value>1</value> + <key>label4</key> + <value></value> </param> <param> <key>marker4</key> <value>-1</value> </param> <param> - <key>alpha4</key> - <value>1.0</value> + <key>style4</key> + <value>1</value> </param> <param> - <key>label5</key> - <value></value> + <key>width4</key> + <value>1</value> </param> <param> - <key>width5</key> - <value>1</value> + <key>alpha5</key> + <value>1.0</value> </param> <param> <key>color5</key> <value>"cyan"</value> </param> <param> - <key>style5</key> - <value>1</value> + <key>label5</key> + <value></value> </param> <param> <key>marker5</key> <value>-1</value> </param> <param> - <key>alpha5</key> - <value>1.0</value> + <key>style5</key> + <value>1</value> </param> <param> - <key>label6</key> - <value></value> + <key>width5</key> + <value>1</value> </param> <param> - <key>width6</key> - <value>1</value> + <key>alpha6</key> + <value>1.0</value> </param> <param> <key>color6</key> <value>"magenta"</value> </param> <param> - <key>style6</key> - <value>1</value> + <key>label6</key> + <value></value> </param> <param> <key>marker6</key> <value>-1</value> </param> <param> - <key>alpha6</key> - <value>1.0</value> + <key>style6</key> + <value>1</value> </param> <param> - <key>label7</key> - <value></value> + <key>width6</key> + <value>1</value> </param> <param> - <key>width7</key> - <value>1</value> + <key>alpha7</key> + <value>1.0</value> </param> <param> <key>color7</key> <value>"yellow"</value> </param> <param> - <key>style7</key> - <value>1</value> + <key>label7</key> + <value></value> </param> <param> <key>marker7</key> <value>-1</value> </param> <param> - <key>alpha7</key> - <value>1.0</value> + <key>style7</key> + <value>1</value> </param> <param> - <key>label8</key> - <value></value> + <key>width7</key> + <value>1</value> </param> <param> - <key>width8</key> - <value>1</value> + <key>alpha8</key> + <value>1.0</value> </param> <param> <key>color8</key> <value>"dark red"</value> </param> <param> - <key>style8</key> - <value>1</value> + <key>label8</key> + <value></value> </param> <param> <key>marker8</key> <value>-1</value> </param> <param> - <key>alpha8</key> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> <value>1.0</value> </param> <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> <key>label9</key> <value></value> </param> <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> <key>width9</key> <value>1</value> </param> <param> - <key>color9</key> - <value>"dark green"</value> + <key>name</key> + <value>Scope Plot</value> </param> <param> - <key>style9</key> + <key>nconnections</key> <value>1</value> </param> <param> - <key>marker9</key> - <value>-1</value> + <key>size</key> + <value>1024</value> </param> <param> - <key>alpha9</key> - <value>1.0</value> + <key>srate</key> + <value>samp_rate</value> </param> <param> - <key>label10</key> - <value></value> + <key>tr_chan</key> + <value>0</value> </param> <param> - <key>width10</key> - <value>1</value> + <key>tr_delay</key> + <value>0</value> </param> <param> - <key>color10</key> - <value>"blue"</value> + <key>tr_level</key> + <value>0.0</value> </param> <param> - <key>style10</key> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> <value>1</value> </param> <param> - <key>marker10</key> + <key>ymin</key> <value>-1</value> </param> + </block> + <block> + <key>virtual_sink</key> <param> - <key>alpha10</key> - <value>1.0</value> + <key>comment</key> + <value></value> </param> <param> - <key>alias</key> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(856, 524)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>virtual_sink_0</value> + </param> + <param> + <key>stream_id</key> + <value>Time Domain</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> <value></value> </param> <param> - <key>affinity</key> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(856, 252)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>virtual_sink_0_0</value> + </param> + <param> + <key>stream_id</key> + <value>Payload Bits</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> <value></value> </param> <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> <key>_coordinate</key> - <value>(962, 714)</value> + <value>(744, 388)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> + <param> + <key>id</key> + <value>virtual_sink_0_0_0</value> + </param> + <param> + <key>stream_id</key> + <value>Pre-OFDM</value> + </param> </block> <block> - <key>options</key> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 620)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> <param> <key>id</key> - <value>tx_ofdm</value> + <value>virtual_sink_1</value> + </param> + <param> + <key>stream_id</key> + <value>Tx Signal</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>title</key> - <value>OFDM Tx</value> + <key>_coordinate</key> + <value>(0, 324)</value> </param> <param> - <key>author</key> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>virtual_source_0</value> + </param> + <param> + <key>stream_id</key> + <value>Header Bits</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> <value></value> </param> <param> - <key>description</key> - <value>Example of an OFDM Transmitter</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>window_size</key> - <value>1280, 1024</value> + <key>_coordinate</key> + <value>(0, 404)</value> </param> <param> - <key>generate_options</key> - <value>qt_gui</value> + <key>_rotation</key> + <value>0</value> </param> <param> - <key>category</key> - <value>Custom</value> + <key>id</key> + <value>virtual_source_0_0</value> </param> <param> - <key>run_options</key> - <value>run</value> + <key>stream_id</key> + <value>Payload Bits</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> </param> <param> - <key>run</key> + <key>_enabled</key> <value>True</value> </param> <param> - <key>max_nouts</key> + <key>_coordinate</key> + <value>(0, 524)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> <param> - <key>realtime_scheduling</key> + <key>id</key> + <value>virtual_source_0_0_0</value> + </param> + <param> + <key>stream_id</key> + <value>Pre-OFDM</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> <value></value> </param> <param> - <key>alias</key> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(0, 692)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>virtual_source_0_0_0_0</value> + </param> + <param> + <key>stream_id</key> + <value>Time Domain</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> <value></value> </param> <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> <key>_coordinate</key> - <value>(1, 0)</value> + <value>(0, 836)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> + <param> + <key>id</key> + <value>virtual_source_1</value> + </param> + <param> + <key>stream_id</key> + <value>Tx Signal</value> + </param> </block> <connection> - <source_block_id>blocks_tagged_stream_mux_0</source_block_id> - <sink_block_id>virtual_sink_0_0_0</sink_block_id> + <source_block_id>analog_random_source_x_0</source_block_id> + <sink_block_id>blocks_stream_to_tagged_stream_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>virtual_source_0_0</source_block_id> - <sink_block_id>digital_chunks_to_symbols_xx_0_0</sink_block_id> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>blocks_tag_gate_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>virtual_source_0</source_block_id> - <sink_block_id>digital_chunks_to_symbols_xx_0</sink_block_id> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>virtual_sink_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_chunks_to_symbols_xx_0_0</source_block_id> - <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>header_bits</sink_block_id> <source_key>0</source_key> - <sink_key>1</sink_key> + <sink_key>0</sink_key> </connection> <connection> - <source_block_id>virtual_source_0_0_0_0</source_block_id> - <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_block_id>blocks_stream_to_tagged_stream_0</source_block_id> + <sink_block_id>digital_crc32_bb_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>virtual_source_0_0_0</source_block_id> - <sink_block_id>digital_ofdm_carrier_allocator_cvc_0</sink_block_id> + <source_block_id>blocks_tag_gate_0</source_block_id> + <sink_block_id>blocks_throttle_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_ofdm_carrier_allocator_cvc_0</source_block_id> - <sink_block_id>fft_vxx_0</sink_block_id> + <source_block_id>blocks_tagged_stream_mux_0</source_block_id> + <sink_block_id>virtual_sink_0_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>fft_vxx_0</source_block_id> - <sink_block_id>digital_ofdm_cyclic_prefixer_0</sink_block_id> + <source_block_id>blocks_throttle_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_ofdm_cyclic_prefixer_0</source_block_id> - <sink_block_id>virtual_sink_0</sink_block_id> + <source_block_id>blocks_throttle_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_multiply_const_vxx_0</source_block_id> - <sink_block_id>blocks_tag_gate_0</sink_block_id> + <source_block_id>blocks_throttle_0</source_block_id> + <sink_block_id>virtual_sink_1</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_tag_gate_0</source_block_id> - <sink_block_id>blocks_throttle_0</sink_block_id> + <source_block_id>channels_channel_model_0</source_block_id> + <sink_block_id>digital_ofdm_rx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> @@ -2288,74 +2487,80 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>analog_random_source_x_0</source_block_id> - <sink_block_id>blocks_stream_to_tagged_stream_0</sink_block_id> + <source_block_id>digital_chunks_to_symbols_xx_0_0</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> <source_key>0</source_key> - <sink_key>0</sink_key> + <sink_key>1</sink_key> </connection> <connection> - <source_block_id>blocks_stream_to_tagged_stream_0</source_block_id> - <sink_block_id>digital_crc32_bb_0</sink_block_id> + <source_block_id>digital_crc32_bb_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>digital_crc32_bb_0</source_block_id> - <sink_block_id>digital_packet_headergenerator_bb_0</sink_block_id> + <sink_block_id>digital_protocol_formatter_bb_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_crc32_bb_0</source_block_id> - <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> + <source_block_id>digital_ofdm_carrier_allocator_cvc_0</source_block_id> + <sink_block_id>fft_vxx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_packet_headergenerator_bb_0</source_block_id> - <sink_block_id>header_bits</sink_block_id> + <source_block_id>digital_ofdm_cyclic_prefixer_0</source_block_id> + <sink_block_id>virtual_sink_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_repack_bits_bb_0</source_block_id> - <sink_block_id>virtual_sink_0_0</sink_block_id> + <source_block_id>digital_ofdm_rx_0</source_block_id> + <sink_block_id>blocks_tag_debug_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_throttle_0</source_block_id> - <sink_block_id>virtual_sink_1</sink_block_id> + <source_block_id>digital_protocol_formatter_bb_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>virtual_source_1</source_block_id> - <sink_block_id>channels_channel_model_0</sink_block_id> + <source_block_id>fft_vxx_0</source_block_id> + <sink_block_id>digital_ofdm_cyclic_prefixer_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>channels_channel_model_0</source_block_id> - <sink_block_id>digital_ofdm_rx_0</sink_block_id> + <source_block_id>virtual_source_0</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_ofdm_rx_0</source_block_id> - <sink_block_id>blocks_tag_debug_0</sink_block_id> + <source_block_id>virtual_source_0_0</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_throttle_0</source_block_id> - <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_block_id>virtual_source_0_0_0</source_block_id> + <sink_block_id>digital_ofdm_carrier_allocator_cvc_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_throttle_0</source_block_id> - <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_block_id>virtual_source_0_0_0_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>virtual_source_1</source_block_id> + <sink_block_id>channels_channel_model_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-digital/examples/packet/README b/gr-digital/examples/packet/README new file mode 100644 index 0000000000..6051c11106 --- /dev/null +++ b/gr-digital/examples/packet/README @@ -0,0 +1,3 @@ +See the Packet Communications page in the GNU Radio manual. + +http://gnuradio.org/doc/doxygen diff --git a/gr-digital/examples/packet/burst_tagger.grc b/gr-digital/examples/packet/burst_tagger.grc new file mode 100644 index 0000000000..28edee1a55 --- /dev/null +++ b/gr-digital/examples/packet/burst_tagger.grc @@ -0,0 +1,1160 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Tue Apr 5 13:57:36 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>top_block</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </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>(168, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + </block> + <block> + <key>blocks_stream_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(432, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_stream_to_tagged_stream_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>"packet_len"</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>packet_len</key> + <value>16*10</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_throttle</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(248, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_throttle_0</value> + </param> + <param> + <key>ignoretag</key> + <value>True</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_vector_source_x</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_vector_source_x_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>tags</key> + <value>[]</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>vector</key> + <value>[1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1]</value> + </param> + </block> + <block> + <key>digital_burst_shaper_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(696, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_burst_shaper_xx_0</value> + </param> + <param> + <key>insert_phasing</key> + <value>True</value> + </param> + <param> + <key>length_tag_name</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>post_padding</key> + <value>20</value> + </param> + <param> + <key>pre_padding</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>window</key> + <value>firdes.window(firdes.WIN_HANN, 50, 0)</value> + </param> + </block> + <block> + <key>digital_burst_shaper_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(696, 203)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_burst_shaper_xx_0_0</value> + </param> + <param> + <key>insert_phasing</key> + <value>False</value> + </param> + <param> + <key>length_tag_name</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>post_padding</key> + <value>20</value> + </param> + <param> + <key>pre_padding</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>window</key> + <value>firdes.window(firdes.WIN_HANN, 50, 0)</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(968, 83)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>With Phasing Symbols</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>1.5</value> + </param> + <param> + <key>ymin</key> + <value>-1.5</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(968, 211)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>Without Phase Symbols</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>1.5</value> + </param> + <param> + <key>ymin</key> + <value>-1.5</value> + </param> + </block> + <connection> + <source_block_id>blocks_stream_to_tagged_stream_0</source_block_id> + <sink_block_id>digital_burst_shaper_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_stream_to_tagged_stream_0</source_block_id> + <sink_block_id>digital_burst_shaper_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_throttle_0</source_block_id> + <sink_block_id>blocks_stream_to_tagged_stream_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_vector_source_x_0</source_block_id> + <sink_block_id>blocks_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_burst_shaper_xx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_burst_shaper_xx_0_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/example_corr_est.grc b/gr-digital/examples/packet/example_corr_est.grc new file mode 100644 index 0000000000..ca07ce1cad --- /dev/null +++ b/gr-digital/examples/packet/example_corr_est.grc @@ -0,0 +1,2530 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Tue Apr 5 13:57:36 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>example_corr_est</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </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>(264, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>ac</value> + </param> + <param> + <key>value</key> + <value>map(lambda x: int(x), list(digital.packet_utils.default_access_code))</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>(504, 579)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>ac_hex</value> + </param> + <param> + <key>value</key> + <value>[0xac, 0xdd, 0xa4, 0xe2, 0xf2, 0x8c, 0x20, 0xfc]</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>(584, 515)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(768, 515)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>filt_delay</value> + </param> + <param> + <key>value</key> + <value>1+(len(rrc_taps)-1)/2</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 563)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>freq_off</value> + </param> + <param> + <key>label</key> + <value>Freq. Off.</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>-0.25</value> + </param> + <param> + <key>step</key> + <value>0.0001</value> + </param> + <param> + <key>stop</key> + <value>0.25</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(936, 243)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</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>(672, 515)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mark_delay</value> + </param> + <param> + <key>value</key> + <value>38</value> + </param> + </block> + <block> + <key>variable_modulate_vector</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>data</key> + <value>ac_hex</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>taps</key> + <value>[1]</value> + </param> + <param> + <key>_coordinate</key> + <value>(936, 371)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>modulated_sync_word</value> + </param> + <param> + <key>mod</key> + <value>rxmod</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>-50</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>noise</value> + </param> + <param> + <key>label</key> + <value>Noise Power</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>-50</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>stop</key> + <value>10</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>10</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>path_loss</value> + </param> + <param> + <key>label</key> + <value>Path Loss (dB)</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>5</value> + </param> + <param> + <key>stop</key> + <value>140</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(1096, 243)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>sps</value> + </param> + <param> + <key>id</key> + <value>rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>11*sps</value> + </param> + <param> + <key>samp_rate</key> + <value>sps</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(304, 515)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>id</key> + <value>rx_psf_taps</value> + </param> + <param> + <key>ntaps</key> + <value>15*sps</value> + </param> + <param> + <key>samp_rate</key> + <value>sps</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</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>(672, 579)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rxmod</value> + </param> + <param> + <key>value</key> + <value>digital.generic_mod(hdr_const, False, sps, True, eb, False, False)</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>(168, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>value</key> + <value>10e3</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>(512, 515)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>sps</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1.0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 563)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>time_off</value> + </param> + <param> + <key>label</key> + <value>Time Off.</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0.9999</value> + </param> + <param> + <key>step</key> + <value>0.00001</value> + </param> + <param> + <key>stop</key> + <value>1.0001</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>blocks_add_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>-1</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(368, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_add_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_complex_to_mag_squared</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(528, 393)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_complex_to_mag_squared_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>2</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_stream_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(664, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_stream_to_tagged_stream_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>"packet_len"</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>packet_len</key> + <value>len(ac)+16</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_throttle</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_throttle_0</value> + </param> + <param> + <key>ignoretag</key> + <value>True</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_vector_source_x</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_vector_source_x_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>tags</key> + <value>[]</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>vector</key> + <value>[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0] + ac</value> + </param> + </block> + <block> + <key>channels_channel_model</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>block_tags</key> + <value>True</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>epsilon</key> + <value>time_off</value> + </param> + <param> + <key>freq_offset</key> + <value>freq_off</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 203)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>channels_channel_model_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>noise_voltage</key> + <value>sps * 10.0**(noise/10.0)</value> + </param> + <param> + <key>seed</key> + <value>0</value> + </param> + <param> + <key>taps</key> + <value>10.0**(-path_loss/20.0)</value> + </param> + </block> + <block> + <key>digital_corr_est_cc</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(264, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_corr_est_cc_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + <param> + <key>scale_factor</key> + <value>1.0</value> + </param> + <param> + <key>symbols</key> + <value>modulated_sync_word</value> + </param> + <param> + <key>mark_delay</key> + <value>mark_delay</value> + </param> + <param> + <key>threshold</key> + <value>0.999</value> + </param> + </block> + <block> + <key>fir_filter_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(528, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>fir_filter_xxx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samp_delay</key> + <value>0</value> + </param> + <param> + <key>taps</key> + <value>rx_psf_taps</value> + </param> + <param> + <key>type</key> + <value>ccc</value> + </param> + </block> + <block> + <key>interp_fir_filter_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(896, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>interp_fir_filter_xxx_0</value> + </param> + <param> + <key>interp</key> + <value>sps</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samp_delay</key> + <value>filt_delay</value> + </param> + <param> + <key>taps</key> + <value>rrc_taps</value> + </param> + <param> + <key>type</key> + <value>ccc</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(720, 211)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,0,1,2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>corr_start</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>1.5</value> + </param> + <param> + <key>ymin</key> + <value>-1.5</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(528, 299)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>corr_est</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>100</value> + </param> + <param> + <key>ymin</key> + <value>-100</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(720, 371)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>corr_est</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>4000</value> + </param> + <param> + <key>ymin</key> + <value>-100</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(296, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab0</value> + </param> + <param> + <key>label0</key> + <value>Corr</value> + </param> + <param> + <key>label1</key> + <value>|Corr|^2</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Tab 2</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <connection> + <source_block_id>blocks_add_const_vxx_0</source_block_id> + <sink_block_id>blocks_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_complex_to_mag_squared_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>blocks_add_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_stream_to_tagged_stream_0</source_block_id> + <sink_block_id>interp_fir_filter_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_throttle_0</source_block_id> + <sink_block_id>blocks_stream_to_tagged_stream_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_vector_source_x_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>channels_channel_model_0</source_block_id> + <sink_block_id>digital_corr_est_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>blocks_complex_to_mag_squared_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>fir_filter_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>fir_filter_xxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>interp_fir_filter_xxx_0</source_block_id> + <sink_block_id>channels_channel_model_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/example_corr_est_and_clock_sync.grc b/gr-digital/examples/packet/example_corr_est_and_clock_sync.grc new file mode 100644 index 0000000000..dfd19594da --- /dev/null +++ b/gr-digital/examples/packet/example_corr_est_and_clock_sync.grc @@ -0,0 +1,3068 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Tue Apr 5 13:57:36 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>example_corr_est_and_clock_sync</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </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>(264, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>ac</value> + </param> + <param> + <key>value</key> + <value>map(lambda x: int(x), list(digital.packet_utils.default_access_code))</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>(504, 595)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>ac_hex</value> + </param> + <param> + <key>value</key> + <value>[0xac, 0xdd, 0xa4, 0xe2, 0xf2, 0x8c, 0x20, 0xfc]</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>(584, 531)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(768, 531)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>filt_delay</value> + </param> + <param> + <key>value</key> + <value>1+(len(rrc_taps)-1)/2</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 563)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>freq_off</value> + </param> + <param> + <key>label</key> + <value>Freq. Off.</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>-0.25</value> + </param> + <param> + <key>step</key> + <value>0.0001</value> + </param> + <param> + <key>stop</key> + <value>0.25</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 523)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</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>(672, 531)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mark_delay</value> + </param> + <param> + <key>value</key> + <value>mark_delays[sps]</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value>Tag Marking Delay for +Corr Est block, indexed +by sps. + +Found empirically.</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 675)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mark_delays</value> + </param> + <param> + <key>value</key> + <value>[0, 0, 34, 56, 87, 119]</value> + </param> + </block> + <block> + <key>variable_modulate_vector</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>data</key> + <value>ac_hex</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>taps</key> + <value>[1]</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 651)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>modulated_sync_word</value> + </param> + <param> + <key>mod</key> + <value>rxmod</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>(1104, 451)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>-50</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>noise</value> + </param> + <param> + <key>label</key> + <value>Noise Power</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>-50</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>stop</key> + <value>10</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>10</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>path_loss</value> + </param> + <param> + <key>label</key> + <value>Path Loss (dB)</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>5</value> + </param> + <param> + <key>stop</key> + <value>140</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(1120, 523)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>sps</value> + </param> + <param> + <key>id</key> + <value>rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>11*sps</value> + </param> + <param> + <key>samp_rate</key> + <value>sps</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 387)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>rx_psf_taps</value> + </param> + <param> + <key>ntaps</key> + <value>11*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>sps*nfilts</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</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>(672, 595)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rxmod</value> + </param> + <param> + <key>value</key> + <value>digital.generic_mod(hdr_const, False, sps, True, eb, False, False)</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>(168, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>value</key> + <value>10e3</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>(512, 531)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>sps</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1.0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 563)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>time_off</value> + </param> + <param> + <key>label</key> + <value>Time Off.</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0.9999</value> + </param> + <param> + <key>step</key> + <value>0.00001</value> + </param> + <param> + <key>stop</key> + <value>1.0001</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>blocks_add_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>-1</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(368, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_add_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_complex_to_mag_squared</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(528, 457)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_complex_to_mag_squared_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>2</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_stream_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(664, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_stream_to_tagged_stream_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>"packet_len"</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>packet_len</key> + <value>len(ac)+16</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_throttle</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_throttle_0</value> + </param> + <param> + <key>ignoretag</key> + <value>True</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_vector_source_x</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_vector_source_x_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>tags</key> + <value>[]</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>vector</key> + <value>[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0] + ac</value> + </param> + </block> + <block> + <key>channels_channel_model</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>block_tags</key> + <value>True</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>epsilon</key> + <value>time_off</value> + </param> + <param> + <key>freq_offset</key> + <value>freq_off</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 203)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>channels_channel_model_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>noise_voltage</key> + <value>sps * 10.0**(noise/10.0)</value> + </param> + <param> + <key>seed</key> + <value>0</value> + </param> + <param> + <key>taps</key> + <value>10.0**(-path_loss/20.0)</value> + </param> + </block> + <block> + <key>digital_corr_est_cc</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(264, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_corr_est_cc_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + <param> + <key>scale_factor</key> + <value>1.0</value> + </param> + <param> + <key>symbols</key> + <value>modulated_sync_word</value> + </param> + <param> + <key>mark_delay</key> + <value>mark_delay</value> + </param> + <param> + <key>threshold</key> + <value>0.999</value> + </param> + </block> + <block> + <key>digital_pfb_clock_sync_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>filter_size</key> + <value>nfilts</value> + </param> + <param> + <key>_coordinate</key> + <value>(520, 203)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_pfb_clock_sync_xxx_0</value> + </param> + <param> + <key>init_phase</key> + <value>nfilts/2</value> + </param> + <param> + <key>loop_bw</key> + <value>6.28/400.0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>max_dev</key> + <value>1.5</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>osps</key> + <value>1</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + <param> + <key>taps</key> + <value>rx_psf_taps</value> + </param> + <param> + <key>type</key> + <value>ccf</value> + </param> + </block> + <block> + <key>interp_fir_filter_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(896, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>interp_fir_filter_xxx_0</value> + </param> + <param> + <key>interp</key> + <value>sps</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samp_delay</key> + <value>filt_delay</value> + </param> + <param> + <key>taps</key> + <value>rrc_taps</value> + </param> + <param> + <key>type</key> + <value>ccc</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(832, 291)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(832, 211)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>200</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>corr_start</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>1.5</value> + </param> + <param> + <key>ymin</key> + <value>-1.5</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(528, 363)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>corr_est</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>100</value> + </param> + <param> + <key>ymin</key> + <value>-100</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(720, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>corr_est</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>4000</value> + </param> + <param> + <key>ymin</key> + <value>-100</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(296, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab0</value> + </param> + <param> + <key>label0</key> + <value>Corr</value> + </param> + <param> + <key>label1</key> + <value>|Corr|^2</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Tab 2</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(296, 515)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,0,1,2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab1</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Const.</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Tab 2</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <connection> + <source_block_id>blocks_add_const_vxx_0</source_block_id> + <sink_block_id>blocks_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_complex_to_mag_squared_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>blocks_add_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_stream_to_tagged_stream_0</source_block_id> + <sink_block_id>interp_fir_filter_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_throttle_0</source_block_id> + <sink_block_id>blocks_stream_to_tagged_stream_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_vector_source_x_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>channels_channel_model_0</source_block_id> + <sink_block_id>digital_corr_est_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>blocks_complex_to_mag_squared_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>digital_pfb_clock_sync_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>interp_fir_filter_xxx_0</source_block_id> + <sink_block_id>channels_channel_model_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/example_corr_est_and_phase_sync.grc b/gr-digital/examples/packet/example_corr_est_and_phase_sync.grc new file mode 100644 index 0000000000..1e9bbba7ac --- /dev/null +++ b/gr-digital/examples/packet/example_corr_est_and_phase_sync.grc @@ -0,0 +1,3474 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Tue Apr 5 13:57:36 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>example_corr_est_and_phase_sync</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </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>(280, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>ac</value> + </param> + <param> + <key>value</key> + <value>map(lambda x: int(x), list(digital.packet_utils.default_access_code))</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>(504, 595)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>ac_hex</value> + </param> + <param> + <key>value</key> + <value>[0xac, 0xdd, 0xa4, 0xe2, 0xf2, 0x8c, 0x20, 0xfc]</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>(584, 531)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(768, 531)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>filt_delay</value> + </param> + <param> + <key>value</key> + <value>1+(len(rrc_taps)-1)/2</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 563)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>freq_off</value> + </param> + <param> + <key>label</key> + <value>Freq. Off.</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>-0.25</value> + </param> + <param> + <key>step</key> + <value>0.0001</value> + </param> + <param> + <key>stop</key> + <value>0.25</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 523)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</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>(672, 531)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mark_delay</value> + </param> + <param> + <key>value</key> + <value>mark_delays[sps]</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value>Tag Marking Delay for +Corr Est block, indexed +by sps. + +Found empirically.</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 675)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mark_delays</value> + </param> + <param> + <key>value</key> + <value>[0, 0, 34, 56, 87, 119]</value> + </param> + </block> + <block> + <key>variable_modulate_vector</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>data</key> + <value>ac_hex</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>taps</key> + <value>[1]</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 651)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>modulated_sync_word</value> + </param> + <param> + <key>mod</key> + <value>rxmod</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>(1104, 451)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>-50</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>noise</value> + </param> + <param> + <key>label</key> + <value>Noise Power</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>-50</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>stop</key> + <value>10</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>10</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>path_loss</value> + </param> + <param> + <key>label</key> + <value>Path Loss (dB)</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>5</value> + </param> + <param> + <key>stop</key> + <value>140</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(1120, 523)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>sps</value> + </param> + <param> + <key>id</key> + <value>rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>11*sps</value> + </param> + <param> + <key>samp_rate</key> + <value>sps</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 387)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>rx_psf_taps</value> + </param> + <param> + <key>ntaps</key> + <value>11*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>sps*nfilts</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</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>(672, 595)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rxmod</value> + </param> + <param> + <key>value</key> + <value>digital.generic_mod(hdr_const, False, sps, True, eb, False, False)</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>(184, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>value</key> + <value>10e3</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>(512, 531)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>sps</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1.0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 563)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>time_off</value> + </param> + <param> + <key>label</key> + <value>Time Off.</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0.9999</value> + </param> + <param> + <key>step</key> + <value>0.00001</value> + </param> + <param> + <key>stop</key> + <value>1.0001</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>blocks_add_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>-1</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(368, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_add_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_complex_to_mag_squared</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(528, 457)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_complex_to_mag_squared_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>2</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_stream_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(664, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_stream_to_tagged_stream_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>"packet_len"</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>packet_len</key> + <value>len(ac)+16</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_throttle</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_throttle_0</value> + </param> + <param> + <key>ignoretag</key> + <value>True</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_vector_source_x</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_vector_source_x_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>tags</key> + <value>[]</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>vector</key> + <value>[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0] + ac</value> + </param> + </block> + <block> + <key>channels_channel_model</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>block_tags</key> + <value>True</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>epsilon</key> + <value>time_off</value> + </param> + <param> + <key>freq_offset</key> + <value>freq_off</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 203)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>channels_channel_model_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>noise_voltage</key> + <value>sps * 10.0**(noise/10.0)</value> + </param> + <param> + <key>seed</key> + <value>0</value> + </param> + <param> + <key>taps</key> + <value>10.0**(-path_loss/20.0)</value> + </param> + </block> + <block> + <key>digital_corr_est_cc</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(264, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_corr_est_cc_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + <param> + <key>scale_factor</key> + <value>1.0</value> + </param> + <param> + <key>symbols</key> + <value>modulated_sync_word</value> + </param> + <param> + <key>mark_delay</key> + <value>mark_delay</value> + </param> + <param> + <key>threshold</key> + <value>0.999</value> + </param> + </block> + <block> + <key>digital_costas_loop_cc</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 209)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_costas_loop_cc_0_0</value> + </param> + <param> + <key>w</key> + <value>6.28/100.0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>order</key> + <value>hdr_const.arity()</value> + </param> + <param> + <key>use_snr</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_pfb_clock_sync_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>filter_size</key> + <value>nfilts</value> + </param> + <param> + <key>_coordinate</key> + <value>(520, 203)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_pfb_clock_sync_xxx_0</value> + </param> + <param> + <key>init_phase</key> + <value>nfilts/2</value> + </param> + <param> + <key>loop_bw</key> + <value>6.28/400.0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>max_dev</key> + <value>1.5</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>osps</key> + <value>1</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + <param> + <key>taps</key> + <value>rx_psf_taps</value> + </param> + <param> + <key>type</key> + <value>ccf</value> + </param> + </block> + <block> + <key>interp_fir_filter_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(896, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>interp_fir_filter_xxx_0</value> + </param> + <param> + <key>interp</key> + <value>sps</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samp_delay</key> + <value>filt_delay</value> + </param> + <param> + <key>taps</key> + <value>rrc_taps</value> + </param> + <param> + <key>type</key> + <value>ccc</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1000, 291)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@1: 0,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 291)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@1: 0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1000, 211)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>200</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>corr_start</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>1.5</value> + </param> + <param> + <key>ymin</key> + <value>-1.5</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(528, 363)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>corr_est</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>100</value> + </param> + <param> + <key>ymin</key> + <value>-100</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(720, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>512</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>corr_est</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>4000</value> + </param> + <param> + <key>ymin</key> + <value>-100</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(296, 435)</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab0</value> + </param> + <param> + <key>label0</key> + <value>Corr</value> + </param> + <param> + <key>label1</key> + <value>|Corr|^2</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Tab 2</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(296, 515)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,0,1,2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab1</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Const.</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Tab 2</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <connection> + <source_block_id>blocks_add_const_vxx_0</source_block_id> + <sink_block_id>blocks_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_complex_to_mag_squared_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>blocks_add_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_stream_to_tagged_stream_0</source_block_id> + <sink_block_id>interp_fir_filter_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_throttle_0</source_block_id> + <sink_block_id>blocks_stream_to_tagged_stream_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_vector_source_x_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>channels_channel_model_0</source_block_id> + <sink_block_id>digital_corr_est_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>blocks_complex_to_mag_squared_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>digital_pfb_clock_sync_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_costas_loop_cc_0_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_costas_loop_cc_0_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> + <sink_block_id>digital_costas_loop_cc_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>interp_fir_filter_xxx_0</source_block_id> + <sink_block_id>channels_channel_model_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/formatter_crc.grc b/gr-digital/examples/packet/formatter_crc.grc new file mode 100644 index 0000000000..88cd363b9c --- /dev/null +++ b/gr-digital/examples/packet/formatter_crc.grc @@ -0,0 +1,958 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Sun Apr 10 12:10:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>generate_options</key> + <value>no_gui</value> + </param> + <param> + <key>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>formatter_crc</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(168, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_crc(len_key, num_key)</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value>Need another for this path +as the formatters keep state.</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(296, 477)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format_bb</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_crc(len_key, num_key)</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(352, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>len_key</value> + </param> + <param> + <key>value</key> + <value>"packet_len"</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(464, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>num_key</value> + </param> + <param> + <key>value</key> + <value>"packet_num"</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 225)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 105)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0_0</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(992, 425)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0_0_0</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 293)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.PMT_T</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>2000</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(56, 132)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>len_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(64, 420)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>len_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(200, 279)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>50</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>50</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>1</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(288, 125)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>len_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>1</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(544, 413)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>len_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_tag_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>display</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(752, 502)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tag_debug_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>filter</key> + <value>""</value> + </param> + <param> + <key>name</key> + <value></value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(424, 300)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_protocol_formatter_async</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(616, 289)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_formatter_async_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_formatter_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format_bb</value> + </param> + <param> + <key>_coordinate</key> + <value>(296, 413)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_formatter_bb_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>len_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_parser_b</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(496, 132)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_parser_b_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_parser_b</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format_bb</value> + </param> + <param> + <key>_coordinate</key> + <value>(752, 420)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_parser_b_0_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0_0</source_block_id> + <sink_block_id>digital_protocol_formatter_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_1</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>digital_protocol_parser_b_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>blocks_tag_debug_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>digital_protocol_parser_b_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id> + <source_key>out</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>digital_protocol_formatter_async_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>header</source_key> + <sink_key>print_pdu</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_key>header</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_bb_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_parser_b_0</source_block_id> + <sink_block_id>blocks_message_debug_0_0</sink_block_id> + <source_key>info</source_key> + <sink_key>print</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_parser_b_0_0</source_block_id> + <sink_block_id>blocks_message_debug_0_0_0</sink_block_id> + <source_key>info</source_key> + <sink_key>print</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/formatter_ofdm.grc b/gr-digital/examples/packet/formatter_ofdm.grc new file mode 100644 index 0000000000..599fcee66c --- /dev/null +++ b/gr-digital/examples/packet/formatter_ofdm.grc @@ -0,0 +1,1157 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Sun Apr 10 12:10:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>generate_options</key> + <value>no_gui</value> + </param> + <param> + <key>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>formatter_ofdm</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(584, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>frame_key</value> + </param> + <param> + <key>value</key> + <value>"frame_len"</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(168, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_ofdm(occupied_carriers, 1, len_key, frame_key, num_key, header_mod.bits_per_symbol(), payload_mod.bits_per_symbol(), scramble)</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value>Need another for this path +as the formatters keep state.</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(296, 477)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format_bb</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_ofdm(occupied_carriers, 1, len_key, frame_key, num_key, header_mod.bits_per_symbol(), payload_mod.bits_per_symbol(), scramble)</value> + </param> + </block> + <block> + <key>variable_constellation_rect</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>[1, -1]</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(944, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>header_mod</value> + </param> + <param> + <key>imag_sect</key> + <value>2</value> + </param> + <param> + <key>real_sect</key> + <value>2</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>None</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>[0, 1]</value> + </param> + <param> + <key>w_imag_sect</key> + <value>1</value> + </param> + <param> + <key>w_real_sect</key> + <value>1</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(352, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>len_key</value> + </param> + <param> + <key>value</key> + <value>"packet_len"</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(464, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>num_key</value> + </param> + <param> + <key>value</key> + <value>"packet_num"</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>(784, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>occupied_carriers</value> + </param> + <param> + <key>value</key> + <value>(range(-26, -21) + range(-20, -7) + range(-6, 0) + range(1, 7) + range(8, 21) + range(22, 27),)</value> + </param> + </block> + <block> + <key>variable_constellation_rect</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>[-1-1j, -1+1j, 1+1j, 1-1j]</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1128, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>payload_mod</value> + </param> + <param> + <key>imag_sect</key> + <value>2</value> + </param> + <param> + <key>real_sect</key> + <value>2</value> + </param> + <param> + <key>rot_sym</key> + <value>4</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>None</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>[0, 1, 3, 2]</value> + </param> + <param> + <key>w_imag_sect</key> + <value>1</value> + </param> + <param> + <key>w_real_sect</key> + <value>1</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(696, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>scramble</value> + </param> + <param> + <key>value</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 225)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 105)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0_0</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(992, 425)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0_0_0</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 293)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.PMT_T</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>2000</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(56, 132)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>len_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(64, 420)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>len_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(200, 279)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>50</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>50</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>1</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(288, 125)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>len_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>1</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(544, 413)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>len_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_tag_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>display</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(752, 502)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tag_debug_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>filter</key> + <value>""</value> + </param> + <param> + <key>name</key> + <value></value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(424, 300)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_protocol_formatter_async</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(616, 289)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_formatter_async_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_formatter_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format_bb</value> + </param> + <param> + <key>_coordinate</key> + <value>(296, 413)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_formatter_bb_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>len_key</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_parser_b</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(496, 132)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_parser_b_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_parser_b</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format_bb</value> + </param> + <param> + <key>_coordinate</key> + <value>(752, 420)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_parser_b_0_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0_0</source_block_id> + <sink_block_id>digital_protocol_formatter_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_1</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>digital_protocol_parser_b_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>blocks_tag_debug_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>digital_protocol_parser_b_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id> + <source_key>out</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>digital_protocol_formatter_async_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>header</source_key> + <sink_key>print_pdu</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_key>header</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_bb_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_parser_b_0</source_block_id> + <sink_block_id>blocks_message_debug_0_0</sink_block_id> + <source_key>info</source_key> + <sink_key>print</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_parser_b_0_0</source_block_id> + <sink_block_id>blocks_message_debug_0_0_0</sink_block_id> + <source_key>info</source_key> + <sink_key>print</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/packet_loopback_hier.grc b/gr-digital/examples/packet/packet_loopback_hier.grc new file mode 100644 index 0000000000..9af2d46b0f --- /dev/null +++ b/gr-digital/examples/packet/packet_loopback_hier.grc @@ -0,0 +1,4442 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Thu Dec 4 14:34:25 2014</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>2000,2000</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>packet_loopback_hier</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(240, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_HDR</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_4()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(560, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>4</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_4()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1.0</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(72, 547)</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>amp</value> + </param> + <param> + <key>label</key> + <value>Amplitude</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>0.01</value> + </param> + <param> + <key>stop</key> + <value>2</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>1</value> + </param> + <param> + <key>dim2</key> + <value>4</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>state_end</key> + <value>-1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(1152, 635)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</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_TERMINATED</value> + </param> + </block> + <block> + <key>variable_dummy_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 539)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 555)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + <param> + <key>prob</key> + <value>0.5</value> + </param> + </block> + <block> + <key>variable_dummy_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>hdr_format.header_nbits()</value> + </param> + <param> + <key>_coordinate</key> + <value>(1376, 539)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec_hdr</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>hdr_format.header_nbits()</value> + </param> + <param> + <key>_coordinate</key> + <value>(1560, 555)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec_hdr</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + <param> + <key>prob</key> + <value>0.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>(152, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</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>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(1152, 459)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</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_TERMINATED</value> + </param> + </block> + <block> + <key>variable_dummy_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 459)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 459)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + </block> + <block> + <key>variable_dummy_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(1376, 459)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc_hdr</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(1560, 459)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc_hdr</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(984, 275)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>freq_offset</value> + </param> + <param> + <key>label</key> + <value>Freq. Offset</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>-0.5</value> + </param> + <param> + <key>step</key> + <value>0.0001</value> + </param> + <param> + <key>stop</key> + <value>0.5</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(728, 14)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</key> + <value>3</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(728, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_counter(digital.packet_utils.default_access_code, 3, Const_PLD.bits_per_symbol())</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>(1008, 675)</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, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>0.0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(872, 275)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>noise</value> + </param> + <param> + <key>label</key> + <value>Noise Amp</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>0.01</value> + </param> + <param> + <key>stop</key> + <value>5</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>(1056, 739)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>polys</value> + </param> + <param> + <key>value</key> + <value>[109, 79]</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>(1080, 675)</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>(984, 739)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rep</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(1080, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>rx_rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>11*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>nfilts*sps</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</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>sps</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1.0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1096, 275)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,2,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>time_offset</value> + </param> + <param> + <key>label</key> + <value>Time Offset</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0.99</value> + </param> + <param> + <key>step</key> + <value>0.00001</value> + </param> + <param> + <key>stop</key> + <value>1.01</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(944, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>tx_rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>5*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>nfilts</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(544, 321)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0_0_0</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(32, 195)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.intern("TEST")</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>1000</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>amp</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(72, 499)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xFF</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(240, 179)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>2</value> + </param> + <param> + <key>maxsize</key> + <value>200</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>20</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1352, 155)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>chan_data</value> + </param> + <param> + <key>stream_id</key> + <value>Chan Data</value> + </param> + </block> + <block> + <key>channels_channel_model</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>block_tags</key> + <value>True</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>epsilon</key> + <value>time_offset</value> + </param> + <param> + <key>freq_offset</key> + <value>freq_offset</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 147)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>channels_channel_model_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>noise_voltage</key> + <value>noise</value> + </param> + <param> + <key>seed</key> + <value>0</value> + </param> + <param> + <key>taps</key> + <value>1.0</value> + </param> + </block> + <block> + <key>packet_rx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>eb</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(232, 409)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>hdr_dec</key> + <value>dec_hdr</value> + </param> + <param> + <key>hdr_format</key> + <value>hdr_format</value> + </param> + <param> + <key>hdr_const</key> + <value>Const_HDR</value> + </param> + <param> + <key>id</key> + <value>packet_rx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>pld_dec</key> + <value>dec</value> + </param> + <param> + <key>pld_const</key> + <value>Const_PLD</value> + </param> + <param> + <key>psf_taps</key> + <value>rx_rrc_taps</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + </block> + <block> + <key>packet_tx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(496, 163)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>hdr_enc</key> + <value>enc_hdr</value> + </param> + <param> + <key>hdr_format</key> + <value>hdr_format</value> + </param> + <param> + <key>hdr_const</key> + <value>Const_HDR</value> + </param> + <param> + <key>id</key> + <value>packet_tx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>pld_enc</key> + <value>enc</value> + </param> + <param> + <key>pld_const</key> + <value>Const_PLD</value> + </param> + <param> + <key>psf_taps</key> + <value>tx_rrc_taps</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1352, 363)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(544, 419)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>800</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>bw</key> + <value>1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>_coordinate</key> + <value>(1352, 283)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>showports</key> + <value>True</value> + </param> + <param> + <key>freqhalf</key> + <value>True</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>bw</key> + <value>1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>_coordinate</key> + <value>(544, 483)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>showports</key> + <value>True</value> + </param> + <param> + <key>freqhalf</key> + <value>True</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1352, 203)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>2500</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(544, 643)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1_0_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1250</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>50</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>"corr_est"</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Correlation</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>150</value> + </param> + <param> + <key>ymin</key> + <value>-150</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(544, 563)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1_0_0_1</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>3</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>125</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>25</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>"payload symbols"</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1360, 11)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab0</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Freq.</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Const.</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>3</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1224, 11)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,2,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab1</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Freq.</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Const.</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>3</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 427)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>virtual_source_0</value> + </param> + <param> + <key>stream_id</key> + <value>Chan Data</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>packet_rx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>packet_tx_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>channels_channel_model_0</source_block_id> + <sink_block_id>chan_data</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>channels_channel_model_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>channels_channel_model_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>channels_channel_model_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1_0_0_0</sink_block_id> + <source_key>4</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>blocks_message_debug_0_0_0</sink_block_id> + <source_key>pkt out</source_key> + <sink_key>print_pdu</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0_0_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1_0_0_1</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_tx_0</source_block_id> + <sink_block_id>channels_channel_model_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>virtual_source_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/packet_rx.grc b/gr-digital/examples/packet/packet_rx.grc new file mode 100644 index 0000000000..bce0b58442 --- /dev/null +++ b/gr-digital/examples/packet/packet_rx.grc @@ -0,0 +1,1895 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Thu Mar 10 17:25:47 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value></value> + </param> + <param> + <key>category</key> + <value>Packet Operators</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>hb</value> + </param> + <param> + <key>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>packet_rx</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </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>(32, 355)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mark_delay</value> + </param> + <param> + <key>value</key> + <value>mark_delays[sps]</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value>Tag Marking Delay for +Corr Est block, indexed +by sps. + +Found empirically.</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(32, 419)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mark_delays</value> + </param> + <param> + <key>value</key> + <value>[0, 0, 34, 56, 87, 119]</value> + </param> + </block> + <block> + <key>variable_modulate_vector</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>data</key> + <value>preamble</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>taps</key> + <value>[1]</value> + </param> + <param> + <key>_coordinate</key> + <value>(744, 363)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>modulated_sync_word</value> + </param> + <param> + <key>mod</key> + <value>rxmod</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, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(728, 579)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>preamble</value> + </param> + <param> + <key>value</key> + <value>preamble_select[int(1.0/hdr_dec.rate())]</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value>use when header +FEC is Dummy</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(560, 467)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>preamble_dummy</value> + </param> + <param> + <key>value</key> + <value>[0xac, 0xdd, 0xa4, 0xe2, 0xf2, 0x8c, 0x20, 0xfc]</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value>use when header +FEC is Repetition (x3)</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(728, 467)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>preamble_rep</value> + </param> + <param> + <key>value</key> + <value>[0xe3, 0x8f, 0xc0, 0xfc, 0x7f, 0xc7, 0xe3, 0x81, 0xc0, 0xff, 0x80, 0x38, 0xff, 0xf0, 0x38, 0xe0, 0x0f, 0xc0, 0x03, 0x80, 0x00, 0xff, 0xff, 0xc0]</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(560, 579)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>preamble_select</value> + </param> + <param> + <key>value</key> + <value>{1: preamble_dummy, 3: preamble_rep}</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>(560, 395)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rxmod</value> + </param> + <param> + <key>value</key> + <value>digital.generic_mod(hdr_const, False, sps, True, eb, False, False)</value> + </param> + </block> + <block> + <key>blocks_multiply_by_tag_value_cc</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(384, 227)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_by_tag_value_cc_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>tagname</key> + <value>"amp_est"</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_multiply_length</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1600, 345)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tagged_stream_multiply_length_0</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>c</key> + <value>pld_const.bits_per_symbol()</value> + </param> + <param> + <key>lengthtagname</key> + <value>"payload symbols"</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_to_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1136, 451)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tagged_stream_to_pdu_0</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>tag</key> + <value>"payload symbols"</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_constellation_soft_decoder_cf</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>constellation</key> + <value>pld_const</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1368, 339)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_constellation_soft_decoder_cf_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_constellation_soft_decoder_cf</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>constellation</key> + <value>hdr_const</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1368, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_constellation_soft_decoder_cf_0_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_corr_est_cc</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(144, 227)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_corr_est_cc_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + <param> + <key>symbols</key> + <value>modulated_sync_word</value> + </param> + <param> + <key>mark_delay</key> + <value>mark_delay</value> + </param> + <param> + <key>threshold</key> + <value>0.999</value> + </param> + </block> + <block> + <key>digital_costas_loop_cc</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1160, 225)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_costas_loop_cc_0_0</value> + </param> + <param> + <key>w</key> + <value>6.28/200.0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>order</key> + <value>hdr_const.arity()</value> + </param> + <param> + <key>use_snr</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_costas_loop_cc</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1144, 345)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_costas_loop_cc_0_0_0</value> + </param> + <param> + <key>w</key> + <value>6.28/200.0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>order</key> + <value>pld_const.arity()</value> + </param> + <param> + <key>use_snr</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1608, 451)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>True</value> + </param> + </block> + <block> + <key>digital_header_payload_demux</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(888, 227)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>guard_interval</key> + <value>0</value> + </param> + <param> + <key>header_len</key> + <value>(hdr_format.header_nbits() * int(1.0/hdr_dec.rate())) / hdr_const.bits_per_symbol()</value> + </param> + <param> + <key>id</key> + <value>digital_header_payload_demux_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>items_per_symbol</key> + <value>1</value> + </param> + <param> + <key>length_tag_key</key> + <value>"payload symbols"</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>output_symbols</key> + <value>True</value> + </param> + <param> + <key>samp_rate</key> + <value>1</value> + </param> + <param> + <key>special_tags</key> + <value>""</value> + </param> + <param> + <key>timing_tag_key</key> + <value>"rx_time"</value> + </param> + <param> + <key>trigger_tag_key</key> + <value>"time_est"</value> + </param> + </block> + <block> + <key>digital_pfb_clock_sync_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>filter_size</key> + <value>nfilts</value> + </param> + <param> + <key>_coordinate</key> + <value>(592, 187)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_pfb_clock_sync_xxx_0</value> + </param> + <param> + <key>init_phase</key> + <value>nfilts/2</value> + </param> + <param> + <key>loop_bw</key> + <value>6.28/400.0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>max_dev</key> + <value>1.5</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>osps</key> + <value>1</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + <param> + <key>taps</key> + <value>psf_taps</value> + </param> + <param> + <key>type</key> + <value>ccf</value> + </param> + </block> + <block> + <key>digital_protocol_parser_b</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(1024, 124)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_parser_b_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1408, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>label</key> + <value>Filter Rolloff</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value>eng_float</value> + </param> + <param> + <key>value</key> + <value>0.35</value> + </param> + </block> + <block> + <key>fec_async_decoder</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</key> + <value>pld_dec</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1368, 443)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>fec_async_decoder_0</value> + </param> + <param> + <key>mtu</key> + <value>1500*8</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>packed</key> + <value>True</value> + </param> + <param> + <key>rev_pack</key> + <value>False</value> + </param> + </block> + <block> + <key>fec_generic_decoder</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</key> + <value>hdr_dec</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1352, 124)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>fec_generic_decoder_0</value> + </param> + <param> + <key>itype</key> + <value>float</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>otype</key> + <value>byte</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(544, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_const</value> + </param> + <param> + <key>label</key> + <value>Header constellation</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value>digital.constellation_calcdist((digital.psk_2()[0]), (digital.psk_2()[1]), 2, 1).base()</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(192, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_dec</value> + </param> + <param> + <key>label</key> + <value>Header FEC Decoder</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value> fec.dummy_decoder.make(8000)</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(904, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>label</key> + <value>Header Formatter</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value>digital.header_format_default(digital.packet_utils.default_access_code, 0)</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1768, 451)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pad_sink_0</value> + </param> + <param> + <key>type</key> + <value>message</value> + </param> + <param> + <key>label</key> + <value>pkt out</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1608, 499)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pad_sink_1</value> + </param> + <param> + <key>type</key> + <value>message</value> + </param> + <param> + <key>label</key> + <value>precrc</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(976, 179)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>pad_sink_2</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>label</key> + <value>hdr_out</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(968, 372)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>pad_sink_3</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>label</key> + <value>pld_out</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1368, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pad_sink_3_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>label</key> + <value>pld_phs</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(680, 139)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>pad_sink_5</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>label</key> + <value>timing</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(224, 323)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>pad_sink_7</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>label</key> + <value>corr est</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(8, 251)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pad_source_0</value> + </param> + <param> + <key>label</key> + <value>in</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>False</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(720, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pld_const</value> + </param> + <param> + <key>label</key> + <value>Payload constellation</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value>digital.constellation_calcdist((digital.psk_2()[0]), (digital.psk_2()[1]), 2, 1).base()</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(368, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pld_dec</value> + </param> + <param> + <key>label</key> + <value>Payload FEC Decoder</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value> fec.dummy_decoder.make(8000)</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1256, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>psf_taps</value> + </param> + <param> + <key>label</key> + <value>Pulse Shape Filter</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value>[0,]</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1096, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>sps</value> + </param> + <param> + <key>label</key> + <value>Samples per Symbol</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value>eng_float</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <connection> + <source_block_id>blocks_multiply_by_tag_value_cc_0</source_block_id> + <sink_block_id>digital_pfb_clock_sync_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_multiply_length_0</source_block_id> + <sink_block_id>blocks_tagged_stream_to_pdu_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_to_pdu_0</source_block_id> + <sink_block_id>fec_async_decoder_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_constellation_soft_decoder_cf_0</source_block_id> + <sink_block_id>blocks_tagged_stream_multiply_length_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_constellation_soft_decoder_cf_0_0</source_block_id> + <sink_block_id>fec_generic_decoder_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>pad_sink_7</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_corr_est_cc_0</source_block_id> + <sink_block_id>blocks_multiply_by_tag_value_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_costas_loop_cc_0_0</source_block_id> + <sink_block_id>digital_constellation_soft_decoder_cf_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_costas_loop_cc_0_0_0</source_block_id> + <sink_block_id>digital_constellation_soft_decoder_cf_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_costas_loop_cc_0_0_0</source_block_id> + <sink_block_id>pad_sink_3_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_0</source_block_id> + <sink_block_id>pad_sink_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_header_payload_demux_0</source_block_id> + <sink_block_id>digital_costas_loop_cc_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_header_payload_demux_0</source_block_id> + <sink_block_id>pad_sink_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_header_payload_demux_0</source_block_id> + <sink_block_id>digital_costas_loop_cc_0_0_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_header_payload_demux_0</source_block_id> + <sink_block_id>pad_sink_3</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> + <sink_block_id>digital_header_payload_demux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> + <sink_block_id>pad_sink_5</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_parser_b_0</source_block_id> + <sink_block_id>digital_header_payload_demux_0</sink_block_id> + <source_key>info</source_key> + <sink_key>header_data</sink_key> + </connection> + <connection> + <source_block_id>fec_async_decoder_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>fec_async_decoder_0</source_block_id> + <sink_block_id>pad_sink_1</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>fec_generic_decoder_0</source_block_id> + <sink_block_id>digital_protocol_parser_b_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>pad_source_0</source_block_id> + <sink_block_id>digital_corr_est_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/packet_tx.grc b/gr-digital/examples/packet/packet_tx.grc new file mode 100644 index 0000000000..66772eebb7 --- /dev/null +++ b/gr-digital/examples/packet/packet_tx.grc @@ -0,0 +1,1787 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Thu Mar 10 17:16:22 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value></value> + </param> + <param> + <key>category</key> + <value>Packet Operators</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>hb</value> + </param> + <param> + <key>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>packet_tx</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(784, 435)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>filt_delay</value> + </param> + <param> + <key>value</key> + <value>1+(taps_per_filt-1)/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>(1240, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(688, 435)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>taps_per_filt</value> + </param> + <param> + <key>value</key> + <value>len(psf_taps)/nfilts</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 252)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 179)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>hdr_const.bits_per_symbol()</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 171)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>pld_const.bits_per_symbol()</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 243)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_multiply_length</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 369)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tagged_stream_multiply_length_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>c</key> + <value>sps</value> + </param> + <param> + <key>lengthtagname</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_mux</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 353)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tagged_stream_mux_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>lengthtagname</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>ninputs</key> + <value>2</value> + </param> + <param> + <key>tag_preserve_head_pos</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>digital_burst_shaper_xx</key> + <param> + <key>alias</key> + <value>burst_shaper0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(448, 331)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_burst_shaper_xx_0</value> + </param> + <param> + <key>insert_phasing</key> + <value>True</value> + </param> + <param> + <key>length_tag_name</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>post_padding</key> + <value>filt_delay</value> + </param> + <param> + <key>pre_padding</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>window</key> + <value>firdes.window(firdes.WIN_HANN, 20, 0)</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1088, 171)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>hdr_const.points()</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1088, 243)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>pld_const.points()</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 179)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_map_bb_1</value> + </param> + <param> + <key>map</key> + <value>hdr_const.pre_diff_code()</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 251)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_map_bb_1_0</value> + </param> + <param> + <key>map</key> + <value>pld_const.pre_diff_code()</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_formatter_async</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(56, 225)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_formatter_async_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>fec_async_encoder</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>encoder</key> + <value>pld_enc</value> + </param> + <param> + <key>_coordinate</key> + <value>(64, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>fec_async_encoder_0</value> + </param> + <param> + <key>mtu</key> + <value>1500</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>packed</key> + <value>True</value> + </param> + <param> + <key>rev_pack</key> + <value>False</value> + </param> + <param> + <key>rev_unpack</key> + <value>False</value> + </param> + </block> + <block> + <key>fec_async_encoder</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>encoder</key> + <value>hdr_enc</value> + </param> + <param> + <key>_coordinate</key> + <value>(304, 171)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>fec_async_encoder_0_0</value> + </param> + <param> + <key>mtu</key> + <value>1500</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>packed</key> + <value>True</value> + </param> + <param> + <key>rev_pack</key> + <value>False</value> + </param> + <param> + <key>rev_unpack</key> + <value>False</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(552, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_const</value> + </param> + <param> + <key>label</key> + <value>Header constellation</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value>digital.constellation_calcdist((digital.psk_2()[0]), (digital.psk_2()[1]), 2, 1).base()</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(192, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_enc</value> + </param> + <param> + <key>label</key> + <value>Header FEC encoder</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value> fec.dummy_encoder_make(8000)</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(904, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>label</key> + <value>Header Formatter</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value>digital.header_format_default(digital.packet_utils.default_access_code, 0)</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1272, 179)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mod_header</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Header</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1272, 251)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mod_payload</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Payload</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1240, 379)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pad_sink_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>label</key> + <value>out</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>False</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(144, 163)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>pad_sink_1</value> + </param> + <param> + <key>type</key> + <value>message</value> + </param> + <param> + <key>label</key> + <value>postcrc</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(368, 507)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pad_sink_2</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>label</key> + <value>mux</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 507)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pad_sink_3</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>label</key> + <value>burst</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pad_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>pad_source_0</value> + </param> + <param> + <key>label</key> + <value>in</value> + </param> + <param> + <key>num_streams</key> + <value>1</value> + </param> + <param> + <key>optional</key> + <value>False</value> + </param> + <param> + <key>type</key> + <value>message</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>pfb_arb_resampler_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(688, 339)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pfb_arb_resampler_xxx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>nfilts</key> + <value>nfilts</value> + </param> + <param> + <key>rrate</key> + <value>sps</value> + </param> + <param> + <key>samp_delay</key> + <value>filt_delay</value> + </param> + <param> + <key>atten</key> + <value>100</value> + </param> + <param> + <key>taps</key> + <value>psf_taps</value> + </param> + <param> + <key>type</key> + <value>ccf</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(728, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pld_const</value> + </param> + <param> + <key>label</key> + <value>Payload constellation</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value>digital.constellation_calcdist((digital.psk_2()[0]), (digital.psk_2()[1]), 2, 1).base()</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(368, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pld_enc</value> + </param> + <param> + <key>label</key> + <value>Payload FEC encoder</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value> fec.dummy_encoder_make(8000)</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1240, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>psf_taps</value> + </param> + <param> + <key>label</key> + <value>Pulse Shape Filter</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value></value> + </param> + <param> + <key>value</key> + <value>[0,]</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 331)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rx_mod_header</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Header</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 379)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rx_mod_payload</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Payload</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1080, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>sps</value> + </param> + <param> + <key>label</key> + <value>Samples per Symbol</value> + </param> + <param> + <key>short_id</key> + <value></value> + </param> + <param> + <key>type</key> + <value>eng_float</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>digital_map_bb_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>digital_map_bb_1_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_multiply_length_0</source_block_id> + <sink_block_id>pad_sink_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_mux_0</source_block_id> + <sink_block_id>digital_burst_shaper_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_mux_0</source_block_id> + <sink_block_id>pad_sink_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_burst_shaper_xx_0</source_block_id> + <sink_block_id>pad_sink_3</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_burst_shaper_xx_0</source_block_id> + <sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0</source_block_id> + <sink_block_id>mod_header</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0_0</source_block_id> + <sink_block_id>mod_payload</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>fec_async_encoder_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>pad_sink_1</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_1</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_1_0</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>fec_async_encoder_0_0</sink_block_id> + <source_key>header</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_key>payload</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>fec_async_encoder_0</source_block_id> + <sink_block_id>digital_protocol_formatter_async_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>fec_async_encoder_0_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id> + <source_key>out</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>pad_source_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_1</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>pfb_arb_resampler_xxx_0</source_block_id> + <sink_block_id>blocks_tagged_stream_multiply_length_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rx_mod_header</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rx_mod_payload</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/simple_bpsk_tx.grc b/gr-digital/examples/packet/simple_bpsk_tx.grc new file mode 100644 index 0000000000..3a2dd3da3e --- /dev/null +++ b/gr-digital/examples/packet/simple_bpsk_tx.grc @@ -0,0 +1,3071 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Thu Apr 7 13:34:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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, 8)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>generate_options</key> + <value>qt_gui</value> + </param> + <param> + <key>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>simple_bpsk_tx</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>0.7</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(136, 547)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>amp</value> + </param> + <param> + <key>label</key> + <value>Amplitude</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>0.005</value> + </param> + <param> + <key>stop</key> + <value>0.9</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>483e6-300</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(136, 419)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>label</key> + <value>Frequency</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>50e6</value> + </param> + <param> + <key>step</key> + <value>500e3</value> + </param> + <param> + <key>stop</key> + <value>3e9</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>56</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(8, 547)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>gain</value> + </param> + <param> + <key>label</key> + <value>Gain</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>stop</key> + <value>83</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>(496, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pkt_len</value> + </param> + <param> + <key>value</key> + <value>1000</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(960, 531)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>id</key> + <value>rx_rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>15*sps</value> + </param> + <param> + <key>samp_rate</key> + <value>sps</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>200e3</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(8, 419)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>label</key> + <value>Sample Rate</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>200e3</value> + </param> + <param> + <key>step</key> + <value>200e3</value> + </param> + <param> + <key>stop</key> + <value>10e6</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>sps</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(184, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>sps</value> + </param> + <param> + <key>id</key> + <value>tx_rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>15*sps</value> + </param> + <param> + <key>samp_rate</key> + <value>sps</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(440, 113)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 163)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.intern("TEST")</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>4000</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>amp</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1344, 467)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(440, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0x0F</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(200, 147)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>6</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>6</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_tag_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>display</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(1600, 595)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tag_debug_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>filter</key> + <value>packet_len</value> + </param> + <param> + <key>name</key> + <value></value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_multiply_length</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(616, 321)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tagged_stream_multiply_length_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>c</key> + <value>sps*8</value> + </param> + <param> + <key>lengthtagname</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_unpack_k_bits_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 315)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_unpack_k_bits_bb_0</value> + </param> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 307)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>[-1,1]</value> + </param> + </block> + <block> + <key>fir_filter_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>2</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 459)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>fir_filter_xxx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samp_delay</key> + <value>1 + (len(rx_rrc_taps)-1)/2</value> + </param> + <param> + <key>taps</key> + <value>rx_rrc_taps</value> + </param> + <param> + <key>type</key> + <value>ccc</value> + </param> + </block> + <block> + <key>interp_fir_filter_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(408, 307)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>interp_fir_filter_xxx_0</value> + </param> + <param> + <key>interp</key> + <value>sps</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samp_delay</key> + <value>(len(tx_rrc_taps)-1)/(2*sps)</value> + </param> + <param> + <key>taps</key> + <value>tx_rrc_taps</value> + </param> + <param> + <key>type</key> + <value>ccc</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1600, 531)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>bw</key> + <value>1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>_coordinate</key> + <value>(1600, 451)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>showports</key> + <value>True</value> + </param> + <param> + <key>freqhalf</key> + <value>True</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1600, 371)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>600</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(336, 11)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,0,1,2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab0</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Freq.</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Const.</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>3</value> + </param> + </block> + <block> + <key>uhd_usrp_sink</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>ant0</key> + <value>TX/RX</value> + </param> + <param> + <key>bw0</key> + <value>0</value> + </param> + <param> + <key>center_freq0</key> + <value>uhd.tune_request(freq, samp_rate/2.0)</value> + </param> + <param> + <key>norm_gain0</key> + <value>False</value> + </param> + <param> + <key>gain0</key> + <value>gain</value> + </param> + <param> + <key>ant10</key> + <value></value> + </param> + <param> + <key>bw10</key> + <value>0</value> + </param> + <param> + <key>center_freq10</key> + <value>0</value> + </param> + <param> + <key>norm_gain10</key> + <value>False</value> + </param> + <param> + <key>gain10</key> + <value>0</value> + </param> + <param> + <key>ant11</key> + <value></value> + </param> + <param> + <key>bw11</key> + <value>0</value> + </param> + <param> + <key>center_freq11</key> + <value>0</value> + </param> + <param> + <key>norm_gain11</key> + <value>False</value> + </param> + <param> + <key>gain11</key> + <value>0</value> + </param> + <param> + <key>ant12</key> + <value></value> + </param> + <param> + <key>bw12</key> + <value>0</value> + </param> + <param> + <key>center_freq12</key> + <value>0</value> + </param> + <param> + <key>norm_gain12</key> + <value>False</value> + </param> + <param> + <key>gain12</key> + <value>0</value> + </param> + <param> + <key>ant13</key> + <value></value> + </param> + <param> + <key>bw13</key> + <value>0</value> + </param> + <param> + <key>center_freq13</key> + <value>0</value> + </param> + <param> + <key>norm_gain13</key> + <value>False</value> + </param> + <param> + <key>gain13</key> + <value>0</value> + </param> + <param> + <key>ant14</key> + <value></value> + </param> + <param> + <key>bw14</key> + <value>0</value> + </param> + <param> + <key>center_freq14</key> + <value>0</value> + </param> + <param> + <key>norm_gain14</key> + <value>False</value> + </param> + <param> + <key>gain14</key> + <value>0</value> + </param> + <param> + <key>ant15</key> + <value></value> + </param> + <param> + <key>bw15</key> + <value>0</value> + </param> + <param> + <key>center_freq15</key> + <value>0</value> + </param> + <param> + <key>norm_gain15</key> + <value>False</value> + </param> + <param> + <key>gain15</key> + <value>0</value> + </param> + <param> + <key>ant16</key> + <value></value> + </param> + <param> + <key>bw16</key> + <value>0</value> + </param> + <param> + <key>center_freq16</key> + <value>0</value> + </param> + <param> + <key>norm_gain16</key> + <value>False</value> + </param> + <param> + <key>gain16</key> + <value>0</value> + </param> + <param> + <key>ant17</key> + <value></value> + </param> + <param> + <key>bw17</key> + <value>0</value> + </param> + <param> + <key>center_freq17</key> + <value>0</value> + </param> + <param> + <key>norm_gain17</key> + <value>False</value> + </param> + <param> + <key>gain17</key> + <value>0</value> + </param> + <param> + <key>ant18</key> + <value></value> + </param> + <param> + <key>bw18</key> + <value>0</value> + </param> + <param> + <key>center_freq18</key> + <value>0</value> + </param> + <param> + <key>norm_gain18</key> + <value>False</value> + </param> + <param> + <key>gain18</key> + <value>0</value> + </param> + <param> + <key>ant19</key> + <value></value> + </param> + <param> + <key>bw19</key> + <value>0</value> + </param> + <param> + <key>center_freq19</key> + <value>0</value> + </param> + <param> + <key>norm_gain19</key> + <value>False</value> + </param> + <param> + <key>gain19</key> + <value>0</value> + </param> + <param> + <key>ant1</key> + <value></value> + </param> + <param> + <key>bw1</key> + <value>0</value> + </param> + <param> + <key>center_freq1</key> + <value>0</value> + </param> + <param> + <key>norm_gain1</key> + <value>False</value> + </param> + <param> + <key>gain1</key> + <value>0</value> + </param> + <param> + <key>ant20</key> + <value></value> + </param> + <param> + <key>bw20</key> + <value>0</value> + </param> + <param> + <key>center_freq20</key> + <value>0</value> + </param> + <param> + <key>norm_gain20</key> + <value>False</value> + </param> + <param> + <key>gain20</key> + <value>0</value> + </param> + <param> + <key>ant21</key> + <value></value> + </param> + <param> + <key>bw21</key> + <value>0</value> + </param> + <param> + <key>center_freq21</key> + <value>0</value> + </param> + <param> + <key>norm_gain21</key> + <value>False</value> + </param> + <param> + <key>gain21</key> + <value>0</value> + </param> + <param> + <key>ant22</key> + <value></value> + </param> + <param> + <key>bw22</key> + <value>0</value> + </param> + <param> + <key>center_freq22</key> + <value>0</value> + </param> + <param> + <key>norm_gain22</key> + <value>False</value> + </param> + <param> + <key>gain22</key> + <value>0</value> + </param> + <param> + <key>ant23</key> + <value></value> + </param> + <param> + <key>bw23</key> + <value>0</value> + </param> + <param> + <key>center_freq23</key> + <value>0</value> + </param> + <param> + <key>norm_gain23</key> + <value>False</value> + </param> + <param> + <key>gain23</key> + <value>0</value> + </param> + <param> + <key>ant24</key> + <value></value> + </param> + <param> + <key>bw24</key> + <value>0</value> + </param> + <param> + <key>center_freq24</key> + <value>0</value> + </param> + <param> + <key>norm_gain24</key> + <value>False</value> + </param> + <param> + <key>gain24</key> + <value>0</value> + </param> + <param> + <key>ant25</key> + <value></value> + </param> + <param> + <key>bw25</key> + <value>0</value> + </param> + <param> + <key>center_freq25</key> + <value>0</value> + </param> + <param> + <key>norm_gain25</key> + <value>False</value> + </param> + <param> + <key>gain25</key> + <value>0</value> + </param> + <param> + <key>ant26</key> + <value></value> + </param> + <param> + <key>bw26</key> + <value>0</value> + </param> + <param> + <key>center_freq26</key> + <value>0</value> + </param> + <param> + <key>norm_gain26</key> + <value>False</value> + </param> + <param> + <key>gain26</key> + <value>0</value> + </param> + <param> + <key>ant27</key> + <value></value> + </param> + <param> + <key>bw27</key> + <value>0</value> + </param> + <param> + <key>center_freq27</key> + <value>0</value> + </param> + <param> + <key>norm_gain27</key> + <value>False</value> + </param> + <param> + <key>gain27</key> + <value>0</value> + </param> + <param> + <key>ant28</key> + <value></value> + </param> + <param> + <key>bw28</key> + <value>0</value> + </param> + <param> + <key>center_freq28</key> + <value>0</value> + </param> + <param> + <key>norm_gain28</key> + <value>False</value> + </param> + <param> + <key>gain28</key> + <value>0</value> + </param> + <param> + <key>ant29</key> + <value></value> + </param> + <param> + <key>bw29</key> + <value>0</value> + </param> + <param> + <key>center_freq29</key> + <value>0</value> + </param> + <param> + <key>norm_gain29</key> + <value>False</value> + </param> + <param> + <key>gain29</key> + <value>0</value> + </param> + <param> + <key>ant2</key> + <value></value> + </param> + <param> + <key>bw2</key> + <value>0</value> + </param> + <param> + <key>center_freq2</key> + <value>0</value> + </param> + <param> + <key>norm_gain2</key> + <value>False</value> + </param> + <param> + <key>gain2</key> + <value>0</value> + </param> + <param> + <key>ant30</key> + <value></value> + </param> + <param> + <key>bw30</key> + <value>0</value> + </param> + <param> + <key>center_freq30</key> + <value>0</value> + </param> + <param> + <key>norm_gain30</key> + <value>False</value> + </param> + <param> + <key>gain30</key> + <value>0</value> + </param> + <param> + <key>ant31</key> + <value></value> + </param> + <param> + <key>bw31</key> + <value>0</value> + </param> + <param> + <key>center_freq31</key> + <value>0</value> + </param> + <param> + <key>norm_gain31</key> + <value>False</value> + </param> + <param> + <key>gain31</key> + <value>0</value> + </param> + <param> + <key>ant3</key> + <value></value> + </param> + <param> + <key>bw3</key> + <value>0</value> + </param> + <param> + <key>center_freq3</key> + <value>0</value> + </param> + <param> + <key>norm_gain3</key> + <value>False</value> + </param> + <param> + <key>gain3</key> + <value>0</value> + </param> + <param> + <key>ant4</key> + <value></value> + </param> + <param> + <key>bw4</key> + <value>0</value> + </param> + <param> + <key>center_freq4</key> + <value>0</value> + </param> + <param> + <key>norm_gain4</key> + <value>False</value> + </param> + <param> + <key>gain4</key> + <value>0</value> + </param> + <param> + <key>ant5</key> + <value></value> + </param> + <param> + <key>bw5</key> + <value>0</value> + </param> + <param> + <key>center_freq5</key> + <value>0</value> + </param> + <param> + <key>norm_gain5</key> + <value>False</value> + </param> + <param> + <key>gain5</key> + <value>0</value> + </param> + <param> + <key>ant6</key> + <value></value> + </param> + <param> + <key>bw6</key> + <value>0</value> + </param> + <param> + <key>center_freq6</key> + <value>0</value> + </param> + <param> + <key>norm_gain6</key> + <value>False</value> + </param> + <param> + <key>gain6</key> + <value>0</value> + </param> + <param> + <key>ant7</key> + <value></value> + </param> + <param> + <key>bw7</key> + <value>0</value> + </param> + <param> + <key>center_freq7</key> + <value>0</value> + </param> + <param> + <key>norm_gain7</key> + <value>False</value> + </param> + <param> + <key>gain7</key> + <value>0</value> + </param> + <param> + <key>ant8</key> + <value></value> + </param> + <param> + <key>bw8</key> + <value>0</value> + </param> + <param> + <key>center_freq8</key> + <value>0</value> + </param> + <param> + <key>norm_gain8</key> + <value>False</value> + </param> + <param> + <key>gain8</key> + <value>0</value> + </param> + <param> + <key>ant9</key> + <value></value> + </param> + <param> + <key>bw9</key> + <value>0</value> + </param> + <param> + <key>center_freq9</key> + <value>0</value> + </param> + <param> + <key>norm_gain9</key> + <value>False</value> + </param> + <param> + <key>gain9</key> + <value>0</value> + </param> + <param> + <key>clock_rate</key> + <value>0.0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dev_addr</key> + <value>""</value> + </param> + <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1432, 139)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>uhd_usrp_sink_0</value> + </param> + <param> + <key>type</key> + <value>fc32</value> + </param> + <param> + <key>clock_source0</key> + <value>gpsdo</value> + </param> + <param> + <key>sd_spec0</key> + <value></value> + </param> + <param> + <key>time_source0</key> + <value>gpsdo</value> + </param> + <param> + <key>clock_source1</key> + <value></value> + </param> + <param> + <key>sd_spec1</key> + <value></value> + </param> + <param> + <key>time_source1</key> + <value></value> + </param> + <param> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>sd_spec2</key> + <value></value> + </param> + <param> + <key>time_source2</key> + <value></value> + </param> + <param> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>sd_spec3</key> + <value></value> + </param> + <param> + <key>time_source3</key> + <value></value> + </param> + <param> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>sd_spec4</key> + <value></value> + </param> + <param> + <key>time_source4</key> + <value></value> + </param> + <param> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>sd_spec5</key> + <value></value> + </param> + <param> + <key>time_source5</key> + <value></value> + </param> + <param> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>sd_spec6</key> + <value></value> + </param> + <param> + <key>time_source6</key> + <value></value> + </param> + <param> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>sd_spec7</key> + <value></value> + </param> + <param> + <key>time_source7</key> + <value></value> + </param> + <param> + <key>nchan</key> + <value>1</value> + </param> + <param> + <key>num_mboards</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>hide_cmd_port</key> + <value>False</value> + </param> + <param> + <key>stream_args</key> + <value></value> + </param> + <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> + <key>sync</key> + <value>sync</value> + </param> + <param> + <key>len_tag_name</key> + <value>packet_len</value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>blocks_tag_debug_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>uhd_usrp_sink_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id> + <sink_block_id>blocks_unpack_k_bits_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>print_pdu</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_multiply_length_0</source_block_id> + <sink_block_id>fir_filter_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_unpack_k_bits_bb_0</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0</source_block_id> + <sink_block_id>interp_fir_filter_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>fir_filter_xxx_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>interp_fir_filter_xxx_0</source_block_id> + <sink_block_id>blocks_tagged_stream_multiply_length_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/transmitter_sim_hier.grc b/gr-digital/examples/packet/transmitter_sim_hier.grc new file mode 100644 index 0000000000..1ec7ebe733 --- /dev/null +++ b/gr-digital/examples/packet/transmitter_sim_hier.grc @@ -0,0 +1,2313 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Thu Dec 4 14:34:25 2014</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>2000,2000</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>parse_packet_header_soft</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(184, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_HDR</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(344, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_4()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>4</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_4()[1]</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>1</value> + </param> + <param> + <key>dim2</key> + <value>4</value> + </param> + <param> + <key>_enabled</key> + <value>False</value> + </param> + <param> + <key>state_end</key> + <value>-1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(752, 619)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</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_TERMINATED</value> + </param> + </block> + <block> + <key>variable_dummy_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(360, 523)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>False</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(552, 539)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + <param> + <key>prob</key> + <value>0.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>(824, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</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>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>False</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(752, 443)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</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_TERMINATED</value> + </param> + </block> + <block> + <key>variable_dummy_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(360, 443)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>False</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(552, 443)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + </block> + <block> + <key>variable_dummy_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 443)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc_hdr</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(720, 14)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</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>(608, 659)</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>(752, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</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>(656, 723)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>polys</value> + </param> + <param> + <key>value</key> + <value>[109, 79]</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>(680, 659)</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>(584, 723)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rep</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(768, 243)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>id</key> + <value>rx_rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>15*sps</value> + </param> + <param> + <key>samp_rate</key> + <value>sps</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</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>(680, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>sps</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(912, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>tx_rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>5*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>sps*nfilts</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(592, 329)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(56, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.intern("TEST")</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>1000</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0x0F</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(264, 195)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>2</value> + </param> + <param> + <key>maxsize</key> + <value>10</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>10</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>fir_filter_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>2</value> + </param> + <param> + <key>_coordinate</key> + <value>(768, 171)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>fir_filter_xxx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samp_delay</key> + <value>(len(rx_rrc_taps)-1)/2</value> + </param> + <param> + <key>taps</key> + <value>rx_rrc_taps</value> + </param> + <param> + <key>type</key> + <value>ccc</value> + </param> + </block> + <block> + <key>packet_tx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(520, 179)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>hdr_enc</key> + <value>enc_hdr</value> + </param> + <param> + <key>hdr_format</key> + <value>digital.header_format_default(digital.packet_utils.default_access_code, 0)</value> + </param> + <param> + <key>hdr_const</key> + <value>Const_HDR</value> + </param> + <param> + <key>id</key> + <value>packet_tx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>pld_enc</key> + <value>enc</value> + </param> + <param> + <key>pld_const</key> + <value>Const_PLD</value> + </param> + <param> + <key>psf_taps</key> + <value>tx_rrc_taps</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1024, 323)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>bw</key> + <value>1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>_coordinate</key> + <value>(1024, 243)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>showports</key> + <value>True</value> + </param> + <param> + <key>freqhalf</key> + <value>True</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1024, 163)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1500</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(32, 443)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab0</value> + </param> + <param> + <key>label0</key> + <value>Const</value> + </param> + <param> + <key>label1</key> + <value>Freq</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Tab 2</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>packet_tx_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>fir_filter_xxx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>fir_filter_xxx_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>fir_filter_xxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_tx_0</source_block_id> + <sink_block_id>fir_filter_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_tx_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>postcrc</source_key> + <sink_key>print_pdu</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/tx_stage0.grc b/gr-digital/examples/packet/tx_stage0.grc new file mode 100644 index 0000000000..e8705beeb2 --- /dev/null +++ b/gr-digital/examples/packet/tx_stage0.grc @@ -0,0 +1,286 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Sun Apr 10 12:10:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>no_gui</value> + </param> + <param> + <key>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>tx_stage0</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 97)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(32, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.PMT_T</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>2000</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>150</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>15</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_tuntap_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>istunflag</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(224, 203)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tuntap_pdu_0</value> + </param> + <param> + <key>ifn</key> + <value>tap0</value> + </param> + <param> + <key>mtu</key> + <value>10000</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>print_pdu</sink_key> + </connection> + <connection> + <source_block_id>blocks_tuntap_pdu_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>print_pdu</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/tx_stage1.grc b/gr-digital/examples/packet/tx_stage1.grc new file mode 100644 index 0000000000..62bcc2f162 --- /dev/null +++ b/gr-digital/examples/packet/tx_stage1.grc @@ -0,0 +1,284 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Sun Apr 10 12:10:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>no_gui</value> + </param> + <param> + <key>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>tx_stage1</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(672, 49)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(32, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.PMT_T</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>2000</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>50</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>15</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(456, 171)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>False</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>print_pdu</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_1</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>out</source_key> + <sink_key>print_pdu</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/tx_stage2.grc b/gr-digital/examples/packet/tx_stage2.grc new file mode 100644 index 0000000000..f7491daef4 --- /dev/null +++ b/gr-digital/examples/packet/tx_stage2.grc @@ -0,0 +1,494 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Sun Apr 10 12:10:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>no_gui</value> + </param> + <param> + <key>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>tx_stage2</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </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>7</value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>1500*8</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>polys</key> + <value>[109,79]</value> + </param> + <param> + <key>rate</key> + <value>2</value> + </param> + <param> + <key>state_start</key> + <value>0</value> + </param> + <param> + <key>mode</key> + <value>fec.CC_TERMINATED</value> + </param> + </block> + <block> + <key>variable_dummy_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>3</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(920, 57)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(32, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.PMT_T</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>2000</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>50</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>15</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(432, 115)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>False</value> + </param> + </block> + <block> + <key>fec_async_encoder</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>encoder</key> + <value>enc</value> + </param> + <param> + <key>_coordinate</key> + <value>(624, 171)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>fec_async_encoder_0</value> + </param> + <param> + <key>mtu</key> + <value>1500</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>packed</key> + <value>True</value> + </param> + <param> + <key>rev_pack</key> + <value>False</value> + </param> + <param> + <key>rev_unpack</key> + <value>False</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_1</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>out</source_key> + <sink_key>print_pdu</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>fec_async_encoder_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>fec_async_encoder_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>out</source_key> + <sink_key>print_pdu</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/tx_stage3.grc b/gr-digital/examples/packet/tx_stage3.grc new file mode 100644 index 0000000000..bfa1676079 --- /dev/null +++ b/gr-digital/examples/packet/tx_stage3.grc @@ -0,0 +1,445 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Sun Apr 10 12:10:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>no_gui</value> + </param> + <param> + <key>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>tx_stage3</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(256, 285)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>bps</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 206)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</key> + <value>thresh</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(256, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_counter(digital.packet_utils.default_access_code, thresh, bps)</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 285)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>thresh</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(920, 57)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(32, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.PMT_T</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>2000</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 91)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>50</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>15</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(432, 115)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_protocol_formatter_async</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(616, 105)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_formatter_async_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_1</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>digital_protocol_formatter_async_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>header</source_key> + <sink_key>print_pdu</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>payload</source_key> + <sink_key>print_pdu</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/tx_stage4.grc b/gr-digital/examples/packet/tx_stage4.grc new file mode 100644 index 0000000000..7acfd73fa6 --- /dev/null +++ b/gr-digital/examples/packet/tx_stage4.grc @@ -0,0 +1,1948 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Sun Apr 10 12:10:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>tx_stage4</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(272, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>bps</value> + </param> + <param> + <key>value</key> + <value>pld_const.bits_per_symbol()</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(816, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 6)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</key> + <value>thresh</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(592, 5)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_counter(digital.packet_utils.default_access_code, thresh, bps)</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(976, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pld_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(192, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>thresh</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.PMT_T</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>1000</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(208, 83)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>50</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>15</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>hdr_const.bits_per_symbol()</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>pld_const.bits_per_symbol()</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 283)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_mux</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(224, 401)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tagged_stream_mux_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>lengthtagname</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>ninputs</key> + <value>2</value> + </param> + <param> + <key>tag_preserve_head_pos</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(864, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>hdr_const.points()</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(864, 283)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>pld_const.points()</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(424, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(736, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_map_bb_1</value> + </param> + <param> + <key>map</key> + <value>hdr_const.pre_diff_code()</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(736, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_map_bb_1_0</value> + </param> + <param> + <key>map</key> + <value>pld_const.pre_diff_code()</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_formatter_async</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(56, 233)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_formatter_async_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1048, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mod_header</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Header</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1048, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mod_payload</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Payload</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>bw</key> + <value>1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 443)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>showports</key> + <value>True</value> + </param> + <param> + <key>freqhalf</key> + <value>True</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 363)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>400</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 379)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rx_mod_header</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Header</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 427)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rx_mod_payload</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Payload</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 531)</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Freq</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Tab 2</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_1</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>digital_map_bb_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>digital_map_bb_1_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_mux_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_mux_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0</source_block_id> + <sink_block_id>mod_header</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0_0</source_block_id> + <sink_block_id>mod_payload</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>digital_protocol_formatter_async_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_1</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_1_0</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id> + <source_key>header</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_key>payload</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>rx_mod_header</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rx_mod_payload</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/tx_stage5.grc b/gr-digital/examples/packet/tx_stage5.grc new file mode 100644 index 0000000000..b6a46eb86e --- /dev/null +++ b/gr-digital/examples/packet/tx_stage5.grc @@ -0,0 +1,2017 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Sun Apr 10 12:10:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>tx_stage5</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(272, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>bps</value> + </param> + <param> + <key>value</key> + <value>pld_const.bits_per_symbol()</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(816, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 6)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</key> + <value>thresh</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(592, 5)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_counter(digital.packet_utils.default_access_code, thresh, bps)</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(976, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pld_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(192, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>thresh</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.PMT_T</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>1000</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(208, 83)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>50</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>15</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>hdr_const.bits_per_symbol()</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>pld_const.bits_per_symbol()</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 283)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_mux</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(224, 401)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tagged_stream_mux_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>lengthtagname</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>ninputs</key> + <value>2</value> + </param> + <param> + <key>tag_preserve_head_pos</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>digital_burst_shaper_xx</key> + <param> + <key>alias</key> + <value>burst_shaper0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(456, 379)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_burst_shaper_xx_0</value> + </param> + <param> + <key>insert_phasing</key> + <value>True</value> + </param> + <param> + <key>length_tag_name</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>post_padding</key> + <value>10</value> + </param> + <param> + <key>pre_padding</key> + <value>10</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>window</key> + <value>firdes.window(firdes.WIN_HANN, 50, 0)</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(864, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>hdr_const.points()</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(864, 283)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>pld_const.points()</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(424, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(736, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_map_bb_1</value> + </param> + <param> + <key>map</key> + <value>hdr_const.pre_diff_code()</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(736, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_map_bb_1_0</value> + </param> + <param> + <key>map</key> + <value>pld_const.pre_diff_code()</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_formatter_async</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(56, 233)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_formatter_async_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1048, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mod_header</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Header</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1048, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mod_payload</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Payload</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>bw</key> + <value>1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 443)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>showports</key> + <value>True</value> + </param> + <param> + <key>freqhalf</key> + <value>True</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 363)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>400</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 379)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rx_mod_header</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Header</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 427)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rx_mod_payload</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Payload</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 531)</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Freq</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Tab 2</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_1</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>digital_map_bb_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>digital_map_bb_1_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_mux_0</source_block_id> + <sink_block_id>digital_burst_shaper_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_burst_shaper_xx_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_burst_shaper_xx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0</source_block_id> + <sink_block_id>mod_header</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0_0</source_block_id> + <sink_block_id>mod_payload</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>digital_protocol_formatter_async_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_1</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_1_0</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id> + <source_key>header</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_key>payload</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>rx_mod_header</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rx_mod_payload</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/tx_stage6.grc b/gr-digital/examples/packet/tx_stage6.grc new file mode 100644 index 0000000000..4e2806f9b9 --- /dev/null +++ b/gr-digital/examples/packet/tx_stage6.grc @@ -0,0 +1,2264 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Sun Apr 10 12:10:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>tx_stage6</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(272, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>bps</value> + </param> + <param> + <key>value</key> + <value>pld_const.bits_per_symbol()</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>(936, 563)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(888, 499)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>filt_delay</value> + </param> + <param> + <key>value</key> + <value>1+(taps_per_filt-1)/2</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(816, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 6)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</key> + <value>thresh</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(592, 5)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_counter(digital.packet_utils.default_access_code, thresh, bps)</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>(864, 563)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(976, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pld_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(656, 499)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>psf_taps</value> + </param> + <param> + <key>ntaps</key> + <value>15*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>nfilts</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</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>(792, 563)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>sps</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(792, 499)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>taps_per_filt</value> + </param> + <param> + <key>value</key> + <value>len(psf_taps)/nfilts</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(192, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>thresh</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.PMT_T</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>1000</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(208, 83)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>50</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>15</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>hdr_const.bits_per_symbol()</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>pld_const.bits_per_symbol()</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 283)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_mux</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(224, 401)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tagged_stream_mux_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>lengthtagname</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>ninputs</key> + <value>2</value> + </param> + <param> + <key>tag_preserve_head_pos</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>digital_burst_shaper_xx</key> + <param> + <key>alias</key> + <value>burst_shaper0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(456, 379)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_burst_shaper_xx_0</value> + </param> + <param> + <key>insert_phasing</key> + <value>True</value> + </param> + <param> + <key>length_tag_name</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>post_padding</key> + <value>10</value> + </param> + <param> + <key>pre_padding</key> + <value>10</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>window</key> + <value>firdes.window(firdes.WIN_HANN, 50, 0)</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(864, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>hdr_const.points()</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(864, 283)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>pld_const.points()</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(424, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(736, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_map_bb_1</value> + </param> + <param> + <key>map</key> + <value>hdr_const.pre_diff_code()</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(736, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_map_bb_1_0</value> + </param> + <param> + <key>map</key> + <value>pld_const.pre_diff_code()</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_formatter_async</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(56, 225)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_formatter_async_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1048, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mod_header</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Header</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1048, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mod_payload</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Payload</value> + </param> + </block> + <block> + <key>pfb_arb_resampler_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(720, 387)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pfb_arb_resampler_xxx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>nfilts</key> + <value>nfilts</value> + </param> + <param> + <key>rrate</key> + <value>sps</value> + </param> + <param> + <key>samp_delay</key> + <value>filt_delay</value> + </param> + <param> + <key>atten</key> + <value>100</value> + </param> + <param> + <key>taps</key> + <value>psf_taps</value> + </param> + <param> + <key>type</key> + <value>ccf</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>bw</key> + <value>sps</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 443)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>showports</key> + <value>True</value> + </param> + <param> + <key>freqhalf</key> + <value>True</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 363)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>400*sps</value> + </param> + <param> + <key>srate</key> + <value>sps</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 379)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rx_mod_header</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Header</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 427)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rx_mod_payload</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Payload</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 531)</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Freq</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Tab 2</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_1</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>digital_map_bb_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>digital_map_bb_1_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_mux_0</source_block_id> + <sink_block_id>digital_burst_shaper_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_burst_shaper_xx_0</source_block_id> + <sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0</source_block_id> + <sink_block_id>mod_header</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0_0</source_block_id> + <sink_block_id>mod_payload</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>digital_protocol_formatter_async_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_1</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_1_0</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id> + <source_key>header</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_key>payload</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>pfb_arb_resampler_xxx_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>pfb_arb_resampler_xxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rx_mod_header</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rx_mod_payload</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/tx_stage6a.grc b/gr-digital/examples/packet/tx_stage6a.grc new file mode 100644 index 0000000000..7c5565c9e5 --- /dev/null +++ b/gr-digital/examples/packet/tx_stage6a.grc @@ -0,0 +1,2368 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Sun Apr 10 12:10:29 2016</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>tx_stage6a</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(272, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>bps</value> + </param> + <param> + <key>value</key> + <value>pld_const.bits_per_symbol()</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>(936, 563)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(888, 499)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>filt_delay</value> + </param> + <param> + <key>value</key> + <value>1+(taps_per_filt-1)/2</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(816, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 6)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</key> + <value>thresh</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(592, 5)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_counter(digital.packet_utils.default_access_code, thresh, bps)</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>(864, 563)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(976, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pld_const</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(656, 499)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>psf_taps</value> + </param> + <param> + <key>ntaps</key> + <value>15*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>nfilts</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 467)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>id</key> + <value>rx_psf_taps</value> + </param> + <param> + <key>ntaps</key> + <value>15*sps</value> + </param> + <param> + <key>samp_rate</key> + <value>sps</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</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>(792, 563)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>sps</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(792, 499)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>taps_per_filt</value> + </param> + <param> + <key>value</key> + <value>len(psf_taps)/nfilts</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(192, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>thresh</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.PMT_T</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>1000</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_pdu_to_tagged_stream</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_pdu_to_tagged_stream_0_0</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>tag</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(208, 83)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>50</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>15</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>hdr_const.bits_per_symbol()</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_repack_bits_bb</key> + <param> + <key>k</key> + <value>8</value> + </param> + <param> + <key>l</key> + <value>pld_const.bits_per_symbol()</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>_enabled</key> + <value>True</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 283)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_repack_bits_bb_0_0</value> + </param> + <param> + <key>len_tag_key</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>align_output</key> + <value>False</value> + </param> + </block> + <block> + <key>blocks_tagged_stream_mux</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(224, 401)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tagged_stream_mux_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>lengthtagname</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>ninputs</key> + <value>2</value> + </param> + <param> + <key>tag_preserve_head_pos</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>digital_burst_shaper_xx</key> + <param> + <key>alias</key> + <value>burst_shaper0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(456, 379)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_burst_shaper_xx_0</value> + </param> + <param> + <key>insert_phasing</key> + <value>True</value> + </param> + <param> + <key>length_tag_name</key> + <value>packet_len</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>post_padding</key> + <value>10</value> + </param> + <param> + <key>pre_padding</key> + <value>10</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>window</key> + <value>firdes.window(firdes.WIN_HANN, 50, 0)</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(864, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>hdr_const.points()</value> + </param> + </block> + <block> + <key>digital_chunks_to_symbols_xx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(864, 283)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_chunks_to_symbols_xx_0_0</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>pld_const.points()</value> + </param> + </block> + <block> + <key>digital_crc32_async_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(424, 107)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_crc32_async_bb_1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>check</key> + <value>False</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(736, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_map_bb_1</value> + </param> + <param> + <key>map</key> + <value>hdr_const.pre_diff_code()</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_map_bb</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(736, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_map_bb_1_0</value> + </param> + <param> + <key>map</key> + <value>pld_const.pre_diff_code()</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_protocol_formatter_async</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>format</key> + <value>hdr_format</value> + </param> + <param> + <key>_coordinate</key> + <value>(56, 225)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_protocol_formatter_async_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>fir_filter_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1056, 403)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>fir_filter_xxx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>samp_delay</key> + <value>0</value> + </param> + <param> + <key>taps</key> + <value>rx_psf_taps</value> + </param> + <param> + <key>type</key> + <value>ccc</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1048, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mod_header</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Header</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1048, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>mod_payload</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Payload</value> + </param> + </block> + <block> + <key>pfb_arb_resampler_xxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(720, 387)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>pfb_arb_resampler_xxx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>nfilts</key> + <value>nfilts</value> + </param> + <param> + <key>rrate</key> + <value>sps</value> + </param> + <param> + <key>samp_delay</key> + <value>filt_delay</value> + </param> + <param> + <key>atten</key> + <value>100</value> + </param> + <param> + <key>taps</key> + <value>psf_taps</value> + </param> + <param> + <key>type</key> + <value>ccf</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>bw</key> + <value>sps</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>_coordinate</key> + <value>(1320, 443)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>showports</key> + <value>True</value> + </param> + <param> + <key>freqhalf</key> + <value>True</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1320, 363)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>400*sps</value> + </param> + <param> + <key>srate</key> + <value>sps</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>15</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 379)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rx_mod_header</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Header</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 427)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rx_mod_payload</value> + </param> + <param> + <key>stream_id</key> + <value>Mod Payload</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1320, 531)</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Freq</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Const</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_pdu_to_tagged_stream_0_0</source_block_id> + <sink_block_id>blocks_repack_bits_bb_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>digital_crc32_async_bb_1</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0</source_block_id> + <sink_block_id>digital_map_bb_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_repack_bits_bb_0_0</source_block_id> + <sink_block_id>digital_map_bb_1_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tagged_stream_mux_0</source_block_id> + <sink_block_id>digital_burst_shaper_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_burst_shaper_xx_0</source_block_id> + <sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0</source_block_id> + <sink_block_id>mod_header</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_chunks_to_symbols_xx_0_0</source_block_id> + <sink_block_id>mod_payload</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_crc32_async_bb_1</source_block_id> + <sink_block_id>digital_protocol_formatter_async_0</sink_block_id> + <source_key>out</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_1</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_map_bb_1_0</source_block_id> + <sink_block_id>digital_chunks_to_symbols_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id> + <source_key>header</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>digital_protocol_formatter_async_0</source_block_id> + <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id> + <source_key>payload</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>fir_filter_xxx_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>fir_filter_xxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>pfb_arb_resampler_xxx_0</source_block_id> + <sink_block_id>fir_filter_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rx_mod_header</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rx_mod_payload</source_block_id> + <sink_block_id>blocks_tagged_stream_mux_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/uhd_packet_rx.grc b/gr-digital/examples/packet/uhd_packet_rx.grc new file mode 100644 index 0000000000..8d902a5b1e --- /dev/null +++ b/gr-digital/examples/packet/uhd_packet_rx.grc @@ -0,0 +1,4083 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Thu Dec 4 14:34:25 2014</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>2000,2000</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>uhd_packet_rx</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(240, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_HDR</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_4()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(560, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>4</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_4()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>500</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 595)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>amp</value> + </param> + <param> + <key>label</key> + <value>Amplitude</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>10</value> + </param> + <param> + <key>stop</key> + <value>15000</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>1</value> + </param> + <param> + <key>dim2</key> + <value>4</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>state_end</key> + <value>-1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(680, 555)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</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_TERMINATED</value> + </param> + </block> + <block> + <key>variable_dummy_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(496, 555)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(480, 635)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + <param> + <key>prob</key> + <value>0.5</value> + </param> + </block> + <block> + <key>variable_dummy_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(592, 475)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec_hdr</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</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>(152, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>484e6</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 467)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>label</key> + <value>Frequency</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>480e6</value> + </param> + <param> + <key>step</key> + <value>100</value> + </param> + <param> + <key>stop</key> + <value>490e6</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>20</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 595)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>gain</value> + </param> + <param> + <key>label</key> + <value>Gain</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>0.5</value> + </param> + <param> + <key>stop</key> + <value>31.5</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 14)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</key> + <value>3</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 85)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_counter(digital.packet_utils.default_access_code, 3, Const_PLD.bits_per_symbol())</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>(904, 619)</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, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + </block> + <block> + <key>variable_qtgui_check_box</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>false</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 635)</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>on</value> + </param> + <param> + <key>label</key> + <value>On</value> + </param> + <param> + <key>true</key> + <value>1</value> + </param> + <param> + <key>type</key> + <value>int</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>(952, 683)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>polys</value> + </param> + <param> + <key>value</key> + <value>[109, 79]</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>(976, 619)</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>(880, 683)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rep</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>rx_rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>11*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>sps*nfilts</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1000e3</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 467)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>label</key> + <value>Sample Rate</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>200e3</value> + </param> + <param> + <key>step</key> + <value>200e3</value> + </param> + <param> + <key>stop</key> + <value>10e6</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>sps</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(968, 153)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0_0_0</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>amp</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(320, 163)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value>User gatting of on/off. +Use the "On" check box +to start sending samples +to the receiver.</value> + </param> + <param> + <key>const</key> + <value>on</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(528, 307)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_1</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>digital_fll_band_edge_cc</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>rolloff</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(320, 313)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_fll_band_edge_cc_0</value> + </param> + <param> + <key>w</key> + <value>0.05</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>filter_size</key> + <value>44</value> + </param> + <param> + <key>samps_per_sym</key> + <value>sps</value> + </param> + <param> + <key>type</key> + <value>cc</value> + </param> + </block> + <block> + <key>packet_rx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>eb</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(696, 201)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>hdr_dec</key> + <value>dec_hdr</value> + </param> + <param> + <key>hdr_format</key> + <value>digital.header_format_default(digital.packet_utils.default_access_code, 0)</value> + </param> + <param> + <key>hdr_const</key> + <value>Const_HDR</value> + </param> + <param> + <key>id</key> + <value>packet_rx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>pld_dec</key> + <value>dec</value> + </param> + <param> + <key>pld_const</key> + <value>Const_PLD</value> + </param> + <param> + <key>psf_taps</key> + <value>rx_rrc_taps</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 147)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.5</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_NORM</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.01</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(992, 267)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>800</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 211)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>True</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>srate</key> + <value>samp_rate</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0.5e-3</value> + </param> + <param> + <key>tr_level</key> + <value>0.5</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_NORM</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.01</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(992, 331)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1_0_0_1</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>3</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1250</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>25</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>"time_est"</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 467)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab0</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Const.</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Const.</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 547)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab1</value> + </param> + <param> + <key>label0</key> + <value>Const</value> + </param> + <param> + <key>label1</key> + <value>Time</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Const.</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <block> + <key>uhd_usrp_source</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>ant0</key> + <value>TX/RX</value> + </param> + <param> + <key>bw0</key> + <value>0</value> + </param> + <param> + <key>center_freq0</key> + <value>uhd.tune_request(freq, samp_rate/2.0)</value> + </param> + <param> + <key>dc_offs_enb0</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb0</key> + <value>""</value> + </param> + <param> + <key>norm_gain0</key> + <value>False</value> + </param> + <param> + <key>gain0</key> + <value>gain</value> + </param> + <param> + <key>ant10</key> + <value></value> + </param> + <param> + <key>bw10</key> + <value>0</value> + </param> + <param> + <key>center_freq10</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb10</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb10</key> + <value>""</value> + </param> + <param> + <key>norm_gain10</key> + <value>False</value> + </param> + <param> + <key>gain10</key> + <value>0</value> + </param> + <param> + <key>ant11</key> + <value></value> + </param> + <param> + <key>bw11</key> + <value>0</value> + </param> + <param> + <key>center_freq11</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb11</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb11</key> + <value>""</value> + </param> + <param> + <key>norm_gain11</key> + <value>False</value> + </param> + <param> + <key>gain11</key> + <value>0</value> + </param> + <param> + <key>ant12</key> + <value></value> + </param> + <param> + <key>bw12</key> + <value>0</value> + </param> + <param> + <key>center_freq12</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb12</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb12</key> + <value>""</value> + </param> + <param> + <key>norm_gain12</key> + <value>False</value> + </param> + <param> + <key>gain12</key> + <value>0</value> + </param> + <param> + <key>ant13</key> + <value></value> + </param> + <param> + <key>bw13</key> + <value>0</value> + </param> + <param> + <key>center_freq13</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb13</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb13</key> + <value>""</value> + </param> + <param> + <key>norm_gain13</key> + <value>False</value> + </param> + <param> + <key>gain13</key> + <value>0</value> + </param> + <param> + <key>ant14</key> + <value></value> + </param> + <param> + <key>bw14</key> + <value>0</value> + </param> + <param> + <key>center_freq14</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb14</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb14</key> + <value>""</value> + </param> + <param> + <key>norm_gain14</key> + <value>False</value> + </param> + <param> + <key>gain14</key> + <value>0</value> + </param> + <param> + <key>ant15</key> + <value></value> + </param> + <param> + <key>bw15</key> + <value>0</value> + </param> + <param> + <key>center_freq15</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb15</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb15</key> + <value>""</value> + </param> + <param> + <key>norm_gain15</key> + <value>False</value> + </param> + <param> + <key>gain15</key> + <value>0</value> + </param> + <param> + <key>ant16</key> + <value></value> + </param> + <param> + <key>bw16</key> + <value>0</value> + </param> + <param> + <key>center_freq16</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb16</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb16</key> + <value>""</value> + </param> + <param> + <key>norm_gain16</key> + <value>False</value> + </param> + <param> + <key>gain16</key> + <value>0</value> + </param> + <param> + <key>ant17</key> + <value></value> + </param> + <param> + <key>bw17</key> + <value>0</value> + </param> + <param> + <key>center_freq17</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb17</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb17</key> + <value>""</value> + </param> + <param> + <key>norm_gain17</key> + <value>False</value> + </param> + <param> + <key>gain17</key> + <value>0</value> + </param> + <param> + <key>ant18</key> + <value></value> + </param> + <param> + <key>bw18</key> + <value>0</value> + </param> + <param> + <key>center_freq18</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb18</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb18</key> + <value>""</value> + </param> + <param> + <key>norm_gain18</key> + <value>False</value> + </param> + <param> + <key>gain18</key> + <value>0</value> + </param> + <param> + <key>ant19</key> + <value></value> + </param> + <param> + <key>bw19</key> + <value>0</value> + </param> + <param> + <key>center_freq19</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb19</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb19</key> + <value>""</value> + </param> + <param> + <key>norm_gain19</key> + <value>False</value> + </param> + <param> + <key>gain19</key> + <value>0</value> + </param> + <param> + <key>ant1</key> + <value></value> + </param> + <param> + <key>bw1</key> + <value>0</value> + </param> + <param> + <key>center_freq1</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb1</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb1</key> + <value>""</value> + </param> + <param> + <key>norm_gain1</key> + <value>False</value> + </param> + <param> + <key>gain1</key> + <value>0</value> + </param> + <param> + <key>ant20</key> + <value></value> + </param> + <param> + <key>bw20</key> + <value>0</value> + </param> + <param> + <key>center_freq20</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb20</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb20</key> + <value>""</value> + </param> + <param> + <key>norm_gain20</key> + <value>False</value> + </param> + <param> + <key>gain20</key> + <value>0</value> + </param> + <param> + <key>ant21</key> + <value></value> + </param> + <param> + <key>bw21</key> + <value>0</value> + </param> + <param> + <key>center_freq21</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb21</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb21</key> + <value>""</value> + </param> + <param> + <key>norm_gain21</key> + <value>False</value> + </param> + <param> + <key>gain21</key> + <value>0</value> + </param> + <param> + <key>ant22</key> + <value></value> + </param> + <param> + <key>bw22</key> + <value>0</value> + </param> + <param> + <key>center_freq22</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb22</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb22</key> + <value>""</value> + </param> + <param> + <key>norm_gain22</key> + <value>False</value> + </param> + <param> + <key>gain22</key> + <value>0</value> + </param> + <param> + <key>ant23</key> + <value></value> + </param> + <param> + <key>bw23</key> + <value>0</value> + </param> + <param> + <key>center_freq23</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb23</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb23</key> + <value>""</value> + </param> + <param> + <key>norm_gain23</key> + <value>False</value> + </param> + <param> + <key>gain23</key> + <value>0</value> + </param> + <param> + <key>ant24</key> + <value></value> + </param> + <param> + <key>bw24</key> + <value>0</value> + </param> + <param> + <key>center_freq24</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb24</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb24</key> + <value>""</value> + </param> + <param> + <key>norm_gain24</key> + <value>False</value> + </param> + <param> + <key>gain24</key> + <value>0</value> + </param> + <param> + <key>ant25</key> + <value></value> + </param> + <param> + <key>bw25</key> + <value>0</value> + </param> + <param> + <key>center_freq25</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb25</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb25</key> + <value>""</value> + </param> + <param> + <key>norm_gain25</key> + <value>False</value> + </param> + <param> + <key>gain25</key> + <value>0</value> + </param> + <param> + <key>ant26</key> + <value></value> + </param> + <param> + <key>bw26</key> + <value>0</value> + </param> + <param> + <key>center_freq26</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb26</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb26</key> + <value>""</value> + </param> + <param> + <key>norm_gain26</key> + <value>False</value> + </param> + <param> + <key>gain26</key> + <value>0</value> + </param> + <param> + <key>ant27</key> + <value></value> + </param> + <param> + <key>bw27</key> + <value>0</value> + </param> + <param> + <key>center_freq27</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb27</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb27</key> + <value>""</value> + </param> + <param> + <key>norm_gain27</key> + <value>False</value> + </param> + <param> + <key>gain27</key> + <value>0</value> + </param> + <param> + <key>ant28</key> + <value></value> + </param> + <param> + <key>bw28</key> + <value>0</value> + </param> + <param> + <key>center_freq28</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb28</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb28</key> + <value>""</value> + </param> + <param> + <key>norm_gain28</key> + <value>False</value> + </param> + <param> + <key>gain28</key> + <value>0</value> + </param> + <param> + <key>ant29</key> + <value></value> + </param> + <param> + <key>bw29</key> + <value>0</value> + </param> + <param> + <key>center_freq29</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb29</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb29</key> + <value>""</value> + </param> + <param> + <key>norm_gain29</key> + <value>False</value> + </param> + <param> + <key>gain29</key> + <value>0</value> + </param> + <param> + <key>ant2</key> + <value></value> + </param> + <param> + <key>bw2</key> + <value>0</value> + </param> + <param> + <key>center_freq2</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb2</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb2</key> + <value>""</value> + </param> + <param> + <key>norm_gain2</key> + <value>False</value> + </param> + <param> + <key>gain2</key> + <value>0</value> + </param> + <param> + <key>ant30</key> + <value></value> + </param> + <param> + <key>bw30</key> + <value>0</value> + </param> + <param> + <key>center_freq30</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb30</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb30</key> + <value>""</value> + </param> + <param> + <key>norm_gain30</key> + <value>False</value> + </param> + <param> + <key>gain30</key> + <value>0</value> + </param> + <param> + <key>ant31</key> + <value></value> + </param> + <param> + <key>bw31</key> + <value>0</value> + </param> + <param> + <key>center_freq31</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb31</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb31</key> + <value>""</value> + </param> + <param> + <key>norm_gain31</key> + <value>False</value> + </param> + <param> + <key>gain31</key> + <value>0</value> + </param> + <param> + <key>ant3</key> + <value></value> + </param> + <param> + <key>bw3</key> + <value>0</value> + </param> + <param> + <key>center_freq3</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb3</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb3</key> + <value>""</value> + </param> + <param> + <key>norm_gain3</key> + <value>False</value> + </param> + <param> + <key>gain3</key> + <value>0</value> + </param> + <param> + <key>ant4</key> + <value></value> + </param> + <param> + <key>bw4</key> + <value>0</value> + </param> + <param> + <key>center_freq4</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb4</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb4</key> + <value>""</value> + </param> + <param> + <key>norm_gain4</key> + <value>False</value> + </param> + <param> + <key>gain4</key> + <value>0</value> + </param> + <param> + <key>ant5</key> + <value></value> + </param> + <param> + <key>bw5</key> + <value>0</value> + </param> + <param> + <key>center_freq5</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb5</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb5</key> + <value>""</value> + </param> + <param> + <key>norm_gain5</key> + <value>False</value> + </param> + <param> + <key>gain5</key> + <value>0</value> + </param> + <param> + <key>ant6</key> + <value></value> + </param> + <param> + <key>bw6</key> + <value>0</value> + </param> + <param> + <key>center_freq6</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb6</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb6</key> + <value>""</value> + </param> + <param> + <key>norm_gain6</key> + <value>False</value> + </param> + <param> + <key>gain6</key> + <value>0</value> + </param> + <param> + <key>ant7</key> + <value></value> + </param> + <param> + <key>bw7</key> + <value>0</value> + </param> + <param> + <key>center_freq7</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb7</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb7</key> + <value>""</value> + </param> + <param> + <key>norm_gain7</key> + <value>False</value> + </param> + <param> + <key>gain7</key> + <value>0</value> + </param> + <param> + <key>ant8</key> + <value></value> + </param> + <param> + <key>bw8</key> + <value>0</value> + </param> + <param> + <key>center_freq8</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb8</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb8</key> + <value>""</value> + </param> + <param> + <key>norm_gain8</key> + <value>False</value> + </param> + <param> + <key>gain8</key> + <value>0</value> + </param> + <param> + <key>ant9</key> + <value></value> + </param> + <param> + <key>bw9</key> + <value>0</value> + </param> + <param> + <key>center_freq9</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb9</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb9</key> + <value>""</value> + </param> + <param> + <key>norm_gain9</key> + <value>False</value> + </param> + <param> + <key>gain9</key> + <value>0</value> + </param> + <param> + <key>clock_rate</key> + <value>0.0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dev_addr</key> + <value>addr=192.168.10.2</value> + </param> + <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 171)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>uhd_usrp_source_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>clock_source0</key> + <value>gpsdo</value> + </param> + <param> + <key>sd_spec0</key> + <value></value> + </param> + <param> + <key>time_source0</key> + <value>gpsdo</value> + </param> + <param> + <key>clock_source1</key> + <value></value> + </param> + <param> + <key>sd_spec1</key> + <value></value> + </param> + <param> + <key>time_source1</key> + <value></value> + </param> + <param> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>sd_spec2</key> + <value></value> + </param> + <param> + <key>time_source2</key> + <value></value> + </param> + <param> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>sd_spec3</key> + <value></value> + </param> + <param> + <key>time_source3</key> + <value></value> + </param> + <param> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>sd_spec4</key> + <value></value> + </param> + <param> + <key>time_source4</key> + <value></value> + </param> + <param> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>sd_spec5</key> + <value></value> + </param> + <param> + <key>time_source5</key> + <value></value> + </param> + <param> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>sd_spec6</key> + <value></value> + </param> + <param> + <key>time_source6</key> + <value></value> + </param> + <param> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>sd_spec7</key> + <value></value> + </param> + <param> + <key>time_source7</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>nchan</key> + <value>1</value> + </param> + <param> + <key>num_mboards</key> + <value>1</value> + </param> + <param> + <key>type</key> + <value>fc32</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>hide_cmd_port</key> + <value>False</value> + </param> + <param> + <key>stream_args</key> + <value></value> + </param> + <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> + <key>sync</key> + <value></value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + </block> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_1</source_block_id> + <sink_block_id>packet_rx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_fll_band_edge_cc_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>blocks_message_debug_0_0_0</sink_block_id> + <source_key>pkt out</source_key> + <sink_key>print_pdu</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0_0_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1_0_0_1</sink_block_id> + <source_key>2</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>uhd_usrp_source_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>uhd_usrp_source_0</source_block_id> + <sink_block_id>digital_fll_band_edge_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/uhd_packet_rx_tun.grc b/gr-digital/examples/packet/uhd_packet_rx_tun.grc new file mode 100644 index 0000000000..c64cd95b28 --- /dev/null +++ b/gr-digital/examples/packet/uhd_packet_rx_tun.grc @@ -0,0 +1,4143 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Thu Dec 4 14:34:25 2014</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>2000,2000</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>uhd_packet_rx_tun</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(240, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_HDR</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_4()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(560, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>4</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_4()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>500</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 595)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>amp</value> + </param> + <param> + <key>label</key> + <value>Amplitude</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>10</value> + </param> + <param> + <key>stop</key> + <value>15000</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>1</value> + </param> + <param> + <key>dim2</key> + <value>4</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>state_end</key> + <value>-1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(680, 555)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</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_TERMINATED</value> + </param> + </block> + <block> + <key>variable_dummy_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(496, 555)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(480, 635)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + <param> + <key>prob</key> + <value>0.5</value> + </param> + </block> + <block> + <key>variable_dummy_decoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(592, 475)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>dec_hdr</value> + </param> + <param> + <key>value</key> + <value>"ok"</value> + </param> + <param> + <key>ndim</key> + <value>0</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>(152, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>484e6</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(176, 467)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>label</key> + <value>Frequency</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>400e6</value> + </param> + <param> + <key>step</key> + <value>100</value> + </param> + <param> + <key>stop</key> + <value>500e6</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>20</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 595)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>gain</value> + </param> + <param> + <key>label</key> + <value>Gain</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>0.5</value> + </param> + <param> + <key>stop</key> + <value>31.5</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 14)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</key> + <value>3</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(760, 85)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_counter(digital.packet_utils.default_access_code, 3, Const_PLD.bits_per_symbol())</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>(904, 619)</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, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + </block> + <block> + <key>variable_qtgui_check_box</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>false</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 635)</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>on</value> + </param> + <param> + <key>label</key> + <value>On</value> + </param> + <param> + <key>true</key> + <value>1</value> + </param> + <param> + <key>type</key> + <value>int</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>(952, 683)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>polys</value> + </param> + <param> + <key>value</key> + <value>[109, 79]</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>(976, 619)</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>(880, 683)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rep</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>rx_rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>11*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>sps*nfilts</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1000e3</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 467)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>label</key> + <value>Sample Rate</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>200e3</value> + </param> + <param> + <key>step</key> + <value>200e3</value> + </param> + <param> + <key>stop</key> + <value>10e6</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>sps</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1120, 73)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>amp</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(320, 163)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>on</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(528, 307)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_1</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_tuntap_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>istunflag</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(992, 179)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tuntap_pdu_0</value> + </param> + <param> + <key>ifn</key> + <value>tun0</value> + </param> + <param> + <key>mtu</key> + <value>10000</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_fll_band_edge_cc</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>rolloff</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(320, 313)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>digital_fll_band_edge_cc_0</value> + </param> + <param> + <key>w</key> + <value>0.05</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>filter_size</key> + <value>44</value> + </param> + <param> + <key>samps_per_sym</key> + <value>sps</value> + </param> + <param> + <key>type</key> + <value>cc</value> + </param> + </block> + <block> + <key>packet_rx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>eb</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(696, 201)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>hdr_dec</key> + <value>dec_hdr</value> + </param> + <param> + <key>hdr_format</key> + <value>digital.header_format_default(digital.packet_utils.default_access_code, 0)</value> + </param> + <param> + <key>hdr_const</key> + <value>Const_HDR</value> + </param> + <param> + <key>id</key> + <value>packet_rx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>pld_dec</key> + <value>dec</value> + </param> + <param> + <key>pld_const</key> + <value>Const_PLD</value> + </param> + <param> + <key>psf_taps</key> + <value>rx_rrc_taps</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 147)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.5</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_NORM</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.01</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(992, 267)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0_0_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>800</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(504, 211)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab1@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>True</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>srate</key> + <value>samp_rate</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0.5e-3</value> + </param> + <param> + <key>tr_level</key> + <value>0.5</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_NORM</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.01</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(992, 331)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1_0_0_1</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>3</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1250</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>25</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_TAG</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>"time_est"</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 467)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab0</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Const.</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Const.</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(312, 547)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab1</value> + </param> + <param> + <key>label0</key> + <value>Const</value> + </param> + <param> + <key>label1</key> + <value>Time</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Const.</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>2</value> + </param> + </block> + <block> + <key>uhd_usrp_source</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>ant0</key> + <value>TX/RX</value> + </param> + <param> + <key>bw0</key> + <value>0</value> + </param> + <param> + <key>center_freq0</key> + <value>uhd.tune_request(freq, samp_rate/2.0)</value> + </param> + <param> + <key>dc_offs_enb0</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb0</key> + <value>""</value> + </param> + <param> + <key>norm_gain0</key> + <value>False</value> + </param> + <param> + <key>gain0</key> + <value>gain</value> + </param> + <param> + <key>ant10</key> + <value></value> + </param> + <param> + <key>bw10</key> + <value>0</value> + </param> + <param> + <key>center_freq10</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb10</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb10</key> + <value>""</value> + </param> + <param> + <key>norm_gain10</key> + <value>False</value> + </param> + <param> + <key>gain10</key> + <value>0</value> + </param> + <param> + <key>ant11</key> + <value></value> + </param> + <param> + <key>bw11</key> + <value>0</value> + </param> + <param> + <key>center_freq11</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb11</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb11</key> + <value>""</value> + </param> + <param> + <key>norm_gain11</key> + <value>False</value> + </param> + <param> + <key>gain11</key> + <value>0</value> + </param> + <param> + <key>ant12</key> + <value></value> + </param> + <param> + <key>bw12</key> + <value>0</value> + </param> + <param> + <key>center_freq12</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb12</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb12</key> + <value>""</value> + </param> + <param> + <key>norm_gain12</key> + <value>False</value> + </param> + <param> + <key>gain12</key> + <value>0</value> + </param> + <param> + <key>ant13</key> + <value></value> + </param> + <param> + <key>bw13</key> + <value>0</value> + </param> + <param> + <key>center_freq13</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb13</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb13</key> + <value>""</value> + </param> + <param> + <key>norm_gain13</key> + <value>False</value> + </param> + <param> + <key>gain13</key> + <value>0</value> + </param> + <param> + <key>ant14</key> + <value></value> + </param> + <param> + <key>bw14</key> + <value>0</value> + </param> + <param> + <key>center_freq14</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb14</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb14</key> + <value>""</value> + </param> + <param> + <key>norm_gain14</key> + <value>False</value> + </param> + <param> + <key>gain14</key> + <value>0</value> + </param> + <param> + <key>ant15</key> + <value></value> + </param> + <param> + <key>bw15</key> + <value>0</value> + </param> + <param> + <key>center_freq15</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb15</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb15</key> + <value>""</value> + </param> + <param> + <key>norm_gain15</key> + <value>False</value> + </param> + <param> + <key>gain15</key> + <value>0</value> + </param> + <param> + <key>ant16</key> + <value></value> + </param> + <param> + <key>bw16</key> + <value>0</value> + </param> + <param> + <key>center_freq16</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb16</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb16</key> + <value>""</value> + </param> + <param> + <key>norm_gain16</key> + <value>False</value> + </param> + <param> + <key>gain16</key> + <value>0</value> + </param> + <param> + <key>ant17</key> + <value></value> + </param> + <param> + <key>bw17</key> + <value>0</value> + </param> + <param> + <key>center_freq17</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb17</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb17</key> + <value>""</value> + </param> + <param> + <key>norm_gain17</key> + <value>False</value> + </param> + <param> + <key>gain17</key> + <value>0</value> + </param> + <param> + <key>ant18</key> + <value></value> + </param> + <param> + <key>bw18</key> + <value>0</value> + </param> + <param> + <key>center_freq18</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb18</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb18</key> + <value>""</value> + </param> + <param> + <key>norm_gain18</key> + <value>False</value> + </param> + <param> + <key>gain18</key> + <value>0</value> + </param> + <param> + <key>ant19</key> + <value></value> + </param> + <param> + <key>bw19</key> + <value>0</value> + </param> + <param> + <key>center_freq19</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb19</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb19</key> + <value>""</value> + </param> + <param> + <key>norm_gain19</key> + <value>False</value> + </param> + <param> + <key>gain19</key> + <value>0</value> + </param> + <param> + <key>ant1</key> + <value></value> + </param> + <param> + <key>bw1</key> + <value>0</value> + </param> + <param> + <key>center_freq1</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb1</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb1</key> + <value>""</value> + </param> + <param> + <key>norm_gain1</key> + <value>False</value> + </param> + <param> + <key>gain1</key> + <value>0</value> + </param> + <param> + <key>ant20</key> + <value></value> + </param> + <param> + <key>bw20</key> + <value>0</value> + </param> + <param> + <key>center_freq20</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb20</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb20</key> + <value>""</value> + </param> + <param> + <key>norm_gain20</key> + <value>False</value> + </param> + <param> + <key>gain20</key> + <value>0</value> + </param> + <param> + <key>ant21</key> + <value></value> + </param> + <param> + <key>bw21</key> + <value>0</value> + </param> + <param> + <key>center_freq21</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb21</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb21</key> + <value>""</value> + </param> + <param> + <key>norm_gain21</key> + <value>False</value> + </param> + <param> + <key>gain21</key> + <value>0</value> + </param> + <param> + <key>ant22</key> + <value></value> + </param> + <param> + <key>bw22</key> + <value>0</value> + </param> + <param> + <key>center_freq22</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb22</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb22</key> + <value>""</value> + </param> + <param> + <key>norm_gain22</key> + <value>False</value> + </param> + <param> + <key>gain22</key> + <value>0</value> + </param> + <param> + <key>ant23</key> + <value></value> + </param> + <param> + <key>bw23</key> + <value>0</value> + </param> + <param> + <key>center_freq23</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb23</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb23</key> + <value>""</value> + </param> + <param> + <key>norm_gain23</key> + <value>False</value> + </param> + <param> + <key>gain23</key> + <value>0</value> + </param> + <param> + <key>ant24</key> + <value></value> + </param> + <param> + <key>bw24</key> + <value>0</value> + </param> + <param> + <key>center_freq24</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb24</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb24</key> + <value>""</value> + </param> + <param> + <key>norm_gain24</key> + <value>False</value> + </param> + <param> + <key>gain24</key> + <value>0</value> + </param> + <param> + <key>ant25</key> + <value></value> + </param> + <param> + <key>bw25</key> + <value>0</value> + </param> + <param> + <key>center_freq25</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb25</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb25</key> + <value>""</value> + </param> + <param> + <key>norm_gain25</key> + <value>False</value> + </param> + <param> + <key>gain25</key> + <value>0</value> + </param> + <param> + <key>ant26</key> + <value></value> + </param> + <param> + <key>bw26</key> + <value>0</value> + </param> + <param> + <key>center_freq26</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb26</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb26</key> + <value>""</value> + </param> + <param> + <key>norm_gain26</key> + <value>False</value> + </param> + <param> + <key>gain26</key> + <value>0</value> + </param> + <param> + <key>ant27</key> + <value></value> + </param> + <param> + <key>bw27</key> + <value>0</value> + </param> + <param> + <key>center_freq27</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb27</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb27</key> + <value>""</value> + </param> + <param> + <key>norm_gain27</key> + <value>False</value> + </param> + <param> + <key>gain27</key> + <value>0</value> + </param> + <param> + <key>ant28</key> + <value></value> + </param> + <param> + <key>bw28</key> + <value>0</value> + </param> + <param> + <key>center_freq28</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb28</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb28</key> + <value>""</value> + </param> + <param> + <key>norm_gain28</key> + <value>False</value> + </param> + <param> + <key>gain28</key> + <value>0</value> + </param> + <param> + <key>ant29</key> + <value></value> + </param> + <param> + <key>bw29</key> + <value>0</value> + </param> + <param> + <key>center_freq29</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb29</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb29</key> + <value>""</value> + </param> + <param> + <key>norm_gain29</key> + <value>False</value> + </param> + <param> + <key>gain29</key> + <value>0</value> + </param> + <param> + <key>ant2</key> + <value></value> + </param> + <param> + <key>bw2</key> + <value>0</value> + </param> + <param> + <key>center_freq2</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb2</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb2</key> + <value>""</value> + </param> + <param> + <key>norm_gain2</key> + <value>False</value> + </param> + <param> + <key>gain2</key> + <value>0</value> + </param> + <param> + <key>ant30</key> + <value></value> + </param> + <param> + <key>bw30</key> + <value>0</value> + </param> + <param> + <key>center_freq30</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb30</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb30</key> + <value>""</value> + </param> + <param> + <key>norm_gain30</key> + <value>False</value> + </param> + <param> + <key>gain30</key> + <value>0</value> + </param> + <param> + <key>ant31</key> + <value></value> + </param> + <param> + <key>bw31</key> + <value>0</value> + </param> + <param> + <key>center_freq31</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb31</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb31</key> + <value>""</value> + </param> + <param> + <key>norm_gain31</key> + <value>False</value> + </param> + <param> + <key>gain31</key> + <value>0</value> + </param> + <param> + <key>ant3</key> + <value></value> + </param> + <param> + <key>bw3</key> + <value>0</value> + </param> + <param> + <key>center_freq3</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb3</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb3</key> + <value>""</value> + </param> + <param> + <key>norm_gain3</key> + <value>False</value> + </param> + <param> + <key>gain3</key> + <value>0</value> + </param> + <param> + <key>ant4</key> + <value></value> + </param> + <param> + <key>bw4</key> + <value>0</value> + </param> + <param> + <key>center_freq4</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb4</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb4</key> + <value>""</value> + </param> + <param> + <key>norm_gain4</key> + <value>False</value> + </param> + <param> + <key>gain4</key> + <value>0</value> + </param> + <param> + <key>ant5</key> + <value></value> + </param> + <param> + <key>bw5</key> + <value>0</value> + </param> + <param> + <key>center_freq5</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb5</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb5</key> + <value>""</value> + </param> + <param> + <key>norm_gain5</key> + <value>False</value> + </param> + <param> + <key>gain5</key> + <value>0</value> + </param> + <param> + <key>ant6</key> + <value></value> + </param> + <param> + <key>bw6</key> + <value>0</value> + </param> + <param> + <key>center_freq6</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb6</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb6</key> + <value>""</value> + </param> + <param> + <key>norm_gain6</key> + <value>False</value> + </param> + <param> + <key>gain6</key> + <value>0</value> + </param> + <param> + <key>ant7</key> + <value></value> + </param> + <param> + <key>bw7</key> + <value>0</value> + </param> + <param> + <key>center_freq7</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb7</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb7</key> + <value>""</value> + </param> + <param> + <key>norm_gain7</key> + <value>False</value> + </param> + <param> + <key>gain7</key> + <value>0</value> + </param> + <param> + <key>ant8</key> + <value></value> + </param> + <param> + <key>bw8</key> + <value>0</value> + </param> + <param> + <key>center_freq8</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb8</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb8</key> + <value>""</value> + </param> + <param> + <key>norm_gain8</key> + <value>False</value> + </param> + <param> + <key>gain8</key> + <value>0</value> + </param> + <param> + <key>ant9</key> + <value></value> + </param> + <param> + <key>bw9</key> + <value>0</value> + </param> + <param> + <key>center_freq9</key> + <value>0</value> + </param> + <param> + <key>dc_offs_enb9</key> + <value>""</value> + </param> + <param> + <key>iq_imbal_enb9</key> + <value>""</value> + </param> + <param> + <key>norm_gain9</key> + <value>False</value> + </param> + <param> + <key>gain9</key> + <value>0</value> + </param> + <param> + <key>clock_rate</key> + <value>0.0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dev_addr</key> + <value>addr=192.168.10.2</value> + </param> + <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(48, 171)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>uhd_usrp_source_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>clock_source0</key> + <value>gpsdo</value> + </param> + <param> + <key>sd_spec0</key> + <value></value> + </param> + <param> + <key>time_source0</key> + <value>gpsdo</value> + </param> + <param> + <key>clock_source1</key> + <value></value> + </param> + <param> + <key>sd_spec1</key> + <value></value> + </param> + <param> + <key>time_source1</key> + <value></value> + </param> + <param> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>sd_spec2</key> + <value></value> + </param> + <param> + <key>time_source2</key> + <value></value> + </param> + <param> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>sd_spec3</key> + <value></value> + </param> + <param> + <key>time_source3</key> + <value></value> + </param> + <param> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>sd_spec4</key> + <value></value> + </param> + <param> + <key>time_source4</key> + <value></value> + </param> + <param> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>sd_spec5</key> + <value></value> + </param> + <param> + <key>time_source5</key> + <value></value> + </param> + <param> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>sd_spec6</key> + <value></value> + </param> + <param> + <key>time_source6</key> + <value></value> + </param> + <param> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>sd_spec7</key> + <value></value> + </param> + <param> + <key>time_source7</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>nchan</key> + <value>1</value> + </param> + <param> + <key>num_mboards</key> + <value>1</value> + </param> + <param> + <key>type</key> + <value>fc32</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>hide_cmd_port</key> + <value>False</value> + </param> + <param> + <key>stream_args</key> + <value></value> + </param> + <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> + <key>sync</key> + <value></value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + </block> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_1</source_block_id> + <sink_block_id>packet_rx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_fll_band_edge_cc_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>pkt out</source_key> + <sink_key>print_pdu</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>blocks_tuntap_pdu_0</sink_block_id> + <source_key>pkt out</source_key> + <sink_key>pdus</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0_0_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_rx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1_0_0_1</sink_block_id> + <source_key>2</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>uhd_usrp_source_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>uhd_usrp_source_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>uhd_usrp_source_0</source_block_id> + <sink_block_id>digital_fll_band_edge_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/uhd_packet_tx.grc b/gr-digital/examples/packet/uhd_packet_tx.grc new file mode 100644 index 0000000000..2bc5ae7a38 --- /dev/null +++ b/gr-digital/examples/packet/uhd_packet_tx.grc @@ -0,0 +1,3293 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Thu Dec 4 14:34:25 2014</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>2000,2000</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>uhd_packet_tx</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(240, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_HDR</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_4()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(560, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>4</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_4()[1]</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>0.5</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(576, 683)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>amp</value> + </param> + <param> + <key>label</key> + <value>Amplitude</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>0.005</value> + </param> + <param> + <key>stop</key> + <value>0.9</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>(152, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</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>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>1500*8</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 467)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</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_TERMINATED</value> + </param> + </block> + <block> + <key>variable_dummy_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 467)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 547)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + </block> + <block> + <key>variable_dummy_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(440, 467)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc_hdr</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>483e6-300</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(576, 555)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>label</key> + <value>Frequency</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>50e6</value> + </param> + <param> + <key>step</key> + <value>500e3</value> + </param> + <param> + <key>stop</key> + <value>3e9</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>50</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(448, 683)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>gain</value> + </param> + <param> + <key>label</key> + <value>Gain</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>stop</key> + <value>83</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(752, 14)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</key> + <value>3</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(752, 85)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_counter(digital.packet_utils.default_access_code, 3, Const_PLD.bits_per_symbol())</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>(272, 651)</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, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</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>(1272, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>ntaps</value> + </param> + <param> + <key>value</key> + <value>len(tx_rrc_taps)</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>(320, 715)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>polys</value> + </param> + <param> + <key>value</key> + <value>[109, 79]</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>(344, 651)</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>(248, 715)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rep</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1000e3</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(448, 555)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>label</key> + <value>Sample Rate</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>200e3</value> + </param> + <param> + <key>step</key> + <value>200e3</value> + </param> + <param> + <key>stop</key> + <value>10e6</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>sps</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(944, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>tx_rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>5*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>nfilts</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(936, 297)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_message_strobe</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(32, 203)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_strobe_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>msg</key> + <value>pmt.intern("TEST")</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>period</key> + <value>2000</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>amp</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_random_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>mask</key> + <value>0xff</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(240, 187)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_random_pdu_0</value> + </param> + <param> + <key>length_modulo</key> + <value>1</value> + </param> + <param> + <key>maxsize</key> + <value>150</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minsize</key> + <value>15</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_tag_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>display</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(1472, 275)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tag_debug_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>filter</key> + <value>packet_len</value> + </param> + <param> + <key>name</key> + <value></value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>packet_tx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(496, 163)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>hdr_enc</key> + <value>enc_hdr</value> + </param> + <param> + <key>hdr_format</key> + <value>digital.header_format_default(digital.packet_utils.default_access_code, 0)</value> + </param> + <param> + <key>hdr_const</key> + <value>Const_HDR</value> + </param> + <param> + <key>id</key> + <value>packet_tx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>pld_enc</key> + <value>enc</value> + </param> + <param> + <key>pld_const</key> + <value>Const_PLD</value> + </param> + <param> + <key>psf_taps</key> + <value>tx_rrc_taps</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1264, 475)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>bw</key> + <value>1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>_coordinate</key> + <value>(1264, 395)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>showports</key> + <value>True</value> + </param> + <param> + <key>freqhalf</key> + <value>True</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1264, 315)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>2500</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1096, 11)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,0,1,2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab0</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Freq.</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Const.</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>3</value> + </param> + </block> + <block> + <key>uhd_usrp_sink</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>ant0</key> + <value>TX/RX</value> + </param> + <param> + <key>bw0</key> + <value>0</value> + </param> + <param> + <key>center_freq0</key> + <value>uhd.tune_request(freq, samp_rate/2.0)</value> + </param> + <param> + <key>norm_gain0</key> + <value>False</value> + </param> + <param> + <key>gain0</key> + <value>gain</value> + </param> + <param> + <key>ant10</key> + <value></value> + </param> + <param> + <key>bw10</key> + <value>0</value> + </param> + <param> + <key>center_freq10</key> + <value>0</value> + </param> + <param> + <key>norm_gain10</key> + <value>False</value> + </param> + <param> + <key>gain10</key> + <value>0</value> + </param> + <param> + <key>ant11</key> + <value></value> + </param> + <param> + <key>bw11</key> + <value>0</value> + </param> + <param> + <key>center_freq11</key> + <value>0</value> + </param> + <param> + <key>norm_gain11</key> + <value>False</value> + </param> + <param> + <key>gain11</key> + <value>0</value> + </param> + <param> + <key>ant12</key> + <value></value> + </param> + <param> + <key>bw12</key> + <value>0</value> + </param> + <param> + <key>center_freq12</key> + <value>0</value> + </param> + <param> + <key>norm_gain12</key> + <value>False</value> + </param> + <param> + <key>gain12</key> + <value>0</value> + </param> + <param> + <key>ant13</key> + <value></value> + </param> + <param> + <key>bw13</key> + <value>0</value> + </param> + <param> + <key>center_freq13</key> + <value>0</value> + </param> + <param> + <key>norm_gain13</key> + <value>False</value> + </param> + <param> + <key>gain13</key> + <value>0</value> + </param> + <param> + <key>ant14</key> + <value></value> + </param> + <param> + <key>bw14</key> + <value>0</value> + </param> + <param> + <key>center_freq14</key> + <value>0</value> + </param> + <param> + <key>norm_gain14</key> + <value>False</value> + </param> + <param> + <key>gain14</key> + <value>0</value> + </param> + <param> + <key>ant15</key> + <value></value> + </param> + <param> + <key>bw15</key> + <value>0</value> + </param> + <param> + <key>center_freq15</key> + <value>0</value> + </param> + <param> + <key>norm_gain15</key> + <value>False</value> + </param> + <param> + <key>gain15</key> + <value>0</value> + </param> + <param> + <key>ant16</key> + <value></value> + </param> + <param> + <key>bw16</key> + <value>0</value> + </param> + <param> + <key>center_freq16</key> + <value>0</value> + </param> + <param> + <key>norm_gain16</key> + <value>False</value> + </param> + <param> + <key>gain16</key> + <value>0</value> + </param> + <param> + <key>ant17</key> + <value></value> + </param> + <param> + <key>bw17</key> + <value>0</value> + </param> + <param> + <key>center_freq17</key> + <value>0</value> + </param> + <param> + <key>norm_gain17</key> + <value>False</value> + </param> + <param> + <key>gain17</key> + <value>0</value> + </param> + <param> + <key>ant18</key> + <value></value> + </param> + <param> + <key>bw18</key> + <value>0</value> + </param> + <param> + <key>center_freq18</key> + <value>0</value> + </param> + <param> + <key>norm_gain18</key> + <value>False</value> + </param> + <param> + <key>gain18</key> + <value>0</value> + </param> + <param> + <key>ant19</key> + <value></value> + </param> + <param> + <key>bw19</key> + <value>0</value> + </param> + <param> + <key>center_freq19</key> + <value>0</value> + </param> + <param> + <key>norm_gain19</key> + <value>False</value> + </param> + <param> + <key>gain19</key> + <value>0</value> + </param> + <param> + <key>ant1</key> + <value></value> + </param> + <param> + <key>bw1</key> + <value>0</value> + </param> + <param> + <key>center_freq1</key> + <value>0</value> + </param> + <param> + <key>norm_gain1</key> + <value>False</value> + </param> + <param> + <key>gain1</key> + <value>0</value> + </param> + <param> + <key>ant20</key> + <value></value> + </param> + <param> + <key>bw20</key> + <value>0</value> + </param> + <param> + <key>center_freq20</key> + <value>0</value> + </param> + <param> + <key>norm_gain20</key> + <value>False</value> + </param> + <param> + <key>gain20</key> + <value>0</value> + </param> + <param> + <key>ant21</key> + <value></value> + </param> + <param> + <key>bw21</key> + <value>0</value> + </param> + <param> + <key>center_freq21</key> + <value>0</value> + </param> + <param> + <key>norm_gain21</key> + <value>False</value> + </param> + <param> + <key>gain21</key> + <value>0</value> + </param> + <param> + <key>ant22</key> + <value></value> + </param> + <param> + <key>bw22</key> + <value>0</value> + </param> + <param> + <key>center_freq22</key> + <value>0</value> + </param> + <param> + <key>norm_gain22</key> + <value>False</value> + </param> + <param> + <key>gain22</key> + <value>0</value> + </param> + <param> + <key>ant23</key> + <value></value> + </param> + <param> + <key>bw23</key> + <value>0</value> + </param> + <param> + <key>center_freq23</key> + <value>0</value> + </param> + <param> + <key>norm_gain23</key> + <value>False</value> + </param> + <param> + <key>gain23</key> + <value>0</value> + </param> + <param> + <key>ant24</key> + <value></value> + </param> + <param> + <key>bw24</key> + <value>0</value> + </param> + <param> + <key>center_freq24</key> + <value>0</value> + </param> + <param> + <key>norm_gain24</key> + <value>False</value> + </param> + <param> + <key>gain24</key> + <value>0</value> + </param> + <param> + <key>ant25</key> + <value></value> + </param> + <param> + <key>bw25</key> + <value>0</value> + </param> + <param> + <key>center_freq25</key> + <value>0</value> + </param> + <param> + <key>norm_gain25</key> + <value>False</value> + </param> + <param> + <key>gain25</key> + <value>0</value> + </param> + <param> + <key>ant26</key> + <value></value> + </param> + <param> + <key>bw26</key> + <value>0</value> + </param> + <param> + <key>center_freq26</key> + <value>0</value> + </param> + <param> + <key>norm_gain26</key> + <value>False</value> + </param> + <param> + <key>gain26</key> + <value>0</value> + </param> + <param> + <key>ant27</key> + <value></value> + </param> + <param> + <key>bw27</key> + <value>0</value> + </param> + <param> + <key>center_freq27</key> + <value>0</value> + </param> + <param> + <key>norm_gain27</key> + <value>False</value> + </param> + <param> + <key>gain27</key> + <value>0</value> + </param> + <param> + <key>ant28</key> + <value></value> + </param> + <param> + <key>bw28</key> + <value>0</value> + </param> + <param> + <key>center_freq28</key> + <value>0</value> + </param> + <param> + <key>norm_gain28</key> + <value>False</value> + </param> + <param> + <key>gain28</key> + <value>0</value> + </param> + <param> + <key>ant29</key> + <value></value> + </param> + <param> + <key>bw29</key> + <value>0</value> + </param> + <param> + <key>center_freq29</key> + <value>0</value> + </param> + <param> + <key>norm_gain29</key> + <value>False</value> + </param> + <param> + <key>gain29</key> + <value>0</value> + </param> + <param> + <key>ant2</key> + <value></value> + </param> + <param> + <key>bw2</key> + <value>0</value> + </param> + <param> + <key>center_freq2</key> + <value>0</value> + </param> + <param> + <key>norm_gain2</key> + <value>False</value> + </param> + <param> + <key>gain2</key> + <value>0</value> + </param> + <param> + <key>ant30</key> + <value></value> + </param> + <param> + <key>bw30</key> + <value>0</value> + </param> + <param> + <key>center_freq30</key> + <value>0</value> + </param> + <param> + <key>norm_gain30</key> + <value>False</value> + </param> + <param> + <key>gain30</key> + <value>0</value> + </param> + <param> + <key>ant31</key> + <value></value> + </param> + <param> + <key>bw31</key> + <value>0</value> + </param> + <param> + <key>center_freq31</key> + <value>0</value> + </param> + <param> + <key>norm_gain31</key> + <value>False</value> + </param> + <param> + <key>gain31</key> + <value>0</value> + </param> + <param> + <key>ant3</key> + <value></value> + </param> + <param> + <key>bw3</key> + <value>0</value> + </param> + <param> + <key>center_freq3</key> + <value>0</value> + </param> + <param> + <key>norm_gain3</key> + <value>False</value> + </param> + <param> + <key>gain3</key> + <value>0</value> + </param> + <param> + <key>ant4</key> + <value></value> + </param> + <param> + <key>bw4</key> + <value>0</value> + </param> + <param> + <key>center_freq4</key> + <value>0</value> + </param> + <param> + <key>norm_gain4</key> + <value>False</value> + </param> + <param> + <key>gain4</key> + <value>0</value> + </param> + <param> + <key>ant5</key> + <value></value> + </param> + <param> + <key>bw5</key> + <value>0</value> + </param> + <param> + <key>center_freq5</key> + <value>0</value> + </param> + <param> + <key>norm_gain5</key> + <value>False</value> + </param> + <param> + <key>gain5</key> + <value>0</value> + </param> + <param> + <key>ant6</key> + <value></value> + </param> + <param> + <key>bw6</key> + <value>0</value> + </param> + <param> + <key>center_freq6</key> + <value>0</value> + </param> + <param> + <key>norm_gain6</key> + <value>False</value> + </param> + <param> + <key>gain6</key> + <value>0</value> + </param> + <param> + <key>ant7</key> + <value></value> + </param> + <param> + <key>bw7</key> + <value>0</value> + </param> + <param> + <key>center_freq7</key> + <value>0</value> + </param> + <param> + <key>norm_gain7</key> + <value>False</value> + </param> + <param> + <key>gain7</key> + <value>0</value> + </param> + <param> + <key>ant8</key> + <value></value> + </param> + <param> + <key>bw8</key> + <value>0</value> + </param> + <param> + <key>center_freq8</key> + <value>0</value> + </param> + <param> + <key>norm_gain8</key> + <value>False</value> + </param> + <param> + <key>gain8</key> + <value>0</value> + </param> + <param> + <key>ant9</key> + <value></value> + </param> + <param> + <key>bw9</key> + <value>0</value> + </param> + <param> + <key>center_freq9</key> + <value>0</value> + </param> + <param> + <key>norm_gain9</key> + <value>False</value> + </param> + <param> + <key>gain9</key> + <value>0</value> + </param> + <param> + <key>clock_rate</key> + <value>0.0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dev_addr</key> + <value>""</value> + </param> + <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1264, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>uhd_usrp_sink_0</value> + </param> + <param> + <key>type</key> + <value>fc32</value> + </param> + <param> + <key>clock_source0</key> + <value>gpsdo</value> + </param> + <param> + <key>sd_spec0</key> + <value></value> + </param> + <param> + <key>time_source0</key> + <value>gpsdo</value> + </param> + <param> + <key>clock_source1</key> + <value></value> + </param> + <param> + <key>sd_spec1</key> + <value></value> + </param> + <param> + <key>time_source1</key> + <value></value> + </param> + <param> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>sd_spec2</key> + <value></value> + </param> + <param> + <key>time_source2</key> + <value></value> + </param> + <param> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>sd_spec3</key> + <value></value> + </param> + <param> + <key>time_source3</key> + <value></value> + </param> + <param> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>sd_spec4</key> + <value></value> + </param> + <param> + <key>time_source4</key> + <value></value> + </param> + <param> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>sd_spec5</key> + <value></value> + </param> + <param> + <key>time_source5</key> + <value></value> + </param> + <param> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>sd_spec6</key> + <value></value> + </param> + <param> + <key>time_source6</key> + <value></value> + </param> + <param> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>sd_spec7</key> + <value></value> + </param> + <param> + <key>time_source7</key> + <value></value> + </param> + <param> + <key>nchan</key> + <value>1</value> + </param> + <param> + <key>num_mboards</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>hide_cmd_port</key> + <value>False</value> + </param> + <param> + <key>stream_args</key> + <value></value> + </param> + <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> + <key>sync</key> + <value></value> + </param> + <param> + <key>len_tag_name</key> + <value>packet_len</value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + </block> + <connection> + <source_block_id>blocks_message_strobe_0</source_block_id> + <sink_block_id>blocks_random_pdu_0</sink_block_id> + <source_key>strobe</source_key> + <sink_key>generate</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>blocks_tag_debug_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>uhd_usrp_sink_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_random_pdu_0</source_block_id> + <sink_block_id>packet_tx_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>packet_tx_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_tx_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>postcrc</source_key> + <sink_key>print_pdu</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/packet/uhd_packet_tx_tun.grc b/gr-digital/examples/packet/uhd_packet_tx_tun.grc new file mode 100644 index 0000000000..95fccd4222 --- /dev/null +++ b/gr-digital/examples/packet/uhd_packet_tx_tun.grc @@ -0,0 +1,3236 @@ +<?xml version='1.0' encoding='utf-8'?> +<?grc format='1' created='3.7.10'?> +<flow_graph> + <timestamp>Thu Dec 4 14:34:25 2014</timestamp> + <block> + <key>options</key> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>2000,2000</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>hier_block_src_path</key> + <value>.:</value> + </param> + <param> + <key>id</key> + <value>uhd_packet_tx_tun</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>qt_qss_theme</key> + <value></value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>run_command</key> + <value>{python} -u {filename}</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> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(240, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_HDR</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_2()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(400, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>2</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_2()[1]</value> + </param> + </block> + <block> + <key>variable_constellation</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const_points</key> + <value>digital.psk_4()[0]</value> + </param> + <param> + <key>type</key> + <value>calcdist</value> + </param> + <param> + <key>dims</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(560, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>Const_PLD</value> + </param> + <param> + <key>rot_sym</key> + <value>4</value> + </param> + <param> + <key>soft_dec_lut</key> + <value>'auto'</value> + </param> + <param> + <key>precision</key> + <value>8</value> + </param> + <param> + <key>sym_map</key> + <value>digital.psk_4()[1]</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>0.5</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(576, 683)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>amp</value> + </param> + <param> + <key>label</key> + <value>Amplitude</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>0.005</value> + </param> + <param> + <key>stop</key> + <value>0.9</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>(152, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>eb</value> + </param> + <param> + <key>value</key> + <value>0.22</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>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>1500*8</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 467)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</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_TERMINATED</value> + </param> + </block> + <block> + <key>variable_dummy_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 467)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_repetition_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 547)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + <param> + <key>rep</key> + <value>rep</value> + </param> + </block> + <block> + <key>variable_dummy_encoder_def</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>dim1</key> + <value>1</value> + </param> + <param> + <key>dim2</key> + <value>1</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>framebits</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(440, 467)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>enc_hdr</value> + </param> + <param> + <key>ndim</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>483e6-300</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(576, 555)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,1,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>label</key> + <value>Frequency</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>50e6</value> + </param> + <param> + <key>step</key> + <value>500e3</value> + </param> + <param> + <key>stop</key> + <value>3e9</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>50</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(448, 683)</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>gain</value> + </param> + <param> + <key>label</key> + <value>Gain</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>stop</key> + <value>83</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + </block> + <block> + <key>variable_header_format_default</key> + <param> + <key>access_code</key> + <value>digital.packet_utils.default_access_code</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(752, 14)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format</value> + </param> + <param> + <key>threshold</key> + <value>3</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(752, 85)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>hdr_format_0</value> + </param> + <param> + <key>value</key> + <value>digital.header_format_counter(digital.packet_utils.default_access_code, 3, Const_PLD.bits_per_symbol())</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>(272, 651)</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, 75)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>value</key> + <value>32</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>(1272, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>ntaps</value> + </param> + <param> + <key>value</key> + <value>len(tx_rrc_taps)</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>(320, 715)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>polys</value> + </param> + <param> + <key>value</key> + <value>[109, 79]</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>(344, 651)</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>(248, 715)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>rep</value> + </param> + <param> + <key>value</key> + <value>3</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1000e3</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(448, 555)</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>label</key> + <value>Sample Rate</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>start</key> + <value>200e3</value> + </param> + <param> + <key>step</key> + <value>200e3</value> + </param> + <param> + <key>stop</key> + <value>10e6</value> + </param> + <param> + <key>rangeType</key> + <value>float</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</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>sps</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + </block> + <block> + <key>variable_rrc_filter_taps</key> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>alpha</key> + <value>eb</value> + </param> + <param> + <key>_coordinate</key> + <value>(944, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>gain</key> + <value>nfilts</value> + </param> + <param> + <key>id</key> + <value>tx_rrc_taps</value> + </param> + <param> + <key>ntaps</key> + <value>5*sps*nfilts</value> + </param> + <param> + <key>samp_rate</key> + <value>nfilts</value> + </param> + <param> + <key>sym_rate</key> + <value>1.0</value> + </param> + </block> + <block> + <key>blocks_message_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(936, 297)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_message_debug_0</value> + </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>const</key> + <value>amp</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(952, 211)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_tag_debug</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>display</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(1472, 275)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tag_debug_0</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>filter</key> + <value>packet_len</value> + </param> + <param> + <key>name</key> + <value></value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + </block> + <block> + <key>blocks_tuntap_pdu</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>istunflag</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(272, 195)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>blocks_tuntap_pdu_0</value> + </param> + <param> + <key>ifn</key> + <value>tun0</value> + </param> + <param> + <key>mtu</key> + <value>10000</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + </block> + <block> + <key>packet_tx</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(496, 163)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>hdr_enc</key> + <value>enc_hdr</value> + </param> + <param> + <key>hdr_format</key> + <value>digital.header_format_default(digital.packet_utils.default_access_code, 0)</value> + </param> + <param> + <key>hdr_const</key> + <value>Const_HDR</value> + </param> + <param> + <key>id</key> + <value>packet_tx_0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>pld_enc</key> + <value>enc</value> + </param> + <param> + <key>pld_const</key> + <value>Const_PLD</value> + </param> + <param> + <key>psf_taps</key> + <value>tx_rrc_taps</value> + </param> + <param> + <key>sps</key> + <value>sps</value> + </param> + </block> + <block> + <key>qtgui_const_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</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>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1264, 475)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_const_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>width1</key> + <value>1</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.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"red"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>0</value> + </param> + <param> + <key>style3</key> + <value>0</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>width5</key> + <value>1</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>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>bw</key> + <value>1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>_coordinate</key> + <value>(1264, 395)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@1</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>showports</key> + <value>True</value> + </param> + <param> + <key>freqhalf</key> + <value>True</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>units</key> + <value>dB</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>ctrlpanel</key> + <value>False</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>_enabled</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1264, 315)</value> + </param> + <param> + <key>gui_hint</key> + <value>tab0@0</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>grid</key> + <value>False</value> + </param> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1</value> + </param> + <param> + <key>legend</key> + <value>False</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>size</key> + <value>2500</value> + </param> + <param> + <key>srate</key> + <value>1</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_tag</key> + <value>packet_len</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>ylabel</key> + <value>Amplitude</value> + </param> + <param> + <key>yunit</key> + <value>""</value> + </param> + <param> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>ymin</key> + <value>-2</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1096, 11)</value> + </param> + <param> + <key>gui_hint</key> + <value>2,0,1,2</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>tab0</value> + </param> + <param> + <key>label0</key> + <value>Time</value> + </param> + <param> + <key>label1</key> + <value>Freq.</value> + </param> + <param> + <key>label10</key> + <value>Tab 10</value> + </param> + <param> + <key>label11</key> + <value>Tab 11</value> + </param> + <param> + <key>label12</key> + <value>Tab 12</value> + </param> + <param> + <key>label13</key> + <value>Tab 13</value> + </param> + <param> + <key>label14</key> + <value>Tab 14</value> + </param> + <param> + <key>label15</key> + <value>Tab 15</value> + </param> + <param> + <key>label16</key> + <value>Tab 16</value> + </param> + <param> + <key>label17</key> + <value>Tab 17</value> + </param> + <param> + <key>label18</key> + <value>Tab 18</value> + </param> + <param> + <key>label19</key> + <value>Tab 19</value> + </param> + <param> + <key>label2</key> + <value>Const.</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>label5</key> + <value>Tab 5</value> + </param> + <param> + <key>label6</key> + <value>Tab 6</value> + </param> + <param> + <key>label7</key> + <value>Tab 7</value> + </param> + <param> + <key>label8</key> + <value>Tab 8</value> + </param> + <param> + <key>label9</key> + <value>Tab 9</value> + </param> + <param> + <key>num_tabs</key> + <value>3</value> + </param> + </block> + <block> + <key>uhd_usrp_sink</key> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>ant0</key> + <value>TX/RX</value> + </param> + <param> + <key>bw0</key> + <value>0</value> + </param> + <param> + <key>center_freq0</key> + <value>uhd.tune_request(freq, samp_rate/2.0)</value> + </param> + <param> + <key>norm_gain0</key> + <value>False</value> + </param> + <param> + <key>gain0</key> + <value>gain</value> + </param> + <param> + <key>ant10</key> + <value></value> + </param> + <param> + <key>bw10</key> + <value>0</value> + </param> + <param> + <key>center_freq10</key> + <value>0</value> + </param> + <param> + <key>norm_gain10</key> + <value>False</value> + </param> + <param> + <key>gain10</key> + <value>0</value> + </param> + <param> + <key>ant11</key> + <value></value> + </param> + <param> + <key>bw11</key> + <value>0</value> + </param> + <param> + <key>center_freq11</key> + <value>0</value> + </param> + <param> + <key>norm_gain11</key> + <value>False</value> + </param> + <param> + <key>gain11</key> + <value>0</value> + </param> + <param> + <key>ant12</key> + <value></value> + </param> + <param> + <key>bw12</key> + <value>0</value> + </param> + <param> + <key>center_freq12</key> + <value>0</value> + </param> + <param> + <key>norm_gain12</key> + <value>False</value> + </param> + <param> + <key>gain12</key> + <value>0</value> + </param> + <param> + <key>ant13</key> + <value></value> + </param> + <param> + <key>bw13</key> + <value>0</value> + </param> + <param> + <key>center_freq13</key> + <value>0</value> + </param> + <param> + <key>norm_gain13</key> + <value>False</value> + </param> + <param> + <key>gain13</key> + <value>0</value> + </param> + <param> + <key>ant14</key> + <value></value> + </param> + <param> + <key>bw14</key> + <value>0</value> + </param> + <param> + <key>center_freq14</key> + <value>0</value> + </param> + <param> + <key>norm_gain14</key> + <value>False</value> + </param> + <param> + <key>gain14</key> + <value>0</value> + </param> + <param> + <key>ant15</key> + <value></value> + </param> + <param> + <key>bw15</key> + <value>0</value> + </param> + <param> + <key>center_freq15</key> + <value>0</value> + </param> + <param> + <key>norm_gain15</key> + <value>False</value> + </param> + <param> + <key>gain15</key> + <value>0</value> + </param> + <param> + <key>ant16</key> + <value></value> + </param> + <param> + <key>bw16</key> + <value>0</value> + </param> + <param> + <key>center_freq16</key> + <value>0</value> + </param> + <param> + <key>norm_gain16</key> + <value>False</value> + </param> + <param> + <key>gain16</key> + <value>0</value> + </param> + <param> + <key>ant17</key> + <value></value> + </param> + <param> + <key>bw17</key> + <value>0</value> + </param> + <param> + <key>center_freq17</key> + <value>0</value> + </param> + <param> + <key>norm_gain17</key> + <value>False</value> + </param> + <param> + <key>gain17</key> + <value>0</value> + </param> + <param> + <key>ant18</key> + <value></value> + </param> + <param> + <key>bw18</key> + <value>0</value> + </param> + <param> + <key>center_freq18</key> + <value>0</value> + </param> + <param> + <key>norm_gain18</key> + <value>False</value> + </param> + <param> + <key>gain18</key> + <value>0</value> + </param> + <param> + <key>ant19</key> + <value></value> + </param> + <param> + <key>bw19</key> + <value>0</value> + </param> + <param> + <key>center_freq19</key> + <value>0</value> + </param> + <param> + <key>norm_gain19</key> + <value>False</value> + </param> + <param> + <key>gain19</key> + <value>0</value> + </param> + <param> + <key>ant1</key> + <value></value> + </param> + <param> + <key>bw1</key> + <value>0</value> + </param> + <param> + <key>center_freq1</key> + <value>0</value> + </param> + <param> + <key>norm_gain1</key> + <value>False</value> + </param> + <param> + <key>gain1</key> + <value>0</value> + </param> + <param> + <key>ant20</key> + <value></value> + </param> + <param> + <key>bw20</key> + <value>0</value> + </param> + <param> + <key>center_freq20</key> + <value>0</value> + </param> + <param> + <key>norm_gain20</key> + <value>False</value> + </param> + <param> + <key>gain20</key> + <value>0</value> + </param> + <param> + <key>ant21</key> + <value></value> + </param> + <param> + <key>bw21</key> + <value>0</value> + </param> + <param> + <key>center_freq21</key> + <value>0</value> + </param> + <param> + <key>norm_gain21</key> + <value>False</value> + </param> + <param> + <key>gain21</key> + <value>0</value> + </param> + <param> + <key>ant22</key> + <value></value> + </param> + <param> + <key>bw22</key> + <value>0</value> + </param> + <param> + <key>center_freq22</key> + <value>0</value> + </param> + <param> + <key>norm_gain22</key> + <value>False</value> + </param> + <param> + <key>gain22</key> + <value>0</value> + </param> + <param> + <key>ant23</key> + <value></value> + </param> + <param> + <key>bw23</key> + <value>0</value> + </param> + <param> + <key>center_freq23</key> + <value>0</value> + </param> + <param> + <key>norm_gain23</key> + <value>False</value> + </param> + <param> + <key>gain23</key> + <value>0</value> + </param> + <param> + <key>ant24</key> + <value></value> + </param> + <param> + <key>bw24</key> + <value>0</value> + </param> + <param> + <key>center_freq24</key> + <value>0</value> + </param> + <param> + <key>norm_gain24</key> + <value>False</value> + </param> + <param> + <key>gain24</key> + <value>0</value> + </param> + <param> + <key>ant25</key> + <value></value> + </param> + <param> + <key>bw25</key> + <value>0</value> + </param> + <param> + <key>center_freq25</key> + <value>0</value> + </param> + <param> + <key>norm_gain25</key> + <value>False</value> + </param> + <param> + <key>gain25</key> + <value>0</value> + </param> + <param> + <key>ant26</key> + <value></value> + </param> + <param> + <key>bw26</key> + <value>0</value> + </param> + <param> + <key>center_freq26</key> + <value>0</value> + </param> + <param> + <key>norm_gain26</key> + <value>False</value> + </param> + <param> + <key>gain26</key> + <value>0</value> + </param> + <param> + <key>ant27</key> + <value></value> + </param> + <param> + <key>bw27</key> + <value>0</value> + </param> + <param> + <key>center_freq27</key> + <value>0</value> + </param> + <param> + <key>norm_gain27</key> + <value>False</value> + </param> + <param> + <key>gain27</key> + <value>0</value> + </param> + <param> + <key>ant28</key> + <value></value> + </param> + <param> + <key>bw28</key> + <value>0</value> + </param> + <param> + <key>center_freq28</key> + <value>0</value> + </param> + <param> + <key>norm_gain28</key> + <value>False</value> + </param> + <param> + <key>gain28</key> + <value>0</value> + </param> + <param> + <key>ant29</key> + <value></value> + </param> + <param> + <key>bw29</key> + <value>0</value> + </param> + <param> + <key>center_freq29</key> + <value>0</value> + </param> + <param> + <key>norm_gain29</key> + <value>False</value> + </param> + <param> + <key>gain29</key> + <value>0</value> + </param> + <param> + <key>ant2</key> + <value></value> + </param> + <param> + <key>bw2</key> + <value>0</value> + </param> + <param> + <key>center_freq2</key> + <value>0</value> + </param> + <param> + <key>norm_gain2</key> + <value>False</value> + </param> + <param> + <key>gain2</key> + <value>0</value> + </param> + <param> + <key>ant30</key> + <value></value> + </param> + <param> + <key>bw30</key> + <value>0</value> + </param> + <param> + <key>center_freq30</key> + <value>0</value> + </param> + <param> + <key>norm_gain30</key> + <value>False</value> + </param> + <param> + <key>gain30</key> + <value>0</value> + </param> + <param> + <key>ant31</key> + <value></value> + </param> + <param> + <key>bw31</key> + <value>0</value> + </param> + <param> + <key>center_freq31</key> + <value>0</value> + </param> + <param> + <key>norm_gain31</key> + <value>False</value> + </param> + <param> + <key>gain31</key> + <value>0</value> + </param> + <param> + <key>ant3</key> + <value></value> + </param> + <param> + <key>bw3</key> + <value>0</value> + </param> + <param> + <key>center_freq3</key> + <value>0</value> + </param> + <param> + <key>norm_gain3</key> + <value>False</value> + </param> + <param> + <key>gain3</key> + <value>0</value> + </param> + <param> + <key>ant4</key> + <value></value> + </param> + <param> + <key>bw4</key> + <value>0</value> + </param> + <param> + <key>center_freq4</key> + <value>0</value> + </param> + <param> + <key>norm_gain4</key> + <value>False</value> + </param> + <param> + <key>gain4</key> + <value>0</value> + </param> + <param> + <key>ant5</key> + <value></value> + </param> + <param> + <key>bw5</key> + <value>0</value> + </param> + <param> + <key>center_freq5</key> + <value>0</value> + </param> + <param> + <key>norm_gain5</key> + <value>False</value> + </param> + <param> + <key>gain5</key> + <value>0</value> + </param> + <param> + <key>ant6</key> + <value></value> + </param> + <param> + <key>bw6</key> + <value>0</value> + </param> + <param> + <key>center_freq6</key> + <value>0</value> + </param> + <param> + <key>norm_gain6</key> + <value>False</value> + </param> + <param> + <key>gain6</key> + <value>0</value> + </param> + <param> + <key>ant7</key> + <value></value> + </param> + <param> + <key>bw7</key> + <value>0</value> + </param> + <param> + <key>center_freq7</key> + <value>0</value> + </param> + <param> + <key>norm_gain7</key> + <value>False</value> + </param> + <param> + <key>gain7</key> + <value>0</value> + </param> + <param> + <key>ant8</key> + <value></value> + </param> + <param> + <key>bw8</key> + <value>0</value> + </param> + <param> + <key>center_freq8</key> + <value>0</value> + </param> + <param> + <key>norm_gain8</key> + <value>False</value> + </param> + <param> + <key>gain8</key> + <value>0</value> + </param> + <param> + <key>ant9</key> + <value></value> + </param> + <param> + <key>bw9</key> + <value>0</value> + </param> + <param> + <key>center_freq9</key> + <value>0</value> + </param> + <param> + <key>norm_gain9</key> + <value>False</value> + </param> + <param> + <key>gain9</key> + <value>0</value> + </param> + <param> + <key>clock_rate</key> + <value>0.0</value> + </param> + <param> + <key>comment</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>dev_addr</key> + <value>""</value> + </param> + <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1264, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + <param> + <key>id</key> + <value>uhd_usrp_sink_0</value> + </param> + <param> + <key>type</key> + <value>fc32</value> + </param> + <param> + <key>clock_source0</key> + <value>gpsdo</value> + </param> + <param> + <key>sd_spec0</key> + <value></value> + </param> + <param> + <key>time_source0</key> + <value>gpsdo</value> + </param> + <param> + <key>clock_source1</key> + <value></value> + </param> + <param> + <key>sd_spec1</key> + <value></value> + </param> + <param> + <key>time_source1</key> + <value></value> + </param> + <param> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>sd_spec2</key> + <value></value> + </param> + <param> + <key>time_source2</key> + <value></value> + </param> + <param> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>sd_spec3</key> + <value></value> + </param> + <param> + <key>time_source3</key> + <value></value> + </param> + <param> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>sd_spec4</key> + <value></value> + </param> + <param> + <key>time_source4</key> + <value></value> + </param> + <param> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>sd_spec5</key> + <value></value> + </param> + <param> + <key>time_source5</key> + <value></value> + </param> + <param> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>sd_spec6</key> + <value></value> + </param> + <param> + <key>time_source6</key> + <value></value> + </param> + <param> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>sd_spec7</key> + <value></value> + </param> + <param> + <key>time_source7</key> + <value></value> + </param> + <param> + <key>nchan</key> + <value>1</value> + </param> + <param> + <key>num_mboards</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>hide_cmd_port</key> + <value>False</value> + </param> + <param> + <key>stream_args</key> + <value></value> + </param> + <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> + <key>sync</key> + <value></value> + </param> + <param> + <key>len_tag_name</key> + <value>packet_len</value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + </block> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>blocks_tag_debug_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_const_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>uhd_usrp_sink_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_tuntap_pdu_0</source_block_id> + <sink_block_id>packet_tx_0</sink_block_id> + <source_key>pdus</source_key> + <sink_key>in</sink_key> + </connection> + <connection> + <source_block_id>packet_tx_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>packet_tx_0</source_block_id> + <sink_block_id>blocks_message_debug_0</sink_block_id> + <source_key>postcrc</source_key> + <sink_key>print_pdu</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/grc/digital_block_tree.xml b/gr-digital/grc/digital_block_tree.xml index 9bdf6e993f..5e6e742868 100644 --- a/gr-digital/grc/digital_block_tree.xml +++ b/gr-digital/grc/digital_block_tree.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> <!-- - Copyright 2011-2015 Free Software Foundation, Inc. + Copyright 2011-2016 Free Software Foundation, Inc. This file is part of GNU Radio @@ -72,6 +72,10 @@ <block>digital_crc32_bb</block> <block>digital_crc32_async_bb</block> <block>digital_framer_sink_1</block> + <block>variable_header_format_default</block> + <block>digital_protocol_formatter_async</block> + <block>digital_protocol_formatter_bb</block> + <block>digital_protocol_parser_b</block> <block>digital_header_payload_demux</block> <block>digital_packet_headergenerator_bb</block> <block>digital_packet_headergenerator_bb_default</block> diff --git a/gr-digital/grc/digital_protocol_formatter_async.xml b/gr-digital/grc/digital_protocol_formatter_async.xml new file mode 100644 index 0000000000..52a67eca36 --- /dev/null +++ b/gr-digital/grc/digital_protocol_formatter_async.xml @@ -0,0 +1,33 @@ +<?xml version="1.0"?> + +<block> + <name>Protocol Formatter (Async)</name> + <key>digital_protocol_formatter_async</key> + <import>from gnuradio import digital</import> + <make>digital.protocol_formatter_async($format)</make> + + <param> + <name>Format Obj.</name> + <key>format</key> + <type>raw</type> + </param> + + <sink> + <name>in</name> + <type>message</type> + <optional>1</optional> + </sink> + + <source> + <name>header</name> + <type>message</type> + <optional>1</optional> + </source> + + <source> + <name>payload</name> + <type>message</type> + <optional>1</optional> + </source> + +</block> diff --git a/gr-digital/grc/digital_protocol_formatter_bb.xml b/gr-digital/grc/digital_protocol_formatter_bb.xml new file mode 100644 index 0000000000..b37a791fa8 --- /dev/null +++ b/gr-digital/grc/digital_protocol_formatter_bb.xml @@ -0,0 +1,32 @@ +<?xml version="1.0"?> + +<block> + <name>Protocol Formatter</name> + <key>digital_protocol_formatter_bb</key> + <import>from gnuradio import digital</import> + <make>digital.protocol_formatter_bb($format, $len_tag_key)</make> + + <param> + <name>Format Obj.</name> + <key>format</key> + <type>raw</type> + </param> + + <param> + <name>Length Tag Name</name> + <key>len_tag_key</key> + <value>"packet_len"</value> + <type>string</type> + </param> + + <sink> + <name>in</name> + <type>byte</type> + </sink> + + <source> + <name>out</name> + <type>byte</type> + </source> + +</block> diff --git a/gr-digital/grc/digital_protocol_parser_b.xml b/gr-digital/grc/digital_protocol_parser_b.xml new file mode 100644 index 0000000000..27fb15e05b --- /dev/null +++ b/gr-digital/grc/digital_protocol_parser_b.xml @@ -0,0 +1,25 @@ +<?xml version="1.0"?> + +<block> + <name>Protocol Parser</name> + <key>digital_protocol_parser_b</key> + <import>from gnuradio import digital</import> + <make>digital.protocol_parser_b($format)</make> + + <param> + <name>Format Obj.</name> + <key>format</key> + <type>raw</type> + </param> + + <sink> + <name>in</name> + <type>byte</type> + </sink> + + <source> + <name>info</name> + <type>message</type> + <optional>1</optional> + </source> +</block> diff --git a/gr-digital/grc/variable_header_format_default.xml b/gr-digital/grc/variable_header_format_default.xml new file mode 100644 index 0000000000..55b361f8ca --- /dev/null +++ b/gr-digital/grc/variable_header_format_default.xml @@ -0,0 +1,35 @@ +<?xml version="1.0"?> +<!-- +################################################### +# header_format_default object +################################################### + --> +<block> + <name>Default Header Format Obj.</name> + <key>variable_header_format_default</key> + <import>from gnuradio import digital</import> + <var_make> +#if int($access_code())==0 # +self.$(id) = $(id) = digital.header_format_default(digital.packet_utils.default_access_code, $threshold) +#else +self.$(id) = $(id) = digital.header_format_default($access_code, $threshold) +#end if + </var_make> + <var_value>digital.header_format_default($access_code, $threshold)</var_value> + <make></make> + + <param> + <name>Access Code</name> + <key>access_code</key> + <value>0</value> + <type>string</type> + </param> + + <param> + <name>Threshold</name> + <key>threshold</key> + <value>0</value> + <type>int</type> + </param> + +</block> diff --git a/gr-digital/include/gnuradio/digital/CMakeLists.txt b/gr-digital/include/gnuradio/digital/CMakeLists.txt index d8fe2b6c4d..1b22265853 100644 --- a/gr-digital/include/gnuradio/digital/CMakeLists.txt +++ b/gr-digital/include/gnuradio/digital/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2011-2015 Free Software Foundation, Inc. +# Copyright 2011-2016 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -65,6 +65,7 @@ install(FILES glfsr_source_f.h hdlc_deframer_bp.h hdlc_framer_pb.h + header_buffer.h header_payload_demux.h kurtotic_equalizer_cc.h lfsr.h @@ -90,6 +91,14 @@ install(FILES ofdm_sampler.h ofdm_serializer_vcc.h ofdm_sync_sc_cfb.h + header_format_base.h + header_format_default.h + header_format_counter.h + header_format_crc.h + header_format_ofdm.h + protocol_formatter_async.h + protocol_formatter_bb.h + protocol_parser_b.h packet_header_default.h packet_header_ofdm.h packet_headergenerator_bb.h diff --git a/gr-digital/include/gnuradio/digital/corr_est_cc.h b/gr-digital/include/gnuradio/digital/corr_est_cc.h index e8211cf60b..237a499b6b 100644 --- a/gr-digital/include/gnuradio/digital/corr_est_cc.h +++ b/gr-digital/include/gnuradio/digital/corr_est_cc.h @@ -42,6 +42,7 @@ namespace gr { * \li tag 'phase_est': estimate of phase offset * \li tag 'time_est': estimate of symbol timing offset * \li tag 'corr_est': the correlation value of the estimates + * \li tag 'amp_est': 1 over the estimated amplitude * \li tag 'corr_start': the start sample of the correlation and the value * * \li Optional 2nd output stream providing the advanced correlator output @@ -51,12 +52,11 @@ namespace gr { * offset estimate. These estimates are passed downstream as * stream tags for use by follow-on synchronization blocks. * - * The sync word is provided as a set of symbols along with a - * baseband matched filter which we use to create the filtered and - * upsampled symbols that we will receive over-the-air. + * The sync word is provided as a set of symbols after being + * filtered by a baseband matched filter. * * The phase_est tag can be used by downstream blocks to adjust - * their phase estimatopm/correction loops, and is currently + * their phase estimator/correction loops, and is currently * implemented by the gr::digital::costas_loop_cc block. * * The time_est tag can be used to adjust the sampling timing diff --git a/gr-digital/include/gnuradio/digital/header_buffer.h b/gr-digital/include/gnuradio/digital/header_buffer.h new file mode 100644 index 0000000000..ddcc2a851a --- /dev/null +++ b/gr-digital/include/gnuradio/digital/header_buffer.h @@ -0,0 +1,310 @@ +/* -*- c++ -*- */ +/* Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_DIGITAL_HEADER_BUFFER_H +#define INCLUDED_DIGITAL_HEADER_BUFFER_H + +#include <gnuradio/digital/api.h> +#include <vector> +#include <stdint.h> + +namespace gr { + namespace digital { + + /*! + * \brief Helper class for handling payload headers. + * \ingroup packet_operators_blk + * + * \details + * + * This class is used by the header format blocks (e.g., + * digital::header_format_default) to make it easier to deal with + * payload headers. This class functions in two different ways + * depending on if it is used in a transmitter or receiver. When + * used in a transmitter, this class helps us build headers out of + * the fields of the protocol. When used in a receiver, this class + * helps us parse the received bits into the protocol's fields. + * + * This page describes how to work with the different modes, + * transmit or receive. The class is instructed as to which mode + * it is in by how the constructor is called. If the constructor + * is passed a valid array (non NULL), then it is in transmit mode + * and will pack this buffer with the header fields. If that + * buffer is NULL, the object is in receive mode. + * + * \section header_buffer_tx Transmit Mode + * + * When passed a valid buffer in the constructor, this object is in + * transmit mode. We can then use the add_field[N] functions to + * add new fields to this header. The buffer MUST be large enough + * to hold the full header. As this class is meant to work mostly + * with the digital::header_format_default and child + * classes, the header length can be read from + * digital::header_format_default::header_nbytes(). + * + * Each field is a specific length of 8, 16, 32, or 64 bits that + * are to be transmitted in network byte order. We can adjust the + * direction of the bytes by setting the byte-swap flag, \p bs, to + * true or false. + * + * The length argument (\p len) for all add_field[N] calls is the + * number of bytes actually accounted for in the data + * structure. Often, we would use the full size of the field, + * which is sizeof(dtype), and the add_field[N] call defaults to + * len=N. Occasionally, we may need to use fewer bytes than + * actually represented by the data type. An example would be the + * access code used in the header_format_default, which is a + * uint64_t type but may have fewer bytes used in the actual + * access code. + * + * The function that calls this class is expected to handle the + * memory handling of the buffer -- both allocating and + * deallocating. + * + * As simple example of using this class in transmit mode: + * + * \verbatim + uint8_t* buffer = (uint8_t*)volk_malloc(header_nbytes(), + volk_get_alignment()); + + header_buffer hdr(buffer); + hdr.add_field64(sync_word, sync_word_len); + hdr.add_field16(payload_length); + hdr.add_field8(header_flags); + hdr.add_field8(header_options); + + // Do something with the header + + volk_free(buffer); + \endverbatim + * + * In this example, the header contains four fields: + * + * \verbatim + |0 15|16 23|24 31| + | sync word | + | | + | length | flags | options | + \endverbatim + * + * The sync word can be up to 64-bits, but the add_field64 is also + * passed the number of actual bytes in the sync word and so could + * be fewer. + * + * \section header_buffer_rx Receive Mode + * + * In receive mode, we build up the header as bits are received by + * inserting them with insert_bit. We can find out how long the + * current header is, in bits, using the call to length(). If the + * header is of the appropriate length, we can then start + * extracting the fields from it. When we are done with the + * current header, call clear() to reset the internal buffer to + * empty, which will mean that length() returns 0. + * + * The header fields are extracted using the extract_field[N] + * functions. Like the add_field[N] functions, we specify the size + * (in bits) of the field we are extracting. We pass this function + * the bit-position of the expected field in the received header + * buffer. The extract_field[N] assumes that the number of bits + * for the field is N, but we can tell the function to use fewer + * bits if we want. Setting the length parameter of these + * functions greater than N is illegal, and it will throw an + * error. + * + * For example, given a header of | length | seq. num. | where the + * length is 16 bits and the sequence number is 32 bits, we would + * use: + * + * \verbatim + uint16_t len = d_hdr_reg.extract_field16(0); + uint32_t seq = d_hdr_reg.extract_field32(16); + \endverbatim + * + * The extract_field functions are specific to data types of the + * field and the number of bits for each field is inferred by the + * data type. So extract_field16 assumes we want all 16 bits in + * the field represented. + * + * Some headers have fields that are not standard sizes of + * integers, like a 1 bit, 4 bit, or even 12 bit fields. We can + * ask for fewer bits for each field. say: + * + * \verbatim + |0 15|16 19|20 31| + | len | flags | options | + \endverbatim + * + * We would use the following extraction functions: + * + * \verbatim + uint16_t len = d_hdr_reg.extract_field16(0); + uint8_t flags = d_hdr_reg.extract_field8(16, 4); + uint16_t opts = d_hdr_reg.extract_field16(20, 12); + \endverbatim + * + * \sa header_format_default + * \sa header_format_counter + * \sa header_format_crc + */ + class DIGITAL_API header_buffer + { + private: + size_t d_offset; + uint8_t *d_buffer; + + std::vector<bool> d_input; + + public: + /*! + * Create a header buffer object with a pre-allocated buffer, \p + * buffer, to hold the formatted header data. + * + * If \p buffer is set to NULL, then this object is in receive + * mode meant to receive bits from an incoming data stream and + * provide the ability to extract fields. In this mode, calls to + * add_field are invalid and will be nops. + */ + header_buffer(uint8_t *buffer=NULL); + + /*! + * Class destructor. + */ + ~header_buffer(); + + /*! + * Clears the header. + * + * In transmit mode, this resets the current offset so new + * add_field functions start adding data to the start of the + * buffer. + * + * In receive mode, this clears the buffer that we have inserted + * bits in to. + */ + void clear(); + + + /*! + * In transmit mode, this returns the length of the data in + * the buffer (not the allocated buffer length). + * + * In receiving mode, this returns the current length in bits of + * the received header. + */ + size_t length() const; + + /*! + * Returns a constant pointer to the buffer. + */ + const uint8_t* header() const; + + /*! + * Add an 8-bit field to the header. + * + * \param data The 8-bit data item. + * \param len Length (in bits) of \p data. + * \param bs Set to 'true' to byte swap the data. + */ + void add_field8(uint8_t data, int len=8, bool bs=false); + + /*! + * Add an 16-bit field to the header. + * + * \param data The 16-bit data item. + * \param len Length (in bits) of \p data. + * \param bs Set to 'true' to byte swap the data. + */ + void add_field16(uint16_t data, int len=16, bool bs=false); + + /*! + * Add an 32-bit field to the header. + * + * \param data The 32-bit data item. + * \param len Length (in bits) of \p data. + * \param bs Set to 'true' to byte swap the data. + */ + void add_field32(uint32_t data, int len=32, bool bs=false); + + /*! + * Add an 64-bit field to the header. + * + * \param data The 64-bit data item. + * \param len Length (in bits) of \p data. + * \param bs Set to 'true' to byte swap the data. + */ + void add_field64(uint64_t data, int len=64, bool bs=false); + + + + /***************************************************** + * Receive mode to build a header from bits * + *****************************************************/ + + /*! + * Insert a new bit on the back of the input buffer. This + * function is used in receive mode to add new bits as they are + * received for later use of the extract_field functions. + * + * \param bit New bit to add. + */ + void insert_bit(int bit); + + /*! + * Returns up to an 8-bit field in the packet header. + * + * \param pos Bit position of the start of the field. + * \param len The number of bits in the field. + * \param bs Set to 'true' to byte swap the data. + */ + uint8_t extract_field8(int pos, int len=8, bool bs=false); + + /*! + * Returns up to a 16-bit field in the packet header. + * + * \param pos Bit position of the start of the field. + * \param len The number of bits in the field. + * \param bs Set to 'true' to byte swap the data. + */ + uint16_t extract_field16(int pos, int len=16, bool bs=false); + + /*! + * Returns up to a 32-bit field in the packet header. + * + * \param pos Bit position of the start of the field. + * \param len The number of bits in the field. + * \param bs Set to 'true' to byte swap the data. + */ + uint32_t extract_field32(int pos, int len=32, bool bs=false); + + /*! + * Returns up to a 64-bit field in the packet header. + * + * \param pos Bit position of the start of the field. + * \param len The number of bits in the field. + * \param bs Set to 'true' to byte swap the data. + */ + uint64_t extract_field64(int pos, int len=64, bool bs=false); + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_HEADER_BUFFER_H */ diff --git a/gr-digital/include/gnuradio/digital/header_format_base.h b/gr-digital/include/gnuradio/digital/header_format_base.h new file mode 100644 index 0000000000..557a55cdcf --- /dev/null +++ b/gr-digital/include/gnuradio/digital/header_format_base.h @@ -0,0 +1,225 @@ +/* -*- c++ -*- */ +/* Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_DIGITAL_HEADER_FORMAT_BASE_H +#define INCLUDED_DIGITAL_HEADER_FORMAT_BASE_H + +#include <pmt/pmt.h> +#include <gnuradio/digital/api.h> +#include <gnuradio/digital/header_buffer.h> +#include <gnuradio/logger.h> +#include <boost/enable_shared_from_this.hpp> + +namespace gr { + namespace digital { + + /*! + * \brief Base header formatter class. + * \ingroup packet_operators_blk + * + * \details + * + * Creates a base class that other packet formatters will inherit + * from. The child classes create and parse protocol-specific + * headers. To add a new protocol processing class, create a class + * that inherits from this and overload the necessary + * functions. The main functions to overload are: + * + * \li header_format_base::format: takes in a payload and + * creates a header from it. + * + * \li header_format_base::parse: receive bits and extract + * the header info. These are expected to be hard bits (0 or 1) + * that have either been sliced or gone through an FEC decoder. + * + * \li header_format_base::header_nbits: the number of bits + * in the full header (including an access code). + * + * \li header_format_base::header_ok: checks to see if the + * received header is ok. Since the header often specifies the + * length of the frame to decode next, it is important that this + * information be correct. + * + * \li header_format_base::header_payload: unpacks the header + * register (from the class header_buffer) as a set of bits into + * its component parts of the header. For example, this may find + * and extract the frame length field as a 16-bit value and/or + * flags related to the type of modulation and FEC codes used in + * the frame's payload. + * + * Protected functions of this class that the child class should + * overload include: + * + * \li enter_search + * \li enter_have_sync + * \li enter_have_header + * + * These three function represent the different states of the + * parsing state machine. Expected behavior is that the protocol + * has some known word that we are first looking for the identify + * the start of the frame. The parsing FSM starts in a state to + * search for the beginning of the header, normally by looking for + * a known word (i.e., the access code). Then it changes state to + * read in the full header. We expect that the protocol provides + * the length of the header for processing, so the parsing looks + * pulls in the full length of the header. Then it changes state + * to the "have header" state for checking and processing. The + * base class provides the basic functionality for this state + * machine. However, most likely, each child class must manage + * these states for themselves. + * + * This class is specifically designed to work with packets/frames + * in the asynchronous PDU architecture of GNU Radio. See the + * packet_format_async block for formatting the headers onto + * payloads and packet_parse_b block for parsing headers in a + * receiver. + * + * The Packet Format block takes in a PDU and uses a formatter + * class derived from this class to add a header onto the + * packet. The Packet Format blocks takes in the PDU, unpacks the + * message, and passes it to a formatter class' format function, + * which builds a header based on the payload. The header is + * passed back and emitted from formatter block as a separate + * output. The async format block, packet_format_async, has two + * message output ports. The 'header' port passes the header out + * as a PDU and the 'payload' passes the payload out as a PDU. The + * flowgraph can then separately modulate and combine these two + * pieces in the follow-on processing. + * + * The packet_sync_b block uses the formatter class by calling the + * 'parse' function to parse the received packet headers. This + * parser block is a sink for the data stream and emits a message + * from an 'info' port that contains an PMT dictionary of the + * information in the header. The formatter class determines the + * dictionary keys. + * + * This is the base class for dealing with formatting headers for + * different protocols and purposes. For other header formatting + * behaviors, create a child class from here and overload the + * format, parse, and parsing state machine functions as + * necessary. + * + * \sa header_format_default + * \sa header_format_counter + */ + class DIGITAL_API header_format_base + : public boost::enable_shared_from_this<gr::digital::header_format_base> + { + public: + typedef boost::shared_ptr<header_format_base> sptr; + + header_format_base(); + virtual ~header_format_base(); + + sptr base() { return shared_from_this(); }; + sptr formatter() { return shared_from_this(); }; + + /*! + * Function to creates a header. The child classes overload this + * function to format the header in the protocol-specific way. + * + * \param nbytes_in The length (in bytes) of the \p input payload + * \param input An array of unsigned chars of the packet payload + * \param output A pmt::u8vector with the new header prepended + * onto the input data. + * \param info A pmt::dict containing meta data and info about + * the PDU (generally from the metadata portion of the + * input PDU). Data can be extracted from this for the + * header formatting or inserted. + * + * MUST be overloaded. + */ + virtual bool format(int nbytes_in, + const unsigned char *input, + pmt::pmt_t &output, + pmt::pmt_t &info) = 0; + + /*! + * Parses a header. This function is overloaded in the child + * class, which knows how to convert the incoming hard bits (0's + * and 1's) back into a packet header. + * + * \param nbits_in The number of bits in the input array. + * \param input The input as hard decision bits. + * \param info A vector of pmt::dicts to hold any meta data or + * info about the PDU. When parsing the header, the + * formatter can add info from the header into this dict. + * Each packet has a single PMT dictionary of info, so + * the vector length is the number of packets received + * extracted during one call to this parser function. + * \param nbits_processed Number of input bits actually + * processed; If all goes well, this is nbits_in. A + * premature return after a bad header could be less than + * this. + * + * MUST be overloaded. + */ + virtual bool parse(int nbits_in, + const unsigned char *input, + std::vector<pmt::pmt_t> &info, + int &nbits_processed) = 0; + + /*! + * Returns the length of the formatted header in bits. + * MUST be overloaded. + */ + virtual size_t header_nbits() const = 0; + + /*! + * Returns the length of the formatted header in bytes. + * Auto-calculated from the overloaded header_nbits(). + */ + size_t header_nbytes() const; + + protected: + enum state_t {STATE_SYNC_SEARCH, STATE_HAVE_SYNC}; + + state_t d_state; //!< state of the state machine + header_buffer d_hdr_reg; //!< header_buffer object to hold header bits + pmt::pmt_t d_info; //!< info captured from the header + + //! Enter Search state of the state machine to find the access code. + virtual void enter_search(); + + //! Access code found, start getting the header + virtual void enter_have_sync(); + + //! Header found, setup for pulling in the hard decision bits + virtual void enter_have_header(int payload_len); + + //! Verify that the header is valid + virtual bool header_ok() = 0; + + /*! Get info from the header; return payload length and package + * rest of data in d_info dictionary. + */ + virtual int header_payload() = 0; + + /*! Used by blocks to access the logger system. + */ + gr::logger_ptr d_logger; + gr::logger_ptr d_debug_logger; + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_HEADER_FORMAT_BASE_H */ diff --git a/gr-digital/include/gnuradio/digital/header_format_counter.h b/gr-digital/include/gnuradio/digital/header_format_counter.h new file mode 100644 index 0000000000..5eb075afb9 --- /dev/null +++ b/gr-digital/include/gnuradio/digital/header_format_counter.h @@ -0,0 +1,135 @@ +/* -*- c++ -*- */ +/* Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_DIGITAL_HEADER_FORMAT_COUNTER_H +#define INCLUDED_DIGITAL_HEADER_FORMAT_COUNTER_H + +#include <pmt/pmt.h> +#include <gnuradio/digital/api.h> +#include <gnuradio/digital/header_format_default.h> + +namespace gr { + namespace digital { + + /*! + * \brief Header formatter that adds the payload bits/symbol + * format and a packet number counter. + * \ingroup packet_operators_blk + * + * \details + * + * Child class of header_format_default. This version adds two + * fields to the header: + * + * \li bps (16 bits): bits/symbol used when modulating the payload. + * \li count (16 bits): a counter for the packet number. + * + * Like the default packet formatter, the length is encoded as a + * 16-bit value repeated twice. The full packet looks like: + * \verbatim + | access code | hdr | payload | + \endverbatim + * + * Where the access code is <= 64 bits and hdr is: + * \verbatim + | 0 -- 15 | 16 -- 31 | + | pkt len | pkt len | + | bits/sym | counter | + \endverbatim + * + * The access code and header are formatted for network byte order. + * + * \sa header_format_default + */ + class DIGITAL_API header_format_counter + : public header_format_default + { + public: + header_format_counter(const std::string &access_code, + int threshold, int bps); + virtual ~header_format_counter(); + + /*! + * Creates a header from the access code and packet length to + * build an output packet in the form: + * + * \verbatim + | access code | pkt len | pkt len | bps | counter | + \endverbatim + * + * \param nbytes_in The length (in bytes) of the \p input payload + * \param input An array of unsigned chars of the packet payload + * \param output A pmt::u8vector with the new header prepended + * onto the input data. + * \param info A pmt::dict containing meta data and info about + * the PDU (generally from the metadata portion of the + * input PDU). Data can be extracted from this for the + * header formatting or inserted. + */ + virtual bool format(int nbytes_in, + const unsigned char *input, + pmt::pmt_t &output, + pmt::pmt_t &info); + + /*! + * Returns the length of the formatted header in bits. + */ + virtual size_t header_nbits() const; + + /*! + * Factory to create an async packet header formatter; returns + * an sptr to the object. + * + * \param access_code An access code that is used to find and + * synchronize the start of a packet. Used in the parser and in + * other blocks like a corr_est block that helps trigger the + * receiver. Can be up to 64-bits long. + * \param threshold How many bits can be wrong in the access + * code and still count as correct. + * \param bps The number of bits/second used in the payload's + * modulator. + */ + static sptr make(const std::string &access_code, + int threshold, int bps); + + protected: + uint16_t d_counter; //!< keeps track of the number of packets transmitted + uint16_t d_bps; //!< bits/sec of payload modulation + + //! Verify that the header is valid + bool header_ok(); + + /*! Get info from the header; return payload length and package + * rest of data in d_info dictionary. + * + * Extracts the header of the form: + * + * \verbatim + | access code | pkt len | pkt len | bps | counter | payload | + \endverbatim + */ + int header_payload(); + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_HEADER_FORMAT_COUNTER_H */ diff --git a/gr-digital/include/gnuradio/digital/header_format_crc.h b/gr-digital/include/gnuradio/digital/header_format_crc.h new file mode 100644 index 0000000000..edb18844db --- /dev/null +++ b/gr-digital/include/gnuradio/digital/header_format_crc.h @@ -0,0 +1,118 @@ +/* -*- c++ -*- */ +/* Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_DIGITAL_HEADER_FORMAT_CRC_H +#define INCLUDED_DIGITAL_HEADER_FORMAT_CRC_H + +#include <pmt/pmt.h> +#include <gnuradio/digital/api.h> +#include <gnuradio/digital/header_format_default.h> +#include <boost/crc.hpp> + +namespace gr { + namespace digital { + + /*! + * \brief Header formatter that includes the payload length, + * packet number, and a CRC check on the header. + * \ingroup packet_operators_blk + * + * \details + * + * Child class of header_format_base. This version's header + * format looks like: + * + * \li length (12 bits): length of the payload + * \li number (12 bits): packet number + * \li CRC8 (8 bits): A CRC8 check on the header contents + * + * Instead of duplicating the payload length, we only add it once + * and use the CRC8 to make sure it's correctly received. + * + * \verbatim + | 0 -- 11 | 12 -- 23 | 24 -- 31 | + | len | pkt len | CRC8 | + \endverbatim + * + * Reimplements packet_header_default in the style of the + * header_format_base. + */ + class DIGITAL_API header_format_crc + : public header_format_base + { + public: + header_format_crc(const std::string &len_key_name="packet_len", + const std::string &num_key_name="packet_num"); + virtual ~header_format_crc(); + + void set_header_num(unsigned header_num) { d_header_number = header_num; }; + + /*! + * \brief Encodes the header information in the given tags into + * bits and places them into \p out. + * + * \details + * Uses the following header format: + * - Bits 0-11: The packet length (what was stored in the tag with key \p len_tag_key) + * - Bits 12-23: The header number (counts up everytime this function is called) + * - Bit 24-31: 8-Bit CRC + */ + virtual bool format(int nbytes_in, + const unsigned char *input, + pmt::pmt_t &output, + pmt::pmt_t &info); + + virtual bool parse(int nbits_in, + const unsigned char *input, + std::vector<pmt::pmt_t> &info, + int &nbits_processed); + + /*! + * Returns the length of the formatted header in bits. + */ + virtual size_t header_nbits() const; + + /*! + * Factory to create an async packet header formatter; returns + * an sptr to the object. + */ + static sptr make(const std::string &len_key_name="packet_len", + const std::string &num_key_name="packet_num"); + + protected: + uint16_t d_header_number; + pmt::pmt_t d_len_key_name; + pmt::pmt_t d_num_key_name; + boost::crc_optimal<8, 0x07, 0xFF, 0x00, false, false> d_crc_impl; + + //! Verify that the header is valid + virtual bool header_ok(); + + /*! Get info from the header; return payload length and package + * rest of data in d_info dictionary. + */ + virtual int header_payload(); + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_HEADER_FORMAT_CRC_H */ diff --git a/gr-digital/include/gnuradio/digital/header_format_default.h b/gr-digital/include/gnuradio/digital/header_format_default.h new file mode 100644 index 0000000000..4abd7bb2db --- /dev/null +++ b/gr-digital/include/gnuradio/digital/header_format_default.h @@ -0,0 +1,217 @@ +/* -*- c++ -*- */ +/* Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_DIGITAL_HEADER_FORMAT_DEFAULT_H +#define INCLUDED_DIGITAL_HEADER_FORMAT_DEFAULT_H + +#include <pmt/pmt.h> +#include <gnuradio/digital/api.h> +#include <gnuradio/digital/header_format_base.h> +#include <gnuradio/digital/header_buffer.h> +#include <gnuradio/logger.h> +#include <boost/enable_shared_from_this.hpp> + +namespace gr { + namespace digital { + + /*! + * \brief Default header formatter for PDU formatting. + * \ingroup packet_operators_blk + * + * \details + * Used to handle the default packet header. + * + * See the parent class header_format_base for details of how + * these classes operate. + * + * The default header created in this base class consists of an + * access code and the packet length. The length is encoded as a + * 16-bit value repeated twice: + * + * \verbatim + | access code | hdr | payload | + \endverbatim + * + * Where the access code is <= 64 bits and hdr is: + * + * \verbatim + | 0 -- 15 | 16 -- 31 | + | pkt len | pkt len | + \endverbatim + * + * The access code and header are formatted for network byte order. + * + * This header generator does not calculate or append a CRC to the + * packet. Use the CRC32 Async block for that before adding the + * header. The header's length will then measure the payload plus + * the CRC length (4 bytes for a CRC32). + * + * The default header parser produces a PMT dictionary that + * contains the following keys. All formatter blocks MUST produce + * these two values in any dictionary. + * + * \li "payload symbols": the number of symbols in the + * payload. The payload decoder will have to know how this relates + * to the number of bits received. This block knows nothing about + * the payload modulation or the number of bits/symbol. Use the + * gr::digital::header_format_counter for that purpose. + * + * \sa header_format_counter + * \sa header_format_crc + * \sa header_format_ofdm + */ + class DIGITAL_API header_format_default + : public header_format_base + { + public: + header_format_default(const std::string &access_code, int threshold); + virtual ~header_format_default(); + + /*! + * Creates a header from the access code and packet length and + * creates an output header as a PMT vector in the form: + * + * \verbatim + | access code | pkt len | pkt len | + \endverbatim + * + * \param nbytes_in The length (in bytes) of the \p input payload + * \param input An array of unsigned chars of the packet payload + * \param output A pmt::u8vector with the new header prepended + * onto the input data. + * \param info A pmt::dict containing meta data and info about + * the PDU (generally from the metadata portion of the + * input PDU). Data can be extracted from this for the + * header formatting or inserted. + */ + virtual bool format(int nbytes_in, + const unsigned char *input, + pmt::pmt_t &output, + pmt::pmt_t &info); + + /*! + * Parses a header of the form: + * + * \verbatim + | access code | pkt len | pkt len | payload | + \endverbatim + * + * This is implemented as a state machine that starts off + * searching for the access code. Once found, the access code is + * used to find the start of the packet and the following + * header. This default header encodes the length of the payload + * a 16 bit integer twice. The state machine finds the header + * and checks that both payload length values are the same. It + * then goes into its final state that reads in the payload + * (based on the payload length) and produces a payload as a PMT + * u8 vector of packed bytes. + * + * \param nbits_in The number of bits in the input array. + * \param input The input as hard decision bits. + * \param info A vector of pmt::dicts to hold any meta data or + * info about the PDU. When parsing the header, the + * formatter can add info from the header into this dict. + * Each packet has a single PMT dictionary of info, so + * the vector length is the number of packets received + * extracted during one call to this parser function. + * \param nbits_processed Number of input bits actually + * processed; If all goes well, this is nbits_in. A + * premature return after a bad header could be less than + * this. + */ + virtual bool parse(int nbits_in, + const unsigned char *input, + std::vector<pmt::pmt_t> &info, + int &nbits_processed); + + /*! + * Returns the length of the formatted header in bits. + */ + virtual size_t header_nbits() const; + + /*! + * Updates the access code. Must be a string of 1's and 0's and + * <= 64 bits. + */ + bool set_access_code(const std::string &access_code); + + /*! + * Returns the formatted access code as a 64-bit register. + */ + unsigned long long access_code() const; + + /*! + * Sets the threshold for number of access code bits can be in + * error before detection. Defaults to 0. + */ + void set_threshold(unsigned int thresh=0); + + /*! + * Returns threshold value for access code detection. + */ + unsigned int threshold() const; + + /*! + * Factory to create an async packet header formatter; returns + * an sptr to the object. + * + * \param access_code An access code that is used to find and + * synchronize the start of a packet. Used in the parser and in + * other blocks like a corr_est block that helps trigger the + * receiver. Can be up to 64-bits long. + * \param threshold How many bits can be wrong in the access + * code and still count as correct. + */ + static sptr make(const std::string &access_code, int threshold); + + protected: + uint64_t d_access_code; //!< register to hold the access code + size_t d_access_code_len; //!< length in bits of the access code + + unsigned long long d_data_reg; //!< used to look for access_code + unsigned long long d_mask; /*!< masks access_code bits (top N bits are set where + N is the number of bits in the access code) */ + unsigned int d_threshold; //!< how many bits may be wrong in sync vector + + int d_pkt_len; //!< Length of the packet to put into the output buffer + int d_pkt_count; //!< Number of bytes bits already received + + int d_nbits; //!< num bits processed since reset + + //! Access code found, start getting the header + virtual void enter_have_sync(); + + //! Header found, setup for pulling in the hard decision bits + virtual void enter_have_header(int payload_len); + + //! Verify that the header is valid + virtual bool header_ok(); + + /*! Get info from the header; return payload length and package + * rest of data in d_info dictionary. + */ + virtual int header_payload(); + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_HEADER_FORMAT_DEFAULT_H */ diff --git a/gr-digital/include/gnuradio/digital/header_format_ofdm.h b/gr-digital/include/gnuradio/digital/header_format_ofdm.h new file mode 100644 index 0000000000..b426c74cbc --- /dev/null +++ b/gr-digital/include/gnuradio/digital/header_format_ofdm.h @@ -0,0 +1,127 @@ +/* -*- c++ -*- */ +/* Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_DIGITAL_HEADER_FORMAT_OFDM_H +#define INCLUDED_DIGITAL_HEADER_FORMAT_OFDM_H + +#include <pmt/pmt.h> +#include <gnuradio/digital/api.h> +#include <gnuradio/digital/header_format_crc.h> +#include <boost/crc.hpp> + +namespace gr { + namespace digital { + + /*! + * \brief Header formatter that includes the payload length, + * packet number, and a CRC check on the header. + * \ingroup packet_operators_blk + * + * \details + * + * Child class of header_format_base. This version's header + * format looks like: + * + * \li length (12 bits): length of the payload + * \li number (12 bits): packet number + * \li CRC8 (8 bits): A CRC8 check on the header contents + * + * Instead of duplicating the payload length, we only add it once + * and use the CRC8 to make sure it's correctly received. + * + * \verbatim + | 0 -- 11 | 12 -- 23 | 24 -- 31 | + | len | pkt len | CRC8 | + \endverbatim + * + * Reimplements packet_header_default in the style of the + * header_format_base. + */ + class DIGITAL_API header_format_ofdm + : public header_format_crc + { + public: + header_format_ofdm(const std::vector<std::vector<int> > &occupied_carriers, + int n_syms, + const std::string &len_key_name="packet_len", + const std::string &frame_key_name="frame_len", + const std::string &num_key_name="packet_num", + int bits_per_header_sym=1, + int bits_per_payload_sym=1, + bool scramble_header=false); + virtual ~header_format_ofdm(); + + /*! + * \brief Encodes the header information in the given tags into + * bits and places them into \p out. + * + * \details + * Uses the following header format: + * - Bits 0-11: The packet length (what was stored in the tag with key \p len_tag_key) + * - Bits 12-23: The header number (counts up everytime this function is called) + * - Bit 24-31: 8-Bit CRC + */ + virtual bool format(int nbytes_in, + const unsigned char *input, + pmt::pmt_t &output, + pmt::pmt_t &info); + + virtual bool parse(int nbits_in, + const unsigned char *input, + std::vector<pmt::pmt_t> &info, + int &nbits_processed); + + /*! + * Returns the length of the formatted header in bits. + */ + virtual size_t header_nbits() const; + + /*! + * Factory to create an async packet header formatter; returns + * an sptr to the object. + */ + static sptr make(const std::vector<std::vector<int> > &occupied_carriers, + int n_syms, + const std::string &len_key_name="packet_len", + const std::string &frame_key_name="frame_len", + const std::string &num_key_name="packet_num", + int bits_per_header_sym=1, + int bits_per_payload_sym=1, + bool scramble_header=false); + + protected: + pmt::pmt_t d_frame_key_name; //!< Tag key of the additional frame length tag + const std::vector<std::vector<int> > d_occupied_carriers; //!< Which carriers/symbols carry data + int d_syms_per_set; //!< Helper variable: Total number of elements in d_occupied_carriers + int d_bits_per_payload_sym; + std::vector<uint8_t> d_scramble_mask; //!< Bits are xor'd with this before tx'ing + size_t d_header_len; + + /*! Get info from the header; return payload length and package + * rest of data in d_info dictionary. + */ + virtual int header_payload(); + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_HEADER_FORMAT_OFDM_H */ diff --git a/gr-digital/include/gnuradio/digital/protocol_formatter_async.h b/gr-digital/include/gnuradio/digital/protocol_formatter_async.h new file mode 100644 index 0000000000..560a236ce7 --- /dev/null +++ b/gr-digital/include/gnuradio/digital/protocol_formatter_async.h @@ -0,0 +1,88 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + + +#ifndef INCLUDED_DIGITAL_PROTOCOL_FORMATTER_ASYNC_H +#define INCLUDED_DIGITAL_PROTOCOL_FORMATTER_ASYNC_H + +#include <gnuradio/digital/api.h> +#include <gnuradio/digital/header_format_base.h> +#include <gnuradio/block.h> + +namespace gr { + namespace digital { + + /*! + * \brief Uses a header format object to append a header onto a + * PDU. + * + * \ingroup packet_operators_blk + * + * \details + * This block takes in PDUs and creates a header, generally for + * MAC-level processing. Each received PDU is assumed to be its + * own frame, so any fragmentation would be done upstream in or + * before the flowgraph. + * + * The header that is created and transmitted out of the 'header' + * message port as a PDU. The header is based entirely on the \p + * format object, which is an object derived from the + * header_format_base class. All of these packet header format + * objects operate the same: they take in the payload data as well + * as possible extra metadata info about the PDU; the format + * object then returns the output PDU as a PMT argument along + * with any changes to the metadata info PMT. + * + * For different packet header formatting needs, we can define new + * classes that inherit from the header_format_base block + * and which overload the header_format_base::format + * function. + * + * \sa header_format_base + * \sa header_format_default + * \sa header_format_counter + * + * This block only uses asynchronous message passing interfaces to + * receiver and emit PDUs. The message ports are: + * + * \li in: receives PDUs for the frame payload + * \li header: the header formatted for the given frame + * \li payload: the payload + */ + class DIGITAL_API protocol_formatter_async : virtual public block + { + public: + typedef boost::shared_ptr<protocol_formatter_async> sptr; + + /*! + * Make a packet header block using a given \p format. + * + * \param format The format object to use when creating the + * header for the packet. + */ + static sptr make(const header_format_base::sptr &format); + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_PROTOCOL_FORMATTER_ASYNC_H */ diff --git a/gr-digital/include/gnuradio/digital/protocol_formatter_bb.h b/gr-digital/include/gnuradio/digital/protocol_formatter_bb.h new file mode 100644 index 0000000000..2a57fdc75a --- /dev/null +++ b/gr-digital/include/gnuradio/digital/protocol_formatter_bb.h @@ -0,0 +1,81 @@ +/* -*- c++ -*- */ +/* + * Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + + +#ifndef INCLUDED_DIGITAL_PROTOCOL_FORMATTER_BB_H +#define INCLUDED_DIGITAL_PROTOCOL_FORMATTER_BB_H + +#include <gnuradio/digital/api.h> +#include <gnuradio/digital/header_format_base.h> +#include <gnuradio/tagged_stream_block.h> + +namespace gr { + namespace digital { + + /*! + * \brief Uses a header format object to create a header from a + * tagged stream packet. + * + * \ingroup packet_operators_blk + * + * \details + * This block takes in tagged stream and creates a header, + * generally for MAC-level processing. Each received tagged stream + * is assumed to be its own frame, so any fragmentation would be + * done upstream in or before the flowgraph. + * + * The header that is created and transmitted from this block. The + * payload should then be sent as a parallel tagged stream to be + * muxed together later. The header is based entirely on the \p + * format object, which is an object derived from the + * header_format_base class. All of these packet header format + * objects operate the same: they take in the payload data as well + * as possible extra metadata info about the PDU; the format + * object then returns the output and metadata info. This block + * then transmits the header vector and attaches and metadata as + * tags at the start of the header. + * + * \sa protocol_formatter_async + */ + class DIGITAL_API protocol_formatter_bb : virtual public tagged_stream_block + { + public: + typedef boost::shared_ptr<protocol_formatter_bb> sptr; + + /*! + * Make a packet header block using a given \p format. + * + * \param format The format object to use when creating the + * header for the packet. Derived from the + * header_format_base class. + * \param len_tag_key The tagged stream length key. + */ + static sptr make(const header_format_base::sptr &format, + const std::string &len_tag_key="packet_len"); + + virtual void set_header_format(header_format_base::sptr &format) = 0; + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_PROTOCOL_FORMATTER_BB_H */ diff --git a/gr-digital/include/gnuradio/digital/protocol_parser_b.h b/gr-digital/include/gnuradio/digital/protocol_parser_b.h new file mode 100644 index 0000000000..89c7f7edd3 --- /dev/null +++ b/gr-digital/include/gnuradio/digital/protocol_parser_b.h @@ -0,0 +1,80 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + + +#ifndef INCLUDED_DIGITAL_PACKET_PARSE_B_H +#define INCLUDED_DIGITAL_PACKET_PARSE_B_H + +#include <gnuradio/digital/api.h> +#include <gnuradio/digital/header_format_base.h> +#include <gnuradio/sync_block.h> + +namespace gr { + namespace digital { + + /*! + * \brief Block that synchronizes to a header based on a header + * format object class. Designed to accept hard bits and produce + * PDUs with packed bytes (pmt::u8vector). + * + * \ingroup packet_operators_blk + * + * \details + * + * A packet synchronizer block. This block takes in hard bits + * (unpacked bytes; 1's and 0's as the LSB) and finds the access + * code as a sync word to find the start of a frame. + * + * The block uses a format object derived from a + * header_format_base class. + * + * Once the frame is detected (usually through the use of an + * access code), the block uses the format object's parser + * function to decode the remaining header. Generally, as in the + * default header case, the header will contain the length of the + * frame's payload. That and anything else in the header will + * generally go into the PDU's meta-data dictionary. + * + * The block will output a PDU that contains frame's header info + * in the meta-data portion of the PDU and the payload itself. The + * payload is packed hard bits as taken from the input stream. + * + * \sa packet_sync_ff for a soft decision version. + */ + class DIGITAL_API protocol_parser_b : virtual public sync_block + { + public: + typedef boost::shared_ptr<protocol_parser_b> sptr; + + /*! + * Make a packet header block using a given \p format. + * + * \param format The format object to use when reading the + * header. + */ + static sptr make(const header_format_base::sptr &format); + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_PROTOCOL_PARSER_B_H */ diff --git a/gr-digital/lib/CMakeLists.txt b/gr-digital/lib/CMakeLists.txt index daa577f56f..84f53ec4f3 100644 --- a/gr-digital/lib/CMakeLists.txt +++ b/gr-digital/lib/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2011-2014 Free Software Foundation, Inc. +# Copyright 2011-2016 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -83,6 +83,7 @@ list(APPEND digital_sources glfsr_source_f_impl.cc hdlc_deframer_bp_impl.cc hdlc_framer_pb_impl.cc + header_buffer.cc header_payload_demux_impl.cc kurtotic_equalizer_cc_impl.cc lms_dd_equalizer_cc_impl.cc @@ -106,6 +107,14 @@ list(APPEND digital_sources ofdm_sampler_impl.cc ofdm_serializer_vcc_impl.cc ofdm_sync_sc_cfb_impl.cc + header_format_base.cc + header_format_default.cc + header_format_counter.cc + header_format_crc.cc + header_format_ofdm.cc + protocol_formatter_async_impl.cc + protocol_formatter_bb_impl.cc + protocol_parser_b_impl.cc packet_header_default.cc packet_header_ofdm.cc packet_headergenerator_bb_impl.cc @@ -189,3 +198,38 @@ if(ENABLE_STATIC_LIBS) ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT "digital_devel" # .lib file ) endif(ENABLE_STATIC_LIBS) + + +######################################################################## +# QA C++ Code for gr-blocks +######################################################################## +if(ENABLE_TESTING) + include(GrTest) + + include_directories( + ${GR_DIGITAL_INCLUDE_DIRS} + ${CPPUNIT_INCLUDE_DIRS}) + link_directories(${CPPUNIT_LIBRARY_DIRS}) + + list(APPEND test_gr_digital_sources + ${CMAKE_CURRENT_SOURCE_DIR}/test_gr_digital.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_digital.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_header_format.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_header_buffer.cc + ) + + add_executable(test-gr-digital ${test_gr_digital_sources}) + + list(APPEND GR_TEST_TARGET_DEPS test-gr-digital gnuradio-digital) + + target_link_libraries( + test-gr-digital + gnuradio-runtime + gnuradio-digital + ${Boost_LIBRARIES} + ${CPPUNIT_LIBRARIES} + ${LOG4CPP_LIBRARIES} + ) + + GR_ADD_TEST(test_gr_digital test-gr-digital) +endif(ENABLE_TESTING) diff --git a/gr-digital/lib/corr_est_cc_impl.cc b/gr-digital/lib/corr_est_cc_impl.cc index 772fc780dc..5157f8f6de 100644 --- a/gr-digital/lib/corr_est_cc_impl.cc +++ b/gr-digital/lib/corr_est_cc_impl.cc @@ -55,6 +55,17 @@ namespace gr { { d_sps = sps; + // In order to easily support the optional second output, + // don't deal with an unbounded max number of output items. + // For the common case of not using the optional second output, + // this ensures we optimally call the volk routines. + const size_t nitems = 24*1024; + set_max_noutput_items(nitems); + d_corr = (gr_complex *) + volk_malloc(sizeof(gr_complex)*nitems, volk_get_alignment()); + d_corr_mag = (float *) + volk_malloc(sizeof(float)*nitems, volk_get_alignment()); + // Create time-reversed conjugate of symbols d_symbols = symbols; for(size_t i=0; i < d_symbols.size(); i++) { @@ -96,16 +107,7 @@ namespace gr { // volk_get_alignment() / sizeof(gr_complex); //set_alignment(std::max(1,alignment_multiple)); - // In order to easily support the optional second output, - // don't deal with an unbounded max number of output items. - // For the common case of not using the optional second output, - // this ensures we optimally call the volk routines. - const size_t nitems = 24*1024; - set_max_noutput_items(nitems); - d_corr = (gr_complex *) - volk_malloc(sizeof(gr_complex)*nitems, volk_get_alignment()); - d_corr_mag = (float *) - volk_malloc(sizeof(float)*nitems, volk_get_alignment()); + d_scale = 1.0f; } corr_est_cc_impl::~corr_est_cc_impl() @@ -193,14 +195,7 @@ namespace gr { corr_est_cc_impl::_set_threshold(float threshold) { d_stashed_threshold = threshold; - - // Compute a correlation threshold. - // Compute the value of the discrete autocorrelation of the matched - // filter with offset 0 (aka the autocorrelation peak). - float corr = 0; - for(size_t i = 0; i < d_symbols.size(); i++) - corr += abs(d_symbols[i]*conj(d_symbols[i])); - d_thresh = threshold*corr*corr; + d_pfa = -logf(1.0f-threshold); } void @@ -228,10 +223,6 @@ namespace gr { // Our correlation filter length unsigned int hist_len = history() - 1; - // Delay the output by our correlation filter length so we can - // tag backwards in time - memcpy(out, &in[0], sizeof(gr_complex)*noutput_items); - // Calculate the correlation of the non-delayed input with the // known symbols. d_filter->filter(noutput_items, &in[hist_len], corr); @@ -239,19 +230,31 @@ namespace gr { // Find the magnitude squared of the correlation volk_32fc_magnitude_squared_32f(&d_corr_mag[0], corr, noutput_items); + float detection = 0; + for(int i = 0; i < noutput_items; i++) { + detection += d_corr_mag[i]; + } + detection /= static_cast<float>(noutput_items); + detection *= d_pfa; + int isps = (int)(d_sps + 0.5f); int i = 0; while(i < noutput_items) { - // Look for the correlator output to cross the threshold - if (d_corr_mag[i] <= d_thresh) { + // Look for the correlator output to cross the threshold. + // Sum power over two consecutive symbols in case we're offset + // in time. If off by 1/2 a symbol, the peak of any one point + // is much lower. + float corr_mag = d_corr_mag[i] + d_corr_mag[i+1]; + if(corr_mag <= 4*detection) { i++; continue; } + // Go to (just past) the current correlator output peak while ((i < (noutput_items-1)) && - (d_corr_mag[i] < d_corr_mag[i+1])) + (d_corr_mag[i] < d_corr_mag[i+1])) { i++; - + } // Delaying the primary signal output by the matched filter // length using history(), means that the the peak output of // the matched filter aligns with the start of the desired @@ -262,8 +265,9 @@ namespace gr { add_item_tag(0, nitems_written(0) + i, pmt::intern("corr_start"), pmt::from_double(d_corr_mag[i]), d_src_id); +#if 0 // Use Parabolic interpolation to estimate a fractional - // sample delay. There are more accurate methods as + // sample delay. There are more accurate methods as // the sample delay estimate using this method is biased. // But this method is simple and fast. // center between [-0.5,0.5] units of samples @@ -275,6 +279,21 @@ namespace gr { double denom = 2*(d_corr_mag[i-1]-2*d_corr_mag[i]+d_corr_mag[i+1]); center = nom/denom; } +#else + // Calculates the center of mass between the three points around the peak. + // Estimate is linear. + double nom = 0, den = 0; + nom = d_corr_mag[i-1] + 2*d_corr_mag[i] + 3*d_corr_mag[i+1]; + den = d_corr_mag[i-1] + d_corr_mag[i] + d_corr_mag[i+1]; + double center = nom / den; + center = (center - 2.0); // adjust for bias in center of mass calculation +#endif + + // Estimated scaling factor for the input stream to normalize + // the output to +/-1. + uint32_t maxi; + volk_32fc_index_max_32u_manual(&maxi, (gr_complex*)in, noutput_items, "generic"); + d_scale = 1 / std::abs(in[maxi]); // Calculate the phase offset of the incoming signal. // @@ -304,6 +323,8 @@ namespace gr { // N.B. the appropriate d_corr_mag[] index is "i", not "index". add_item_tag(0, nitems_written(0) + index, pmt::intern("corr_est"), pmt::from_double(d_corr_mag[i]), d_src_id); + add_item_tag(0, nitems_written(0) + index, pmt::intern("amp_est"), + pmt::from_double(d_scale), d_src_id); if (output_items.size() > 1) { // N.B. these debug tags are not offset to avoid walking off out buf @@ -313,6 +334,8 @@ namespace gr { pmt::from_double(center), d_src_id); add_item_tag(1, nitems_written(0) + i, pmt::intern("corr_est"), pmt::from_double(d_corr_mag[i]), d_src_id); + add_item_tag(1, nitems_written(0) + i, pmt::intern("amp_est"), + pmt::from_double(d_scale), d_src_id); } // Skip ahead to the next potential symbol peak @@ -325,6 +348,10 @@ namespace gr { // pmt::intern("ce_eow"), pmt::from_uint64(noutput_items), // d_src_id); + // Delay the output by our correlation filter length so we can + // tag backwards in time + memcpy(out, &in[0], sizeof(gr_complex)*noutput_items); + return noutput_items; } diff --git a/gr-digital/lib/corr_est_cc_impl.h b/gr-digital/lib/corr_est_cc_impl.h index 6e8dd17083..e0d4c8ef25 100644 --- a/gr-digital/lib/corr_est_cc_impl.h +++ b/gr-digital/lib/corr_est_cc_impl.h @@ -44,6 +44,9 @@ namespace gr { gr_complex *d_corr; float *d_corr_mag; + float d_scale; + float d_pfa; // probability of false alarm + void _set_mark_delay(unsigned int mark_delay); void _set_threshold(float threshold); diff --git a/gr-digital/lib/header_buffer.cc b/gr-digital/lib/header_buffer.cc new file mode 100644 index 0000000000..04233da8f2 --- /dev/null +++ b/gr-digital/lib/header_buffer.cc @@ -0,0 +1,211 @@ +/* -*- c++ -*- */ +/* Copyright 2015 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <string.h> +#include <algorithm> +#include <stdexcept> +#include <volk/volk.h> +#include <gnuradio/digital/header_buffer.h> + +namespace gr { + namespace digital { + + header_buffer::header_buffer(uint8_t *bytes_out) + { + d_offset = 0; + d_buffer = bytes_out; + } + + header_buffer::~header_buffer() + { + } + + void + header_buffer::clear() + { + if(d_buffer) // TX mode + d_offset = 0; + else // RX mode + d_input.clear(); + } + + size_t + header_buffer::length() const + { + if(d_buffer) // TX mode + return d_offset; + else // RX mode + return d_input.size(); + } + + const uint8_t* + header_buffer::header() const + { + return d_buffer; + } + + void + header_buffer::add_field8(uint8_t data, int len, bool bs) + { + int nbytes = len/8; + if(d_buffer) { + memcpy(&d_buffer[d_offset], &data, nbytes); + d_offset += nbytes; + } + } + + void + header_buffer::add_field16(uint16_t data, int len, bool bs) + { + int nbytes = len/8; + if(d_buffer) { + uint16_t x = data; + if(!bs) { + volk_16u_byteswap(&x, 1); + x = x >> (16-len); + } + memcpy(&d_buffer[d_offset], &x, nbytes); + d_offset += nbytes; + } + } + + void + header_buffer::add_field32(uint32_t data, int len, bool bs) + { + int nbytes = len/8; + if(d_buffer) { + uint32_t x = data; + if(!bs) { + volk_32u_byteswap(&x, 1); + x = x >> (32-len); + } + memcpy(&d_buffer[d_offset], &x, nbytes); + d_offset += nbytes; + } + } + + void + header_buffer::add_field64(uint64_t data, int len, bool bs) + { + int nbytes = len/8; + if(d_buffer) { + uint64_t x = data; + if(!bs) { + volk_64u_byteswap(&x, 1); + x = x >> (64-len); + } + memcpy(&d_buffer[d_offset], &x, nbytes); + d_offset += nbytes; + } + } + + void + header_buffer::insert_bit(int bit) + { + d_input.push_back(bit); + } + + uint8_t + header_buffer::extract_field8(int pos, int len, bool bs) + { + if(len > 8) { + throw std::runtime_error("header_buffer::extract_field for " + "uint8_t length must be <= 8"); + } + + uint8_t field = 0x00; + std::vector<bool>::iterator itr; + for(itr = d_input.begin()+pos; itr != d_input.begin()+pos+len; itr++) { + field = (field << 1) | ((*itr) & 0x1); + } + + return field; + } + + uint16_t + header_buffer::extract_field16(int pos, int len, bool bs) + { + if(len > 16) { + throw std::runtime_error("header_buffer::extract_field for " + "uint16_t length must be <= 16"); + } + + uint16_t field = 0x0000; + std::vector<bool>::iterator itr; + for(itr = d_input.begin()+pos; itr != d_input.begin()+pos+len; itr++) { + field = (field << 1) | ((*itr) & 0x1); + } + + if(bs) { + volk_16u_byteswap(&field, 1); + } + + return field; + } + + uint32_t + header_buffer::extract_field32(int pos, int len, bool bs) + { + if(len > 32) { + throw std::runtime_error("header_buffer::extract_field for " + "uint32_t length must be <= 32"); + } + + uint32_t field = 0x00000000; + std::vector<bool>::iterator itr; + for(itr = d_input.begin()+pos; itr != d_input.begin()+pos+len; itr++) { + field = (field << 1) | ((*itr) & 0x1); + } + + if(bs) { + volk_32u_byteswap(&field, 1); + } + + return field; + } + + uint64_t + header_buffer::extract_field64(int pos, int len, bool bs) + { + if(len > 64) { + throw std::runtime_error("header_buffer::extract_field for " + "uint64_t length must be <= 64"); + } + + uint64_t field = 0x0000000000000000; + std::vector<bool>::iterator itr; + for(itr = d_input.begin()+pos; itr != d_input.begin()+pos+len; itr++) { + field = (field << 1) | ((*itr) & 0x1); + } + + if(bs) { + volk_64u_byteswap(&field, 1); + } + + return field; + } + + } /* namespace digital */ +} /* namespace gr */ diff --git a/gr-digital/lib/header_format_base.cc b/gr-digital/lib/header_format_base.cc new file mode 100644 index 0000000000..a8d8c86f10 --- /dev/null +++ b/gr-digital/lib/header_format_base.cc @@ -0,0 +1,70 @@ +/* -*- c++ -*- */ +/* Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <iostream> +#include <string.h> +#include <volk/volk.h> +#include <gnuradio/digital/header_format_base.h> +#include <gnuradio/math.h> + +namespace gr { + namespace digital { + + header_format_base::header_format_base() + { + enter_search(); + configure_default_loggers(d_logger, d_debug_logger, "packet formatter"); + } + + header_format_base::~header_format_base() + { + } + + size_t + header_format_base::header_nbytes() const + { + return header_nbits() / 8; + } + + inline void + header_format_base::enter_search() + { + d_state = STATE_SYNC_SEARCH; + } + + inline void + header_format_base::enter_have_sync() + { + d_state = STATE_HAVE_SYNC; + } + + inline void + header_format_base::enter_have_header(int payload_len) + { + d_state = STATE_SYNC_SEARCH; + } + + } /* namespace digital */ +} /* namespace gr */ diff --git a/gr-digital/lib/header_format_counter.cc b/gr-digital/lib/header_format_counter.cc new file mode 100644 index 0000000000..6244ec1679 --- /dev/null +++ b/gr-digital/lib/header_format_counter.cc @@ -0,0 +1,120 @@ +/* -*- c++ -*- */ +/* Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <iostream> +#include <iomanip> +#include <string.h> +#include <volk/volk.h> +#include <gnuradio/digital/header_format_counter.h> +#include <gnuradio/digital/header_buffer.h> +#include <gnuradio/math.h> + +namespace gr { + namespace digital { + + header_format_counter::sptr + header_format_counter::make(const std::string &access_code, + int threshold, int bps) + { + return header_format_counter::sptr + (new header_format_counter(access_code, threshold, bps)); + } + + header_format_counter::header_format_counter(const std::string &access_code, + int threshold, int bps) + : header_format_default(access_code, threshold) + { + d_bps = bps; + d_counter = 0; + } + + header_format_counter::~header_format_counter() + { + } + + bool + header_format_counter::format(int nbytes_in, + const unsigned char *input, + pmt::pmt_t &output, + pmt::pmt_t &info) + + { + uint8_t* bytes_out = (uint8_t*)volk_malloc(header_nbytes(), + volk_get_alignment()); + + header_buffer header(bytes_out); + header.add_field64(d_access_code, d_access_code_len); + header.add_field16((uint16_t)(nbytes_in)); + header.add_field16((uint16_t)(nbytes_in)); + header.add_field16((uint16_t)(d_bps)); + header.add_field16((uint16_t)(d_counter)); + + // Package output data into a PMT vector + output = pmt::init_u8vector(header_nbytes(), bytes_out); + + // Creating the output pmt copies data; free our own here. + volk_free(bytes_out); + + d_counter++; + + return true; + } + + size_t + header_format_counter::header_nbits() const + { + return d_access_code_len + 8*4*sizeof(uint16_t); + } + + bool + header_format_counter::header_ok() + { + // confirm that two copies of header info are identical + uint16_t len0 = d_hdr_reg.extract_field16(0); + uint16_t len1 = d_hdr_reg.extract_field16(16); + return (len0 ^ len1) == 0; + } + + int + header_format_counter::header_payload() + { + uint16_t len = d_hdr_reg.extract_field16(0); + uint16_t bps = d_hdr_reg.extract_field16(32); + uint16_t counter = d_hdr_reg.extract_field16(48); + + d_bps = bps; + + d_info = pmt::make_dict(); + d_info = pmt::dict_add(d_info, pmt::intern("payload symbols"), + pmt::from_long(8*len / d_bps)); + d_info = pmt::dict_add(d_info, pmt::intern("bps"), + pmt::from_long(bps)); + d_info = pmt::dict_add(d_info, pmt::intern("counter"), + pmt::from_long(counter)); + return static_cast<int>(len); + } + + } /* namespace digital */ +} /* namespace gr */ diff --git a/gr-digital/lib/header_format_crc.cc b/gr-digital/lib/header_format_crc.cc new file mode 100644 index 0000000000..7594449c1c --- /dev/null +++ b/gr-digital/lib/header_format_crc.cc @@ -0,0 +1,161 @@ +/* -*- c++ -*- */ +/* Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <string.h> +#include <volk/volk.h> +#include <gnuradio/digital/header_format_crc.h> +#include <gnuradio/digital/header_buffer.h> + +namespace gr { + namespace digital { + + header_format_crc::sptr + header_format_crc::make(const std::string &len_key_name, + const std::string &num_key_name) + { + return header_format_crc::sptr + (new header_format_crc(len_key_name, num_key_name)); + } + + header_format_crc::header_format_crc(const std::string &len_key_name, + const std::string &num_key_name) + : header_format_base(), + d_header_number(0) + { + d_len_key_name = pmt::intern(len_key_name); + d_num_key_name = pmt::intern(num_key_name); + } + + header_format_crc::~header_format_crc() + { + } + + bool + header_format_crc::format(int nbytes_in, + const unsigned char *input, + pmt::pmt_t &output, + pmt::pmt_t &info) + { + uint8_t* bytes_out = (uint8_t*)volk_malloc(header_nbytes(), + volk_get_alignment()); + memset(bytes_out, 0, header_nbytes()); + + // Should this throw instead of mask if the payload is too big + // for 12-bit representation? + nbytes_in &= 0x0FFF; + + d_crc_impl.reset(); + d_crc_impl.process_bytes((void const *) &nbytes_in, 2); + d_crc_impl.process_bytes((void const *) &d_header_number, 2); + uint8_t crc = d_crc_impl(); + + // Form 2 12-bit items into 1 2-byte item + uint32_t concat = 0; + concat = (d_header_number << 12) | (nbytes_in); + + header_buffer header(bytes_out); + header.add_field32(concat, 24, true); + header.add_field8(crc); + + d_header_number++; + d_header_number &= 0x0FFF; + + // Package output data into a PMT vector + output = pmt::init_u8vector(header_nbytes(), bytes_out); + + // Creating the output pmt copies data; free our own here. + volk_free(bytes_out); + + return true; + } + + bool + header_format_crc::parse(int nbits_in, + const unsigned char *input, + std::vector<pmt::pmt_t> &info, + int &nbits_processed) + { + while(nbits_processed <= nbits_in) { + d_hdr_reg.insert_bit(input[nbits_processed++]); + if(d_hdr_reg.length() == header_nbits()) { + if(header_ok()) { + int payload_len = header_payload(); + enter_have_header(payload_len); + info.push_back(d_info); + d_hdr_reg.clear(); + return true; + } + else { + d_hdr_reg.clear(); + return false; + } + break; + } + } + + return true; + } + + size_t + header_format_crc::header_nbits() const + { + return 32; + } + + + bool + header_format_crc::header_ok() + { + uint32_t pkt = d_hdr_reg.extract_field32(0, 24, true); + uint16_t pktlen = static_cast<uint16_t>((pkt >> 8) & 0x0fff); + uint16_t pktnum = static_cast<uint16_t>((pkt >> 20) & 0x0fff); + uint8_t crc_rcvd = d_hdr_reg.extract_field8(24); + + // Check CRC8 + d_crc_impl.reset(); + d_crc_impl.process_bytes((void const *) &pktlen, 2); + d_crc_impl.process_bytes((void const *) &pktnum, 2); + uint8_t crc_clcd = d_crc_impl(); + + return (crc_rcvd == crc_clcd); + } + + int + header_format_crc::header_payload() + { + uint32_t pkt = d_hdr_reg.extract_field32(0, 24, true); + uint16_t pktlen = static_cast<uint16_t>((pkt >> 8) & 0x0fff); + uint16_t pktnum = static_cast<uint16_t>((pkt >> 20) & 0x0fff); + + d_info = pmt::make_dict(); + d_info = pmt::dict_add(d_info, d_len_key_name, + pmt::from_long(8*pktlen)); + d_info = pmt::dict_add(d_info, d_num_key_name, + pmt::from_long(pktnum)); + return static_cast<int>(pktlen); + } + + } /* namespace digital */ +} /* namespace gr */ diff --git a/gr-digital/lib/header_format_default.cc b/gr-digital/lib/header_format_default.cc new file mode 100644 index 0000000000..1b7a60e17f --- /dev/null +++ b/gr-digital/lib/header_format_default.cc @@ -0,0 +1,222 @@ +/* -*- c++ -*- */ +/* Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <iostream> +#include <string.h> +#include <volk/volk.h> +#include <gnuradio/digital/header_format_default.h> +#include <gnuradio/math.h> + +namespace gr { + namespace digital { + + header_format_default::sptr + header_format_default::make(const std::string &access_code, + int threshold) + { + return header_format_default::sptr + (new header_format_default(access_code, threshold)); + } + + header_format_default::header_format_default(const std::string &access_code, + int threshold) + : header_format_base(), + d_data_reg(0), d_mask(0), d_threshold(0), + d_pkt_len(0), d_pkt_count(0), d_nbits(0) + { + if(!set_access_code(access_code)) { + throw std::runtime_error("header_format_default: Setting access code failed"); + } + + set_threshold(threshold); + } + + header_format_default::~header_format_default() + { + } + + bool + header_format_default::set_access_code(const std::string &access_code) + { + d_access_code_len = access_code.length(); // # of bits in the access code + + if(access_code.size() > 64) { + return false; + } + + // set len top bits to 1. + d_mask = ((~0ULL) >> (64 - d_access_code_len)); + + d_access_code = 0; + for(unsigned i = 0; i < d_access_code_len; i++) { + d_access_code = (d_access_code << 1) | (access_code[i] & 1); + } + + return true; + } + + unsigned long long + header_format_default::access_code() const + { + return d_access_code; + } + + void + header_format_default::set_threshold(unsigned int thresh) + { + if(d_threshold > d_access_code_len) { + throw std::runtime_error("header_format_default: Cannot set threshold " \ + "larger than the access code length."); + } + d_threshold = thresh; + } + + unsigned int + header_format_default::threshold() const + { + return d_threshold; + } + + bool + header_format_default::format(int nbytes_in, + const unsigned char *input, + pmt::pmt_t &output, + pmt::pmt_t &info) + { + uint8_t* bytes_out = (uint8_t*)volk_malloc(header_nbytes(), + volk_get_alignment()); + + header_buffer header(bytes_out); + header.add_field64(d_access_code, d_access_code_len); + header.add_field16((uint16_t)(nbytes_in)); + header.add_field16((uint16_t)(nbytes_in)); + + // Package output data into a PMT vector + output = pmt::init_u8vector(header_nbytes(), bytes_out); + + // Creating the output pmt copies data; free our own here. + volk_free(bytes_out); + + return true; + } + + bool + header_format_default::parse(int nbits_in, + const unsigned char *input, + std::vector<pmt::pmt_t> &info, + int &nbits_processed) + { + nbits_processed = 0; + + while(nbits_processed < nbits_in) { + switch(d_state) { + case STATE_SYNC_SEARCH: // Look for the access code correlation + while(nbits_processed < nbits_in) { + // shift in new data + d_data_reg = (d_data_reg << 1) | ((input[nbits_processed++]) & 0x1); + + // compute hamming distance between desired access code and current data + uint64_t wrong_bits = 0; + uint64_t nwrong = d_threshold+1; + + wrong_bits = (d_data_reg ^ d_access_code) & d_mask; + volk_64u_popcnt(&nwrong, wrong_bits); + + if(nwrong <= d_threshold) { + enter_have_sync(); + break; + } + } + break; + + case STATE_HAVE_SYNC: + while(nbits_processed <= nbits_in) { // Shift bits one at a time into header + d_hdr_reg.insert_bit(input[nbits_processed++]); + if(d_hdr_reg.length() == (header_nbits()-d_access_code_len)) { + + // we have a full header, check to see if it has been received properly + if(header_ok()) { + int payload_len = header_payload(); + enter_have_header(payload_len); + info.push_back(d_info); + return true; + } + else { + enter_search(); // bad header + return false; + } + break; + } + } + break; + } + } + + return false; + } + + size_t + header_format_default::header_nbits() const + { + return d_access_code_len + 8*2*sizeof(uint16_t); + } + + inline void + header_format_default::enter_have_sync() + { + d_state = STATE_HAVE_SYNC; + d_hdr_reg.clear(); + } + + inline void + header_format_default::enter_have_header(int payload_len) + { + d_state = STATE_SYNC_SEARCH; + d_pkt_len = payload_len; + d_pkt_count = 0; + } + + bool + header_format_default::header_ok() + { + // confirm that two copies of header info are identical + uint16_t len0 = d_hdr_reg.extract_field16(0, 16); + uint16_t len1 = d_hdr_reg.extract_field16(16, 16); + return (len0 ^ len1) == 0; + } + + int + header_format_default::header_payload() + { + uint16_t len = d_hdr_reg.extract_field16(0, 16); + + d_info = pmt::make_dict(); + d_info = pmt::dict_add(d_info, pmt::intern("payload symbols"), + pmt::from_long(8*len)); + return static_cast<int>(len); + } + + } /* namespace digital */ +} /* namespace gr */ diff --git a/gr-digital/lib/header_format_ofdm.cc b/gr-digital/lib/header_format_ofdm.cc new file mode 100644 index 0000000000..acaf53be67 --- /dev/null +++ b/gr-digital/lib/header_format_ofdm.cc @@ -0,0 +1,180 @@ +/* -*- c++ -*- */ +/* Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <string.h> +#include <volk/volk.h> +#include <gnuradio/digital/header_format_ofdm.h> +#include <gnuradio/digital/header_buffer.h> +#include <gnuradio/digital/lfsr.h> + +namespace gr { + namespace digital { + + header_format_ofdm::sptr + header_format_ofdm::make(const std::vector<std::vector<int> > &occupied_carriers, + int n_syms, + const std::string &len_key_name, + const std::string &frame_key_name, + const std::string &num_key_name, + int bits_per_header_sym, + int bits_per_payload_sym, + bool scramble_header) + { + return header_format_ofdm::sptr + (new header_format_ofdm(occupied_carriers, n_syms, + len_key_name, frame_key_name, num_key_name, + bits_per_header_sym, + bits_per_payload_sym, + scramble_header)); + } + + header_format_ofdm::header_format_ofdm(const std::vector<std::vector<int> > &occupied_carriers, + int n_syms, + const std::string &len_key_name, + const std::string &frame_key_name, + const std::string &num_key_name, + int bits_per_header_sym, + int bits_per_payload_sym, + bool scramble_header) + : header_format_crc(len_key_name, num_key_name), + d_frame_key_name(pmt::intern(frame_key_name)), + d_occupied_carriers(occupied_carriers), + d_bits_per_payload_sym(bits_per_payload_sym) + { + d_header_len = 0; + for(int i = 0; i < n_syms; i++) { + d_header_len += occupied_carriers[i].size(); + } + + d_syms_per_set = 0; + for(unsigned i = 0; i < d_occupied_carriers.size(); i++) { + d_syms_per_set += d_occupied_carriers[i].size(); + } + + // Init scrambler mask + d_scramble_mask = std::vector<uint8_t>(header_nbits(), 0); + if(scramble_header) { + // These are just random values which already have OK PAPR: + gr::digital::lfsr shift_reg(0x8a, 0x6f, 7); + for(size_t i = 0; i < header_nbytes(); i++) { + for(int k = 0; k < bits_per_header_sym; k++) { + d_scramble_mask[i] ^= shift_reg.next_bit() << k; + } + } + } + } + + header_format_ofdm::~header_format_ofdm() + { + } + + bool + header_format_ofdm::format(int nbytes_in, + const unsigned char *input, + pmt::pmt_t &output, + pmt::pmt_t &info) + { + bool ret_val = header_format_crc::format(nbytes_in, input, + output, info); + + //size_t len; + //uint8_t *out = pmt::u8vector_writable_elements(output, len); + //for(size_t i = 0; i < len; i++) { + // out[i] ^= d_scramble_mask[i]; + //} + + return ret_val; + } + + bool + header_format_ofdm::parse(int nbits_in, + const unsigned char *input, + std::vector<pmt::pmt_t> &info, + int &nbits_processed) + { + int index = 0; + while(nbits_processed <= nbits_in) { + d_hdr_reg.insert_bit(input[nbits_processed++] ^ d_scramble_mask[index++]); + if(d_hdr_reg.length() == header_nbits()) { + if(header_ok()) { + int payload_len = header_payload(); + enter_have_header(payload_len); + info.push_back(d_info); + d_hdr_reg.clear(); + return true; + } + else { + d_hdr_reg.clear(); + return false; + } + break; + } + } + + return true; + } + + size_t + header_format_ofdm::header_nbits() const + { + return d_header_len; + } + + int + header_format_ofdm::header_payload() + { + uint32_t pkt = d_hdr_reg.extract_field32(0, 24, true); + uint16_t pktlen = static_cast<uint16_t>((pkt >> 8) & 0x0fff); + uint16_t pktnum = static_cast<uint16_t>((pkt >> 20) & 0x0fff); + + // Convert num bytes to num complex symbols in payload + pktlen *= 8; + uint16_t pldlen = pktlen / d_bits_per_payload_sym; + if(pktlen % d_bits_per_payload_sym) { + pldlen++; + } + + // frame_len = # of OFDM symbols in this frame + int framelen = pldlen / d_syms_per_set; + int k = 0; + int i = framelen * d_syms_per_set; + while(i < pldlen) { + framelen++; + //i += d_occupied_carriers[k++].size(); + i += d_occupied_carriers[k].size(); + } + + d_info = pmt::make_dict(); + d_info = pmt::dict_add(d_info, d_len_key_name, + pmt::from_long(pldlen)); + d_info = pmt::dict_add(d_info, d_num_key_name, + pmt::from_long(pktnum)); + d_info = pmt::dict_add(d_info, d_frame_key_name, + pmt::from_long(framelen)); + return static_cast<int>(pldlen); + } + + } /* namespace digital */ +} /* namespace gr */ diff --git a/gr-digital/lib/packet_header_ofdm.cc b/gr-digital/lib/packet_header_ofdm.cc index 7a9558640e..22d62df1be 100644 --- a/gr-digital/lib/packet_header_ofdm.cc +++ b/gr-digital/lib/packet_header_ofdm.cc @@ -1,18 +1,18 @@ /* -*- c++ -*- */ /* Copyright 2012 Free Software Foundation, Inc. - * + * * This file is part of GNU Radio - * + * * GNU Radio is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. - * + * * GNU Radio is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with GNU Radio; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, @@ -148,4 +148,3 @@ namespace gr { } /* namespace digital */ } /* namespace gr */ - diff --git a/gr-digital/lib/pfb_clock_sync_ccf_impl.cc b/gr-digital/lib/pfb_clock_sync_ccf_impl.cc index 314ff94b0b..6ac39fbcfc 100644 --- a/gr-digital/lib/pfb_clock_sync_ccf_impl.cc +++ b/gr-digital/lib/pfb_clock_sync_ccf_impl.cc @@ -72,7 +72,8 @@ namespace gr { throw std::runtime_error("pfb_clock_sync_ccf: please specify a filter.\n"); // Let scheduler adjust our relative_rate. - enable_update_rate(true); + //enable_update_rate(true); + set_tag_propagation_policy(TPP_DONT); d_nfilters = filter_size; d_sps = floor(sps); @@ -108,6 +109,10 @@ namespace gr { set_taps(taps, d_taps, d_filters); set_taps(dtaps, d_dtaps, d_diff_filters); + d_old_in = 0; + d_new_in = 0; + d_last_out = 0; + set_relative_rate((float)d_osps/(float)d_sps); } @@ -420,8 +425,8 @@ namespace gr { } std::vector<tag_t> tags; - get_tags_in_range(tags, 0, nitems_read(0), - nitems_read(0)+d_sps*noutput_items, + get_tags_in_window(tags, 0, 0, + d_sps*noutput_items, pmt::intern("time_est")); int i = 0, count = 0; @@ -433,7 +438,8 @@ namespace gr { size_t offset = tags[0].offset-nitems_read(0); if((offset >= (size_t)count) && (offset < (size_t)(count + d_sps))) { float center = (float)pmt::to_double(tags[0].value); - d_k = (offset-count - d_sps/2.0) * d_nfilters + (M_PI*center*d_nfilters); + d_k = d_nfilters*(center + (offset - count)); + tags.erase(tags.begin()); } } @@ -458,7 +464,23 @@ namespace gr { out[i+d_out_idx] = d_filters[d_filtnum]->filter(&in[count+d_out_idx]); d_k = d_k + d_rate_i + d_rate_f; // update phase - d_out_idx++; + + + // Manage Tags + std::vector<tag_t> xtags; + std::vector<tag_t>::iterator itags; + d_new_in = nitems_read(0) + count + d_out_idx + d_sps; + get_tags_in_range(xtags, 0, d_old_in, d_new_in); + for(itags = xtags.begin(); itags != xtags.end(); itags++) { + tag_t new_tag = *itags; + //new_tag.offset = d_last_out + d_taps_per_filter/(2*d_sps) - 2; + new_tag.offset = d_last_out + d_taps_per_filter/4 - 2; + add_item_tag(0, new_tag); + } + d_old_in = d_new_in; + d_last_out = nitems_written(0) + i + d_out_idx; + + d_out_idx++; if(output_items.size() == 4) { err[i] = d_error; diff --git a/gr-digital/lib/pfb_clock_sync_ccf_impl.h b/gr-digital/lib/pfb_clock_sync_ccf_impl.h index 535628189f..b23b8fefa4 100644 --- a/gr-digital/lib/pfb_clock_sync_ccf_impl.h +++ b/gr-digital/lib/pfb_clock_sync_ccf_impl.h @@ -59,6 +59,8 @@ namespace gr { float d_error; int d_out_idx; + uint64_t d_old_in, d_new_in, d_last_out; + void create_diff_taps(const std::vector<float> &newtaps, std::vector<float> &difftaps); diff --git a/gr-digital/lib/protocol_formatter_async_impl.cc b/gr-digital/lib/protocol_formatter_async_impl.cc new file mode 100644 index 0000000000..83a2eedfdd --- /dev/null +++ b/gr-digital/lib/protocol_formatter_async_impl.cc @@ -0,0 +1,94 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <volk/volk.h> +#include <gnuradio/io_signature.h> +#include "protocol_formatter_async_impl.h" +#include <stdio.h> + +namespace gr { + namespace digital { + + protocol_formatter_async::sptr + protocol_formatter_async::make(const header_format_base::sptr &format) + { + return gnuradio::get_initial_sptr + (new protocol_formatter_async_impl(format)); + } + + protocol_formatter_async_impl::protocol_formatter_async_impl(const header_format_base::sptr &format) + : block("protocol_formatter_async", + io_signature::make(0, 0, 0), + io_signature::make(0, 0, 0)) + { + d_format = format; + + d_in_port = pmt::mp("in"); + d_hdr_port = pmt::mp("header"); + d_pld_port = pmt::mp("payload"); + + message_port_register_in(d_in_port); + message_port_register_out(d_hdr_port); + message_port_register_out(d_pld_port); + + set_msg_handler(d_in_port, + boost::bind(&protocol_formatter_async_impl::append, this ,_1) ); + } + + protocol_formatter_async_impl::~protocol_formatter_async_impl() + { + } + + void + protocol_formatter_async_impl::append(pmt::pmt_t msg) + { + // extract input pdu + pmt::pmt_t meta(pmt::car(msg)); + pmt::pmt_t input(pmt::cdr(msg)); + pmt::pmt_t header, output; + + size_t pkt_len = 0; + const uint8_t* bytes_in = pmt::u8vector_elements(input, pkt_len); + + // Pad the payload with 0's + uint8_t* payload = (uint8_t*)volk_malloc(pkt_len*sizeof(uint8_t), + volk_get_alignment()); + memcpy(payload, bytes_in, pkt_len*sizeof(uint8_t)); + output = pmt::init_u8vector(pkt_len, payload); + volk_free(payload); + + // Build the header from the input, metadata, and format + d_format->format(pkt_len, bytes_in, header, meta); + + // Package and publish + pmt::pmt_t hdr_pdu = pmt::cons(meta, header); + pmt::pmt_t pld_pdu = pmt::cons(meta, output); + message_port_pub(d_hdr_port, hdr_pdu); + message_port_pub(d_pld_port, pld_pdu); + } + + } /* namespace digital */ +} /* namespace gr */ diff --git a/gr-digital/lib/protocol_formatter_async_impl.h b/gr-digital/lib/protocol_formatter_async_impl.h new file mode 100644 index 0000000000..79c80de7af --- /dev/null +++ b/gr-digital/lib/protocol_formatter_async_impl.h @@ -0,0 +1,50 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_DIGITAL_PROTOCOL_FORMATTER_ASYNC_IMPL_H +#define INCLUDED_DIGITAL_PROTOCOL_FORMATTER_ASYNC_IMPL_H + +#include <gnuradio/digital/protocol_formatter_async.h> + +namespace gr { + namespace digital { + + class protocol_formatter_async_impl + : public protocol_formatter_async + { + private: + header_format_base::sptr d_format; + + pmt::pmt_t d_in_port; + pmt::pmt_t d_hdr_port, d_pld_port; + + void append(pmt::pmt_t msg); + + public: + protocol_formatter_async_impl(const header_format_base::sptr &format); + ~protocol_formatter_async_impl(); + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_PROTOCOL_FORMATTER_ASYNC_IMPL_H */ diff --git a/gr-digital/lib/protocol_formatter_bb_impl.cc b/gr-digital/lib/protocol_formatter_bb_impl.cc new file mode 100644 index 0000000000..fcf2f6609b --- /dev/null +++ b/gr-digital/lib/protocol_formatter_bb_impl.cc @@ -0,0 +1,118 @@ +/* -*- c++ -*- */ +/* + * Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <volk/volk.h> +#include <gnuradio/io_signature.h> +#include "protocol_formatter_bb_impl.h" +#include <stdio.h> + +namespace gr { + namespace digital { + + protocol_formatter_bb::sptr + protocol_formatter_bb::make(const header_format_base::sptr &format, + const std::string &len_tag_key) + { + return gnuradio::get_initial_sptr + (new protocol_formatter_bb_impl(format, len_tag_key)); + } + + protocol_formatter_bb_impl::protocol_formatter_bb_impl(const header_format_base::sptr &format, + const std::string &len_tag_key) + : tagged_stream_block("protocol_formatter_bb", + io_signature::make(1, 1, sizeof(char)), + io_signature::make(1, 1, sizeof(char)), + len_tag_key), + d_format(format) + { + set_output_multiple(d_format->header_nbytes()); + + // This is the worst case rate, because we don't know the true value, of course + set_relative_rate(d_format->header_nbytes()); + set_tag_propagation_policy(TPP_DONT); + } + + protocol_formatter_bb_impl::~protocol_formatter_bb_impl() + { + } + + void + protocol_formatter_bb_impl::set_header_format(header_format_base::sptr &format) + { + gr::thread::scoped_lock guard(d_setlock); + d_format = format; + } + + int + protocol_formatter_bb_impl::work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + gr::thread::scoped_lock guard(d_setlock); + unsigned char *out = (unsigned char *) output_items[0]; + const unsigned char *in = (const unsigned char *) input_items[0]; + + // Not really sure what to do with these tags; extract them and + // plug them into the info dictionary? + //std::vector<tag_t> tags; + //get_tags_in_window(tags, 0, 0, ninput_items[0]); + + pmt::pmt_t pmt_out; + pmt::pmt_t info = pmt::PMT_NIL; + if(!d_format->format(ninput_items[0], in, pmt_out, info)) { + GR_LOG_FATAL(d_logger, boost::format("header format returned false " + "(this shouldn't happen). Offending " + "header started at %1%") % nitems_read(0)); + throw std::runtime_error("header format returned false."); + } + + size_t len; + const uint8_t *data = pmt::u8vector_elements(pmt_out, len); + if(len != d_format->header_nbytes()) { + throw std::runtime_error("Header format got wrong size header"); + } + memcpy(out, data, len); + + if(pmt::is_dict(info)) { + std::vector<tag_t> mtags; + pmt::pmt_t mkeys = pmt::dict_keys(info); + pmt::pmt_t mvals = pmt::dict_values(info); + for(size_t i = 0; i < pmt::length(mkeys); i++) { + tag_t tag; + tag.offset = nitems_written(0); + tag.key = pmt::nth(i, mkeys); + tag.value = pmt::nth(i, mvals); + tag.srcid = alias_pmt(); + add_item_tag(0, tag); + } + } + + return len; + } + + } /* namespace digital */ +} /* namespace gr */ diff --git a/gr-digital/lib/protocol_formatter_bb_impl.h b/gr-digital/lib/protocol_formatter_bb_impl.h new file mode 100644 index 0000000000..c7c86e4e61 --- /dev/null +++ b/gr-digital/lib/protocol_formatter_bb_impl.h @@ -0,0 +1,56 @@ +/* -*- c++ -*- */ +/* + * Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_DIGITAL_PROTOCOL_FORMATTER_BB_IMPL_H +#define INCLUDED_DIGITAL_PROTOCOL_FORMATTER_BB_IMPL_H + +#include <gnuradio/digital/protocol_formatter_bb.h> + +namespace gr { + namespace digital { + + class protocol_formatter_bb_impl : public protocol_formatter_bb + { + private: + header_format_base::sptr d_format; + + public: + protocol_formatter_bb_impl(const header_format_base::sptr &format, + const std::string &len_tag_key); + ~protocol_formatter_bb_impl(); + + void set_header_format(header_format_base::sptr &format); + + void remove_length_tags(const std::vector<std::vector<tag_t> > &tags) {}; + int calculate_output_stream_length(const gr_vector_int &ninput_items) { + return d_format->header_nbytes(); }; + + int work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_PROTOCOL_FORMATTER_BB_IMPL_H */ diff --git a/gr-digital/lib/protocol_parser_b_impl.cc b/gr-digital/lib/protocol_parser_b_impl.cc new file mode 100644 index 0000000000..642fcae812 --- /dev/null +++ b/gr-digital/lib/protocol_parser_b_impl.cc @@ -0,0 +1,83 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "protocol_parser_b_impl.h" +#include <gnuradio/io_signature.h> +#include <stdexcept> +#include <volk/volk.h> +#include <iostream> + +namespace gr { + namespace digital { + + protocol_parser_b::sptr + protocol_parser_b::make(const header_format_base::sptr &format) + { + return gnuradio::get_initial_sptr + (new protocol_parser_b_impl(format)); + } + + + protocol_parser_b_impl::protocol_parser_b_impl(const header_format_base::sptr &format) + : sync_block("protocol_parser_b", + io_signature::make(1, 1, sizeof(char)), + io_signature::make(0, 0, 0)) + { + d_format = format; + + d_out_port = pmt::mp("info"); + message_port_register_out(d_out_port); + } + + protocol_parser_b_impl::~protocol_parser_b_impl() + { + } + + int + protocol_parser_b_impl::work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const unsigned char *in = (const unsigned char*)input_items[0]; + + int count = 0; + std::vector<pmt::pmt_t> info; + bool ret = d_format->parse(noutput_items, in, info, count); + + if(ret) { + for(size_t i = 0; i < info.size(); i++) { + message_port_pub(d_out_port, info[i]); + } + } + else { + message_port_pub(d_out_port, pmt::PMT_F); + } + + return count; + } + + } /* namespace digital */ +} /* namespace gr */ diff --git a/gr-digital/lib/protocol_parser_b_impl.h b/gr-digital/lib/protocol_parser_b_impl.h new file mode 100644 index 0000000000..7b093132ed --- /dev/null +++ b/gr-digital/lib/protocol_parser_b_impl.h @@ -0,0 +1,52 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_DIGITAL_PROTOCOL_PARSER_B_IMPL_H +#define INCLUDED_DIGITAL_PROTOCOL_PARSER_B_IMPL_H + +#include <gnuradio/digital/protocol_parser_b.h> + +namespace gr { + namespace digital { + + class protocol_parser_b_impl : public protocol_parser_b + { + private: + header_format_base::sptr d_format; + pmt::pmt_t d_out_port; + + public: + protocol_parser_b_impl(const header_format_base::sptr &format); + ~protocol_parser_b_impl(); + + void set_threshold(unsigned int thresh); + unsigned int threshold() const; + + int work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } // namespace digital +} // namespace gr + +#endif /* INCLUDED_DIGITAL_PROTOCOL_PARSER_B_IMPL_H */ diff --git a/gr-digital/lib/qa_digital.cc b/gr-digital/lib/qa_digital.cc new file mode 100644 index 0000000000..2888d2129d --- /dev/null +++ b/gr-digital/lib/qa_digital.cc @@ -0,0 +1,41 @@ +/* + * Copyright 2014 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +/* + * This class gathers together all the test cases for the gr-digital + * directory into a single test suite. As you create new test cases, + * add them here. + */ + +#include "qa_digital.h" +#include "qa_header_format.h" +#include "qa_header_buffer.h" + +CppUnit::TestSuite * +qa_digital::suite() +{ + CppUnit::TestSuite *s = new CppUnit::TestSuite("gr-digital"); + + s->addTest(qa_header_format::suite()); + s->addTest(qa_header_buffer::suite()); + + return s; +} diff --git a/gr-digital/lib/qa_digital.h b/gr-digital/lib/qa_digital.h new file mode 100644 index 0000000000..c5f3592960 --- /dev/null +++ b/gr-digital/lib/qa_digital.h @@ -0,0 +1,38 @@ +/* -*- c++ -*- */ +/* + * Copyright 2014 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef _QA_GR_DIGITAL_H_ +#define _QA_GR_DIGITAL_H_ + +#include <gnuradio/attributes.h> +#include <cppunit/TestSuite.h> + +//! collect all the tests for the gr-digital directory + +class __GR_ATTR_EXPORT qa_digital +{ + public: + //! return suite of tests for all of gr-digital directory + static CppUnit::TestSuite *suite(); +}; + +#endif /* _QA_GR_DIGITAL_H_ */ diff --git a/gr-digital/lib/qa_header_buffer.cc b/gr-digital/lib/qa_header_buffer.cc new file mode 100644 index 0000000000..321e90138c --- /dev/null +++ b/gr-digital/lib/qa_header_buffer.cc @@ -0,0 +1,364 @@ +/* -*- c++ -*- */ +/* + * Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <volk/volk.h> +#include <gnuradio/attributes.h> + +#include <stdio.h> +#include <cppunit/TestAssert.h> + +#include "qa_header_buffer.h" +#include <gnuradio/digital/header_buffer.h> + +void +qa_header_buffer::test_add8() +{ + size_t len = sizeof(uint8_t); + uint8_t *buf = (uint8_t*)volk_malloc(len, volk_get_alignment()); + + gr::digital::header_buffer header(buf); + header.add_field8(0xAF); + + CPPUNIT_ASSERT_EQUAL(len, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xAF, header.header()[0]); + + header.clear(); + CPPUNIT_ASSERT_EQUAL((size_t)0, header.length()); + + volk_free(buf); +} + +void +qa_header_buffer::test_add16() +{ + size_t len = sizeof(uint16_t); + uint8_t *buf = (uint8_t*)volk_malloc(len, volk_get_alignment()); + + uint16_t data = 0xAF5C; + + gr::digital::header_buffer header(buf); + header.add_field16(data); + + // Test standard add of a uint16 + CPPUNIT_ASSERT_EQUAL(len, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xAF, header.header()[0]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x5C, header.header()[1]); + + // Clear; test to make sure it's clear + header.clear(); + CPPUNIT_ASSERT_EQUAL((size_t)0, header.length()); + + // Test adding some subset of bits (must be a byte boundary) + header.add_field16(data, 8); + CPPUNIT_ASSERT_EQUAL((size_t)1, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x5C, header.header()[0]); + header.clear(); + + // Test adding and byte swapping + header.add_field16(data, 16, true); + CPPUNIT_ASSERT_EQUAL((size_t)2, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x5C, header.header()[0]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xAF, header.header()[1]); + header.clear(); + + // Test adding some subset of bits and byte swapping + header.add_field16(data, 8, true); + CPPUNIT_ASSERT_EQUAL((size_t)1, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x5C, header.header()[0]); + header.clear(); + + volk_free(buf); +} + +void +qa_header_buffer::test_add32() +{ + size_t len = sizeof(uint32_t); + uint8_t *buf = (uint8_t*)volk_malloc(len, volk_get_alignment()); + + uint32_t data = 0xAF5C7654; + + gr::digital::header_buffer header(buf); + header.add_field32(data); + + // Test standard add of a uint32 + CPPUNIT_ASSERT_EQUAL(len, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xAF, header.header()[0]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x5C, header.header()[1]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x76, header.header()[2]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x54, header.header()[3]); + + // Clear; test to make sure it's clear + header.clear(); + CPPUNIT_ASSERT_EQUAL((size_t)0, header.length()); + + // Test adding some subset of bits (must be a byte boundary) + header.add_field32(data, 8); + CPPUNIT_ASSERT_EQUAL((size_t)1, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x54, header.header()[0]); + header.clear(); + + // Test adding and byte swapping + header.add_field32(data, 32, true); + CPPUNIT_ASSERT_EQUAL((size_t)4, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x54, header.header()[0]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x76, header.header()[1]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x5C, header.header()[2]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xAF, header.header()[3]); + header.clear(); + + // Test adding some subset of bits and byte swapping + header.add_field32(data, 24, true); + CPPUNIT_ASSERT_EQUAL((size_t)3, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x54, header.header()[0]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x76, header.header()[1]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x5C, header.header()[2]); + header.clear(); + + volk_free(buf); +} + +void +qa_header_buffer::test_add64() +{ + size_t len = sizeof(uint64_t); + uint8_t *buf = (uint8_t*)volk_malloc(len, volk_get_alignment()); + + uint64_t data = 0xAF5C765432104567; + + gr::digital::header_buffer header(buf); + header.add_field64(data); + + // Test standard add of a uint64 + CPPUNIT_ASSERT_EQUAL(len, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xAF, header.header()[0]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x5C, header.header()[1]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x76, header.header()[2]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x54, header.header()[3]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x32, header.header()[4]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x10, header.header()[5]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x45, header.header()[6]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x67, header.header()[7]); + + // Clear; test to make sure it's clear + header.clear(); + CPPUNIT_ASSERT_EQUAL((size_t)0, header.length()); + + // Test adding some subset of bits (must be a byte boundary) + header.add_field64(data, 48); + CPPUNIT_ASSERT_EQUAL((size_t)6, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x76, header.header()[0]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x54, header.header()[1]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x32, header.header()[2]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x10, header.header()[3]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x45, header.header()[4]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x67, header.header()[5]); + header.clear(); + + // Test adding and byte swapping + header.add_field64(data, 64, true); + CPPUNIT_ASSERT_EQUAL((size_t)8, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x67, header.header()[0]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x45, header.header()[1]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x10, header.header()[2]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x32, header.header()[3]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x54, header.header()[4]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x76, header.header()[5]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x5C, header.header()[6]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xAF, header.header()[7]); + header.clear(); + + // Test adding some subset of bits and byte swapping + header.add_field64(data, 40, true); + CPPUNIT_ASSERT_EQUAL((size_t)5, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x67, header.header()[0]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x45, header.header()[1]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x10, header.header()[2]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x32, header.header()[3]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x54, header.header()[4]); + header.clear(); + + volk_free(buf); +} + +void +qa_header_buffer::test_add_many() +{ + size_t len = (32+64+8+16+32)/8; + uint8_t *buf = (uint8_t*)volk_malloc(len, volk_get_alignment()); + + gr::digital::header_buffer header(buf); + header.add_field32(0x01234567); + header.add_field64(0x89ABCDEFFEDCBA98); + header.add_field8(0x76); + header.add_field16(0x5432); + header.add_field32(0x10012345); + + CPPUNIT_ASSERT_EQUAL(len, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x01, header.header()[0]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x23, header.header()[1]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x45, header.header()[2]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x67, header.header()[3]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x89, header.header()[4]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xAB, header.header()[5]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xCD, header.header()[6]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xEF, header.header()[7]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xFE, header.header()[8]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xDC, header.header()[9]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0xBA, header.header()[10]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x98, header.header()[11]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x76, header.header()[12]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x54, header.header()[13]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x32, header.header()[14]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x10, header.header()[15]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x01, header.header()[16]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x23, header.header()[17]); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x45, header.header()[18]); +} + +void +qa_header_buffer::test_extract8() +{ + gr::digital::header_buffer header; + + uint64_t data = 0x0123456701234567; + + // Packed format: 0x80C4A2E680C4A2E6 + + volk_64u_byteswap(&data, 1); + for(int i = 0; i < 64; i++) { + header.insert_bit((data >> i) & 0x01); + } + + uint8_t x0 = header.extract_field8(0); + uint8_t x1 = header.extract_field8(12, 8); + uint8_t x2 = header.extract_field8(12, 4); + + CPPUNIT_ASSERT_EQUAL((size_t)64, header.length()); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x80, x0); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x4A, x1); + CPPUNIT_ASSERT_EQUAL((uint8_t)0x04, x2); +} + +void +qa_header_buffer::test_extract16() +{ + gr::digital::header_buffer header; + + uint64_t data = 0x0123456701234567; + + // Packed format: 0x80C4A2E680C4A2E6 + + volk_64u_byteswap(&data, 1); + for(int i = 0; i < 64; i++) { + header.insert_bit((data >> i) & 0x01); + } + + uint16_t x0 = header.extract_field16(0); + uint16_t x1 = header.extract_field16(12, 16); + uint16_t x2 = header.extract_field16(12, 12); + + CPPUNIT_ASSERT_EQUAL((size_t)64, header.length()); + CPPUNIT_ASSERT_EQUAL((uint16_t)0x80C4, x0); + CPPUNIT_ASSERT_EQUAL((uint16_t)0x4A2E, x1); + CPPUNIT_ASSERT_EQUAL((uint16_t)0x04A2, x2); +} + +void +qa_header_buffer::test_extract32() +{ + gr::digital::header_buffer header; + + uint64_t data = 0x0123456701234567; + + // Packed format: 0x80C4A2E680C4A2E6 + + volk_64u_byteswap(&data, 1); + for(int i = 0; i < 64; i++) { + header.insert_bit((data >> i) & 0x01); + } + + uint32_t x0 = header.extract_field32(0); + uint32_t x1 = header.extract_field32(12, 32); + uint32_t x2 = header.extract_field32(12, 24); + + CPPUNIT_ASSERT_EQUAL((size_t)64, header.length()); + CPPUNIT_ASSERT_EQUAL((uint32_t)0x80C4A2E6, x0); + CPPUNIT_ASSERT_EQUAL((uint32_t)0x4A2E680C, x1); + CPPUNIT_ASSERT_EQUAL((uint32_t)0x004A2E68, x2); +} + +void +qa_header_buffer::test_extract64() +{ + gr::digital::header_buffer header; + + uint64_t data = 0x0123456701234567; + + // Packed format: 0x80C4A2E680C4A2E6 + + volk_64u_byteswap(&data, 1); + for(int i = 0; i < 64; i++) { + header.insert_bit((data >> i) & 0x01); + } + + uint64_t x0 = header.extract_field64(0); + uint64_t x1 = header.extract_field64(0, 32); + uint64_t x2 = header.extract_field64(0, 44); + + CPPUNIT_ASSERT_EQUAL((size_t)64, header.length()); + CPPUNIT_ASSERT_EQUAL((uint64_t)0x80C4A2E680C4A2E6, x0); + CPPUNIT_ASSERT_EQUAL((uint64_t)0x0000000080C4A2E6, x1); + CPPUNIT_ASSERT_EQUAL((uint64_t)0x0000080C4A2E680C, x2); +} + +void +qa_header_buffer::test_extract_many() +{ + gr::digital::header_buffer header; + + uint64_t data = 0x0123456701234567; + + // Packed format: 0x80C4A2E680C4A2E6 + + volk_64u_byteswap(&data, 1); + for(int i = 0; i < 64; i++) { + header.insert_bit((data >> i) & 0x01); + } + + uint64_t x0 = header.extract_field64(0); + uint16_t x1 = header.extract_field16(28, 12); + uint32_t x2 = header.extract_field32(40, 21); + uint16_t x3 = header.extract_field16(1, 12); + uint8_t x4 = header.extract_field8 (7, 5); + + CPPUNIT_ASSERT_EQUAL((size_t)64, header.length()); + CPPUNIT_ASSERT_EQUAL((uint64_t)0x80C4A2E680C4A2E6, x0); + CPPUNIT_ASSERT_EQUAL((uint16_t)0x0680, x1); + CPPUNIT_ASSERT_EQUAL((uint32_t)0x0018945C, x2); + CPPUNIT_ASSERT_EQUAL((uint16_t)0x0018, x3); + CPPUNIT_ASSERT_EQUAL((uint8_t) 0x0C, x4); +} diff --git a/gr-digital/lib/qa_header_buffer.h b/gr-digital/lib/qa_header_buffer.h new file mode 100644 index 0000000000..48ab086293 --- /dev/null +++ b/gr-digital/lib/qa_header_buffer.h @@ -0,0 +1,59 @@ +/* -*- c++ -*- */ +/* + * Copyright 2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef _QA_DIGITAL_HEADER_BUFFER_H_ +#define _QA_DIGITAL_HEADER_BUFFER_H_ + +#include <cppunit/extensions/HelperMacros.h> +#include <cppunit/TestCase.h> + +class qa_header_buffer : public CppUnit::TestCase +{ + CPPUNIT_TEST_SUITE(qa_header_buffer); + CPPUNIT_TEST(test_add8); + CPPUNIT_TEST(test_add16); + CPPUNIT_TEST(test_add32); + CPPUNIT_TEST(test_add64); + CPPUNIT_TEST(test_add_many); + + CPPUNIT_TEST(test_extract8); + CPPUNIT_TEST(test_extract16); + CPPUNIT_TEST(test_extract32); + CPPUNIT_TEST(test_extract64); + CPPUNIT_TEST(test_extract_many); + CPPUNIT_TEST_SUITE_END(); + + private: + void test_add8(); + void test_add16(); + void test_add32(); + void test_add64(); + void test_add_many(); + + void test_extract8(); + void test_extract16(); + void test_extract32(); + void test_extract64(); + void test_extract_many(); +}; + +#endif /* _QA_DIGITAL_HEADER_BUFFER_H_ */ diff --git a/gr-digital/lib/qa_header_format.cc b/gr-digital/lib/qa_header_format.cc new file mode 100644 index 0000000000..b06a2dd5c0 --- /dev/null +++ b/gr-digital/lib/qa_header_format.cc @@ -0,0 +1,265 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <gnuradio/attributes.h> + +#include <stdio.h> +#include <cmath> +#include <volk/volk.h> +#include <gnuradio/expj.h> +#include <cppunit/TestAssert.h> + +#include "qa_header_format.h" +#include <gnuradio/digital/header_format_counter.h> +#include <gnuradio/digital/header_format_default.h> +#include <gnuradio/blocks/unpack_k_bits.h> + +void +qa_header_format::test_default_format() +{ + static const int N = 4800; + int upper8 = (N >> 8) & 0xFF; + int lower8 = N & 0xFF; + + std::string ac = "1010101010101010"; //0xAAAA + unsigned char *data = (unsigned char*)volk_malloc(N*sizeof(unsigned char), + volk_get_alignment()); + srand (time(NULL)); + for(unsigned int i = 0; i < N; i++) { + data[i] = rand() % 256; + } + + gr::digital::header_format_default::sptr hdr_format; + hdr_format = gr::digital::header_format_default::make(ac, 0); + + pmt::pmt_t output; + pmt::pmt_t info = pmt::make_dict(); + + bool ret = hdr_format->format(N, data, output, info); + size_t length = pmt::length(output); + + CPPUNIT_ASSERT(ret); + CPPUNIT_ASSERT_EQUAL(length, hdr_format->header_nbytes()); + CPPUNIT_ASSERT_EQUAL(8*length, hdr_format->header_nbits()); + + // Test access code formatted correctly + unsigned char h0 = pmt::u8vector_ref(output, 0); + unsigned char h1 = pmt::u8vector_ref(output, 1); + CPPUNIT_ASSERT_EQUAL(0xAA, (int)h0); + CPPUNIT_ASSERT_EQUAL(0xAA, (int)h1); + + // Test upper and lower portion of length field, repeated twice + unsigned char h2 = pmt::u8vector_ref(output, 2); + unsigned char h3 = pmt::u8vector_ref(output, 3); + unsigned char h4 = pmt::u8vector_ref(output, 4); + unsigned char h5 = pmt::u8vector_ref(output, 5); + CPPUNIT_ASSERT_EQUAL(upper8, (int)h2); + CPPUNIT_ASSERT_EQUAL(lower8, (int)h3); + CPPUNIT_ASSERT_EQUAL(upper8, (int)h4); + CPPUNIT_ASSERT_EQUAL(lower8, (int)h5); + + volk_free(data); +} + + +void +qa_header_format::test_default_parse() +{ + static const int nbytes = 106; + static const int nbits = 8*nbytes; + unsigned char *bytes = (unsigned char*)volk_malloc(nbytes*sizeof(unsigned char), + volk_get_alignment()); + unsigned char *bits = (unsigned char*)volk_malloc(nbits*sizeof(unsigned char), + volk_get_alignment()); + + srand(time(NULL)); + + // Fill bytes with random values + for(unsigned int i = 0; i < nbytes; i++) { + bytes[i] = rand() % 256; + } + + int index = 0; + bytes[index+0] = 0xAA; + bytes[index+1] = 0xAA; + bytes[index+2] = 0x00; + bytes[index+3] = 0x64; + bytes[index+4] = 0x00; + bytes[index+5] = 0x64; + + gr::blocks::kernel::unpack_k_bits unpacker = gr::blocks::kernel::unpack_k_bits(8); + unpacker.unpack(bits, bytes, nbytes); + + std::string ac = "1010101010101010"; //0xAAAA + gr::digital::header_format_default::sptr hdr_format; + hdr_format = gr::digital::header_format_default::make(ac, 0); + + int count = 0; + std::vector<pmt::pmt_t> info; + bool ret = hdr_format->parse(nbits, bits, info, count); + + CPPUNIT_ASSERT(ret); + CPPUNIT_ASSERT_EQUAL((size_t)1, info.size()); + + pmt::pmt_t dict = info[0]; + int payload_bits = pmt::to_long(pmt::dict_ref(dict, pmt::intern("payload symbols"), + pmt::from_long(-1))); + + int hdr_bits = (int)hdr_format->header_nbits(); + int expected_bits = nbits - hdr_bits; + CPPUNIT_ASSERT_EQUAL(expected_bits, payload_bits); + + volk_free(bytes); + volk_free(bits); +} + +void +qa_header_format::test_counter_format() +{ + static const int N = 4800; + int upper8 = (N >> 8) & 0xFF; + int lower8 = N & 0xFF; + + std::string ac = "1010101010101010"; //0xAAAA + unsigned char *data = (unsigned char*)volk_malloc(N*sizeof(unsigned char), + volk_get_alignment()); + srand (time(NULL)); + for(unsigned int i = 0; i < N; i++) { + data[i] = rand() % 256; + } + + uint16_t expected_bps = 2; + gr::digital::header_format_counter::sptr hdr_format; + hdr_format = gr::digital::header_format_counter::make(ac, 0, expected_bps); + + pmt::pmt_t output; + pmt::pmt_t info = pmt::make_dict(); + + bool ret = hdr_format->format(N, data, output, info); + size_t length = pmt::length(output); + + CPPUNIT_ASSERT(ret); + CPPUNIT_ASSERT_EQUAL(length, hdr_format->header_nbytes()); + CPPUNIT_ASSERT_EQUAL(8*length, hdr_format->header_nbits()); + + // Test access code formatted correctly + unsigned char h0 = pmt::u8vector_ref(output, 0); + unsigned char h1 = pmt::u8vector_ref(output, 1); + CPPUNIT_ASSERT_EQUAL(0xAA, (int)h0); + CPPUNIT_ASSERT_EQUAL(0xAA, (int)h1); + + // Test upper and lower portion of length field, repeated twice + unsigned char h2 = pmt::u8vector_ref(output, 2); + unsigned char h3 = pmt::u8vector_ref(output, 3); + unsigned char h4 = pmt::u8vector_ref(output, 4); + unsigned char h5 = pmt::u8vector_ref(output, 5); + CPPUNIT_ASSERT_EQUAL(upper8, (int)h2); + CPPUNIT_ASSERT_EQUAL(lower8, (int)h3); + CPPUNIT_ASSERT_EQUAL(upper8, (int)h4); + CPPUNIT_ASSERT_EQUAL(lower8, (int)h5); + + uint16_t h6 = (uint16_t)pmt::u8vector_ref(output, 6); + uint16_t h7 = (uint16_t)pmt::u8vector_ref(output, 7); + uint16_t bps = ((h6 << 8) & 0xFF00) | (h7 & 0x00FF); + CPPUNIT_ASSERT_EQUAL(expected_bps, bps); + + uint16_t h8 = pmt::u8vector_ref(output, 8); + uint16_t h9 = pmt::u8vector_ref(output, 9); + uint16_t counter = ((h8 << 8) & 0xFF00) | (h9 & 0x00FF); + CPPUNIT_ASSERT_EQUAL((uint16_t)0, counter); + + // Run another format to increment the counter to 1 and test. + ret = hdr_format->format(N, data, output, info); + h8 = pmt::u8vector_ref(output, 8); + h9 = pmt::u8vector_ref(output, 9); + counter = ((h8 << 8) & 0xFF00) | (h9 & 0x00FF); + CPPUNIT_ASSERT_EQUAL((uint16_t)1, counter); + + volk_free(data); +} + + +void +qa_header_format::test_counter_parse() +{ + static const int nbytes = 110; + static const int nbits = 8*nbytes; + unsigned char *bytes = (unsigned char*)volk_malloc(nbytes*sizeof(unsigned char), + volk_get_alignment()); + unsigned char *bits = (unsigned char*)volk_malloc(nbits*sizeof(unsigned char), + volk_get_alignment()); + + srand(time(NULL)); + + // Fill bytes with random values + for(unsigned int i = 0; i < nbytes; i++) { + bytes[i] = rand() % 256; + } + + int index = 0; + bytes[index+0] = 0xAA; + bytes[index+1] = 0xAA; + bytes[index+2] = 0x00; + bytes[index+3] = 0x64; + bytes[index+4] = 0x00; + bytes[index+5] = 0x64; + bytes[index+6] = 0x00; + bytes[index+7] = 0x02; + bytes[index+8] = 0x00; + bytes[index+9] = 0x00; + + gr::blocks::kernel::unpack_k_bits unpacker = gr::blocks::kernel::unpack_k_bits(8); + unpacker.unpack(bits, bytes, nbytes); + + uint16_t expected_bps = 2; + std::string ac = "1010101010101010"; //0xAAAA + gr::digital::header_format_counter::sptr hdr_format; + hdr_format = gr::digital::header_format_counter::make(ac, 0, expected_bps); + + int count = 0; + std::vector<pmt::pmt_t> info; + bool ret = hdr_format->parse(nbits, bits, info, count); + + CPPUNIT_ASSERT(ret); + CPPUNIT_ASSERT_EQUAL((size_t)1, info.size()); + + pmt::pmt_t dict = info[0]; + int payload_syms = pmt::to_long(pmt::dict_ref(dict, pmt::intern("payload symbols"), + pmt::from_long(-1))); + int bps = pmt::to_long(pmt::dict_ref(dict, pmt::intern("bps"), + pmt::from_long(-1))); + int counter = pmt::to_long(pmt::dict_ref(dict, pmt::intern("counter"), + pmt::from_long(-1))); + + int hdr_bits = (int)hdr_format->header_nbits(); + int expected_bits = nbits - hdr_bits; + CPPUNIT_ASSERT_EQUAL(expected_bits, payload_syms * bps); + CPPUNIT_ASSERT_EQUAL(expected_bps, (uint16_t)bps); + CPPUNIT_ASSERT_EQUAL(0, counter); + + volk_free(bytes); + volk_free(bits); +} diff --git a/gr-digital/lib/qa_header_format.h b/gr-digital/lib/qa_header_format.h new file mode 100644 index 0000000000..281e8f4665 --- /dev/null +++ b/gr-digital/lib/qa_header_format.h @@ -0,0 +1,47 @@ +/* -*- c++ -*- */ +/* + * Copyright 2015-2016 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef _QA_DIGITAL_HEADER_FORMAT_H_ +#define _QA_DIGITAL_HEADER_FORMAT_H_ + +#include <cppunit/extensions/HelperMacros.h> +#include <cppunit/TestCase.h> + +class qa_header_format : public CppUnit::TestCase +{ + CPPUNIT_TEST_SUITE(qa_header_format); + CPPUNIT_TEST(test_default_format); + CPPUNIT_TEST(test_default_parse); + CPPUNIT_TEST(test_counter_format); + CPPUNIT_TEST(test_counter_parse); + CPPUNIT_TEST_SUITE_END(); + + private: + void test_default_format(); + void test_default_parse(); + void test_default_parse_soft(); + void test_counter_format(); + void test_counter_parse(); + void test_counter_parse_soft(); +}; + +#endif /* _QA_DIGITAL_HEADER_FORMAT_H_ */ diff --git a/gr-digital/lib/test_gr_digital.cc b/gr-digital/lib/test_gr_digital.cc new file mode 100644 index 0000000000..7a6049d5b0 --- /dev/null +++ b/gr-digital/lib/test_gr_digital.cc @@ -0,0 +1,48 @@ +/* -*- c++ -*- */ +/* + * Copyright 2014 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <cppunit/TextTestRunner.h> +#include <cppunit/XmlOutputter.h> + +#include <gnuradio/unittests.h> +#include "qa_digital.h" +#include <iostream> +#include <fstream> + +int +main(int argc, char **argv) +{ + CppUnit::TextTestRunner runner; + std::ofstream xmlfile(get_unittest_path("digital.xml").c_str()); + CppUnit::XmlOutputter *xmlout = new CppUnit::XmlOutputter(&runner.result(), xmlfile); + + runner.addTest(qa_digital::suite()); + runner.setOutputter(xmlout); + + bool was_successful = runner.run("", false); + + return was_successful ? 0 : 1; +} diff --git a/gr-digital/python/digital/qa_packet_format.py b/gr-digital/python/digital/qa_packet_format.py new file mode 100644 index 0000000000..6440b80a5e --- /dev/null +++ b/gr-digital/python/digital/qa_packet_format.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python +# +# Copyright 2015,2016 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +import random, time, struct +import pmt +from gnuradio import gr, gr_unittest, digital, blocks +from gnuradio.digital import packet_utils + +class test_packet_format_fb(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_packet_format_async_default(self): + ac = packet_utils.default_access_code + hdr_format = digital.header_format_default(ac, 0) + + formatter = digital.protocol_formatter_async(hdr_format) + snk_hdr = blocks.message_debug() + snk_pld = blocks.message_debug() + + self.tb.msg_connect(formatter, 'header', snk_hdr, 'store') + self.tb.msg_connect(formatter, 'payload', snk_pld, 'store') + + + send_str = "Hello World" + send_pmt = pmt.make_u8vector(len(send_str), ord(' ')) + for i in range(len(send_str)): + pmt.u8vector_set(send_pmt, i, ord(send_str[i])) + msg = pmt.cons(pmt.PMT_NIL, send_pmt) + + port = pmt.intern("in") + formatter.to_basic_block()._post(port, msg) + + self.tb.start() + while (snk_hdr.num_messages() < 1) and (snk_pld.num_messages() < 1): + time.sleep(0.1) + self.tb.stop() + self.tb.wait() + + result_hdr_pmt = pmt.cdr(snk_hdr.get_message(0)) + result_pld_pmt = pmt.cdr(snk_pld.get_message(0)) + + result_hdr = pmt.u8vector_elements(result_hdr_pmt) + result_pld = pmt.u8vector_elements(result_pld_pmt) + header = "".join([chr(r) for r in result_hdr]) + payload = "".join([chr(r) for r in result_pld]) + + access_code = packet_utils.conv_1_0_string_to_packed_binary_string(packet_utils.default_access_code)[0] + rx_access_code = header[0:len(access_code)] + + length = len(send_str) + rx_length = struct.unpack_from("!H", header, len(access_code))[0] + + self.assertEqual(access_code, rx_access_code) + self.assertEqual(length, rx_length) + self.assertEqual(length, len(payload)) + self.assertEqual(send_str, payload[0:length]) + + + def test_packet_format_async_counter(self): + bps = 2 + ac = packet_utils.default_access_code + hdr_format = digital.header_format_counter(ac, 0, 2) + + formatter = digital.protocol_formatter_async(hdr_format) + snk_hdr = blocks.message_debug() + snk_pld = blocks.message_debug() + + self.tb.msg_connect(formatter, 'header', snk_hdr, 'store') + self.tb.msg_connect(formatter, 'payload', snk_pld, 'store') + + + send_str = "Hello World" + 1000*"xxx" + send_pmt = pmt.make_u8vector(len(send_str), ord(' ')) + for i in range(len(send_str)): + pmt.u8vector_set(send_pmt, i, ord(send_str[i])) + msg = pmt.cons(pmt.PMT_NIL, send_pmt) + + port = pmt.intern("in") + formatter.to_basic_block()._post(port, msg) + + self.tb.start() + while (snk_hdr.num_messages() < 1) and (snk_pld.num_messages() < 1): + time.sleep(0.1) + self.tb.stop() + self.tb.wait() + + result_hdr_pmt = pmt.cdr(snk_hdr.get_message(0)) + result_pld_pmt = pmt.cdr(snk_pld.get_message(0)) + + result_hdr = pmt.u8vector_elements(result_hdr_pmt) + result_pld = pmt.u8vector_elements(result_pld_pmt) + header = "".join([chr(r) for r in result_hdr]) + payload = "".join([chr(r) for r in result_pld]) + + access_code = packet_utils.conv_1_0_string_to_packed_binary_string(packet_utils.default_access_code)[0] + rx_access_code = header[0:len(access_code)] + + length = len(send_str) + rx_length = struct.unpack_from("!H", header, len(access_code))[0] + rx_bps = struct.unpack_from("!H", header, len(access_code)+4)[0] + rx_counter = struct.unpack_from("!H", header, len(access_code)+6)[0] + + self.assertEqual(access_code, rx_access_code) + self.assertEqual(length, rx_length) + self.assertEqual(bps, rx_bps) + self.assertEqual(0, rx_counter) + self.assertEqual(length, len(payload)) + self.assertEqual(send_str, payload[0:length]) + +if __name__ == '__main__': + gr_unittest.run(test_packet_format_fb, "test_packet_format_fb.xml") diff --git a/gr-digital/swig/CMakeLists.txt b/gr-digital/swig/CMakeLists.txt index d87b7e9f7b..2f00dc14a3 100644 --- a/gr-digital/swig/CMakeLists.txt +++ b/gr-digital/swig/CMakeLists.txt @@ -30,6 +30,7 @@ set(GR_SWIG_INCLUDE_DIRS ${GR_FFT_INCLUDE_DIRS} ${GR_FILTER_INCLUDE_DIRS} ${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS} + ${VOLK_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ) diff --git a/gr-digital/swig/digital_swig.i b/gr-digital/swig/digital_swig.i index d7a3b81c15..8a38d65b82 100644 --- a/gr-digital/swig/digital_swig.i +++ b/gr-digital/swig/digital_swig.i @@ -1,5 +1,5 @@ /* - * Copyright 2011-2015 Free Software Foundation, Inc. + * Copyright 2011-2016 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -100,6 +100,14 @@ #include "gnuradio/digital/ofdm_sampler.h" #include "gnuradio/digital/ofdm_serializer_vcc.h" #include "gnuradio/digital/ofdm_sync_sc_cfb.h" +#include "gnuradio/digital/header_format_base.h" +#include "gnuradio/digital/header_format_default.h" +#include "gnuradio/digital/header_format_counter.h" +#include "gnuradio/digital/header_format_crc.h" +#include "gnuradio/digital/header_format_ofdm.h" +#include "gnuradio/digital/protocol_formatter_async.h" +#include "gnuradio/digital/protocol_formatter_bb.h" +#include "gnuradio/digital/protocol_parser_b.h" #include "gnuradio/digital/packet_header_default.h" #include "gnuradio/digital/packet_header_ofdm.h" #include "gnuradio/digital/packet_headergenerator_bb.h" @@ -181,6 +189,14 @@ %include "gnuradio/digital/ofdm_sampler.h" %include "gnuradio/digital/ofdm_serializer_vcc.h" %include "gnuradio/digital/ofdm_sync_sc_cfb.h" +%include "gnuradio/digital/header_format_base.h" +%include "gnuradio/digital/header_format_default.h" +%include "gnuradio/digital/header_format_counter.h" +%include "gnuradio/digital/header_format_crc.h" +%include "gnuradio/digital/header_format_ofdm.h" +%include "gnuradio/digital/protocol_formatter_async.h" +%include "gnuradio/digital/protocol_formatter_bb.h" +%include "gnuradio/digital/protocol_parser_b.h" %include "gnuradio/digital/packet_header_default.h" %include "gnuradio/digital/packet_header_ofdm.h" %include "gnuradio/digital/packet_headergenerator_bb.h" @@ -249,6 +265,9 @@ GR_SWIG_BLOCK_MAGIC2(digital, ofdm_mapper_bcv); GR_SWIG_BLOCK_MAGIC2(digital, ofdm_sampler); GR_SWIG_BLOCK_MAGIC2(digital, ofdm_serializer_vcc); GR_SWIG_BLOCK_MAGIC2(digital, ofdm_sync_sc_cfb); +GR_SWIG_BLOCK_MAGIC2(digital, protocol_formatter_async); +GR_SWIG_BLOCK_MAGIC2(digital, protocol_formatter_bb); +GR_SWIG_BLOCK_MAGIC2(digital, protocol_parser_b); GR_SWIG_BLOCK_MAGIC2(digital, packet_headergenerator_bb); GR_SWIG_BLOCK_MAGIC2(digital, packet_headerparser_b); GR_SWIG_BLOCK_MAGIC2(digital, packet_sink); diff --git a/gr-digital/swig/packet_header.i b/gr-digital/swig/packet_header.i index 7c06d19f71..ace70306e9 100644 --- a/gr-digital/swig/packet_header.i +++ b/gr-digital/swig/packet_header.i @@ -1,19 +1,19 @@ /* -*- c++ -*- */ /* * Copyright 2012 Free Software Foundation, Inc. - * + * * This file is part of GNU Radio - * + * * GNU Radio is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. - * + * * GNU Radio is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with GNU Radio; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, @@ -32,3 +32,29 @@ packet_header_ofdm_sptr.__repr__ = lambda self: "<packet_header_ofdm>" packet_header_ofdm = packet_header_ofdm .make; %} +%template(header_format_base_sptr) boost::shared_ptr<gr::digital::header_format_base>; + +%template(header_format_default_sptr) boost::shared_ptr<gr::digital::header_format_default>; +%pythoncode %{ +header_format_default_sptr.__repr__ = lambda self: "<header_format_default>" +header_format_default = header_format_default .make; +%} + + +%template(header_format_counter_sptr) boost::shared_ptr<gr::digital::header_format_counter>; +%pythoncode %{ +header_format_counter_sptr.__repr__ = lambda self: "<header_format_counter>" +header_format_counter = header_format_counter .make; +%} + +%template(header_format_crc_sptr) boost::shared_ptr<gr::digital::header_format_crc>; +%pythoncode %{ +header_format_crc_sptr.__repr__ = lambda self: "<header_format_crc>" +header_format_crc = header_format_crc .make; +%} + +%template(header_format_ofdm_sptr) boost::shared_ptr<gr::digital::header_format_ofdm>; +%pythoncode %{ +header_format_ofdm_sptr.__repr__ = lambda self: "<header_format_ofdm>" +header_format_ofdm = header_format_ofdm .make; +%} |