diff options
Diffstat (limited to 'gr-digital/examples')
29 files changed, 2450 insertions, 2043 deletions
diff --git a/gr-digital/examples/CMakeLists.txt b/gr-digital/examples/CMakeLists.txt index 63e1eba4e4..64c4641aa5 100644 --- a/gr-digital/examples/CMakeLists.txt +++ b/gr-digital/examples/CMakeLists.txt @@ -53,7 +53,6 @@ GR_PYTHON_INSTALL(PROGRAMS ofdm/benchmark_rx.py ofdm/benchmark_tx.py ofdm/gr_plot_ofdm.py - ofdm/ofdm_mod_demod_test.py ofdm/receive_path.py ofdm/transmit_path.py ofdm/tunnel.py diff --git a/gr-digital/examples/berawgn.py b/gr-digital/examples/berawgn.py index d58dfbaaeb..b20b17fd39 100755 --- a/gr-digital/examples/berawgn.py +++ b/gr-digital/examples/berawgn.py @@ -1,4 +1,25 @@ #!/usr/bin/env python +# +# 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, +# Boston, MA 02110-1301, USA. +# + """ BER simulation for QPSK signals, compare to theoretical values. Change the N_BITS value to simulate more bits per Eb/N0 value, @@ -14,9 +35,21 @@ magnitude below what you chose for N_BITS. import math import numpy -from scipy.special import erfc -import pylab from gnuradio import gr, digital +from gnuradio import analog +from gnuradio import blocks + +try: + from scipy.special import erfc +except ImportError: + print "Error: could not import scipy (http://www.scipy.org/)" + sys.exit(1) + +try: + import pylab +except ImportError: + print "Error: could not import pylab (http://matplotlib.sourceforge.net/)" + sys.exit(1) # Best to choose powers of 10 N_BITS = 1e7 @@ -38,16 +71,16 @@ class BitErrors(gr.hier_block2): gr.io_signature(1, 1, gr.sizeof_int)) # Bit comparison - comp = gr.xor_bb() + comp = blocks.xor_bb() intdump_decim = 100000 if N_BITS < intdump_decim: intdump_decim = int(N_BITS) self.connect(self, comp, gr.unpack_k_bits_bb(bits_per_byte), - gr.uchar_to_float(), - gr.integrate_ff(intdump_decim), - gr.multiply_const_ff(1.0/N_BITS), + blocks.uchar_to_float(), + blocks.integrate_ff(intdump_decim), + blocks.multiply_const_ff(1.0/N_BITS), self) self.connect((self, 1), (comp, 1)) @@ -59,11 +92,11 @@ class BERAWGNSimu(gr.top_block): # Source is N_BITS bits, non-repeated data = map(int, numpy.random.randint(0, self.const.arity(), N_BITS/self.const.bits_per_symbol())) src = gr.vector_source_b(data, False) - mod = gr.chunks_to_symbols_bc((self.const.points()), 1) - add = gr.add_vcc() - noise = gr.noise_source_c(gr.GR_GAUSSIAN, - self.EbN0_to_noise_voltage(EbN0), - RAND_SEED) + mod = digital.chunks_to_symbols_bc((self.const.points()), 1) + add = blocks.add_vcc() + noise = analog.noise_source_c(analog.GR_GAUSSIAN, + self.EbN0_to_noise_voltage(EbN0), + RAND_SEED) demod = digital.constellation_decoder_cb(self.const.base()) ber = BitErrors(self.const.bits_per_symbol()) self.sink = gr.vector_sink_f() diff --git a/gr-digital/examples/demod/ber_simulation.grc b/gr-digital/examples/demod/ber_simulation.grc index daf8bfde0d..9f67504b5a 100644 --- a/gr-digital/examples/demod/ber_simulation.grc +++ b/gr-digital/examples/demod/ber_simulation.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Thu Jul 5 15:57:06 2012</timestamp> + <timestamp>Thu Dec 27 13:06:26 2012</timestamp> <block> <key>options</key> <param> @@ -92,60 +92,6 @@ </param> </block> <block> - <key>gr_add_xx</key> - <param> - <key>id</key> - <value>gr_add_xx</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(486, 151)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>digital_constellation_decoder_cb</key> - <param> - <key>id</key> - <value>digital_constellation_decoder_cb_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>constellation</key> - <value>const.base()</value> - </param> - <param> - <key>_coordinate</key> - <value>(618, 164)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>wxgui_numbersink2</key> <param> <key>id</key> @@ -408,10 +354,65 @@ </param> </block> <block> - <key>gr_noise_source_x</key> + <key>variable_slider</key> + <param> + <key>id</key> + <value>EbN0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Eb/N0 (dB)</value> + </param> + <param> + <key>value</key> + <value>10</value> + </param> + <param> + <key>min</key> + <value>-10</value> + </param> + <param> + <key>max</key> + <value>200</value> + </param> + <param> + <key>num_steps</key> + <value>211</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(311, 309)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>random_source_x</key> <param> <key>id</key> - <value>gr_noise_source_x</value> + <value>random_source_x</value> </param> <param> <key>_enabled</key> @@ -419,23 +420,27 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>byte</value> </param> <param> - <key>noise_type</key> - <value>gr.GR_GAUSSIAN</value> + <key>min</key> + <value>0</value> </param> <param> - <key>amp</key> - <value>1.0 / math.sqrt(2.0 * const.bits_per_symbol() * 10**(EbN0/10))</value> + <key>max</key> + <value>const.arity()</value> </param> <param> - <key>seed</key> - <value>42</value> + <key>num_samps</key> + <value>10000000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(16, 224)</value> + <value>(17, 125)</value> </param> <param> <key>_rotation</key> @@ -443,10 +448,10 @@ </param> </block> <block> - <key>gr_chunks_to_symbols_xx</key> + <key>digital_chunks_to_symbols_xx</key> <param> <key>id</key> - <value>gr_chunks_to_symbols_xx</value> + <value>digital_chunks_to_symbols_xx_0</value> </param> <param> <key>_enabled</key> @@ -474,7 +479,7 @@ </param> <param> <key>_coordinate</key> - <value>(240, 140)</value> + <value>(284, 70)</value> </param> <param> <key>_rotation</key> @@ -482,54 +487,53 @@ </param> </block> <block> - <key>variable_slider</key> + <key>digital_constellation_decoder_cb</key> <param> <key>id</key> - <value>EbN0</value> + <value>digital_constellation_decoder_cb_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Eb/N0 (dB)</value> - </param> - <param> - <key>value</key> - <value>10</value> + <key>constellation</key> + <value>const.base()</value> </param> <param> - <key>min</key> - <value>-10</value> + <key>_coordinate</key> + <value>(622, 164)</value> </param> <param> - <key>max</key> - <value>200</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>blocks_add_xx</key> <param> - <key>num_steps</key> - <value>211</value> + <key>id</key> + <value>blocks_add_xx</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>num_inputs</key> + <value>2</value> </param> <param> - <key>notebook</key> - <value></value> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(311, 309)</value> + <value>(469, 210)</value> </param> <param> <key>_rotation</key> @@ -537,10 +541,10 @@ </param> </block> <block> - <key>random_source_x</key> + <key>analog_noise_source_x</key> <param> <key>id</key> - <value>random_source_x</value> + <value>analog_noise_source_x_0</value> </param> <param> <key>_enabled</key> @@ -548,27 +552,23 @@ </param> <param> <key>type</key> - <value>byte</value> - </param> - <param> - <key>min</key> - <value>0</value> + <value>complex</value> </param> <param> - <key>max</key> - <value>const.arity()</value> + <key>noise_type</key> + <value>analog.GR_GAUSSIAN</value> </param> <param> - <key>num_samps</key> - <value>10000000</value> + <key>amp</key> + <value>1.0/math.sqrt(2.0 * const.bits_per_symbol() * 10*(EbN0/10))</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>seed</key> + <value>-42</value> </param> <param> <key>_coordinate</key> - <value>(17, 125)</value> + <value>(16, 224)</value> </param> <param> <key>_rotation</key> @@ -588,45 +588,45 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_chunks_to_symbols_xx</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> + <source_block_id>random_source_x</source_block_id> + <sink_block_id>gr_throttle</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_noise_source_x</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> + <source_block_id>blocks_add_xx</source_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_constellation_decoder_cb_0</source_block_id> + <sink_block_id>blks2_error_rate</sink_block_id> <source_key>0</source_key> <sink_key>1</sink_key> </connection> <connection> - <source_block_id>random_source_x</source_block_id> - <sink_block_id>gr_throttle</sink_block_id> + <source_block_id>blocks_add_xx</source_block_id> + <sink_block_id>digital_constellation_decoder_cb_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>random_source_x</source_block_id> - <sink_block_id>gr_chunks_to_symbols_xx</sink_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>gr_add_xx</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_block_id>digital_chunks_to_symbols_xx_0</source_block_id> + <sink_block_id>blocks_add_xx</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_constellation_decoder_cb_0</source_block_id> - <sink_block_id>blks2_error_rate</sink_block_id> + <source_block_id>analog_noise_source_x_0</source_block_id> + <sink_block_id>blocks_add_xx</sink_block_id> <source_key>0</source_key> <sink_key>1</sink_key> </connection> - <connection> - <source_block_id>gr_add_xx</source_block_id> - <sink_block_id>digital_constellation_decoder_cb_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> </flow_graph> diff --git a/gr-digital/examples/demod/digital_freq_lock.grc b/gr-digital/examples/demod/digital_freq_lock.grc index 09d3085dd0..c08251b8bc 100644 --- a/gr-digital/examples/demod/digital_freq_lock.grc +++ b/gr-digital/examples/demod/digital_freq_lock.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Thu Jul 5 18:11:22 2012</timestamp> + <timestamp>Mon Jul 16 21:25:18 2012</timestamp> <block> <key>options</key> <param> @@ -64,35 +64,19 @@ <key>random_source_x</key> <param> <key>id</key> - <value>random_source_x</value> + <value>sps</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>256</value> - </param> - <param> - <key>num_samps</key> - <value>10000000</value> - </param> - <param> - <key>repeat</key> - <value>True</value> + <key>value</key> + <value>4</value> </param> <param> <key>_coordinate</key> - <value>(-2, 111)</value> + <value>(166, -2)</value> </param> <param> <key>_rotation</key> @@ -100,30 +84,22 @@ </param> </block> <block> - <key>gr_throttle</key> + <key>variable</key> <param> <key>id</key> - <value>gr_throttle_0</value> + <value>rolloff</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> + <key>value</key> + <value>0.35</value> </param> <param> <key>_coordinate</key> - <value>(456, 134)</value> + <value>(231, 0)</value> </param> <param> <key>_rotation</key> @@ -134,7 +110,7 @@ <key>variable</key> <param> <key>id</key> - <value>sps</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> @@ -142,11 +118,11 @@ </param> <param> <key>value</key> - <value>4</value> + <value>32000</value> </param> <param> <key>_coordinate</key> - <value>(166, -2)</value> + <value>(439, -1)</value> </param> <param> <key>_rotation</key> @@ -154,61 +130,54 @@ </param> </block> <block> - <key>variable</key> + <key>variable_slider</key> <param> <key>id</key> - <value>rolloff</value> + <value>noise_amp</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>0.35</value> - </param> - <param> - <key>_coordinate</key> - <value>(231, 0)</value> + <key>label</key> + <value>Channel Noise</value> </param> <param> - <key>_rotation</key> + <key>value</key> <value>0</value> </param> - </block> - <block> - <key>digital_fll_band_edge_cc</key> <param> - <key>id</key> - <value>digital_fll_band_edge_cc_0</value> + <key>min</key> + <value>0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>max</key> + <value>1.0</value> </param> <param> - <key>type</key> - <value>cc</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>samps_per_sym</key> - <value>sps</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>rolloff</key> - <value>rolloff</value> + <key>converver</key> + <value>float_converter</value> </param> <param> - <key>filter_size</key> - <value>44</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>w</key> - <value>freq_bw</value> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(81, 248)</value> + <value>(553, 0)</value> </param> <param> <key>_rotation</key> @@ -219,7 +188,7 @@ <key>variable_slider</key> <param> <key>id</key> - <value>freq_bw</value> + <value>freq_offset</value> </param> <param> <key>_enabled</key> @@ -227,7 +196,7 @@ </param> <param> <key>label</key> - <value>FLL Loop Bandwidth</value> + <value>Frequency Offset</value> </param> <param> <key>value</key> @@ -235,11 +204,11 @@ </param> <param> <key>min</key> - <value>0</value> + <value>-0.5</value> </param> <param> <key>max</key> - <value>0.1</value> + <value>0.5</value> </param> <param> <key>num_steps</key> @@ -263,7 +232,7 @@ </param> <param> <key>_coordinate</key> - <value>(80, 382)</value> + <value>(673, -1)</value> </param> <param> <key>_rotation</key> @@ -271,22 +240,46 @@ </param> </block> <block> - <key>variable</key> + <key>digital_psk_mod</key> <param> <key>id</key> - <value>samp_rate</value> + <value>digital_psk_mod_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>32000</value> + <key>constellation_points</key> + <value>2</value> + </param> + <param> + <key>mod_code</key> + <value>"gray"</value> + </param> + <param> + <key>differential</key> + <value>False</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>sps</value> + </param> + <param> + <key>excess_bw</key> + <value>0.35</value> + </param> + <param> + <key>verbose</key> + <value>False</value> + </param> + <param> + <key>log</key> + <value>False</value> </param> <param> <key>_coordinate</key> - <value>(439, -1)</value> + <value>(194, 104)</value> </param> <param> <key>_rotation</key> @@ -294,42 +287,74 @@ </param> </block> <block> - <key>variable_slider</key> + <key>wxgui_fftsink2</key> <param> <key>id</key> - <value>noise_amp</value> + <value>wxgui_fftsink2_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Channel Noise</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>value</key> - <value>0</value> + <key>title</key> + <value>Frequency Corrected Signal</value> </param> <param> - <key>min</key> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> <value>0</value> </param> <param> - <key>max</key> - <value>1.0</value> + <key>y_per_div</key> + <value>10</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>y_divs</key> + <value>10</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>ref_level</key> + <value>10</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>ref_scale</key> + <value>2.0</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>win</key> + <value>None</value> + </param> + <param> + <key>win_size</key> + <value></value> </param> <param> <key>grid_pos</key> @@ -337,11 +362,15 @@ </param> <param> <key>notebook</key> - <value></value> + <value>notebook_0,0</value> + </param> + <param> + <key>freqvar</key> + <value>None</value> </param> <param> <key>_coordinate</key> - <value>(553, 0)</value> + <value>(439, 423)</value> </param> <param> <key>_rotation</key> @@ -349,54 +378,38 @@ </param> </block> <block> - <key>variable_slider</key> + <key>random_source_x</key> <param> <key>id</key> - <value>freq_offset</value> + <value>random_source_x</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Frequency Offset</value> - </param> - <param> - <key>value</key> - <value>0</value> + <key>type</key> + <value>byte</value> </param> <param> <key>min</key> - <value>-0.5</value> + <value>0</value> </param> <param> <key>max</key> - <value>0.5</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> + <value>256</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>num_samps</key> + <value>10000000</value> </param> <param> - <key>notebook</key> - <value></value> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(673, -1)</value> + <value>(0, 112)</value> </param> <param> <key>_rotation</key> @@ -404,38 +417,30 @@ </param> </block> <block> - <key>gr_channel_model</key> + <key>gr_throttle</key> <param> <key>id</key> - <value>gr_channel_model_0</value> + <value>gr_throttle_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>noise_voltage</key> - <value>noise_amp</value> - </param> - <param> - <key>freq_offset</key> - <value>freq_offset</value> - </param> - <param> - <key>epsilon</key> - <value>1.0</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>taps</key> - <value>1.0</value> + <key>samples_per_second</key> + <value>samp_rate</value> </param> <param> - <key>seed</key> - <value>42</value> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(649, 104)</value> + <value>(489, 179)</value> </param> <param> <key>_rotation</key> @@ -510,7 +515,7 @@ </param> <param> <key>_coordinate</key> - <value>(875, 0)</value> + <value>(990, 0)</value> </param> <param> <key>_rotation</key> @@ -601,7 +606,7 @@ </param> <param> <key>_coordinate</key> - <value>(875, 108)</value> + <value>(990, 147)</value> </param> <param> <key>_rotation</key> @@ -609,46 +614,38 @@ </param> </block> <block> - <key>digital_psk_mod</key> + <key>channel_model</key> <param> <key>id</key> - <value>digital_psk_mod_0</value> + <value>channel_model_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>constellation_points</key> - <value>2</value> - </param> - <param> - <key>mod_code</key> - <value>"gray"</value> - </param> - <param> - <key>differential</key> - <value>False</value> + <key>noise_voltage</key> + <value>noise_amp</value> </param> <param> - <key>samples_per_symbol</key> - <value>sps</value> + <key>freq_offset</key> + <value>freq_offset</value> </param> <param> - <key>excess_bw</key> - <value>0.35</value> + <key>epsilon</key> + <value>1.0</value> </param> <param> - <key>verbose</key> - <value>False</value> + <key>taps</key> + <value>1.0</value> </param> <param> - <key>log</key> - <value>False</value> + <key>seed</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(194, 104)</value> + <value>(743, 147)</value> </param> <param> <key>_rotation</key> @@ -656,54 +653,77 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>notebook</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0</value> + <value>notebook_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>style</key> + <value>wx.NB_TOP</value> </param> <param> - <key>title</key> - <value>Frequency Corrected Signal</value> + <key>labels</key> + <value>['Freq', 'Time']</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>v_scale</key> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(76, 579)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>variable_slider</key> <param> - <key>v_offset</key> + <key>id</key> + <value>freq_bw</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>FLL Loop Bandwidth</value> + </param> + <param> + <key>value</key> <value>0</value> </param> <param> - <key>t_scale</key> + <key>min</key> <value>0</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>max</key> + <value>0.1</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>win_size</key> - <value></value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -711,19 +731,11 @@ </param> <param> <key>notebook</key> - <value>notebook_0,1</value> - </param> - <param> - <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> - </param> - <param> - <key>y_axis_label</key> - <value>Counts</value> + <value></value> </param> <param> <key>_coordinate</key> - <value>(439, 289)</value> + <value>(77, 449)</value> </param> <param> <key>_rotation</key> @@ -731,10 +743,10 @@ </param> </block> <block> - <key>wxgui_fftsink2</key> + <key>digital_fll_band_edge_cc</key> <param> <key>id</key> - <value>wxgui_fftsink2_0_0</value> + <value>digital_fll_band_edge_cc_0</value> </param> <param> <key>_enabled</key> @@ -742,59 +754,78 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>cc</value> </param> <param> - <key>title</key> - <value>Frequency Corrected Signal</value> + <key>samps_per_sym</key> + <value>sps</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>rolloff</key> + <value>rolloff</value> </param> <param> - <key>baseband_freq</key> + <key>filter_size</key> + <value>44</value> + </param> + <param> + <key>w</key> + <value>freq_bw</value> + </param> + <param> + <key>_coordinate</key> + <value>(78, 308)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>wxgui_scopesink2</key> <param> - <key>y_per_div</key> - <value>10</value> + <key>id</key> + <value>wxgui_scopesink2_0_0</value> </param> <param> - <key>y_divs</key> - <value>10</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>ref_level</key> - <value>10</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>ref_scale</key> - <value>2.0</value> + <key>title</key> + <value>Frequency Corrected Signal</value> </param> <param> - <key>fft_size</key> - <value>1024</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>fft_rate</key> - <value>30</value> + <key>v_scale</key> + <value>0</value> </param> <param> - <key>peak_hold</key> - <value>False</value> + <key>v_offset</key> + <value>0</value> </param> <param> - <key>average</key> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> <value>False</value> </param> <param> - <key>avg_alpha</key> - <value>0</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>win</key> - <value>None</value> + <key>num_inputs</key> + <value>1</value> </param> <param> <key>win_size</key> @@ -806,15 +837,19 @@ </param> <param> <key>notebook</key> - <value>notebook_0,0</value> + <value>notebook_0,1</value> </param> <param> - <key>freqvar</key> - <value>None</value> + <key>trig_mode</key> + <value>gr.gr_TRIG_MODE_AUTO</value> + </param> + <param> + <key>y_axis_label</key> + <value>Counts</value> </param> <param> <key>_coordinate</key> - <value>(439, 423)</value> + <value>(439, 306)</value> </param> <param> <key>_rotation</key> @@ -822,34 +857,58 @@ </param> </block> <block> - <key>notebook</key> + <key>options</key> <param> <key>id</key> - <value>notebook_0</value> + <value>freq_lock</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>style</key> - <value>wx.NB_TOP</value> + <key>title</key> + <value></value> </param> <param> - <key>labels</key> - <value>['Freq', 'Time']</value> + <key>author</key> + <value></value> </param> <param> - <key>grid_pos</key> + <key>description</key> <value></value> </param> <param> - <key>notebook</key> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>realtime_scheduling</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(114, 521)</value> + <value>(-1, 0)</value> </param> <param> <key>_rotation</key> @@ -857,50 +916,50 @@ </param> </block> <connection> - <source_block_id>gr_channel_model_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_block_id>random_source_x</source_block_id> + <sink_block_id>digital_psk_mod_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_channel_model_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_block_id>digital_psk_mod_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>random_source_x</source_block_id> - <sink_block_id>digital_psk_mod_0</sink_block_id> + <source_block_id>digital_fll_band_edge_cc_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_psk_mod_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> + <source_block_id>digital_fll_band_edge_cc_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>gr_throttle_0</source_block_id> - <sink_block_id>gr_channel_model_0</sink_block_id> + <sink_block_id>channel_model_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_channel_model_0</source_block_id> - <sink_block_id>digital_fll_band_edge_cc_0</sink_block_id> + <source_block_id>channel_model_0</source_block_id> + <sink_block_id>wxgui_scopesink2_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>wxgui_scopesink2_0_0</sink_block_id> + <source_block_id>channel_model_0</source_block_id> + <sink_block_id>wxgui_fftsink2_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>wxgui_fftsink2_0_0</sink_block_id> + <source_block_id>channel_model_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> diff --git a/gr-digital/examples/demod/dpsk_loopback.grc b/gr-digital/examples/demod/dpsk_loopback.grc index c9867bea20..7a6b2d293f 100644 --- a/gr-digital/examples/demod/dpsk_loopback.grc +++ b/gr-digital/examples/demod/dpsk_loopback.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Thu Jul 5 16:26:53 2012</timestamp> + <timestamp>Sat Nov 10 15:13:23 2012</timestamp> <block> <key>options</key> <param> @@ -139,10 +139,10 @@ </param> </block> <block> - <key>gr_sig_source_x</key> + <key>gr_throttle</key> <param> <key>id</key> - <value>gr_sig_source_x_0</value> + <value>gr_throttle_0_0</value> </param> <param> <key>_enabled</key> @@ -153,28 +153,16 @@ <value>float</value> </param> <param> - <key>samp_rate</key> + <key>samples_per_second</key> <value>samp_rate</value> </param> <param> - <key>waveform</key> - <value>gr.GR_COS_WAVE</value> - </param> - <param> - <key>freq</key> - <value>freq</value> - </param> - <param> - <key>amp</key> + <key>vlen</key> <value>1</value> </param> <param> - <key>offset</key> - <value>0</value> - </param> - <param> <key>_coordinate</key> - <value>(184, 9)</value> + <value>(381, 51)</value> </param> <param> <key>_rotation</key> @@ -182,10 +170,10 @@ </param> </block> <block> - <key>digital_dxpsk_mod</key> + <key>blks2_packet_encoder</key> <param> <key>id</key> - <value>digital_dxpsk_mod_1</value> + <value>blks2_packet_encoder_0</value> </param> <param> <key>_enabled</key> @@ -193,62 +181,31 @@ </param> <param> <key>type</key> - <value>dbpsk</value> + <value>float</value> </param> <param> <key>samples_per_symbol</key> <value>2</value> </param> <param> - <key>excess_bw</key> - <value>0.35</value> - </param> - <param> - <key>gray_coded</key> - <value>True</value> - </param> - <param> - <key>verbose</key> - <value>False</value> - </param> - <param> - <key>log</key> - <value>False</value> - </param> - <param> - <key>_coordinate</key> - <value>(745, 16)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> + <key>bits_per_symbol</key> + <value>1</value> </param> - </block> - <block> - <key>gr_throttle</key> <param> - <key>id</key> - <value>gr_throttle_0_0</value> + <key>access_code</key> + <value></value> </param> <param> - <key>_enabled</key> + <key>pad_for_usrp</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> + <key>payload_length</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(358, 39)</value> + <value>(598, 19)</value> </param> <param> <key>_rotation</key> @@ -256,10 +213,10 @@ </param> </block> <block> - <key>blks2_packet_encoder</key> + <key>digital_dxpsk_mod</key> <param> <key>id</key> - <value>blks2_packet_encoder_0</value> + <value>digital_dxpsk_mod_1</value> </param> <param> <key>_enabled</key> @@ -267,31 +224,31 @@ </param> <param> <key>type</key> - <value>float</value> + <value>dbpsk</value> </param> <param> <key>samples_per_symbol</key> <value>2</value> </param> <param> - <key>bits_per_symbol</key> - <value>1</value> + <key>excess_bw</key> + <value>0.35</value> </param> <param> - <key>access_code</key> - <value></value> + <key>mod_code</key> + <value>"gray"</value> </param> <param> - <key>pad_for_usrp</key> - <value>True</value> + <key>verbose</key> + <value>False</value> </param> <param> - <key>payload_length</key> - <value>0</value> + <key>log</key> + <value>False</value> </param> <param> <key>_coordinate</key> - <value>(541, 9)</value> + <value>(806, 27)</value> </param> <param> <key>_rotation</key> @@ -333,12 +290,8 @@ <value>6.28/100.0</value> </param> <param> - <key>omega_relative_limit</key> - <value>0.005</value> - </param> - <param> - <key>gray_coded</key> - <value>True</value> + <key>mod_code</key> + <value>"gray"</value> </param> <param> <key>verbose</key> @@ -354,38 +307,7 @@ </param> <param> <key>_coordinate</key> - <value>(746, 135)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>blks2_packet_decoder</key> - <param> - <key>id</key> - <value>blks2_packet_decoder_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>access_code</key> - <value></value> - </param> - <param> - <key>threshold</key> - <value>-1</value> - </param> - <param> - <key>_coordinate</key> - <value>(545, 187)</value> + <value>(745, 139)</value> </param> <param> <key>_rotation</key> @@ -460,7 +382,81 @@ </param> <param> <key>_coordinate</key> - <value>(184, 165)</value> + <value>(184, 163)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>analog_sig_source_x</key> + <param> + <key>id</key> + <value>analog_sig_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>waveform</key> + <value>analog.GR_COS_WAVE</value> + </param> + <param> + <key>freq</key> + <value>freq</value> + </param> + <param> + <key>amp</key> + <value>1</value> + </param> + <param> + <key>offset</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(190, 19)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_packet_decoder</key> + <param> + <key>id</key> + <value>blks2_packet_decoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>access_code</key> + <value></value> + </param> + <param> + <key>threshold</key> + <value>-1</value> + </param> + <param> + <key>_coordinate</key> + <value>(545, 187)</value> </param> <param> <key>_rotation</key> @@ -498,7 +494,7 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_sig_source_x_0</source_block_id> + <source_block_id>analog_sig_source_x_0</source_block_id> <sink_block_id>gr_throttle_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> diff --git a/gr-digital/examples/demod/gfsk_loopback.grc b/gr-digital/examples/demod/gfsk_loopback.grc index f74a835266..51f5ade77a 100644 --- a/gr-digital/examples/demod/gfsk_loopback.grc +++ b/gr-digital/examples/demod/gfsk_loopback.grc @@ -1,55 +1,59 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Sun Jul 8 16:56:18 2012</timestamp> + <timestamp>Tue Nov 6 20:52:00 2012</timestamp> <block> - <key>variable_slider</key> + <key>options</key> <param> <key>id</key> - <value>freq</value> + <value>gfsk_loopback</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Frequency (Hz)</value> + <key>title</key> + <value></value> </param> <param> - <key>value</key> - <value>500</value> + <key>author</key> + <value></value> </param> <param> - <key>min</key> - <value>0</value> + <key>description</key> + <value></value> </param> <param> - <key>max</key> - <value>samp_rate/2</value> + <key>window_size</key> + <value>1280, 1024</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>generate_options</key> + <value>qt_gui</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>category</key> + <value>Custom</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>run_options</key> + <value>prompt</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>run</key> + <value>True</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> </param> <param> - <key>notebook</key> + <key>realtime_scheduling</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(34, 241)</value> + <value>(10, 10)</value> </param> <param> <key>_rotation</key> @@ -57,42 +61,45 @@ </param> </block> <block> - <key>gr_sig_source_x</key> + <key>variable</key> <param> <key>id</key> - <value>gr_sig_source_x_0</value> + <value>fm_sensitivity</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>value</key> + <value>1.0</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>_coordinate</key> + <value>(14, 273)</value> </param> <param> - <key>waveform</key> - <value>gr.GR_COS_WAVE</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>freq</key> - <value>freq</value> + <key>id</key> + <value>sps</value> </param> <param> - <key>amp</key> - <value>1</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>offset</key> - <value>0</value> + <key>value</key> + <value>4</value> </param> <param> <key>_coordinate</key> - <value>(215, 26)</value> + <value>(15, 338)</value> </param> <param> <key>_rotation</key> @@ -100,30 +107,22 @@ </param> </block> <block> - <key>gr_throttle</key> + <key>variable</key> <param> <key>id</key> - <value>gr_throttle_0_0</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> + <key>value</key> + <value>32000</value> </param> <param> <key>_coordinate</key> - <value>(272.5, 142.0)</value> + <value>(12, 76)</value> </param> <param> <key>_rotation</key> @@ -131,65 +130,54 @@ </param> </block> <block> - <key>blks2_packet_encoder</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>blks2_packet_encoder_0</value> + <value>freq</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samples_per_symbol</key> - <value>2</value> - </param> - <param> - <key>bits_per_symbol</key> - <value>1</value> - </param> - <param> - <key>access_code</key> + <key>label</key> <value></value> </param> <param> - <key>pad_for_usrp</key> - <value>True</value> + <key>value</key> + <value>500</value> </param> <param> - <key>payload_length</key> + <key>start</key> <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(261, 227)</value> + <key>stop</key> + <value>500</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>step</key> + <value>1</value> </param> - </block> - <block> - <key>variable</key> <param> - <key>id</key> - <value>samp_rate</value> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>value</key> - <value>10000</value> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(10, 170)</value> + <value>(13, 152)</value> </param> <param> <key>_rotation</key> @@ -197,50 +185,50 @@ </param> </block> <block> - <key>digital_gfsk_demod</key> + <key>qtgui_time_sink_x</key> <param> <key>id</key> - <value>digital_gfsk_demod_0</value> + <value>qtgui_time_sink_x_1</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>samples_per_symbol</key> - <value>sps</value> + <key>type</key> + <value>float</value> </param> <param> - <key>sensitivity</key> - <value>fm_sensitivity</value> + <key>name</key> + <value>QT GUI Plot</value> </param> <param> - <key>gain_mu</key> - <value>0.175</value> + <key>size</key> + <value>1024</value> </param> <param> - <key>mu</key> - <value>0.5</value> + <key>srate</key> + <value>samp_rate</value> </param> <param> - <key>omega_relative_limit</key> - <value>0.005</value> + <key>ymin</key> + <value>-1</value> </param> <param> - <key>freq_error</key> - <value>0.0</value> + <key>ymax</key> + <value>1</value> </param> <param> - <key>verbose</key> - <value>False</value> + <key>nconnections</key> + <value>1</value> </param> <param> - <key>log</key> - <value>False</value> + <key>gui_hint</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(669, 257)</value> + <value>(906, 122)</value> </param> <param> <key>_rotation</key> @@ -248,84 +236,42 @@ </param> </block> <block> - <key>variable</key> + <key>blks2_packet_encoder</key> <param> <key>id</key> - <value>sps</value> + <value>blks2_packet_encoder_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>8</value> - </param> - <param> - <key>_coordinate</key> - <value>(47, 445)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>digital_gfsk_mod</key> - <param> - <key>id</key> - <value>digital_gfsk_mod_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <key>type</key> + <value>float</value> </param> <param> <key>samples_per_symbol</key> <value>sps</value> </param> <param> - <key>sensitivity</key> - <value>fm_sensitivity</value> - </param> - <param> - <key>bt</key> - <value>0.35</value> - </param> - <param> - <key>verbose</key> - <value>False</value> - </param> - <param> - <key>log</key> - <value>False</value> - </param> - <param> - <key>_coordinate</key> - <value>(456, 277)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> + <key>bits_per_symbol</key> + <value>1</value> </param> - </block> - <block> - <key>variable</key> <param> - <key>id</key> - <value>fm_sensitivity</value> + <key>access_code</key> + <value></value> </param> <param> - <key>_enabled</key> + <key>pad_for_usrp</key> <value>True</value> </param> <param> - <key>value</key> - <value>1.0</value> + <key>payload_length</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(40, 366)</value> + <value>(237, 261)</value> </param> <param> <key>_rotation</key> @@ -356,7 +302,7 @@ </param> <param> <key>_coordinate</key> - <value>(705, 130)</value> + <value>(720, 130)</value> </param> <param> <key>_rotation</key> @@ -364,22 +310,30 @@ </param> </block> <block> - <key>gr_quadrature_demod_cf</key> + <key>gr_throttle</key> <param> <key>id</key> - <value>gr_quadrature_demod_cf_0</value> + <value>gr_throttle_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>gain</key> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> <value>1</value> </param> <param> <key>_coordinate</key> - <value>(627, 417)</value> + <value>(413, 50)</value> </param> <param> <key>_rotation</key> @@ -387,58 +341,42 @@ </param> </block> <block> - <key>options</key> + <key>analog_sig_source_x</key> <param> <key>id</key> - <value>gfsk_loopback</value> + <value>analog_sig_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>title</key> - <value></value> - </param> - <param> - <key>author</key> - <value></value> - </param> - <param> - <key>description</key> - <value></value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> + <key>type</key> + <value>float</value> </param> <param> - <key>generate_options</key> - <value>wx_gui</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>category</key> - <value>Custom</value> + <key>waveform</key> + <value>analog.GR_COS_WAVE</value> </param> <param> - <key>run_options</key> - <value>prompt</value> + <key>freq</key> + <value>freq</value> </param> <param> - <key>run</key> - <value>True</value> + <key>amp</key> + <value>1</value> </param> <param> - <key>max_nouts</key> + <key>offset</key> <value>0</value> </param> <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> <key>_coordinate</key> - <value>(10, 10)</value> + <value>(214, 18)</value> </param> <param> <key>_rotation</key> @@ -446,74 +384,89 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>digital_gfsk_demod</key> <param> <key>id</key> - <value>wxgui_scopesink2_0</value> + <value>digital_gfsk_demod_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>samples_per_symbol</key> + <value>sps</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>sensitivity</key> + <value>fm_sensitivity</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>gain_mu</key> + <value>0.175</value> </param> <param> - <key>v_scale</key> - <value>0</value> + <key>mu</key> + <value>0.5</value> </param> <param> - <key>v_offset</key> - <value>0</value> + <key>omega_relative_limit</key> + <value>0.005</value> </param> <param> - <key>t_scale</key> - <value>1./freq</value> + <key>freq_error</key> + <value>0.0</value> </param> <param> - <key>ac_couple</key> + <key>verbose</key> <value>False</value> </param> <param> - <key>xy_mode</key> + <key>log</key> <value>False</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>_coordinate</key> + <value>(670, 253)</value> </param> <param> - <key>win_size</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>digital_gfsk_mod</key> <param> - <key>grid_pos</key> - <value></value> + <key>id</key> + <value>digital_gfsk_mod_0</value> </param> <param> - <key>notebook</key> - <value></value> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>sps</value> + </param> + <param> + <key>sensitivity</key> + <value>fm_sensitivity</value> + </param> + <param> + <key>bt</key> + <value>0.35</value> </param> <param> - <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <key>verbose</key> + <value>False</value> </param> <param> - <key>y_axis_label</key> - <value>Counts</value> + <key>log</key> + <value>False</value> </param> <param> <key>_coordinate</key> - <value>(907, 59)</value> + <value>(456, 277)</value> </param> <param> <key>_rotation</key> @@ -521,10 +474,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>qtgui_time_sink_x</key> <param> <key>id</key> - <value>wxgui_scopesink2_1</value> + <value>qtgui_time_sink_x_1_0</value> </param> <param> <key>_enabled</key> @@ -535,60 +488,59 @@ <value>float</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>name</key> + <value>QT GUI Plot</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> + <key>size</key> + <value>1024</value> </param> <param> - <key>v_offset</key> - <value>0</value> - </param> - <param> - <key>t_scale</key> - <value>0</value> + <key>srate</key> + <value>samp_rate</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>ymin</key> + <value>-1</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>ymax</key> + <value>1</value> </param> <param> - <key>num_inputs</key> + <key>nconnections</key> <value>1</value> </param> <param> - <key>win_size</key> + <key>gui_hint</key> <value></value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>_coordinate</key> + <value>(888, 386)</value> </param> <param> - <key>notebook</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>analog_quadrature_demod_cf</key> <param> - <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <key>id</key> + <value>analog_quadrature_demod_cf_0</value> </param> <param> - <key>y_axis_label</key> - <value>Counts</value> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>gain</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(853, 400)</value> + <value>(673, 403)</value> </param> <param> <key>_rotation</key> @@ -596,50 +548,50 @@ </param> </block> <connection> - <source_block_id>digital_gfsk_mod_0</source_block_id> - <sink_block_id>digital_gfsk_demod_0</sink_block_id> + <source_block_id>blks2_packet_encoder_0</source_block_id> + <sink_block_id>digital_gfsk_mod_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_sig_source_x_0</source_block_id> - <sink_block_id>gr_throttle_0_0</sink_block_id> + <source_block_id>gr_throttle_0_0</source_block_id> + <sink_block_id>blks2_packet_encoder_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_throttle_0_0</source_block_id> - <sink_block_id>blks2_packet_encoder_0</sink_block_id> + <source_block_id>digital_gfsk_demod_0</source_block_id> + <sink_block_id>blks2_packet_decoder_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blks2_packet_encoder_0</source_block_id> - <sink_block_id>digital_gfsk_mod_0</sink_block_id> + <source_block_id>digital_gfsk_mod_0</source_block_id> + <sink_block_id>digital_gfsk_demod_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_gfsk_demod_0</source_block_id> - <sink_block_id>blks2_packet_decoder_0</sink_block_id> + <source_block_id>blks2_packet_decoder_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>blks2_packet_decoder_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_block_id>analog_sig_source_x_0</source_block_id> + <sink_block_id>gr_throttle_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>digital_gfsk_mod_0</source_block_id> - <sink_block_id>gr_quadrature_demod_cf_0</sink_block_id> + <sink_block_id>analog_quadrature_demod_cf_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_quadrature_demod_cf_0</source_block_id> - <sink_block_id>wxgui_scopesink2_1</sink_block_id> + <source_block_id>analog_quadrature_demod_cf_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-digital/examples/demod/gmsk_loopback.grc b/gr-digital/examples/demod/gmsk_loopback.grc new file mode 100644 index 0000000000..c4361fbed8 --- /dev/null +++ b/gr-digital/examples/demod/gmsk_loopback.grc @@ -0,0 +1,590 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Tue Nov 6 20:49:18 2012</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>gfsk_loopback</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value></value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>qt_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>fm_sensitivity</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>1.0</value> + </param> + <param> + <key>_coordinate</key> + <value>(14, 273)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>sps</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + <param> + <key>_coordinate</key> + <value>(15, 338)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(12, 76)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value></value> + </param> + <param> + <key>value</key> + <value>500</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>stop</key> + <value>500</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(13, 152)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>name</key> + <value>QT GUI Plot</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>srate</key> + <value>samp_rate</value> + </param> + <param> + <key>ymin</key> + <value>-1</value> + </param> + <param> + <key>ymax</key> + <value>1</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(906, 122)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_packet_encoder</key> + <param> + <key>id</key> + <value>blks2_packet_encoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>sps</value> + </param> + <param> + <key>bits_per_symbol</key> + <value>1</value> + </param> + <param> + <key>access_code</key> + <value></value> + </param> + <param> + <key>pad_for_usrp</key> + <value>True</value> + </param> + <param> + <key>payload_length</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(237, 261)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_packet_decoder</key> + <param> + <key>id</key> + <value>blks2_packet_decoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>access_code</key> + <value></value> + </param> + <param> + <key>threshold</key> + <value>-1</value> + </param> + <param> + <key>_coordinate</key> + <value>(720, 130)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_gmsk_demod</key> + <param> + <key>id</key> + <value>digital_gmsk_demod_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>2</value> + </param> + <param> + <key>gain_mu</key> + <value>0.175</value> + </param> + <param> + <key>mu</key> + <value>0.5</value> + </param> + <param> + <key>omega_relative_limit</key> + <value>0.005</value> + </param> + <param> + <key>freq_error</key> + <value>0.0</value> + </param> + <param> + <key>verbose</key> + <value>False</value> + </param> + <param> + <key>log</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(666, 261)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(413, 50)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>analog_sig_source_x</key> + <param> + <key>id</key> + <value>analog_sig_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>waveform</key> + <value>analog.GR_COS_WAVE</value> + </param> + <param> + <key>freq</key> + <value>freq</value> + </param> + <param> + <key>amp</key> + <value>1</value> + </param> + <param> + <key>offset</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(210, 18)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>name</key> + <value>QT GUI Plot</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>srate</key> + <value>samp_rate</value> + </param> + <param> + <key>ymin</key> + <value>-1</value> + </param> + <param> + <key>ymax</key> + <value>1</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(888, 386)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_gmsk_mod</key> + <param> + <key>id</key> + <value>digital_gmsk_mod_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>2</value> + </param> + <param> + <key>bt</key> + <value>0.35</value> + </param> + <param> + <key>verbose</key> + <value>False</value> + </param> + <param> + <key>log</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(446, 285)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>analog_quadrature_demod_cf</key> + <param> + <key>id</key> + <value>analog_quadrature_demod_cf_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(675, 402)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>gr_throttle_0_0</source_block_id> + <sink_block_id>blks2_packet_encoder_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_packet_decoder_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>blks2_packet_encoder_0</source_block_id> + <sink_block_id>digital_gmsk_mod_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_gmsk_mod_0</source_block_id> + <sink_block_id>digital_gmsk_demod_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_gmsk_demod_0</source_block_id> + <sink_block_id>blks2_packet_decoder_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>analog_sig_source_x_0</source_block_id> + <sink_block_id>gr_throttle_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>analog_quadrature_demod_cf_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>digital_gmsk_mod_0</source_block_id> + <sink_block_id>analog_quadrature_demod_cf_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-digital/examples/demod/mpsk_demod.grc b/gr-digital/examples/demod/mpsk_demod.grc index b718fb68af..61391de545 100644 --- a/gr-digital/examples/demod/mpsk_demod.grc +++ b/gr-digital/examples/demod/mpsk_demod.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Thu Jul 5 16:28:45 2012</timestamp> + <timestamp>Mon Aug 20 19:51:38 2012</timestamp> <block> <key>options</key> <param> @@ -29,7 +29,7 @@ </param> <param> <key>generate_options</key> - <value>wx_gui</value> + <value>qt_gui</value> </param> <param> <key>category</key> @@ -84,45 +84,18 @@ </param> </block> <block> - <key>variable</key> - <param> - <key>id</key> - <value>samps_per_sym</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>4</value> - </param> - <param> - <key>_coordinate</key> - <value>(7, 89)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> + <key>random_source_x</key> <param> <key>id</key> - <value>noise</value> + <value>random_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Noise</value> - </param> - <param> - <key>value</key> - <value>.1</value> + <key>type</key> + <value>byte</value> </param> <param> <key>min</key> @@ -130,31 +103,19 @@ </param> <param> <key>max</key> - <value>1</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> + <value>2**8</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>num_samps</key> + <value>10000</value> </param> <param> - <key>notebook</key> - <value></value> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(259, 353)</value> + <value>(161, 119)</value> </param> <param> <key>_rotation</key> @@ -162,54 +123,42 @@ </param> </block> <block> - <key>variable_slider</key> + <key>digital_dxpsk_mod</key> <param> <key>id</key> - <value>freq_off</value> + <value>digital_dxpsk_mod_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Freq Offset</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> - <param> - <key>min</key> - <value>-.5</value> - </param> - <param> - <key>max</key> - <value>.5</value> + <key>type</key> + <value>dqpsk</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>samples_per_symbol</key> + <value>samps_per_sym</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>excess_bw</key> + <value>0.35</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>mod_code</key> + <value>"gray"</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>verbose</key> + <value>False</value> </param> <param> - <key>notebook</key> - <value></value> + <key>log</key> + <value>False</value> </param> <param> <key>_coordinate</key> - <value>(126, 345)</value> + <value>(361, 119)</value> </param> <param> <key>_rotation</key> @@ -217,34 +166,22 @@ </param> </block> <block> - <key>notebook</key> + <key>variable</key> <param> <key>id</key> - <value>notebook</value> + <value>samps_per_sym</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>style</key> - <value>wx.NB_TOP</value> - </param> - <param> - <key>labels</key> - <value>['Constellation', 'Spectrum']</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> + <key>value</key> + <value>4</value> </param> <param> <key>_coordinate</key> - <value>(520, 407)</value> + <value>(12, 99)</value> </param> <param> <key>_rotation</key> @@ -252,78 +189,54 @@ </param> </block> <block> - <key>wxgui_constellationsink2</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>wxgui_constellationsink2_0</value> + <value>freq_off</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>title</key> - <value>Constellation Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>frame_rate</key> - <value>5</value> - </param> - <param> - <key>const_size</key> - <value>2048</value> - </param> - <param> - <key>M</key> - <value>4</value> + <key>label</key> + <value>Freq. Offset</value> </param> <param> - <key>theta</key> + <key>value</key> <value>0</value> </param> <param> - <key>loop_bw</key> - <value>6.28/100.0</value> - </param> - <param> - <key>fmax</key> - <value>0.06</value> + <key>start</key> + <value>-0.5</value> </param> <param> - <key>mu</key> + <key>stop</key> <value>0.5</value> </param> <param> - <key>gain_mu</key> - <value>0.005</value> + <key>step</key> + <value>0.01</value> </param> <param> - <key>symbol_rate</key> - <value>samp_rate/4.</value> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>omega_limit</key> - <value>0.005</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>win_size</key> - <value></value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>grid_pos</key> + <key>gui_hint</key> <value></value> </param> <param> - <key>notebook</key> - <value>notebook, 0</value> - </param> - <param> <key>_coordinate</key> - <value>(824, 212)</value> + <value>(17, 260)</value> </param> <param> <key>_rotation</key> @@ -331,90 +244,101 @@ </param> </block> <block> - <key>wxgui_fftsink2</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>wxgui_fftsink2_0</value> + <value>noise</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>label</key> + <value>Noise</value> </param> <param> - <key>title</key> - <value>FFT Plot</value> + <key>value</key> + <value>0.1</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>start</key> + <value>0</value> </param> <param> - <key>baseband_freq</key> - <value>0</value> + <key>stop</key> + <value>1</value> </param> <param> - <key>y_per_div</key> - <value>10</value> + <key>step</key> + <value>0.01</value> </param> <param> - <key>y_divs</key> - <value>10</value> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>ref_level</key> - <value>50</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>ref_scale</key> - <value>2.0</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>fft_size</key> - <value>1024</value> + <key>gui_hint</key> + <value></value> </param> <param> - <key>fft_rate</key> - <value>30</value> + <key>_coordinate</key> + <value>(146, 262)</value> </param> <param> - <key>peak_hold</key> - <value>False</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>qtgui_tab_widget</key> <param> - <key>average</key> - <value>False</value> + <key>id</key> + <value>notebook</value> </param> <param> - <key>avg_alpha</key> - <value>0</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>win</key> - <value>None</value> + <key>num_tabs</key> + <value>2</value> </param> <param> - <key>win_size</key> - <value></value> + <key>label0</key> + <value>Constellation</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>label1</key> + <value>Spectrum</value> + </param> + <param> + <key>label2</key> + <value>Tab 2</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> </param> <param> - <key>notebook</key> - <value>notebook, 1</value> + <key>label4</key> + <value>Tab 4</value> </param> <param> - <key>freqvar</key> - <value>None</value> + <key>gui_hint</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(847, 10)</value> + <value>(21, 394)</value> </param> <param> <key>_rotation</key> @@ -422,10 +346,10 @@ </param> </block> <block> - <key>gr_channel_model</key> + <key>channel_model</key> <param> <key>id</key> - <value>gr_channel_model_0</value> + <value>channel_model_0</value> </param> <param> <key>_enabled</key> @@ -449,11 +373,11 @@ </param> <param> <key>seed</key> - <value>42</value> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(487, 282)</value> + <value>(369, 264)</value> </param> <param> <key>_rotation</key> @@ -484,7 +408,7 @@ </param> <param> <key>_coordinate</key> - <value>(633, 82)</value> + <value>(597, 142)</value> </param> <param> <key>_rotation</key> @@ -492,10 +416,10 @@ </param> </block> <block> - <key>random_source_x</key> + <key>qtgui_const_sink_x</key> <param> <key>id</key> - <value>random_source_x_0</value> + <value>qtgui_const_sink_x_0</value> </param> <param> <key>_enabled</key> @@ -503,27 +427,27 @@ </param> <param> <key>type</key> - <value>byte</value> + <value>complex</value> </param> <param> - <key>min</key> - <value>0</value> + <key>name</key> + <value>QT GUI Plot</value> </param> <param> - <key>max</key> - <value>2**8</value> + <key>size</key> + <value>1024</value> </param> <param> - <key>num_samps</key> - <value>10000</value> + <key>nconnections</key> + <value>1</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>gui_hint</key> + <value>notebook@0</value> </param> <param> <key>_coordinate</key> - <value>(161, 119)</value> + <value>(810, 184)</value> </param> <param> <key>_rotation</key> @@ -531,10 +455,10 @@ </param> </block> <block> - <key>digital_dxpsk_mod</key> + <key>qtgui_freq_sink_x</key> <param> <key>id</key> - <value>digital_dxpsk_mod_0</value> + <value>qtgui_freq_sink_x_0</value> </param> <param> <key>_enabled</key> @@ -542,31 +466,43 @@ </param> <param> <key>type</key> - <value>dqpsk</value> + <value>complex</value> </param> <param> - <key>samples_per_symbol</key> - <value>samps_per_sym</value> + <key>name</key> + <value>QT GUI Plot</value> </param> <param> - <key>excess_bw</key> - <value>0.35</value> + <key>fftsize</key> + <value>1024</value> </param> <param> - <key>gray_coded</key> - <value>True</value> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> </param> <param> - <key>verbose</key> - <value>False</value> + <key>fc</key> + <value>0</value> </param> <param> - <key>log</key> - <value>False</value> + <key>bw</key> + <value>samp_rate</value> + </param> + <param> + <key>rate</key> + <value>10</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>gui_hint</key> + <value>notebook@1</value> </param> <param> <key>_coordinate</key> - <value>(361, 119)</value> + <value>(810, 65)</value> </param> <param> <key>_rotation</key> @@ -574,32 +510,32 @@ </param> </block> <connection> - <source_block_id>gr_throttle_0</source_block_id> - <sink_block_id>wxgui_constellationsink2_0</sink_block_id> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>digital_dxpsk_mod_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_throttle_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_block_id>digital_dxpsk_mod_0</source_block_id> + <sink_block_id>channel_model_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_channel_model_0</source_block_id> + <source_block_id>channel_model_0</source_block_id> <sink_block_id>gr_throttle_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_dxpsk_mod_0</source_block_id> - <sink_block_id>gr_channel_model_0</sink_block_id> + <source_block_id>gr_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>random_source_x_0</source_block_id> - <sink_block_id>digital_dxpsk_mod_0</sink_block_id> + <source_block_id>gr_throttle_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> diff --git a/gr-digital/examples/demod/pam_sync.grc b/gr-digital/examples/demod/pam_sync.grc index dbd4befa6f..d9afb3100c 100644 --- a/gr-digital/examples/demod/pam_sync.grc +++ b/gr-digital/examples/demod/pam_sync.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Thu Jul 5 17:54:54 2012</timestamp> + <timestamp>Thu Dec 27 13:26:17 2012</timestamp> <block> <key>options</key> <param> @@ -176,22 +176,22 @@ </param> </block> <block> - <key>virtual_sink</key> + <key>variable</key> <param> <key>id</key> - <value>virtual_sink_0</value> + <value>nfilts</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>stream_id</key> - <value>input_signal_probe</value> + <key>value</key> + <value>32</value> </param> <param> <key>_coordinate</key> - <value>(330, 183)</value> + <value>(598, 186)</value> </param> <param> <key>_rotation</key> @@ -199,54 +199,45 @@ </param> </block> <block> - <key>gr_pfb_clock_sync_xxx</key> + <key>variable</key> <param> <key>id</key> - <value>gr_pfb_clock_sync_xxx_0</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>ccf</value> - </param> - <param> - <key>sps</key> - <value>spb</value> - </param> - <param> - <key>alpha</key> - <value>time_alpha</value> - </param> - <param> - <key>beta</key> - <value>time_beta</value> + <key>value</key> + <value>128000</value> </param> <param> - <key>taps</key> - <value>rrctaps</value> + <key>_coordinate</key> + <value>(193, -1)</value> </param> <param> - <key>filter_size</key> - <value>nfilts</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>virtual_source</key> <param> - <key>init_phase</key> - <value>16</value> + <key>id</key> + <value>virtual_source_0</value> </param> <param> - <key>max_dev</key> - <value>1.5</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>osps</key> - <value>1</value> + <key>stream_id</key> + <value>input_signal_probe</value> </param> <param> <key>_coordinate</key> - <value>(598, 241)</value> + <value>(835, 562)</value> </param> <param> <key>_rotation</key> @@ -254,10 +245,10 @@ </param> </block> <block> - <key>digital_fll_band_edge_cc</key> + <key>random_source_x</key> <param> <key>id</key> - <value>digital_fll_band_edge_cc_0</value> + <value>random_source_x</value> </param> <param> <key>_enabled</key> @@ -265,27 +256,27 @@ </param> <param> <key>type</key> - <value>cc</value> + <value>byte</value> </param> <param> - <key>samps_per_sym</key> - <value>spb</value> + <key>min</key> + <value>0</value> </param> <param> - <key>rolloff</key> - <value>rolloff</value> + <key>max</key> + <value>const.arity()</value> </param> <param> - <key>filter_size</key> - <value>44</value> + <key>num_samps</key> + <value>10000000</value> </param> <param> - <key>w</key> - <value>freq_bw</value> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(331, 239)</value> + <value>(0, 72)</value> </param> <param> <key>_rotation</key> @@ -293,22 +284,26 @@ </param> </block> <block> - <key>variable</key> + <key>digital_costas_loop_cc</key> <param> <key>id</key> - <value>nfilts</value> + <value>digital_costas_loop_cc_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>32</value> + <key>w</key> + <value>phase_bw</value> + </param> + <param> + <key>order</key> + <value>4</value> </param> <param> <key>_coordinate</key> - <value>(598, 186)</value> + <value>(866, 246)</value> </param> <param> <key>_rotation</key> @@ -316,61 +311,74 @@ </param> </block> <block> - <key>variable</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>samp_rate</value> + <value>wxgui_scopesink2_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>128000</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>_coordinate</key> - <value>(193, -1)</value> + <key>title</key> + <value>Post-sync Signal</value> </param> <param> - <key>_rotation</key> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> <value>0</value> </param> - </block> - <block> - <key>random_source_x</key> <param> - <key>id</key> - <value>random_source_x</value> + <key>v_offset</key> + <value>0</value> </param> <param> - <key>_enabled</key> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>num_inputs</key> + <value>1</value> </param> <param> - <key>min</key> - <value>0</value> + <key>win_size</key> + <value></value> </param> <param> - <key>max</key> - <value>const.arity()</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>num_samps</key> - <value>10000000</value> + <key>notebook</key> + <value>notebook_0,0</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>trig_mode</key> + <value>gr.gr_TRIG_MODE_AUTO</value> + </param> + <param> + <key>y_axis_label</key> + <value>Counts</value> </param> <param> <key>_coordinate</key> - <value>(0, 72)</value> + <value>(1094, 202)</value> </param> <param> <key>_rotation</key> @@ -378,38 +386,54 @@ </param> </block> <block> - <key>gr_chunks_to_symbols_xx</key> + <key>variable_slider</key> <param> <key>id</key> - <value>gr_chunks_to_symbols_xx</value> + <value>noise_amp</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>in_type</key> - <value>byte</value> + <key>label</key> + <value>Channels_Channel Noise</value> </param> <param> - <key>out_type</key> - <value>complex</value> + <key>value</key> + <value>0</value> </param> <param> - <key>symbol_table</key> - <value>const.points()</value> + <key>min</key> + <value>0</value> </param> <param> - <key>dimension</key> - <value>1</value> + <key>max</key> + <value>1.0</value> </param> <param> - <key>num_ports</key> - <value>1</value> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>(1,2,1,1)</value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(196, 87)</value> + <value>(152, 373)</value> </param> <param> <key>_rotation</key> @@ -417,69 +441,89 @@ </param> </block> <block> - <key>blks2_pfb_arb_resampler_ccf</key> + <key>variable_slider</key> <param> <key>id</key> - <value>blks2_pfb_arb_resampler_ccf_0</value> + <value>interpratio</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>rate</key> - <value>spb</value> + <key>label</key> + <value>Timing Offset</value> </param> <param> - <key>taps</key> - <value>firdes.root_raised_cosine(32, 32, 1.0, 0.35, 44*32)</value> + <key>value</key> + <value>1.00</value> </param> <param> - <key>size</key> - <value>32</value> + <key>min</key> + <value>0.99</value> + </param> + <param> + <key>max</key> + <value>1.01</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>(3,2,1,1)</value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(435, 80)</value> + <value>(11, 517)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> - <key>gr_channel_model</key> + <key>notebook</key> <param> <key>id</key> - <value>gr_channel_model_0</value> + <value>notebook_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>noise_voltage</key> - <value>noise_amp</value> - </param> - <param> - <key>freq_offset</key> - <value>freq_offset</value> + <key>style</key> + <value>wx.NB_TOP</value> </param> <param> - <key>epsilon</key> - <value>interpratio</value> + <key>labels</key> + <value>['Synched Signal', 'Received Signal']</value> </param> <param> - <key>taps</key> - <value>1.0</value> + <key>grid_pos</key> + <value>(1,1,8,1)</value> </param> <param> - <key>seed</key> - <value>42</value> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(46, 183)</value> + <value>(9, 664)</value> </param> <param> <key>_rotation</key> @@ -487,61 +531,54 @@ </param> </block> <block> - <key>gr_multiply_const_vxx</key> + <key>variable_slider</key> <param> <key>id</key> - <value>gr_multiply_const_vxx_0</value> + <value>freq_offset</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>const</key> - <value>sig_amp</value> + <key>label</key> + <value>Frequency Offset</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>value</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(659, 95)</value> + <key>min</key> + <value>-0.5</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>max</key> + <value>0.5</value> </param> - </block> - <block> - <key>gr_throttle</key> <param> - <key>id</key> - <value>gr_throttle_0</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>converver</key> + <value>float_converter</value> </param> <param> - <key>samples_per_second</key> - <value>samp_rate</value> + <key>grid_pos</key> + <value>(2,2,1,1)</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(857, 95)</value> + <value>(13, 372)</value> </param> <param> <key>_rotation</key> @@ -549,10 +586,10 @@ </param> </block> <block> - <key>virtual_source</key> + <key>virtual_sink</key> <param> <key>id</key> - <value>virtual_source_0</value> + <value>virtual_sink_0</value> </param> <param> <key>_enabled</key> @@ -564,7 +601,7 @@ </param> <param> <key>_coordinate</key> - <value>(835, 562)</value> + <value>(330, 183)</value> </param> <param> <key>_rotation</key> @@ -572,26 +609,38 @@ </param> </block> <block> - <key>digital_costas_loop_cc</key> + <key>digital_fll_band_edge_cc</key> <param> <key>id</key> - <value>digital_costas_loop_cc_0</value> + <value>digital_fll_band_edge_cc_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>w</key> - <value>phase_bw</value> + <key>type</key> + <value>cc</value> </param> <param> - <key>order</key> - <value>4</value> + <key>samps_per_sym</key> + <value>spb</value> + </param> + <param> + <key>rolloff</key> + <value>rolloff</value> + </param> + <param> + <key>filter_size</key> + <value>44</value> + </param> + <param> + <key>w</key> + <value>freq_bw</value> </param> <param> <key>_coordinate</key> - <value>(866, 246)</value> + <value>(331, 239)</value> </param> <param> <key>_rotation</key> @@ -599,74 +648,93 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>channels_channel_model</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_1</value> + <value>channels_channel_model_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>noise_voltage</key> + <value>noise_amp</value> </param> <param> - <key>title</key> - <value>Pre-sync Signal</value> + <key>freq_offset</key> + <value>freq_offset</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>epsilon</key> + <value>interpratio</value> </param> <param> - <key>v_scale</key> - <value>.5</value> + <key>taps</key> + <value>1.0</value> </param> <param> - <key>v_offset</key> + <key>seed</key> <value>0</value> </param> <param> - <key>t_scale</key> + <key>_coordinate</key> + <value>(77, 183)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>variable_slider</key> <param> - <key>ac_couple</key> - <value>False</value> + <key>id</key> + <value>phase_bw</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>label</key> + <value>Costas Loop (Phase) Bandwidth</value> </param> <param> - <key>win_size</key> - <value></value> + <key>value</key> + <value>0</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>min</key> + <value>0</value> </param> <param> - <key>notebook</key> - <value>notebook_0,1</value> + <key>max</key> + <value>0.1</value> </param> <param> - <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>y_axis_label</key> - <value>Counts</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>(7,2,1,1)</value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(1081, 439)</value> + <value>(866, 318)</value> </param> <param> <key>_rotation</key> @@ -674,10 +742,10 @@ </param> </block> <block> - <key>wxgui_fftsink2</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>wxgui_fftsink2_0</value> + <value>wxgui_scopesink2_0_0_1</value> </param> <param> <key>_enabled</key> @@ -689,55 +757,35 @@ </param> <param> <key>title</key> - <value>Received spectrum</value> + <value>Pre-sync Signal</value> </param> <param> <key>samp_rate</key> <value>samp_rate</value> </param> <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>y_divs</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>10</value> - </param> - <param> - <key>ref_scale</key> - <value>2.0</value> + <key>v_scale</key> + <value>.5</value> </param> <param> - <key>fft_size</key> - <value>1024</value> + <key>v_offset</key> + <value>0</value> </param> <param> - <key>fft_rate</key> - <value>30</value> + <key>t_scale</key> + <value>0</value> </param> <param> - <key>peak_hold</key> + <key>ac_couple</key> <value>False</value> </param> <param> - <key>average</key> + <key>xy_mode</key> <value>False</value> </param> <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>win</key> - <value>None</value> + <key>num_inputs</key> + <value>1</value> </param> <param> <key>win_size</key> @@ -752,12 +800,16 @@ <value>notebook_0,1</value> </param> <param> - <key>freqvar</key> - <value>None</value> + <key>trig_mode</key> + <value>gr.gr_TRIG_MODE_AUTO</value> + </param> + <param> + <key>y_axis_label</key> + <value>Counts</value> </param> <param> <key>_coordinate</key> - <value>(1081, 563)</value> + <value>(1086, 441)</value> </param> <param> <key>_rotation</key> @@ -768,7 +820,7 @@ <key>wxgui_fftsink2</key> <param> <key>id</key> - <value>wxgui_fftsink2_0_0</value> + <value>wxgui_fftsink2_0</value> </param> <param> <key>_enabled</key> @@ -780,7 +832,7 @@ </param> <param> <key>title</key> - <value>Post-sync spectrum</value> + <value>Received spectrum</value> </param> <param> <key>samp_rate</key> @@ -840,7 +892,7 @@ </param> <param> <key>notebook</key> - <value>notebook_0,0</value> + <value>notebook_0,1</value> </param> <param> <key>freqvar</key> @@ -848,82 +900,7 @@ </param> <param> <key>_coordinate</key> - <value>(347, 516)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>wxgui_scopesink2</key> - <param> - <key>id</key> - <value>wxgui_scopesink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>Post-sync Signal</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> - </param> - <param> - <key>v_offset</key> - <value>0</value> - </param> - <param> - <key>t_scale</key> - <value>0</value> - </param> - <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>True</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>win_size</key> - <value></value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value>notebook_0,0</value> - </param> - <param> - <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> - </param> - <param> - <key>y_axis_label</key> - <value>Counts</value> - </param> - <param> - <key>_coordinate</key> - <value>(1085, 213)</value> + <value>(1086, 565)</value> </param> <param> <key>_rotation</key> @@ -978,7 +955,7 @@ </param> <param> <key>_coordinate</key> - <value>(341, 373)</value> + <value>(154, 517)</value> </param> <param> <key>_rotation</key> @@ -986,109 +963,90 @@ </param> </block> <block> - <key>variable_slider</key> + <key>wxgui_fftsink2</key> <param> <key>id</key> - <value>time_alpha</value> + <value>wxgui_fftsink2_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Timing Alpha</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> - <param> - <key>min</key> - <value>0</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>max</key> - <value>1</value> + <key>title</key> + <value>Post-sync spectrum</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>baseband_freq</key> + <value>0</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>y_per_div</key> + <value>10</value> </param> <param> - <key>grid_pos</key> - <value>(5,2,1,1)</value> + <key>y_divs</key> + <value>10</value> </param> <param> - <key>notebook</key> - <value></value> + <key>ref_level</key> + <value>10</value> </param> <param> - <key>_coordinate</key> - <value>(598, 388)</value> + <key>ref_scale</key> + <value>2.0</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>fft_size</key> + <value>1024</value> </param> - </block> - <block> - <key>variable_slider</key> <param> - <key>id</key> - <value>time_beta</value> + <key>fft_rate</key> + <value>30</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>peak_hold</key> + <value>False</value> </param> <param> - <key>label</key> - <value>Timing Beta</value> + <key>average</key> + <value>False</value> </param> <param> - <key>value</key> + <key>avg_alpha</key> <value>0</value> </param> <param> - <key>min</key> - <value>0.0</value> - </param> - <param> - <key>max</key> - <value>0.1</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>win</key> + <value>None</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>win_size</key> + <value></value> </param> <param> <key>grid_pos</key> - <value>(6,2,1,1)</value> + <value></value> </param> <param> <key>notebook</key> - <value></value> + <value>notebook_0,0</value> + </param> + <param> + <key>freqvar</key> + <value>None</value> </param> <param> <key>_coordinate</key> - <value>(708, 388)</value> + <value>(349, 422)</value> </param> <param> <key>_rotation</key> @@ -1096,54 +1054,61 @@ </param> </block> <block> - <key>variable_slider</key> + <key>blocks_multiply_const_vxx</key> <param> <key>id</key> - <value>phase_bw</value> + <value>blocks_multiply_const_vxx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Costas Loop (Phase) Bandwidth</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>value</key> - <value>0</value> + <key>const</key> + <value>sig_amp</value> </param> <param> - <key>min</key> - <value>0</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>max</key> - <value>0.1</value> + <key>_coordinate</key> + <value>(763, 96)</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>gr_throttle</key> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>id</key> + <value>gr_throttle_0</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>grid_pos</key> - <value>(7,2,1,1)</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>notebook</key> - <value></value> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(866, 313)</value> + <value>(961, 96)</value> </param> <param> <key>_rotation</key> @@ -1151,34 +1116,38 @@ </param> </block> <block> - <key>notebook</key> + <key>pfb_arb_resampler_xxx</key> <param> <key>id</key> - <value>notebook_0</value> + <value>pfb_arb_resampler_xxx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>style</key> - <value>wx.NB_TOP</value> + <key>type</key> + <value>ccf</value> </param> <param> - <key>labels</key> - <value>['Synched Signal', 'Received Signal']</value> + <key>rrate</key> + <value>spb</value> </param> <param> - <key>grid_pos</key> - <value>(1,1,8,1)</value> + <key>taps</key> + <value>firdes.root_raised_cosine(32, 32, 1.0, 0.35, 44*32)</value> </param> <param> - <key>notebook</key> - <value></value> + <key>nfilts</key> + <value>32</value> + </param> + <param> + <key>atten</key> + <value>100</value> </param> <param> <key>_coordinate</key> - <value>(9, 601)</value> + <value>(468, 72)</value> </param> <param> <key>_rotation</key> @@ -1186,109 +1155,89 @@ </param> </block> <block> - <key>variable_slider</key> + <key>digital_chunks_to_symbols_xx</key> <param> <key>id</key> - <value>interpratio</value> + <value>digital_chunks_to_symbols_xx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Timing Offset</value> - </param> - <param> - <key>value</key> - <value>1.00</value> - </param> - <param> - <key>min</key> - <value>0.99</value> - </param> - <param> - <key>max</key> - <value>1.01</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> + <key>in_type</key> + <value>byte</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>out_type</key> + <value>complex</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>symbol_table</key> + <value>const.points()</value> </param> <param> - <key>grid_pos</key> - <value>(3,2,1,1)</value> + <key>dimension</key> + <value>1</value> </param> <param> - <key>notebook</key> - <value></value> + <key>num_ports</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(60, 407)</value> + <value>(217, 88)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>variable_slider</key> + <key>digital_pfb_clock_sync_xxx</key> <param> <key>id</key> - <value>noise_amp</value> + <value>digital_pfb_clock_sync_xxx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Channel Noise</value> - </param> - <param> - <key>value</key> - <value>0</value> + <key>type</key> + <value>ccf</value> </param> <param> - <key>min</key> - <value>0</value> + <key>sps</key> + <value>spb</value> </param> <param> - <key>max</key> - <value>1.0</value> + <key>loop_bw</key> + <value>timing_loop_bw</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>taps</key> + <value>rrctaps</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>filter_size</key> + <value>nfilts</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>init_phase</key> + <value>nfilts/2</value> </param> <param> - <key>grid_pos</key> - <value>(1,2,1,1)</value> + <key>max_dev</key> + <value>1.5</value> </param> <param> - <key>notebook</key> - <value></value> + <key>osps</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(125, 284)</value> + <value>(601, 254)</value> </param> <param> <key>_rotation</key> @@ -1299,7 +1248,7 @@ <key>variable_slider</key> <param> <key>id</key> - <value>freq_offset</value> + <value>timing_loop_bw</value> </param> <param> <key>_enabled</key> @@ -1307,19 +1256,19 @@ </param> <param> <key>label</key> - <value>Frequency Offset</value> + <value>Timing Loop Bandwidth</value> </param> <param> <key>value</key> - <value>0</value> + <value>6.28/100.0</value> </param> <param> <key>min</key> - <value>-0.5</value> + <value>0</value> </param> <param> <key>max</key> - <value>0.5</value> + <value>0.2</value> </param> <param> <key>num_steps</key> @@ -1335,7 +1284,7 @@ </param> <param> <key>grid_pos</key> - <value>(2,2,1,1)</value> + <value>(5,2,1,1)</value> </param> <param> <key>notebook</key> @@ -1343,7 +1292,7 @@ </param> <param> <key>_coordinate</key> - <value>(6, 284)</value> + <value>(557, 431)</value> </param> <param> <key>_rotation</key> @@ -1351,80 +1300,80 @@ </param> </block> <connection> - <source_block_id>gr_channel_model_0</source_block_id> - <sink_block_id>virtual_sink_0</sink_block_id> + <source_block_id>digital_costas_loop_cc_0</source_block_id> + <sink_block_id>wxgui_scopesink2_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>gr_pfb_clock_sync_xxx_0</sink_block_id> + <sink_block_id>wxgui_fftsink2_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_pfb_clock_sync_xxx_0</source_block_id> - <sink_block_id>digital_costas_loop_cc_0</sink_block_id> + <source_block_id>virtual_source_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_costas_loop_cc_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_block_id>virtual_source_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_1</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blks2_pfb_arb_resampler_ccf_0</source_block_id> - <sink_block_id>gr_multiply_const_vxx_0</sink_block_id> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_chunks_to_symbols_xx</source_block_id> - <sink_block_id>blks2_pfb_arb_resampler_ccf_0</sink_block_id> + <source_block_id>random_source_x</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>gr_channel_model_0</source_block_id> - <sink_block_id>digital_fll_band_edge_cc_0</sink_block_id> + <source_block_id>digital_fll_band_edge_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_fll_band_edge_cc_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0_0</sink_block_id> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> + <sink_block_id>digital_costas_loop_cc_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>wxgui_fftsink2_0</sink_block_id> + <source_block_id>channels_channel_model_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>virtual_source_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0_0_1</sink_block_id> + <source_block_id>channels_channel_model_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> <connection> - <source_block_id>random_source_x</source_block_id> - <sink_block_id>gr_chunks_to_symbols_xx</sink_block_id> + <source_block_id>gr_throttle_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>gr_throttle_0</source_block_id> - <sink_block_id>gr_channel_model_0</sink_block_id> + <source_block_id>digital_chunks_to_symbols_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>gr_multiply_const_vxx_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> + <source_block_id>pfb_arb_resampler_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> diff --git a/gr-digital/examples/demod/pam_timing.grc b/gr-digital/examples/demod/pam_timing.grc index c253d9a9fc..b5e8d8822e 100644 --- a/gr-digital/examples/demod/pam_timing.grc +++ b/gr-digital/examples/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Thu Jul 5 17:55:51 2012</timestamp> + <timestamp>Thu Dec 27 13:05:12 2012</timestamp> <block> <key>options</key> <param> @@ -61,10 +61,10 @@ </param> </block> <block> - <key>gr_uchar_to_float</key> + <key>blocks_uchar_to_float</key> <param> <key>id</key> - <value>gr_uchar_to_float_0</value> + <value>blocks_uchar_to_float_0</value> </param> <param> <key>_enabled</key> @@ -80,10 +80,10 @@ </param> </block> <block> - <key>gr_uchar_to_float</key> + <key>blocks_uchar_to_float</key> <param> <key>id</key> - <value>gr_uchar_to_float_0_0</value> + <value>blocks_uchar_to_float_0_0</value> </param> <param> <key>_enabled</key> @@ -99,29 +99,6 @@ </param> </block> <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>32000</value> - </param> - <param> - <key>_coordinate</key> - <value>(128, 9)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>variable_slider</key> <param> <key>id</key> @@ -255,10 +232,10 @@ </param> </block> <block> - <key>const_source_x</key> + <key>analog_const_source_x</key> <param> <key>id</key> - <value>const_source_x_0</value> + <value>analog_const_source_x_0</value> </param> <param> <key>_enabled</key> @@ -282,10 +259,10 @@ </param> </block> <block> - <key>const_source_x</key> + <key>analog_const_source_x</key> <param> <key>id</key> - <value>const_source_x_0_0</value> + <value>analog_const_source_x_0_0</value> </param> <param> <key>_enabled</key> @@ -344,10 +321,10 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>blocks_add_xx</key> <param> <key>id</key> - <value>gr_add_xx_0</value> + <value>blocks_add_xx_0</value> </param> <param> <key>_enabled</key> @@ -375,10 +352,10 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>blocks_add_xx</key> <param> <key>id</key> - <value>gr_add_xx_0_1</value> + <value>blocks_add_xx_0_1</value> </param> <param> <key>_enabled</key> @@ -539,97 +516,100 @@ </param> </block> <block> - <key>variable_slider</key> + <key>variable</key> <param> <key>id</key> - <value>beta</value> + <value>rrctaps</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Timing Beta</value> - </param> - <param> <key>value</key> - <value>0</value> - </param> - <param> - <key>min</key> - <value>0.0</value> - </param> - <param> - <key>max</key> - <value>0.1</value> + <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, int(11*spb*nfilts))</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>_coordinate</key> + <value>(513, 679)</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>converver</key> - <value>float_converter</value> + <key>id</key> + <value>spb</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>notebook</key> - <value></value> + <key>value</key> + <value>4.2563</value> </param> <param> <key>_coordinate</key> - <value>(668, 5)</value> + <value>(42, 840)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>variable_slider</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>alpha</value> + <value>wxgui_scopesink2_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Timing Alpha</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>value</key> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> <value>0</value> </param> <param> - <key>min</key> + <key>v_offset</key> <value>0</value> </param> <param> - <key>max</key> - <value>1</value> + <key>t_scale</key> + <value>0</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>win_size</key> + <value></value> </param> <param> <key>grid_pos</key> @@ -640,8 +620,16 @@ <value></value> </param> <param> + <key>trig_mode</key> + <value>gr.gr_TRIG_MODE_AUTO</value> + </param> + <param> + <key>y_axis_label</key> + <value>Counts</value> + </param> + <param> <key>_coordinate</key> - <value>(552, 4)</value> + <value>(1116, 500)</value> </param> <param> <key>_rotation</key> @@ -649,22 +637,30 @@ </param> </block> <block> - <key>variable</key> + <key>gr_throttle</key> <param> <key>id</key> - <value>pam_amp</value> + <value>gr_throttle_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>2</value> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(223, 9)</value> + <value>(290, 575)</value> </param> <param> <key>_rotation</key> @@ -672,22 +668,38 @@ </param> </block> <block> - <key>variable</key> + <key>channels_channel_model</key> <param> <key>id</key> - <value>sig_amp</value> + <value>channels_channel_model_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>1</value> + <key>noise_voltage</key> + <value>noise_amp</value> + </param> + <param> + <key>freq_offset</key> + <value>freq_offset</value> + </param> + <param> + <key>epsilon</key> + <value>interpratio</value> + </param> + <param> + <key>taps</key> + <value>1.0</value> + </param> + <param> + <key>seed</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(315, 9)</value> + <value>(76, 543)</value> </param> <param> <key>_rotation</key> @@ -695,74 +707,61 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>blocks_float_to_complex</key> <param> <key>id</key> - <value>wxgui_scopesink2_0</value> + <value>blocks_float_to_complex_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>v_offset</key> - <value>0</value> + <key>_coordinate</key> + <value>(590, 184)</value> </param> <param> - <key>t_scale</key> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>pfb_arb_resampler_xxx</key> <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>False</value> + <key>id</key> + <value>pfb_arb_resampler_xxx_0</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>win_size</key> - <value></value> + <key>type</key> + <value>ccf</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>rrate</key> + <value>spb</value> </param> <param> - <key>notebook</key> - <value></value> + <key>taps</key> + <value>firdes.root_raised_cosine(32, 32, 1.0, 0.35, 44*32)</value> </param> <param> - <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <key>nfilts</key> + <value>32</value> </param> <param> - <key>y_axis_label</key> - <value>Counts</value> + <key>atten</key> + <value>100</value> </param> <param> <key>_coordinate</key> - <value>(1116, 500)</value> + <value>(788, 173)</value> </param> <param> <key>_rotation</key> @@ -770,10 +769,10 @@ </param> </block> <block> - <key>gr_throttle</key> + <key>blocks_multiply_const_vxx</key> <param> <key>id</key> - <value>gr_throttle_0</value> + <value>blocks_multiply_const_vxx_0</value> </param> <param> <key>_enabled</key> @@ -784,8 +783,8 @@ <value>complex</value> </param> <param> - <key>samples_per_second</key> - <value>samp_rate</value> + <key>const</key> + <value>sig_amp</value> </param> <param> <key>vlen</key> @@ -793,7 +792,7 @@ </param> <param> <key>_coordinate</key> - <value>(290, 575)</value> + <value>(714, 382)</value> </param> <param> <key>_rotation</key> @@ -804,7 +803,7 @@ <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0</value> + <value>wxgui_scopesink2_0_0_1</value> </param> <param> <key>_enabled</key> @@ -812,11 +811,11 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> <key>title</key> - <value>Scope Plot</value> + <value>Transmitted Signal</value> </param> <param> <key>samp_rate</key> @@ -824,7 +823,7 @@ </param> <param> <key>v_scale</key> - <value>9</value> + <value>.5</value> </param> <param> <key>v_offset</key> @@ -856,7 +855,7 @@ </param> <param> <key>notebook</key> - <value>notebook_0,1</value> + <value>notebook_0,3</value> </param> <param> <key>trig_mode</key> @@ -868,30 +867,7 @@ </param> <param> <key>_coordinate</key> - <value>(1112, 881)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>rrctaps</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, int(11*spb*nfilts))</value> - </param> - <param> - <key>_coordinate</key> - <value>(513, 679)</value> + <value>(1114, 342)</value> </param> <param> <key>_rotation</key> @@ -902,7 +878,7 @@ <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_1</value> + <value>wxgui_scopesink2_0_0_0_0</value> </param> <param> <key>_enabled</key> @@ -910,11 +886,11 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>float</value> </param> <param> <key>title</key> - <value>Error</value> + <value>PFB Rate</value> </param> <param> <key>samp_rate</key> @@ -922,7 +898,7 @@ </param> <param> <key>v_scale</key> - <value>.5</value> + <value>1.25</value> </param> <param> <key>v_offset</key> @@ -954,7 +930,7 @@ </param> <param> <key>notebook</key> - <value>notebook_0,3</value> + <value>notebook_0,2</value> </param> <param> <key>trig_mode</key> @@ -966,7 +942,7 @@ </param> <param> <key>_coordinate</key> - <value>(1115, 358)</value> + <value>(1080, 751)</value> </param> <param> <key>_rotation</key> @@ -974,53 +950,74 @@ </param> </block> <block> - <key>gr_float_to_complex</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>gr_float_to_complex_0</value> + <value>wxgui_scopesink2_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>type</key> + <value>float</value> </param> <param> - <key>_coordinate</key> - <value>(590, 184)</value> + <key>title</key> + <value>PFB Error</value> </param> <param> - <key>_rotation</key> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>3</value> + </param> + <param> + <key>v_offset</key> <value>0</value> </param> - </block> - <block> - <key>blks2_pfb_arb_resampler_ccf</key> <param> - <key>id</key> - <value>blks2_pfb_arb_resampler_ccf_0</value> + <key>t_scale</key> + <value>0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>rate</key> - <value>spb</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>taps</key> - <value>firdes.root_raised_cosine(32, 32, 1.0, 0.35, 44*32)</value> + <key>num_inputs</key> + <value>1</value> </param> <param> - <key>size</key> - <value>32</value> + <key>win_size</key> + <value></value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook_0,0</value> + </param> + <param> + <key>trig_mode</key> + <value>gr.gr_TRIG_MODE_AUTO</value> + </param> + <param> + <key>y_axis_label</key> + <value>Counts</value> </param> <param> <key>_coordinate</key> - <value>(816, 181)</value> + <value>(1114, 615)</value> </param> <param> <key>_rotation</key> @@ -1028,69 +1025,74 @@ </param> </block> <block> - <key>gr_channel_model</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>gr_channel_model_0</value> + <value>wxgui_scopesink2_0_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>noise_voltage</key> - <value>noise_amp</value> + <key>type</key> + <value>float</value> </param> <param> - <key>freq_offset</key> - <value>freq_offset</value> + <key>title</key> + <value>PFB Phase</value> </param> <param> - <key>epsilon</key> - <value>interpratio</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>taps</key> - <value>1.0</value> + <key>v_scale</key> + <value>9</value> </param> <param> - <key>seed</key> - <value>42</value> + <key>v_offset</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(59, 543)</value> + <key>t_scale</key> + <value>0</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>ac_couple</key> + <value>False</value> </param> - </block> - <block> - <key>gr_multiply_const_vxx</key> <param> - <key>id</key> - <value>gr_multiply_const_vxx_0</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>num_inputs</key> + <value>1</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>win_size</key> + <value></value> </param> <param> - <key>const</key> - <value>sig_amp</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>notebook</key> + <value>notebook_0,1</value> + </param> + <param> + <key>trig_mode</key> + <value>gr.gr_TRIG_MODE_AUTO</value> + </param> + <param> + <key>y_axis_label</key> + <value>Counts</value> </param> <param> <key>_coordinate</key> - <value>(714, 382)</value> + <value>(1112, 881)</value> </param> <param> <key>_rotation</key> @@ -1101,7 +1103,7 @@ <key>variable</key> <param> <key>id</key> - <value>spb</value> + <value>pam_amp</value> </param> <param> <key>_enabled</key> @@ -1109,11 +1111,11 @@ </param> <param> <key>value</key> - <value>4.2563</value> + <value>2</value> </param> <param> <key>_coordinate</key> - <value>(42, 840)</value> + <value>(277, 12)</value> </param> <param> <key>_rotation</key> @@ -1121,54 +1123,45 @@ </param> </block> <block> - <key>gr_pfb_clock_sync_xxx</key> + <key>variable</key> <param> <key>id</key> - <value>gr_pfb_clock_sync_xxx_0</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>ccf</value> - </param> - <param> - <key>sps</key> - <value>spb</value> - </param> - <param> - <key>alpha</key> - <value>alpha</value> - </param> - <param> - <key>beta</key> - <value>beta</value> + <key>value</key> + <value>32000</value> </param> <param> - <key>taps</key> - <value>rrctaps</value> + <key>_coordinate</key> + <value>(182, 12)</value> </param> <param> - <key>filter_size</key> - <value>nfilts</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>init_phase</key> - <value>16</value> + <key>id</key> + <value>sig_amp</value> </param> <param> - <key>max_dev</key> - <value>1.5</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>osps</key> + <key>value</key> <value>1</value> </param> <param> <key>_coordinate</key> - <value>(512, 527)</value> + <value>(369, 12)</value> </param> <param> <key>_rotation</key> @@ -1176,10 +1169,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>digital_pfb_clock_sync_xxx</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0</value> + <value>digital_pfb_clock_sync_xxx_0</value> </param> <param> <key>_enabled</key> @@ -1187,63 +1180,39 @@ </param> <param> <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Error</value> + <value>ccf</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>sps</key> + <value>spb</value> </param> <param> - <key>v_scale</key> - <value>3</value> + <key>loop_bw</key> + <value>loop_bw</value> </param> <param> - <key>v_offset</key> - <value>0</value> + <key>taps</key> + <value>rrctaps</value> </param> <param> - <key>t_scale</key> - <value>0</value> + <key>filter_size</key> + <value>nfilts</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>init_phase</key> + <value>nfilts/2</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>max_dev</key> + <value>1.5</value> </param> <param> - <key>num_inputs</key> + <key>osps</key> <value>1</value> </param> <param> - <key>win_size</key> - <value></value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value>notebook_0,0</value> - </param> - <param> - <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> - </param> - <param> - <key>y_axis_label</key> - <value>Counts</value> - </param> - <param> <key>_coordinate</key> - <value>(1114, 615)</value> + <value>(492, 519)</value> </param> <param> <key>_rotation</key> @@ -1251,54 +1220,42 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>variable_slider</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0_0</value> + <value>loop_bw</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>v_scale</key> - <value>1.25</value> + <key>label</key> + <value>Loop Bandwidth</value> </param> <param> - <key>v_offset</key> - <value>0</value> + <key>value</key> + <value>6.28/100.0</value> </param> <param> - <key>t_scale</key> + <key>min</key> <value>0</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>max</key> + <value>0.2</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>win_size</key> - <value></value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -1306,19 +1263,11 @@ </param> <param> <key>notebook</key> - <value>notebook_0,2</value> - </param> - <param> - <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> - </param> - <param> - <key>y_axis_label</key> - <value>Counts</value> + <value></value> </param> <param> <key>_coordinate</key> - <value>(1080, 751)</value> + <value>(552, 4)</value> </param> <param> <key>_rotation</key> @@ -1327,109 +1276,109 @@ </block> <connection> <source_block_id>random_source_x_0</source_block_id> - <sink_block_id>gr_uchar_to_float_0</sink_block_id> + <sink_block_id>blocks_uchar_to_float_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_uchar_to_float_0</source_block_id> - <sink_block_id>gr_add_xx_0</sink_block_id> + <source_block_id>blocks_uchar_to_float_0</source_block_id> + <sink_block_id>blocks_add_xx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>const_source_x_0</source_block_id> - <sink_block_id>gr_add_xx_0</sink_block_id> + <source_block_id>analog_const_source_x_0</source_block_id> + <sink_block_id>blocks_add_xx_0</sink_block_id> <source_key>0</source_key> <sink_key>1</sink_key> </connection> <connection> - <source_block_id>gr_uchar_to_float_0_0</source_block_id> - <sink_block_id>gr_add_xx_0_1</sink_block_id> + <source_block_id>blocks_uchar_to_float_0_0</source_block_id> + <sink_block_id>blocks_add_xx_0_1</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>const_source_x_0_0</source_block_id> - <sink_block_id>gr_add_xx_0_1</sink_block_id> + <source_block_id>analog_const_source_x_0_0</source_block_id> + <sink_block_id>blocks_add_xx_0_1</sink_block_id> <source_key>0</source_key> <sink_key>1</sink_key> </connection> <connection> <source_block_id>random_source_x_0_0</source_block_id> - <sink_block_id>gr_uchar_to_float_0_0</sink_block_id> + <sink_block_id>blocks_uchar_to_float_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_channel_model_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> + <source_block_id>blocks_add_xx_0</source_block_id> + <sink_block_id>blocks_float_to_complex_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_add_xx_0</source_block_id> - <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_block_id>blocks_add_xx_0_1</source_block_id> + <sink_block_id>blocks_float_to_complex_0</sink_block_id> <source_key>0</source_key> - <sink_key>0</sink_key> + <sink_key>1</sink_key> </connection> <connection> - <source_block_id>gr_add_xx_0_1</source_block_id> - <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_1</sink_block_id> <source_key>0</source_key> - <sink_key>1</sink_key> + <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_pfb_clock_sync_xxx_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_block_id>gr_throttle_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>gr_throttle_0</source_block_id> - <sink_block_id>gr_pfb_clock_sync_xxx_0</sink_block_id> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_pfb_clock_sync_xxx_0</source_block_id> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> <sink_block_id>wxgui_scopesink2_0_0</sink_block_id> <source_key>1</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_pfb_clock_sync_xxx_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0_0_0</sink_block_id> - <source_key>3</source_key> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_0_0</sink_block_id> + <source_key>2</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_pfb_clock_sync_xxx_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0_0_0_0</sink_block_id> - <source_key>2</source_key> + <source_block_id>digital_pfb_clock_sync_xxx_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_0</sink_block_id> + <source_key>3</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_multiply_const_vxx_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0_0_1</sink_block_id> + <source_block_id>channels_channel_model_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_float_to_complex_0</source_block_id> - <sink_block_id>blks2_pfb_arb_resampler_ccf_0</sink_block_id> + <source_block_id>blocks_multiply_const_vxx_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>blks2_pfb_arb_resampler_ccf_0</source_block_id> - <sink_block_id>gr_multiply_const_vxx_0</sink_block_id> + <source_block_id>blocks_float_to_complex_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>gr_multiply_const_vxx_0</source_block_id> - <sink_block_id>gr_channel_model_0</sink_block_id> + <source_block_id>pfb_arb_resampler_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> diff --git a/gr-digital/examples/example_costas.py b/gr-digital/examples/example_costas.py index aef0196cc0..afb9657798 100755 --- a/gr-digital/examples/example_costas.py +++ b/gr-digital/examples/example_costas.py @@ -1,6 +1,26 @@ #!/usr/bin/env python - -from gnuradio import gr, digital +# +# Copyright 2011,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, +# Boston, MA 02110-1301, USA. +# + +from gnuradio import gr, digital, filter from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser @@ -28,8 +48,8 @@ class example_costas(gr.top_block): data = scipy.exp(1j*poffset) * data self.src = gr.vector_source_c(data.tolist(), False) - self.rrc = gr.interp_fir_filter_ccf(sps, rrc_taps) - self.chn = gr.channel_model(noise, foffset, toffset) + self.rrc = filter.interp_fir_filter_ccf(sps, rrc_taps) + self.chn = filter.channel_model(noise, foffset, toffset) self.cst = digital.costas_loop_cc(bw, 2) self.vsnk_src = gr.vector_sink_c() diff --git a/gr-digital/examples/example_fll.py b/gr-digital/examples/example_fll.py index 3b75b5a758..bcd2ee032b 100755 --- a/gr-digital/examples/example_fll.py +++ b/gr-digital/examples/example_fll.py @@ -1,6 +1,26 @@ #!/usr/bin/env python - -from gnuradio import gr, digital +# +# Copyright 2011,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, +# Boston, MA 02110-1301, USA. +# + +from gnuradio import gr, digital, filter from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser @@ -28,8 +48,8 @@ class example_fll(gr.top_block): data = scipy.exp(1j*poffset) * data self.src = gr.vector_source_c(data.tolist(), False) - self.rrc = gr.interp_fir_filter_ccf(sps, rrc_taps) - self.chn = gr.channel_model(noise, foffset, toffset) + self.rrc = filter.interp_fir_filter_ccf(sps, rrc_taps) + self.chn = filter.channel_model(noise, foffset, toffset) self.fll = digital.fll_band_edge_cc(sps, rolloff, ntaps, bw) self.vsnk_src = gr.vector_sink_c() diff --git a/gr-digital/examples/example_timing.py b/gr-digital/examples/example_timing.py index fd86acfb16..7274773a0f 100755 --- a/gr-digital/examples/example_timing.py +++ b/gr-digital/examples/example_timing.py @@ -1,6 +1,26 @@ #!/usr/bin/env python - -from gnuradio import gr, digital +# +# Copyright 2011,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, +# Boston, MA 02110-1301, USA. +# + +from gnuradio import gr, digital, filter from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser @@ -36,15 +56,15 @@ class example_timing(gr.top_block): data = scipy.exp(1j*poffset) * data self.src = gr.vector_source_c(data.tolist(), False) - self.rrc = gr.interp_fir_filter_ccf(sps, rrc_taps) - self.chn = gr.channel_model(noise, foffset, toffset) - self.off = gr.fractional_interpolator_cc(0.20, 1.0) + self.rrc = filter.interp_fir_filter_ccf(sps, rrc_taps) + self.chn = filter.channel_model(noise, foffset, toffset) + self.off = filter.fractional_interpolator_cc(0.20, 1.0) if mode == 0: - self.clk = gr.pfb_clock_sync_ccf(sps, gain, rrc_taps_rx, - nfilts, nfilts//2, 3.5) - self.taps = self.clk.get_taps() - self.dtaps = self.clk.get_diff_taps() + self.clk = digital.pfb_clock_sync_ccf(sps, gain, rrc_taps_rx, + nfilts, nfilts//2, 3.5) + self.taps = self.clk.taps() + self.dtaps = self.clk.diff_taps() self.vsnk_err = gr.vector_sink_f() self.vsnk_rat = gr.vector_sink_f() @@ -164,6 +184,7 @@ def main(): for i,d in enumerate(diff_taps): D = 20.0*scipy.log10(abs(fftpack.fftshift(fftpack.fft(d, 10000)))) + #D = 20.0*scipy.log10(abs(scipy.fft(d, 10000))) s31.plot(t[i::nfilts].real, d, "-o") s32.plot(D) diff --git a/gr-digital/examples/gen_whitener.py b/gr-digital/examples/gen_whitener.py index 9a81e4eaa3..0b1591c3ab 100755 --- a/gr-digital/examples/gen_whitener.py +++ b/gr-digital/examples/gen_whitener.py @@ -1,4 +1,24 @@ #!/usr/bin/env python +# +# Copyright 2011 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. +# from gnuradio import gr, gru from gnuradio.eng_option import eng_option diff --git a/gr-digital/examples/narrowband/benchmark_add_channel.py b/gr-digital/examples/narrowband/benchmark_add_channel.py index c69ee60b0b..05b55e3755 100755 --- a/gr-digital/examples/narrowband/benchmark_add_channel.py +++ b/gr-digital/examples/narrowband/benchmark_add_channel.py @@ -20,7 +20,8 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr +from gnuradio import gr, filter +from gnuradio import blocks from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser @@ -43,9 +44,10 @@ class my_top_block(gr.top_block): self.src = gr.file_source(gr.sizeof_gr_complex, ifile) #self.throttle = gr.throttle(gr.sizeof_gr_complex, options.sample_rate) - self.channel = gr.channel_model(noise_voltage, frequency_offset, - time_offset, noise_seed=-random.randint(0,100000)) - self.phase = gr.multiply_const_cc(complex(math.cos(phase_offset), + + self.channel = filter.channel_model(noise_voltage, frequency_offset, + time_offset, noise_seed=-random.randint(0,100000)) + self.phase = blocks.multiply_const_cc(complex(math.cos(phase_offset), math.sin(phase_offset))) self.snk = gr.file_sink(gr.sizeof_gr_complex, ofile) diff --git a/gr-digital/examples/narrowband/digital_bert_rx.py b/gr-digital/examples/narrowband/digital_bert_rx.py index ab7e988eba..c044b25858 100755 --- a/gr-digital/examples/narrowband/digital_bert_rx.py +++ b/gr-digital/examples/narrowband/digital_bert_rx.py @@ -65,8 +65,9 @@ class bert_receiver(gr.hier_block2): self._bitrate = bitrate - self._demod = digital.generic_demod(constellation, samples_per_symbol, - differential, excess_bw, gray_coded, + self._demod = digital.generic_demod(constellation, differential, + samples_per_symbol, + gray_coded, excess_bw, freq_bw, timing_bw, phase_bw, verbose, log) @@ -74,14 +75,15 @@ class bert_receiver(gr.hier_block2): self._sample_rate = self._symbol_rate * samples_per_symbol # Add an SNR probe on the demodulated constellation - self._snr_probe = digital.probe_mpsk_snr_est_c(digital.SNR_EST_M2M4, alpha=10.0/self._symbol_rate) + self._snr_probe = digital.probe_mpsk_snr_est_c(digital.SNR_EST_M2M4, 1000, + alpha=10.0/self._symbol_rate) self.connect(self._demod.time_recov, self._snr_probe) # Descramble BERT sequence. A channel error will create 3 incorrect bits - self._descrambler = gr.descrambler_bb(0x8A, 0x7F, 7) # CCSDS 7-bit descrambler + self._descrambler = digital.descrambler_bb(0x8A, 0x7F, 7) # CCSDS 7-bit descrambler # Measure BER by the density of 0s in the stream - self._ber = gr.probe_density_b(1.0/self._symbol_rate) + self._ber = digital.probe_density_b(1.0/self._symbol_rate) self.connect(self, self._demod, self._descrambler, self._ber) @@ -89,7 +91,7 @@ class bert_receiver(gr.hier_block2): return self._demod.freq_recov.get_frequency()*self._sample_rate/(2*math.pi) def timing_offset(self): - return self._demod.time_recov.get_clock_rate() + return self._demod.time_recov.clock_rate() def snr(self): return self._snr_probe.snr() diff --git a/gr-digital/examples/narrowband/digital_bert_tx.py b/gr-digital/examples/narrowband/digital_bert_tx.py index f29e997af6..5559f8698e 100755 --- a/gr-digital/examples/narrowband/digital_bert_tx.py +++ b/gr-digital/examples/narrowband/digital_bert_tx.py @@ -25,6 +25,7 @@ from gnuradio.eng_option import eng_option from optparse import OptionParser import sys +from gnuradio import blocks from gnuradio import digital # from current dir @@ -43,10 +44,11 @@ class bert_transmit(gr.hier_block2): # Create BERT data bit stream self._bits = gr.vector_source_b([1,], True) # Infinite stream of ones - self._scrambler = gr.scrambler_bb(0x8A, 0x7F, 7) # CCSDS 7-bit scrambler + self._scrambler = digital.scrambler_bb(0x8A, 0x7F, 7) # CCSDS 7-bit scrambler - self._mod = digital.generic_mod(constellation, samples_per_symbol, - differential, excess_bw, gray_coded, + self._mod = digital.generic_mod(constellation, differential, + samples_per_symbol, + gray_coded, excess_bw, verbose, log) self._pack = gr.unpacked_to_packed_bb(self._mod.bits_per_symbol(), gr.GR_MSB_FIRST) @@ -89,7 +91,7 @@ class tx_psk_block(gr.top_block): verbose=options.verbose, log=options.log) - self.amp = gr.multiply_const_cc(options.amplitude) + self.amp = blocks.multiply_const_cc(options.amplitude) self.connect(self._transmitter, self.amp, self._sink) diff --git a/gr-digital/examples/narrowband/receive_path.py b/gr-digital/examples/narrowband/receive_path.py index 1f93105068..a1a07b5f26 100644 --- a/gr-digital/examples/narrowband/receive_path.py +++ b/gr-digital/examples/narrowband/receive_path.py @@ -20,9 +20,10 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, gru +from gnuradio import gr, gru, filter from gnuradio import eng_notation from gnuradio import digital +from gnuradio import analog import copy import sys @@ -61,12 +62,12 @@ class receive_path(gr.hier_block2): # Design filter to get actual channel we want sw_decim = 1 - chan_coeffs = gr.firdes.low_pass (1.0, # gain - sw_decim * self.samples_per_symbol(), # sampling rate - self._chbw_factor, # midpoint of trans. band - 0.5, # width of trans. band - gr.firdes.WIN_HANN) # filter type - self.channel_filter = gr.fft_filter_ccc(sw_decim, chan_coeffs) + chan_coeffs = filter.firdes.low_pass(1.0, # gain + sw_decim * self.samples_per_symbol(), # sampling rate + self._chbw_factor, # midpoint of trans. band + 0.5, # width of trans. band + gr.firdes.WIN_HANN) # filter type + self.channel_filter = filter.fft_filter_ccc(sw_decim, chan_coeffs) # receiver self.packet_receiver = \ @@ -78,7 +79,7 @@ class receive_path(gr.hier_block2): # Carrier Sensing Blocks alpha = 0.001 thresh = 30 # in dB, will have to adjust - self.probe = gr.probe_avg_mag_sqrd_c(thresh,alpha) + self.probe = analog.probe_avg_mag_sqrd_c(thresh,alpha) # Display some information about the setup if self._verbose: @@ -119,8 +120,8 @@ class receive_path(gr.hier_block2): """ Set carrier threshold. - @param threshold_in_db: set detection threshold - @type threshold_in_db: float (dB) + Args: + threshold_in_db: set detection threshold (float (dB)) """ self.probe.set_threshold(threshold_in_db) diff --git a/gr-digital/examples/narrowband/rx_voice.py b/gr-digital/examples/narrowband/rx_voice.py index 100caff8ea..b1a1b0782e 100755 --- a/gr-digital/examples/narrowband/rx_voice.py +++ b/gr-digital/examples/narrowband/rx_voice.py @@ -20,11 +20,13 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, blks2, audio, uhd +from gnuradio import gr, audio, uhd +from gnuradio import filter from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser +from gnuradio import blocks from gnuradio import digital from gnuradio import vocoder @@ -50,8 +52,8 @@ class audio_tx(gr.hier_block2): self.sample_rate = sample_rate = 8000 self.packet_src = gr.message_source(33) voice_decoder = vocoder.gsm_fr_decode_ps() - s2f = gr.short_to_float () - sink_scale = gr.multiply_const_ff(1.0/32767.) + s2f = blocks.short_to_float() + sink_scale = blocks.multiply_const_ff(1.0/32767.) audio_sink = audio.sink(sample_rate, audio_output_dev) self.connect(self.packet_src, voice_decoder, s2f, sink_scale, audio_sink) @@ -75,7 +77,7 @@ class my_top_block(gr.top_block): audio_rate = self.audio_tx.sample_rate usrp_rate = self.source.get_sample_rate() rrate = audio_rate / usrp_rate - self.resampler = blks2.pfb_arb_resampler_ccf(rrate) + self.resampler = filter.pfb.arb_resampler_ccf(rrate) self.connect(self.source, self.resampler, self.rxpath) diff --git a/gr-digital/examples/narrowband/transmit_path.py b/gr-digital/examples/narrowband/transmit_path.py index 4d6162ed61..43a96050e9 100644 --- a/gr-digital/examples/narrowband/transmit_path.py +++ b/gr-digital/examples/narrowband/transmit_path.py @@ -21,6 +21,7 @@ from gnuradio import gr from gnuradio import eng_notation +from gnuradio import blocks from gnuradio import digital import copy @@ -58,7 +59,7 @@ class transmit_path(gr.hier_block2): msgq_limit=4, pad_for_usrp=True) - self.amp = gr.multiply_const_cc(1) + self.amp = blocks.multiply_const_cc(1) self.set_tx_amplitude(self._tx_amplitude) # Display some information about the setup @@ -71,7 +72,9 @@ class transmit_path(gr.hier_block2): def set_tx_amplitude(self, ampl): """ Sets the transmit amplitude sent to the USRP in volts - @param: ampl 0 <= ampl < 1. + + Args: + : ampl 0 <= ampl < 1. """ self._tx_amplitude = max(0.0, min(ampl, 1)) self.amp.set_k(self._tx_amplitude) diff --git a/gr-digital/examples/narrowband/tunnel.py b/gr-digital/examples/narrowband/tunnel.py index 65205b9f6f..7b9b69cc8a 100755 --- a/gr-digital/examples/narrowband/tunnel.py +++ b/gr-digital/examples/narrowband/tunnel.py @@ -161,8 +161,9 @@ class cs_mac(object): """ Invoked by thread associated with PHY to pass received packet up. - @param ok: bool indicating whether payload CRC was OK - @param payload: contents of the packet (string) + Args: + ok: bool indicating whether payload CRC was OK + payload: contents of the packet (string) """ if self.verbose: print "Rx: ok = %r len(payload) = %4d" % (ok, len(payload)) diff --git a/gr-digital/examples/narrowband/tx_voice.py b/gr-digital/examples/narrowband/tx_voice.py index 3d767a0770..d3c81694ab 100755 --- a/gr-digital/examples/narrowband/tx_voice.py +++ b/gr-digital/examples/narrowband/tx_voice.py @@ -20,11 +20,13 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, blks2, audio, uhd +from gnuradio import gr, audio, uhd from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser +from gnuradio import blocks +from gnuradio import filter from gnuradio import digital from gnuradio import vocoder @@ -49,8 +51,8 @@ class audio_rx(gr.hier_block2): gr.io_signature(0, 0, 0)) # Output signature self.sample_rate = sample_rate = 8000 src = audio.source(sample_rate, audio_input_dev) - src_scale = gr.multiply_const_ff(32767) - f2s = gr.float_to_short() + src_scale = blocks.multiply_const_ff(32767) + f2s = blocks.float_to_short() voice_coder = vocoder.gsm_fr_encode_sp() self.packets_from_encoder = gr.msg_queue() packet_sink = gr.message_sink(33, self.packets_from_encoder, False) @@ -84,7 +86,7 @@ class my_top_block(gr.top_block): self.sink = gr.null_sink(gr.sizeof_gr_complex) rrate = 1 - self.resampler = blks2.pfb_arb_resampler_ccf(rrate) + self.resampler = filter.pfb.arb_resampler_ccf(rrate) self.connect(self.audio_rx) self.connect(self.txpath, self.resampler, self.sink) diff --git a/gr-digital/examples/ofdm/benchmark_add_channel.py b/gr-digital/examples/ofdm/benchmark_add_channel.py index cbdd990f4f..369087b4c1 100755 --- a/gr-digital/examples/ofdm/benchmark_add_channel.py +++ b/gr-digital/examples/ofdm/benchmark_add_channel.py @@ -20,7 +20,8 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr +from gnuradio import gr, filter +from gnuradio import blocks from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser @@ -45,9 +46,10 @@ class my_top_block(gr.top_block): self.src = gr.file_source(gr.sizeof_gr_complex, ifile) #self.throttle = gr.throttle(gr.sizeof_gr_complex, options.sample_rate) - self.channel = gr.channel_model(noise_voltage, frequency_offset, + + self.channel = filter.channel_model(noise_voltage, frequency_offset, time_offset, noise_seed=-random.randint(0,100000)) - self.phase = gr.multiply_const_cc(complex(math.cos(phase_offset), + self.phase = blocks.multiply_const_cc(complex(math.cos(phase_offset), math.sin(phase_offset))) self.snk = gr.file_sink(gr.sizeof_gr_complex, ofile) diff --git a/gr-digital/examples/ofdm/benchmark_rx.py b/gr-digital/examples/ofdm/benchmark_rx.py index 57817c5018..f1b65276d0 100755 --- a/gr-digital/examples/ofdm/benchmark_rx.py +++ b/gr-digital/examples/ofdm/benchmark_rx.py @@ -20,7 +20,7 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, blks2 +from gnuradio import gr from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser diff --git a/gr-digital/examples/ofdm/ofdm_mod_demod_test.py b/gr-digital/examples/ofdm/ofdm_mod_demod_test.py deleted file mode 100755 index b1521da6d7..0000000000 --- a/gr-digital/examples/ofdm/ofdm_mod_demod_test.py +++ /dev/null @@ -1,179 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2005,2006,2008 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. -# - -from gnuradio import gr, ofdm_packet_utils -import gnuradio.gr.gr_threading as _threading -from gnuradio import eng_notation -from gnuradio.eng_option import eng_option -from optparse import OptionParser - -import random, time, struct, sys, math, os - -class my_top_block(gr.top_block): - def __init__(self, callback, options): - gr.top_block.__init__(self) - - # hard-coded known symbol - ks1 = known_symbols_4512_1[0:options.occupied_tones] - ks2 = known_symbols_4512_2[0:options.occupied_tones] - - self._rcvd_pktq = gr.msg_queue() - - # accepts messages from the outside world - self.ofdm_mapper = gr.ofdm_bpsk_mapper(4, options.occupied_tones, options.fft_length, ks1, ks2) - self.ofdm_corr = gr.ofdm_correlator(options.occupied_tones, options.fft_length, 0, ks1, ks2) - self.ofdm_framer = gr.ofdm_frame_sink(self._rcvd_pktq, options.occupied_tones) - - if 0: # set to 1 to put the correlator in the path to take over the signalling - self.connect((self.ofdm_mapper, 0), (self.ofdm_corr, 0)) - self.connect((self.ofdm_corr, 0), (self.ofdm_framer, 0)) - self.connect((self.ofdm_corr, 1), (self.ofdm_framer, 1)) - - self.connect((self.ofdm_mapper,0), gr.file_sink(gr.sizeof_gr_complex*options.fft_length, "ofdm_mapper.dat")) - self.connect((self.ofdm_corr,0), gr.file_sink(gr.sizeof_gr_complex*options.occupied_tones, "ofdm_corr.dat")) - self.connect((self.ofdm_corr,1), gr.file_sink(gr.sizeof_char, "ofdm_sig.dat")) - - else: - self.connect((self.ofdm_mapper, 0), (self.ofdm_framer, 0)) - self.connect((self.ofdm_mapper, 1), (self.ofdm_framer, 1)) - - self.connect((self.ofdm_mapper,0), gr.file_sink(gr.sizeof_gr_complex*options.fft_length, "ofdm_mapper.dat")) - self.connect((self.ofdm_mapper,1), gr.file_sink(gr.sizeof_char, "ofdm_sig.dat")) - - self._watcher = _queue_watcher_thread(self._rcvd_pktq, callback) - - def send_pkt(self, payload='', eof=False): - if eof: - msg = gr.message(1) - else: - pkt = ofdm_packet_utils.make_packet(payload, 1, 1, False, whiten=False) - msg = gr.message_from_string(pkt) - self.ofdm_mapper.msgq().insert_tail(msg) - -class _queue_watcher_thread(_threading.Thread): - def __init__(self, rcvd_pktq, callback): - _threading.Thread.__init__(self) - self.setDaemon(1) - self.rcvd_pktq = rcvd_pktq - self.callback = callback - self.keep_running = True - self.start() - - def run(self): - while self.keep_running: - msg = self.rcvd_pktq.delete_head() - ok, payload = ofdm_packet_utils.unmake_packet(msg.to_string(), whiten=False) - if self.callback: - self.callback(ok, payload) - -# ///////////////////////////////////////////////////////////////////////////// -# main -# ///////////////////////////////////////////////////////////////////////////// - -def main(): - ''' Use this program to tie the OFDM modulators straight into the frame sink, with or without - the correlator in between. This is for testing of the modulators and demodulators only without - receiver and sync functionality.''' - - global n_rcvd, n_right - - n_rcvd = 0 - n_right = 0 - - def send_pkt(payload='', eof=False): - return fg.send_pkt(payload, eof) - - def rx_callback(ok, payload): - global n_rcvd, n_right - n_rcvd += 1 - (pktno,) = struct.unpack('!H', payload[0:2]) - if ok: - n_right += 1 - print "ok: %r \t pktno: %d \t n_rcvd: %d \t n_right: %d" % (ok, pktno, n_rcvd, n_right) - - printlst = list() - for x in payload[2:]: - t = hex(ord(x)).replace('0x', '') - if(len(t) == 1): - t = '0' + t - printlst.append(t) - printable = ''.join(printlst) - - print printable - print "\n" - - parser = OptionParser(option_class=eng_option, conflict_handler="resolve") - expert = parser.add_option_group("Expert") - parser.add_option("-s", "--size", type="eng_float", default=1450, - help="set packet size [default=%default]") - parser.add_option("-M", "--megabytes", type="eng_float", default=1.0, - help="set megabytes to transmit [default=%default]") - expert.add_option("", "--fft-length", type="intx", default=512, - help="set the number of FFT bins [default=%default]") - expert.add_option("", "--occupied-tones", type="intx", default=200, - help="set the number of occupied FFT bins [default=%default]") - expert.add_option("", "--cp-length", type="intx", default=128, - help="set the number of bits in the cyclic prefix [default=%default]") - expert.add_option("", "--fft-length", type="intx", default=512, - help="set the number of FFT bins [default=%default]") - expert.add_option("", "--occupied-tones", type="intx", default=200, - help="set the number of occupied FFT bins [default=%default]") - expert.add_option("", "--cp-length", type="intx", default=128, - help="set the number of bits in the cyclic prefix [default=%default]") - - (options, args) = parser.parse_args () - - # build the graph - tb = my_top_block(rx_callback, options) - - tb.start() # start flow graph - - # generate and send packets - nbytes = int(1e6 * options.megabytes) - n = 0 - pktno = 0 - pkt_size = int(options.size) - - while n < nbytes: - #r = ''.join([chr(random.randint(0,255)) for i in range(pkt_size-2)]) - #pkt_contents = struct.pack('!H', pktno) + r - - pkt_contents = struct.pack('!H', pktno) + (pkt_size - 2) * chr(pktno & 0xff) - - send_pkt(pkt_contents) - n += pkt_size - pktno += 1 - - send_pkt(eof=True) - tb.wait() # wait for it to finish - -known_symbols_4512_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, -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, -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, -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, 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, -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, 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, -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, -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, -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, -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, -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, 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, -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, -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, -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, 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, -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, 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, 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, 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, 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, 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, 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, -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, 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, -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, -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, -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, 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, -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, 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, 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, -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, -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, -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, 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, -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, 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, 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, -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, -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, 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, -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, 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, 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, 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, -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, 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, -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, -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, 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, 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, -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, -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, -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, 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, -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, -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, -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, -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, 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, 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, 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, -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, 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, 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, -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, -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, 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, 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, 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, -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, 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, 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, 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, -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, -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, -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, -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, -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, 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, -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, -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, -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, -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, -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, -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, -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, 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, -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, -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, 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, -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, -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, -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, 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, 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, -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, -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, -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, 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, 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, -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, 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, 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, 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, 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, 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, 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, -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, -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, 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, 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, -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, 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, 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, -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, -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, -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, -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, -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, -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, 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, -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, 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, 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, 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, -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, 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, -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, -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, 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, -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, 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, 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, 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, -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, 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, 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, -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, -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, 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, -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, 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, -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, 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, 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, -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, -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, -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, 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, -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, 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, -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, -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, 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, 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, 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, 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, -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, -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, 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, 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, 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, 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, -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, -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, -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, 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, -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, 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, 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, -1, -1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1] - -known_symbols_4512_2 = [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, -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, -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, 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, 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, -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, 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, 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, -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, -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, 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, -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, -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, -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, 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, -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, -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, -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, -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, -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, -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, 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, -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, 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, -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, 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, 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, -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, -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, -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, 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, -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, -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, 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, -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, -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, -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, -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, -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, 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, -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, -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, -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, -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, 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, -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, 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, -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, 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, -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, -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, 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, -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, -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, 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, -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, -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, 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, -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, 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, 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, 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, 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, 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, -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, -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, -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, 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, 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, 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, -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, 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, -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, -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, 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, -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, 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, -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, -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, -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, 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, -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, 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, -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, 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, -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, 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, -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, 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, -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, 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, -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, 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, 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, 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, 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, -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, -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, -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, -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, 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, 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, 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, -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, 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, -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, -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, -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, -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, 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, -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, 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, -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, -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, -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, -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, 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, 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, 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, -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, 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, -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, -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, 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, -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, 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, -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, 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, 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, -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, 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, -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, -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, 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, -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, 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, -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, -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, 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, 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, -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, -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, 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, 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, -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, -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, 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, 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, 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, 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, -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, 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, -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, 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, -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, -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, 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, -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, 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, -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, -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, 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, -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, 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, 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, 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, -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, -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, -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, 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, 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, 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, -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, 1, -1, -1, -1, 1, -1, -1, -1, 1, 1, 1, 1, -1, -1] - - -if __name__ == '__main__': - try: - main() - except KeyboardInterrupt: - pass - diff --git a/gr-digital/examples/ofdm/receive_path.py b/gr-digital/examples/ofdm/receive_path.py index e1c7868a0e..2a6813f8f9 100644 --- a/gr-digital/examples/ofdm/receive_path.py +++ b/gr-digital/examples/ofdm/receive_path.py @@ -22,6 +22,7 @@ from gnuradio import gr from gnuradio import eng_notation from gnuradio import digital +from gnuradio import analog import copy import sys @@ -51,7 +52,7 @@ class receive_path(gr.hier_block2): # Carrier Sensing Blocks alpha = 0.001 thresh = 30 # in dB, will have to adjust - self.probe = gr.probe_avg_mag_sqrd_c(thresh,alpha) + self.probe = analog.probe_avg_mag_sqrd_c(thresh,alpha) self.connect(self, self.ofdm_rx) self.connect(self.ofdm_rx, self.probe) @@ -77,8 +78,8 @@ class receive_path(gr.hier_block2): """ Set carrier threshold. - @param threshold_in_db: set detection threshold - @type threshold_in_db: float (dB) + Args: + threshold_in_db: set detection threshold (float (dB)) """ self.probe.set_threshold(threshold_in_db) diff --git a/gr-digital/examples/ofdm/transmit_path.py b/gr-digital/examples/ofdm/transmit_path.py index ec357d6173..aa146cea96 100644 --- a/gr-digital/examples/ofdm/transmit_path.py +++ b/gr-digital/examples/ofdm/transmit_path.py @@ -21,6 +21,7 @@ from gnuradio import gr from gnuradio import eng_notation +from gnuradio import blocks from gnuradio import digital import copy @@ -49,7 +50,7 @@ class transmit_path(gr.hier_block2): msgq_limit=4, pad_for_usrp=False) - self.amp = gr.multiply_const_cc(1) + self.amp = blocks.multiply_const_cc(1) self.set_tx_amplitude(self._tx_amplitude) # Display some information about the setup @@ -62,7 +63,9 @@ class transmit_path(gr.hier_block2): def set_tx_amplitude(self, ampl): """ Sets the transmit amplitude sent to the USRP - @param: ampl 0 <= ampl < 1.0. Try 0.10 + + Args: + : ampl 0 <= ampl < 1.0. Try 0.10 """ self._tx_amplitude = max(0.0, min(ampl, 1)) self.amp.set_k(self._tx_amplitude) diff --git a/gr-digital/examples/ofdm/tunnel.py b/gr-digital/examples/ofdm/tunnel.py index e253cf5161..f407aef8d6 100755 --- a/gr-digital/examples/ofdm/tunnel.py +++ b/gr-digital/examples/ofdm/tunnel.py @@ -146,8 +146,9 @@ class cs_mac(object): """ Invoked by thread associated with PHY to pass received packet up. - @param ok: bool indicating whether payload CRC was OK - @param payload: contents of the packet (string) + Args: + ok: bool indicating whether payload CRC was OK + payload: contents of the packet (string) """ if self.verbose: print "Rx: ok = %r len(payload) = %4d" % (ok, len(payload)) diff --git a/gr-digital/examples/snr_estimators.py b/gr-digital/examples/snr_estimators.py index 432abd4553..e310ec2937 100755 --- a/gr-digital/examples/snr_estimators.py +++ b/gr-digital/examples/snr_estimators.py @@ -1,4 +1,24 @@ #!/usr/bin/env python +# +# Copyright 2011,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, +# Boston, MA 02110-1301, USA. +# import sys @@ -15,7 +35,7 @@ except ImportError: print "Error: Program requires Matplotlib (matplotlib.sourceforge.net)." sys.exit(1) -from gnuradio import gr, digital +from gnuradio import gr, digital, filter from optparse import OptionParser from gnuradio.eng_option import eng_option @@ -147,7 +167,7 @@ def main(): gr_src = gr.vector_source_c(bits.tolist(), False) gr_snr = digital.mpsk_snr_est_cc(gr_est, ntag, 0.001) - gr_chn = gr.channel_model(1.0/scale) + gr_chn = filter.channel_model(1.0/scale) gr_snk = gr.null_sink(gr.sizeof_gr_complex) tb = gr.top_block() tb.connect(gr_src, gr_chn, gr_snr, gr_snk) |