Merge branch 'master' into new_eth
authorMatt Ettus <matt@ettus.com>
Thu, 1 Oct 2009 01:59:54 +0000 (18:59 -0700)
committerMatt Ettus <matt@ettus.com>
Thu, 1 Oct 2009 01:59:54 +0000 (18:59 -0700)
57 files changed:
configure.ac
debian/.gitignore
debian/bin/gen-install-files.sh
debian/changelog [new file with mode: 0644]
debian/changelog.in [deleted file]
debian/control
debian/copyright
debian/custom/libusrp.udev [deleted file]
debian/custom/libusrp0.udev [new file with mode: 0644]
debian/custom/libusrp2-0.limits [new file with mode: 0644]
debian/custom/libusrp2.limits [deleted file]
debian/custom/usrp.hotplug [deleted file]
debian/libgnuradio-core.dirs [deleted file]
debian/libgnuradio-core.install [deleted file]
debian/libgnuradio-core0.dirs [new file with mode: 0644]
debian/libgnuradio-core0.install [new file with mode: 0644]
debian/libgnuradio-omnithread-dev.dirs [deleted file]
debian/libgnuradio-omnithread-dev.install [deleted file]
debian/libgnuradio-omnithread.install [deleted file]
debian/libgromnithread-dev.dirs [new file with mode: 0644]
debian/libgromnithread-dev.install [new file with mode: 0644]
debian/libgromnithread0.install [new file with mode: 0644]
debian/libgruel.install [deleted file]
debian/libgruel0.install [new file with mode: 0644]
debian/libmblock.install [deleted file]
debian/libmblock0.install [new file with mode: 0644]
debian/libusrp-inband.install [deleted file]
debian/libusrp.dirs [deleted file]
debian/libusrp.install [deleted file]
debian/libusrp.postinst [deleted file]
debian/libusrp.postrm [deleted file]
debian/libusrp0.dirs [new file with mode: 0644]
debian/libusrp0.install [new file with mode: 0644]
debian/libusrp0.postinst [new file with mode: 0644]
debian/libusrp2-0.dirs [new file with mode: 0644]
debian/libusrp2-0.install [new file with mode: 0644]
debian/libusrp2-0.postinst [new file with mode: 0644]
debian/libusrp2.dirs [deleted file]
debian/libusrp2.install [deleted file]
debian/libusrp2.postinst [deleted file]
debian/libusrp2.postrm [deleted file]
debian/rules
gcell/apps/gen_script.py
gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc
gr-noaa/README
gr-noaa/apps/Makefile.am
gr-noaa/apps/demod_hrpt_file.grc
gr-noaa/apps/demod_hrpt_file.py
gr-noaa/apps/usrp_rx_hrpt.grc
gr-noaa/apps/usrp_rx_hrpt.py
gr-noaa/apps/usrp_rx_hrpt2.grc [new file with mode: 0644]
gr-noaa/apps/usrp_rx_hrpt2.py [new file with mode: 0755]
gr-noaa/apps/usrp_rx_hrpt_nogui.grc [new file with mode: 0644]
gr-noaa/apps/usrp_rx_hrpt_nogui.py [new file with mode: 0755]
gr-noaa/lib/noaa_hrpt_deframer.cc
gr-noaa/swig/Makefile.am
grc/base/Block.py

index b6b596befd2a3174c3bcc704c1a22503c40db2e1..f51f2103f3a540e84406fa571627a3a6d7b32e12 100644 (file)
@@ -392,7 +392,6 @@ AC_CONFIG_FILES([\
     Makefile \
     run_tests.sh \
     config/Makefile \
-    debian/changelog \
 ])
 
 dnl run_tests.sh is created from run_tests.sh.in .  Make it executable.
index ca163135c8ddff00a81d23956fe69ab7921f7d07..fbcff46cab6857e5505212e0fcd18d261afa77d7 100644 (file)
@@ -1,2 +1,119 @@
-/changelog
-/*.log
+*.log
+*.debhelper
+*.substvars
+files
+tmp
+gnuradio-companion.install
+gnuradio-examples.install
+gnuradio-gpio.install
+gnuradio-pager.install
+gnuradio-radar-mono.install
+gnuradio-radio-astronomy.install
+gnuradio-sounder.install
+gnuradio-utils.install
+libgnuradio-audio-alsa-dev.install
+libgnuradio-audio-alsa0.install
+libgnuradio-audio-jack-dev.install
+libgnuradio-audio-jack0.install
+libgnuradio-audio-oss-dev.install
+libgnuradio-audio-oss0.install
+libgnuradio-audio-portaudio-dev.install
+libgnuradio-audio-portaudio0.install
+libgnuradio-core-dev.install
+libgnuradio-cvsd-vocoder-dev.install
+libgnuradio-cvsd-vocoder0.install
+libgnuradio-gsm-fr-vocoder-dev.install
+libgnuradio-gsm-fr-vocoder0.install
+libgnuradio-pager-dev.install
+libgnuradio-pager0.install
+libgnuradio-qtgui-dev.install
+libgnuradio-qtgui0.install
+libgnuradio-trellis-dev.install
+libgnuradio-trellis0.install
+libgnuradio-usrp-dev.install
+libgnuradio-usrp0.install
+libgnuradio-usrp2-0.install
+libgnuradio-usrp2-dev.install
+libgnuradio-video-sdl-dev.install
+libgnuradio-video-sdl0.install
+libusrp-dev.install
+libusrp2-dev.install
+python-gnuradio-audio-alsa.install
+python-gnuradio-audio-jack.install
+python-gnuradio-audio-oss.install
+python-gnuradio-audio-portaudio.install
+python-gnuradio-core.install
+python-gnuradio-cvsd-vocoder.install
+python-gnuradio-gsm-fr-vocoder.install
+python-gnuradio-qtgui.install
+python-gnuradio-trellis.install
+python-gnuradio-usrp.install
+python-gnuradio-usrp2.install
+python-gnuradio-video-sdl.install
+python-gnuradio-wxgui.install
+python-usrp.install
+/gnuradio/
+/gnuradio-apps/
+/gnuradio-companion/
+/gnuradio-doc/
+/gnuradio-examples/
+/gnuradio-gpio/
+/gnuradio-pager/
+/gnuradio-radar-mono/
+/gnuradio-radio-astronomy/
+/gnuradio-sounder/
+/gnuradio-utils/
+/libgnuradio/
+/libgnuradio-dev/
+/libgnuradio-audio-alsa-dev/
+/libgnuradio-audio-alsa0/
+/libgnuradio-audio-jack-dev/
+/libgnuradio-audio-jack0/
+/libgnuradio-audio-oss-dev/
+/libgnuradio-audio-oss0/
+/libgnuradio-audio-portaudio0/
+/libgnuradio-audio-portaudio-dev/
+/libgnuradio-core-dev/
+/libgnuradio-core0/
+/libgnuradio-cvsd-vocoder-dev/
+/libgnuradio-cvsd-vocoder0/
+/libgnuradio-gsm-fr-vocoder-dev/
+/libgnuradio-gsm-fr-vocoder0/
+/libgnuradio-pager-dev/
+/libgnuradio-pager0/
+/libgnuradio-qtgui-dev/
+/libgnuradio-qtgui0/
+/libgnuradio-trellis-dev/
+/libgnuradio-trellis0/
+/libgnuradio-usrp-dev/
+/libgnuradio-usrp0/
+/libgnuradio-usrp2-0/
+/libgnuradio-usrp2-dev/
+/libgnuradio-video-sdl-dev/
+/libgnuradio-video-sdl0/
+/libgromnithread-dev/
+/libgromnithread0
+/libgruel-dev/
+/libgruel0/
+/libmblock-dev/
+/libmblock0/
+/libusrp-dev/
+/libusrp0/
+/libusrp2-0/
+/libusrp2-dev/
+/python-gnuradio/
+/python-gnuradio-audio-alsa/
+/python-gnuradio-audio-jack/
+/python-gnuradio-audio-oss/
+/python-gnuradio-audio-portaudio/
+/python-gnuradio-core/
+/python-gnuradio-cvsd-vocoder/
+/python-gnuradio-gsm-fr-vocoder/
+/python-gnuradio-qtgui/
+/python-gnuradio-trellis/
+/python-gnuradio-usrp/
+/python-gnuradio-usrp2/
+/python-gnuradio-video-sdl/
+/python-gnuradio-wxgui/
+/python-usrp/
+/usrp-doc/
index ab04787c9200995e781c9443671f3f76f5a01d33..5e900095a97a97a34be04357be55b69005ba137e 100755 (executable)
@@ -42,8 +42,8 @@ $EXTRACT gnuradio-core/src/lib/swig/Makefile swiginclude_HEADERS >>$NAME
 echo usr/lib/libgnuradio-core.so >>$NAME
 echo usr/lib/pkgconfig/gnuradio-core.pc >>$NAME
 
-# libgnuradio-audio-alsa
-NAME=debian/libgnuradio-audio-alsa.install
+# libgnuradio-audio-alsa0
+NAME=debian/libgnuradio-audio-alsa0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-audio-alsa/src/Makefile lib_LTLIBRARIES >>$NAME
@@ -59,8 +59,8 @@ $EXTRACT gr-audio-alsa/src/Makefile grinclude_HEADERS >>$NAME
 $EXTRACT gr-audio-alsa/Makefile dist_pkgconfig_DATA >>$NAME
 echo usr/lib/libgnuradio-audio-alsa.so >>$NAME
 
-# libgnuradio-audio-jack
-NAME=debian/libgnuradio-audio-jack.install
+# libgnuradio-audio-jack0
+NAME=debian/libgnuradio-audio-jack0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-audio-jack/src/Makefile lib_LTLIBRARIES >>$NAME
@@ -76,8 +76,8 @@ $EXTRACT gr-audio-jack/src/Makefile grinclude_HEADERS >>$NAME
 $EXTRACT gr-audio-jack/Makefile dist_pkgconfig_DATA >>$NAME
 echo usr/lib/libgnuradio-audio-jack.so >>$NAME
 
-# libgnuradio-audio-oss
-NAME=debian/libgnuradio-audio-oss.install
+# libgnuradio-audio-oss0
+NAME=debian/libgnuradio-audio-oss0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-audio-oss/src/Makefile lib_LTLIBRARIES >>$NAME
@@ -93,8 +93,8 @@ $EXTRACT gr-audio-oss/src/Makefile grinclude_HEADERS >>$NAME
 $EXTRACT gr-audio-oss/Makefile dist_pkgconfig_DATA >>$NAME
 echo usr/lib/libgnuradio-audio-oss.so >>$NAME
 
-# libgnuradio-audio-portaudio
-NAME=debian/libgnuradio-audio-portaudio.install
+# libgnuradio-audio-portaudio0
+NAME=debian/libgnuradio-audio-portaudio0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-audio-portaudio/src/Makefile lib_LTLIBRARIES >>$NAME
@@ -110,8 +110,8 @@ $EXTRACT gr-audio-portaudio/src/Makefile grinclude_HEADERS >>$NAME
 $EXTRACT gr-audio-portaudio/Makefile dist_pkgconfig_DATA >>$NAME
 echo usr/lib/libgnuradio-audio-portaudio.so >>$NAME
 
-# libgnuradio-cvsd-vocoder
-NAME=debian/libgnuradio-cvsd-vocoder.install
+# libgnuradio-cvsd-vocoder0
+NAME=debian/libgnuradio-cvsd-vocoder0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-cvsd-vocoder/src/lib/Makefile lib_LTLIBRARIES >>$NAME
@@ -126,8 +126,8 @@ $EXTRACT gr-cvsd-vocoder/src/lib/Makefile grinclude_HEADERS >>$NAME
 $EXTRACT gr-cvsd-vocoder/Makefile dist_pkgconfig_DATA >>$NAME
 echo usr/lib/libgnuradio-cvsd-vocoder.so >>$NAME
 
-# libgnuradio-gsm-fr-vocoder
-NAME=debian/libgnuradio-gsm-fr-vocoder.install
+# libgnuradio-gsm-fr-vocoder0
+NAME=debian/libgnuradio-gsm-fr-vocoder0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-gsm-fr-vocoder/src/lib/Makefile lib_LTLIBRARIES >>$NAME
@@ -142,8 +142,8 @@ $EXTRACT gr-gsm-fr-vocoder/src/lib/Makefile grinclude_HEADERS >>$NAME
 $EXTRACT gr-gsm-fr-vocoder/Makefile dist_pkgconfig_DATA >>$NAME
 echo usr/lib/libgnuradio-gsm-fr-vocoder.so >>$NAME
 
-# libgnuradio-pager
-NAME=debian/libgnuradio-pager.install
+# libgnuradio-pager0
+NAME=debian/libgnuradio-pager0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-pager/src/Makefile lib_LTLIBRARIES >>$NAME
@@ -158,8 +158,8 @@ $EXTRACT gr-pager/src/Makefile grinclude_HEADERS >>$NAME
 $EXTRACT gr-pager/Makefile dist_pkgconfig_DATA >>$NAME
 echo usr/lib/libgnuradio-pager.so >>$NAME
 
-# libgnuradio-qtgui
-NAME=debian/libgnuradio-qtgui.install
+# libgnuradio-qtgui0
+NAME=debian/libgnuradio-qtgui0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-qtgui/src/lib/Makefile lib_LTLIBRARIES >>$NAME
@@ -173,8 +173,8 @@ touch $NAME
 $EXTRACT gr-qtgui/src/lib/Makefile grinclude_HEADERS >>$NAME
 echo usr/lib/libgnuradio-qtgui.so >>$NAME
 
-# libgnuradio-trellis
-NAME=debian/libgnuradio-trellis.install
+# libgnuradio-trellis0
+NAME=debian/libgnuradio-trellis0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-trellis/src/lib/Makefile lib_LTLIBRARIES >>$NAME
@@ -189,8 +189,8 @@ $EXTRACT gr-trellis/src/lib/Makefile grinclude_HEADERS >>$NAME
 $EXTRACT gr-trellis/Makefile dist_pkgconfig_DATA >>$NAME
 echo usr/lib/libgnuradio-trellis.so >>$NAME
 
-# libgnuradio-usrp
-NAME=debian/libgnuradio-usrp.install
+# libgnuradio-usrp0
+NAME=debian/libgnuradio-usrp0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-usrp/src/Makefile lib_LTLIBRARIES >>$NAME
@@ -205,8 +205,8 @@ touch $NAME
 $EXTRACT gr-usrp/src/Makefile grinclude_HEADERS >>$NAME
 echo usr/lib/libgnuradio-usrp.so >>$NAME
 
-# libgnuradio-usrp2
-NAME=debian/libgnuradio-usrp2.install
+# libgnuradio-usrp2-0
+NAME=debian/libgnuradio-usrp2-0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-usrp2/src/Makefile lib_LTLIBRARIES >>$NAME
@@ -221,8 +221,8 @@ touch $NAME
 $EXTRACT gr-usrp2/src/Makefile grinclude_HEADERS >>$NAME
 echo usr/lib/libgnuradio-usrp2.so >>$NAME
 
-# libgnuradio-video-sdl
-NAME=debian/libgnuradio-video-sdl.install
+# libgnuradio-video-sdl0
+NAME=debian/libgnuradio-video-sdl0.install
 rm -f $NAME
 touch $NAME
 $EXTRACT gr-video-sdl/src/Makefile lib_LTLIBRARIES >>$NAME
@@ -427,6 +427,9 @@ $EXTRACT gnuradio-examples/python/multi_usrp/Makefile dist_ourdata_SCRIPTS >>$NA
 $EXTRACT gnuradio-examples/python/network/Makefile dist_ourdata_SCRIPTS >>$NAME
 $EXTRACT gnuradio-examples/python/ofdm/Makefile dist_ourdata_DATA >>$NAME
 $EXTRACT gnuradio-examples/python/ofdm/Makefile dist_ourdata_SCRIPTS >>$NAME
+$EXTRACT gnuradio-examples/python/pfb/Makefile dist_ourdata_SCRIPTS >>$NAME
+$EXTRACT gnuradio-examples/python/pfb/Makefile dist_ourdata_PYTHON >>$NAME
+$EXTRACT gnuradio-examples/python/pfb/Makefile dist_ourdata_DATA >>$NAME
 $EXTRACT gnuradio-examples/python/usrp/Makefile dist_ourdata_SCRIPTS >>$NAME
 $EXTRACT gnuradio-examples/python/usrp2/Makefile dist_ourdata_SCRIPTS >>$NAME
 $EXTRACT gnuradio-examples/python/usrp2/Makefile dist_ourdata_DATA >>$NAME
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..e7b8998
--- /dev/null
@@ -0,0 +1,99 @@
+gnuradio (3.3git-1) unstable; urgency=low
+
+  * upstream unstable version from git repository
+
+ -- Johnathan Corgan <jcorgan@corganenterprises.com>  Thu, 24 Sep 2009 23:00:00 -0600
+  
+gnuradio (3.2.2-1) unstable; urgency=low
+
+  * new upstream version, includes gcc4.3 support, closes: #474801, #524387
+  * merge debian/ content restructuring from upstream svn
+  * change build-dep from fftw3-dev to libfftw3-dev, closes: #458231
+  * fix problem with rebuilding, closes: #441739
+  * no longer need to move to contrib now that sdcc is fully back in main, 
+    we just need to build depend on sdcc 2.9.0 or later, closes: #457402
+  * rebuild reflects python-central file location change, closes: #490513
+  * change Jack build depend to libjack-dev, closes: #527413
+
+ -- Bdale Garbee <bdale@gag.com>  Tue, 15 Sep 2009 23:37:57 -0600
+
+gnuradio (3.0.4-2) unstable; urgency=high
+
+  * rebuild with new version number and upload to finally (?) recover from
+    over-zealous removal in response to bug 453154
+  * recommend udev instead of hotplug, closes: #448907
+
+ -- Bdale Garbee <bdale@gag.com>  Sun, 23 Dec 2007 12:11:49 -0700
+
+gnuradio (3.0.4-1) unstable; urgency=low
+
+  * new upstream version
+  * fix build failure with gcc-4.3 by adding a #include, closes: #420896
+
+ -- Bdale Garbee <bdale@gag.com>  Tue, 14 Aug 2007 22:38:32 -0600
+
+gnuradio (3.0.3-1) unstable; urgency=low
+
+  * new upstream version
+  * tweak gnuradio-doc package to eliminate spurious subdirectory level
+  * add a usrp-doc binary package, recommended by the usrp package, and 
+    include xmlto in build dependencies so usrp_guide.html gets generated, 
+    closes: #407368
+
+ -- Bdale Garbee <bdale@gag.com>  Sun, 11 Mar 2007 23:55:32 -0600
+
+gnuradio (3.0.2-2) unstable; urgency=high
+
+  * add run-time dependency on python-wxgtk2.6.  leaving urgency high since 
+    this would be a silly bug to release etch with if we can avoid it.
+
+ -- Bdale Garbee <bdale@gag.com>  Mon,  4 Dec 2006 15:35:53 -0700
+
+gnuradio (3.0.2-1) unstable; urgency=high
+
+  * new upstream version, fixes FTBFS issues
+
+ -- Bdale Garbee <bdale@gag.com>  Sun, 12 Nov 2006 14:52:33 -0800
+
+gnuradio (3.0-3) unstable; urgency=high
+
+  * put python-all-dev back in the build-depends list, closes: #398246
+  * move gr-wxgui conflicts/depends to python-gnuradio, closes: #396302
+  * fix up sections in control to match overrides
+
+ -- Bdale Garbee <bdale@gag.com>  Sun, 12 Nov 2006 10:59:58 -0800
+
+gnuradio (3.0-2) unstable; urgency=high
+
+  * reworked package dependencies so that the 'gnuradio' binary package no
+    longer depends on the pieces in contrib.  instead, the 'usrp' binary
+    package in contrib now depends on all the USRP-related pieces.  A user
+    who doesn't have a USRP board can just install 'gnuradio' and get all
+    the relevant pieces, a USRP user needs to install both 'gnuradio' and
+    'usrp'.  Closes: #394533
+  * improve consistency of references to 'GNU Radio' as upstream project name
+  * make the gnuradio package dependencies on python-gnuradio and python-usrp
+    be version specific on suggestion from Ramakrishnan Muthukrishnan
+
+ -- Bdale Garbee <bdale@gag.com>  Fri, 10 Nov 2006 00:39:38 -0800
+
+gnuradio (3.0-1) unstable; urgency=low
+
+  * new maintainer, new upstream version
+  * Restructuring source and binary packages to follow upstream changes, more
+    or less repackaging from scratch taking ideas from the previous packaging
+    by Ramakrishnan Muthukrishnan and Steinar H. Gunderson.  This single 
+    source package replaces all of: 
+        gnuradio-core
+        gnuradio-examples
+        gr-audio-alsa
+        gr-audio-jack
+        gr-audio-oss
+        gr-usrp
+        gr-wxgui
+        usrp
+    In addition, the 'gnuradio' binary package is a new meta-package that 
+    conveniently depends on everything gnuradio related to ease installation.
+
+ -- Bdale Garbee <bdale@gag.com>  Sun,  8 Oct 2006 13:28:21 -0600
+
diff --git a/debian/changelog.in b/debian/changelog.in
deleted file mode 100644 (file)
index 192158a..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-gnuradio (3.3svn-@SVNVERSION@) unstable; urgency=low
-
-  * Development trunk updates as of revision @SVNVERSION@
-  * See http://gnuradio.org/trac
-
- -- Johnathan Corgan <jcorgan@corganenterprises.com>  @BUILD_DATE@
-
-gnuradio (3.2) unstable; urgency=low
-
-  * New upstream release 3.2
-  * See http://gnuradio.org/trac
-
- -- Johnathan Corgan <jcorgan@corganenterprises.com>  Sat,  23 May 2009 18:00:00 -0800
-
-gnuradio (3.1.3) stable; urgency=low
-
-  * "Upstream" release, see http://gnuradio.org/trac/wiki/Release3.1Branch
-
- -- Johnathan Corgan <jcorgan@corganenterprises.com>  Sat, 23 Aug 2008 19:00:00 -0800
-
-gnuradio (3.1.2) stable; urgency=low
-
-  * "Upstream" release, see http://gnuradio.org/trac/wiki/Release3.1Branch
-
- -- Johnathan Corgan <jcorgan@corganenterprises.com>  Wed, 24 Mar 2008 09:00:00 -0800
-
-gnuradio (3.1.1) stable; urgency=high
-
-  * Fixed regressions in digital packet radio (t196,t198)
-  * Fixed RX phase offset causing sidebands (t195)
-  * Fixed TX I/Q swapping bug (t179)
-  * Fixed loopback bug in gr-sounder
-  * Added complex and dual-channel options to oscope for
-    BasicRX and LFRX
-
- -- Johnathan Corgan <jcorgan@corganenterprises.com>  Sun,  4 Nov 2007 21:15:00 -0800
-
-gnuradio (3.1.0) stable; urgency=low
-
-  * Release 3.1 stable branch
-  * add/split packages to cover entire GNU Radio distribution
-
- -- Johnathan Corgan <jcorgan@corganenterprises.com>  Mon, 22 Oct 2007 10:37:00 -0800
-
-gnuradio (3.0.svn) unstable; urgency=low
-
-  * add/split packages to cover entire GNU Radio distribution
-  * fix build failure with gcc-4.3 by adding a #include, closes: #420896
-  * update copyright assertion on the debian/ contents, since I have
-    assigned my copyright to the FSF and now have upstream commit rights
-  * merge debian/ into upstream SVN repository
-  * add --disable-gr-qtgui (at least until we figure out qwt build deps!)
-  * add build dep on python-numpy
-  * conditionalize configure and clean targets to handle build from SVN
-
- -- Bdale Garbee <bdale@gag.com>  Thu, 26 Jul 2007 18:07:52 -0600
-
-gnuradio (3.0.3-1) unstable; urgency=low
-
-  * new upstream version
-  * tweak gnuradio-doc package to eliminate spurious subdirectory level
-  * add a usrp-doc binary package, recommended by the usrp package, and 
-    include xmlto in build dependencies so usrp_guide.html gets generated, 
-    closes: #407368
-
- -- Bdale Garbee <bdale@gag.com>  Sun, 11 Mar 2007 23:55:32 -0600
-
-gnuradio (3.0.2-2) unstable; urgency=high
-
-  * add run-time dependency on python-wxgtk2.6.  leaving urgency high since 
-    this would be a silly bug to release etch with if we can avoid it.
-
- -- Bdale Garbee <bdale@gag.com>  Mon,  4 Dec 2006 15:35:53 -0700
-
-gnuradio (3.0.2-1) unstable; urgency=high
-
-  * new upstream version, fixes FTBFS issues
-
- -- Bdale Garbee <bdale@gag.com>  Sun, 12 Nov 2006 14:52:33 -0800
-
-gnuradio (3.0-3) unstable; urgency=high
-
-  * put python-all-dev back in the build-depends list, closes: #398246
-  * move gr-wxgui conflicts/depends to python-gnuradio, closes: #396302
-  * fix up sections in control to match overrides
-
- -- Bdale Garbee <bdale@gag.com>  Sun, 12 Nov 2006 10:59:58 -0800
-
-gnuradio (3.0-2) unstable; urgency=high
-
-  * reworked package dependencies so that the 'gnuradio' binary package no
-    longer depends on the pieces in contrib.  instead, the 'usrp' binary
-    package in contrib now depends on all the USRP-related pieces.  A user
-    who doesn't have a USRP board can just install 'gnuradio' and get all
-    the relevant pieces, a USRP user needs to install both 'gnuradio' and
-    'usrp'.  Closes: #394533
-  * improve consistency of references to 'GNU Radio' as upstream project name
-  * make the gnuradio package dependencies on python-gnuradio and python-usrp
-    be version specific on suggestion from Ramakrishnan Muthukrishnan
-
- -- Bdale Garbee <bdale@gag.com>  Fri, 10 Nov 2006 00:39:38 -0800
-
-gnuradio (3.0-1) unstable; urgency=low
-
-  * new maintainer, new upstream version
-  * Restructuring source and binary packages to follow upstream changes, more
-    or less repackaging from scratch taking ideas from the previous packaging
-    by Ramakrishnan Muthukrishnan and Steinar H. Gunderson.  This single 
-    source package replaces all of: 
-        gnuradio-core
-        gnuradio-examples
-        gr-audio-alsa
-        gr-audio-jack
-        gr-audio-oss
-        gr-usrp
-        gr-wxgui
-        usrp
-    In addition, the 'gnuradio' binary package is a new meta-package that 
-    conveniently depends on everything gnuradio related to ease installation.
-
- -- Bdale Garbee <bdale@gag.com>  Sun,  8 Oct 2006 13:28:21 -0600
-
index 4c11a965436c634739c27990c7f632ecf1ec7699..a7b33f0be2d1b5ab8b007ba5ab5713ffa6bee5d1 100644 (file)
@@ -5,22 +5,22 @@
 Source: gnuradio
 Section: comm
 Priority: optional
-Maintainer: Johnathan Corgan <jcorgan@corganenterprises.com>
+Maintainer: Bdale Garbee <bdale@gag.com>
 Build-Conflicts: automake1.8, automake1.9
-Build-Depends: debhelper (>= 5.0.38), build-essential, python-central (>=0.5.6), automake, libtool, pkg-config, python-dev (>=2.6), python-dev (<2.7), swig, fftw3-dev | libfftw3-dev, libcppunit-dev, libboost1.37-dev, libgsl0-dev, guile-1.8, libasound2-dev, python-wxgtk2.8, python-numpy, doxygen, xmlto, sdcc-nf, libusb-dev, libjack-dev, portaudio19-dev, libsdl1.2-dev, python-cheetah, python-lxml, python-gtk2, libqt4-dev, libqwt5-qt4-dev, libqwtplot3d-qt4-dev, libblas-dev, texlive-latex-base
-Standards-Version: 3.7.2
-XS-Python-Version: =2.6
+Build-Depends: automake, debhelper (>= 5), doxygen, ghostscript, guile-1.8, libasound2-dev, libaudio-dev, libblas-dev, libboost-date-time1.37-dev | libboost-date-time-dev, libboost-program-options-dev | libboost-program-options1.37-dev, libboost-thread-dev | libboost-thread1.37-dev, libcppunit-dev, libfftw3-dev, libfontconfig1-dev, libfreetype6-dev, libglib2.0-dev, libgsl0-dev, libjack-dev, libpng12-dev, libqt4-dev, libqt4-opengl-dev, libqwt5-qt4-dev, libqwtplot3d-qt4-dev, libsdl1.2-dev, libtool, libusb-dev, libwxgtk2.8-dev, libxext-dev, libxrender-dev, libxt-dev, pkg-config, portaudio19-dev, python-central, python-cheetah, python-dev, python-gtk2, python-lxml, python-numpy, python-qt4, python-qt4-dev, python-wxgtk2.8, sdcc, swig, texlive-latex-base, xdg-utils, xmlto
+Standards-Version: 3.8.3
+XS-Python-Version: >=2.5
 
 ################################################################################
 # C++ auxiliary libraries                                                      #
 ################################################################################
 
-Package: libgruel
+Package: libgruel0
 Section: libs
 Architecture: any
 Depends: ${shlibs:Depends}
-Replaces: libpmt
-Conflicts: libpmt
+Replaces: libpmt0
+Conflicts: libpmt0
 Description: GNU Radio Utility Etcetera Library
  This package implements a variety of low-level utility
  routines for GNU Radio.
@@ -28,7 +28,7 @@ Description: GNU Radio Utility Etcetera Library
 Package: libgruel-dev
 Section: libdevel
 Architecture: any
-Depends: libgruel (= ${binary:Version}), libboost1.37-dev, guile-1.8
+Depends: libgruel0 (= ${binary:Version}), libboost-date-time1.37-dev | libboost-date-time-dev
 Replaces: libpmt-dev
 Conflicts: libpmt-dev
 Description: GNU Radio Utility Etcetera Library
@@ -37,7 +37,7 @@ Description: GNU Radio Utility Etcetera Library
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-omnithread
+Package: libgromnithread0
 Section: libs
 Architecture: any
 Replaces: libgnuradio-omnithread0c2a
@@ -47,12 +47,12 @@ Description: GNU Radio Omnithreads Abstraction Library
  This package is a fork of the omniORB-4.0.1 threading library
  for use with GNU Radio.
 
-Package: libgnuradio-omnithread-dev
+Package: libgromnithread-dev
 Section: libdevel
 Architecture: any
 Replaces: libgnuradio-omnithread0-dev
 Conflicts: libgnuradio-omnithread0-dev
-Depends: libgnuradio-omnithread (= ${binary:Version})
+Depends: libgromnithread0 (= ${binary:Version})
 Description: GNU Radio Omnithreads Abstraction Library
  This package is a fork of the omniORB-4.0.1 threading library
  for use with GNU Radio.
@@ -63,12 +63,12 @@ Description: GNU Radio Omnithreads Abstraction Library
 # C++ M-Block library packages                                                 #
 ################################################################################
 
-Package: libmblock 
+Package: libmblock0
 Section: libs 
 Architecture: any
 Replaces: libmblock0c2a
 Conflicts: libmblock0c2a
-Depends: libpmt (= ${binary:Version}), libgnuradio-omnithread (= ${binary:Version}), libgruel (= ${binary:Version}), ${shlibs:Depends}
+Depends: libpmt0 (= ${binary:Version}), libgromnithread0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio Message Block Library 
  This package provides the GNU Radio message block library. 
 
@@ -77,7 +77,7 @@ Section: libdevel
 Architecture: any
 Replaces: libmblock0-dev
 Conflicts: libmblock0-dev
-Depends: libmblock (= ${binary:Version}), libgnuradio-omnithread-dev (= ${binary:Version}), libgruel-dev (= ${binary:Version})
+Depends: libmblock0 (= ${binary:Version}), libgromnithread-dev (= ${binary:Version}), libgruel-dev (= ${binary:Version})
 Description: GNU Radio Message Block Library
  This package provides the GNU Radio message block library.
  .
@@ -87,11 +87,11 @@ Description: GNU Radio Message Block Library
 # C++ USRP/USRP2 library packages                                              #
 ################################################################################
 
-Package: libusrp
+Package: libusrp0
 Section: comm
 Architecture: any
 Depends: ${shlibs:Depends}
-Replaces: libusrp0, libusrp0c2a, usrp-firmware
+Replaces: libusrp0c2a, usrp-firmware
 Conflicts: usrp-firmware
 Suggests: usrp-doc
 Description: Client side library for the USRP(1) hardware
@@ -109,7 +109,7 @@ Package: libusrp-dev
 Section: libdevel
 Architecture: any
 Replaces: libusrp0-dev
-Depends: libusrp (= ${binary:Version}), libusb-dev, libboost-thread1.37-dev
+Depends: libusrp0 (= ${binary:Version}), libusb-dev, libboost-thread1.37-dev | libboost-thread-dev
 Description: Client side library for the USRP(1) hardware
  The Universal Software Radio Peripheral (USRP) is an USB-connected,
  low-cost and open board. It features four high-speed analog-to-digital
@@ -123,10 +123,10 @@ Description: Client side library for the USRP(1) hardware
  .
  This package contains header files needed by developers.
 
-Package: libusrp2
+Package: libusrp2-0
 Section: comm
 Architecture: any
-Depends: libgruel (= ${binary:Version}), libgnuradio-omnithread (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgruel0 (= ${binary:Version}), libgromnithread0 (= ${binary:Version}), ${shlibs:Depends}
 Description: Client side library for the USRP2 hardware
  The Universal Software Radio Peripheral 2 (USRP2) is a GbE-connected,
  low-cost and open board. It features two high-speed analog-to-digital
@@ -141,7 +141,7 @@ Description: Client side library for the USRP2 hardware
 Package: libusrp2-dev
 Section: libdevel
 Architecture: any
-Depends: libusrp2 (= ${binary:Version}), libboost-thread1.37-dev, libgnuradio-omnithread-dev (= ${binary:Version}), libgruel-dev (= ${binary:Version})
+Depends: libusrp2-0 (= ${binary:Version}), libboost-thread1.37-dev | libboost-thread-dev, libgromnithread-dev (= ${binary:Version}), libgruel-dev (= ${binary:Version})
 Description: Client side library for the USRP2 hardware
  The Universal Software Radio Peripheral 2 (USRP2) is a GbE-connected,
  low-cost and open board. It features two high-speed analog-to-digital
@@ -159,12 +159,12 @@ Description: Client side library for the USRP2 hardware
 # C++ GNU Radio block library packages                                         #
 ################################################################################
 
-Package: libgnuradio-core
+Package: libgnuradio-core0
 Section: libs
 Architecture: any
-Depends: libgruel (= ${binary:Version}), ${shlibs:Depends}
-Conflicts:  libgnuradio-core0, libgnuradio-core0c2, libgnuradio-core0c2a
-Replaces:  libgnuradio-core0, libgnuradio-core0c2, libgnuradio-core0c2a
+Depends: libgruel0 (= ${binary:Version}), ${shlibs:Depends}
+Conflicts:  libgnuradio-core0c2, libgnuradio-core0c2a
+Replaces:  libgnuradio-core0c2, libgnuradio-core0c2a
 Suggests: gnuradio-doc
 Description: The GNU Sofware Radio Core Library
  This package contains the core GNU Radio libraries.
@@ -174,80 +174,80 @@ Section: libdevel
 Architecture: any 
 Replaces: libgnuradio-core0-dev
 Conflicts: libgnuradio-core0-dev
-Depends: libgnuradio-core (= ${binary:Version}), libgruel-dev (= ${binary:Version}), libboost-thread1.37-dev, libboost-date-time1.37-dev, libcppunit-dev, libgsl0-dev, libatlas-base-dev, libfftw3-dev, swig
+Depends: libgnuradio-core0 (= ${binary:Version}), libgruel-dev (= ${binary:Version}), libboost-thread1.37-dev | libboost-thread-dev, libboost-date-time1.37-dev | libboost-date-time-dev, libboost-program-options1.37-dev | libboost-program-options-dev, libgsl0-dev, libatlas-base-dev, libfftw3-dev, swig
 Description: The GNU Software Radio Core Library
  This package contains the core GNU Radio libraries.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-audio-alsa
+Package: libgnuradio-audio-alsa0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ block for ALSA sound system
  This package contains the ALSA sound system driver for GNU Radio.
 
 Package: libgnuradio-audio-alsa-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-audio-alsa (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), libasound2-dev
+Depends: libgnuradio-audio-alsa0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), libasound2-dev
 Description: GNU Radio C++ block for ALSA sound system
  This package contains the ALSA sound system driver for GNU Radio.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-audio-jack
+Package: libgnuradio-audio-jack0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ block for JACK sound system
  This package contains the JACK sound system driver for GNU Radio.
 
 Package: libgnuradio-audio-jack-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-audio-jack (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), libjack-dev
+Depends: libgnuradio-audio-jack0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), libjack-dev
 Description: GNU Radio C++ block for JACK sound system
  This package contains the JACK sound system driver for GNU Radio.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-audio-oss
+Package: libgnuradio-audio-oss0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ block for OSS sound system
  This package contains the OSS sound system driver for GNU Radio.
 
 Package: libgnuradio-audio-oss-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-audio-oss (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
+Depends: libgnuradio-audio-oss0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
 Description: GNU Radio C++ block for OSS sound system
  This package contains the OSS sound system driver for GNU Radio.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-audio-portaudio
+Package: libgnuradio-audio-portaudio0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ block for PORTAUDIO sound system
  This package contains the PORTAUDIO sound system driver for GNU Radio.
 
 Package: libgnuradio-audio-portaudio-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-audio-portaudio (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), portaudio19-dev
+Depends: libgnuradio-audio-portaudio0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), portaudio19-dev
 Description: GNU Radio C++ block for PORTAUDIO sound system
  This package contains the PORTAUDIO sound system driver for GNU Radio.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-cvsd-vocoder
+Package: libgnuradio-cvsd-vocoder0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ block implementing the CVSD vocoder
  This package provides an implementation of a CVSD vocoder for
  GNU Radio.
@@ -255,17 +255,17 @@ Description: GNU Radio C++ block implementing the CVSD vocoder
 Package: libgnuradio-cvsd-vocoder-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-cvsd-vocoder (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
+Depends: libgnuradio-cvsd-vocoder0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
 Description: GNU Radio C++ block implement the CVSD vocoder
  This package provides an implementation of a CVSD vocoder for
  GNU Radio.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-gsm-fr-vocoder
+Package: libgnuradio-gsm-fr-vocoder0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ block implementing the GSM full rate vocoder
  This package provides an implementation of a GSM-FR vocoder for
  GNU Radio.
@@ -273,17 +273,17 @@ Description: GNU Radio C++ block implementing the GSM full rate vocoder
 Package: libgnuradio-gsm-fr-vocoder-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-gsm-fr-vocoder (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
+Depends: libgnuradio-gsm-fr-vocoder0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
 Description: GNU Radio C++ block implementing the GSM full rate vocoder
  This package provides an implementation of a GSM-FR vocoder for
  GNU Radio.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-pager
+Package: libgnuradio-pager0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ block implementing the FLEX one-way pager protocol
  This package provides an implementation of the FLEX one-way pager protocol
  for GNU Radio.
@@ -291,17 +291,17 @@ Description: GNU Radio C++ block implementing the FLEX one-way pager protocol
 Package: libgnuradio-pager-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-pager (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
+Depends: libgnuradio-pager (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
 Description: GNU Radio C++ block implementing the FLEX one-way pager protocol
  This package provides an implementation of the FLEX one-way pager protocol
  for GNU Radio.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-qtgui
+Package: libgnuradio-qtgui0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ blocks fro QT-based GUI applications
  This package contains the C++ library for using GNU Radio inside
  QT-based GUI applications.
@@ -309,17 +309,17 @@ Description: GNU Radio C++ blocks fro QT-based GUI applications
 Package: libgnuradio-qtgui-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-qtgui (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), libqt4-dev, libqwtplot3d-qt4-dev
+Depends: libgnuradio-qtgui0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), libqt4-dev, libqwtplot3d-qt4-dev
 Description: GNU Radio C++ blocks fro QT-based GUI applications
  This package contains the C++ library for using GNU Radio inside
  QT-based GUI applications.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-trellis
+Package: libgnuradio-trellis0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ block implementing trellis-coded modulation
  This package provides an implementation of tellis-coded modulation
  for GNU Radio.
@@ -327,17 +327,17 @@ Description: GNU Radio C++ block implementing trellis-coded modulation
 Package: libgnuradio-trellis-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-trellis (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
+Depends: libgnuradio-trellis0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
 Description: GNU Radio C++ block implementing trellis-coded modulation
  This package provides an implementation of trellis-coded modulation
  for GNU Radio.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-video-sdl
+Package: libgnuradio-video-sdl0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ block implementing video-sdl-coded modulation
  This package provides an interface to the SDL rendering library
  for GNU Radio.
@@ -345,17 +345,17 @@ Description: GNU Radio C++ block implementing video-sdl-coded modulation
 Package: libgnuradio-video-sdl-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-video-sdl (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
+Depends: libgnuradio-video-sdl0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version})
 Description: GNU Radio C++ block implementing video-sdl-coded modulation
  This package provides an interface to the SDL rendering library
  for GNU Radio.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-usrp
+Package: libgnuradio-usrp0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), libusrp (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), libusrp0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ blocks for USRP(1) hardware
  This package contains the C++ API blocks for the Universal Software Radio
  Peripheral.
@@ -363,17 +363,17 @@ Description: GNU Radio C++ blocks for USRP(1) hardware
 Package: libgnuradio-usrp-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-usrp (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), libusrp-dev (= ${binary:Version})
+Depends: libgnuradio-usrp0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), libusrp-dev (= ${binary:Version})
 Description: GNU Radio C++ blocks for USRP(1) hardware
  This package contains the C++ API blocks for the Universal Software Radio
  Peripheral.
  .
  This package contains header files needed by developers.
 
-Package: libgnuradio-usrp2
+Package: libgnuradio-usrp2-0
 Section: libs
 Architecture: any
-Depends: libgnuradio-core (= ${binary:Version}), libusrp2 (= ${binary:Version}), ${shlibs:Depends}
+Depends: libgnuradio-core0 (= ${binary:Version}), libusrp2-0 (= ${binary:Version}), ${shlibs:Depends}
 Description: GNU Radio C++ blocks for USRP2 hardware
  This package contains the C++ API blocks for the Universal Software Radio
  Peripheral 2.
@@ -381,7 +381,7 @@ Description: GNU Radio C++ blocks for USRP2 hardware
 Package: libgnuradio-usrp2-dev
 Section: libdevel
 Architecture: any
-Depends: libgnuradio-usrp2 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), libusrp2-dev (= ${binary:Version})
+Depends: libgnuradio-usrp2-0 (= ${binary:Version}), libgnuradio-core-dev (= ${binary:Version}), libusrp2-dev (= ${binary:Version})
 Description: GNU Radio C++ blocks for USRP2 hardware
  This package contains the C++ API blocks for the Universal Software Radio
  Peripheral 2.
@@ -394,7 +394,7 @@ Description: GNU Radio C++ blocks for USRP2 hardware
 
 Package: python-usrp
 Architecture: any
-Depends: ${python:Depends}, libusrp (= ${binary:Version}), ${shlibs:Depends}
+Depends: ${python:Depends}, libusrp0 (= ${binary:Version}), ${shlibs:Depends}
 Provides: ${python:Provides}
 Section: python
 XB-Python-Version: ${python:Versions}
@@ -450,7 +450,7 @@ Description: Python bindings for GNU Radio USRP driver
 
 Package: python-gnuradio-audio-alsa
 Architecture: any
-Depends: ${python:Depends}, ${shlibs:Depends}, libgnuradio-audio-alsa (= ${binary:Version}), python-gnuradio-core
+Depends: ${python:Depends}, ${shlibs:Depends}, libgnuradio-audio-alsa0 (= ${binary:Version}), python-gnuradio-core
 Section: python
 Provides: ${python:Provides}, python-gnuradio-audio
 XB-Python-Version: ${python:Versions}
@@ -510,7 +510,7 @@ Description: GNU Radio GSM Full-Rate Vocoder
 
 Package: python-gnuradio-qtgui
 Architecture: any
-Depends: ${python:Depends}, ${shlibs:Depends}, libgnuradio-qtgui (= ${binary:Version}), python-gnuradio-core
+Depends: ${python:Depends}, ${shlibs:Depends}, libgnuradio-qtgui0 (= ${binary:Version}), python-gnuradio-core
 Section: python
 Provides: ${python:Provides}
 XB-Python-Version: ${python:Versions}
@@ -646,8 +646,8 @@ Description: Software Defined Radio
 Package: libgnuradio
 Section: libs
 Architecture: all
-Depends: libgnuradio-core (= ${binary:Version}), 
-Recommends: libgnuradio-audio-alsa, libgnuradio-cvsd-vocoder, libgnuradio-gsm-fr-vocoder, libgnuradio-pager, libgnuradio-qtqui, libgnuradio-trellis, libgnuradio-usrp, libgnuradio-usrp2, libgnuradio-video-sdl
+Depends: libgnuradio-core0
+Recommends: libgnuradio-audio-alsa0, libgnuradio-cvsd-vocoder0, libgnuradio-gsm-fr-vocoder0, libgnuradio-pager0, libgnuradio-qtqui0, libgnuradio-trellis0, libgnuradio-usrp0, libgnuradio-usrp20, libgnuradio-video-sdl0
 Description: GNU Radio C++ API libraries
  This is a virtual package that depends, recommends, or suggests all of the
  binary packages that make up the GNU Radio C++ API.  For development headers,
@@ -656,7 +656,7 @@ Description: GNU Radio C++ API libraries
 Package: libgnuradio-dev
 Section: libdevel
 Architecture: all
-Depends: libgnuradio (= ${binary:Version}), libgnuradio-core-dev
+Depends: libgnuradio0 (= ${binary:Version}), libgnuradio-core-dev
 Recommends: libgnuradio-audio-alsa-dev, libgnuradio-cvsd-vocoder-dev, libgnuradio-gsm-fr-vocoder-dev, libgnuradio-pager-dev, libgnuradio-qtgui-dev, libgnuradio-trellis-dev, libgnuradio-usrp-dev, libgnuradio-usrp2-dev, libgnuradio-video-sdl-dev
 Suggests: gnuradio-doc, usrp-doc
 Replaces: gnuradio-dev
index d93151a457a48a0e6efe3a764973f958e2eba60f..05b60abae77c6711b215ddd239394eee5a3a1fbf 100644 (file)
@@ -3,7 +3,7 @@ upstream restructuring on Wed, 6 Sep 2006 16:02:03 -0600.  Much was
 learned and portions were taken from the previous Debian packages built 
 by Ramakrishnan Muthukrishnan and Steinar H. Gunderson.
 
-GNU Radio was downloaded from http://www.gnu.org/software/gnuradio/
+GNU Radio was downloaded from http://gnuradio.org/
 
 Upstream Authors: 
        Eric Blossom <eb@comsec.com>
@@ -16,11 +16,156 @@ The current upstream maintainer is Johnathan Corgan.
 Copyright: 
 
 GNU Radio is copyrighted by the Free Software Foundation and is licensed
-under the GNU General Public License (GPL), a copy of which is available
-on a Debian system at:
+under the GNU General Public License (GPL), version 3 or later, a copy of 
+which is available on a Debian system at:
 
   /usr/share/common-licenses/GPL
 
-The Debian packaging was created by Bdale Garbee <bdale@gag.com>, is
-(c) Copyright 2006 Hewlett-Packard Development Company, L.P., 
-and is made available under the terms of the GPL.
+The GNU Radio source distribution also incorporates a few components that 
+carry other copyrights and license assertions, as follows:
+
+gcell/ibm/sync/ppu_source/* 
+gcell/ibm/sync/spu_source/* 
+       (C)Copyright 2001,2007,
+       International Business Machines Corporation,
+       Sony Computer Entertainment, Incorporated,
+       Toshiba Corporation,
+
+       All Rights Reserved. 
+
+       Redistribution and use in source and binary forms, with or
+       without modification, are permitted provided that the
+       following conditions are met:
+
+       - Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+
+       - Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials
+         provided with the distribution.
+       - Neither the name of IBM Corporation nor the names of its
+         contributors may be used to endorse or promote products
+         derived from this software without specific prior written
+         permission.
+
+       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+       CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+       INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+       MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+       DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+       CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+       NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+       LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+       HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+       CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+       OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+       EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+       The gcell subsystem is not included in Debian binary package builds.
+
+gnuradio-core/src/lib/g72x/*
+       This source code is released by Sun Microsystems, Inc. to the public 
+       domain.  Please give your acknowledgement in product literature if 
+       this code is used in your product implementation.
+
+gnuradio-core/src/lib/general/malloc16.c
+       Copyright 2001 Phil Karn, KA9Q
+       May be used under the terms of the GNU Public License (GPL)
+
+gnuradio-core/src/lib/reed-solomon/*
+       Copyright 2002, Phil Karn, KA9Q
+       May be used under the terms of the GNU Public License (GPL)
+
+*.{qpf,qsf}
+       Copyright (C) 1991-2004 Altera Corporation
+       Any megafunction design, and related netlist (encrypted or decrypted),
+       support information, device programming or simulation file, and any 
+       other associated documentation or information provided by Altera or 
+       a partner under Altera's Megafunction Partnership Program may be used
+       only to program PLD devices (but not masked PLD devices) from Altera.
+       Any other use of such megafunction design, netlist, support 
+       information, device programming or simulation file, or any other 
+       related documentation or information is prohibited for any other 
+       purpose, including, but not limited to modification, reverse 
+       engineering, de-compiling, or use with any other silicon devices, 
+       unless such use is explicitly licensed under a separate agreement with
+       Altera or a megafunction partner.  Title to the intellectual property,
+       including patents, copyrights, trademarks, trade secrets, or maskworks,
+       embodied in any such megafunction design, netlist, support information,
+       device programming or simulation file, or any other related 
+       documentation or information provided by Altera or a megafunction
+       partner, remains with Altera, the megafunction partner, or their 
+       respective licensors. No other licenses, including any licenses needed 
+       under any third party's intellectual property, are provided herein.
+
+       Thesea are configuration files generated by Altera proprietary tools 
+       used in the creation of an open hardware design often used with GNU 
+       Radio, and for which GNU Radio includes device drivers.  These files 
+       are not used in the Debian package build process.
+
+gr-gsm-fr-vocoders/src/lib/gsm/*
+       Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
+       Technische Universitaet Berlin
+
+       Permission to use, copy, modify, and distribute this software
+       for any purpose with or without fee is hereby granted,
+       provided that this notice is not removed and that neither
+       the authors nor the Technische Universitaet Berlin are
+       deemed to have made any representations as to the suitability
+       of this software for any purpose nor are held responsible
+       for any defects of this software.  THERE IS ABSOLUTELY NO
+       WARRANTY FOR THIS SOFTWARE.
+
+gruel/src/include/gruel/thread_group.h
+       Copyright (C) 2001-2003 William E. Kempf
+       Copyright (C) 2007 Anthony Williams
+       Copyright 2008 Free Software Foundation, Inc.
+
+       The original was distributed under the Boost Software License, 
+       Version 1.0, but this derivative work is now covered by the overall
+       license assertion for GNU Radio.
+
+gnuradio-core/src/lib/general/gr_remez.cc
+       Copyright (c) 1995,1998  Jake Janovetz (janovetz@uiuc.edu)
+       Copyright (c) 2004  Free Software Foundation, Inc.
+
+       The original was distributed under LGPL version 2 or later, this
+       derivative work is now covered by the overall license assertion 
+       for GNU Radio.
+
+gr-gpio/src/fpga/include/common_config*.vh
+       Copyright (C) 2006,2007 Matt Ettus
+       Copyright (C) 2008 Corgan Enterprises LLC
+
+       The original was distributed under GPL version 2 or later, this
+       derivative work is now covered by the overall license assertion 
+       for GNU Radio.
+
+gr-wxgui/src/python/plot.py
+       (C) 2002, 2007 Gordon Williams
+
+       The original was licensed "Use as you wish", this derivative work 
+       is now covered by the overall license assertion for GNU Radio.
+
+gr-wxgui/src/python/plotter/gltext.py
+       Copyright (C) 2007 Christian Brugger, Stefan Hacker
+
+       The original was distributed under GPL version 2 or later, this
+       derivative work is now covered by the overall license assertion 
+       for GNU Radio.
+
+Various files in the omnithread library carry these copyrights:
+       Copyright (C) 2006 Free Software Foundation, Inc.
+       Copyright (C) 1994,1995,1996,1997 Olivetti & Oracle Research Laboratory
+       Copyright Wavetek Wandel & Goltermann, Plymouth.
+       Copyright (C) 1994,1995,1996, 1997 Immisch, becker & Partner
+       Copyright (C) 1998 Steven Brennes
+       Copyright (C) 1995-1999 AT&T Laboratories Cambridge
+
+       The original omnithread library was distributed under LGPL version 2 
+       or later, this derivative work is now covered by the overall license 
+       assertion for GNU Radio.
+
diff --git a/debian/custom/libusrp.udev b/debian/custom/libusrp.udev
deleted file mode 100644 (file)
index e45dc29..0000000
+++ /dev/null
@@ -1 +0,0 @@
-ACTION=="add", BUS=="usb", SYSFS{idVendor}=="fffe", SYSFS{idProduct}=="0002", GROUP:="usrp", MODE:="0660"
diff --git a/debian/custom/libusrp0.udev b/debian/custom/libusrp0.udev
new file mode 100644 (file)
index 0000000..e45dc29
--- /dev/null
@@ -0,0 +1 @@
+ACTION=="add", BUS=="usb", SYSFS{idVendor}=="fffe", SYSFS{idProduct}=="0002", GROUP:="usrp", MODE:="0660"
diff --git a/debian/custom/libusrp2-0.limits b/debian/custom/libusrp2-0.limits
new file mode 100644 (file)
index 0000000..f259b29
--- /dev/null
@@ -0,0 +1 @@
+@usrp            -       rtprio          50
diff --git a/debian/custom/libusrp2.limits b/debian/custom/libusrp2.limits
deleted file mode 100644 (file)
index f259b29..0000000
+++ /dev/null
@@ -1 +0,0 @@
-@usrp            -       rtprio          50
diff --git a/debian/custom/usrp.hotplug b/debian/custom/usrp.hotplug
deleted file mode 100644 (file)
index e8b9432..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /bin/sh
-
-GROUP=usrp
-
-# Set the permissions for the USRP devices right.
-set_permissions() {
-    if [ -f "$1" ]
-    then
-        if getent group $GROUP > /dev/null; then
-            chmod 660 "$DEVICE"
-            chown root.$GROUP "$1"
-        fi
-    fi
-}
-
-#
-# If we do not have /sbin/hotplug, we are being called by post-sarge udev
-# emulating hotplug. In that case, all of this is handled by our udev rules,
-# so we don't need to duplicate the work done here.
-# 
-if ! [ -x /sbin/hotplug ]; then
-    exit
-fi
-
-if [ "$ACTION" != "add" ]; then
-    exit
-fi
-
-# FIXME: Map the USB device ID to usrper's idea of "which USRP".
-#        For now, we just assume the user only has a single one.
-
-case $PRODUCT in
-    # USRP without loaded firmware 
-    fffe/2/2 | fffe/2/4)
-        sleep 1    # required on some machines
-        /usr/bin/usrper load_standard_bits
-        set_permissions "$DEVICE"
-    ;;
-
-    # USRP with loaded firmware
-    fffe/2/102 | fffe/2/104)
-        set_permissions "$DEVICE"
-    ;;
-esac
-
-
-
diff --git a/debian/libgnuradio-core.dirs b/debian/libgnuradio-core.dirs
deleted file mode 100644 (file)
index 3462501..0000000
+++ /dev/null
@@ -1 +0,0 @@
-etc/gnuradio/conf.d
diff --git a/debian/libgnuradio-core.install b/debian/libgnuradio-core.install
deleted file mode 100644 (file)
index e5c1d70..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-etc/gnuradio/conf.d/gnuradio-core.conf
-usr/lib/libgnuradio-core.la
-usr/lib/libgnuradio-core.so.*
diff --git a/debian/libgnuradio-core0.dirs b/debian/libgnuradio-core0.dirs
new file mode 100644 (file)
index 0000000..3462501
--- /dev/null
@@ -0,0 +1 @@
+etc/gnuradio/conf.d
diff --git a/debian/libgnuradio-core0.install b/debian/libgnuradio-core0.install
new file mode 100644 (file)
index 0000000..9feb625
--- /dev/null
@@ -0,0 +1,4 @@
+etc/gnuradio/conf.d/gnuradio-core.conf
+usr/lib/libgnuradio-core.la
+usr/lib/libgnuradio-core.so.*
+usr/bin/gnuradio-config-info
diff --git a/debian/libgnuradio-omnithread-dev.dirs b/debian/libgnuradio-omnithread-dev.dirs
deleted file mode 100644 (file)
index 79e3d42..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/lib/pkgconfig
-usr/include/gnuradio
diff --git a/debian/libgnuradio-omnithread-dev.install b/debian/libgnuradio-omnithread-dev.install
deleted file mode 100644 (file)
index 3ebc341..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-usr/include/gnuradio/omni_time.h
-usr/include/gnuradio/omnithread.h
-usr/include/gnuradio/ot_posix.h
-usr/lib/pkgconfig/gnuradio-omnithread.pc
-usr/lib/libgromnithread.so
diff --git a/debian/libgnuradio-omnithread.install b/debian/libgnuradio-omnithread.install
deleted file mode 100644 (file)
index 8910fb3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/lib/libgromnithread.la
-usr/lib/libgromnithread.so.*
diff --git a/debian/libgromnithread-dev.dirs b/debian/libgromnithread-dev.dirs
new file mode 100644 (file)
index 0000000..79e3d42
--- /dev/null
@@ -0,0 +1,2 @@
+usr/lib/pkgconfig
+usr/include/gnuradio
diff --git a/debian/libgromnithread-dev.install b/debian/libgromnithread-dev.install
new file mode 100644 (file)
index 0000000..3ebc341
--- /dev/null
@@ -0,0 +1,5 @@
+usr/include/gnuradio/omni_time.h
+usr/include/gnuradio/omnithread.h
+usr/include/gnuradio/ot_posix.h
+usr/lib/pkgconfig/gnuradio-omnithread.pc
+usr/lib/libgromnithread.so
diff --git a/debian/libgromnithread0.install b/debian/libgromnithread0.install
new file mode 100644 (file)
index 0000000..8910fb3
--- /dev/null
@@ -0,0 +1,2 @@
+usr/lib/libgromnithread.la
+usr/lib/libgromnithread.so.*
diff --git a/debian/libgruel.install b/debian/libgruel.install
deleted file mode 100644 (file)
index 54d2b99..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-usr/lib/libgruel.la
-usr/lib/libgruel.so.*
-
-
diff --git a/debian/libgruel0.install b/debian/libgruel0.install
new file mode 100644 (file)
index 0000000..54d2b99
--- /dev/null
@@ -0,0 +1,4 @@
+usr/lib/libgruel.la
+usr/lib/libgruel.so.*
+
+
diff --git a/debian/libmblock.install b/debian/libmblock.install
deleted file mode 100644 (file)
index cc78952..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-usr/lib/libmblock.la
-usr/lib/libmblock.so.*
-
diff --git a/debian/libmblock0.install b/debian/libmblock0.install
new file mode 100644 (file)
index 0000000..cc78952
--- /dev/null
@@ -0,0 +1,3 @@
+usr/lib/libmblock.la
+usr/lib/libmblock.so.*
+
diff --git a/debian/libusrp-inband.install b/debian/libusrp-inband.install
deleted file mode 100644 (file)
index f55f214..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/lib/libusrp-inband.la
-usr/lib/libusrp-inband.so.*
diff --git a/debian/libusrp.dirs b/debian/libusrp.dirs
deleted file mode 100644 (file)
index cb9eb42..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-etc/udev/rules.d
-/usr/share/usrp/rev2
-/usr/share/usrp/rev4
diff --git a/debian/libusrp.install b/debian/libusrp.install
deleted file mode 100644 (file)
index 1cabb1f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-usr/lib/libusrp.la
-usr/lib/libusrp.so.*
-etc/udev/rules.d/40-usrp.rules
-usr/share/usrp/rev2/multi_2rxhb_2tx.rbf
-usr/share/usrp/rev2/std.ihx
-usr/share/usrp/rev2/std_2rxhb_2tx.rbf
-usr/share/usrp/rev2/std_4rx_0tx.rbf
-usr/share/usrp/rev4/multi_2rxhb_2tx.rbf
-usr/share/usrp/rev4/std.ihx
-usr/share/usrp/rev4/std_2rxhb_2tx.rbf
-usr/share/usrp/rev4/std_4rx_0tx.rbf
diff --git a/debian/libusrp.postinst b/debian/libusrp.postinst
deleted file mode 100644 (file)
index 48da2b3..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#! /bin/sh
-
-set -e
-
-if [ "$1" != "configure" ]; then
-       exit 0
-fi
-
-# Create usrp group for udev access
-if ! getent group usrp >/dev/null; then
-    addgroup --system usrp
-fi
-
-ldconfig
-exit 0
diff --git a/debian/libusrp.postrm b/debian/libusrp.postrm
deleted file mode 100644 (file)
index 268d741..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#! /bin/sh
-
-set -e
-
-if [ "$1" != "remove" ]; then
-       exit 0
-fi
-
-/sbin/ldconfig
-exit 0
diff --git a/debian/libusrp0.dirs b/debian/libusrp0.dirs
new file mode 100644 (file)
index 0000000..cb9eb42
--- /dev/null
@@ -0,0 +1,3 @@
+etc/udev/rules.d
+/usr/share/usrp/rev2
+/usr/share/usrp/rev4
diff --git a/debian/libusrp0.install b/debian/libusrp0.install
new file mode 100644 (file)
index 0000000..1cabb1f
--- /dev/null
@@ -0,0 +1,11 @@
+usr/lib/libusrp.la
+usr/lib/libusrp.so.*
+etc/udev/rules.d/40-usrp.rules
+usr/share/usrp/rev2/multi_2rxhb_2tx.rbf
+usr/share/usrp/rev2/std.ihx
+usr/share/usrp/rev2/std_2rxhb_2tx.rbf
+usr/share/usrp/rev2/std_4rx_0tx.rbf
+usr/share/usrp/rev4/multi_2rxhb_2tx.rbf
+usr/share/usrp/rev4/std.ihx
+usr/share/usrp/rev4/std_2rxhb_2tx.rbf
+usr/share/usrp/rev4/std_4rx_0tx.rbf
diff --git a/debian/libusrp0.postinst b/debian/libusrp0.postinst
new file mode 100644 (file)
index 0000000..562b923
--- /dev/null
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" != "configure" ]; then
+       exit 0
+fi
+
+# Create usrp group for udev access
+if ! getent group usrp >/dev/null; then
+    addgroup --system usrp
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/libusrp2-0.dirs b/debian/libusrp2-0.dirs
new file mode 100644 (file)
index 0000000..6c09e0d
--- /dev/null
@@ -0,0 +1,2 @@
+etc/security/limits.d
+
diff --git a/debian/libusrp2-0.install b/debian/libusrp2-0.install
new file mode 100644 (file)
index 0000000..1c5963a
--- /dev/null
@@ -0,0 +1,5 @@
+usr/lib/libusrp2.la
+usr/lib/libusrp2.so.*
+usr/bin/usrp2_socket_opener
+usr/bin/find_usrps
+etc/security/limits.d/libusrp2-0.limits
diff --git a/debian/libusrp2-0.postinst b/debian/libusrp2-0.postinst
new file mode 100644 (file)
index 0000000..8da31a3
--- /dev/null
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" != "configure" ]; then
+       exit 0
+fi
+
+# Create usrp group for access
+if ! getent group usrp >/dev/null; then
+    addgroup --system usrp
+fi
+
+# Create setuid root for group usrp on socket opener
+chown root:usrp /usr/bin/usrp2_socket_opener
+chmod 04750 /usr/bin/usrp2_socket_opener
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/libusrp2.dirs b/debian/libusrp2.dirs
deleted file mode 100644 (file)
index 6c09e0d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-etc/security/limits.d
-
diff --git a/debian/libusrp2.install b/debian/libusrp2.install
deleted file mode 100644 (file)
index dfe91f8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-usr/lib/libusrp2.la
-usr/lib/libusrp2.so.*
-usr/bin/usrp2_socket_opener
-usr/bin/find_usrps
-etc/security/limits.d/libusrp2.limits
diff --git a/debian/libusrp2.postinst b/debian/libusrp2.postinst
deleted file mode 100644 (file)
index 91b9e11..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#! /bin/sh
-
-set -e
-
-if [ "$1" != "configure" ]; then
-       exit 0
-fi
-
-# Create usrp group for access
-if ! getent group usrp >/dev/null; then
-    addgroup --system usrp
-fi
-
-# Create setuid root for group usrp on socket opener
-chown root.usrp /usr/bin/usrp2_socket_opener
-chmod 04750 /usr/bin/usrp2_socket_opener
-ldconfig
-exit 0
diff --git a/debian/libusrp2.postrm b/debian/libusrp2.postrm
deleted file mode 100644 (file)
index 268d741..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#! /bin/sh
-
-set -e
-
-if [ "$1" != "remove" ]; then
-       exit 0
-fi
-
-/sbin/ldconfig
-exit 0
index 1fc459280b7ca905db8f9983d428d19e9132da68..f0dcd538d4392b8a7ab2dc620b670d1ac10d810b 100755 (executable)
@@ -8,6 +8,8 @@ export DH_OPTIONS
 
 export DH_PYCENTRAL=nomove
 
+DEB_BUILD_GNU_TYPE = $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
 clean:
        dh_testdir
        dh_testroot
@@ -37,6 +39,7 @@ configure-stamp:
        dh_testdir
        [ -f ./configure ] || ./bootstrap
        ./configure \
+               --build=$(DEB_BUILD_GNU_TYPE) \
                --prefix=/usr \
                --mandir=\$${prefix}/share/man \
                --infodir=\$${prefix}/share/info \
@@ -46,7 +49,7 @@ configure-stamp:
                --disable-gr-audio-osx \
                --disable-gr-audio-windows \
                --disable-gcell --disable-gr-gcell \
-               --disable-gr-comedi --disable-usrp2-firmware
+               --disable-gr-comedi --disable-usrp2-firmware 
        touch configure-stamp
 
 build: build-stamp
@@ -59,7 +62,8 @@ build-stamp: configure-stamp
 extract: extract-stamp
 extract-stamp: build-stamp debian/bin/gen-install-files.sh
        dh_testdir
-       debian/bin/gen-install-files.sh 
+       chmod +x debian/bin/gen-install-files.sh debian/bin/extract-install-filenames
+       debian/bin/gen-install-files.sh
        touch $@
 
 install: install-stamp
@@ -79,12 +83,12 @@ install-stamp: extract-stamp debian/control
        done
 
        : # Deposit rule to allow group 'usrp' access to USRP hardware
-       install -m 0644 -D debian/custom/libusrp.udev \
+       install -m 0644 -D debian/custom/libusrp0.udev \
                debian/tmp/etc/udev/rules.d/40-usrp.rules
 
        : # Deposit rule to allow group 'usrp' access to USRP2 hardware
-       install -m 0644 -D debian/custom/libusrp2.limits \
-               debian/tmp/etc/security/limits.d/libusrp2.limits
+       install -m 0644 -D debian/custom/libusrp2-0.limits \
+               debian/tmp/etc/security/limits.d/libusrp2-0.limits
 
        : # Install custom grc.conf
        install -m 0644 -D debian/custom/grc.conf \
index e4bbc74807229359f041b73152b384805db0626f..2ad0fb78e27eb18f68ace1d971835dfe69ae5076 100755 (executable)
@@ -57,6 +57,7 @@ def main():
         parser.print_help()
         sys.exit(1)
 
+    #FIXME to use git now
     svn_rev = get_svn_rev()
 
     os.environ['TZ'] = 'PST8PDT'        # always pacific
index a7e8de62ad6a65e7bb1e8914e748c72ecd73a2c6..7e34551c8ed4ce8e62ed4f85f4d33ddb28dad349 100644 (file)
@@ -30,6 +30,7 @@
 #include <gri_fft.h>
 #include <gr_io_signature.h>
 #include <cstdio>
+#include <cstring>
 
 gr_pfb_channelizer_ccf_sptr gr_make_pfb_channelizer_ccf (unsigned int numchans, 
                                                         const std::vector<float> &taps)
index d99c0d90a07a75f3218803cba696f6f054b771b9..fada3550a314818ba7abc56038610e78838643c3 100644 (file)
@@ -5,10 +5,10 @@ As the scripts are generated using GRC, GRC must be installed at runtime
 in order for them to operate.
 
 
-HRPT Operation
---------------
+HRPT OPERATION
 
 usrp_rx_hrpt.py
+---------------
 
 This GUI script will receive HRPT RF, demodulate, synchronize, and deframe
 HRPT minor frames into a file.  The file stores a series of 11090 word,
@@ -24,12 +24,26 @@ The present HRPT demodulator is only tested at decimation 16.  The only other
 valid decimation rates are 24 and 32, which may word but with more bit
 errors.  No other decimation rates will work.
 
+usrp_rx_hrpt2.py
+----------------
+
+This GUI script uses fewer graphical displays to reduce CPU consumption on
+slower machines, but otherwise operates identically to userp_rx_hrpt.py.
+
+usrp_rx_hrpt_nogui.py
+---------------------
+
+This non-GUI script operates without a display and requires that all parameters
+be set in the configuration file prior to running.  It has no command-line
+parameters, and works identically to the GUI scripts.
 
 demod_hrpt_file.py
+------------------
 
-This command-line only script will operate on a file generated with
+This non-GUI script will operate on a file generated with
 usrp_rx_cfile.py and output frames in the same format as above.  It does
-*not* use the configuration file above.
+*not* use the configuration file above; instead you must pass parameters to
+it on the command line.  To exit the program, press Enter.
 
 Usage: demod_hrpt_file.py: [options]
 
index 906638ff14211d367139ed8a7f9d978a2da2f444..b9787a92c48859c27fcacbdd64257b17480263f0 100644 (file)
@@ -26,10 +26,14 @@ if PYTHON
 dist_bin_SCRIPTS = \
        demod_hrpt_file.py \
        usrp_rx_hrpt.py \
+       usrp_rx_hrpt2.py \
+       usrp_rx_hrpt_nogui.py \
        usrp_rx_lrit.py
 
 EXTRA_DIST = \
        demod_hrpt_file.grc \
        usrp_rx_hrpt.grc \
+       usrp_rx_hrpt2.grc \
+       usrp_rx_hrpt_nogui.grc \
        usrp_rx_lrit.grc
 endif
index 4a5e87170f88d6d24163b942f1bdaeaa065ec355..16f83f780cb57bb7eba3e515a2ad2c9e0b5dc222 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Wed Sep 23 11:37:25 2009</timestamp>
+  <timestamp>Sun Sep 27 09:51:42 2009</timestamp>
   <block>
     <key>options</key>
     <param>
     </param>
   </block>
   <block>
-    <key>parameter</key>
+    <key>import</key>
     <param>
       <key>id</key>
-      <value>decim</value>
+      <value>import_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>label</key>
-      <value>Decimation</value>
-    </param>
-    <param>
-      <key>value</key>
-      <value>16</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>intx</value>
-    </param>
-    <param>
-      <key>short_id</key>
-      <value>d</value>
+      <key>import</key>
+      <value>import math</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(404, 102)</value>
+      <value>(9, 92)</value>
     </param>
     <param>
       <key>_rotation</key>
     <key>parameter</key>
     <param>
       <key>id</key>
-      <value>pll_alpha</value>
+      <value>filename</value>
     </param>
     <param>
       <key>_enabled</key>
     </param>
     <param>
       <key>label</key>
-      <value></value>
+      <value>Filename</value>
     </param>
     <param>
       <key>value</key>
-      <value>0.05</value>
+      <value>usrp.dat</value>
     </param>
     <param>
       <key>type</key>
-      <value>eng_float</value>
+      <value>string</value>
     </param>
     <param>
       <key>short_id</key>
-      <value>p</value>
+      <value>F</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(516, 102)</value>
+      <value>(200, 101)</value>
     </param>
     <param>
       <key>_rotation</key>
     <key>parameter</key>
     <param>
       <key>id</key>
-      <value>sync_alpha</value>
+      <value>output</value>
     </param>
     <param>
       <key>_enabled</key>
     </param>
     <param>
       <key>label</key>
-      <value></value>
+      <value>Output</value>
     </param>
     <param>
       <key>value</key>
-      <value>0.05</value>
+      <value>frames.dat</value>
     </param>
     <param>
       <key>type</key>
-      <value>eng_float</value>
+      <value>string</value>
     </param>
     <param>
       <key>short_id</key>
-      <value>s</value>
+      <value>o</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(601, 103)</value>
+      <value>(302, 101)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>import</key>
+    <key>gr_float_to_complex</key>
     <param>
       <key>id</key>
-      <value>import_0</value>
+      <value>f2c</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>import</key>
-      <value>import math</value>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(9, 92)</value>
+      <value>(832, 363)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>parameter</key>
+    <key>virtual_sink</key>
     <param>
       <key>id</key>
-      <value>filename</value>
+      <value>samples_sink</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>label</key>
-      <value>Filename</value>
+      <key>stream_id</key>
+      <value>samples</value>
     </param>
     <param>
-      <key>value</key>
-      <value>usrp.dat</value>
+      <key>_coordinate</key>
+      <value>(1070, 376)</value>
     </param>
     <param>
-      <key>type</key>
-      <value>string</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_sync_fb</key>
     <param>
-      <key>short_id</key>
-      <value>F</value>
+      <key>id</key>
+      <value>sync</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>alpha</key>
+      <value>sync_alpha</value>
+    </param>
+    <param>
+      <key>beta</key>
+      <value>sync_alpha**2/4.0</value>
+    </param>
+    <param>
+      <key>sps</key>
+      <value>sps</value>
+    </param>
+    <param>
+      <key>max_offset</key>
+      <value>max_sync_offset</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(200, 101)</value>
+      <value>(813, 455)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>gr_file_source</key>
+    <key>noaa_hrpt_deframer</key>
     <param>
       <key>id</key>
-      <value>file_source</value>
+      <value>deframer</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1037, 483)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_file_sink</key>
+    <param>
+      <key>id</key>
+      <value>file_sink</value>
     </param>
     <param>
       <key>_enabled</key>
     </param>
     <param>
       <key>file</key>
-      <value>filename</value>
+      <value>output</value>
     </param>
     <param>
       <key>type</key>
       <value>short</value>
     </param>
-    <param>
-      <key>repeat</key>
-      <value>False</value>
-    </param>
     <param>
       <key>vlen</key>
       <value>1</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(102, 368)</value>
+      <value>(1238, 479)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>gr_short_to_float</key>
+    <key>noaa_hrpt_decoder</key>
     <param>
       <key>id</key>
-      <value>s2f</value>
+      <value>decoder</value>
     </param>
     <param>
       <key>_enabled</key>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(305, 380)</value>
+      <value>(1237, 542)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(526, 363)</value>
+      <value>(628, 363)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>gr_float_to_complex</key>
+    <key>parameter</key>
     <param>
       <key>id</key>
-      <value>f2c</value>
+      <value>decim</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>vlen</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(730, 363)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>label</key>
+      <value>Decimation</value>
     </param>
-  </block>
-  <block>
-    <key>virtual_sink</key>
     <param>
-      <key>id</key>
-      <value>samples_sink</value>
+      <key>value</key>
+      <value>16</value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>type</key>
+      <value>intx</value>
     </param>
     <param>
-      <key>stream_id</key>
-      <value>samples</value>
+      <key>short_id</key>
+      <value>d</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(968, 376)</value>
+      <value>(415, 101)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>virtual_source</key>
+    <key>parameter</key>
     <param>
       <key>id</key>
-      <value>samples_source</value>
+      <value>pll_alpha</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>stream_id</key>
-      <value>samples</value>
+      <key>label</key>
+      <value></value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>0.05</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>eng_float</value>
+    </param>
+    <param>
+      <key>short_id</key>
+      <value>p</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(104, 479)</value>
+      <value>(527, 101)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>gr_moving_average_xx</key>
+    <key>parameter</key>
     <param>
       <key>id</key>
-      <value>matched_filter</value>
+      <value>sync_alpha</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>complex</value>
+      <key>label</key>
+      <value></value>
     </param>
     <param>
-      <key>length</key>
-      <value>hs</value>
+      <key>value</key>
+      <value>0.05</value>
     </param>
     <param>
-      <key>scale</key>
-      <value>1.0/hs</value>
+      <key>type</key>
+      <value>eng_float</value>
     </param>
     <param>
-      <key>max_iter</key>
-      <value>4000</value>
+      <key>short_id</key>
+      <value>s</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(302, 463)</value>
+      <value>(615, 99)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(504, 463)</value>
+      <value>(606, 463)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>noaa_hrpt_sync_fb</key>
+    <key>virtual_source</key>
     <param>
       <key>id</key>
-      <value>sync</value>
+      <value>samples_source</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>alpha</key>
-      <value>sync_alpha</value>
-    </param>
-    <param>
-      <key>beta</key>
-      <value>sync_alpha**2/4.0</value>
-    </param>
-    <param>
-      <key>sps</key>
-      <value>sps</value>
-    </param>
-    <param>
-      <key>max_offset</key>
-      <value>max_sync_offset</value>
+      <key>stream_id</key>
+      <value>samples</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(711, 455)</value>
+      <value>(164, 479)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>noaa_hrpt_deframer</key>
+    <key>gr_short_to_float</key>
     <param>
       <key>id</key>
-      <value>deframer</value>
+      <value>s2f</value>
     </param>
     <param>
       <key>_enabled</key>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(935, 483)</value>
+      <value>(365, 380)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>gr_file_sink</key>
+    <key>gr_file_source</key>
     <param>
       <key>id</key>
-      <value>file_sink</value>
+      <value>file_source</value>
     </param>
     <param>
       <key>_enabled</key>
     </param>
     <param>
       <key>file</key>
-      <value>output</value>
+      <value>filename</value>
     </param>
     <param>
       <key>type</key>
       <value>short</value>
     </param>
+    <param>
+      <key>repeat</key>
+      <value>False</value>
+    </param>
     <param>
       <key>vlen</key>
       <value>1</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1136, 479)</value>
+      <value>(162, 368)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>noaa_hrpt_decoder</key>
+    <key>variable</key>
     <param>
       <key>id</key>
-      <value>decoder</value>
+      <value>mf_taps</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
+    <param>
+      <key>value</key>
+      <value>[-0.5/hs,]*hs+[0.5/hs,]*hs</value>
+    </param>
     <param>
       <key>_coordinate</key>
-      <value>(1135, 542)</value>
+      <value>(829, 21)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>parameter</key>
+    <key>gr_fir_filter_xxx</key>
     <param>
       <key>id</key>
-      <value>output</value>
+      <value>gr_fir_filter_xxx_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>label</key>
-      <value>Output</value>
-    </param>
-    <param>
-      <key>value</key>
-      <value>frames.dat</value>
+      <key>type</key>
+      <value>ccc</value>
     </param>
     <param>
-      <key>type</key>
-      <value>string</value>
+      <key>decim</key>
+      <value>1</value>
     </param>
     <param>
-      <key>short_id</key>
-      <value>o</value>
+      <key>taps</key>
+      <value>mf_taps</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(302, 101)</value>
+      <value>(359, 471)</value>
     </param>
     <param>
       <key>_rotation</key>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
-  <connection>
-    <source_block_id>matched_filter</source_block_id>
-    <sink_block_id>pll</sink_block_id>
-    <source_key>0</source_key>
-    <sink_key>0</sink_key>
-  </connection>
-  <connection>
-    <source_block_id>s2f</source_block_id>
-    <sink_block_id>deinterleave</sink_block_id>
-    <source_key>0</source_key>
-    <sink_key>0</sink_key>
-  </connection>
   <connection>
     <source_block_id>deinterleave</source_block_id>
     <sink_block_id>f2c</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
-  <connection>
-    <source_block_id>file_source</source_block_id>
-    <sink_block_id>s2f</sink_block_id>
-    <source_key>0</source_key>
-    <sink_key>0</sink_key>
-  </connection>
   <connection>
     <source_block_id>deframer</source_block_id>
     <sink_block_id>decoder</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
+  <connection>
+    <source_block_id>gr_fir_filter_xxx_0</source_block_id>
+    <sink_block_id>pll</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
   <connection>
     <source_block_id>samples_source</source_block_id>
-    <sink_block_id>matched_filter</sink_block_id>
+    <sink_block_id>gr_fir_filter_xxx_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>s2f</source_block_id>
+    <sink_block_id>deinterleave</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>file_source</source_block_id>
+    <sink_block_id>s2f</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
index a1469e9e0762c4cc58b2ebb6aac3a480c4f9c9f1..309a7920943ea06751e9ce5f8961142ceb4149ee 100755 (executable)
@@ -2,7 +2,7 @@
 ##################################################
 # Gnuradio Python Flow Graph
 # Title: USRP HRPT Receiver
-# Generated: Wed Sep 23 11:37:25 2009
+# Generated: Sun Sep 27 09:34:15 2009
 ##################################################
 
 from gnuradio import eng_notation
@@ -15,17 +15,17 @@ import math
 
 class demod_hrpt_file(gr.top_block):
 
-       def __init__(self, decim=16, pll_alpha=0.05, sync_alpha=0.05, filename="usrp.dat", output="frames.dat"):
+       def __init__(self, filename="usrp.dat", output="frames.dat", decim=16, pll_alpha=0.05, sync_alpha=0.05):
                gr.top_block.__init__(self, "USRP HRPT Receiver")
 
                ##################################################
                # Parameters
                ##################################################
+               self.filename = filename
+               self.output = output
                self.decim = decim
                self.pll_alpha = pll_alpha
                self.sync_alpha = sync_alpha
-               self.filename = filename
-               self.output = output
 
                ##################################################
                # Variables
@@ -33,9 +33,10 @@ class demod_hrpt_file(gr.top_block):
                self.sym_rate = sym_rate = 600*1109
                self.sample_rate = sample_rate = 64e6/decim
                self.sps = sps = sample_rate/sym_rate
+               self.hs = hs = int(sps/2.0)
+               self.mf_taps = mf_taps = [-0.5/hs,]*hs+[0.5/hs,]*hs
                self.max_sync_offset = max_sync_offset = 0.01
                self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate
-               self.hs = hs = int(sps/2.0)
 
                ##################################################
                # Blocks
@@ -46,7 +47,7 @@ class demod_hrpt_file(gr.top_block):
                self.f2c = gr.float_to_complex(1)
                self.file_sink = gr.file_sink(gr.sizeof_short*1, output)
                self.file_source = gr.file_source(gr.sizeof_short*1, filename, False)
-               self.matched_filter = gr.moving_average_cc(hs, 1.0/hs, 4000)
+               self.gr_fir_filter_xxx_0 = gr.fir_filter_ccc(1, (mf_taps))
                self.pll = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset)
                self.s2f = gr.short_to_float()
                self.sync = noaa.hrpt_sync_fb(sync_alpha, sync_alpha**2/4.0, sps, max_sync_offset)
@@ -57,13 +58,19 @@ class demod_hrpt_file(gr.top_block):
                self.connect((self.deframer, 0), (self.file_sink, 0))
                self.connect((self.sync, 0), (self.deframer, 0))
                self.connect((self.pll, 0), (self.sync, 0))
-               self.connect((self.matched_filter, 0), (self.pll, 0))
-               self.connect((self.s2f, 0), (self.deinterleave, 0))
                self.connect((self.deinterleave, 1), (self.f2c, 1))
                self.connect((self.deinterleave, 0), (self.f2c, 0))
-               self.connect((self.file_source, 0), (self.s2f, 0))
                self.connect((self.deframer, 0), (self.decoder, 0))
-               self.connect((self.f2c, 0), (self.matched_filter, 0))
+               self.connect((self.gr_fir_filter_xxx_0, 0), (self.pll, 0))
+               self.connect((self.f2c, 0), (self.gr_fir_filter_xxx_0, 0))
+               self.connect((self.s2f, 0), (self.deinterleave, 0))
+               self.connect((self.file_source, 0), (self.s2f, 0))
+
+       def set_filename(self, filename):
+               self.filename = filename
+
+       def set_output(self, output):
+               self.output = output
 
        def set_decim(self, decim):
                self.decim = decim
@@ -79,12 +86,6 @@ class demod_hrpt_file(gr.top_block):
                self.sync.set_alpha(self.sync_alpha)
                self.sync.set_beta(self.sync_alpha**2/4.0)
 
-       def set_filename(self, filename):
-               self.filename = filename
-
-       def set_output(self, output):
-               self.output = output
-
        def set_sym_rate(self, sym_rate):
                self.sym_rate = sym_rate
                self.set_sps(self.sample_rate/self.sym_rate)
@@ -98,6 +99,14 @@ class demod_hrpt_file(gr.top_block):
                self.sps = sps
                self.set_hs(int(self.sps/2.0))
 
+       def set_hs(self, hs):
+               self.hs = hs
+               self.set_mf_taps([-0.5/self.hs,]*self.hs+[0.5/self.hs,]*self.hs)
+
+       def set_mf_taps(self, mf_taps):
+               self.mf_taps = mf_taps
+               self.gr_fir_filter_xxx_0.set_taps((self.mf_taps))
+
        def set_max_sync_offset(self, max_sync_offset):
                self.max_sync_offset = max_sync_offset
                self.sync.set_max_offset(self.max_sync_offset)
@@ -106,24 +115,20 @@ class demod_hrpt_file(gr.top_block):
                self.max_carrier_offset = max_carrier_offset
                self.pll.set_max_offset(self.max_carrier_offset)
 
-       def set_hs(self, hs):
-               self.hs = hs
-               self.matched_filter.set_length_and_scale(self.hs, 1.0/self.hs)
-
 if __name__ == '__main__':
        parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
+       parser.add_option("-F", "--filename", dest="filename", type="string", default="usrp.dat",
+               help="Set Filename [default=%default]")
+       parser.add_option("-o", "--output", dest="output", type="string", default="frames.dat",
+               help="Set Output [default=%default]")
        parser.add_option("-d", "--decim", dest="decim", type="intx", default=16,
                help="Set Decimation [default=%default]")
        parser.add_option("-p", "--pll-alpha", dest="pll_alpha", type="eng_float", default=eng_notation.num_to_str(0.05),
                help="Set pll_alpha [default=%default]")
        parser.add_option("-s", "--sync-alpha", dest="sync_alpha", type="eng_float", default=eng_notation.num_to_str(0.05),
                help="Set sync_alpha [default=%default]")
-       parser.add_option("-F", "--filename", dest="filename", type="string", default="usrp.dat",
-               help="Set Filename [default=%default]")
-       parser.add_option("-o", "--output", dest="output", type="string", default="frames.dat",
-               help="Set Output [default=%default]")
        (options, args) = parser.parse_args()
-       tb = demod_hrpt_file(decim=options.decim, pll_alpha=options.pll_alpha, sync_alpha=options.sync_alpha, filename=options.filename, output=options.output)
+       tb = demod_hrpt_file(filename=options.filename, output=options.output, decim=options.decim, pll_alpha=options.pll_alpha, sync_alpha=options.sync_alpha)
        tb.start()
        raw_input('Press Enter to quit: ')
        tb.stop()
index 90d86876935b3f78c4cc537d9b0e07522d125420..d0687971617cb7683ac64d177f9fc232e4f34645 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Wed Sep 23 11:32:00 2009</timestamp>
+  <timestamp>Sun Sep 27 13:37:22 2009</timestamp>
   <block>
     <key>options</key>
     <param>
       <value>0</value>
     </param>
   </block>
-  <block>
-    <key>gr_moving_average_xx</key>
-    <param>
-      <key>id</key>
-      <value>matched_filter</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>complex</value>
-    </param>
-    <param>
-      <key>length</key>
-      <value>hs</value>
-    </param>
-    <param>
-      <key>scale</key>
-      <value>1.0/hs</value>
-    </param>
-    <param>
-      <key>max_iter</key>
-      <value>4000</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(441, 723)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
   <block>
     <key>import</key>
     <param>
       <value>0</value>
     </param>
   </block>
+  <block>
+    <key>notebook</key>
+    <param>
+      <key>id</key>
+      <value>displays</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>style</key>
+      <value>wx.NB_TOP</value>
+    </param>
+    <param>
+      <key>labels</key>
+      <value>['RX','Demod']</value>
+    </param>
+    <param>
+      <key>grid_pos</key>
+      <value>2, 0, 1, 4</value>
+    </param>
+    <param>
+      <key>notebook</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(15, 237)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_sync_fb</key>
+    <param>
+      <key>id</key>
+      <value>sync</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>alpha</key>
+      <value>sync_alpha</value>
+    </param>
+    <param>
+      <key>beta</key>
+      <value>sync_alpha**2/4.0</value>
+    </param>
+    <param>
+      <key>sps</key>
+      <value>sps</value>
+    </param>
+    <param>
+      <key>max_offset</key>
+      <value>max_sync_offset</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(840, 715)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_deframer</key>
+    <param>
+      <key>id</key>
+      <value>deframer</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1071, 743)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_decoder</key>
+    <param>
+      <key>id</key>
+      <value>decoder</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1274, 743)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_file_sink</key>
+    <param>
+      <key>id</key>
+      <value>frame_sink</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>file</key>
+      <value>output_filename</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>short</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1273, 851)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>mf_taps</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>[-0.5/hs,]*hs+[0.5/hs]*hs</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(792, 158)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_pll_cf</key>
+    <param>
+      <key>id</key>
+      <value>pll</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>alpha</key>
+      <value>pll_alpha</value>
+    </param>
+    <param>
+      <key>beta</key>
+      <value>pll_alpha**2/4.0</value>
+    </param>
+    <param>
+      <key>max_offset</key>
+      <value>max_carrier_offset</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(632, 723)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_fir_filter_xxx</key>
+    <param>
+      <key>id</key>
+      <value>gr_fir_filter_xxx_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>ccc</value>
+    </param>
+    <param>
+      <key>decim</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>taps</key>
+      <value>mf_taps</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(400, 731)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
   <block>
     <key>usrp_simple_source_x</key>
     <param>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(56, 699)</value>
+      <value>(28, 699)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(273, 715)</value>
+      <value>(240, 715)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(439, 829)</value>
+      <value>(406, 838)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
     <param>
       <key>fft_rate</key>
-      <value>30</value>
+      <value>15</value>
     </param>
     <param>
       <key>peak_hold</key>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(439, 465)</value>
+      <value>(406, 466)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
     <param>
       <key>title</key>
-      <value>Post-PLL</value>
+      <value>Demod Waveform</value>
     </param>
     <param>
       <key>samp_rate</key>
       <value>180</value>
     </param>
   </block>
-  <block>
-    <key>notebook</key>
-    <param>
-      <key>id</key>
-      <value>displays</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>style</key>
-      <value>wx.NB_TOP</value>
-    </param>
-    <param>
-      <key>labels</key>
-      <value>['RX','Demod']</value>
-    </param>
-    <param>
-      <key>grid_pos</key>
-      <value>2, 0, 1, 4</value>
-    </param>
-    <param>
-      <key>notebook</key>
-      <value></value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(15, 237)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>noaa_hrpt_pll_cf</key>
-    <param>
-      <key>id</key>
-      <value>pll</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>alpha</key>
-      <value>pll_alpha</value>
-    </param>
-    <param>
-      <key>beta</key>
-      <value>pll_alpha**2/4.0</value>
-    </param>
-    <param>
-      <key>max_offset</key>
-      <value>max_carrier_offset</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(632, 723)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>noaa_hrpt_sync_fb</key>
-    <param>
-      <key>id</key>
-      <value>sync</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>alpha</key>
-      <value>sync_alpha</value>
-    </param>
-    <param>
-      <key>beta</key>
-      <value>sync_alpha**2/4.0</value>
-    </param>
-    <param>
-      <key>sps</key>
-      <value>sps</value>
-    </param>
-    <param>
-      <key>max_offset</key>
-      <value>max_sync_offset</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(840, 715)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>noaa_hrpt_deframer</key>
-    <param>
-      <key>id</key>
-      <value>deframer</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(1071, 743)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>noaa_hrpt_decoder</key>
-    <param>
-      <key>id</key>
-      <value>decoder</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(1274, 743)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>gr_file_sink</key>
-    <param>
-      <key>id</key>
-      <value>frame_sink</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>file</key>
-      <value>output_filename</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>short</value>
-    </param>
-    <param>
-      <key>vlen</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(1273, 851)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
   <connection>
     <source_block_id>deframer</source_block_id>
     <sink_block_id>frame_sink</sink_block_id>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>agc</source_block_id>
-    <sink_block_id>matched_filter</sink_block_id>
+    <source_block_id>deframer</source_block_id>
+    <sink_block_id>decoder</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>matched_filter</source_block_id>
-    <sink_block_id>pll</sink_block_id>
+    <source_block_id>agc</source_block_id>
+    <sink_block_id>gr_fir_filter_xxx_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>deframer</source_block_id>
-    <sink_block_id>decoder</sink_block_id>
+    <source_block_id>gr_fir_filter_xxx_0</source_block_id>
+    <sink_block_id>pll</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
index 7efbecd3a389bf654ed66639f59e18c1a8865388..ae70f25c8ce0d3733b2a10ca392207d323d4185f 100755 (executable)
@@ -2,7 +2,7 @@
 ##################################################
 # Gnuradio Python Flow Graph
 # Title: USRP HRPT Receiver
-# Generated: Wed Sep 23 11:32:04 2009
+# Generated: Sun Sep 27 13:37:23 2009
 ##################################################
 
 from gnuradio import eng_notation
@@ -62,6 +62,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
                try: saved_freq = self._saved_freq_config.getfloat('usrp', 'freq')
                except: saved_freq = 1698e6
                self.saved_freq = saved_freq
+               self.hs = hs = int(sps/2.0)
                self.sync_alpha = sync_alpha = saved_sync_alpha
                self.side_text = side_text = side
                self.pll_alpha = pll_alpha = saved_pll_alpha
@@ -70,9 +71,9 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
                try: output_filename = self._output_filename_config.get('output', 'filename')
                except: output_filename = 'frames.dat'
                self.output_filename = output_filename
+               self.mf_taps = mf_taps = [-0.5/hs,]*hs+[0.5/hs]*hs
                self.max_sync_offset = max_sync_offset = 0.01
                self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate
-               self.hs = hs = int(sps/2.0)
                self.gain = gain = saved_gain
                self.freq = freq = saved_freq
                self.decim_text = decim_text = decim
@@ -189,11 +190,11 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
                self.decoder = noaa.hrpt_decoder()
                self.deframer = noaa.hrpt_deframer()
                self.frame_sink = gr.file_sink(gr.sizeof_short*1, output_filename)
-               self.matched_filter = gr.moving_average_cc(hs, 1.0/hs, 4000)
+               self.gr_fir_filter_xxx_0 = gr.fir_filter_ccc(1, (mf_taps))
                self.pll = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset)
                self.pll_scope = scopesink2.scope_sink_f(
                        self.displays.GetPage(1).GetWin(),
-                       title="Post-PLL",
+                       title="Demod Waveform",
                        sample_rate=sample_rate,
                        v_scale=0.5,
                        t_scale=20.0/sample_rate,
@@ -211,7 +212,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
                        ref_scale=2.0,
                        sample_rate=sample_rate,
                        fft_size=1024,
-                       fft_rate=30,
+                       fft_rate=15,
                        average=True,
                        avg_alpha=0.1,
                        title="RX Spectrum",
@@ -244,9 +245,9 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
                self.connect((self.pll, 0), (self.pll_scope, 0))
                self.connect((self.agc, 0), (self.rx_scope, 0))
                self.connect((self.agc, 0), (self.rx_fft, 0))
-               self.connect((self.agc, 0), (self.matched_filter, 0))
-               self.connect((self.matched_filter, 0), (self.pll, 0))
                self.connect((self.deframer, 0), (self.decoder, 0))
+               self.connect((self.agc, 0), (self.gr_fir_filter_xxx_0, 0))
+               self.connect((self.gr_fir_filter_xxx_0, 0), (self.pll, 0))
                self.connect((self.usrp_source, 0), (self.agc, 0))
 
        def set_config_filename(self, config_filename):
@@ -348,6 +349,10 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
                self.saved_freq = saved_freq
                self.set_freq(self.saved_freq)
 
+       def set_hs(self, hs):
+               self.hs = hs
+               self.set_mf_taps([-0.5/self.hs,]*self.hs+[0.5/self.hs]*self.hs)
+
        def set_sync_alpha(self, sync_alpha):
                self.sync_alpha = sync_alpha
                self._sync_alpha_slider.set_value(self.sync_alpha)
@@ -387,6 +392,10 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
                self._output_filename_config.set('output', 'filename', str(self.output_filename))
                self._output_filename_config.write(open(self.config_filename, 'w'))
 
+       def set_mf_taps(self, mf_taps):
+               self.mf_taps = mf_taps
+               self.gr_fir_filter_xxx_0.set_taps((self.mf_taps))
+
        def set_max_sync_offset(self, max_sync_offset):
                self.max_sync_offset = max_sync_offset
                self.sync.set_max_offset(self.max_sync_offset)
@@ -395,10 +404,6 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
                self.max_carrier_offset = max_carrier_offset
                self.pll.set_max_offset(self.max_carrier_offset)
 
-       def set_hs(self, hs):
-               self.hs = hs
-               self.matched_filter.set_length_and_scale(self.hs, 1.0/self.hs)
-
        def set_gain(self, gain):
                self.gain = gain
                self._gain_slider.set_value(self.gain)
diff --git a/gr-noaa/apps/usrp_rx_hrpt2.grc b/gr-noaa/apps/usrp_rx_hrpt2.grc
new file mode 100644 (file)
index 0000000..d42a9ea
--- /dev/null
@@ -0,0 +1,1418 @@
+<?xml version='1.0' encoding='ASCII'?>
+<flow_graph>
+  <timestamp>Sun Sep 27 13:32:47 2009</timestamp>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>max_carrier_offset</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>2*math.pi*100e3/sample_rate</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(575, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>sym_rate</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>600*1109</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(301, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>sps</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>sample_rate/sym_rate</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(397, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>hs</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>int(sps/2.0)</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(499, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>sample_rate</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>64e6/decim</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(198, 17)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_slider</key>
+    <param>
+      <key>id</key>
+      <value>gain</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>RX Gain</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>saved_gain</value>
+    </param>
+    <param>
+      <key>min</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>max</key>
+      <value>100</value>
+    </param>
+    <param>
+      <key>num_steps</key>
+      <value>100</value>
+    </param>
+    <param>
+      <key>style</key>
+      <value>wx.SL_HORIZONTAL</value>
+    </param>
+    <param>
+      <key>converver</key>
+      <value>float_converter</value>
+    </param>
+    <param>
+      <key>grid_pos</key>
+      <value>0, 1, 1, 1</value>
+    </param>
+    <param>
+      <key>notebook</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(340, 106)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_text_box</key>
+    <param>
+      <key>id</key>
+      <value>freq</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>Frequency</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>saved_freq</value>
+    </param>
+    <param>
+      <key>converver</key>
+      <value>float_converter</value>
+    </param>
+    <param>
+      <key>formatter</key>
+      <value>None</value>
+    </param>
+    <param>
+      <key>grid_pos</key>
+      <value>0, 0, 1, 1</value>
+    </param>
+    <param>
+      <key>notebook</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(199, 106)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_slider</key>
+    <param>
+      <key>id</key>
+      <value>pll_alpha</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>PLL Alpha</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>saved_pll_alpha</value>
+    </param>
+    <param>
+      <key>min</key>
+      <value>0.0</value>
+    </param>
+    <param>
+      <key>max</key>
+      <value>0.5</value>
+    </param>
+    <param>
+      <key>num_steps</key>
+      <value>100</value>
+    </param>
+    <param>
+      <key>style</key>
+      <value>wx.SL_HORIZONTAL</value>
+    </param>
+    <param>
+      <key>converver</key>
+      <value>float_converter</value>
+    </param>
+    <param>
+      <key>grid_pos</key>
+      <value>0, 2, 1, 1</value>
+    </param>
+    <param>
+      <key>notebook</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(479, 106)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_slider</key>
+    <param>
+      <key>id</key>
+      <value>sync_alpha</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>SYNC Alpha</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>saved_sync_alpha</value>
+    </param>
+    <param>
+      <key>min</key>
+      <value>0.0</value>
+    </param>
+    <param>
+      <key>max</key>
+      <value>0.5</value>
+    </param>
+    <param>
+      <key>num_steps</key>
+      <value>100</value>
+    </param>
+    <param>
+      <key>style</key>
+      <value>wx.SL_HORIZONTAL</value>
+    </param>
+    <param>
+      <key>converver</key>
+      <value>float_converter</value>
+    </param>
+    <param>
+      <key>grid_pos</key>
+      <value>0, 3, 1, 1</value>
+    </param>
+    <param>
+      <key>notebook</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(618, 106)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_static_text</key>
+    <param>
+      <key>id</key>
+      <value>side_text</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>USRP Side</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>side</value>
+    </param>
+    <param>
+      <key>converver</key>
+      <value>str_converter</value>
+    </param>
+    <param>
+      <key>formatter</key>
+      <value>None</value>
+    </param>
+    <param>
+      <key>grid_pos</key>
+      <value>1, 0, 1, 1</value>
+    </param>
+    <param>
+      <key>notebook</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(828, 20)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>side</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>'A'</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>string</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'usrp'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'side'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>side</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(194, 253)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>decim</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>16</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>real</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'usrp'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'decim'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>decim</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(351, 255)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>saved_freq</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>1698e6</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>real</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'usrp'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'freq'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>freq</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(507, 258)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>saved_gain</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>35</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>real</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'usrp'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'gain'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>gain</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(664, 259)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>saved_pll_alpha</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>0.05</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>real</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'demod'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'pll_alpha'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>pll_alpha</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(823, 258)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>saved_sync_alpha</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>0.05</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>real</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'demod'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'sync_alpha'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>sync_alpha</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(981, 258)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>output_filename</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>'frames.dat'</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>string</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'output'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'filename'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>output_filename</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1139, 259)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_static_text</key>
+    <param>
+      <key>id</key>
+      <value>decim_text</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>Decimation</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>decim</value>
+    </param>
+    <param>
+      <key>converver</key>
+      <value>float_converter</value>
+    </param>
+    <param>
+      <key>formatter</key>
+      <value>None</value>
+    </param>
+    <param>
+      <key>grid_pos</key>
+      <value>1, 1, 1, 1</value>
+    </param>
+    <param>
+      <key>notebook</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(973, 20)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>max_sync_offset</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>0.01</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(705, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>'usrp_rx_hrpt.cfg'</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(12, 160)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>import</key>
+    <param>
+      <key>id</key>
+      <value>import_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>import</key>
+      <value>import math</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(11, 102)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_pll_cf</key>
+    <param>
+      <key>id</key>
+      <value>pll</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>alpha</key>
+      <value>pll_alpha</value>
+    </param>
+    <param>
+      <key>beta</key>
+      <value>pll_alpha**2/4.0</value>
+    </param>
+    <param>
+      <key>max_offset</key>
+      <value>max_carrier_offset</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(664, 809)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_sync_fb</key>
+    <param>
+      <key>id</key>
+      <value>sync</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>alpha</key>
+      <value>sync_alpha</value>
+    </param>
+    <param>
+      <key>beta</key>
+      <value>sync_alpha**2/4.0</value>
+    </param>
+    <param>
+      <key>sps</key>
+      <value>sps</value>
+    </param>
+    <param>
+      <key>max_offset</key>
+      <value>max_sync_offset</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(865, 801)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_file_sink</key>
+    <param>
+      <key>id</key>
+      <value>frame_sink</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>file</key>
+      <value>output_filename</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>short</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1283, 937)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_deframer</key>
+    <param>
+      <key>id</key>
+      <value>deframer</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1091, 829)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_decoder</key>
+    <param>
+      <key>id</key>
+      <value>decoder</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1281, 829)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>wxgui_scopesink2</key>
+    <param>
+      <key>id</key>
+      <value>pll_scope</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>float</value>
+    </param>
+    <param>
+      <key>title</key>
+      <value>Demod Waveform</value>
+    </param>
+    <param>
+      <key>samp_rate</key>
+      <value>sample_rate</value>
+    </param>
+    <param>
+      <key>v_scale</key>
+      <value>0.5</value>
+    </param>
+    <param>
+      <key>t_scale</key>
+      <value>20.0/sample_rate</value>
+    </param>
+    <param>
+      <key>ac_couple</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>xy_mode</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>num_inputs</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>grid_pos</key>
+      <value>2,0,1,4</value>
+    </param>
+    <param>
+      <key>notebook</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(631, 632)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>180</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_agc_xx</key>
+    <param>
+      <key>id</key>
+      <value>agc</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>complex</value>
+    </param>
+    <param>
+      <key>rate</key>
+      <value>1e-6</value>
+    </param>
+    <param>
+      <key>reference</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>gain</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>max_gain</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(269, 801)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_fir_filter_xxx</key>
+    <param>
+      <key>id</key>
+      <value>gr_fir_filter_xxx_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>ccc</value>
+    </param>
+    <param>
+      <key>decim</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>taps</key>
+      <value>mf_taps</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(418, 817)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>mf_taps</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>[-0.5/hs,]*hs+[0.5/hs,]*hs</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(830, 154)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_file_source</key>
+    <param>
+      <key>id</key>
+      <value>file_source</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>file</key>
+      <value>'usrp.dat'</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>short</value>
+    </param>
+    <param>
+      <key>repeat</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(215, 490)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_deinterleave</key>
+    <param>
+      <key>id</key>
+      <value>gr_deinterleave_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>float</value>
+    </param>
+    <param>
+      <key>num_streams</key>
+      <value>2</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(598, 485)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_float_to_complex</key>
+    <param>
+      <key>id</key>
+      <value>gr_float_to_complex_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(801, 485)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_short_to_float</key>
+    <param>
+      <key>id</key>
+      <value>s2f</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(393, 502)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>virtual_sink</key>
+    <param>
+      <key>id</key>
+      <value>sample_stream</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>stream_id</key>
+      <value>samples</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1027, 498)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>usrp_simple_source_x</key>
+    <param>
+      <key>id</key>
+      <value>usrp_source</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>complex</value>
+    </param>
+    <param>
+      <key>format</key>
+      <value></value>
+    </param>
+    <param>
+      <key>which</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>decimation</key>
+      <value>decim</value>
+    </param>
+    <param>
+      <key>frequency</key>
+      <value>freq</value>
+    </param>
+    <param>
+      <key>lo_offset</key>
+      <value>float('inf')</value>
+    </param>
+    <param>
+      <key>gain</key>
+      <value>gain</value>
+    </param>
+    <param>
+      <key>side</key>
+      <value>side</value>
+    </param>
+    <param>
+      <key>rx_ant</key>
+      <value>RXA</value>
+    </param>
+    <param>
+      <key>hb_filters</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(63, 785)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>virtual_source</key>
+    <param>
+      <key>id</key>
+      <value>virtual_source_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>stream_id</key>
+      <value>samples</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(69, 671)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>options</key>
+    <param>
+      <key>id</key>
+      <value>usrp_rx_hrpt2</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>title</key>
+      <value>USRP HRPT Receiver</value>
+    </param>
+    <param>
+      <key>author</key>
+      <value></value>
+    </param>
+    <param>
+      <key>description</key>
+      <value></value>
+    </param>
+    <param>
+      <key>window_size</key>
+      <value>4096,4096</value>
+    </param>
+    <param>
+      <key>generate_options</key>
+      <value>wx_gui</value>
+    </param>
+    <param>
+      <key>category</key>
+      <value>Custom</value>
+    </param>
+    <param>
+      <key>run</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>realtime_scheduling</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(10, 10)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <connection>
+    <source_block_id>gr_fir_filter_xxx_0</source_block_id>
+    <sink_block_id>pll</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>agc</source_block_id>
+    <sink_block_id>gr_fir_filter_xxx_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>usrp_source</source_block_id>
+    <sink_block_id>agc</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>deframer</source_block_id>
+    <sink_block_id>decoder</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>pll</source_block_id>
+    <sink_block_id>pll_scope</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>pll</source_block_id>
+    <sink_block_id>sync</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>sync</source_block_id>
+    <sink_block_id>deframer</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>deframer</source_block_id>
+    <sink_block_id>frame_sink</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>virtual_source_0</source_block_id>
+    <sink_block_id>agc</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>file_source</source_block_id>
+    <sink_block_id>s2f</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>s2f</source_block_id>
+    <sink_block_id>gr_deinterleave_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>gr_deinterleave_0</source_block_id>
+    <sink_block_id>gr_float_to_complex_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>gr_deinterleave_0</source_block_id>
+    <sink_block_id>gr_float_to_complex_0</sink_block_id>
+    <source_key>1</source_key>
+    <sink_key>1</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>gr_float_to_complex_0</source_block_id>
+    <sink_block_id>sample_stream</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+</flow_graph>
diff --git a/gr-noaa/apps/usrp_rx_hrpt2.py b/gr-noaa/apps/usrp_rx_hrpt2.py
new file mode 100755 (executable)
index 0000000..3193351
--- /dev/null
@@ -0,0 +1,401 @@
+#!/usr/bin/env python
+##################################################
+# Gnuradio Python Flow Graph
+# Title: USRP HRPT Receiver
+# Generated: Sun Sep 27 13:32:48 2009
+##################################################
+
+from gnuradio import eng_notation
+from gnuradio import gr
+from gnuradio import noaa
+from gnuradio.eng_option import eng_option
+from gnuradio.gr import firdes
+from gnuradio.wxgui import forms
+from gnuradio.wxgui import scopesink2
+from grc_gnuradio import usrp as grc_usrp
+from grc_gnuradio import wxgui as grc_wxgui
+from optparse import OptionParser
+import ConfigParser
+import math
+import wx
+
+class usrp_rx_hrpt2(grc_wxgui.top_block_gui):
+
+       def __init__(self):
+               grc_wxgui.top_block_gui.__init__(self, title="USRP HRPT Receiver")
+
+               ##################################################
+               # Variables
+               ##################################################
+               self.config_filename = config_filename = 'usrp_rx_hrpt.cfg'
+               self._decim_config = ConfigParser.ConfigParser()
+               self._decim_config.read(config_filename)
+               try: decim = self._decim_config.getfloat('usrp', 'decim')
+               except: decim = 16
+               self.decim = decim
+               self.sym_rate = sym_rate = 600*1109
+               self.sample_rate = sample_rate = 64e6/decim
+               self.sps = sps = sample_rate/sym_rate
+               self._side_config = ConfigParser.ConfigParser()
+               self._side_config.read(config_filename)
+               try: side = self._side_config.get('usrp', 'side')
+               except: side = 'A'
+               self.side = side
+               self._saved_sync_alpha_config = ConfigParser.ConfigParser()
+               self._saved_sync_alpha_config.read(config_filename)
+               try: saved_sync_alpha = self._saved_sync_alpha_config.getfloat('demod', 'sync_alpha')
+               except: saved_sync_alpha = 0.05
+               self.saved_sync_alpha = saved_sync_alpha
+               self._saved_pll_alpha_config = ConfigParser.ConfigParser()
+               self._saved_pll_alpha_config.read(config_filename)
+               try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat('demod', 'pll_alpha')
+               except: saved_pll_alpha = 0.05
+               self.saved_pll_alpha = saved_pll_alpha
+               self._saved_gain_config = ConfigParser.ConfigParser()
+               self._saved_gain_config.read(config_filename)
+               try: saved_gain = self._saved_gain_config.getfloat('usrp', 'gain')
+               except: saved_gain = 35
+               self.saved_gain = saved_gain
+               self._saved_freq_config = ConfigParser.ConfigParser()
+               self._saved_freq_config.read(config_filename)
+               try: saved_freq = self._saved_freq_config.getfloat('usrp', 'freq')
+               except: saved_freq = 1698e6
+               self.saved_freq = saved_freq
+               self.hs = hs = int(sps/2.0)
+               self.sync_alpha = sync_alpha = saved_sync_alpha
+               self.side_text = side_text = side
+               self.pll_alpha = pll_alpha = saved_pll_alpha
+               self._output_filename_config = ConfigParser.ConfigParser()
+               self._output_filename_config.read(config_filename)
+               try: output_filename = self._output_filename_config.get('output', 'filename')
+               except: output_filename = 'frames.dat'
+               self.output_filename = output_filename
+               self.mf_taps = mf_taps = [-0.5/hs,]*hs+[0.5/hs,]*hs
+               self.max_sync_offset = max_sync_offset = 0.01
+               self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate
+               self.gain = gain = saved_gain
+               self.freq = freq = saved_freq
+               self.decim_text = decim_text = decim
+
+               ##################################################
+               # Controls
+               ##################################################
+               _sync_alpha_sizer = wx.BoxSizer(wx.VERTICAL)
+               self._sync_alpha_text_box = forms.text_box(
+                       parent=self.GetWin(),
+                       sizer=_sync_alpha_sizer,
+                       value=self.sync_alpha,
+                       callback=self.set_sync_alpha,
+                       label="SYNC Alpha",
+                       converter=forms.float_converter(),
+                       proportion=0,
+               )
+               self._sync_alpha_slider = forms.slider(
+                       parent=self.GetWin(),
+                       sizer=_sync_alpha_sizer,
+                       value=self.sync_alpha,
+                       callback=self.set_sync_alpha,
+                       minimum=0.0,
+                       maximum=0.5,
+                       num_steps=100,
+                       style=wx.SL_HORIZONTAL,
+                       cast=float,
+                       proportion=1,
+               )
+               self.GridAdd(_sync_alpha_sizer, 0, 3, 1, 1)
+               self._side_text_static_text = forms.static_text(
+                       parent=self.GetWin(),
+                       value=self.side_text,
+                       callback=self.set_side_text,
+                       label="USRP Side",
+                       converter=forms.str_converter(),
+               )
+               self.GridAdd(self._side_text_static_text, 1, 0, 1, 1)
+               _pll_alpha_sizer = wx.BoxSizer(wx.VERTICAL)
+               self._pll_alpha_text_box = forms.text_box(
+                       parent=self.GetWin(),
+                       sizer=_pll_alpha_sizer,
+                       value=self.pll_alpha,
+                       callback=self.set_pll_alpha,
+                       label="PLL Alpha",
+                       converter=forms.float_converter(),
+                       proportion=0,
+               )
+               self._pll_alpha_slider = forms.slider(
+                       parent=self.GetWin(),
+                       sizer=_pll_alpha_sizer,
+                       value=self.pll_alpha,
+                       callback=self.set_pll_alpha,
+                       minimum=0.0,
+                       maximum=0.5,
+                       num_steps=100,
+                       style=wx.SL_HORIZONTAL,
+                       cast=float,
+                       proportion=1,
+               )
+               self.GridAdd(_pll_alpha_sizer, 0, 2, 1, 1)
+               _gain_sizer = wx.BoxSizer(wx.VERTICAL)
+               self._gain_text_box = forms.text_box(
+                       parent=self.GetWin(),
+                       sizer=_gain_sizer,
+                       value=self.gain,
+                       callback=self.set_gain,
+                       label="RX Gain",
+                       converter=forms.float_converter(),
+                       proportion=0,
+               )
+               self._gain_slider = forms.slider(
+                       parent=self.GetWin(),
+                       sizer=_gain_sizer,
+                       value=self.gain,
+                       callback=self.set_gain,
+                       minimum=0,
+                       maximum=100,
+                       num_steps=100,
+                       style=wx.SL_HORIZONTAL,
+                       cast=float,
+                       proportion=1,
+               )
+               self.GridAdd(_gain_sizer, 0, 1, 1, 1)
+               self._freq_text_box = forms.text_box(
+                       parent=self.GetWin(),
+                       value=self.freq,
+                       callback=self.set_freq,
+                       label="Frequency",
+                       converter=forms.float_converter(),
+               )
+               self.GridAdd(self._freq_text_box, 0, 0, 1, 1)
+               self._decim_text_static_text = forms.static_text(
+                       parent=self.GetWin(),
+                       value=self.decim_text,
+                       callback=self.set_decim_text,
+                       label="Decimation",
+                       converter=forms.float_converter(),
+               )
+               self.GridAdd(self._decim_text_static_text, 1, 1, 1, 1)
+
+               ##################################################
+               # Blocks
+               ##################################################
+               self.agc = gr.agc_cc(1e-6, 1.0, 1.0, 1.0)
+               self.decoder = noaa.hrpt_decoder()
+               self.deframer = noaa.hrpt_deframer()
+               self.frame_sink = gr.file_sink(gr.sizeof_short*1, output_filename)
+               self.gr_fir_filter_xxx_0 = gr.fir_filter_ccc(1, (mf_taps))
+               self.pll = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset)
+               self.pll_scope = scopesink2.scope_sink_f(
+                       self.GetWin(),
+                       title="Demod Waveform",
+                       sample_rate=sample_rate,
+                       v_scale=0.5,
+                       t_scale=20.0/sample_rate,
+                       ac_couple=False,
+                       xy_mode=False,
+                       num_inputs=1,
+               )
+               self.GridAdd(self.pll_scope.win, 2, 0, 1, 4)
+               self.sync = noaa.hrpt_sync_fb(sync_alpha, sync_alpha**2/4.0, sps, max_sync_offset)
+               self.usrp_source = grc_usrp.simple_source_c(which=0, side=side, rx_ant="RXA")
+               self.usrp_source.set_decim_rate(decim)
+               self.usrp_source.set_frequency(freq, verbose=True)
+               self.usrp_source.set_gain(gain)
+
+               ##################################################
+               # Connections
+               ##################################################
+               self.connect((self.gr_fir_filter_xxx_0, 0), (self.pll, 0))
+               self.connect((self.agc, 0), (self.gr_fir_filter_xxx_0, 0))
+               self.connect((self.usrp_source, 0), (self.agc, 0))
+               self.connect((self.deframer, 0), (self.decoder, 0))
+               self.connect((self.pll, 0), (self.pll_scope, 0))
+               self.connect((self.pll, 0), (self.sync, 0))
+               self.connect((self.sync, 0), (self.deframer, 0))
+               self.connect((self.deframer, 0), (self.frame_sink, 0))
+
+       def set_config_filename(self, config_filename):
+               self.config_filename = config_filename
+               self._side_config = ConfigParser.ConfigParser()
+               self._side_config.read(self.config_filename)
+               if not self._side_config.has_section('usrp'):
+                       self._side_config.add_section('usrp')
+               self._side_config.set('usrp', 'side', str(self.side))
+               self._side_config.write(open(self.config_filename, 'w'))
+               self._decim_config = ConfigParser.ConfigParser()
+               self._decim_config.read(self.config_filename)
+               if not self._decim_config.has_section('usrp'):
+                       self._decim_config.add_section('usrp')
+               self._decim_config.set('usrp', 'decim', str(self.decim))
+               self._decim_config.write(open(self.config_filename, 'w'))
+               self._saved_freq_config = ConfigParser.ConfigParser()
+               self._saved_freq_config.read(self.config_filename)
+               if not self._saved_freq_config.has_section('usrp'):
+                       self._saved_freq_config.add_section('usrp')
+               self._saved_freq_config.set('usrp', 'freq', str(self.freq))
+               self._saved_freq_config.write(open(self.config_filename, 'w'))
+               self._saved_gain_config = ConfigParser.ConfigParser()
+               self._saved_gain_config.read(self.config_filename)
+               if not self._saved_gain_config.has_section('usrp'):
+                       self._saved_gain_config.add_section('usrp')
+               self._saved_gain_config.set('usrp', 'gain', str(self.gain))
+               self._saved_gain_config.write(open(self.config_filename, 'w'))
+               self._saved_pll_alpha_config = ConfigParser.ConfigParser()
+               self._saved_pll_alpha_config.read(self.config_filename)
+               if not self._saved_pll_alpha_config.has_section('demod'):
+                       self._saved_pll_alpha_config.add_section('demod')
+               self._saved_pll_alpha_config.set('demod', 'pll_alpha', str(self.pll_alpha))
+               self._saved_pll_alpha_config.write(open(self.config_filename, 'w'))
+               self._saved_sync_alpha_config = ConfigParser.ConfigParser()
+               self._saved_sync_alpha_config.read(self.config_filename)
+               if not self._saved_sync_alpha_config.has_section('demod'):
+                       self._saved_sync_alpha_config.add_section('demod')
+               self._saved_sync_alpha_config.set('demod', 'sync_alpha', str(self.sync_alpha))
+               self._saved_sync_alpha_config.write(open(self.config_filename, 'w'))
+               self._output_filename_config = ConfigParser.ConfigParser()
+               self._output_filename_config.read(self.config_filename)
+               if not self._output_filename_config.has_section('output'):
+                       self._output_filename_config.add_section('output')
+               self._output_filename_config.set('output', 'filename', str(self.output_filename))
+               self._output_filename_config.write(open(self.config_filename, 'w'))
+
+       def set_decim(self, decim):
+               self.decim = decim
+               self.set_sample_rate(64e6/self.decim)
+               self._decim_config = ConfigParser.ConfigParser()
+               self._decim_config.read(self.config_filename)
+               if not self._decim_config.has_section('usrp'):
+                       self._decim_config.add_section('usrp')
+               self._decim_config.set('usrp', 'decim', str(self.decim))
+               self._decim_config.write(open(self.config_filename, 'w'))
+               self.set_decim_text(self.decim)
+               self.usrp_source.set_decim_rate(self.decim)
+
+       def set_sym_rate(self, sym_rate):
+               self.sym_rate = sym_rate
+               self.set_sps(self.sample_rate/self.sym_rate)
+
+       def set_sample_rate(self, sample_rate):
+               self.sample_rate = sample_rate
+               self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate)
+               self.set_sps(self.sample_rate/self.sym_rate)
+               self.pll_scope.set_sample_rate(self.sample_rate)
+
+       def set_sps(self, sps):
+               self.sps = sps
+               self.set_hs(int(self.sps/2.0))
+
+       def set_side(self, side):
+               self.side = side
+               self.set_side_text(self.side)
+               self._side_config = ConfigParser.ConfigParser()
+               self._side_config.read(self.config_filename)
+               if not self._side_config.has_section('usrp'):
+                       self._side_config.add_section('usrp')
+               self._side_config.set('usrp', 'side', str(self.side))
+               self._side_config.write(open(self.config_filename, 'w'))
+
+       def set_saved_sync_alpha(self, saved_sync_alpha):
+               self.saved_sync_alpha = saved_sync_alpha
+               self.set_sync_alpha(self.saved_sync_alpha)
+
+       def set_saved_pll_alpha(self, saved_pll_alpha):
+               self.saved_pll_alpha = saved_pll_alpha
+               self.set_pll_alpha(self.saved_pll_alpha)
+
+       def set_saved_gain(self, saved_gain):
+               self.saved_gain = saved_gain
+               self.set_gain(self.saved_gain)
+
+       def set_saved_freq(self, saved_freq):
+               self.saved_freq = saved_freq
+               self.set_freq(self.saved_freq)
+
+       def set_hs(self, hs):
+               self.hs = hs
+               self.set_mf_taps([-0.5/self.hs,]*self.hs+[0.5/self.hs,]*self.hs)
+
+       def set_sync_alpha(self, sync_alpha):
+               self.sync_alpha = sync_alpha
+               self._sync_alpha_slider.set_value(self.sync_alpha)
+               self._sync_alpha_text_box.set_value(self.sync_alpha)
+               self._saved_sync_alpha_config = ConfigParser.ConfigParser()
+               self._saved_sync_alpha_config.read(self.config_filename)
+               if not self._saved_sync_alpha_config.has_section('demod'):
+                       self._saved_sync_alpha_config.add_section('demod')
+               self._saved_sync_alpha_config.set('demod', 'sync_alpha', str(self.sync_alpha))
+               self._saved_sync_alpha_config.write(open(self.config_filename, 'w'))
+               self.sync.set_alpha(self.sync_alpha)
+               self.sync.set_beta(self.sync_alpha**2/4.0)
+
+       def set_side_text(self, side_text):
+               self.side_text = side_text
+               self._side_text_static_text.set_value(self.side_text)
+
+       def set_pll_alpha(self, pll_alpha):
+               self.pll_alpha = pll_alpha
+               self._pll_alpha_slider.set_value(self.pll_alpha)
+               self._pll_alpha_text_box.set_value(self.pll_alpha)
+               self._saved_pll_alpha_config = ConfigParser.ConfigParser()
+               self._saved_pll_alpha_config.read(self.config_filename)
+               if not self._saved_pll_alpha_config.has_section('demod'):
+                       self._saved_pll_alpha_config.add_section('demod')
+               self._saved_pll_alpha_config.set('demod', 'pll_alpha', str(self.pll_alpha))
+               self._saved_pll_alpha_config.write(open(self.config_filename, 'w'))
+               self.pll.set_alpha(self.pll_alpha)
+               self.pll.set_beta(self.pll_alpha**2/4.0)
+
+       def set_output_filename(self, output_filename):
+               self.output_filename = output_filename
+               self._output_filename_config = ConfigParser.ConfigParser()
+               self._output_filename_config.read(self.config_filename)
+               if not self._output_filename_config.has_section('output'):
+                       self._output_filename_config.add_section('output')
+               self._output_filename_config.set('output', 'filename', str(self.output_filename))
+               self._output_filename_config.write(open(self.config_filename, 'w'))
+
+       def set_mf_taps(self, mf_taps):
+               self.mf_taps = mf_taps
+               self.gr_fir_filter_xxx_0.set_taps((self.mf_taps))
+
+       def set_max_sync_offset(self, max_sync_offset):
+               self.max_sync_offset = max_sync_offset
+               self.sync.set_max_offset(self.max_sync_offset)
+
+       def set_max_carrier_offset(self, max_carrier_offset):
+               self.max_carrier_offset = max_carrier_offset
+               self.pll.set_max_offset(self.max_carrier_offset)
+
+       def set_gain(self, gain):
+               self.gain = gain
+               self._gain_slider.set_value(self.gain)
+               self._gain_text_box.set_value(self.gain)
+               self._saved_gain_config = ConfigParser.ConfigParser()
+               self._saved_gain_config.read(self.config_filename)
+               if not self._saved_gain_config.has_section('usrp'):
+                       self._saved_gain_config.add_section('usrp')
+               self._saved_gain_config.set('usrp', 'gain', str(self.gain))
+               self._saved_gain_config.write(open(self.config_filename, 'w'))
+               self.usrp_source.set_gain(self.gain)
+
+       def set_freq(self, freq):
+               self.freq = freq
+               self._freq_text_box.set_value(self.freq)
+               self._saved_freq_config = ConfigParser.ConfigParser()
+               self._saved_freq_config.read(self.config_filename)
+               if not self._saved_freq_config.has_section('usrp'):
+                       self._saved_freq_config.add_section('usrp')
+               self._saved_freq_config.set('usrp', 'freq', str(self.freq))
+               self._saved_freq_config.write(open(self.config_filename, 'w'))
+               self.usrp_source.set_frequency(self.freq)
+
+       def set_decim_text(self, decim_text):
+               self.decim_text = decim_text
+               self._decim_text_static_text.set_value(self.decim_text)
+
+if __name__ == '__main__':
+       parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
+       (options, args) = parser.parse_args()
+       if gr.enable_realtime_scheduling() != gr.RT_OK:
+               print "Error: failed to enable realtime scheduling."
+       tb = usrp_rx_hrpt2()
+       tb.Run(True)
+
diff --git a/gr-noaa/apps/usrp_rx_hrpt_nogui.grc b/gr-noaa/apps/usrp_rx_hrpt_nogui.grc
new file mode 100644 (file)
index 0000000..fadc2d1
--- /dev/null
@@ -0,0 +1,869 @@
+<?xml version='1.0' encoding='ASCII'?>
+<flow_graph>
+  <timestamp>Sun Sep 27 10:13:25 2009</timestamp>
+  <block>
+    <key>options</key>
+    <param>
+      <key>id</key>
+      <value>usrp_rx_hrpt_nogui</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>title</key>
+      <value>USRP HRPT Receiver</value>
+    </param>
+    <param>
+      <key>author</key>
+      <value></value>
+    </param>
+    <param>
+      <key>description</key>
+      <value></value>
+    </param>
+    <param>
+      <key>window_size</key>
+      <value>4096,4096</value>
+    </param>
+    <param>
+      <key>generate_options</key>
+      <value>no_gui</value>
+    </param>
+    <param>
+      <key>category</key>
+      <value>Custom</value>
+    </param>
+    <param>
+      <key>run</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>realtime_scheduling</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(10, 10)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>max_carrier_offset</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>2*math.pi*100e3/sample_rate</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(575, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>sym_rate</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>600*1109</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(301, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>sps</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>sample_rate/sym_rate</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(397, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>hs</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>int(sps/2.0)</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(499, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>sample_rate</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>64e6/decim</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(198, 17)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>max_sync_offset</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>0.01</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(705, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>'usrp_rx_hrpt.cfg'</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(12, 167)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>import</key>
+    <param>
+      <key>id</key>
+      <value>import_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>import</key>
+      <value>import math</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(11, 112)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>output_filename</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>'frames.dat'</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>string</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'output'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'filename'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>output_filename</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1146, 122)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>sync_alpha</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>0.05</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>real</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'demod'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'sync_alpha'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>sync_alpha</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(988, 121)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>pll_alpha</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>0.05</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>real</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'demod'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'pll_alpha'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>pll_alpha</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(830, 121)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>gain</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>35</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>real</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'usrp'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'gain'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>gain</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(671, 122)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>freq</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>1698e6</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>real</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'usrp'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'freq'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>freq</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(514, 121)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>decim</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>16</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>real</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'usrp'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'decim'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>decim</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(358, 118)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_config</key>
+    <param>
+      <key>id</key>
+      <value>side</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>'A'</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>string</value>
+    </param>
+    <param>
+      <key>config_file</key>
+      <value>config_filename</value>
+    </param>
+    <param>
+      <key>section</key>
+      <value>'usrp'</value>
+    </param>
+    <param>
+      <key>option</key>
+      <value>'side'</value>
+    </param>
+    <param>
+      <key>writeback</key>
+      <value>side</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(201, 116)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_decoder</key>
+    <param>
+      <key>id</key>
+      <value>decoder</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1247, 347)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>usrp_simple_source_x</key>
+    <param>
+      <key>id</key>
+      <value>usrp_source</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>complex</value>
+    </param>
+    <param>
+      <key>format</key>
+      <value></value>
+    </param>
+    <param>
+      <key>which</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>decimation</key>
+      <value>decim</value>
+    </param>
+    <param>
+      <key>frequency</key>
+      <value>freq</value>
+    </param>
+    <param>
+      <key>lo_offset</key>
+      <value>float('inf')</value>
+    </param>
+    <param>
+      <key>gain</key>
+      <value>gain</value>
+    </param>
+    <param>
+      <key>side</key>
+      <value>side</value>
+    </param>
+    <param>
+      <key>rx_ant</key>
+      <value>RXA</value>
+    </param>
+    <param>
+      <key>hb_filters</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(29, 303)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>id</key>
+      <value>mf_taps</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>[-0.5/hs,]*hs+[0.5/hs,]*hs</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(825, 19)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_agc_xx</key>
+    <param>
+      <key>id</key>
+      <value>agc</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>complex</value>
+    </param>
+    <param>
+      <key>rate</key>
+      <value>1e-6</value>
+    </param>
+    <param>
+      <key>reference</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>gain</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>max_gain</key>
+      <value>1.0</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(246, 319)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_deframer</key>
+    <param>
+      <key>id</key>
+      <value>deframer</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1060, 347)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_file_sink</key>
+    <param>
+      <key>id</key>
+      <value>frame_sink</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>file</key>
+      <value>output_filename</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>short</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(1251, 454)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_sync_fb</key>
+    <param>
+      <key>id</key>
+      <value>sync</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>alpha</key>
+      <value>sync_alpha</value>
+    </param>
+    <param>
+      <key>beta</key>
+      <value>sync_alpha**2/4.0</value>
+    </param>
+    <param>
+      <key>sps</key>
+      <value>sps</value>
+    </param>
+    <param>
+      <key>max_offset</key>
+      <value>max_sync_offset</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(833, 319)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>noaa_hrpt_pll_cf</key>
+    <param>
+      <key>id</key>
+      <value>pll</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>alpha</key>
+      <value>pll_alpha</value>
+    </param>
+    <param>
+      <key>beta</key>
+      <value>pll_alpha**2/4.0</value>
+    </param>
+    <param>
+      <key>max_offset</key>
+      <value>max_carrier_offset</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(638, 327)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>gr_fir_filter_xxx</key>
+    <param>
+      <key>id</key>
+      <value>gr_fir_filter_xxx_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>ccc</value>
+    </param>
+    <param>
+      <key>decim</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>taps</key>
+      <value>mf_taps</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(402, 335)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <connection>
+    <source_block_id>usrp_source</source_block_id>
+    <sink_block_id>agc</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>deframer</source_block_id>
+    <sink_block_id>decoder</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>pll</source_block_id>
+    <sink_block_id>sync</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>sync</source_block_id>
+    <sink_block_id>deframer</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>deframer</source_block_id>
+    <sink_block_id>frame_sink</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>agc</source_block_id>
+    <sink_block_id>gr_fir_filter_xxx_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>gr_fir_filter_xxx_0</source_block_id>
+    <sink_block_id>pll</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+</flow_graph>
diff --git a/gr-noaa/apps/usrp_rx_hrpt_nogui.py b/gr-noaa/apps/usrp_rx_hrpt_nogui.py
new file mode 100755 (executable)
index 0000000..9917847
--- /dev/null
@@ -0,0 +1,250 @@
+#!/usr/bin/env python
+##################################################
+# Gnuradio Python Flow Graph
+# Title: USRP HRPT Receiver
+# Generated: Sun Sep 27 10:13:25 2009
+##################################################
+
+from gnuradio import eng_notation
+from gnuradio import gr
+from gnuradio import noaa
+from gnuradio.eng_option import eng_option
+from gnuradio.gr import firdes
+from grc_gnuradio import usrp as grc_usrp
+from optparse import OptionParser
+import ConfigParser
+import math
+
+class usrp_rx_hrpt_nogui(gr.top_block):
+
+       def __init__(self):
+               gr.top_block.__init__(self, "USRP HRPT Receiver")
+
+               ##################################################
+               # Variables
+               ##################################################
+               self.config_filename = config_filename = 'usrp_rx_hrpt.cfg'
+               self._decim_config = ConfigParser.ConfigParser()
+               self._decim_config.read(config_filename)
+               try: decim = self._decim_config.getfloat('usrp', 'decim')
+               except: decim = 16
+               self.decim = decim
+               self.sym_rate = sym_rate = 600*1109
+               self.sample_rate = sample_rate = 64e6/decim
+               self.sps = sps = sample_rate/sym_rate
+               self.hs = hs = int(sps/2.0)
+               self._sync_alpha_config = ConfigParser.ConfigParser()
+               self._sync_alpha_config.read(config_filename)
+               try: sync_alpha = self._sync_alpha_config.getfloat('demod', 'sync_alpha')
+               except: sync_alpha = 0.05
+               self.sync_alpha = sync_alpha
+               self._side_config = ConfigParser.ConfigParser()
+               self._side_config.read(config_filename)
+               try: side = self._side_config.get('usrp', 'side')
+               except: side = 'A'
+               self.side = side
+               self._pll_alpha_config = ConfigParser.ConfigParser()
+               self._pll_alpha_config.read(config_filename)
+               try: pll_alpha = self._pll_alpha_config.getfloat('demod', 'pll_alpha')
+               except: pll_alpha = 0.05
+               self.pll_alpha = pll_alpha
+               self._output_filename_config = ConfigParser.ConfigParser()
+               self._output_filename_config.read(config_filename)
+               try: output_filename = self._output_filename_config.get('output', 'filename')
+               except: output_filename = 'frames.dat'
+               self.output_filename = output_filename
+               self.mf_taps = mf_taps = [-0.5/hs,]*hs+[0.5/hs,]*hs
+               self.max_sync_offset = max_sync_offset = 0.01
+               self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate
+               self._gain_config = ConfigParser.ConfigParser()
+               self._gain_config.read(config_filename)
+               try: gain = self._gain_config.getfloat('usrp', 'gain')
+               except: gain = 35
+               self.gain = gain
+               self._freq_config = ConfigParser.ConfigParser()
+               self._freq_config.read(config_filename)
+               try: freq = self._freq_config.getfloat('usrp', 'freq')
+               except: freq = 1698e6
+               self.freq = freq
+
+               ##################################################
+               # Blocks
+               ##################################################
+               self.agc = gr.agc_cc(1e-6, 1.0, 1.0, 1.0)
+               self.decoder = noaa.hrpt_decoder()
+               self.deframer = noaa.hrpt_deframer()
+               self.frame_sink = gr.file_sink(gr.sizeof_short*1, output_filename)
+               self.gr_fir_filter_xxx_0 = gr.fir_filter_ccc(1, (mf_taps))
+               self.pll = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset)
+               self.sync = noaa.hrpt_sync_fb(sync_alpha, sync_alpha**2/4.0, sps, max_sync_offset)
+               self.usrp_source = grc_usrp.simple_source_c(which=0, side=side, rx_ant="RXA")
+               self.usrp_source.set_decim_rate(decim)
+               self.usrp_source.set_frequency(freq, verbose=True)
+               self.usrp_source.set_gain(gain)
+
+               ##################################################
+               # Connections
+               ##################################################
+               self.connect((self.usrp_source, 0), (self.agc, 0))
+               self.connect((self.deframer, 0), (self.decoder, 0))
+               self.connect((self.pll, 0), (self.sync, 0))
+               self.connect((self.sync, 0), (self.deframer, 0))
+               self.connect((self.deframer, 0), (self.frame_sink, 0))
+               self.connect((self.agc, 0), (self.gr_fir_filter_xxx_0, 0))
+               self.connect((self.gr_fir_filter_xxx_0, 0), (self.pll, 0))
+
+       def set_config_filename(self, config_filename):
+               self.config_filename = config_filename
+               self._output_filename_config = ConfigParser.ConfigParser()
+               self._output_filename_config.read(self.config_filename)
+               if not self._output_filename_config.has_section('output'):
+                       self._output_filename_config.add_section('output')
+               self._output_filename_config.set('output', 'filename', str(self.output_filename))
+               self._output_filename_config.write(open(self.config_filename, 'w'))
+               self._sync_alpha_config = ConfigParser.ConfigParser()
+               self._sync_alpha_config.read(self.config_filename)
+               if not self._sync_alpha_config.has_section('demod'):
+                       self._sync_alpha_config.add_section('demod')
+               self._sync_alpha_config.set('demod', 'sync_alpha', str(self.sync_alpha))
+               self._sync_alpha_config.write(open(self.config_filename, 'w'))
+               self._pll_alpha_config = ConfigParser.ConfigParser()
+               self._pll_alpha_config.read(self.config_filename)
+               if not self._pll_alpha_config.has_section('demod'):
+                       self._pll_alpha_config.add_section('demod')
+               self._pll_alpha_config.set('demod', 'pll_alpha', str(self.pll_alpha))
+               self._pll_alpha_config.write(open(self.config_filename, 'w'))
+               self._gain_config = ConfigParser.ConfigParser()
+               self._gain_config.read(self.config_filename)
+               if not self._gain_config.has_section('usrp'):
+                       self._gain_config.add_section('usrp')
+               self._gain_config.set('usrp', 'gain', str(self.gain))
+               self._gain_config.write(open(self.config_filename, 'w'))
+               self._freq_config = ConfigParser.ConfigParser()
+               self._freq_config.read(self.config_filename)
+               if not self._freq_config.has_section('usrp'):
+                       self._freq_config.add_section('usrp')
+               self._freq_config.set('usrp', 'freq', str(self.freq))
+               self._freq_config.write(open(self.config_filename, 'w'))
+               self._decim_config = ConfigParser.ConfigParser()
+               self._decim_config.read(self.config_filename)
+               if not self._decim_config.has_section('usrp'):
+                       self._decim_config.add_section('usrp')
+               self._decim_config.set('usrp', 'decim', str(self.decim))
+               self._decim_config.write(open(self.config_filename, 'w'))
+               self._side_config = ConfigParser.ConfigParser()
+               self._side_config.read(self.config_filename)
+               if not self._side_config.has_section('usrp'):
+                       self._side_config.add_section('usrp')
+               self._side_config.set('usrp', 'side', str(self.side))
+               self._side_config.write(open(self.config_filename, 'w'))
+
+       def set_decim(self, decim):
+               self.decim = decim
+               self.set_sample_rate(64e6/self.decim)
+               self._decim_config = ConfigParser.ConfigParser()
+               self._decim_config.read(self.config_filename)
+               if not self._decim_config.has_section('usrp'):
+                       self._decim_config.add_section('usrp')
+               self._decim_config.set('usrp', 'decim', str(self.decim))
+               self._decim_config.write(open(self.config_filename, 'w'))
+               self.usrp_source.set_decim_rate(self.decim)
+
+       def set_sym_rate(self, sym_rate):
+               self.sym_rate = sym_rate
+               self.set_sps(self.sample_rate/self.sym_rate)
+
+       def set_sample_rate(self, sample_rate):
+               self.sample_rate = sample_rate
+               self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate)
+               self.set_sps(self.sample_rate/self.sym_rate)
+
+       def set_sps(self, sps):
+               self.sps = sps
+               self.set_hs(int(self.sps/2.0))
+
+       def set_hs(self, hs):
+               self.hs = hs
+               self.set_mf_taps([-0.5/self.hs,]*self.hs+[0.5/self.hs,]*self.hs)
+
+       def set_sync_alpha(self, sync_alpha):
+               self.sync_alpha = sync_alpha
+               self._sync_alpha_config = ConfigParser.ConfigParser()
+               self._sync_alpha_config.read(self.config_filename)
+               if not self._sync_alpha_config.has_section('demod'):
+                       self._sync_alpha_config.add_section('demod')
+               self._sync_alpha_config.set('demod', 'sync_alpha', str(self.sync_alpha))
+               self._sync_alpha_config.write(open(self.config_filename, 'w'))
+               self.sync.set_alpha(self.sync_alpha)
+               self.sync.set_beta(self.sync_alpha**2/4.0)
+
+       def set_side(self, side):
+               self.side = side
+               self._side_config = ConfigParser.ConfigParser()
+               self._side_config.read(self.config_filename)
+               if not self._side_config.has_section('usrp'):
+                       self._side_config.add_section('usrp')
+               self._side_config.set('usrp', 'side', str(self.side))
+               self._side_config.write(open(self.config_filename, 'w'))
+
+       def set_pll_alpha(self, pll_alpha):
+               self.pll_alpha = pll_alpha
+               self._pll_alpha_config = ConfigParser.ConfigParser()
+               self._pll_alpha_config.read(self.config_filename)
+               if not self._pll_alpha_config.has_section('demod'):
+                       self._pll_alpha_config.add_section('demod')
+               self._pll_alpha_config.set('demod', 'pll_alpha', str(self.pll_alpha))
+               self._pll_alpha_config.write(open(self.config_filename, 'w'))
+               self.pll.set_alpha(self.pll_alpha)
+               self.pll.set_beta(self.pll_alpha**2/4.0)
+
+       def set_output_filename(self, output_filename):
+               self.output_filename = output_filename
+               self._output_filename_config = ConfigParser.ConfigParser()
+               self._output_filename_config.read(self.config_filename)
+               if not self._output_filename_config.has_section('output'):
+                       self._output_filename_config.add_section('output')
+               self._output_filename_config.set('output', 'filename', str(self.output_filename))
+               self._output_filename_config.write(open(self.config_filename, 'w'))
+
+       def set_mf_taps(self, mf_taps):
+               self.mf_taps = mf_taps
+               self.gr_fir_filter_xxx_0.set_taps((self.mf_taps))
+
+       def set_max_sync_offset(self, max_sync_offset):
+               self.max_sync_offset = max_sync_offset
+               self.sync.set_max_offset(self.max_sync_offset)
+
+       def set_max_carrier_offset(self, max_carrier_offset):
+               self.max_carrier_offset = max_carrier_offset
+               self.pll.set_max_offset(self.max_carrier_offset)
+
+       def set_gain(self, gain):
+               self.gain = gain
+               self._gain_config = ConfigParser.ConfigParser()
+               self._gain_config.read(self.config_filename)
+               if not self._gain_config.has_section('usrp'):
+                       self._gain_config.add_section('usrp')
+               self._gain_config.set('usrp', 'gain', str(self.gain))
+               self._gain_config.write(open(self.config_filename, 'w'))
+               self.usrp_source.set_gain(self.gain)
+
+       def set_freq(self, freq):
+               self.freq = freq
+               self._freq_config = ConfigParser.ConfigParser()
+               self._freq_config.read(self.config_filename)
+               if not self._freq_config.has_section('usrp'):
+                       self._freq_config.add_section('usrp')
+               self._freq_config.set('usrp', 'freq', str(self.freq))
+               self._freq_config.write(open(self.config_filename, 'w'))
+               self.usrp_source.set_frequency(self.freq)
+
+if __name__ == '__main__':
+       parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
+       (options, args) = parser.parse_args()
+       if gr.enable_realtime_scheduling() != gr.RT_OK:
+               print "Error: failed to enable realtime scheduling."
+       tb = usrp_rx_hrpt_nogui()
+       tb.start()
+       raw_input('Press Enter to quit: ')
+       tb.stop()
+
index 89486aa19daeb859af095b3e408eb0dee111cbb8..91c94d2a6425540b3df2446f7eace9c4f73fc0b7 100644 (file)
@@ -27,6 +27,7 @@
 #include <noaa_hrpt_deframer.h>
 #include <gr_io_signature.h>
 #include <cstring>
+#include <cstdio>
 
 #define ST_IDLE   0
 #define ST_SYNCED 1
index cd7686e212ea4859be4c272e6861ed23fb3a1713..3ac7879d641cc2e013ae856eeae0525a86b8e2bb 100644 (file)
@@ -52,7 +52,6 @@ noaa_swig_python = \
 
 # additional SWIG files to be installed
 noaa_swig_swiginclude_headers =        \
-       noaa_swig.i \
        noaa_hrpt_decoder.i \
        noaa_hrpt_deframer.i \
        noaa_hrpt_pll_cf.i \
index 203e878e400650105806d155ec243483c3cacd4c..b2015cc403ec4f5cffab3284e82311f8e350fb74 100644 (file)
@@ -239,7 +239,7 @@ class Block(Element):
                that are needed for the connections creation phase.
                @param n the nested data odict
                """
-               get_hash = lambda: reduce(lambda x, y: x ^ y, [hash(param) for param in self.get_params()], 0)
+               get_hash = lambda: hash(tuple(map(hash, self.get_params())))
                my_hash = 0
                while get_hash() != my_hash:
                        params_n = n.findall('param')