diff options
Diffstat (limited to 'gr-analog')
104 files changed, 1569 insertions, 2111 deletions
diff --git a/gr-analog/examples/fmtest.py b/gr-analog/examples/fmtest.py index 7ed08cafbe..04218a4472 100755..100644 --- a/gr-analog/examples/fmtest.py +++ b/gr-analog/examples/fmtest.py @@ -20,6 +20,9 @@ # Boston, MA 02110-1301, USA. # +from __future__ import print_function +from __future__ import division +from __future__ import unicode_literals from gnuradio import gr from gnuradio import blocks from gnuradio import filter @@ -31,13 +34,13 @@ try: import scipy from scipy import fftpack except ImportError: - print "Error: Program requires scipy (see: www.scipy.org)." + print("Error: Program requires scipy (see: www.scipy.org).") sys.exit(1) try: import pylab except ImportError: - print "Error: Program requires matplotlib (see: matplotlib.sourceforge.net)." + print("Error: Program requires matplotlib (see: matplotlib.sourceforge.net).") sys.exit(1) @@ -80,7 +83,7 @@ class fmtest(gr.top_block): # Create a signal source and frequency modulate it self.sum = blocks.add_cc() - for n in xrange(self._N): + for n in range(self._N): sig = analog.sig_source_f(self._audio_rate, analog.GR_SIN_WAVE, freq[n], 0.5) fm = fmtx(f_lo[n], self._audio_rate, self._if_rate) self.connect(sig, fm) @@ -95,17 +98,17 @@ class fmtest(gr.top_block): # Design the channlizer self._M = 10 - bw = chspacing/2.0 - t_bw = chspacing/10.0 + bw = chspacing / 2.0 + t_bw = chspacing / 10.0 self._chan_rate = self._if_rate / self._M self._taps = filter.firdes.low_pass_2(1, self._if_rate, bw, t_bw, attenuation_dB=100, window=filter.firdes.WIN_BLACKMAN_hARRIS) - tpc = math.ceil(float(len(self._taps)) / float(self._M)) + tpc = math.ceil(float(len(self._taps)) / float(self._M)) - print "Number of taps: ", len(self._taps) - print "Number of channels: ", self._M - print "Taps per channel: ", tpc + print("Number of taps: ", len(self._taps)) + print("Number of channels: ", self._M) + print("Taps per channel: ", tpc) self.pfb = filter.pfb.channelizer_ccf(self._M, self._taps) @@ -115,7 +118,7 @@ class fmtest(gr.top_block): self.fmdet = list() self.squelch = list() self.snks = list() - for i in xrange(self._M): + for i in range(self._M): self.fmdet.append(analog.nbfm_rx(self._audio_rate, self._chan_rate)) self.squelch.append(analog.standard_squelch(self._audio_rate*10)) self.snks.append(blocks.vector_sink_f()) @@ -152,11 +155,11 @@ def main(): d = fm.snk_tx.data()[Ns:Ns+Ne] sp1_f = fig1.add_subplot(2, 1, 1) - X,freq = sp1_f.psd(d, NFFT=fftlen, noverlap=fftlen/4, Fs=fs, + X,freq = sp1_f.psd(d, NFFT=fftlen, noverlap=fftlen / 4, Fs=fs, window = lambda d: d*winfunc(fftlen), visible=False) X_in = 10.0*scipy.log10(abs(fftpack.fftshift(X))) - f_in = scipy.arange(-fs/2.0, fs/2.0, fs/float(X_in.size)) + f_in = scipy.arange(-fs / 2.0, fs / 2.0, fs / float(X_in.size)) p1_f = sp1_f.plot(f_in, X_in, "b") sp1_f.set_xlim([min(f_in), max(f_in)+1]) sp1_f.set_ylim([-120.0, 20.0]) @@ -165,7 +168,7 @@ def main(): sp1_f.set_xlabel("Frequency (Hz)") sp1_f.set_ylabel("Power (dBW)") - Ts = 1.0/fs + Ts = 1.0 / fs Tmax = len(d)*Ts t_in = scipy.arange(0, Tmax, Ts) @@ -184,20 +187,20 @@ def main(): # Plot each of the channels outputs. Frequencies on Figure 2 and # time signals on Figure 3 fs_o = fm._audio_rate - for i in xrange(len(fm.snks)): + for i in range(len(fm.snks)): # remove issues with the transients at the beginning # also remove some corruption at the end of the stream # this is a bug, probably due to the corner cases d = fm.snks[i].data()[Ns:Ne] sp2_f = fig2.add_subplot(Nrows, Ncols, 1+i) - X,freq = sp2_f.psd(d, NFFT=fftlen, noverlap=fftlen/4, Fs=fs_o, + X,freq = sp2_f.psd(d, NFFT=fftlen, noverlap=fftlen / 4, Fs=fs_o, window = lambda d: d*winfunc(fftlen), visible=False) #X_o = 10.0*scipy.log10(abs(fftpack.fftshift(X))) X_o = 10.0*scipy.log10(abs(X)) #f_o = scipy.arange(-fs_o/2.0, fs_o/2.0, fs_o/float(X_o.size)) - f_o = scipy.arange(0, fs_o/2.0, fs_o/2.0/float(X_o.size)) + f_o = scipy.arange(0, fs_o / 2.0, fs_o/2.0/float(X_o.size)) p2_f = sp2_f.plot(f_o, X_o, "b") sp2_f.set_xlim([min(f_o), max(f_o)+0.1]) sp2_f.set_ylim([-120.0, 20.0]) @@ -208,7 +211,7 @@ def main(): sp2_f.set_ylabel("Power (dBW)") - Ts = 1.0/fs_o + Ts = 1.0 / fs_o Tmax = len(d)*Ts t_o = scipy.arange(0, Tmax, Ts) diff --git a/gr-analog/examples/tags/uhd_burst_detector.py b/gr-analog/examples/tags/uhd_burst_detector.py index 5aa80b2549..d3d221a45c 100755..100644 --- a/gr-analog/examples/tags/uhd_burst_detector.py +++ b/gr-analog/examples/tags/uhd_burst_detector.py @@ -20,6 +20,7 @@ # Boston, MA 02110-1301, USA. # +from __future__ import unicode_literals from gnuradio import eng_notation from gnuradio import gr from gnuradio import filter, analog, blocks diff --git a/gr-analog/grc/CMakeLists.txt b/gr-analog/grc/CMakeLists.txt index 1251af5b83..35456cee31 100644 --- a/gr-analog/grc/CMakeLists.txt +++ b/gr-analog/grc/CMakeLists.txt @@ -17,5 +17,5 @@ # the Free Software Foundation, Inc., 51 Franklin Street, # Boston, MA 02110-1301, USA. -file(GLOB xml_files "*.xml") -install(FILES ${xml_files} DESTINATION ${GRC_BLOCKS_DIR}) +file(GLOB yml_files "*.yml") +install(FILES ${yml_files} DESTINATION ${GRC_BLOCKS_DIR}) diff --git a/gr-analog/grc/analog.tree.yml b/gr-analog/grc/analog.tree.yml new file mode 100644 index 0000000000..44a88bd5c5 --- /dev/null +++ b/gr-analog/grc/analog.tree.yml @@ -0,0 +1,39 @@ +'[Core]': +- Level Controllers: + - analog_agc_xx + - analog_agc2_xx + - analog_agc3_xx + - analog_feedforward_agc_cc + - analog_ctcss_squelch_ff + - analog_pwr_squelch_xx + - analog_simple_squelch_cc + - analog_standard_squelch + - analog_rail_ff +- Modulators: + - analog_frequency_modulator_fc + - analog_phase_modulator_fc + - analog_quadrature_demod_cf + - analog_nbfm_tx + - analog_nbfm_rx + - analog_wfm_tx + - analog_wfm_rcv + - analog_wfm_rcv_pll + - analog_am_demod_cf + - analog_fm_demod_cf + - analog_fm_deemph + - analog_fm_preemph +- Waveform Generators: + - analog_sig_source_x + - analog_const_source_x + - analog_noise_source_x + - analog_fastnoise_source_x + - analog_random_source_x + - analog_random_uniform_source_x +- Synchronizers: + - analog_pll_carriertracking_cc + - analog_pll_freqdet_cf + - analog_pll_refout_cc +- Peak Detectors: + - analog_dpll_bb +- Measurement Tools: + - analog_probe_avg_mag_sqrd_x diff --git a/gr-analog/grc/analog_agc2_xx.block.yml b/gr-analog/grc/analog_agc2_xx.block.yml new file mode 100644 index 0000000000..93990b5c3b --- /dev/null +++ b/gr-analog/grc/analog_agc2_xx.block.yml @@ -0,0 +1,53 @@ +id: analog_agc2_xx +label: AGC2 + +parameters: +- id: type + label: Type + dtype: enum + options: [complex, float] + option_attributes: + fcn: [cc, ff] + hide: part +- id: attack_rate + label: Attack Rate + dtype: real + default: 1e-1 +- id: decay_rate + label: Decay Rate + dtype: real + default: 1e-2 +- id: reference + label: Reference + dtype: real + default: '1.0' +- id: gain + label: Gain + dtype: real + default: '1.0' +- id: max_gain + label: Max Gain + dtype: real + default: '65536' + +inputs: +- domain: stream + dtype: ${ type } + +outputs: +- domain: stream + dtype: ${ type } + +templates: + imports: from gnuradio import analog + make: |- + analog.agc2_${type.fcn}(${attack_rate}, ${decay_rate}, ${reference}, ${gain}) + self.${id}.set_max_gain(${max_gain}) + callbacks: + - set_attack_rate(${attack_rate}) + - set_decay_rate(${decay_rate}) + - set_reference(${reference}) + - set_gain(${gain}) + - set_max_gain(${max_gain}) + +file_format: 1 diff --git a/gr-analog/grc/analog_agc2_xx.xml b/gr-analog/grc/analog_agc2_xx.xml deleted file mode 100644 index cafd6a09b5..0000000000 --- a/gr-analog/grc/analog_agc2_xx.xml +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##AGC2 -################################################### - --> -<block> - <name>AGC2</name> - <key>analog_agc2_xx</key> - <import>from gnuradio import analog</import> - <make>analog.agc2_$(type.fcn)($attack_rate, $decay_rate, $reference, $gain) -self.$(id).set_max_gain($max_gain)</make> - <callback>set_attack_rate($attack_rate)</callback> - <callback>set_decay_rate($decay_rate)</callback> - <callback>set_reference($reference)</callback> - <callback>set_gain($gain)</callback> - <callback>set_max_gain($max_gain)</callback> - <param> - <name>Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>complex</key> - <opt>fcn:cc</opt> - </option> - <option> - <name>Float</name> - <key>float</key> - <opt>fcn:ff</opt> - </option> - </param> - <param> - <name>Attack Rate</name> - <key>attack_rate</key> - <value>1e-1</value> - <type>real</type> - </param> - <param> - <name>Decay Rate</name> - <key>decay_rate</key> - <value>1e-2</value> - <type>real</type> - </param> - <param> - <name>Reference</name> - <key>reference</key> - <value>1.0</value> - <type>real</type> - </param> - <param> - <name>Gain</name> - <key>gain</key> - <value>1.0</value> - <type>real</type> - </param> - <param> - <name>Max Gain</name> - <key>max_gain</key> - <value>65536</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>$type</type> - </sink> - <source> - <name>out</name> - <type>$type</type> - </source> -</block> diff --git a/gr-analog/grc/analog_agc3_xx.block.yml b/gr-analog/grc/analog_agc3_xx.block.yml new file mode 100644 index 0000000000..17a03f6771 --- /dev/null +++ b/gr-analog/grc/analog_agc3_xx.block.yml @@ -0,0 +1,57 @@ +id: analog_agc3_xx +label: AGC3 + +parameters: +- id: type + label: Type + dtype: enum + options: [complex] + option_attributes: + fcn: [cc] + hide: part +- id: attack_rate + label: Attack Rate + dtype: real + default: 1e-3 +- id: decay_rate + label: Decay Rate + dtype: real + default: 1e-4 +- id: reference + label: Reference + dtype: real + default: '1.0' +- id: gain + label: Gain + dtype: real + default: '1.0' +- id: max_gain + label: Max Gain + dtype: real + default: '65536' +- id: iir_update_decim + label: IIR Update Decimation + dtype: real + default: '1' + +inputs: +- domain: stream + dtype: ${ type } + +outputs: +- domain: stream + dtype: ${ type } + +templates: + imports: from gnuradio import analog + make: |- + analog.agc3_${type.fcn}(${attack_rate}, ${decay_rate}, ${reference}, ${gain}, ${iir_update_decim}) + self.${id}.set_max_gain(${max_gain}) + callbacks: + - set_attack_rate(${attack_rate}) + - set_decay_rate(${decay_rate}) + - set_reference(${reference}) + - set_gain(${gain}) + - set_max_gain(${max_gain}) + +file_format: 1 diff --git a/gr-analog/grc/analog_agc3_xx.xml b/gr-analog/grc/analog_agc3_xx.xml deleted file mode 100644 index 1e6b9fd382..0000000000 --- a/gr-analog/grc/analog_agc3_xx.xml +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##AGC3 -################################################### - --> -<block> - <name>AGC3</name> - <key>analog_agc3_xx</key> - <import>from gnuradio import analog</import> - <make>analog.agc3_$(type.fcn)($attack_rate, $decay_rate, $reference, $gain, $iir_update_decim) -self.$(id).set_max_gain($max_gain)</make> - <callback>set_attack_rate($attack_rate)</callback> - <callback>set_decay_rate($decay_rate)</callback> - <callback>set_reference($reference)</callback> - <callback>set_gain($gain)</callback> - <callback>set_max_gain($max_gain)</callback> - <param> - <name>Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>complex</key> - <opt>fcn:cc</opt> - </option> -<!-- <option> - <name>Float</name> - <key>float</key> - <opt>fcn:ff</opt> - </option> --> - </param> - <param> - <name>Attack Rate</name> - <key>attack_rate</key> - <value>1e-3</value> - <type>real</type> - </param> - <param> - <name>Decay Rate</name> - <key>decay_rate</key> - <value>1e-4</value> - <type>real</type> - </param> - <param> - <name>Reference</name> - <key>reference</key> - <value>1.0</value> - <type>real</type> - </param> - <param> - <name>Gain</name> - <key>gain</key> - <value>1.0</value> - <type>real</type> - </param> - <param> - <name>Max Gain</name> - <key>max_gain</key> - <value>65536</value> - <type>real</type> - </param> - <param> - <name>IIR Update Decimation</name> - <key>iir_update_decim</key> - <value>1</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>$type</type> - </sink> - <source> - <name>out</name> - <type>$type</type> - </source> -</block> diff --git a/gr-analog/grc/analog_agc_xx.block.yml b/gr-analog/grc/analog_agc_xx.block.yml new file mode 100644 index 0000000000..52ef26f79f --- /dev/null +++ b/gr-analog/grc/analog_agc_xx.block.yml @@ -0,0 +1,48 @@ +id: analog_agc_xx +label: AGC + +parameters: +- id: type + label: Type + dtype: enum + options: [complex, float] + option_attributes: + fcn: [cc, ff] + hide: part +- id: rate + label: Rate + dtype: real + default: 1e-4 +- id: reference + label: Reference + dtype: real + default: '1.0' +- id: gain + label: Gain + dtype: real + default: '1.0' +- id: max_gain + label: Max Gain + dtype: real + default: '65536' + +inputs: +- domain: stream + dtype: ${ type } + +outputs: +- domain: stream + dtype: ${ type } + +templates: + imports: from gnuradio import analog + make: |- + analog.agc_${type.fcn}(${rate}, ${reference}, ${gain}) + self.${id}.set_max_gain(${max_gain}) + callbacks: + - set_rate(${rate}) + - set_reference(${reference}) + - set_gain(${gain}) + - set_max_gain(${max_gain}) + +file_format: 1 diff --git a/gr-analog/grc/analog_agc_xx.xml b/gr-analog/grc/analog_agc_xx.xml deleted file mode 100644 index 085ded3d8c..0000000000 --- a/gr-analog/grc/analog_agc_xx.xml +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##AGC -################################################### - --> -<block> - <name>AGC</name> - <key>analog_agc_xx</key> - <import>from gnuradio import analog</import> - <make>analog.agc_$(type.fcn)($rate, $reference, $gain) -self.$(id).set_max_gain($max_gain)</make> - <callback>set_rate($rate)</callback> - <callback>set_reference($reference)</callback> - <callback>set_gain($gain)</callback> - <callback>set_max_gain($max_gain)</callback> - <param> - <name>Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>complex</key> - <opt>fcn:cc</opt> - </option> - <option> - <name>Float</name> - <key>float</key> - <opt>fcn:ff</opt> - </option> - </param> - <param> - <name>Rate</name> - <key>rate</key> - <value>1e-4</value> - <type>real</type> - </param> - <param> - <name>Reference</name> - <key>reference</key> - <value>1.0</value> - <type>real</type> - </param> - <param> - <name>Gain</name> - <key>gain</key> - <value>1.0</value> - <type>real</type> - </param> - <param> - <name>Max Gain</name> - <key>max_gain</key> - <value>65536</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>$type</type> - </sink> - <source> - <name>out</name> - <type>$type</type> - </source> -</block> diff --git a/gr-analog/grc/analog_am_demod_cf.block.yml b/gr-analog/grc/analog_am_demod_cf.block.yml new file mode 100644 index 0000000000..8bc6cc1c31 --- /dev/null +++ b/gr-analog/grc/analog_am_demod_cf.block.yml @@ -0,0 +1,33 @@ +id: analog_am_demod_cf +label: AM Demod + +parameters: +- id: chan_rate + label: Channel Rate + dtype: real +- id: audio_decim + label: Audio Decimation + dtype: int +- id: audio_pass + label: Audio Pass + dtype: real + default: '5000' +- id: audio_stop + label: Audio Stop + dtype: real + default: '5500' + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: "analog.am_demod_cf(\n\tchannel_rate=${chan_rate},\n\taudio_decim=${audio_decim},\n\ + \taudio_pass=${audio_pass},\n\taudio_stop=${audio_stop},\n)" + +file_format: 1 diff --git a/gr-analog/grc/analog_am_demod_cf.xml b/gr-analog/grc/analog_am_demod_cf.xml deleted file mode 100644 index b066882bda..0000000000 --- a/gr-analog/grc/analog_am_demod_cf.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##AM Demod -################################################### - --> -<block> - <name>AM Demod</name> - <key>analog_am_demod_cf</key> - <import>from gnuradio import analog</import> - <make>analog.am_demod_cf( - channel_rate=$chan_rate, - audio_decim=$audio_decim, - audio_pass=$audio_pass, - audio_stop=$audio_stop, -)</make> - <param> - <name>Channel Rate</name> - <key>chan_rate</key> - <type>real</type> - </param> - <param> - <name>Audio Decimation</name> - <key>audio_decim</key> - <type>int</type> - </param> - <param> - <name>Audio Pass</name> - <key>audio_pass</key> - <value>5000</value> - <type>real</type> - </param> - <param> - <name>Audio Stop</name> - <key>audio_stop</key> - <value>5500</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_block_tree.xml b/gr-analog/grc/analog_block_tree.xml deleted file mode 100644 index 7337c34c3e..0000000000 --- a/gr-analog/grc/analog_block_tree.xml +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0"?> - -<!-- - 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. ---> - -<!-- -################################################### -##Block Tree for GR Analog blocks. -################################################### - --> -<cat> - <name>[Core]</name> - <cat> - <name>Level Controllers</name> - <block>analog_agc_xx</block> - <block>analog_agc2_xx</block> - <block>analog_agc3_xx</block> - <block>analog_feedforward_agc_cc</block> - <block>analog_ctcss_squelch_ff</block> - <block>analog_pwr_squelch_xx</block> - <block>analog_simple_squelch_cc</block> - <block>analog_standard_squelch</block> - <block>analog_rail_ff</block> - </cat> - <cat> - <name>Modulators</name> - <block>analog_frequency_modulator_fc</block> - <block>analog_phase_modulator_fc</block> - <block>analog_quadrature_demod_cf</block> - <block>analog_nbfm_tx</block> - <block>analog_nbfm_rx</block> - <block>analog_wfm_tx</block> - <block>analog_wfm_rcv</block> - <block>analog_wfm_rcv_pll</block> - <block>analog_am_demod_cf</block> - <block>analog_fm_demod_cf</block> - <block>analog_fm_deemph</block> - <block>analog_fm_preemph</block> - </cat> - <cat> - <name>Waveform Generators</name> - <block>analog_sig_source_x</block> - <block>analog_const_source_x</block> - <block>analog_noise_source_x</block> - <block>analog_fastnoise_source_x</block> - <block>analog_random_source_x</block> - <block>analog_random_uniform_source_x</block> - </cat> - <cat> - <name>Synchronizers</name> - <block>analog_pll_carriertracking_cc</block> - <block>analog_pll_freqdet_cf</block> - <block>analog_pll_refout_cc</block> - </cat> - <cat> - <name>Peak Detectors</name> - <block>analog_dpll_bb</block> - </cat> - <cat> - <name>Measurement Tools</name> - <block>analog_probe_avg_mag_sqrd_x</block> - </cat> -</cat> diff --git a/gr-analog/grc/analog_const_source_x.block.yml b/gr-analog/grc/analog_const_source_x.block.yml new file mode 100644 index 0000000000..ac676b7ac4 --- /dev/null +++ b/gr-analog/grc/analog_const_source_x.block.yml @@ -0,0 +1,28 @@ +id: analog_const_source_x +label: Constant Source + +parameters: +- id: type + label: Output Type + dtype: enum + options: [complex, float, int, short] + option_attributes: + const_type: [complex, real, int, int] + fcn: [c, f, i, s] + hide: part +- id: const + label: Constant + dtype: ${ type.const_type } + default: '0' + +outputs: +- domain: stream + dtype: ${ type } + +templates: + imports: from gnuradio import analog + make: analog.sig_source_${type.fcn}(0, analog.GR_CONST_WAVE, 0, 0, ${const}) + callbacks: + - set_offset(${const}) + +file_format: 1 diff --git a/gr-analog/grc/analog_const_source_x.xml b/gr-analog/grc/analog_const_source_x.xml deleted file mode 100644 index de8c306264..0000000000 --- a/gr-analog/grc/analog_const_source_x.xml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Constant Source: Custom wrapper -################################################### - --> -<block> - <name>Constant Source</name> - <key>analog_const_source_x</key> - <import>from gnuradio import analog</import> - <make>analog.sig_source_$(type.fcn)(0, analog.GR_CONST_WAVE, 0, 0, $const)</make> - <callback>set_offset($const)</callback> - <param> - <name>Output Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>complex</key> - <opt>fcn:c</opt> - <opt>const_type:complex</opt> - </option> - <option> - <name>Float</name> - <key>float</key> - <opt>fcn:f</opt> - <opt>const_type:real</opt> - </option> - <option> - <name>Int</name> - <key>int</key> - <opt>fcn:i</opt> - <opt>const_type:int</opt> - </option> - <option> - <name>Short</name> - <key>short</key> - <opt>fcn:s</opt> - <opt>const_type:int</opt> - </option> - </param> - <param> - <name>Constant</name> - <key>const</key> - <value>0</value> - <type>$type.const_type</type> - </param> - <source> - <name>out</name> - <type>$type</type> - </source> -</block> diff --git a/gr-analog/grc/analog_cpfsk_bc.block.yml b/gr-analog/grc/analog_cpfsk_bc.block.yml new file mode 100644 index 0000000000..c9ccbaac27 --- /dev/null +++ b/gr-analog/grc/analog_cpfsk_bc.block.yml @@ -0,0 +1,31 @@ +id: analog_cpfsk_bc +label: CPFSK +category: '[Core]/Deprecated' + +parameters: +- id: k + label: K + dtype: real +- id: amplitude + label: Amplitude + dtype: real +- id: samples_per_symbol + label: Samples/Symbol + dtype: int + default: '2' + +inputs: +- domain: stream + dtype: byte + +outputs: +- domain: stream + dtype: complex + +templates: + imports: from gnuradio import analog + make: analog.cpfsk_bc(${k}, ${amplitude}, ${samples_per_symbol}) + callbacks: + - set_amplitude(${amplitude}) + +file_format: 1 diff --git a/gr-analog/grc/analog_cpfsk_bc.xml b/gr-analog/grc/analog_cpfsk_bc.xml deleted file mode 100644 index 5108ff61f9..0000000000 --- a/gr-analog/grc/analog_cpfsk_bc.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##CPFSK -################################################### - --> -<block> - <name>CPFSK</name> - <key>analog_cpfsk_bc</key> - <category>[Core]/Deprecated</category> - <import>from gnuradio import analog</import> - <make>analog.cpfsk_bc($k, $amplitude, $samples_per_symbol)</make> - <callback>set_amplitude($amplitude)</callback> - <param> - <name>K</name> - <key>k</key> - <type>real</type> - </param> - <param> - <name>Amplitude</name> - <key>amplitude</key> - <type>real</type> - </param> - <param> - <name>Samples/Symbol</name> - <key>samples_per_symbol</key> - <value>2</value> - <type>int</type> - </param> - <sink> - <name>in</name> - <type>byte</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> -</block> diff --git a/gr-analog/grc/analog_ctcss_squelch_ff.block.yml b/gr-analog/grc/analog_ctcss_squelch_ff.block.yml new file mode 100644 index 0000000000..a3dd89f1f6 --- /dev/null +++ b/gr-analog/grc/analog_ctcss_squelch_ff.block.yml @@ -0,0 +1,45 @@ +id: analog_ctcss_squelch_ff +label: CTCSS Squelch + +parameters: +- id: rate + label: Sampling Rate (Hz) + dtype: real + default: samp_rate +- id: freq + label: Tone Frequency + dtype: real + default: '100.0' +- id: level + label: Level + dtype: real + default: '0.01' +- id: len + label: Length + dtype: int + default: '0' +- id: ramp + label: Ramp + dtype: int + default: '0' +- id: gate + label: Gate + dtype: bool + default: 'False' + +inputs: +- domain: stream + dtype: float + +outputs: +- domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: analog.ctcss_squelch_ff(${rate}, ${freq}, ${level}, ${len}, ${ramp}, ${gate}) + callbacks: + - set_level(${level}) + - set_frequency(${freq}) + +file_format: 1 diff --git a/gr-analog/grc/analog_ctcss_squelch_ff.xml b/gr-analog/grc/analog_ctcss_squelch_ff.xml deleted file mode 100644 index 7a2248aa7e..0000000000 --- a/gr-analog/grc/analog_ctcss_squelch_ff.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0"?> -<!-- -# -# 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. ---> - -<!-- -################################################### -##CTCSS Squelch -################################################### - --> -<block> - <name>CTCSS Squelch</name> - <key>analog_ctcss_squelch_ff</key> - <import>from gnuradio import analog</import> - <make>analog.ctcss_squelch_ff($rate, $freq, $level, $len, $ramp, $gate)</make> - <callback>set_level($level)</callback> - <callback>set_frequency($freq)</callback> - <param> - <name>Sampling Rate (Hz)</name> - <key>rate</key> - <value>samp_rate</value> - <type>real</type> - </param> - <param> - <name>Tone Frequency</name> - <key>freq</key> - <value>100.0</value> - <type>real</type> - </param> - <param> - <name>Level</name> - <key>level</key> - <value>0.01</value> - <type>real</type> - </param> - <param> - <name>Length</name> - <key>len</key> - <value>0</value> - <type>int</type> - </param> - <param> - <name>Ramp</name> - <key>ramp</key> - <value>0</value> - <type>int</type> - </param> - <param> - <name>Gate</name> - <key>gate</key> - <value>False</value> - <type>bool</type> - </param> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_dpll_bb.block.yml b/gr-analog/grc/analog_dpll_bb.block.yml new file mode 100644 index 0000000000..289f3a283d --- /dev/null +++ b/gr-analog/grc/analog_dpll_bb.block.yml @@ -0,0 +1,26 @@ +id: analog_dpll_bb +label: Detect Peak + +parameters: +- id: period + label: Period + dtype: real +- id: gain + label: Gain + dtype: real + +inputs: +- domain: stream + dtype: byte + +outputs: +- domain: stream + dtype: byte + +templates: + imports: from gnuradio import analog + make: analog.dpll_bb(${period}, ${gain}) + callbacks: + - set_gain(${gain}) + +file_format: 1 diff --git a/gr-analog/grc/analog_dpll_bb.xml b/gr-analog/grc/analog_dpll_bb.xml deleted file mode 100644 index 65a489414d..0000000000 --- a/gr-analog/grc/analog_dpll_bb.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Detect Peak -################################################### - --> -<block> - <name>Detect Peak</name> - <key>analog_dpll_bb</key> - <import>from gnuradio import analog</import> - <make>analog.dpll_bb($period, $gain)</make> - <callback>set_gain($gain)</callback> - <param> - <name>Period</name> - <key>period</key> - <type>real</type> - </param> - <param> - <name>Gain</name> - <key>gain</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>byte</type> - </sink> - <source> - <name>out</name> - <type>byte</type> - </source> -</block> diff --git a/gr-analog/grc/analog_fastnoise_source_x.block.yml b/gr-analog/grc/analog_fastnoise_source_x.block.yml new file mode 100644 index 0000000000..21c4366074 --- /dev/null +++ b/gr-analog/grc/analog_fastnoise_source_x.block.yml @@ -0,0 +1,45 @@ +id: analog_fastnoise_source_x +label: Fast Noise Source + +parameters: +- id: type + label: Output Type + dtype: enum + options: [complex, float, int, short] + option_attributes: + fcn: [c, f, i, s] + hide: part +- id: noise_type + label: Noise Type + dtype: int + default: analog.GR_GAUSSIAN + options: [analog.GR_UNIFORM, analog.GR_GAUSSIAN, analog.GR_LAPLACIAN, analog.GR_IMPULSE] + option_labels: [Uniform, Gaussian, Laplacian, Impulse] +- id: amp + label: Amplitude + dtype: real + default: '1' +- id: seed + label: Seed + dtype: int + default: '0' +- id: samples + label: Variate Pool Size + dtype: int + default: '8192' + +outputs: +- domain: stream + dtype: ${ type } + +templates: + imports: from gnuradio import analog + make: analog.fastnoise_source_${type.fcn}(${noise_type}, ${amp}, ${seed}, ${samples}) + callbacks: + - set_type(${noise_type}) + - set_amplitude(${amp}) + +documentation: |- + The fast noise source works by pre-generating a pool of random variates taken from the specified distribution. At runtime, samples are then uniform randomly chosen from this pool which is a very fast operation. + +file_format: 1 diff --git a/gr-analog/grc/analog_fastnoise_source_x.xml b/gr-analog/grc/analog_fastnoise_source_x.xml deleted file mode 100644 index f18c8c2f54..0000000000 --- a/gr-analog/grc/analog_fastnoise_source_x.xml +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Fast Noise Source -################################################### - --> -<block> - <name>Fast Noise Source</name> - <key>analog_fastnoise_source_x</key> - <import>from gnuradio import analog</import> - <make>analog.fastnoise_source_$(type.fcn)($noise_type, $amp, $seed, $samples)</make> - <callback>set_type($noise_type)</callback> - <callback>set_amplitude($amp)</callback> - <param> - <name>Output Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>complex</key> - <opt>fcn:c</opt> - </option> - <option> - <name>Float</name> - <key>float</key> - <opt>fcn:f</opt> - </option> - <option> - <name>Int</name> - <key>int</key> - <opt>fcn:i</opt> - </option> - <option> - <name>Short</name> - <key>short</key> - <opt>fcn:s</opt> - </option> - </param> - <param> - <name>Noise Type</name> - <key>noise_type</key> - <value>analog.GR_GAUSSIAN</value> - <type>int</type> - <option> - <name>Uniform</name> - <key>analog.GR_UNIFORM</key> - </option> - <option> - <name>Gaussian</name> - <key>analog.GR_GAUSSIAN</key> - </option> - <option> - <name>Laplacian</name> - <key>analog.GR_LAPLACIAN</key> - </option> - <option> - <name>Impulse</name> - <key>analog.GR_IMPULSE</key> - </option> - </param> - <param> - <name>Amplitude</name> - <key>amp</key> - <value>1</value> - <type>real</type> - </param> - <param> - <name>Seed</name> - <key>seed</key> - <value>0</value> - <type>int</type> - </param> - <param> - <name>Variate Pool Size</name> - <key>samples</key> - <value>8192</value> - <type>int</type> - </param> - <source> - <name>out</name> - <type>$type</type> - </source> - <doc> -The fast noise source works by pre-generating a pool of random variates taken from the specified distribution. At runtime, samples are then uniform randomly chosen from this pool which is a very fast operation. - </doc> -</block> diff --git a/gr-analog/grc/analog_feedforward_agc_cc.block.yml b/gr-analog/grc/analog_feedforward_agc_cc.block.yml new file mode 100644 index 0000000000..fd49a654a8 --- /dev/null +++ b/gr-analog/grc/analog_feedforward_agc_cc.block.yml @@ -0,0 +1,26 @@ +id: analog_feedforward_agc_cc +label: Feed Forward AGC + +parameters: +- id: num_samples + label: Num Samples + dtype: int + default: '1024' +- id: reference + label: Reference + dtype: real + default: '1.0' + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: complex + +templates: + imports: from gnuradio import analog + make: analog.feedforward_agc_cc(${num_samples}, ${reference}) + +file_format: 1 diff --git a/gr-analog/grc/analog_feedforward_agc_cc.xml b/gr-analog/grc/analog_feedforward_agc_cc.xml deleted file mode 100644 index 66d200a847..0000000000 --- a/gr-analog/grc/analog_feedforward_agc_cc.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Feed Forward AGC -################################################### - --> -<block> - <name>Feed Forward AGC</name> - <key>analog_feedforward_agc_cc</key> - <import>from gnuradio import analog</import> - <make>analog.feedforward_agc_cc($num_samples, $reference)</make> - <param> - <name>Num Samples</name> - <key>num_samples</key> - <value>1024</value> - <type>int</type> - </param> - <param> - <name>Reference</name> - <key>reference</key> - <value>1.0</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> -</block> diff --git a/gr-analog/grc/analog_fm_deemph.block.yml b/gr-analog/grc/analog_fm_deemph.block.yml new file mode 100644 index 0000000000..b9c11a6842 --- /dev/null +++ b/gr-analog/grc/analog_fm_deemph.block.yml @@ -0,0 +1,25 @@ +id: analog_fm_deemph +label: FM Deemphasis + +parameters: +- id: samp_rate + label: Sample Rate + dtype: real +- id: tau + label: Tau + dtype: real + default: 75e-6 + +inputs: +- domain: stream + dtype: float + +outputs: +- domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: analog.fm_deemph(fs=${samp_rate}, tau=${tau}) + +file_format: 1 diff --git a/gr-analog/grc/analog_fm_deemph.xml b/gr-analog/grc/analog_fm_deemph.xml deleted file mode 100644 index 0fcb5a87d4..0000000000 --- a/gr-analog/grc/analog_fm_deemph.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##FM Deemphasis -################################################### - --> -<block> - <name>FM Deemphasis</name> - <key>analog_fm_deemph</key> - <import>from gnuradio import analog</import> - <make>analog.fm_deemph(fs=$samp_rate, tau=$tau)</make> - <param> - <name>Sample Rate</name> - <key>samp_rate</key> - <type>real</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_fm_demod_cf.block.yml b/gr-analog/grc/analog_fm_demod_cf.block.yml new file mode 100644 index 0000000000..a558253a2c --- /dev/null +++ b/gr-analog/grc/analog_fm_demod_cf.block.yml @@ -0,0 +1,46 @@ +id: analog_fm_demod_cf +label: FM Demod + +parameters: +- id: chan_rate + label: Channel Rate + dtype: real +- id: audio_decim + label: Audio Decimation + dtype: int +- id: deviation + label: Deviation + dtype: real + default: '75000' +- id: audio_pass + label: Audio Pass + dtype: real + default: '15000' +- id: audio_stop + label: Audio Stop + dtype: real + default: '16000' +- id: gain + label: Gain + dtype: real + default: '1.0' +- id: tau + label: Tau + dtype: real + default: 75e-6 + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: "analog.fm_demod_cf(\n\tchannel_rate=${chan_rate},\n\taudio_decim=${audio_decim},\n\ + \tdeviation=${deviation},\n\taudio_pass=${audio_pass},\n\taudio_stop=${audio_stop},\n\ + \tgain=${gain},\n\ttau=${tau},\n)" + +file_format: 1 diff --git a/gr-analog/grc/analog_fm_demod_cf.xml b/gr-analog/grc/analog_fm_demod_cf.xml deleted file mode 100644 index c903ddfc73..0000000000 --- a/gr-analog/grc/analog_fm_demod_cf.xml +++ /dev/null @@ -1,68 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##FM Demod -################################################### - --> -<block> - <name>FM Demod</name> - <key>analog_fm_demod_cf</key> - <import>from gnuradio import analog</import> - <make>analog.fm_demod_cf( - channel_rate=$chan_rate, - audio_decim=$audio_decim, - deviation=$deviation, - audio_pass=$audio_pass, - audio_stop=$audio_stop, - gain=$gain, - tau=$tau, -)</make> - <param> - <name>Channel Rate</name> - <key>chan_rate</key> - <type>real</type> - </param> - <param> - <name>Audio Decimation</name> - <key>audio_decim</key> - <type>int</type> - </param> - <param> - <name>Deviation</name> - <key>deviation</key> - <value>75000</value> - <type>real</type> - </param> - <param> - <name>Audio Pass</name> - <key>audio_pass</key> - <value>15000</value> - <type>real</type> - </param> - <param> - <name>Audio Stop</name> - <key>audio_stop</key> - <value>16000</value> - <type>real</type> - </param> - <param> - <name>Gain</name> - <key>gain</key> - <value>1.0</value> - <type>real</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_fm_preemph.block.yml b/gr-analog/grc/analog_fm_preemph.block.yml new file mode 100644 index 0000000000..d3f05d3164 --- /dev/null +++ b/gr-analog/grc/analog_fm_preemph.block.yml @@ -0,0 +1,29 @@ +id: analog_fm_preemph +label: FM Preemphasis + +parameters: +- id: samp_rate + label: Sample Rate + dtype: real +- id: tau + label: Tau + dtype: real + default: 75e-6 +- id: fh + label: High Corner Freq + dtype: real + default: '-1.0' + +inputs: +- domain: stream + dtype: float + +outputs: +- domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: analog.fm_preemph(fs=${samp_rate}, tau=${tau}, fh=${fh}) + +file_format: 1 diff --git a/gr-analog/grc/analog_fm_preemph.xml b/gr-analog/grc/analog_fm_preemph.xml deleted file mode 100644 index a754ce9c6f..0000000000 --- a/gr-analog/grc/analog_fm_preemph.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##FM Preemphasis -################################################### - --> -<block> - <name>FM Preemphasis</name> - <key>analog_fm_preemph</key> - <import>from gnuradio import analog</import> - <make>analog.fm_preemph(fs=$samp_rate, tau=$tau, fh=$fh)</make> - <param> - <name>Sample Rate</name> - <key>samp_rate</key> - <type>real</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <param> - <name>High Corner Freq</name> - <key>fh</key> - <value>-1.0</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_fmdet_cf.block.yml b/gr-analog/grc/analog_fmdet_cf.block.yml new file mode 100644 index 0000000000..ee8661b80f --- /dev/null +++ b/gr-analog/grc/analog_fmdet_cf.block.yml @@ -0,0 +1,31 @@ +id: analog_fmdet_cf +label: FM Detector + +parameters: +- id: samplerate + label: Sample rate + dtype: real +- id: freq_low + label: Lowest frequency + dtype: real +- id: freq_high + label: Highest frequency + dtype: real +- id: scl + label: Scale factor + dtype: real + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: "analog.fmdet_cf(\n\tsamplerate=${samplerate},\n\tfreq_low=${freq_low},\n\ + \tfreq_high=${freq_high},\n\tscl=${scl}\n)" + +file_format: 1 diff --git a/gr-analog/grc/analog_fmdet_cf.xml b/gr-analog/grc/analog_fmdet_cf.xml deleted file mode 100644 index 26688b2893..0000000000 --- a/gr-analog/grc/analog_fmdet_cf.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##FM Detector -################################################### - --> -<block> - <name>FM Detector</name> - <key>analog_fmdet_cf</key> - <import>from gnuradio import analog</import> - <make>analog.fmdet_cf( - samplerate=$samplerate, - freq_low=$freq_low, - freq_high=$freq_high, - scl=$scl -)</make> - <param> - <name>Sample rate</name> - <key>samplerate</key> - <type>real</type> - </param> - <param> - <name>Lowest frequency</name> - <key>freq_low</key> - <type>real</type> - </param> - <param> - <name>Highest frequency</name> - <key>freq_high</key> - <type>real</type> - </param> - <param> - <name>Scale factor</name> - <key>scl</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_frequency_modulator_fc.block.yml b/gr-analog/grc/analog_frequency_modulator_fc.block.yml new file mode 100644 index 0000000000..09f3e807f3 --- /dev/null +++ b/gr-analog/grc/analog_frequency_modulator_fc.block.yml @@ -0,0 +1,23 @@ +id: analog_frequency_modulator_fc +label: Frequency Mod + +parameters: +- id: sensitivity + label: Sensitivity + dtype: real + +inputs: +- domain: stream + dtype: float + +outputs: +- domain: stream + dtype: complex + +templates: + imports: from gnuradio import analog + make: analog.frequency_modulator_fc(${sensitivity}) + callbacks: + - set_sensitivity(${sensitivity}) + +file_format: 1 diff --git a/gr-analog/grc/analog_frequency_modulator_fc.xml b/gr-analog/grc/analog_frequency_modulator_fc.xml deleted file mode 100644 index 3b6cd159a1..0000000000 --- a/gr-analog/grc/analog_frequency_modulator_fc.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Frequency Modulator -################################################### - --> -<block> - <name>Frequency Mod</name> - <key>analog_frequency_modulator_fc</key> - <import>from gnuradio import analog</import> - <make>analog.frequency_modulator_fc($sensitivity)</make> - <callback>set_sensitivity($sensitivity)</callback> - <param> - <name>Sensitivity</name> - <key>sensitivity</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> -</block> diff --git a/gr-analog/grc/analog_nbfm_rx.block.yml b/gr-analog/grc/analog_nbfm_rx.block.yml new file mode 100644 index 0000000000..8bb3da7684 --- /dev/null +++ b/gr-analog/grc/analog_nbfm_rx.block.yml @@ -0,0 +1,38 @@ +id: analog_nbfm_rx +label: NBFM Receive + +parameters: +- id: audio_rate + label: Audio Rate + dtype: int +- id: quad_rate + label: Quadrature Rate + dtype: int +- id: tau + label: Tau + dtype: real + default: 75e-6 +- id: max_dev + label: Max Deviation + dtype: real + default: 5e3 + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: float + +asserts: +- ${ (quad_rate)%(audio_rate) == 0 } + +templates: + imports: from gnuradio import analog + make: "analog.nbfm_rx(\n\taudio_rate=${audio_rate},\n\tquad_rate=${quad_rate},\n\ + \ttau=${tau},\n\tmax_dev=${max_dev},\n )" + callbacks: + - set_max_deviation(${max_dev}) + +file_format: 1 diff --git a/gr-analog/grc/analog_nbfm_rx.xml b/gr-analog/grc/analog_nbfm_rx.xml deleted file mode 100644 index 9250b77b5e..0000000000 --- a/gr-analog/grc/analog_nbfm_rx.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##NBFM Receive -################################################### - --> -<block> - <name>NBFM Receive</name> - <key>analog_nbfm_rx</key> - <import>from gnuradio import analog</import> - <make>analog.nbfm_rx( - audio_rate=$audio_rate, - quad_rate=$quad_rate, - tau=$tau, - max_dev=$max_dev, - )</make> - <callback>set_max_deviation($max_dev)</callback> - - <param> - <name>Audio Rate</name> - <key>audio_rate</key> - <type>int</type> - </param> - - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>int</type> - </param> - - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - - <param> - <name>Max Deviation</name> - <key>max_dev</key> - <value>5e3</value> - <type>real</type> - </param> - - <check>($quad_rate)%($audio_rate) == 0</check> - - <sink> - <name>in</name> - <type>complex</type> - </sink> - - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_nbfm_tx.block.yml b/gr-analog/grc/analog_nbfm_tx.block.yml new file mode 100644 index 0000000000..00f63f8d64 --- /dev/null +++ b/gr-analog/grc/analog_nbfm_tx.block.yml @@ -0,0 +1,42 @@ +id: analog_nbfm_tx +label: NBFM Transmit + +parameters: +- id: audio_rate + label: Audio Rate + dtype: int +- id: quad_rate + label: Quadrature Rate + dtype: int +- id: tau + label: Tau + dtype: real + default: 75e-6 +- id: max_dev + label: Max Deviation + dtype: real + default: 5e3 +- id: fh + label: Preemphasis High Corner Freq + dtype: real + default: '-1.0' + +inputs: +- domain: stream + dtype: float + +outputs: +- domain: stream + dtype: complex + +asserts: +- ${ (quad_rate)%(audio_rate) == 0 } + +templates: + imports: from gnuradio import analog + make: "analog.nbfm_tx(\n\taudio_rate=${audio_rate},\n\tquad_rate=${quad_rate},\n\ + \ttau=${tau},\n\tmax_dev=${max_dev},\n\tfh=${fh},\n )" + callbacks: + - set_max_deviation(${max_dev}) + +file_format: 1 diff --git a/gr-analog/grc/analog_nbfm_tx.xml b/gr-analog/grc/analog_nbfm_tx.xml deleted file mode 100644 index bc80fffbcb..0000000000 --- a/gr-analog/grc/analog_nbfm_tx.xml +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##NBFM Transmit -################################################### - --> -<block> - <name>NBFM Transmit</name> - <key>analog_nbfm_tx</key> - <import>from gnuradio import analog</import> - <make>analog.nbfm_tx( - audio_rate=$audio_rate, - quad_rate=$quad_rate, - tau=$tau, - max_dev=$max_dev, - fh=$fh, - )</make> - <callback>set_max_deviation($max_dev)</callback> - - <param> - <name>Audio Rate</name> - <key>audio_rate</key> - <type>int</type> - </param> - - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>int</type> - </param> - - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - - <param> - <name>Max Deviation</name> - <key>max_dev</key> - <value>5e3</value> - <type>real</type> - </param> - - <param> - <name>Preemphasis High Corner Freq</name> - <key>fh</key> - <value>-1.0</value> - <type>real</type> - </param> - - <check>($quad_rate)%($audio_rate) == 0</check> - - <sink> - <name>in</name> - <type>float</type> - </sink> - - <source> - <name>out</name> - <type>complex</type> - </source> -</block> diff --git a/gr-analog/grc/analog_noise_source_x.block.yml b/gr-analog/grc/analog_noise_source_x.block.yml new file mode 100644 index 0000000000..bb3f67209e --- /dev/null +++ b/gr-analog/grc/analog_noise_source_x.block.yml @@ -0,0 +1,38 @@ +id: analog_noise_source_x +label: Noise Source + +parameters: +- id: type + label: Output Type + dtype: enum + options: [complex, float, int, short] + option_attributes: + fcn: [c, f, i, s] + hide: part +- id: noise_type + label: Noise Type + dtype: int + default: analog.GR_GAUSSIAN + options: [analog.GR_UNIFORM, analog.GR_GAUSSIAN, analog.GR_LAPLACIAN, analog.GR_IMPULSE] + option_labels: [Uniform, Gaussian, Laplacian, Impulse] +- id: amp + label: Amplitude + dtype: real + default: '1' +- id: seed + label: Seed + dtype: int + default: '0' + +outputs: +- domain: stream + dtype: ${ type } + +templates: + imports: from gnuradio import analog + make: analog.noise_source_${type.fcn}(${noise_type}, ${amp}, ${seed}) + callbacks: + - set_type(${noise_type}) + - set_amplitude(${amp}) + +file_format: 1 diff --git a/gr-analog/grc/analog_noise_source_x.xml b/gr-analog/grc/analog_noise_source_x.xml deleted file mode 100644 index 5404e78960..0000000000 --- a/gr-analog/grc/analog_noise_source_x.xml +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Noise Source -################################################### - --> -<block> - <name>Noise Source</name> - <key>analog_noise_source_x</key> - <import>from gnuradio import analog</import> - <make>analog.noise_source_$(type.fcn)($noise_type, $amp, $seed)</make> - <callback>set_type($noise_type)</callback> - <callback>set_amplitude($amp)</callback> - <param> - <name>Output Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>complex</key> - <opt>fcn:c</opt> - </option> - <option> - <name>Float</name> - <key>float</key> - <opt>fcn:f</opt> - </option> - <option> - <name>Int</name> - <key>int</key> - <opt>fcn:i</opt> - </option> - <option> - <name>Short</name> - <key>short</key> - <opt>fcn:s</opt> - </option> - </param> - <param> - <name>Noise Type</name> - <key>noise_type</key> - <value>analog.GR_GAUSSIAN</value> - <type>int</type> - <option> - <name>Uniform</name> - <key>analog.GR_UNIFORM</key> - </option> - <option> - <name>Gaussian</name> - <key>analog.GR_GAUSSIAN</key> - </option> - <option> - <name>Laplacian</name> - <key>analog.GR_LAPLACIAN</key> - </option> - <option> - <name>Impulse</name> - <key>analog.GR_IMPULSE</key> - </option> - </param> - <param> - <name>Amplitude</name> - <key>amp</key> - <value>1</value> - <type>real</type> - </param> - <param> - <name>Seed</name> - <key>seed</key> - <value>0</value> - <type>int</type> - </param> - <source> - <name>out</name> - <type>$type</type> - </source> -</block> diff --git a/gr-analog/grc/analog_phase_modulator_fc.block.yml b/gr-analog/grc/analog_phase_modulator_fc.block.yml new file mode 100644 index 0000000000..6d38ddd010 --- /dev/null +++ b/gr-analog/grc/analog_phase_modulator_fc.block.yml @@ -0,0 +1,23 @@ +id: analog_phase_modulator_fc +label: Phase Mod + +parameters: +- id: sensitivity + label: Sensitivity + dtype: real + +inputs: +- domain: stream + dtype: float + +outputs: +- domain: stream + dtype: complex + +templates: + imports: from gnuradio import analog + make: analog.phase_modulator_fc(${sensitivity}) + callbacks: + - set_sensitivity(${sensitivity}) + +file_format: 1 diff --git a/gr-analog/grc/analog_phase_modulator_fc.xml b/gr-analog/grc/analog_phase_modulator_fc.xml deleted file mode 100644 index c13af769c9..0000000000 --- a/gr-analog/grc/analog_phase_modulator_fc.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Phase Modulator -################################################### - --> -<block> - <name>Phase Mod</name> - <key>analog_phase_modulator_fc</key> - <import>from gnuradio import analog</import> - <make>analog.phase_modulator_fc($sensitivity)</make> - <callback>set_sensitivity($sensitivity)</callback> - <param> - <name>Sensitivity</name> - <key>sensitivity</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> -</block> diff --git a/gr-analog/grc/analog_pll_carriertracking_cc.block.yml b/gr-analog/grc/analog_pll_carriertracking_cc.block.yml new file mode 100644 index 0000000000..1a66aca0a7 --- /dev/null +++ b/gr-analog/grc/analog_pll_carriertracking_cc.block.yml @@ -0,0 +1,31 @@ +id: analog_pll_carriertracking_cc +label: PLL Carrier Tracking + +parameters: +- id: w + label: Loop Bandwidth + dtype: real +- id: max_freq + label: Max Freq + dtype: real +- id: min_freq + label: Min Freq + dtype: real + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: complex + +templates: + imports: from gnuradio import analog + make: analog.pll_carriertracking_cc(${w}, ${max_freq}, ${min_freq}) + callbacks: + - set_loop_bandwidth(${w}) + - set_max_freq(${max_freq}) + - set_min_freq(${min_freq}) + +file_format: 1 diff --git a/gr-analog/grc/analog_pll_carriertracking_cc.xml b/gr-analog/grc/analog_pll_carriertracking_cc.xml deleted file mode 100644 index 95ec4b415b..0000000000 --- a/gr-analog/grc/analog_pll_carriertracking_cc.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##PLL Carrier Tracking -################################################### - --> -<block> - <name>PLL Carrier Tracking</name> - <key>analog_pll_carriertracking_cc</key> - <import>from gnuradio import analog</import> - <make>analog.pll_carriertracking_cc($w, $max_freq, $min_freq)</make> - <callback>set_loop_bandwidth($w)</callback> - <callback>set_max_freq($max_freq)</callback> - <callback>set_min_freq($min_freq)</callback> - <param> - <name>Loop Bandwidth</name> - <key>w</key> - <type>real</type> - </param> - <param> - <name>Max Freq</name> - <key>max_freq</key> - <type>real</type> - </param> - <param> - <name>Min Freq</name> - <key>min_freq</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> -</block> diff --git a/gr-analog/grc/analog_pll_freqdet_cf.block.yml b/gr-analog/grc/analog_pll_freqdet_cf.block.yml new file mode 100644 index 0000000000..b9fe199dd2 --- /dev/null +++ b/gr-analog/grc/analog_pll_freqdet_cf.block.yml @@ -0,0 +1,31 @@ +id: analog_pll_freqdet_cf +label: PLL Freq Det + +parameters: +- id: w + label: Loop Bandwidth + dtype: real +- id: max_freq + label: Max Freq + dtype: real +- id: min_freq + label: Min Freq + dtype: real + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: analog.pll_freqdet_cf(${w}, ${max_freq}, ${min_freq}) + callbacks: + - set_loop_bandwidth(${w}) + - set_max_freq(${max_freq}) + - set_min_freq(${min_freq}) + +file_format: 1 diff --git a/gr-analog/grc/analog_pll_freqdet_cf.xml b/gr-analog/grc/analog_pll_freqdet_cf.xml deleted file mode 100644 index 0d44c160bd..0000000000 --- a/gr-analog/grc/analog_pll_freqdet_cf.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##PLL Frequency Det -################################################### - --> -<block> - <name>PLL Freq Det</name> - <key>analog_pll_freqdet_cf</key> - <import>from gnuradio import analog</import> - <make>analog.pll_freqdet_cf($w, $max_freq, $min_freq)</make> - <callback>set_loop_bandwidth($w)</callback> - <callback>set_max_freq($max_freq)</callback> - <callback>set_min_freq($min_freq)</callback> - <param> - <name>Loop Bandwidth</name> - <key>w</key> - <type>real</type> - </param> - <param> - <name>Max Freq</name> - <key>max_freq</key> - <type>real</type> - </param> - <param> - <name>Min Freq</name> - <key>min_freq</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_pll_refout_cc.block.yml b/gr-analog/grc/analog_pll_refout_cc.block.yml new file mode 100644 index 0000000000..5acd85c3b6 --- /dev/null +++ b/gr-analog/grc/analog_pll_refout_cc.block.yml @@ -0,0 +1,31 @@ +id: analog_pll_refout_cc +label: PLL Ref Out + +parameters: +- id: w + label: Loop Bandwidth + dtype: real +- id: max_freq + label: Max Freq + dtype: real +- id: min_freq + label: Min Freq + dtype: real + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: complex + +templates: + imports: from gnuradio import analog + make: analog.pll_refout_cc(${w}, ${max_freq}, ${min_freq}) + callbacks: + - set_loop_bandwidth(${w}) + - set_max_freq(${max_freq}) + - set_min_freq(${min_freq}) + +file_format: 1 diff --git a/gr-analog/grc/analog_pll_refout_cc.xml b/gr-analog/grc/analog_pll_refout_cc.xml deleted file mode 100644 index eb2d752b27..0000000000 --- a/gr-analog/grc/analog_pll_refout_cc.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##PLL Reference Out -################################################### - --> -<block> - <name>PLL Ref Out</name> - <key>analog_pll_refout_cc</key> - <import>from gnuradio import analog</import> - <make>analog.pll_refout_cc($w, $max_freq, $min_freq)</make> - <callback>set_loop_bandwidth($w)</callback> - <callback>set_max_freq($max_freq)</callback> - <callback>set_min_freq($min_freq)</callback> - <param> - <name>Loop Bandwidth</name> - <key>w</key> - <type>real</type> - </param> - <param> - <name>Max Freq</name> - <key>max_freq</key> - <type>real</type> - </param> - <param> - <name>Min Freq</name> - <key>min_freq</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> -</block> diff --git a/gr-analog/grc/analog_probe_avg_mag_sqrd_x.block.yml b/gr-analog/grc/analog_probe_avg_mag_sqrd_x.block.yml new file mode 100644 index 0000000000..ad128c1521 --- /dev/null +++ b/gr-analog/grc/analog_probe_avg_mag_sqrd_x.block.yml @@ -0,0 +1,47 @@ +id: analog_probe_avg_mag_sqrd_x +label: Probe Avg Mag^2 + +parameters: +- id: type + label: Type + dtype: enum + options: [c, f, cf] + option_labels: [Complex, Float, Complex->Float] + option_attributes: + hide: [all, all, ''] + input: [complex, float, complex] + optional: ['1', '1', '0'] + hide: part +- id: threshold + label: Threshold (dB) + dtype: real + default: '0' +- id: alpha + label: Alpha + dtype: real + default: '1' + +inputs: +- domain: stream + dtype: ${ type.input } + +outputs: +- domain: stream + dtype: float + optional: true + hide: ${ type.hide } + +templates: + imports: from gnuradio import analog + make: analog.probe_avg_mag_sqrd_${type}(${threshold}, ${alpha}) + callbacks: + - set_alpha(${alpha}) + - set_threshold(${threshold}) + - reset() + +documentation: |- + Available functions to probe: level() + + Use with the function probe block. + +file_format: 1 diff --git a/gr-analog/grc/analog_probe_avg_mag_sqrd_x.xml b/gr-analog/grc/analog_probe_avg_mag_sqrd_x.xml deleted file mode 100644 index 98e6702ffd..0000000000 --- a/gr-analog/grc/analog_probe_avg_mag_sqrd_x.xml +++ /dev/null @@ -1,68 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Probe Average Magnitude Squared -################################################### - --> -<block> - <name>Probe Avg Mag^2</name> - <key>analog_probe_avg_mag_sqrd_x</key> - <import>from gnuradio import analog</import> - <make>analog.probe_avg_mag_sqrd_$(type)($threshold, $alpha)</make> - <callback>set_alpha($alpha)</callback> - <callback>set_threshold($threshold)</callback> - <callback>reset()</callback> - <param> - <name>Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>c</key> - <opt>input:complex</opt> - <opt>optional:1</opt> - <opt>hide:all</opt> - </option> - <option> - <name>Float</name> - <key>f</key> - <opt>input:float</opt> - <opt>optional:1</opt> - <opt>hide:all</opt> - </option> - <option> - <name>Complex->Float</name> - <key>cf</key> - <opt>input:complex</opt> - <opt>optional:0</opt> - <opt>hide:</opt> - </option> - </param> - <param> - <name>Threshold (dB)</name> - <key>threshold</key> - <value>0</value> - <type>real</type> - </param> - <param> - <name>Alpha</name> - <key>alpha</key> - <value>1</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>$type.input</type> - </sink> - <source> - <name>out</name> - <type>float</type> - <optional>$type.optional</optional> - <hide>$type.hide</hide> - </source> - <doc> -Available functions to probe: level() - -Use with the function probe block. - </doc> -</block> diff --git a/gr-analog/grc/analog_pwr_squelch_xx.block.yml b/gr-analog/grc/analog_pwr_squelch_xx.block.yml new file mode 100644 index 0000000000..20bcfa923e --- /dev/null +++ b/gr-analog/grc/analog_pwr_squelch_xx.block.yml @@ -0,0 +1,44 @@ +id: analog_pwr_squelch_xx +label: Power Squelch + +parameters: +- id: type + label: Type + dtype: enum + options: [complex, float] + option_attributes: + fcn: [cc, ff] + hide: part +- id: threshold + label: Threshold (dB) + dtype: real +- id: alpha + label: Alpha + dtype: real + default: 1e-4 +- id: ramp + label: Ramp + dtype: int + default: '0' +- id: gate + label: Gate + dtype: enum + options: ['True', 'False'] + option_labels: ['Yes', 'No'] + +inputs: +- domain: stream + dtype: ${ type } + +outputs: +- domain: stream + dtype: ${ type } + +templates: + imports: from gnuradio import analog + make: analog.pwr_squelch_${type.fcn}(${threshold}, ${alpha}, ${ramp}, ${gate}) + callbacks: + - set_threshold(${threshold}) + - set_alpha(${alpha}) + +file_format: 1 diff --git a/gr-analog/grc/analog_pwr_squelch_xx.xml b/gr-analog/grc/analog_pwr_squelch_xx.xml deleted file mode 100644 index a75f85cf10..0000000000 --- a/gr-analog/grc/analog_pwr_squelch_xx.xml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Power Squelch -################################################### - --> -<block> - <name>Power Squelch</name> - <key>analog_pwr_squelch_xx</key> - <import>from gnuradio import analog</import> - <make>analog.pwr_squelch_$(type.fcn)($threshold, $alpha, $ramp, $gate)</make> - <callback>set_threshold($threshold)</callback> - <callback>set_alpha($alpha)</callback> - <param> - <name>Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>complex</key> - <opt>fcn:cc</opt> - </option> - <option> - <name>Float</name> - <key>float</key> - <opt>fcn:ff</opt> - </option> - </param> - <param> - <name>Threshold (dB)</name> - <key>threshold</key> - <type>real</type> - </param> - <param> - <name>Alpha</name> - <key>alpha</key> - <value>1e-4</value> - <type>real</type> - </param> - <param> - <name>Ramp</name> - <key>ramp</key> - <value>0</value> - <type>int</type> - </param> - <param> - <name>Gate</name> - <key>gate</key> - <type>enum</type> - <option> - <name>Yes</name> - <key>True</key> - </option> - <option> - <name>No</name> - <key>False</key> - </option> - </param> - <sink> - <name>in</name> - <type>$type</type> - </sink> - <source> - <name>out</name> - <type>$type</type> - </source> -</block> diff --git a/gr-analog/grc/analog_quadrature_demod_cf.block.yml b/gr-analog/grc/analog_quadrature_demod_cf.block.yml new file mode 100644 index 0000000000..874b286c87 --- /dev/null +++ b/gr-analog/grc/analog_quadrature_demod_cf.block.yml @@ -0,0 +1,47 @@ +id: analog_quadrature_demod_cf +label: Quadrature Demod + +parameters: +- id: gain + label: Gain + dtype: real + default: samp_rate/(2*math.pi*fsk_deviation_hz/8.0) + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: float + +templates: + imports: |- + from gnuradio import analog + import math + make: analog.quadrature_demod_cf(${gain}) + callbacks: + - set_gain(${gain}) + +documentation: |- + This can be used to demod FM, FSK, GMSK, etc. The input is complex + baseband, output is the signal frequency in relation to the sample + rated, multiplied with the gain. + + Mathematically, this block calculates the product of the one-sample + delayed input and the conjugate undelayed signal, and then calculates + the argument of the resulting complex number: + + y[n] = \mathrm{arg}\left(x[n] \, \bar x [n-1]\right). + + Let x be a complex sinusoid with amplitude A>0, (absolute) + frequency f\in\mathbb R and phase \phi_0\in[0;2\pi] sampled at + f_s>0 so, without loss of generality, + + x[n]= A e^{j2\pi( \frac f{f_s} n + \phi_0)}\f + + then + + y[n] = \mathrm{arg}\left(A e^{j2\pi\left( \frac f{f_s} n + \phi_0\right)} \overline{A e^{j2\pi( \frac f{f_s} (n-1) + \phi_0)}}\right)\ = \mathrm{arg}\left(A^2 e^{j2\pi\left( \frac f{f_s} n + \phi_0\right)} e^{-j2\pi( \frac f{f_s} (n-1) + \phi_0)}\right)\ = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} n + \phi_0 - \frac f{f_s} (n-1) - \phi_0\right)}\right)\ = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} n - \frac f{f_s} (n-1)\right)}\right)\ = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} \left(n-(n-1)\right)\right)}\right)\ = \mathrm{arg}\left( A^2 e^{j2\pi \frac f{f_s}}\right) \intertext{$A$ is real, so is $A^2$ and hence only \textit{scales}, therefore $\mathrm{arg}(\cdot)$ is invariant:} = \mathrm{arg}\left(e^{j2\pi \frac f{f_s}}\right)\= \frac f{f_s}\\ + +file_format: 1 diff --git a/gr-analog/grc/analog_quadrature_demod_cf.xml b/gr-analog/grc/analog_quadrature_demod_cf.xml deleted file mode 100644 index 447acf2ed8..0000000000 --- a/gr-analog/grc/analog_quadrature_demod_cf.xml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Quadrature Demodulator -################################################### - --> -<block> - <name>Quadrature Demod</name> - <key>analog_quadrature_demod_cf</key> - <import>from gnuradio import analog</import> - <import>import math</import> - <make>analog.quadrature_demod_cf($gain)</make> - <callback>set_gain($gain)</callback> - <param> - <name>Gain</name> - <key>gain</key> - <value>samp_rate/(2*math.pi*fsk_deviation_hz/8.0)</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> - <doc> -This can be used to demod FM, FSK, GMSK, etc. The input is complex -baseband, output is the signal frequency in relation to the sample -rated, multiplied with the gain. - -Mathematically, this block calculates the product of the one-sample -delayed input and the conjugate undelayed signal, and then calculates -the argument of the resulting complex number: - -y[n] = \mathrm{arg}\left(x[n] \, \bar x [n-1]\right). - -Let x be a complex sinusoid with amplitude A>0, (absolute) -frequency f\in\mathbb R and phase \phi_0\in[0;2\pi] sampled at -f_s>0 so, without loss of generality, - -x[n]= A e^{j2\pi( \frac f{f_s} n + \phi_0)}\f - -then - -y[n] = \mathrm{arg}\left(A e^{j2\pi\left( \frac f{f_s} n + \phi_0\right)} \overline{A e^{j2\pi( \frac f{f_s} (n-1) + \phi_0)}}\right)\\ - = \mathrm{arg}\left(A^2 e^{j2\pi\left( \frac f{f_s} n + \phi_0\right)} e^{-j2\pi( \frac f{f_s} (n-1) + \phi_0)}\right)\\ - = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} n + \phi_0 - \frac f{f_s} (n-1) - \phi_0\right)}\right)\\ - = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} n - \frac f{f_s} (n-1)\right)}\right)\\ - = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} \left(n-(n-1)\right)\right)}\right)\\ - = \mathrm{arg}\left( A^2 e^{j2\pi \frac f{f_s}}\right) \intertext{$A$ is real, so is $A^2$ and hence only \textit{scales}, therefore $\mathrm{arg}(\cdot)$ is invariant:} = \mathrm{arg}\left(e^{j2\pi \frac f{f_s}}\right)\\ -= \frac f{f_s}\\ - </doc> -</block> diff --git a/gr-analog/grc/analog_rail_ff.block.yml b/gr-analog/grc/analog_rail_ff.block.yml new file mode 100644 index 0000000000..8a2d2e8a54 --- /dev/null +++ b/gr-analog/grc/analog_rail_ff.block.yml @@ -0,0 +1,27 @@ +id: analog_rail_ff +label: Rail + +parameters: +- id: lo + label: Low clipping + dtype: real +- id: hi + label: Hi clipping + dtype: real + +inputs: +- domain: stream + dtype: float + +outputs: +- domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: analog.rail_ff(${lo}, ${hi}) + callbacks: + - set_lo(${lo}) + - set_hi(${hi}) + +file_format: 1 diff --git a/gr-analog/grc/analog_rail_ff.xml b/gr-analog/grc/analog_rail_ff.xml deleted file mode 100644 index 87dff09771..0000000000 --- a/gr-analog/grc/analog_rail_ff.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0"?> -<!-- -# -# 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. ---> - -<!-- -################################################### -##Rail -################################################### - --> -<block> - <name>Rail</name> - <key>analog_rail_ff</key> - <import>from gnuradio import analog</import> - <make>analog.rail_ff($lo, $hi)</make> - <callback>set_lo($lo)</callback> - <callback>set_hi($hi)</callback> - <param> - <name>Low clipping</name> - <key>lo</key> - <type>real</type> - </param> - <param> - <name>Hi clipping</name> - <key>hi</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_random_source_x.block.yml b/gr-analog/grc/analog_random_source_x.block.yml new file mode 100644 index 0000000000..595aa81b6d --- /dev/null +++ b/gr-analog/grc/analog_random_source_x.block.yml @@ -0,0 +1,47 @@ +id: analog_random_source_x +label: Random Source + +parameters: +- id: type + label: Output Type + dtype: enum + options: [int, short, byte] + option_attributes: + fcn: [i, s, b] + hide: part +- id: min + label: Minimum + dtype: int + default: '0' +- id: max + label: Maximum + dtype: int + default: '2' +- id: num_samps + label: Num Samples + dtype: int + default: '1000' +- id: repeat + label: Repeat + dtype: enum + default: 'True' + options: ['True', 'False'] + option_labels: ['Yes', 'No'] + +outputs: +- domain: stream + dtype: ${ type } + +templates: + imports: |- + from gnuradio import blocks + import numpy + make: blocks.vector_source_${type.fcn}(map(int, numpy.random.randint(${min}, ${max}, + ${num_samps})), ${repeat}) + +documentation: |- + Generate num samples of random numbers of [min, max). Repeat samples if specified. + + Ex: With min=0 and max=2, the sequence 01110101... will be generated. + +file_format: 1 diff --git a/gr-analog/grc/analog_random_source_x.xml b/gr-analog/grc/analog_random_source_x.xml deleted file mode 100644 index e466c02fbe..0000000000 --- a/gr-analog/grc/analog_random_source_x.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Random Source: -## Custom block -################################################### - --> -<block> - <name>Random Source</name> - <key>analog_random_source_x</key> - <import>from gnuradio import blocks</import> - <import>import numpy</import> - <make>blocks.vector_source_$(type.fcn)(map(int, numpy.random.randint($min, $max, $num_samps)), $repeat)</make> - <param> - <name>Output Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Int</name> - <key>int</key> - <opt>fcn:i</opt> - </option> - <option> - <name>Short</name> - <key>short</key> - <opt>fcn:s</opt> - </option> - <option> - <name>Byte</name> - <key>byte</key> - <opt>fcn:b</opt> - </option> - </param> - <param> - <name>Minimum</name> - <key>min</key> - <value>0</value> - <type>int</type> - </param> - <param> - <name>Maximum</name> - <key>max</key> - <value>2</value> - <type>int</type> - </param> - <param> - <name>Num Samples</name> - <key>num_samps</key> - <value>1000</value> - <type>int</type> - </param> - <param> - <name>Repeat</name> - <key>repeat</key> - <value>True</value> - <type>enum</type> - <option> - <name>Yes</name> - <key>True</key> - </option> - <option> - <name>No</name> - <key>False</key> - </option> - </param> - <source> - <name>out</name> - <type>$type</type> - </source> - <doc> -Generate num samples of random numbers of [min, max). Repeat samples if specified. - -Ex: With min=0 and max=2, the sequence 01110101... will be generated. - </doc> -</block> diff --git a/gr-analog/grc/analog_random_uniform_source_x.block.yml b/gr-analog/grc/analog_random_uniform_source_x.block.yml new file mode 100644 index 0000000000..d76bc903a5 --- /dev/null +++ b/gr-analog/grc/analog_random_uniform_source_x.block.yml @@ -0,0 +1,32 @@ +id: analog_random_uniform_source_x +label: Random Uniform Source + +parameters: +- id: type + label: Output Type + dtype: enum + options: [int, short, byte] + option_attributes: + fcn: [i, s, b] + offset_type: [int, int, int] + hide: part +- id: minimum + label: Minimum + dtype: int +- id: maximum + label: Maximum + dtype: int +- id: seed + label: Seed + dtype: int + default: '0' + +outputs: +- domain: stream + dtype: ${ type } + +templates: + imports: from gnuradio import analog + make: analog.random_uniform_source_${type.fcn}(${minimum}, ${maximum}, ${seed}) + +file_format: 1 diff --git a/gr-analog/grc/analog_random_uniform_source_x.xml b/gr-analog/grc/analog_random_uniform_source_x.xml deleted file mode 100644 index c81b637f97..0000000000 --- a/gr-analog/grc/analog_random_uniform_source_x.xml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0"?> -<block> - <name>Random Uniform Source</name> - <key>analog_random_uniform_source_x</key> - <import>from gnuradio import analog</import> - <make>analog.random_uniform_source_$(type.fcn)($minimum, $maximum, $seed)</make> - - <param> - <name>Output Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Int</name> - <key>int</key> - <opt>fcn:i</opt> - <opt>offset_type:int</opt> - </option> - <option> - <name>Short</name> - <key>short</key> - <opt>fcn:s</opt> - <opt>offset_type:int</opt> - </option> - <option> - <name>Byte</name> - <key>byte</key> - <opt>fcn:b</opt> - <opt>offset_type:int</opt> - </option> - </param> - - <param> - <name>Minimum</name> - <key>minimum</key> - <type>int</type> - </param> - - <param> - <name>Maximum</name> - <key>maximum</key> - <type>int</type> - </param> - - <param> - <name>Seed</name> - <key>seed</key> - <value>0</value> - <type>int</type> - </param> - - <source> - <name>out</name> - <type>$type</type> - </source> -</block> diff --git a/gr-analog/grc/analog_sig_source_x.block.yml b/gr-analog/grc/analog_sig_source_x.block.yml new file mode 100644 index 0000000000..2fbc853a9b --- /dev/null +++ b/gr-analog/grc/analog_sig_source_x.block.yml @@ -0,0 +1,57 @@ +id: analog_sig_source_x +label: Signal Source + +parameters: +- id: type + label: Output Type + dtype: enum + options: [complex, float, int, short] + option_attributes: + fcn: [c, f, i, s] + offset_type: [complex, real, int, int] + hide: part +- id: samp_rate + label: Sample Rate + dtype: real + default: samp_rate +- id: waveform + label: Waveform + dtype: int + default: analog.GR_COS_WAVE + options: [analog.GR_CONST_WAVE, analog.GR_SIN_WAVE, analog.GR_COS_WAVE, analog.GR_SQR_WAVE, + analog.GR_TRI_WAVE, analog.GR_SAW_WAVE] + option_labels: [Constant, Sine, Cosine, Square, Triangle, Saw Tooth] +- id: freq + label: Frequency + dtype: real + default: '1000' +- id: amp + label: Amplitude + dtype: real + default: '1' +- id: offset + label: Offset + dtype: ${ type.offset_type } + default: '0' + +inputs: +- domain: message + id: freq + optional: true + +outputs: +- domain: stream + dtype: ${ type } + +templates: + imports: from gnuradio import analog + make: analog.sig_source_${type.fcn}(${samp_rate}, ${waveform}, ${freq}, ${amp}, + ${offset}) + callbacks: + - set_sampling_freq(${samp_rate}) + - set_waveform(${waveform}) + - set_frequency(${freq}) + - set_amplitude(${amp}) + - set_offset(${offset}) + +file_format: 1 diff --git a/gr-analog/grc/analog_sig_source_x.xml b/gr-analog/grc/analog_sig_source_x.xml deleted file mode 100644 index e3c587b254..0000000000 --- a/gr-analog/grc/analog_sig_source_x.xml +++ /dev/null @@ -1,109 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Signal Source -################################################### - --> -<block> - <name>Signal Source</name> - <key>analog_sig_source_x</key> - <import>from gnuradio import analog</import> - <make>analog.sig_source_$(type.fcn)($samp_rate, $waveform, $freq, $amp, $offset)</make> - <callback>set_sampling_freq($samp_rate)</callback> - <callback>set_waveform($waveform)</callback> - <callback>set_frequency($freq)</callback> - <callback>set_amplitude($amp)</callback> - <callback>set_offset($offset)</callback> - <param> - <name>Output Type</name> - <key>type</key> - <type>enum</type> - <option> - <name>Complex</name> - <key>complex</key> - <opt>fcn:c</opt> - <opt>offset_type:complex</opt> - </option> - <option> - <name>Float</name> - <key>float</key> - <opt>fcn:f</opt> - <opt>offset_type:real</opt> - </option> - <option> - <name>Int</name> - <key>int</key> - <opt>fcn:i</opt> - <opt>offset_type:int</opt> - </option> - <option> - <name>Short</name> - <key>short</key> - <opt>fcn:s</opt> - <opt>offset_type:int</opt> - </option> - </param> - <param> - <name>Sample Rate</name> - <key>samp_rate</key> - <value>samp_rate</value> - <type>real</type> - </param> - <param> - <name>Waveform</name> - <key>waveform</key> - <value>analog.GR_COS_WAVE</value> - <type>int</type> - <option> - <name>Constant</name> - <key>analog.GR_CONST_WAVE</key> - </option> - <option> - <name>Sine</name> - <key>analog.GR_SIN_WAVE</key> - </option> - <option> - <name>Cosine</name> - <key>analog.GR_COS_WAVE</key> - </option> - <option> - <name>Square</name> - <key>analog.GR_SQR_WAVE</key> - </option> - <option> - <name>Triangle</name> - <key>analog.GR_TRI_WAVE</key> - </option> - <option> - <name>Saw Tooth</name> - <key>analog.GR_SAW_WAVE</key> - </option> - </param> - <param> - <name>Frequency</name> - <key>freq</key> - <value>1000</value> - <type>real</type> - </param> - <param> - <name>Amplitude</name> - <key>amp</key> - <value>1</value> - <type>real</type> - </param> - <param> - <name>Offset</name> - <key>offset</key> - <value>0</value> - <type>$type.offset_type</type> - </param> - <sink> - <name>freq</name> - <type>message</type> - <optional>1</optional> - </sink> - <source> - <name>out</name> - <type>$type</type> - </source> -</block> diff --git a/gr-analog/grc/analog_simple_squelch_cc.block.yml b/gr-analog/grc/analog_simple_squelch_cc.block.yml new file mode 100644 index 0000000000..17a98eb4ba --- /dev/null +++ b/gr-analog/grc/analog_simple_squelch_cc.block.yml @@ -0,0 +1,27 @@ +id: analog_simple_squelch_cc +label: Simple Squelch + +parameters: +- id: threshold + label: Threshold (dB) + dtype: real +- id: alpha + label: Alpha + dtype: real + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: complex + +templates: + imports: from gnuradio import analog + make: analog.simple_squelch_cc(${threshold}, ${alpha}) + callbacks: + - set_threshold(${threshold}) + - set_alpha(${alpha}) + +file_format: 1 diff --git a/gr-analog/grc/analog_simple_squelch_cc.xml b/gr-analog/grc/analog_simple_squelch_cc.xml deleted file mode 100644 index 648921a149..0000000000 --- a/gr-analog/grc/analog_simple_squelch_cc.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Simple Squelch -################################################### - --> -<block> - <name>Simple Squelch</name> - <key>analog_simple_squelch_cc</key> - <import>from gnuradio import analog</import> - <make>analog.simple_squelch_cc($threshold, $alpha)</make> - <callback>set_threshold($threshold)</callback> - <callback>set_alpha($alpha)</callback> - <param> - <name>Threshold (dB)</name> - <key>threshold</key> - <type>real</type> - </param> - <param> - <name>Alpha</name> - <key>alpha</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> -</block> diff --git a/gr-analog/grc/analog_standard_squelch.block.yml b/gr-analog/grc/analog_standard_squelch.block.yml new file mode 100644 index 0000000000..d753dfaf01 --- /dev/null +++ b/gr-analog/grc/analog_standard_squelch.block.yml @@ -0,0 +1,28 @@ +id: analog_standard_squelch +label: Standard Squelch + +parameters: +- id: audio_rate + label: Audio Rate + dtype: real +- id: threshold + label: Threshold + dtype: real + +inputs: +- domain: stream + dtype: float + +outputs: +- domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: |- + analog.standard_squelch(audio_rate=${audio_rate}) + self.${id}.set_threshold(${threshold}) + callbacks: + - set_threshold(${threshold}) + +file_format: 1 diff --git a/gr-analog/grc/analog_standard_squelch.xml b/gr-analog/grc/analog_standard_squelch.xml deleted file mode 100644 index 264c57ab56..0000000000 --- a/gr-analog/grc/analog_standard_squelch.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##Standard Squelch -################################################### - --> -<block> - <name>Standard Squelch</name> - <key>analog_standard_squelch</key> - <import>from gnuradio import analog</import> - <make>analog.standard_squelch(audio_rate=$audio_rate) -self.$(id).set_threshold($threshold)</make> - <callback>set_threshold($threshold)</callback> - <param> - <name>Audio Rate</name> - <key>audio_rate</key> - <type>real</type> - </param> - <param> - <name>Threshold</name> - <key>threshold</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_wfm_rcv.block.yml b/gr-analog/grc/analog_wfm_rcv.block.yml new file mode 100644 index 0000000000..eb3a84893e --- /dev/null +++ b/gr-analog/grc/analog_wfm_rcv.block.yml @@ -0,0 +1,25 @@ +id: analog_wfm_rcv +label: WBFM Receive + +parameters: +- id: quad_rate + label: Quadrature Rate + dtype: real +- id: audio_decimation + label: Audio Decimation + dtype: int + +inputs: +- domain: stream + dtype: complex + +outputs: +- domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: "analog.wfm_rcv(\n\tquad_rate=${quad_rate},\n\taudio_decimation=${audio_decimation},\n\ + )" + +file_format: 1 diff --git a/gr-analog/grc/analog_wfm_rcv.xml b/gr-analog/grc/analog_wfm_rcv.xml deleted file mode 100644 index ce2abb92de..0000000000 --- a/gr-analog/grc/analog_wfm_rcv.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##WBFM Receive -################################################### - --> -<block> - <name>WBFM Receive</name> - <key>analog_wfm_rcv</key> - <import>from gnuradio import analog</import> - <make>analog.wfm_rcv( - quad_rate=$quad_rate, - audio_decimation=$audio_decimation, -)</make> - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>real</type> - </param> - <param> - <name>Audio Decimation</name> - <key>audio_decimation</key> - <type>int</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_wfm_rcv_pll.block.yml b/gr-analog/grc/analog_wfm_rcv_pll.block.yml new file mode 100644 index 0000000000..e5e3d76ccc --- /dev/null +++ b/gr-analog/grc/analog_wfm_rcv_pll.block.yml @@ -0,0 +1,29 @@ +id: analog_wfm_rcv_pll +label: WBFM Receive PLL + +parameters: +- id: quad_rate + label: Quadrature Rate + dtype: real +- id: audio_decimation + label: Audio Decimation + dtype: int + +inputs: +- domain: stream + dtype: complex + +outputs: +- label: Lout + domain: stream + dtype: float +- label: Rout + domain: stream + dtype: float + +templates: + imports: from gnuradio import analog + make: "analog.wfm_rcv_pll(\n\tdemod_rate=${quad_rate},\n\taudio_decimation=${audio_decimation},\n\ + )" + +file_format: 1 diff --git a/gr-analog/grc/analog_wfm_rcv_pll.xml b/gr-analog/grc/analog_wfm_rcv_pll.xml deleted file mode 100644 index db31ed9bee..0000000000 --- a/gr-analog/grc/analog_wfm_rcv_pll.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##WBFM Receive PLL -################################################### - --> -<block> - <name>WBFM Receive PLL</name> - <key>analog_wfm_rcv_pll</key> - <import>from gnuradio import analog</import> - <make>analog.wfm_rcv_pll( - demod_rate=$quad_rate, - audio_decimation=$audio_decimation, -)</make> - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>real</type> - </param> - <param> - <name>Audio Decimation</name> - <key>audio_decimation</key> - <type>int</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>Lout</name> - <type>float</type> - </source> - <source> - <name>Rout</name> - <type>float</type> - </source> -</block> diff --git a/gr-analog/grc/analog_wfm_tx.block.yml b/gr-analog/grc/analog_wfm_tx.block.yml new file mode 100644 index 0000000000..1e4346c41d --- /dev/null +++ b/gr-analog/grc/analog_wfm_tx.block.yml @@ -0,0 +1,40 @@ +id: analog_wfm_tx +label: WBFM Transmit + +parameters: +- id: audio_rate + label: Audio Rate + dtype: int +- id: quad_rate + label: Quadrature Rate + dtype: int +- id: tau + label: Tau + dtype: real + default: 75e-6 +- id: max_dev + label: Max Deviation + dtype: real + default: 75e3 +- id: fh + label: Preemphasis High Corner Freq + dtype: real + default: '-1.0' + +inputs: +- domain: stream + dtype: float + +outputs: +- domain: stream + dtype: complex + +asserts: +- ${ (quad_rate)%(audio_rate) == 0 } + +templates: + imports: from gnuradio import analog + make: "analog.wfm_tx(\n\taudio_rate=${audio_rate},\n\tquad_rate=${quad_rate},\n\ + \ttau=${tau},\n\tmax_dev=${max_dev},\n\tfh=${fh},\n)" + +file_format: 1 diff --git a/gr-analog/grc/analog_wfm_tx.xml b/gr-analog/grc/analog_wfm_tx.xml deleted file mode 100644 index 507c2ea894..0000000000 --- a/gr-analog/grc/analog_wfm_tx.xml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##WBFM Transmit -################################################### - --> -<block> - <name>WBFM Transmit</name> - <key>analog_wfm_tx</key> - <import>from gnuradio import analog</import> - <make>analog.wfm_tx( - audio_rate=$audio_rate, - quad_rate=$quad_rate, - tau=$tau, - max_dev=$max_dev, - fh=$fh, -)</make> - <param> - <name>Audio Rate</name> - <key>audio_rate</key> - <type>int</type> - </param> - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>int</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <param> - <name>Max Deviation</name> - <key>max_dev</key> - <value>75e3</value> - <type>real</type> - </param> - <param> - <name>Preemphasis High Corner Freq</name> - <key>fh</key> - <value>-1.0</value> - <type>real</type> - </param> - <check>($quad_rate)%($audio_rate) == 0</check> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> -</block> diff --git a/gr-analog/python/analog/CMakeLists.txt b/gr-analog/python/analog/CMakeLists.txt index 1fed9d1890..ba3dfb5fc3 100644 --- a/gr-analog/python/analog/CMakeLists.txt +++ b/gr-analog/python/analog/CMakeLists.txt @@ -53,7 +53,7 @@ if(ENABLE_TESTING) file(GLOB py_qa_test_files "qa_*.py") foreach(py_qa_test_file ${py_qa_test_files}) get_filename_component(py_qa_test_name ${py_qa_test_file} NAME_WE) - GR_ADD_TEST(${py_qa_test_name} ${QA_PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${py_qa_test_file}) + GR_ADD_TEST(${py_qa_test_name} ${QA_PYTHON_EXECUTABLE} -B ${py_qa_test_file}) endforeach(py_qa_test_file) endif(ENABLE_TESTING) diff --git a/gr-analog/python/analog/__init__.py b/gr-analog/python/analog/__init__.py index 3c4a0ff624..79c19e1e3e 100644 --- a/gr-analog/python/analog/__init__.py +++ b/gr-analog/python/analog/__init__.py @@ -21,24 +21,26 @@ ''' Blocks and utilities for analog modulation and demodulation. ''' +from __future__ import absolute_import +from __future__ import unicode_literals # The presence of this file turns this directory into a Python package import os try: - from analog_swig import * + from .analog_swig import * except ImportError: dirname, filename = os.path.split(os.path.abspath(__file__)) __path__.append(os.path.join(dirname, "..", "..", "swig")) - from analog_swig import * + from .analog_swig import * -from am_demod import * -from fm_demod import * -from fm_emph import * -from nbfm_rx import * -from nbfm_tx import * -from standard_squelch import * -from wfm_rcv import * -from wfm_rcv_fmdet import * -from wfm_rcv_pll import * -from wfm_tx import * +from .am_demod import * +from .fm_demod import * +from .fm_emph import * +from .nbfm_rx import * +from .nbfm_tx import * +from .standard_squelch import * +from .wfm_rcv import * +from .wfm_rcv_fmdet import * +from .wfm_rcv_pll import * +from .wfm_tx import * diff --git a/gr-analog/python/analog/am_demod.py b/gr-analog/python/analog/am_demod.py index 3459e825f4..eeb8964f34 100644 --- a/gr-analog/python/analog/am_demod.py +++ b/gr-analog/python/analog/am_demod.py @@ -1,3 +1,4 @@ +from __future__ import unicode_literals # # Copyright 2006,2007,2012 Free Software Foundation, Inc. # @@ -39,22 +40,22 @@ class am_demod_cf(gr.hier_block2): audio_stop: audio low pass filter stop frequency (float) """ def __init__(self, channel_rate, audio_decim, audio_pass, audio_stop): - gr.hier_block2.__init__(self, "am_demod_cf", - gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature - gr.io_signature(1, 1, gr.sizeof_float)) # Input signature + gr.hier_block2.__init__(self, "am_demod_cf", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + gr.io_signature(1, 1, gr.sizeof_float)) # Input signature - MAG = blocks.complex_to_mag() - DCR = blocks.add_const_ff(-1.0) + MAG = blocks.complex_to_mag() + DCR = blocks.add_const_ff(-1.0) - audio_taps = filter.optfir.low_pass(0.5, # Filter gain + audio_taps = filter.optfir.low_pass(0.5, # Filter gain channel_rate, # Sample rate audio_pass, # Audio passband audio_stop, # Audio stopband - 0.1, # Passband ripple - 60) # Stopband attenuation - LPF = filter.fir_filter_fff(audio_decim, audio_taps) + 0.1, # Passband ripple + 60) # Stopband attenuation + LPF = filter.fir_filter_fff(audio_decim, audio_taps) - self.connect(self, MAG, DCR, LPF, self) + self.connect(self, MAG, DCR, LPF, self) class demod_10k0a3e_cf(am_demod_cf): """ @@ -68,6 +69,6 @@ class demod_10k0a3e_cf(am_demod_cf): audio_decim: input to output decimation rate (integer) """ def __init__(self, channel_rate, audio_decim): - am_demod_cf.__init__(self, channel_rate, audio_decim, - 5000, # Audio passband - 5500) # Audio stopband + am_demod_cf.__init__(self, channel_rate, audio_decim, + 5000, # Audio passband + 5500) # Audio stopband diff --git a/gr-analog/python/analog/fm_demod.py b/gr-analog/python/analog/fm_demod.py index 4e3c01d194..1344db831c 100644 --- a/gr-analog/python/analog/fm_demod.py +++ b/gr-analog/python/analog/fm_demod.py @@ -19,14 +19,15 @@ # Boston, MA 02110-1301, USA. # +from __future__ import absolute_import +from __future__ import division +from __future__ import unicode_literals + from gnuradio import gr, filter -from fm_emph import fm_deemph +from .fm_emph import fm_deemph from math import pi -try: - from gnuradio import analog -except ImportError: - import analog_swig as analog +from . import analog_swig as analog class fm_demod_cf(gr.hier_block2): @@ -54,7 +55,7 @@ class fm_demod_cf(gr.hier_block2): gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature gr.io_signature(1, 1, gr.sizeof_float)) # Output signature - k = channel_rate/(2*pi*deviation) + k = channel_rate / (2*pi*deviation) QUAD = analog.quadrature_demod_cf(k) audio_taps = filter.optfir.low_pass( diff --git a/gr-analog/python/analog/fm_emph.py b/gr-analog/python/analog/fm_emph.py index 348fb172d5..02bdd576ee 100644 --- a/gr-analog/python/analog/fm_emph.py +++ b/gr-analog/python/analog/fm_emph.py @@ -19,6 +19,10 @@ # Boston, MA 02110-1301, USA. # +from __future__ import print_function +from __future__ import division +from __future__ import unicode_literals + from gnuradio import gr, filter import math import cmath @@ -132,8 +136,8 @@ class fm_deemph(gr.hier_block2): # Since H(s = 0) = 1.0, then H(z = 1) = 1.0 and has 0 dB gain at DC if 0: - print "btaps =", btaps - print "ataps =", ataps + print("btaps =", btaps) + print("ataps =", ataps) global plot1 plot1 = gru.gnuplot_freqz(gru.freqz(btaps, ataps), fs, True) @@ -149,11 +153,11 @@ class fm_deemph(gr.hier_block2): # o------+ +-----+--------o # | R1 | | # +----/\/\/\/--+ \ -# / + # / # \ R2 # / # \ -# | + # | # o--------------------------+--------o # # (This fine ASCII rendition is based on Figure 5-15 @@ -263,44 +267,43 @@ class fm_preemph(gr.hier_block2): gr.io_signature(1, 1, gr.sizeof_float), # Input signature gr.io_signature(1, 1, gr.sizeof_float)) # Output signature - # Set fh to something sensible, if needed. - # N.B. fh == fs/2.0 or fh == 0.0 results in a pole on the unit circle - # at z = -1.0 or z = 1.0 respectively. That makes the filter unstable - # and useless. - if fh <= 0.0 or fh >= fs/2.0: - fh = 0.925 * fs/2.0 + # Set fh to something sensible, if needed. + # N.B. fh == fs/2.0 or fh == 0.0 results in a pole on the unit circle + # at z = -1.0 or z = 1.0 respectively. That makes the filter unstable + # and useless. + if fh <= 0.0 or fh >= fs / 2.0: + fh = 0.925 * fs/2.0 - # Digital corner frequencies - w_cl = 1.0 / tau - w_ch = 2.0 * math.pi * fh + # Digital corner frequencies + w_cl = 1.0 / tau + w_ch = 2.0 * math.pi * fh - # Prewarped analog corner frequencies - w_cla = 2.0 * fs * math.tan(w_cl / (2.0 * fs)) - w_cha = 2.0 * fs * math.tan(w_ch / (2.0 * fs)) + # Prewarped analog corner frequencies + w_cla = 2.0 * fs * math.tan(w_cl / (2.0 * fs)) + w_cha = 2.0 * fs * math.tan(w_ch / (2.0 * fs)) - # Resulting digital pole, zero, and gain term from the bilinear - # transformation of H(s) = (s + w_cla) / (s + w_cha) to - # H(z) = b0 (1 - z1 z^-1)/(1 - p1 z^-1) - kl = -w_cla / (2.0 * fs) - kh = -w_cha / (2.0 * fs) - z1 = (1.0 + kl) / (1.0 - kl) - p1 = (1.0 + kh) / (1.0 - kh) - b0 = (1.0 - kl) / (1.0 - kh) + # Resulting digital pole, zero, and gain term from the bilinear + # transformation of H(s) = (s + w_cla) / (s + w_cha) to + # H(z) = b0 (1 - z1 z^-1)/(1 - p1 z^-1) + kl = -w_cla / (2.0 * fs) + kh = -w_cha / (2.0 * fs) + z1 = (1.0 + kl) / (1.0 - kl) + p1 = (1.0 + kh) / (1.0 - kh) + b0 = (1.0 - kl) / (1.0 - kh) - # Since H(s = infinity) = 1.0, then H(z = -1) = 1.0 and - # this filter has 0 dB gain at fs/2.0. - # That isn't what users are going to expect, so adjust with a - # gain, g, so that H(z = 1) = 1.0 for 0 dB gain at DC. - w_0dB = 2.0 * math.pi * 0.0 - g = abs(1.0 - p1 * cmath.rect(1.0, -w_0dB)) \ - / (b0 * abs(1.0 - z1 * cmath.rect(1.0, -w_0dB))) + # Since H(s = infinity) = 1.0, then H(z = -1) = 1.0 and + # this filter has 0 dB gain at fs/2.0. + # That isn't what users are going to expect, so adjust with a + # gain, g, so that H(z = 1) = 1.0 for 0 dB gain at DC. + w_0dB = 2.0 * math.pi * 0.0 + g = abs(1.0 - p1 * cmath.rect(1.0 / -w_0dB), (b0 * abs(1.0 - z1 * cmath.rect(1.0, -w_0dB)))) - btaps = [ g * b0 * 1.0, g * b0 * -z1 ] - ataps = [ 1.0, -p1 ] + btaps = [ g * b0 * 1.0, g * b0 * -z1 ] + ataps = [ 1.0, -p1 ] if 0: - print "btaps =", btaps - print "ataps =", ataps + print("btaps =", btaps) + print("ataps =", ataps) global plot2 plot2 = gru.gnuplot_freqz(gru.freqz(btaps, ataps), fs, True) diff --git a/gr-analog/python/analog/nbfm_rx.py b/gr-analog/python/analog/nbfm_rx.py index 38fbf803c8..3e8dcd5287 100644 --- a/gr-analog/python/analog/nbfm_rx.py +++ b/gr-analog/python/analog/nbfm_rx.py @@ -19,15 +19,19 @@ # Boston, MA 02110-1301, USA. # +from __future__ import print_function +from __future__ import absolute_import +from __future__ import division +from __future__ import unicode_literals + import math + from gnuradio import gr from gnuradio import filter -from fm_emph import fm_deemph -try: - from gnuradio import analog -except ImportError: - import analog_swig as analog +from . import analog_swig as analog +from .fm_emph import fm_deemph + class nbfm_rx(gr.hier_block2): def __init__(self, audio_rate, quad_rate, tau=75e-6, max_dev=5e3): @@ -52,22 +56,22 @@ class nbfm_rx(gr.hier_block2): audio_filter """ - gr.hier_block2.__init__(self, "nbfm_rx", - gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature - gr.io_signature(1, 1, gr.sizeof_float)) # Output signature + gr.hier_block2.__init__(self, "nbfm_rx", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + gr.io_signature(1, 1, gr.sizeof_float)) # Output signature # FIXME audio_rate and quad_rate ought to be exact rationals self._audio_rate = audio_rate = int(audio_rate) self._quad_rate = quad_rate = int(quad_rate) if quad_rate % audio_rate != 0: - raise ValueError, "quad_rate is not an integer multiple of audio_rate" + raise ValueError("quad_rate is not an integer multiple of audio_rate") - squelch_threshold = 20 # dB + squelch_threshold = 20 # dB #self.squelch = analog.simple_squelch_cc(squelch_threshold, 0.001) # FM Demodulator input: complex; output: float - k = quad_rate/(2*math.pi*max_dev) + k = quad_rate / (2*math.pi*max_dev) self.quad_demod = analog.quadrature_demod_cf(k) # FM Deemphasis IIR filter @@ -81,7 +85,7 @@ class nbfm_rx(gr.hier_block2): 0.5e3, # Transition band filter.firdes.WIN_HAMMING) # filter type - print "len(audio_taps) =", len(audio_taps) + print("len(audio_taps) =", len(audio_taps)) # Decimating audio filter # input: float; output: float; taps: float @@ -90,5 +94,5 @@ class nbfm_rx(gr.hier_block2): self.connect(self, self.quad_demod, self.deemph, self.audio_filter, self) def set_max_deviation(self, max_dev): - k = self._quad_rate/(2*math.pi*max_dev) + k = self._quad_rate / (2*math.pi*max_dev) self.quad_demod.set_gain(k) diff --git a/gr-analog/python/analog/nbfm_tx.py b/gr-analog/python/analog/nbfm_tx.py index aa6c1eccc7..a7620451eb 100644 --- a/gr-analog/python/analog/nbfm_tx.py +++ b/gr-analog/python/analog/nbfm_tx.py @@ -19,14 +19,18 @@ # Boston, MA 02110-1301, USA. # +from __future__ import print_function +from __future__ import absolute_import +from __future__ import division +from __future__ import unicode_literals + import math + from gnuradio import gr, filter -from fm_emph import fm_preemph +from .fm_emph import fm_preemph + +from . import analog_swig as analog -try: - from gnuradio import analog -except ImportError: - import analog_swig as analog class nbfm_tx(gr.hier_block2): def __init__(self, audio_rate, quad_rate, tau=75e-6, max_dev=5e3, fh=-1.0): @@ -46,16 +50,16 @@ class nbfm_tx(gr.hier_block2): quad_rate must be an integer multiple of audio_rate. """ - gr.hier_block2.__init__(self, "nbfm_tx", - gr.io_signature(1, 1, gr.sizeof_float), # Input signature - gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature + gr.hier_block2.__init__(self, "nbfm_tx", + gr.io_signature(1, 1, gr.sizeof_float), # Input signature + gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature # FIXME audio_rate and quad_rate ought to be exact rationals self._audio_rate = audio_rate = int(audio_rate) self._quad_rate = quad_rate = int(quad_rate) if quad_rate % audio_rate != 0: - raise ValueError, "quad_rate is not an integer multiple of audio_rate" + raise ValueError("quad_rate is not an integer multiple of audio_rate") do_interp = audio_rate != quad_rate @@ -66,10 +70,10 @@ class nbfm_tx(gr.hier_block2): quad_rate, # Fs 4500, # passband cutoff 7000, # stopband cutoff - 0.1, # passband ripple dB + 0.1, # passband ripple dB 40) # stopband atten dB - #print "len(interp_taps) =", len(interp_taps) + #print("len(interp_taps) =", len(interp_taps)) self.interpolator = filter.interp_fir_filter_fff (interp_factor, interp_taps) self.preemph = fm_preemph(quad_rate, tau=tau, fh=fh) @@ -90,10 +94,10 @@ class nbfm_tx(gr.hier_block2): class ctcss_gen_f(gr.hier_block2): def __init__(self, sample_rate, tone_freq): - gr.hier_block2.__init__(self, "ctcss_gen_f", - gr.io_signature(0, 0, 0), # Input signature - gr.io_signature(1, 1, gr.sizeof_float)) # Output signature + gr.hier_block2.__init__(self, "ctcss_gen_f", + gr.io_signature(0, 0, 0), # Input signature + gr.io_signature(1, 1, gr.sizeof_float)) # Output signature self.plgen = analog.sig_source_f(sample_rate, analog.GR_SIN_WAVE, tone_freq, 0.1, 0.0) - self.connect(self.plgen, self) + self.connect(self.plgen, self) diff --git a/gr-analog/python/analog/qa_agc.py b/gr-analog/python/analog/qa_agc.py index 70c9ba578c..bac661f8b2 100755..100644 --- a/gr-analog/python/analog/qa_agc.py +++ b/gr-analog/python/analog/qa_agc.py @@ -20,6 +20,7 @@ # Boston, MA 02110-1301, USA. # + from gnuradio import gr, gr_unittest, analog, blocks class test_agc(gr_unittest.TestCase): @@ -33,10 +34,10 @@ class test_agc(gr_unittest.TestCase): def test_001_sets(self): agc = analog.agc_cc(1e-3, 1, 1) - agc.set_rate(1) - agc.set_reference(1.1) - agc.set_gain(1.1) - agc.set_max_gain(100) + agc.set_rate(1) + agc.set_reference(1.1) + agc.set_gain(1.1) + agc.set_max_gain(100) self.assertAlmostEqual(agc.rate(), 1) self.assertAlmostEqual(agc.reference(), 1.1) @@ -118,10 +119,10 @@ class test_agc(gr_unittest.TestCase): def test_002_sets(self): agc = analog.agc_ff(1e-3, 1, 1) - agc.set_rate(1) - agc.set_reference(1.1) - agc.set_gain(1.1) - agc.set_max_gain(100) + agc.set_rate(1) + agc.set_reference(1.1) + agc.set_gain(1.1) + agc.set_max_gain(100) self.assertAlmostEqual(agc.rate(), 1) self.assertAlmostEqual(agc.reference(), 1.1) @@ -203,11 +204,11 @@ class test_agc(gr_unittest.TestCase): def test_003_sets(self): agc = analog.agc2_cc(1e-3, 1e-1, 1, 1) - agc.set_attack_rate(1) - agc.set_decay_rate(2) - agc.set_reference(1.1) - agc.set_gain(1.1) - agc.set_max_gain(100) + agc.set_attack_rate(1) + agc.set_decay_rate(2) + agc.set_reference(1.1) + agc.set_gain(1.1) + agc.set_max_gain(100) self.assertAlmostEqual(agc.attack_rate(), 1) self.assertAlmostEqual(agc.decay_rate(), 2) @@ -290,11 +291,11 @@ class test_agc(gr_unittest.TestCase): def test_004_sets(self): agc = analog.agc2_ff(1e-3, 1e-1, 1, 1) - agc.set_attack_rate(1) - agc.set_decay_rate(2) - agc.set_reference(1.1) - agc.set_gain(1.1) - agc.set_max_gain(100) + agc.set_attack_rate(1) + agc.set_decay_rate(2) + agc.set_reference(1.1) + agc.set_gain(1.1) + agc.set_max_gain(100) self.assertAlmostEqual(agc.attack_rate(), 1) self.assertAlmostEqual(agc.decay_rate(), 2) @@ -450,10 +451,10 @@ class test_agc(gr_unittest.TestCase): def test_006_sets(self): agc = analog.agc3_cc(1e-3, 1e-1, 1) - agc.set_attack_rate(1) - agc.set_decay_rate(2) - agc.set_reference(1.1) - agc.set_gain(1.1) + agc.set_attack_rate(1) + agc.set_decay_rate(2) + agc.set_reference(1.1) + agc.set_gain(1.1) self.assertAlmostEqual(agc.attack_rate(), 1) self.assertAlmostEqual(agc.decay_rate(), 2) @@ -481,7 +482,7 @@ class test_agc(gr_unittest.TestCase): tb.run() dst_data = dst1.data() M = 100 - result = map(lambda x: abs(x), dst_data[N-M:]) + result = [abs(x) for x in dst_data[N-M:]] self.assertFloatTuplesAlmostEqual(result, M*[ref,], 4) def test_100(self): diff --git a/gr-analog/python/analog/qa_cpfsk.py b/gr-analog/python/analog/qa_cpfsk.py index be2e0a9b7e..ef8ea0cb3f 100755..100644 --- a/gr-analog/python/analog/qa_cpfsk.py +++ b/gr-analog/python/analog/qa_cpfsk.py @@ -20,6 +20,7 @@ # Boston, MA 02110-1301, USA. # + import math from gnuradio import gr, gr_unittest, analog, blocks @@ -50,7 +51,7 @@ class test_cpfsk_bc(gr_unittest.TestCase): def test_cpfsk_bc_002(self): src_data = 10*[0, 1] - expected_result = map(lambda x: complex(2*x-1,0), src_data) + expected_result = [complex(2*x-1,0) for x in src_data] src = blocks.vector_source_b(src_data) op = analog.cpfsk_bc(2, 1, 2) diff --git a/gr-analog/python/analog/qa_ctcss_squelch.py b/gr-analog/python/analog/qa_ctcss_squelch.py index 3be1e9de3b..f3db194f5d 100755..100644 --- a/gr-analog/python/analog/qa_ctcss_squelch.py +++ b/gr-analog/python/analog/qa_ctcss_squelch.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + from gnuradio import gr, gr_unittest, analog, blocks class test_ctcss_squelch(gr_unittest.TestCase): @@ -63,7 +65,7 @@ class test_ctcss_squelch(gr_unittest.TestCase): ramp = 1 gate = True - src_data = map(lambda x: float(x)/10.0, range(1, 40)) + src_data = [float(x) / 10.0 for x in range(1, 40)] expected_result = src_data expected_result[0] = 0 @@ -88,7 +90,7 @@ class test_ctcss_squelch(gr_unittest.TestCase): ramp = 1 gate = False - src_data = map(lambda x: float(x)/10.0, range(1, 40)) + src_data = [float(x) / 10.0 for x in range(1, 40)] src = blocks.vector_source_f(src_data) op = analog.ctcss_squelch_ff(rate, freq, level, length, ramp, gate) diff --git a/gr-analog/python/analog/qa_dpll.py b/gr-analog/python/analog/qa_dpll.py index 3ae8a3684b..2d215e3d9d 100755..100644 --- a/gr-analog/python/analog/qa_dpll.py +++ b/gr-analog/python/analog/qa_dpll.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + from gnuradio import gr, gr_unittest, analog, blocks class test_dpll_bb(gr_unittest.TestCase): @@ -42,7 +44,7 @@ class test_dpll_bb(gr_unittest.TestCase): self.assertAlmostEqual(g, 0.2) f = op.freq() - self.assertEqual(1/period, f) + self.assertEqual(1 / period, f) d0 = 1.0 - 0.5*f; d1 = op.decision_threshold() diff --git a/gr-analog/python/analog/qa_fastnoise.py b/gr-analog/python/analog/qa_fastnoise.py index 91e1cb87b7..e90fcfd96e 100644 --- a/gr-analog/python/analog/qa_fastnoise.py +++ b/gr-analog/python/analog/qa_fastnoise.py @@ -20,6 +20,7 @@ # Boston, MA 02110-1301, USA. # + from gnuradio import gr, gr_unittest, analog class test_fastnoise_source(gr_unittest.TestCase): diff --git a/gr-analog/python/analog/qa_fmdet.py b/gr-analog/python/analog/qa_fmdet.py index a9c88c3b95..77ad213411 100755..100644 --- a/gr-analog/python/analog/qa_fmdet.py +++ b/gr-analog/python/analog/qa_fmdet.py @@ -20,6 +20,7 @@ # Boston, MA 02110-1301, USA. # + from gnuradio import gr, gr_unittest, analog, blocks class test_fmdet_cf(gr_unittest.TestCase): diff --git a/gr-analog/python/analog/qa_frequency_modulator.py b/gr-analog/python/analog/qa_frequency_modulator.py index 0f5c45b11a..29282b0ea6 100755..100644 --- a/gr-analog/python/analog/qa_frequency_modulator.py +++ b/gr-analog/python/analog/qa_frequency_modulator.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + import math from gnuradio import gr, gr_unittest, analog, blocks @@ -38,9 +40,9 @@ class test_frequency_modulator(gr_unittest.TestCase): def test_fm_001(self): pi = math.pi - sensitivity = pi/4 - src_data = (1.0/4, 1.0/2, 1.0/4, -1.0/4, -1.0/2, -1/4.0) - running_sum = (pi/16, 3*pi/16, pi/4, 3*pi/16, pi/16, 0) + sensitivity = pi / 4 + src_data = (1.0 / 4, 1.0 / 2, 1.0 / 4, -1.0 / 4, -1.0 / 2, -1 / 4.0) + running_sum = (pi / 16, 3*pi/16, pi / 4, 3*pi/16, pi / 16, 0) expected_result = tuple([sincos(x) for x in running_sum]) src = blocks.vector_source_f(src_data) op = analog.frequency_modulator_fc(sensitivity) diff --git a/gr-analog/python/analog/qa_noise.py b/gr-analog/python/analog/qa_noise.py index 5576773f23..cf2e9e607f 100755..100644 --- a/gr-analog/python/analog/qa_noise.py +++ b/gr-analog/python/analog/qa_noise.py @@ -20,6 +20,7 @@ # Boston, MA 02110-1301, USA. # + from gnuradio import gr, gr_unittest, analog class test_noise_source(gr_unittest.TestCase): diff --git a/gr-analog/python/analog/qa_phase_modulator.py b/gr-analog/python/analog/qa_phase_modulator.py index c6223e5cd4..7f7d57fa75 100755..100644 --- a/gr-analog/python/analog/qa_phase_modulator.py +++ b/gr-analog/python/analog/qa_phase_modulator.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + import math from gnuradio import gr, gr_unittest, analog, blocks @@ -38,8 +40,8 @@ class test_phase_modulator(gr_unittest.TestCase): def test_fm_001(self): pi = math.pi - sensitivity = pi/4 - src_data = (1.0/4, 1.0/2, 1.0/4, -1.0/4, -1.0/2, -1/4.0) + sensitivity = pi / 4 + src_data = (1.0 / 4, 1.0 / 2, 1.0 / 4, -1.0 / 4, -1.0 / 2, -1 / 4.0) expected_result = tuple([sincos(sensitivity*x) for x in src_data]) src = blocks.vector_source_f(src_data) diff --git a/gr-analog/python/analog/qa_pll_carriertracking.py b/gr-analog/python/analog/qa_pll_carriertracking.py index 10ad414644..56bb14d2cb 100755..100644 --- a/gr-analog/python/analog/qa_pll_carriertracking.py +++ b/gr-analog/python/analog/qa_pll_carriertracking.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + import math from gnuradio import gr, gr_unittest, analog, blocks @@ -137,7 +139,7 @@ class test_pll_carriertracking(gr_unittest.TestCase): sampling_freq = 10e3 freq = sampling_freq / 100 - loop_bw = math.pi/100.0 + loop_bw = math.pi / 100.0 maxf = 1 minf = -1 diff --git a/gr-analog/python/analog/qa_pll_freqdet.py b/gr-analog/python/analog/qa_pll_freqdet.py index c7a8aa8363..2006dd7360 100755..100644 --- a/gr-analog/python/analog/qa_pll_freqdet.py +++ b/gr-analog/python/analog/qa_pll_freqdet.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + import math from gnuradio import gr, gr_unittest, analog, blocks @@ -137,7 +139,7 @@ class test_pll_freqdet(gr_unittest.TestCase): sampling_freq = 10e3 freq = sampling_freq / 100 - loop_bw = math.pi/100.0 + loop_bw = math.pi / 100.0 maxf = 1 minf = -1 @@ -153,7 +155,7 @@ class test_pll_freqdet(gr_unittest.TestCase): dst_data = dst.data() # convert it from normalized frequency to absolute frequency (Hz) - dst_data = [i*(sampling_freq/(2*math.pi)) for i in dst_data] + dst_data = [i*(sampling_freq / (2*math.pi)) for i in dst_data] self.assertFloatTuplesAlmostEqual(expected_result, dst_data, 3) diff --git a/gr-analog/python/analog/qa_pll_refout.py b/gr-analog/python/analog/qa_pll_refout.py index 835b6a4522..ac1139cc03 100755..100644 --- a/gr-analog/python/analog/qa_pll_refout.py +++ b/gr-analog/python/analog/qa_pll_refout.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + import math from gnuradio import gr, gr_unittest, analog, blocks @@ -137,7 +139,7 @@ class test_pll_refout(gr_unittest.TestCase): sampling_freq = 10e3 freq = sampling_freq / 100 - loop_bw = math.pi/100.0 + loop_bw = math.pi / 100.0 maxf = 1 minf = -1 diff --git a/gr-analog/python/analog/qa_probe_avg_mag_sqrd.py b/gr-analog/python/analog/qa_probe_avg_mag_sqrd.py index a52c0806e3..68652eb364 100755..100644 --- a/gr-analog/python/analog/qa_probe_avg_mag_sqrd.py +++ b/gr-analog/python/analog/qa_probe_avg_mag_sqrd.py @@ -20,6 +20,7 @@ # Boston, MA 02110-1301, USA. # + import math from gnuradio import gr, gr_unittest, analog, blocks diff --git a/gr-analog/python/analog/qa_pwr_squelch.py b/gr-analog/python/analog/qa_pwr_squelch.py index 561ca79a7c..9f84a61402 100755..100644 --- a/gr-analog/python/analog/qa_pwr_squelch.py +++ b/gr-analog/python/analog/qa_pwr_squelch.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + from gnuradio import gr, gr_unittest, analog, blocks class test_pwr_squelch(gr_unittest.TestCase): @@ -61,7 +63,7 @@ class test_pwr_squelch(gr_unittest.TestCase): alpha = 0.0001 thr = -25 - src_data = map(lambda x: float(x)/10.0, range(1, 40)) + src_data = [float(x) / 10.0 for x in range(1, 40)] src = blocks.vector_source_c(src_data) op = analog.pwr_squelch_cc(thr, alpha) dst = blocks.vector_sink_c() @@ -107,7 +109,7 @@ class test_pwr_squelch(gr_unittest.TestCase): alpha = 0.0001 thr = -25 - src_data = map(lambda x: float(x)/10.0, range(1, 40)) + src_data = [float(x) / 10.0 for x in range(1, 40)] src = blocks.vector_source_f(src_data) op = analog.pwr_squelch_ff(thr, alpha) dst = blocks.vector_sink_f() diff --git a/gr-analog/python/analog/qa_quadrature_demod.py b/gr-analog/python/analog/qa_quadrature_demod.py index 08f3f4600e..e3a513b9ab 100755..100644 --- a/gr-analog/python/analog/qa_quadrature_demod.py +++ b/gr-analog/python/analog/qa_quadrature_demod.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + import cmath from gnuradio import gr, gr_unittest, analog, blocks @@ -37,13 +39,13 @@ class test_quadrature_demod(gr_unittest.TestCase): fs = 8000.0 src_data = [] - for i in xrange(200): - ti = i/fs + for i in range(200): + ti = i / fs src_data.append(cmath.exp(2j*cmath.pi*f*ti)) # f/fs is a quarter turn per sample. # Set the gain based on this to get 1 out. - gain = 1.0/(cmath.pi/4) + gain = 1.0 / (cmath.pi / 4) expected_result = [0,] + 199*[1.0] diff --git a/gr-analog/python/analog/qa_rail_ff.py b/gr-analog/python/analog/qa_rail_ff.py index e3990dfd3a..93cde00a97 100755..100644 --- a/gr-analog/python/analog/qa_rail_ff.py +++ b/gr-analog/python/analog/qa_rail_ff.py @@ -20,6 +20,7 @@ # Boston, MA 02110-1301, USA. # + from gnuradio import gr, gr_unittest, analog, blocks def clip(x, lo, hi): @@ -60,7 +61,7 @@ class test_rail(gr_unittest.TestCase): lo = -0.75 hi = 0.90 src_data = [-2, -1, -0.5, -0.25, 0, 0.25, 0.5, 1, 2] - expected_result = map(lambda x: clip(x, lo, hi), src_data) + expected_result = [clip(x, lo, hi) for x in src_data] src = blocks.vector_source_f(src_data) op = analog.rail_ff(lo, hi) diff --git a/gr-analog/python/analog/qa_random_uniform_source.py b/gr-analog/python/analog/qa_random_uniform_source.py index 474c5716c7..d02ea7ea87 100755..100644 --- a/gr-analog/python/analog/qa_random_uniform_source.py +++ b/gr-analog/python/analog/qa_random_uniform_source.py @@ -21,6 +21,7 @@ # Boston, MA 02110-1301, USA. # + from gnuradio import gr, gr_unittest from gnuradio import blocks, analog import numpy as np diff --git a/gr-analog/python/analog/qa_sig_source.py b/gr-analog/python/analog/qa_sig_source.py index 8d050fa72b..a38db29280 100755..100644 --- a/gr-analog/python/analog/qa_sig_source.py +++ b/gr-analog/python/analog/qa_sig_source.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + import math import pmt from gnuradio import gr, gr_unittest, analog, blocks diff --git a/gr-analog/python/analog/qa_simple_squelch.py b/gr-analog/python/analog/qa_simple_squelch.py index b09a3b2a87..a0b09e7198 100755..100644 --- a/gr-analog/python/analog/qa_simple_squelch.py +++ b/gr-analog/python/analog/qa_simple_squelch.py @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import division + from gnuradio import gr, gr_unittest, analog, blocks class test_simple_squelch(gr_unittest.TestCase): @@ -48,7 +50,7 @@ class test_simple_squelch(gr_unittest.TestCase): alpha = 0.0001 thr = -25 - src_data = map(lambda x: float(x)/10.0, range(1, 40)) + src_data = [float(x) / 10.0 for x in range(1, 40)] src = blocks.vector_source_c(src_data) op = analog.simple_squelch_cc(thr, alpha) dst = blocks.vector_sink_c() diff --git a/gr-analog/python/analog/standard_squelch.py b/gr-analog/python/analog/standard_squelch.py index 3ed9ebceaa..9609f2449e 100644 --- a/gr-analog/python/analog/standard_squelch.py +++ b/gr-analog/python/analog/standard_squelch.py @@ -1,3 +1,5 @@ +from __future__ import division +from __future__ import unicode_literals # # Copyright 2005,2007,2012 Free Software Foundation, Inc. # @@ -26,29 +28,29 @@ from gnuradio import filter class standard_squelch(gr.hier_block2): def __init__(self, audio_rate): - gr.hier_block2.__init__(self, "standard_squelch", - gr.io_signature(1, 1, gr.sizeof_float), # Input signature - gr.io_signature(1, 1, gr.sizeof_float)) # Output signature + gr.hier_block2.__init__(self, "standard_squelch", + gr.io_signature(1, 1, gr.sizeof_float), # Input signature + gr.io_signature(1, 1, gr.sizeof_float)) # Output signature self.input_node = blocks.add_const_ff(0) # FIXME kludge self.low_iir = filter.iir_filter_ffd((0.0193,0,-0.0193),(1,1.9524,-0.9615)) self.low_square = blocks.multiply_ff() - self.low_smooth = filter.single_pole_iir_filter_ff(1/(0.01*audio_rate)) # 100ms time constant + self.low_smooth = filter.single_pole_iir_filter_ff(1 / (0.01*audio_rate)) # 100ms time constant self.hi_iir = filter.iir_filter_ffd((0.0193,0,-0.0193),(1,1.3597,-0.9615)) self.hi_square = blocks.multiply_ff() - self.hi_smooth = filter.single_pole_iir_filter_ff(1/(0.01*audio_rate)) + self.hi_smooth = filter.single_pole_iir_filter_ff(1 / (0.01*audio_rate)) self.sub = blocks.sub_ff(); self.add = blocks.add_ff(); self.gate = blocks.threshold_ff(0.3,0.43,0) - self.squelch_lpf = filter.single_pole_iir_filter_ff(1/(0.01*audio_rate)) + self.squelch_lpf = filter.single_pole_iir_filter_ff(1 / (0.01*audio_rate)) self.div = blocks.divide_ff() self.squelch_mult = blocks.multiply_ff() - self.connect(self, self.input_node) + self.connect(self, self.input_node) self.connect(self.input_node, (self.squelch_mult, 0)) self.connect(self.input_node,self.low_iir) @@ -66,7 +68,7 @@ class standard_squelch(gr.hier_block2): self.connect(self.sub, (self.div, 0)) self.connect(self.add, (self.div, 1)) self.connect(self.div, self.gate, self.squelch_lpf, (self.squelch_mult,1)) - self.connect(self.squelch_mult, self) + self.connect(self.squelch_mult, self) def set_threshold(self, threshold): self.gate.set_hi(threshold) @@ -75,4 +77,4 @@ class standard_squelch(gr.hier_block2): return self.gate.hi() def squelch_range(self): - return (0.0, 1.0, 1.0/100) + return (0.0, 1.0, 1.0 / 100) diff --git a/gr-analog/python/analog/wfm_rcv.py b/gr-analog/python/analog/wfm_rcv.py index d35d219275..c1f6dea339 100644 --- a/gr-analog/python/analog/wfm_rcv.py +++ b/gr-analog/python/analog/wfm_rcv.py @@ -19,14 +19,17 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, filter -from fm_emph import fm_deemph +from __future__ import absolute_import +from __future__ import division +from __future__ import unicode_literals + import math -try: - from gnuradio import analog -except ImportError: - import analog_swig as analog +from gnuradio import gr, filter + +from . import analog_swig as analog +from .fm_emph import fm_deemph + class wfm_rcv(gr.hier_block2): def __init__ (self, quad_rate, audio_decimation): @@ -40,14 +43,14 @@ class wfm_rcv(gr.hier_block2): quad_rate: input sample rate of complex baseband input. (float) audio_decimation: how much to decimate quad_rate to get to audio. (integer) """ - gr.hier_block2.__init__(self, "wfm_rcv", - gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature - gr.io_signature(1, 1, gr.sizeof_float)) # Output signature + gr.hier_block2.__init__(self, "wfm_rcv", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + gr.io_signature(1, 1, gr.sizeof_float)) # Output signature volume = 20. max_dev = 75e3 - fm_demod_gain = quad_rate/(2*math.pi*max_dev) + fm_demod_gain = quad_rate / (2*math.pi*max_dev) audio_rate = quad_rate / audio_decimation @@ -64,7 +67,7 @@ class wfm_rcv(gr.hier_block2): width_of_transition_band = audio_rate / 32 audio_coeffs = filter.firdes.low_pass(1.0, # gain quad_rate, # sampling rate - audio_rate/2 - width_of_transition_band, + audio_rate / 2 - width_of_transition_band, width_of_transition_band, filter.firdes.WIN_HAMMING) # input: float; output: float diff --git a/gr-analog/python/analog/wfm_rcv_fmdet.py b/gr-analog/python/analog/wfm_rcv_fmdet.py index b7cd1458fb..fe91465a3b 100644 --- a/gr-analog/python/analog/wfm_rcv_fmdet.py +++ b/gr-analog/python/analog/wfm_rcv_fmdet.py @@ -19,16 +19,19 @@ # Boston, MA 02110-1301, USA. # +from __future__ import absolute_import +from __future__ import division +from __future__ import unicode_literals + +import math + from gnuradio import gr from gnuradio import blocks from gnuradio import filter -from fm_emph import fm_deemph -import math -try: - from gnuradio import analog -except ImportError: - import analog_swig as analog +from . import analog_swig as analog +from .fm_emph import fm_deemph + class wfm_rcv_fmdet(gr.hier_block2): def __init__ (self, demod_rate, audio_decimation): @@ -43,11 +46,11 @@ class wfm_rcv_fmdet(gr.hier_block2): demod_rate: input sample rate of complex baseband input. (float) audio_decimation: how much to decimate demod_rate to get to audio. (integer) """ - gr.hier_block2.__init__(self, "wfm_rcv_fmdet", - gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature - gr.io_signature(2, 2, gr.sizeof_float)) # Output signature - lowfreq = -125e3/demod_rate - highfreq = 125e3/demod_rate + gr.hier_block2.__init__(self, "wfm_rcv_fmdet", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + gr.io_signature(2, 2, gr.sizeof_float)) # Output signature + lowfreq = -125e3 / demod_rate + highfreq = 125e3 / demod_rate audio_rate = demod_rate / audio_decimation # We assign to self so that outsiders can grab the demodulator @@ -98,8 +101,8 @@ class wfm_rcv_fmdet(gr.hier_block2): stereo_dsbsc_filter_coeffs = \ filter.firdes.complex_band_pass(20.0, demod_rate, - 38000-15000/2, - 38000+15000/2, + 38000-15000 / 2, + 38000+15000 / 2, width_of_transition_band, filter.firdes.WIN_HAMMING) #print "len stereo dsbsc filter = ",len(stereo_dsbsc_filter_coeffs) @@ -127,12 +130,12 @@ class wfm_rcv_fmdet(gr.hier_block2): #print "stereo dsbsc filter ", stereo_dsbsc_filter_coeffs # construct overlap add filter system from coefficients for stereo carrier - self.rds_signal_filter = \ + self.rds_signal_filter = \ filter.fir_filter_fcc(audio_decimation, stereo_rds_filter_coeffs) - self.rds_carrier_generator = blocks.multiply_cc(); - self.rds_signal_generator = blocks.multiply_cc(); - self_rds_signal_processor = blocks.null_sink(gr.sizeof_gr_complex); + self.rds_carrier_generator = blocks.multiply_cc(); + self.rds_signal_generator = blocks.multiply_cc(); + self_rds_signal_processor = blocks.null_sink(gr.sizeof_gr_complex); loop_bw = 2*math.pi/100.0 max_freq = -2.0*math.pi*18990/audio_rate; @@ -191,21 +194,21 @@ class wfm_rcv_fmdet(gr.hier_block2): #send it to negative side of a subtracter self.connect(self.LmR_real,(self.Make_Right,1)) - # Make rds carrier by taking the squared pilot tone and - # multiplying by pilot tone - self.connect(self.stereo_basebander,(self.rds_carrier_generator,0)) + # Make rds carrier by taking the squared pilot tone and + # multiplying by pilot tone + self.connect(self.stereo_basebander,(self.rds_carrier_generator,0)) self.connect(self.stereo_carrier_pll_recovery,(self.rds_carrier_generator,1)) - # take signal, filter off rds, send into mixer 0 channel - self.connect(self.fm_demod,self.rds_signal_filter,(self.rds_signal_generator,0)) + # take signal, filter off rds, send into mixer 0 channel + self.connect(self.fm_demod,self.rds_signal_filter,(self.rds_signal_generator,0)) # take rds_carrier_generator output and send into mixer 1 # channel - self.connect(self.rds_carrier_generator,(self.rds_signal_generator,1)) + self.connect(self.rds_carrier_generator,(self.rds_signal_generator,1)) - # send basebanded rds signal and send into "processor" - # which for now is a null sink - self.connect(self.rds_signal_generator,self_rds_signal_processor) + # send basebanded rds signal and send into "processor" + # which for now is a null sink + self.connect(self.rds_signal_generator,self_rds_signal_processor) if 1: diff --git a/gr-analog/python/analog/wfm_rcv_pll.py b/gr-analog/python/analog/wfm_rcv_pll.py index 282e2b14be..b6ca7fe7c2 100644 --- a/gr-analog/python/analog/wfm_rcv_pll.py +++ b/gr-analog/python/analog/wfm_rcv_pll.py @@ -19,16 +19,19 @@ # Boston, MA 02110-1301, USA. # +from __future__ import absolute_import +from __future__ import division +from __future__ import unicode_literals + +import math + from gnuradio import gr from gnuradio import blocks from gnuradio import filter -from fm_emph import fm_deemph -import math -try: - from gnuradio import analog -except ImportError: - import analog_swig as analog +from . import analog_swig as analog +from .fm_emph import fm_deemph + class wfm_rcv_pll(gr.hier_block2): def __init__(self, demod_rate, audio_decimation): @@ -42,9 +45,9 @@ class wfm_rcv_pll(gr.hier_block2): demod_rate: input sample rate of complex baseband input. (float) audio_decimation: how much to decimate demod_rate to get to audio. (integer) """ - gr.hier_block2.__init__(self, "wfm_rcv_pll", - gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature - gr.io_signature(2, 2, gr.sizeof_float)) # Output signature + gr.hier_block2.__init__(self, "wfm_rcv_pll", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + gr.io_signature(2, 2, gr.sizeof_float)) # Output signature bandwidth = 250e3 audio_rate = demod_rate / audio_decimation @@ -92,8 +95,8 @@ class wfm_rcv_pll(gr.hier_block2): stereo_dsbsc_filter_coeffs = \ filter.firdes.complex_band_pass(20.0, demod_rate, - 38000-15000/2, - 38000+15000/2, + 38000-15000 / 2, + 38000+15000 / 2, width_of_transition_band, filter.firdes.WIN_HAMMING) #print "len stereo dsbsc filter = ",len(stereo_dsbsc_filter_coeffs) @@ -120,12 +123,12 @@ class wfm_rcv_pll(gr.hier_block2): #print "stereo dsbsc filter ", stereo_dsbsc_filter_coeffs # construct overlap add filter system from coefficients for stereo carrier - self.rds_signal_filter = \ + self.rds_signal_filter = \ filter.fir_filter_fcc(audio_decimation, stereo_rds_filter_coeffs) - self.rds_carrier_generator = blocks.multiply_cc(); - self.rds_signal_generator = blocks.multiply_cc(); - self_rds_signal_processor = blocks.null_sink(gr.sizeof_gr_complex); + self.rds_carrier_generator = blocks.multiply_cc(); + self.rds_signal_generator = blocks.multiply_cc(); + self_rds_signal_processor = blocks.null_sink(gr.sizeof_gr_complex); loop_bw = 2*math.pi/100.0 max_freq = -2.0*math.pi*18990/audio_rate; @@ -169,15 +172,15 @@ class wfm_rcv_pll(gr.hier_block2): #take the same real part of the DSBSC baseband signal and send it to negative side of a subtracter self.connect(self.LmR_real,(self.Make_Right,1)) - # Make rds carrier by taking the squared pilot tone and multiplying by pilot tone - self.connect(self.stereo_basebander,(self.rds_carrier_generator,0)) + # Make rds carrier by taking the squared pilot tone and multiplying by pilot tone + self.connect(self.stereo_basebander,(self.rds_carrier_generator,0)) self.connect(self.stereo_carrier_pll_recovery,(self.rds_carrier_generator,1)) - # take signal, filter off rds, send into mixer 0 channel - self.connect(self.fm_demod,self.rds_signal_filter,(self.rds_signal_generator,0)) + # take signal, filter off rds, send into mixer 0 channel + self.connect(self.fm_demod,self.rds_signal_filter,(self.rds_signal_generator,0)) # take rds_carrier_generator output and send into mixer 1 channel - self.connect(self.rds_carrier_generator,(self.rds_signal_generator,1)) - # send basebanded rds signal and send into "processor" which for now is a null sink - self.connect(self.rds_signal_generator,self_rds_signal_processor) + self.connect(self.rds_carrier_generator,(self.rds_signal_generator,1)) + # send basebanded rds signal and send into "processor" which for now is a null sink + self.connect(self.rds_signal_generator,self_rds_signal_processor) if 1: diff --git a/gr-analog/python/analog/wfm_tx.py b/gr-analog/python/analog/wfm_tx.py index a1b589350d..9f49ca3ca2 100644 --- a/gr-analog/python/analog/wfm_tx.py +++ b/gr-analog/python/analog/wfm_tx.py @@ -19,15 +19,19 @@ # Boston, MA 02110-1301, USA. # +from __future__ import print_function +from __future__ import absolute_import +from __future__ import division +from __future__ import unicode_literals + import math + from gnuradio import gr from gnuradio import filter -from fm_emph import fm_preemph -try: - from gnuradio import analog -except ImportError: - import analog_swig as analog +from . import analog_swig as analog +from .fm_emph import fm_preemph + class wfm_tx(gr.hier_block2): def __init__(self, audio_rate, quad_rate, tau=75e-6, max_dev=75e3, fh=-1.0): @@ -46,16 +50,16 @@ class wfm_tx(gr.hier_block2): quad_rate must be an integer multiple of audio_rate. """ - gr.hier_block2.__init__(self, "wfm_tx", - gr.io_signature(1, 1, gr.sizeof_float), # Input signature - gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature + gr.hier_block2.__init__(self, "wfm_tx", + gr.io_signature(1, 1, gr.sizeof_float), # Input signature + gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature # FIXME audio_rate and quad_rate ought to be exact rationals audio_rate = int(audio_rate) quad_rate = int(quad_rate) if quad_rate % audio_rate != 0: - raise ValueError, "quad_rate is not an integer multiple of audio_rate" + raise ValueError("quad_rate is not an integer multiple of audio_rate") do_interp = audio_rate != quad_rate @@ -66,10 +70,10 @@ class wfm_tx(gr.hier_block2): quad_rate, # Fs 16000, # passband cutoff 18000, # stopband cutoff - 0.1, # passband ripple dB + 0.1, # passband ripple dB 40) # stopband atten dB - print "len(interp_taps) =", len(interp_taps) + print("len(interp_taps) =", len(interp_taps)) self.interpolator = filter.interp_fir_filter_fff (interp_factor, interp_taps) self.preemph = fm_preemph(quad_rate, tau=tau, fh=fh) |