diff options
Diffstat (limited to 'gr-digital')
28 files changed, 394 insertions, 483 deletions
diff --git a/gr-digital/CMakeLists.txt b/gr-digital/CMakeLists.txt index c2d7524505..ac0dbb737d 100644 --- a/gr-digital/CMakeLists.txt +++ b/gr-digital/CMakeLists.txt @@ -32,6 +32,7 @@ GR_REGISTER_COMPONENT("gr-digital" ENABLE_GR_DIGITAL ENABLE_GR_CORE ENABLE_GR_FFT ENABLE_GR_FILTER + ENABLE_GR_BLOCKS ENABLE_GR_ANALOG ) diff --git a/gr-digital/examples/berawgn.py b/gr-digital/examples/berawgn.py index 8ff43b7b92..b20b17fd39 100755 --- a/gr-digital/examples/berawgn.py +++ b/gr-digital/examples/berawgn.py @@ -37,6 +37,7 @@ import math import numpy from gnuradio import gr, digital from gnuradio import analog +from gnuradio import blocks try: from scipy.special import erfc @@ -70,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)) @@ -92,7 +93,7 @@ class BERAWGNSimu(gr.top_block): 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 = digital.chunks_to_symbols_bc((self.const.points()), 1) - add = gr.add_vcc() + add = blocks.add_vcc() noise = analog.noise_source_c(analog.GR_GAUSSIAN, self.EbN0_to_noise_voltage(EbN0), RAND_SEED) diff --git a/gr-digital/examples/demod/ber_simulation.grc b/gr-digital/examples/demod/ber_simulation.grc index 2a3e27a496..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>Sat Nov 10 15:31:44 2012</timestamp> + <timestamp>Thu Dec 27 13:06:26 2012</timestamp> <block> <key>options</key> <param> @@ -510,10 +510,10 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>blocks_add_xx</key> <param> <key>id</key> - <value>gr_add_xx</value> + <value>blocks_add_xx</value> </param> <param> <key>_enabled</key> @@ -594,7 +594,7 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_add_xx</source_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> @@ -606,7 +606,7 @@ <sink_key>1</sink_key> </connection> <connection> - <source_block_id>gr_add_xx</source_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> @@ -619,13 +619,13 @@ </connection> <connection> <source_block_id>digital_chunks_to_symbols_xx_0</source_block_id> - <sink_block_id>gr_add_xx</sink_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>analog_noise_source_x_0</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> + <sink_block_id>blocks_add_xx</sink_block_id> <source_key>0</source_key> <sink_key>1</sink_key> </connection> diff --git a/gr-digital/examples/demod/pam_sync.grc b/gr-digital/examples/demod/pam_sync.grc index 11c625467b..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>Mon Jul 16 21:25:28 2012</timestamp> + <timestamp>Thu Dec 27 13:26:17 2012</timestamp> <block> <key>options</key> <param> @@ -311,61 +311,6 @@ </param> </block> <block> - <key>digital_pfb_clock_sync_xxx</key> - <param> - <key>id</key> - <value>digital_pfb_clock_sync_xxx_0</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> - </param> - <param> - <key>taps</key> - <value>rrctaps</value> - </param> - <param> - <key>filter_size</key> - <value>nfilts</value> - </param> - <param> - <key>init_phase</key> - <value>nfilts/2</value> - </param> - <param> - <key>max_dev</key> - <value>1.5</value> - </param> - <param> - <key>osps</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(601, 254)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>wxgui_scopesink2</key> <param> <key>id</key> @@ -452,7 +397,7 @@ </param> <param> <key>label</key> - <value>Channel Noise</value> + <value>Channels_Channel Noise</value> </param> <param> <key>value</key> @@ -703,10 +648,10 @@ </param> </block> <block> - <key>channel_model</key> + <key>channels_channel_model</key> <param> <key>id</key> - <value>channel_model_0</value> + <value>channels_channel_model_0</value> </param> <param> <key>_enabled</key> @@ -966,116 +911,6 @@ <key>variable_slider</key> <param> <key>id</key> - <value>time_alpha</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> - </param> - <param> - <key>max</key> - <value>1</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>(5,2,1,1)</value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(557, 431)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>time_beta</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> - </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>(6,2,1,1)</value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(694, 430)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> <value>freq_bw</value> </param> <param> @@ -1219,10 +1054,10 @@ </param> </block> <block> - <key>gr_multiply_const_vxx</key> + <key>blocks_multiply_const_vxx</key> <param> <key>id</key> - <value>gr_multiply_const_vxx_0</value> + <value>blocks_multiply_const_vxx_0</value> </param> <param> <key>_enabled</key> @@ -1307,6 +1142,10 @@ <value>32</value> </param> <param> + <key>atten</key> + <value>100</value> + </param> + <param> <key>_coordinate</key> <value>(468, 72)</value> </param> @@ -1355,58 +1194,105 @@ </param> </block> <block> - <key>options</key> + <key>digital_pfb_clock_sync_xxx</key> <param> <key>id</key> - <value>pam_sync</value> + <value>digital_pfb_clock_sync_xxx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>title</key> - <value></value> + <key>type</key> + <value>ccf</value> </param> <param> - <key>author</key> - <value></value> + <key>sps</key> + <value>spb</value> </param> <param> - <key>description</key> - <value></value> + <key>loop_bw</key> + <value>timing_loop_bw</value> </param> <param> - <key>window_size</key> - <value>1280, 1024</value> + <key>taps</key> + <value>rrctaps</value> </param> <param> - <key>generate_options</key> - <value>wx_gui</value> + <key>filter_size</key> + <value>nfilts</value> </param> <param> - <key>category</key> - <value>Custom</value> + <key>init_phase</key> + <value>nfilts/2</value> </param> <param> - <key>run_options</key> - <value>prompt</value> + <key>max_dev</key> + <value>1.5</value> </param> <param> - <key>run</key> + <key>osps</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(601, 254)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>timing_loop_bw</value> + </param> + <param> + <key>_enabled</key> <value>True</value> </param> <param> - <key>max_nouts</key> + <key>label</key> + <value>Timing Loop Bandwidth</value> + </param> + <param> + <key>value</key> + <value>6.28/100.0</value> + </param> + <param> + <key>min</key> <value>0</value> </param> <param> - <key>realtime_scheduling</key> + <key>max</key> + <value>0.2</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>(5,2,1,1)</value> + </param> + <param> + <key>notebook</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(-1, 0)</value> + <value>(557, 431)</value> </param> <param> <key>_rotation</key> @@ -1438,7 +1324,7 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_multiply_const_vxx_0</source_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> @@ -1462,20 +1348,20 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>channel_model_0</source_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>channel_model_0</source_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>gr_throttle_0</source_block_id> - <sink_block_id>channel_model_0</sink_block_id> + <sink_block_id>channels_channel_model_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> @@ -1487,7 +1373,7 @@ </connection> <connection> <source_block_id>pfb_arb_resampler_xxx_0</source_block_id> - <sink_block_id>gr_multiply_const_vxx_0</sink_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 6465d25fd0..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> @@ -232,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> @@ -259,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> @@ -321,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> @@ -352,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> @@ -516,61 +516,6 @@ </param> </block> <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>alpha</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> - </param> - <param> - <key>max</key> - <value>1</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></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(552, 4)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>variable</key> <param> <key>id</key> @@ -692,61 +637,6 @@ </param> </block> <block> - <key>digital_pfb_clock_sync_xxx</key> - <param> - <key>id</key> - <value>digital_pfb_clock_sync_xxx_0</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> - </param> - <param> - <key>taps</key> - <value>rrctaps</value> - </param> - <param> - <key>filter_size</key> - <value>nfilts</value> - </param> - <param> - <key>init_phase</key> - <value>nfilts/2</value> - </param> - <param> - <key>max_dev</key> - <value>1.5</value> - </param> - <param> - <key>osps</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(492, 519)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> <key>gr_throttle</key> <param> <key>id</key> @@ -778,10 +668,10 @@ </param> </block> <block> - <key>channel_model</key> + <key>channels_channel_model</key> <param> <key>id</key> - <value>channel_model_0</value> + <value>channels_channel_model_0</value> </param> <param> <key>_enabled</key> @@ -817,10 +707,10 @@ </param> </block> <block> - <key>gr_float_to_complex</key> + <key>blocks_float_to_complex</key> <param> <key>id</key> - <value>gr_float_to_complex_0</value> + <value>blocks_float_to_complex_0</value> </param> <param> <key>_enabled</key> @@ -866,6 +756,10 @@ <value>32</value> </param> <param> + <key>atten</key> + <value>100</value> + </param> + <param> <key>_coordinate</key> <value>(788, 173)</value> </param> @@ -875,10 +769,10 @@ </param> </block> <block> - <key>gr_multiply_const_vxx</key> + <key>blocks_multiply_const_vxx</key> <param> <key>id</key> - <value>gr_multiply_const_vxx_0</value> + <value>blocks_multiply_const_vxx_0</value> </param> <param> <key>_enabled</key> @@ -1206,113 +1100,119 @@ </param> </block> <block> - <key>variable_slider</key> + <key>variable</key> <param> <key>id</key> - <value>beta</value> + <value>pam_amp</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Timing Beta</value> + <key>value</key> + <value>2</value> </param> <param> - <key>value</key> + <key>_coordinate</key> + <value>(277, 12)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>min</key> - <value>0.0</value> + <key>id</key> + <value>samp_rate</value> </param> <param> - <key>max</key> - <value>0.1</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>value</key> + <value>32000</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>_coordinate</key> + <value>(182, 12)</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>sig_amp</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>1</value> </param> <param> <key>_coordinate</key> - <value>(673, 5)</value> + <value>(369, 12)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>options</key> + <key>digital_pfb_clock_sync_xxx</key> <param> <key>id</key> - <value>pam_timing</value> + <value>digital_pfb_clock_sync_xxx_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> + <key>type</key> + <value>ccf</value> </param> <param> - <key>window_size</key> - <value>1280, 1024</value> + <key>sps</key> + <value>spb</value> </param> <param> - <key>generate_options</key> - <value>wx_gui</value> + <key>loop_bw</key> + <value>loop_bw</value> </param> <param> - <key>category</key> - <value>Custom</value> + <key>taps</key> + <value>rrctaps</value> </param> <param> - <key>run_options</key> - <value>prompt</value> + <key>filter_size</key> + <value>nfilts</value> </param> <param> - <key>run</key> - <value>True</value> + <key>init_phase</key> + <value>nfilts/2</value> </param> <param> - <key>max_nouts</key> - <value>0</value> + <key>max_dev</key> + <value>1.5</value> </param> <param> - <key>realtime_scheduling</key> - <value></value> + <key>osps</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(10, 10)</value> + <value>(492, 519)</value> </param> <param> <key>_rotation</key> @@ -1320,68 +1220,54 @@ </param> </block> <block> - <key>variable</key> + <key>variable_slider</key> <param> <key>id</key> - <value>pam_amp</value> + <value>loop_bw</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>2</value> + <key>label</key> + <value>Loop Bandwidth</value> </param> <param> - <key>_coordinate</key> - <value>(277, 12)</value> + <key>value</key> + <value>6.28/100.0</value> </param> <param> - <key>_rotation</key> + <key>min</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> + <key>max</key> + <value>0.2</value> </param> <param> - <key>_coordinate</key> - <value>(182, 12)</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> - </block> - <block> - <key>variable</key> <param> - <key>id</key> - <value>sig_amp</value> + <key>converver</key> + <value>float_converter</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>value</key> - <value>1</value> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(369, 12)</value> + <value>(552, 4)</value> </param> <param> <key>_rotation</key> @@ -1390,54 +1276,54 @@ </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_add_xx_0</source_block_id> - <sink_block_id>gr_float_to_complex_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_1</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>1</sink_key> </connection> <connection> - <source_block_id>gr_multiply_const_vxx_0</source_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>0</sink_key> @@ -1473,26 +1359,26 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>channel_model_0</source_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_multiply_const_vxx_0</source_block_id> - <sink_block_id>channel_model_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>gr_float_to_complex_0</source_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>pfb_arb_resampler_xxx_0</source_block_id> - <sink_block_id>gr_multiply_const_vxx_0</sink_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/narrowband/benchmark_add_channel.py b/gr-digital/examples/narrowband/benchmark_add_channel.py index 0ee0058059..05b55e3755 100755 --- a/gr-digital/examples/narrowband/benchmark_add_channel.py +++ b/gr-digital/examples/narrowband/benchmark_add_channel.py @@ -21,6 +21,7 @@ # 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 @@ -46,7 +47,7 @@ class my_top_block(gr.top_block): 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/narrowband/digital_bert_tx.py b/gr-digital/examples/narrowband/digital_bert_tx.py index ff8bf9f104..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 @@ -90,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/rx_voice.py b/gr-digital/examples/narrowband/rx_voice.py index 079f8cb9b9..b1a1b0782e 100755 --- a/gr-digital/examples/narrowband/rx_voice.py +++ b/gr-digital/examples/narrowband/rx_voice.py @@ -26,6 +26,7 @@ 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 @@ -51,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) diff --git a/gr-digital/examples/narrowband/transmit_path.py b/gr-digital/examples/narrowband/transmit_path.py index ec87ecd825..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 diff --git a/gr-digital/examples/narrowband/tx_voice.py b/gr-digital/examples/narrowband/tx_voice.py index 1f968fa8a3..d3c81694ab 100755 --- a/gr-digital/examples/narrowband/tx_voice.py +++ b/gr-digital/examples/narrowband/tx_voice.py @@ -25,6 +25,7 @@ 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 @@ -50,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) diff --git a/gr-digital/examples/ofdm/benchmark_add_channel.py b/gr-digital/examples/ofdm/benchmark_add_channel.py index 5c7a3ae501..369087b4c1 100755 --- a/gr-digital/examples/ofdm/benchmark_add_channel.py +++ b/gr-digital/examples/ofdm/benchmark_add_channel.py @@ -21,6 +21,7 @@ # 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 @@ -48,7 +49,7 @@ class my_top_block(gr.top_block): 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/transmit_path.py b/gr-digital/examples/ofdm/transmit_path.py index 6fb66e4076..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 diff --git a/gr-digital/lib/CMakeLists.txt b/gr-digital/lib/CMakeLists.txt index c5d9a63189..398285a228 100644 --- a/gr-digital/lib/CMakeLists.txt +++ b/gr-digital/lib/CMakeLists.txt @@ -23,6 +23,7 @@ include_directories( ${VOLK_INCLUDE_DIRS} ${GNURADIO_CORE_INCLUDE_DIRS} + ${GR_BLOCKS_INCLUDE_DIRS} ${GR_ANALOG_INCLUDE_DIRS} ${GR_DIGITAL_INCLUDE_DIRS} ${GR_FFT_INCLUDE_DIRS} @@ -156,6 +157,7 @@ list(APPEND digital_libs volk gnuradio-core gnuradio-filter + gnuradio-blocks gnuradio-analog ${Boost_LIBRARIES} ) diff --git a/gr-digital/lib/cpmmod_bc_impl.cc b/gr-digital/lib/cpmmod_bc_impl.cc index d6c3a29a29..763a4cc1e2 100644 --- a/gr-digital/lib/cpmmod_bc_impl.cc +++ b/gr-digital/lib/cpmmod_bc_impl.cc @@ -60,7 +60,7 @@ namespace gr { gr_make_io_signature2(1, 1, sizeof(gr_complex), sizeof(float))), d_type(type), d_index(h), d_sps(samples_per_sym), d_length(L), d_beta(beta), d_taps(analog::cpm::phase_response(type, samples_per_sym, L, beta)), - d_char_to_float(gr_make_char_to_float()), + d_char_to_float(blocks::char_to_float::make()), d_pulse_shaper(filter::interp_fir_filter_fff::make(samples_per_sym, d_taps)), d_fm(analog::frequency_modulator_fc::make(M_PI * h)) { diff --git a/gr-digital/lib/cpmmod_bc_impl.h b/gr-digital/lib/cpmmod_bc_impl.h index 3051e49df9..9cfec4959e 100644 --- a/gr-digital/lib/cpmmod_bc_impl.h +++ b/gr-digital/lib/cpmmod_bc_impl.h @@ -24,7 +24,7 @@ #define INCLUDED_DIGITAL_CPMMOD_BC_IMPL_H #include <digital/cpmmod_bc.h> -#include <gr_char_to_float.h> +#include <blocks/char_to_float.h> #include <analog/frequency_modulator_fc.h> #include <filter/interp_fir_filter_fff.h> @@ -42,7 +42,7 @@ namespace gr { protected: std::vector<float> d_taps; - gr_char_to_float_sptr d_char_to_float; + gr::blocks::char_to_float::sptr d_char_to_float; gr::filter::interp_fir_filter_fff::sptr d_pulse_shaper; analog::frequency_modulator_fc::sptr d_fm; diff --git a/gr-digital/python/CMakeLists.txt b/gr-digital/python/CMakeLists.txt index 2b12799b56..c44248d54c 100644 --- a/gr-digital/python/CMakeLists.txt +++ b/gr-digital/python/CMakeLists.txt @@ -70,6 +70,8 @@ list(APPEND GR_TEST_PYTHON_DIRS ${CMAKE_BINARY_DIR}/gr-filter/swig ${CMAKE_BINARY_DIR}/gr-analog/python ${CMAKE_BINARY_DIR}/gr-analog/swig + ${CMAKE_BINARY_DIR}/gr-blocks/python + ${CMAKE_BINARY_DIR}/gr-blocks/swig ) list(APPEND GR_TEST_TARGET_DEPS gnuradio-digital gnuradio-filter gnuradio-fft gnuradio-analog) diff --git a/gr-digital/python/digital_voice.py.real b/gr-digital/python/digital_voice.py.real new file mode 100644 index 0000000000..4a2ef7721f --- /dev/null +++ b/gr-digital/python/digital_voice.py.real @@ -0,0 +1,103 @@ +#!/usr/bin/env python +# +# Copyright 2005 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. +# + +""" +Digital voice Tx and Rx using GSM 13kbit vocoder and GMSK. + +Runs channel at 32kbit/sec. Currently uses fake channel coding, +but there's room for a rate 1/2 coder. +""" + +from gnuradio import gr, gru +from gnuradio import blocks +from gnuradio.blksimpl.gmsk import gmsk_mod, gmsk_demod + +from gnuradio.vocoder import gsm_full_rate + +# Size of gsm full rate speech encoder output packet in bytes + +GSM_FRAME_SIZE = 33 + +# Size of packet in bytes that we send to GMSK modulator: +# +# Target: 256kS/sec air rate. +# +# 256kS 1 sym 1 bit 1 byte 0.020 sec 80 bytes +# ---- * ----- * ----- * ------ * --------- = -------- +# sec 8 S 1 sym 8 bits frame frame +# +# gr_simple_framer add 10 bytes of overhead. + +AIR_FRAME_SIZE = 70 + + +class digital_voice_tx(gr.hier_block): + """ + Hierarchical block for digital voice tranmission. + + The input is 8kS/sec floating point audio in the range [-1,+1] + The output is 256kS/sec GMSK modulated complex baseband signal in the range [-1,+1]. + """ + def __init__(self, fg): + samples_per_symbol = 8 + symbol_rate = 32000 + bt = 0.3 # Gaussian filter bandwidth * symbol time + + src_scale = blocks.multiply_const_ff(32767) + f2s = blocks.float_to_short() + voice_coder = gsm_full_rate.encode_sp() + + channel_coder = gr.fake_channel_encoder_pp(GSM_FRAME_SIZE, AIR_FRAME_SIZE) + p2s = gr.parallel_to_serial(gr.sizeof_char, AIR_FRAME_SIZE) + + mod = gmsk_mod(fg, sps=samples_per_symbol, + symbol_rate=symbol_rate, bt=bt, + p_size=AIR_FRAME_SIZE) + + fg.connect(src_scale, f2s, voice_coder, channel_coder, p2s, mod) + gr.hier_block.__init__(self, fg, src_scale, mod) + + +class digital_voice_rx(gr.hier_block): + """ + Hierarchical block for digital voice reception. + + The input is 256kS/sec GMSK modulated complex baseband signal. + The output is 8kS/sec floating point audio in the range [-1,+1] + """ + def __init__(self, fg): + samples_per_symbol = 8 + symbol_rate = 32000 + + demod = gmsk_demod(fg, sps=samples_per_symbol, + symbol_rate=symbol_rate, + p_size=AIR_FRAME_SIZE) + + s2p = gr.serial_to_parallel(gr.sizeof_char, AIR_FRAME_SIZE) + channel_decoder = gr.fake_channel_decoder_pp(AIR_FRAME_SIZE, GSM_FRAME_SIZE) + + voice_decoder = gsm_full_rate.decode_ps() + s2f = blocks.short_to_float () + sink_scale = blocks.multiply_const_ff(1.0/32767.) + + fg.connect(demod, s2p, channel_decoder, voice_decoder, s2f, sink_scale) + gr.hier_block.__init__(self, fg, demod, sink_scale) diff --git a/gr-digital/python/gfsk.py b/gr-digital/python/gfsk.py index c69dd4d7d8..42d65d36ce 100644 --- a/gr-digital/python/gfsk.py +++ b/gr-digital/python/gfsk.py @@ -26,6 +26,7 @@ from gnuradio import gr from gnuradio import analog +from gnuradio import blocks import modulation_utils import digital_swig as digital from math import pi @@ -118,7 +119,7 @@ class gfsk_mod(gr.hier_block2): self.fmmod = frequency.frequency_modulator_fc(sensitivity) # small amount of output attenuation to prevent clipping USRP sink - self.amp = gr.multiply_const_cc(0.999) + self.amp = blocks.multiply_const_cc(0.999) if verbose: self._print_verbage() diff --git a/gr-digital/python/ofdm.py b/gr-digital/python/ofdm.py index 4113a552eb..5bbe111f31 100644 --- a/gr-digital/python/ofdm.py +++ b/gr-digital/python/ofdm.py @@ -22,6 +22,7 @@ import math from gnuradio import gr, fft +from gnuradio import blocks import digital_swig as digital import ofdm_packet_utils from ofdm_receiver import ofdm_receiver @@ -107,7 +108,7 @@ class ofdm_mod(gr.hier_block2): self.ifft = fft.fft_vcc(self._fft_length, False, win, True) self.cp_adder = digital.ofdm_cyclic_prefixer(self._fft_length, symbol_length) - self.scale = gr.multiply_const_cc(1.0 / math.sqrt(self._fft_length)) + self.scale = blocks.multiply_const_cc(1.0 / math.sqrt(self._fft_length)) self.connect((self._pkt_input, 0), (self.preambles, 0)) self.connect((self._pkt_input, 1), (self.preambles, 1)) diff --git a/gr-digital/python/ofdm_receiver.py b/gr-digital/python/ofdm_receiver.py index ace64a8089..c5725bab28 100644 --- a/gr-digital/python/ofdm_receiver.py +++ b/gr-digital/python/ofdm_receiver.py @@ -24,6 +24,7 @@ import math from numpy import fft from gnuradio import gr from gnuradio import analog +from gnuradio import blocks import digital_swig as digital from ofdm_sync_pn import ofdm_sync_pn @@ -108,7 +109,7 @@ class ofdm_receiver(gr.hier_block2): # for testing only; do not user over the air # remove filter and filter delay for this elif SYNC == "fixed": - self.chan_filt = gr.multiply_const_cc(1.0) + self.chan_filt = blocks.multiply_const_cc(1.0) nsymbols = 18 # enter the number of symbols per packet freq_offset = 0.0 # if you use a frequency offset, enter it here nco_sensitivity = -2.0/fft_length # correct for fine frequency @@ -121,7 +122,7 @@ class ofdm_receiver(gr.hier_block2): # Set up blocks self.nco = analog.frequency_modulator_fc(nco_sensitivity) # generate a signal proportional to frequency error of sync block - self.sigmix = gr.multiply_cc() + self.sigmix = blocks.multiply_cc() self.sampler = digital.ofdm_sampler(fft_length, fft_length+cp_length) self.fft_demod = gr.fft_vcc(fft_length, True, win, True) self.ofdm_frame_acq = digital.ofdm_frame_acquisition(occupied_tones, diff --git a/gr-digital/python/ofdm_sync_ml.py b/gr-digital/python/ofdm_sync_ml.py index f732fdf29a..885531f66a 100644 --- a/gr-digital/python/ofdm_sync_ml.py +++ b/gr-digital/python/ofdm_sync_ml.py @@ -28,6 +28,11 @@ try: except ImportError: import filter_swig as filter +try: + from gnuradio import blocks +except ImportError: + import blocks_swig as blocks + class ofdm_sync_ml(gr.hier_block2): def __init__(self, fft_length, cp_length, snr, kstime, logging): ''' Maximum Likelihood OFDM synchronizer: @@ -40,7 +45,7 @@ class ofdm_sync_ml(gr.hier_block2): gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature gr.io_signature2(2, 2, gr.sizeof_float, gr.sizeof_char)) # Output signature - self.input = gr.add_const_cc(0) + self.input = blocks.add_const_cc(0) SNR = 10.0**(snr/10.0) rho = SNR / (SNR + 1.0) @@ -59,7 +64,7 @@ class ofdm_sync_ml(gr.hier_block2): # magnitude squared blocks self.magsqrd1 = gr.complex_to_mag_squared() self.magsqrd2 = gr.complex_to_mag_squared() - self.adder = gr.add_ff() + self.adder = blocks.add_ff() moving_sum_taps = [rho/2 for i in range(cp_length)] self.moving_sum_filter = filter.fir_filter_fff(1,moving_sum_taps) @@ -72,8 +77,8 @@ class ofdm_sync_ml(gr.hier_block2): # Correlation from ML Sync - self.conjg = gr.conjugate_cc(); - self.mixer = gr.multiply_cc(); + self.conjg = blocks.conjugate_cc(); + self.mixer = blocks.multiply_cc(); movingsum2_taps = [1.0 for i in range(cp_length)] self.movingsum2 = filter.fir_filter_ccf(1,movingsum2_taps) @@ -87,12 +92,12 @@ class ofdm_sync_ml(gr.hier_block2): self.connect(self.movingsum2,self.angle) # ML Sync output arg, need to find maximum point of this - self.diff = gr.sub_ff() + self.diff = blocks.sub_ff() self.connect(self.c2mag,(self.diff,0)) self.connect(self.moving_sum_filter,(self.diff,1)) #ML measurements input to sampler block and detect - self.f2c = gr.float_to_complex() + self.f2c = blocks.float_to_complex() self.pk_detect = gr.peak_detector_fb(0.2, 0.25, 30, 0.0005) self.sample_and_hold = gr.sample_and_hold_ff() @@ -122,7 +127,7 @@ class ofdm_sync_ml(gr.hier_block2): kstime.reverse() self.kscorr = filter.fir_filter_ccc(1, kstime) self.corrmag = gr.complex_to_mag_squared() - self.div = gr.divide_ff() + self.div = blocks.divide_ff() # The output signature of the correlation has a few spikes because the rest of the # system uses the repeated preamble symbol. It needs to work that generically if @@ -131,9 +136,9 @@ class ofdm_sync_ml(gr.hier_block2): # identify the proper peak and remove other products in this cross-correlation self.threshold_factor = 0.1 self.slice = gr.threshold_ff(self.threshold_factor, self.threshold_factor, 0) - self.f2b = gr.float_to_char() - self.b2f = gr.char_to_float() - self.mul = gr.multiply_ff() + self.f2b = blocks.float_to_char() + self.b2f = blocks.char_to_float() + self.mul = blocks.multiply_ff() # Normalize the power of the corr output by the energy. This is not really needed # and could be removed for performance, but it makes for a cleaner signal. diff --git a/gr-digital/python/ofdm_sync_pn.py b/gr-digital/python/ofdm_sync_pn.py index 8307a8ee14..fb011bf252 100644 --- a/gr-digital/python/ofdm_sync_pn.py +++ b/gr-digital/python/ofdm_sync_pn.py @@ -29,6 +29,11 @@ try: except ImportError: import filter_swig as filter +try: + from gnuradio import blocks +except ImportError: + import blocks_swig as blocks + class ofdm_sync_pn(gr.hier_block2): def __init__(self, fft_length, cp_length, logging=False): """ @@ -42,7 +47,7 @@ class ofdm_sync_pn(gr.hier_block2): gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature gr.io_signature2(2, 2, gr.sizeof_float, gr.sizeof_char)) # Output signature - self.input = gr.add_const_cc(0) + self.input = blocks.add_const_cc(0) # PN Sync @@ -50,8 +55,8 @@ class ofdm_sync_pn(gr.hier_block2): self.delay = gr.delay(gr.sizeof_gr_complex, fft_length/2) # Correlation from ML Sync - self.conjg = gr.conjugate_cc(); - self.corr = gr.multiply_cc(); + self.conjg = blocks.conjugate_cc(); + self.corr = blocks.multiply_cc(); # Create a moving sum filter for the corr output if 1: @@ -70,8 +75,8 @@ class ofdm_sync_pn(gr.hier_block2): else: self.inputmovingsum = filter.fft_filter_fff(1,movingsum2_taps) - self.square = gr.multiply_ff() - self.normalize = gr.divide_ff() + self.square = blocks.multiply_ff() + self.normalize = blocks.divide_ff() # Get magnitude (peaks) and angle (phase/freq error) self.c2mag = gr.complex_to_mag_squared() @@ -80,7 +85,7 @@ class ofdm_sync_pn(gr.hier_block2): self.sample_and_hold = gr.sample_and_hold_ff() #ML measurements input to sampler block and detect - self.sub1 = gr.add_const_ff(-1) + self.sub1 = blocks.add_const_ff(-1) self.pk_detect = gr.peak_detector_fb(0.20, 0.20, 30, 0.001) #self.pk_detect = gr.peak_detector2_fb(9) diff --git a/gr-digital/python/ofdm_sync_pnac.py b/gr-digital/python/ofdm_sync_pnac.py index a5edc272a8..9b0302ffbb 100644 --- a/gr-digital/python/ofdm_sync_pnac.py +++ b/gr-digital/python/ofdm_sync_pnac.py @@ -29,6 +29,11 @@ try: except ImportError: import filter_swig as filter +try: + from gnuradio import blocks +except ImportError: + import blocks_swig as blocks + class ofdm_sync_pnac(gr.hier_block2): def __init__(self, fft_length, cp_length, kstime, logging=False): """ @@ -55,7 +60,7 @@ class ofdm_sync_pnac(gr.hier_block2): gr.io_signature2(2, 2, gr.sizeof_float, gr.sizeof_char)) # Output signature - self.input = gr.add_const_cc(0) + self.input = blocks.add_const_cc(0) symbol_length = fft_length + cp_length @@ -70,8 +75,8 @@ class ofdm_sync_pnac(gr.hier_block2): self.delay = gr.delay(gr.sizeof_gr_complex, fft_length/2) # Correlation from ML Sync - self.conjg = gr.conjugate_cc(); - self.corr = gr.multiply_cc(); + self.conjg = blocks.conjugate_cc(); + self.corr = blocks.multiply_cc(); # Create a moving sum filter for the input self.mag = gr.complex_to_mag_squared() @@ -81,13 +86,13 @@ class ofdm_sync_pnac(gr.hier_block2): # Get magnitude (peaks) and angle (phase/freq error) self.c2mag = gr.complex_to_mag_squared() self.angle = gr.complex_to_arg() - self.compare = gr.sub_ff() + self.compare = blocks.sub_ff() self.sample_and_hold = gr.sample_and_hold_ff() #ML measurements input to sampler block and detect self.threshold = gr.threshold_ff(0,0,0) # threshold detection might need to be tweaked - self.peaks = gr.float_to_char() + self.peaks = blocksx.float_to_char() self.connect(self, self.input) diff --git a/gr-digital/python/qa_constellation.py b/gr-digital/python/qa_constellation.py index 9d6f4c6427..3c109cfe82 100755 --- a/gr-digital/python/qa_constellation.py +++ b/gr-digital/python/qa_constellation.py @@ -26,6 +26,7 @@ from cmath import exp, pi, log from gnuradio import gr, gr_unittest from utils import mod_codes import digital_swig as digital +import blocks_swig as blocks # import from local folder import psk @@ -192,7 +193,7 @@ class mod_demod(gr.hier_block2): # CHANNEL # Channel just consists of a rotation to check differential coding. if rotation is not None: - self.blocks.append(gr.multiply_const_cc(rotation)) + self.blocks.append(blocks.multiply_const_cc(rotation)) # RX # Convert the constellation symbols back to binary values. diff --git a/gr-digital/python/qa_constellation_receiver.py b/gr-digital/python/qa_constellation_receiver.py index 6da3fc1066..254a8240d4 100755 --- a/gr-digital/python/qa_constellation_receiver.py +++ b/gr-digital/python/qa_constellation_receiver.py @@ -27,6 +27,7 @@ from utils import mod_codes, alignment import packet_utils import filter_swig as filter import analog_swig as analog +import blocks_swig as blocks from generic_mod_demod import generic_mod, generic_demod from qa_constellation import tested_constellations, twod_constell @@ -60,12 +61,12 @@ class channel_model(gr.hier_block2): timing_offset = filter.fractional_interpolator_cc(0, timing) - noise_adder = gr.add_cc() + noise_adder = blocks.add_cc() noise = analog.noise_source_c(analog.GR_GAUSSIAN, noise_voltage, 0) freq_offset = analog.sig_source_c(1, analog.GR_SIN_WAVE, freq, 1.0, 0.0) - mixer_offset = gr.multiply_cc(); + mixer_offset = blocks.multiply_cc(); self.connect(self, timing_offset) self.connect(timing_offset, (mixer_offset,0)) diff --git a/gr-digital/python/qa_fll_band_edge.py b/gr-digital/python/qa_fll_band_edge.py index 1e699bbdd4..0f6bad984e 100755 --- a/gr-digital/python/qa_fll_band_edge.py +++ b/gr-digital/python/qa_fll_band_edge.py @@ -23,6 +23,7 @@ from gnuradio import gr, gr_unittest import digital_swig as digital import filter_swig as filter +import blocks_swig as blocks import analog_swig as analog import random, math @@ -55,7 +56,7 @@ class test_fll_band_edge_cc(gr_unittest.TestCase): # Mix symbols with a complex sinusoid to spin them self.nco = analog.sig_source_c(1, analog.GR_SIN_WAVE, foffset, 1) - self.mix = gr.multiply_cc() + self.mix = blocks.multiply_cc() # FLL will despin the symbols to an arbitrary phase self.fll = digital.fll_band_edge_cc(sps, rolloff, ntaps, bw) diff --git a/gr-digital/python/qa_ofdm_insert_preamble.py b/gr-digital/python/qa_ofdm_insert_preamble.py index d084796644..60902edc14 100755 --- a/gr-digital/python/qa_ofdm_insert_preamble.py +++ b/gr-digital/python/qa_ofdm_insert_preamble.py @@ -23,6 +23,7 @@ from gnuradio import gr, gr_unittest from pprint import pprint import digital_swig as digital +import blocks_swig as blocks class test_ofdm_insert_preamble(gr_unittest.TestCase): @@ -37,13 +38,13 @@ class test_ofdm_insert_preamble(gr_unittest.TestCase): src0 = gr.vector_source_c(v0) src1 = gr.vector_source_b(v1) - s2v = gr.stream_to_vector(gr.sizeof_gr_complex, fft_length) + s2v = blocks.stream_to_vector(gr.sizeof_gr_complex, fft_length) # print "len(v) = %d" % (len(v)) op = digital.ofdm_insert_preamble(fft_length, preamble) - v2s = gr.vector_to_stream(gr.sizeof_gr_complex, fft_length) + v2s = blocks.vector_to_stream(gr.sizeof_gr_complex, fft_length) dst0 = gr.vector_sink_c() dst1 = gr.vector_sink_b() diff --git a/gr-digital/python/qa_pn_correlator_cc.py b/gr-digital/python/qa_pn_correlator_cc.py index 4e81bf6662..53633d04fa 100755 --- a/gr-digital/python/qa_pn_correlator_cc.py +++ b/gr-digital/python/qa_pn_correlator_cc.py @@ -22,6 +22,7 @@ from gnuradio import gr, gr_unittest import digital_swig as digital +import blocks_swig as blocks class test_pn_correlator_cc(gr_unittest.TestCase): @@ -39,7 +40,7 @@ class test_pn_correlator_cc(gr_unittest.TestCase): length = 2**degree-1 src = digital.glfsr_source_f(degree) head = gr.head(gr.sizeof_float, length*length) - f2c = gr.float_to_complex() + f2c = blocks.float_to_complex() corr = digital.pn_correlator_cc(degree) dst = gr.vector_sink_c() self.tb.connect(src, head, f2c, corr, dst) |