summaryrefslogtreecommitdiff
path: root/gnuradio-examples/python
diff options
context:
space:
mode:
authorJosh Blum2011-09-28 22:16:41 -0700
committerJosh Blum2011-09-28 22:16:41 -0700
commit3f7db0afa99caeecb18428d7514dadd380d88d56 (patch)
treeb513683057e96d03ff8138100d6059d80e7b3265 /gnuradio-examples/python
parent60fd23a703bb16065717159bdd5ec9edf03d7302 (diff)
parent9e73c4e8372bc581d686d5e82a808894d41523ec (diff)
downloadgnuradio-3f7db0afa99caeecb18428d7514dadd380d88d56.tar.gz
gnuradio-3f7db0afa99caeecb18428d7514dadd380d88d56.tar.bz2
gnuradio-3f7db0afa99caeecb18428d7514dadd380d88d56.zip
Merge branch 'next' into digital
Conflicts: gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h gnuradio-core/src/lib/general/general.i gnuradio-core/src/lib/general/gr_pll_carriertracking_cc.cc gnuradio-core/src/lib/general/gr_pll_freqdet_cf.cc gnuradio-core/src/lib/general/gr_pll_refout_cc.cc gnuradio-core/src/python/gnuradio/gr/qa_pll_carriertracking.py gnuradio-core/src/python/gnuradio/gr/qa_pll_freqdet.py gnuradio-core/src/python/gnuradio/gr/qa_pll_refout.py
Diffstat (limited to 'gnuradio-examples/python')
-rw-r--r--gnuradio-examples/python/Makefile.am1
-rwxr-xr-xgnuradio-examples/python/ofdm/gr_plot_ofdm.py20
-rwxr-xr-xgnuradio-examples/python/pfb/channelize.py19
-rwxr-xr-xgnuradio-examples/python/pfb/chirp_channelize.py19
-rwxr-xr-xgnuradio-examples/python/pfb/decimate.py23
-rwxr-xr-xgnuradio-examples/python/pfb/fmtest.py42
-rwxr-xr-xgnuradio-examples/python/pfb/interpolate.py23
-rwxr-xr-xgnuradio-examples/python/pfb/resampler.py34
-rwxr-xr-xgnuradio-examples/python/pfb/synth_filter.py14
-rwxr-xr-xgnuradio-examples/python/pfb/synth_to_chan.py14
-rw-r--r--gnuradio-examples/python/tags/.gitignore2
-rw-r--r--gnuradio-examples/python/tags/Makefile.am29
-rwxr-xr-xgnuradio-examples/python/tags/test_file_tags.py28
-rwxr-xr-xgnuradio-examples/python/tags/uhd_burst_detector.py66
14 files changed, 271 insertions, 63 deletions
diff --git a/gnuradio-examples/python/Makefile.am b/gnuradio-examples/python/Makefile.am
index eba4c14ab..3f1977e74 100644
--- a/gnuradio-examples/python/Makefile.am
+++ b/gnuradio-examples/python/Makefile.am
@@ -31,5 +31,6 @@ SUBDIRS = \
network \
ofdm \
pfb \
+ tags \
usrp \
usrp2
diff --git a/gnuradio-examples/python/ofdm/gr_plot_ofdm.py b/gnuradio-examples/python/ofdm/gr_plot_ofdm.py
index e3b347189..b24855148 100755
--- a/gnuradio-examples/python/ofdm/gr_plot_ofdm.py
+++ b/gnuradio-examples/python/ofdm/gr_plot_ofdm.py
@@ -20,14 +20,24 @@
# Boston, MA 02110-1301, USA.
#
-import scipy, pylab, math
-import struct, sys
-from pylab import *
-from matplotlib.font_manager import fontManager, FontProperties
+import math, struct, sys
from optparse import OptionParser
-from scipy import fftpack
from math import log10
+try:
+ import scipy
+ from scipy import fftpack
+except ImportError:
+ print "Error: Program requires scipy (see: www.scipy.org)."
+ sys.exit(1)
+
+try:
+ from pylab import *
+ from matplotlib.font_manager import fontManager, FontProperties
+except ImportError:
+ print "Error: Program requires matplotlib (see: matplotlib.sourceforge.net)."
+ sys.exit(1)
+
matplotlib.interactive(True)
matplotlib.use('TkAgg')
diff --git a/gnuradio-examples/python/pfb/channelize.py b/gnuradio-examples/python/pfb/channelize.py
index f845c05c6..999e5d20e 100755
--- a/gnuradio-examples/python/pfb/channelize.py
+++ b/gnuradio-examples/python/pfb/channelize.py
@@ -21,10 +21,21 @@
#
from gnuradio import gr, blks2
-import os, time
-import scipy, pylab
-from scipy import fftpack
-from pylab import mlab
+import sys, time
+
+try:
+ import scipy
+ from scipy import fftpack
+except ImportError:
+ print "Error: Program requires scipy (see: www.scipy.org)."
+ sys.exit(1)
+
+try:
+ import pylab
+ from pylab import mlab
+except ImportError:
+ print "Error: Program requires matplotlib (see: matplotlib.sourceforge.net)."
+ sys.exit(1)
class pfb_top_block(gr.top_block):
def __init__(self):
diff --git a/gnuradio-examples/python/pfb/chirp_channelize.py b/gnuradio-examples/python/pfb/chirp_channelize.py
index edebf5f59..951255d3b 100755
--- a/gnuradio-examples/python/pfb/chirp_channelize.py
+++ b/gnuradio-examples/python/pfb/chirp_channelize.py
@@ -21,10 +21,21 @@
#
from gnuradio import gr, blks2
-import os, time
-import scipy, pylab
-from scipy import fftpack
-from pylab import mlab
+import sys, time
+
+try:
+ import scipy
+ from scipy import fftpack
+except ImportError:
+ print "Error: Program requires scipy (see: www.scipy.org)."
+ sys.exit(1)
+
+try:
+ import pylab
+ from pylab import mlab
+except ImportError:
+ print "Error: Program requires matplotlib (see: matplotlib.sourceforge.net)."
+ sys.exit(1)
class pfb_top_block(gr.top_block):
def __init__(self):
diff --git a/gnuradio-examples/python/pfb/decimate.py b/gnuradio-examples/python/pfb/decimate.py
index cb5d61b72..643a2c241 100755
--- a/gnuradio-examples/python/pfb/decimate.py
+++ b/gnuradio-examples/python/pfb/decimate.py
@@ -21,14 +21,21 @@
#
from gnuradio import gr, blks2
-import os
-import scipy, pylab
-from scipy import fftpack
-from pylab import mlab
-import time
-
-#print os.getpid()
-#raw_input()
+import sys, time
+
+try:
+ import scipy
+ from scipy import fftpack
+except ImportError:
+ print "Error: Program requires scipy (see: www.scipy.org)."
+ sys.exit(1)
+
+try:
+ import pylab
+ from pylab import mlab
+except ImportError:
+ print "Error: Program requires matplotlib (see: matplotlib.sourceforge.net)."
+ sys.exit(1)
class pfb_top_block(gr.top_block):
def __init__(self):
diff --git a/gnuradio-examples/python/pfb/fmtest.py b/gnuradio-examples/python/pfb/fmtest.py
index 97df0e0f5..635ee4e9e 100755
--- a/gnuradio-examples/python/pfb/fmtest.py
+++ b/gnuradio-examples/python/pfb/fmtest.py
@@ -1,14 +1,42 @@
#!/usr/bin/env python
#
+# Copyright 2009 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+from gnuradio import gr, blks2
+import sys, math, time
+
+try:
+ import scipy
+ from scipy import fftpack
+except ImportError:
+ 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)."
+ sys.exit(1)
-from gnuradio import gr, eng_notation
-from gnuradio import blks2
-from gnuradio.eng_option import eng_option
-from optparse import OptionParser
-import math, time, sys, scipy, pylab
-from scipy import fftpack
-
class fmtx(gr.hier_block2):
def __init__(self, lo_freq, audio_rate, if_rate):
diff --git a/gnuradio-examples/python/pfb/interpolate.py b/gnuradio-examples/python/pfb/interpolate.py
index a7a2522f8..370cf26a7 100755
--- a/gnuradio-examples/python/pfb/interpolate.py
+++ b/gnuradio-examples/python/pfb/interpolate.py
@@ -21,14 +21,21 @@
#
from gnuradio import gr, blks2
-import os
-import scipy, pylab
-from scipy import fftpack
-from pylab import mlab
-import time
-
-#print os.getpid()
-#raw_input()
+import sys, time
+
+try:
+ import scipy
+ from scipy import fftpack
+except ImportError:
+ print "Error: Program requires scipy (see: www.scipy.org)."
+ sys.exit(1)
+
+try:
+ import pylab
+ from pylab import mlab
+except ImportError:
+ print "Error: Program requires matplotlib (see: matplotlib.sourceforge.net)."
+ sys.exit(1)
class pfb_top_block(gr.top_block):
def __init__(self):
diff --git a/gnuradio-examples/python/pfb/resampler.py b/gnuradio-examples/python/pfb/resampler.py
index 6be7cf14e..7b296ca71 100755
--- a/gnuradio-examples/python/pfb/resampler.py
+++ b/gnuradio-examples/python/pfb/resampler.py
@@ -1,7 +1,39 @@
#!/usr/bin/env python
+#
+# Copyright 2009 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
from gnuradio import gr, blks2
-import scipy, pylab
+import sys
+
+try:
+ import scipy
+except ImportError:
+ 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)."
+ sys.exit(1)
class mytb(gr.top_block):
def __init__(self, fs_in, fs_out, fc, N=10000):
diff --git a/gnuradio-examples/python/pfb/synth_filter.py b/gnuradio-examples/python/pfb/synth_filter.py
index a1562f9ea..074d9cb2c 100755
--- a/gnuradio-examples/python/pfb/synth_filter.py
+++ b/gnuradio-examples/python/pfb/synth_filter.py
@@ -21,7 +21,19 @@
#
from gnuradio import gr, blks2
-import scipy, pylab
+import sys
+
+try:
+ import scipy
+except ImportError:
+ 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)."
+ sys.exit(1)
def main():
N = 1000000
diff --git a/gnuradio-examples/python/pfb/synth_to_chan.py b/gnuradio-examples/python/pfb/synth_to_chan.py
index 1beda1a54..7e454d903 100755
--- a/gnuradio-examples/python/pfb/synth_to_chan.py
+++ b/gnuradio-examples/python/pfb/synth_to_chan.py
@@ -21,7 +21,19 @@
#
from gnuradio import gr, blks2
-import scipy, pylab
+import sys
+
+try:
+ import scipy
+except ImportError:
+ 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)."
+ sys.exit(1)
def main():
N = 1000000
diff --git a/gnuradio-examples/python/tags/.gitignore b/gnuradio-examples/python/tags/.gitignore
new file mode 100644
index 000000000..b336cc7ce
--- /dev/null
+++ b/gnuradio-examples/python/tags/.gitignore
@@ -0,0 +1,2 @@
+/Makefile
+/Makefile.in
diff --git a/gnuradio-examples/python/tags/Makefile.am b/gnuradio-examples/python/tags/Makefile.am
new file mode 100644
index 000000000..5d71bf9b0
--- /dev/null
+++ b/gnuradio-examples/python/tags/Makefile.am
@@ -0,0 +1,29 @@
+#
+# 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.
+#
+
+include $(top_srcdir)/Makefile.common
+
+ourdatadir = $(exampledir)/tags
+
+dist_ourdata_SCRIPTS = \
+ test_file_tags.py \
+ uhd_burst_detector.py
+
diff --git a/gnuradio-examples/python/tags/test_file_tags.py b/gnuradio-examples/python/tags/test_file_tags.py
index 4ff4549ef..446986cd7 100755
--- a/gnuradio-examples/python/tags/test_file_tags.py
+++ b/gnuradio-examples/python/tags/test_file_tags.py
@@ -1,7 +1,33 @@
#!/usr/bin/env python
+#
+# Copyright 2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
from gnuradio import gr
-import scipy
+import sys
+
+try:
+ import scipy
+except ImportError:
+ print "Error: Program requires scipy (see: www.scipy.org)."
+ sys.exit(1)
def main():
data = scipy.arange(0, 32000, 1).tolist()
diff --git a/gnuradio-examples/python/tags/uhd_burst_detector.py b/gnuradio-examples/python/tags/uhd_burst_detector.py
index f8ebbe66a..ffa419562 100755
--- a/gnuradio-examples/python/tags/uhd_burst_detector.py
+++ b/gnuradio-examples/python/tags/uhd_burst_detector.py
@@ -1,4 +1,24 @@
#!/usr/bin/env python
+#
+# Copyright 2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
from gnuradio import eng_notation
from gnuradio import gr
@@ -9,16 +29,16 @@ from gnuradio.gr import firdes
from optparse import OptionParser
class uhd_burst_detector(gr.top_block):
- def __init__(self, frequency, sample_rate,
- uhd_address="192.168.10.2", trigger=False):
+ def __init__(self, uhd_address, options):
gr.top_block.__init__(self)
- self.freq = frequency
- self.samp_rate = sample_rate
self.uhd_addr = uhd_address
- self.gain = 32
- self.trigger = trigger
+ self.freq = options.freq
+ self.samp_rate = options.samp_rate
+ self.gain = options.gain
+ self.threshold = options.threshold
+ self.trigger = options.trigger
self.uhd_src = uhd.single_usrp_source(
device_addr=self.uhd_addr,
@@ -32,7 +52,6 @@ class uhd_burst_detector(gr.top_block):
taps = firdes.low_pass_2(1, 1, 0.4, 0.1, 60)
self.chanfilt = gr.fir_filter_ccc(10, taps)
- self.ann0 = gr.annotator_alltoall(100000, gr.sizeof_gr_complex)
self.tagger = gr.burst_tagger(gr.sizeof_gr_complex)
# Dummy signaler to collect a burst on known periods
@@ -40,11 +59,18 @@ class uhd_burst_detector(gr.top_block):
self.signal = gr.vector_source_s(data, True)
# Energy detector to get signal burst
+ ## use squelch to detect energy
+ self.det = gr.simple_squelch_cc(self.threshold, 0.01)
+ ## convert to mag squared (float)
self.c2m = gr.complex_to_mag_squared()
- self.iir = gr.single_pole_iir_filter_ff(0.0001)
- self.sub = gr.sub_ff()
- self.mult = gr.multiply_const_ff(32768)
+ ## average to debounce
+ self.avg = gr.single_pole_iir_filter_ff(0.01)
+ ## rescale signal for conversion to short
+ self.scale = gr.multiply_const_ff(2**16)
+ ## signal input uses shorts
self.f2s = gr.float_to_short()
+
+ # Use file sink burst tagger to capture bursts
self.fsnk = gr.tagged_file_sink(gr.sizeof_gr_complex, self.samp_rate)
@@ -60,17 +86,12 @@ class uhd_burst_detector(gr.top_block):
else:
# Connect an energy detector signaler to the burst tagger
- self.connect((self.uhd_src, 0), (self.c2m, 0))
- self.connect((self.c2m, 0), (self.sub, 0))
- self.connect((self.c2m, 0), (self.iir, 0))
- self.connect((self.iir, 0), (self.sub, 1))
- self.connect((self.sub, 0), (self.mult,0))
- self.connect((self.mult, 0), (self.f2s, 0))
- self.connect((self.f2s, 0), (self.tagger, 1))
+ self.connect(self.uhd_src, self.det)
+ self.connect(self.det, self.c2m, self.avg, self.scale, self.f2s)
+ self.connect(self.f2s, (self.tagger, 1))
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
- self.wxgui_fftsink2_0.set_sample_rate(self.samp_rate/10)
self.uhd_src_0.set_samp_rate(self.samp_rate)
if __name__ == '__main__':
@@ -83,16 +104,15 @@ if __name__ == '__main__':
help="set frequency to FREQ", metavar="FREQ")
parser.add_option("-g", "--gain", type="eng_float", default=0,
help="set gain in dB [default=%default]")
- parser.add_option("-R", "--rate", type="eng_float", default=200000,
+ parser.add_option("-R", "--samp-rate", type="eng_float", default=200000,
help="set USRP sample rate [default=%default]")
+ parser.add_option("-t", "--threshold", type="float", default=-60,
+ help="Set the detection power threshold (dBm) [default=%default")
parser.add_option("-T", "--trigger", action="store_true", default=False,
help="Use internal trigger instead of detector [default=%default]")
(options, args) = parser.parse_args()
- frequency = options.freq
- samp_rate = samp_rate = options.rate
uhd_addr = options.address
- trigger = options.trigger
- tb = uhd_burst_detector(frequency, samp_rate, uhd_addr, trigger)
+ tb = uhd_burst_detector(uhd_addr, options)
tb.run()