summaryrefslogtreecommitdiff
path: root/gr-pager
diff options
context:
space:
mode:
Diffstat (limited to 'gr-pager')
-rw-r--r--gr-pager/CMakeLists.txt102
-rw-r--r--gr-pager/README85
-rw-r--r--gr-pager/apps/CMakeLists.txt29
-rwxr-xr-xgr-pager/apps/usrp_flex161
-rwxr-xr-xgr-pager/apps/usrp_flex_all164
-rwxr-xr-xgr-pager/apps/usrp_flex_band142
-rw-r--r--gr-pager/apps/usrp_rx_flex.grc1804
-rwxr-xr-xgr-pager/apps/usrp_rx_flex.py434
-rw-r--r--gr-pager/gnuradio-pager.pc.in11
-rw-r--r--gr-pager/grc/CMakeLists.txt26
-rw-r--r--gr-pager/grc/pager_flex_deinterleave.xml23
-rw-r--r--gr-pager/grc/pager_flex_sync.xml36
-rw-r--r--gr-pager/grc/pager_slicer_fb.xml31
-rw-r--r--gr-pager/lib/CMakeLists.txt70
-rw-r--r--gr-pager/lib/pager_api.h33
-rw-r--r--gr-pager/lib/pager_flex_deinterleave.cc94
-rw-r--r--gr-pager/lib/pager_flex_deinterleave.h55
-rw-r--r--gr-pager/lib/pager_flex_frame.cc38
-rw-r--r--gr-pager/lib/pager_flex_frame.h47
-rw-r--r--gr-pager/lib/pager_flex_parse.cc240
-rw-r--r--gr-pager/lib/pager_flex_parse.h73
-rw-r--r--gr-pager/lib/pager_flex_sync.cc340
-rw-r--r--gr-pager/lib/pager_flex_sync.h101
-rw-r--r--gr-pager/lib/pager_slicer_fb.cc84
-rw-r--r--gr-pager/lib/pager_slicer_fb.h57
-rw-r--r--gr-pager/lib/pageri_bch3221.cc36
-rw-r--r--gr-pager/lib/pageri_bch3221.h31
-rw-r--r--gr-pager/lib/pageri_flex_modes.cc57
-rw-r--r--gr-pager/lib/pageri_flex_modes.h74
-rw-r--r--gr-pager/lib/pageri_util.cc46
-rw-r--r--gr-pager/lib/pageri_util.h30
-rw-r--r--gr-pager/python/CMakeLists.txt49
-rw-r--r--gr-pager/python/__init__.py30
-rw-r--r--gr-pager/python/flex_demod.py63
-rw-r--r--gr-pager/python/pager_utils.py60
-rwxr-xr-xgr-pager/python/qa_pager.py35
-rw-r--r--gr-pager/swig/CMakeLists.txt57
-rw-r--r--gr-pager/swig/gnuradio/pager.scm28
-rw-r--r--gr-pager/swig/pager_flex_deinterleave.i11
-rw-r--r--gr-pager/swig/pager_flex_frame.i37
-rw-r--r--gr-pager/swig/pager_flex_parse.i11
-rw-r--r--gr-pager/swig/pager_flex_sync.i11
-rw-r--r--gr-pager/swig/pager_slicer_fb.i12
-rw-r--r--gr-pager/swig/pager_swig.i39
44 files changed, 0 insertions, 4997 deletions
diff --git a/gr-pager/CMakeLists.txt b/gr-pager/CMakeLists.txt
deleted file mode 100644
index 845444859..000000000
--- a/gr-pager/CMakeLists.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-# Copyright 2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-########################################################################
-# Setup dependencies
-########################################################################
-include(GrBoost)
-
-########################################################################
-# Register component
-########################################################################
-include(GrComponent)
-GR_REGISTER_COMPONENT("gr-pager" ENABLE_GR_PAGER
- Boost_FOUND
- ENABLE_GR_CORE
-)
-
-GR_SET_GLOBAL(GR_PAGER_INCLUDE_DIRS
- ${CMAKE_CURRENT_SOURCE_DIR}/lib
-)
-
-########################################################################
-# Begin conditional configuration
-########################################################################
-if(ENABLE_GR_PAGER)
-
-########################################################################
-# Setup CPack components
-########################################################################
-include(GrPackage)
-CPACK_SET(CPACK_COMPONENT_GROUP_PAGER_DESCRIPTION "GNU Radio Pager Blocks")
-
-CPACK_COMPONENT("pager_runtime"
- GROUP "Pager"
- DISPLAY_NAME "Runtime"
- DESCRIPTION "Runtime"
- DEPENDS "core_runtime"
-)
-
-CPACK_COMPONENT("pager_devel"
- GROUP "Pager"
- DISPLAY_NAME "Development"
- DESCRIPTION "C++ headers, package config, import libraries"
- DEPENDS "core_devel"
-)
-
-CPACK_COMPONENT("pager_python"
- GROUP "Pager"
- DISPLAY_NAME "Python"
- DESCRIPTION "Python modules for runtime; GRC xml files"
- DEPENDS "core_python;pager_runtime"
-)
-
-CPACK_COMPONENT("pager_swig"
- GROUP "Pager"
- DISPLAY_NAME "SWIG"
- DESCRIPTION "SWIG development .i files"
- DEPENDS "core_swig;pager_python;pager_devel"
-)
-
-########################################################################
-# Add subdirectories
-########################################################################
-add_subdirectory(lib)
-if(ENABLE_PYTHON)
- add_subdirectory(python)
- add_subdirectory(swig)
- add_subdirectory(grc)
- add_subdirectory(apps)
-endif(ENABLE_PYTHON)
-
-########################################################################
-# Create Pkg Config File
-########################################################################
-configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/gnuradio-pager.pc.in
- ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-pager.pc
-@ONLY)
-
-install(
- FILES ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-pager.pc
- DESTINATION ${GR_LIBRARY_DIR}/pkgconfig
- COMPONENT "pager_devel"
-)
-
-endif(ENABLE_GR_PAGER)
diff --git a/gr-pager/README b/gr-pager/README
deleted file mode 100644
index 441fee0b4..000000000
--- a/gr-pager/README
+++ /dev/null
@@ -1,85 +0,0 @@
-This GNU Radio component implements a FLEX radiopager receiver/demodulator.
-
-FLEX pager towers are between 929 MHz and 932 MHz at 25 KHz centers.
-
-Current status (7/16/07):
-
-FLEX receiving is completed except for addition of BCH error correction.
-
-There are three scripts:
-
-usrp_flex.py - Receives and displays pages from a single paging channel. To
- work from recorded data, record from USRP with decimation 256
- at center frequency.
-
- Usage: usrp_flex.py [options]
-
- Options:
- -h, --help show this help message and exit
- -f Hz, --frequency=Hz set receive frequency to Hz
- -R SUBDEV, --rx-subdev-spec=SUBDEV select USRP Rx side A or B
- -c Hz, --calibration=Hz set frequency offset to Hz
- -g dB, --gain=dB set RF gain
- -l, --log log flowgraph to files (LOTS of data)
- -v, --verbose display debug output
- -F FROM_FILE, --from-file=FROM_FILE read samples from file instead of USRP
-
- Example, to receive from 931.95M (a common nationwide channel) with DBSRX in
- side A of USRP:
-
- $ usrp_flex.py -f 931.95M -g 32 -R A
-
-
-usrp_flex_band.py - Receives and displays pages from a 1 MHz paging band (40 pager
- channels.) To work from recorded data, record from USRP with
- decimation 64 at center frequency.
-
-Usage: usrp_flex_band.py [options]
-
- Options:
- -h, --help show this help message and exit
- -f Hz, --frequency=Hz set receive center frequency to Hz
- -R SUBDEV, --rx-subdev-spec=SUBDEV select USRP Rx side A or B
- -c Hz, --calibration=Hz set frequency offset to Hz
- -g dB, --gain=dB set RF gain
- -F FROM_FILE, --from-file=FROM_FILE Read from file instead of USRP
- -l, --log log flowgraph to files (LOTS of data)
- -v, --verbose display debug output
-
- Example, to receive from the lower third of the pager band with DBSRX in side B
- of USRP:
-
- $ usrp_flex_band.py -f 929.5M -g 32 -R B
-
-usrp_flex_all.py - Receives and displays pages from entire pager band (3 MHz,
- 120 pager channels.) This does not work in real time due
- to CPU limitations, but can work from recorded USRP data. To
- work from recorded data, record from USRP with decimation 20 at
- center frequency of 930.5M.
-
- Usage: usrp_flex_all.py [options]
-
- Options:
- -h, --help show this help message and exit
- -R SUBDEV, --rx-subdev-spec=SUBDEVC select USRP Rx side A or B
- -c Hz, --calibration=Hz set frequency offset to Hz
- -g dB, --gain=dB set RF gain
- -F FROM_FILE, --from-file=FROM_FILE Read from file instead of USRP
- -l, --log log flowgraph to files (LOTS of data)
- -v, --verbose display debug output
-
- Example, to receive all pager channels with DBSRX in side A:
-
- $ usrp_flex_all.py -R A
-
-The demodulator is relatively sensitive to frequency offset and can capture a signal
-within 3k of the actual signal.
-
-All three scripts take a 'calibration' parameter, which specifies the frequency offset
-of the daughterboard. This causes the USRP to be tuned to the given center frequency
-plus the calibration offset. For example, if your DBSRX shows 930MHz as 930.001MHz in
-usrp_fft.py, then use '-c 1k' in the command line to automatically add this.
-
-Johnathan Corgan
-Corgan Enterprises LLC
-jcorgan@corganenterprises.com
diff --git a/gr-pager/apps/CMakeLists.txt b/gr-pager/apps/CMakeLists.txt
deleted file mode 100644
index a02cad56e..000000000
--- a/gr-pager/apps/CMakeLists.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-include(GrPython)
-
-GR_PYTHON_INSTALL(
- PROGRAMS
- usrp_flex
- usrp_flex_all
- usrp_flex_band
- DESTINATION ${GR_RUNTIME_DIR}
- COMPONENT "pager_python"
-)
diff --git a/gr-pager/apps/usrp_flex b/gr-pager/apps/usrp_flex
deleted file mode 100755
index 33877ea4e..000000000
--- a/gr-pager/apps/usrp_flex
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2006,2007,2009,2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gru, uhd, optfir, eng_notation, pager
-from gnuradio.eng_option import eng_option
-from optparse import OptionParser
-import time, os, sys
-
-class app_top_block(gr.top_block):
- def __init__(self, options, queue):
- gr.top_block.__init__(self, "usrp_flex")
- self.options = options
- self.offset = 0.0
- self.adj_time = time.time()
- self.verbose = options.verbose
-
- if options.from_file is None:
- # Set up USRP source
- self.u = uhd.usrp_source(device_addr=options.address, stream_args=uhd.stream_args('fc32'))
-
- # Grab 250 KHz of spectrum
- # (A UHD facility to get sample rate range and granularity would be useful)
- self.u.set_samp_rate(250e3)
- rate = self.u.get_samp_rate()
- if rate != 250e3:
- print "Unable to set required sample rate of 250 Ksps (got %f)" % rate
- sys.exit(1)
-
- # Tune daughterboard
- r = self.u.set_center_freq(options.freq+options.calibration, 0)
- if not r:
- frange = self.u.get_freq_range()
- sys.stderr.write(("\nRequested frequency (%f) out or range [%f, %f]\n") % \
- (freq, frange.start(), frange.stop()))
- sys.exit(1)
-
- # if no gain was specified, use the mid-point in dB
- if options.rx_gain is None:
- grange = self.u.get_gain_range()
- options.rx_gain = float(grange.start()+grange.stop())/2.0
- print "\nNo gain specified."
- print "Setting gain to %f (from [%f, %f])" % \
- (options.rx_gain, grange.start(), grange.stop())
-
- self.u.set_gain(options.rx_gain, 0)
-
- else:
- # Use supplied file as source of samples
- self.u = gr.file_source(gr.sizeof_gr_complex, options.from_file)
- if options.verbose:
- print "Reading samples from", options.from_file
-
- if options.log and not options.from_file:
- usrp_sink = gr.file_sink(gr.sizeof_gr_complex, 'usrp.dat')
- self.connect(self.u, usrp_sink)
-
- # Set up 22KHz-wide bandpass about center frequency. Decimate by 10
- # to get channel rate of 25Ksps
- taps = optfir.low_pass(1.0, # Filter gain
- 250e3, # Sample rate
- 11000, # One-sided modulation bandwidth
- 12500, # One-sided channel bandwidth
- 0.1, # Passband ripple
- 60) # Stopband attenuation
-
- if options.verbose:
- print "Channel filter has", len(taps), "taps."
-
- self.chan = gr.freq_xlating_fir_filter_ccf(10, # Decimation rate
- taps, # Filter taps
- 0.0, # Offset frequency
- 250e3) # Sample rate
-
- if options.log:
- chan_sink = gr.file_sink(gr.sizeof_gr_complex, 'chan.dat')
- self.connect(self.chan, chan_sink)
-
- # FLEX protocol demodulator
- self.flex = pager.flex_demod(queue, options.freq, options.verbose, options.log)
-
- self.connect(self.u, self.chan, self.flex)
-
- def freq_offset(self):
- return self.flex.dc_offset()*1600
-
- def adjust_freq(self):
- if time.time() - self.adj_time > 1.6: # Only do it once per FLEX frame
- self.adj_time = time.time()
- self.offset -= self.freq_offset()
- self.chan.set_center_freq(self.offset)
- if self.verbose:
- print "Channel frequency offset (Hz):", int(self.offset)
-
-
-def get_options():
- parser = OptionParser(option_class=eng_option)
-
- parser.add_option('-f', '--freq', type="eng_float", default=None,
- help="Set receive frequency to FREQ [default=%default]",
- metavar="FREQ")
- parser.add_option("-a", "--address", type="string", default="addr=192.168.10.2",
- help="Address of UHD device, [default=%default]")
- parser.add_option("-A", "--antenna", type="string", default=None,
- help="select Rx Antenna where appropriate")
- parser.add_option("", "--rx-gain", type="eng_float", default=None,
- help="set receive gain in dB (default is midpoint)")
- parser.add_option("-c", "--calibration", type="eng_float", default=0.0,
- help="set frequency offset to Hz", metavar="Hz")
- parser.add_option("-v", "--verbose", action="store_true", default=False)
- parser.add_option("-l", "--log", action="store_true", default=False,
- help="log flowgraph to files (LOTS of data)")
- parser.add_option("-F", "--from-file", default=None,
- help="read samples from file instead of USRP")
-
- (options, args) = parser.parse_args()
-
- if len(args) > 0:
- print "Run 'usrp_flex.py -h' for options."
- sys.exit(1)
-
- if (options.freq is None):
- sys.stderr.write("You must specify -f FREQ or --freq FREQ\n")
- sys.exit(1)
-
- return (options, args)
-
-if __name__ == "__main__":
-
- (options, args) = get_options()
-
- # Flow graph emits pages into message queue
- queue = gr.msg_queue()
- tb = app_top_block(options, queue)
- runner = pager.queue_runner(queue)
-
- try:
- tb.run()
- except KeyboardInterrupt:
- pass
-
- runner.end()
-
diff --git a/gr-pager/apps/usrp_flex_all b/gr-pager/apps/usrp_flex_all
deleted file mode 100755
index 8ecf5a41f..000000000
--- a/gr-pager/apps/usrp_flex_all
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2006,2007,2009 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gru, uhd, optfir, eng_notation, blks2, pager
-from gnuradio.eng_option import eng_option
-from optparse import OptionParser
-from string import split, join, printable
-import sys
-
-class app_top_block(gr.top_block):
- def __init__(self, options, queue):
- gr.top_block.__init__(self, "usrp_flex_all")
-
- if options.from_file is not None:
- self.u = gr.file_source(gr.sizeof_gr_complex, options.from_file)
- self.nchan = options.nchan
- if options.verbose:
- print "Reading samples from file", options.from_file
- print "User specified file contains", options.nchan, "25 KHz channels."
-
- else:
- # Set up USRP source
- self.u = uhd.usrp_source(device_addr=options.address, stream_args=uhd.stream_args('fc32'))
-
- # Tune daughterboard
- r = self.u.set_center_freq(options.freq+options.calibration, 0)
- if not r:
- frange = self.u.get_freq_range()
- sys.stderr.write(("\nRequested frequency (%f) out or range [%f, %f]\n") % \
- (freq, frange.start(), frange.stop()))
- sys.exit(1)
-
- if options.verbose:
- print "Tuned to center frequency", (options.freq+options.calibration)/1e6, "MHz"
-
- # if no gain was specified, use the mid-point in dB
- if options.rx_gain is None:
- grange = self.u.get_gain_range()
- options.rx_gain = float(grange.start()+grange.stop())/2.0
- print "\nNo gain specified."
- print "Setting gain to %f (from [%f, %f])" % \
- (options.rx_gain, grange.start(), grange.stop())
-
- self.u.set_gain(options.rx_gain, 0)
-
- # Grab >=3 MHz of spectrum, evenly divisible by 25 KHz channels
- # (A UHD facility to get sample rate range and granularity would be useful)
-
- self.u.set_samp_rate(3.125e6) # Works if USRP is 100 Msps and can decimate by 32
- rate = self.u.get_samp_rate()
-
- if rate != 3.125e6:
- self.u.set_samp_rate(3.2e6) # Works if USRP is 64 Msps and can decimate by 20
- rate = self.u.get_samp_rate()
- if (rate != 3.2e6):
- print "Unable to set required sample rate for >= 3MHz of 25 KHz channels."
- sys.exit(1)
-
- self.nchan = int(rate/25e3)
- if options.verbose:
- print "\nReceiving", rate/1e6, "MHz of bandwidth containing", self.nchan, "baseband channels."
-
- taps = gr.firdes.low_pass(1.0,
- 1.0,
- 1.0/self.nchan*0.4,
- 1.0/self.nchan*0.1,
- gr.firdes.WIN_HANN)
-
- if options.verbose:
- print "Channel filter has", len(taps), "taps"
-
- self.bank = blks2.analysis_filterbank(self.nchan, taps)
- self.connect(self.u, self.bank)
-
- if options.log and options.from_file == None:
- src_sink = gr.file_sink(gr.sizeof_gr_complex, 'usrp.dat')
- self.connect(self.u, src_sink)
-
- mid_chan = int(self.nchan/2)
- for i in range(self.nchan):
- if i < mid_chan:
- freq = options.freq+i*25e3
- else:
- freq = options.freq-(self.nchan-i)*25e3
-
- if (freq < 929.0e6 or freq > 932.0e6):
- self.connect((self.bank, i), gr.null_sink(gr.sizeof_gr_complex))
- else:
- self.connect((self.bank, i), pager.flex_demod(queue, freq, options.verbose, options.log))
- if options.log:
- self.connect((self.bank, i), gr.file_sink(gr.sizeof_gr_complex, 'chan_'+'%3.3f'%(freq/1e6)+'.dat'))
-
-
-def get_options():
- parser = OptionParser(option_class=eng_option)
-
- parser.add_option('-f', '--freq', type="eng_float", default=929.5125e6,
- help="Set receive frequency to FREQ [default=%default]",
- metavar="FREQ")
- parser.add_option("-a", "--address", type="string", default="addr=192.168.10.2",
- help="Address of UHD device, [default=%default]")
- parser.add_option("-A", "--antenna", type="string", default=None,
- help="select Rx Antenna where appropriate")
- parser.add_option("", "--rx-gain", type="eng_float", default=None,
- help="set receive gain in dB (default is midpoint)")
- parser.add_option("-c", "--calibration", type="eng_float", default=0.0,
- help="set frequency offset to Hz", metavar="Hz")
- parser.add_option("-v", "--verbose", action="store_true", default=False)
- parser.add_option("-l", "--log", action="store_true", default=False,
- help="log flowgraph to files (LOTS of data)")
- parser.add_option("-F", "--from-file", default=None,
- help="read samples from file instead of USRP")
- parser.add_option("", "--nchan", type="int", default=None,
- help="set to number of channels in capture file", metavar="nchan")
-
- (options, args) = parser.parse_args()
-
- if len(args) > 0:
- print "Run 'usrp_flex_all.py -h' for options."
- sys.exit(1)
-
- if options.nchan is None and options.from_file is not None:
- print "You must specify the number of baseband channels with --nchan when reading from a file"
- sys.exit(1)
-
- return (options, args)
-
-
-def main():
-
- (options, args) = get_options()
-
- queue = gr.msg_queue()
- tb = app_top_block(options, queue)
- runner = pager.queue_runner(queue)
-
- try:
- tb.run()
- except KeyboardInterrupt:
- pass
-
- runner.end()
-
-if __name__ == "__main__":
- main()
diff --git a/gr-pager/apps/usrp_flex_band b/gr-pager/apps/usrp_flex_band
deleted file mode 100755
index 5ec0065d6..000000000
--- a/gr-pager/apps/usrp_flex_band
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2006,2007,2009,2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gru, uhd, optfir, eng_notation, blks2, pager
-from gnuradio.eng_option import eng_option
-from optparse import OptionParser
-import sys
-
-class app_top_block(gr.top_block):
- def __init__(self, options, queue):
- gr.top_block.__init__(self, "usrp_flex_all")
-
- if options.from_file is not None:
- self.u = gr.file_source(gr.sizeof_gr_complex, options.from_file)
- if options.verbose:
- print "Reading samples from file", options.from_file
- else:
- # Set up USRP source
- self.u = uhd.usrp_source(device_addr=options.address, stream_args=uhd.stream_args('fc32'))
-
- # Grab 1 MHz of spectrum
- # (A UHD facility to get sample rate range and granularity would be useful)
- self.u.set_samp_rate(1e6)
- rate = self.u.get_samp_rate()
- if rate != 1e6:
- print "Unable to set required sample rate of 1 Msps (got %f)" % rate
- sys.exit(1)
-
- # Tune daughterboard
- r = self.u.set_center_freq(options.freq+options.calibration, 0)
- if not r:
- frange = self.u.get_freq_range()
- sys.stderr.write(("\nRequested frequency (%f) out or range [%f, %f]\n") % \
- (freq, frange.start(), frange.stop()))
- sys.exit(1)
-
- # if no gain was specified, use the mid-point in dB
- if options.rx_gain is None:
- grange = self.u.get_gain_range()
- options.rx_gain = float(grange.start()+grange.stop())/2.0
- print "\nNo gain specified."
- print "Setting gain to %f (from [%f, %f])" % \
- (options.rx_gain, grange.start(), grange.stop())
-
- self.u.set_gain(options.rx_gain, 0)
-
-
- taps = gr.firdes.low_pass(1.0,
- 1.0,
- 1.0/40.0*0.4,
- 1.0/40.0*0.1,
- gr.firdes.WIN_HANN)
-
- if options.verbose:
- print "Channel filter has", len(taps), "taps"
-
- bank = blks2.analysis_filterbank(40, taps)
- self.connect(self.u, bank)
-
- if options.log and options.from_file == None:
- src_sink = gr.file_sink(gr.sizeof_gr_complex, 'usrp.dat')
- self.connect(self.u, src_sink)
-
- for i in range(40):
- if i < 20:
- freq = options.freq+i*25e3
- else:
- freq = options.freq-0.5e6+(i-20)*25e3
-
- self.connect((bank, i), pager.flex_demod(queue, freq, options.verbose, options.log))
- if options.log:
- self.connect((bank, i), gr.file_sink(gr.sizeof_gr_complex, 'chan_'+'%3.3f'%(freq/1e6)+'.dat'))
-
-
-def get_options():
- parser = OptionParser(option_class=eng_option)
-
- parser.add_option('-f', '--freq', type="eng_float", default=None,
- help="Set receive frequency to FREQ [default=%default]",
- metavar="FREQ")
- parser.add_option("-a", "--address", type="string", default="addr=192.168.10.2",
- help="Address of UHD device, [default=%default]")
- parser.add_option("-A", "--antenna", type="string", default=None,
- help="select Rx Antenna where appropriate")
- parser.add_option("", "--rx-gain", type="eng_float", default=None,
- help="set receive gain in dB (default is midpoint)")
- parser.add_option("-c", "--calibration", type="eng_float", default=0.0,
- help="set frequency offset to Hz", metavar="Hz")
- parser.add_option("-v", "--verbose", action="store_true", default=False)
- parser.add_option("-l", "--log", action="store_true", default=False,
- help="log flowgraph to files (LOTS of data)")
- parser.add_option("-F", "--from-file", default=None,
- help="read samples from file instead of USRP")
-
- (options, args) = parser.parse_args()
-
- if len(args) > 0:
- print "Run 'usrp_flex_band.py -h' for options."
- sys.exit(1)
-
- if (options.freq is None):
- sys.stderr.write("You must specify -f FREQ or --freq FREQ\n")
- sys.exit(1)
-
- return (options, args)
-
-
-if __name__ == "__main__":
-
- (options, args) = get_options()
-
- queue = gr.msg_queue()
- tb = app_top_block(options, queue)
- runner = pager.queue_runner(queue)
-
- try:
- tb.run()
- except KeyboardInterrupt:
- pass
-
- runner.end()
-
-
diff --git a/gr-pager/apps/usrp_rx_flex.grc b/gr-pager/apps/usrp_rx_flex.grc
deleted file mode 100644
index b9461a57f..000000000
--- a/gr-pager/apps/usrp_rx_flex.grc
+++ /dev/null
@@ -1,1804 +0,0 @@
-<?xml version='1.0' encoding='ASCII'?>
-<flow_graph>
- <timestamp>Thu Oct 29 11:01:22 2009</timestamp>
- <block>
- <key>options</key>
- <param>
- <key>id</key>
- <value>usrp_rx_flex</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>title</key>
- <value>USRP FLEX Pager Receiver (Single Channel)</value>
- </param>
- <param>
- <key>author</key>
- <value></value>
- </param>
- <param>
- <key>description</key>
- <value></value>
- </param>
- <param>
- <key>window_size</key>
- <value>4095,4095</value>
- </param>
- <param>
- <key>generate_options</key>
- <value>wx_gui</value>
- </param>
- <param>
- <key>category</key>
- <value>Custom</value>
- </param>
- <param>
- <key>run_options</key>
- <value>prompt</value>
- </param>
- <param>
- <key>run</key>
- <value>True</value>
- </param>
- <param>
- <key>realtime_scheduling</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(10, 10)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>adc_rate</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>64e6</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(225, 12)</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>adc_rate/decim</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(382, 12)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>freq</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>band_freq+(channel-61)*25e3</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(480, 11)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>wxgui_fftsink2</key>
- <param>
- <key>id</key>
- <value>wxgui_fftsink2_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>complex</value>
- </param>
- <param>
- <key>title</key>
- <value>FLEX Spectrum</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>sample_rate</value>
- </param>
- <param>
- <key>baseband_freq</key>
- <value>band_freq</value>
- </param>
- <param>
- <key>y_per_div</key>
- <value>10</value>
- </param>
- <param>
- <key>y_divs</key>
- <value>10</value>
- </param>
- <param>
- <key>ref_level</key>
- <value>0</value>
- </param>
- <param>
- <key>ref_scale</key>
- <value>65536</value>
- </param>
- <param>
- <key>fft_size</key>
- <value>1024</value>
- </param>
- <param>
- <key>fft_rate</key>
- <value>30</value>
- </param>
- <param>
- <key>peak_hold</key>
- <value>False</value>
- </param>
- <param>
- <key>average</key>
- <value>False</value>
- </param>
- <param>
- <key>avg_alpha</key>
- <value>0</value>
- </param>
- <param>
- <key>win</key>
- <value>None</value>
- </param>
- <param>
- <key>win_size</key>
- <value></value>
- </param>
- <param>
- <key>grid_pos</key>
- <value>0,0,1,1</value>
- </param>
- <param>
- <key>notebook</key>
- <value>displays,0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(34, 508)</value>
- </param>
- <param>
- <key>_rotation</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 Spectrum','Baseband']</value>
- </param>
- <param>
- <key>grid_pos</key>
- <value>1, 0, 1, 5</value>
- </param>
- <param>
- <key>notebook</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(9, 209)</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 os, math</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(10, 76)</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>band_freq</value>
- </param>
- <param>
- <key>lo_offset</key>
- <value>float('inf')</value>
- </param>
- <param>
- <key>gain</key>
- <value>rx_gain</value>
- </param>
- <param>
- <key>side</key>
- <value>A</value>
- </param>
- <param>
- <key>rx_ant</key>
- <value>RXA</value>
- </param>
- <param>
- <key>hb_filters</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(32, 734)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gr_freq_xlating_fir_filter_xxx</key>
- <param>
- <key>id</key>
- <value>gr_freq_xlating_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>channel_decim</value>
- </param>
- <param>
- <key>taps</key>
- <value>channel_taps</value>
- </param>
- <param>
- <key>center_freq</key>
- <value>band_freq-freq+offset</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>sample_rate</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(321, 750)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>wxgui_fftsink2</key>
- <param>
- <key>id</key>
- <value>wxgui_fftsink2_1</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>complex</value>
- </param>
- <param>
- <key>title</key>
- <value>Channel Spectrum</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>channel_rate</value>
- </param>
- <param>
- <key>baseband_freq</key>
- <value>freq</value>
- </param>
- <param>
- <key>y_per_div</key>
- <value>10</value>
- </param>
- <param>
- <key>y_divs</key>
- <value>10</value>
- </param>
- <param>
- <key>ref_level</key>
- <value>0</value>
- </param>
- <param>
- <key>ref_scale</key>
- <value>65536</value>
- </param>
- <param>
- <key>fft_size</key>
- <value>1024</value>
- </param>
- <param>
- <key>fft_rate</key>
- <value>30</value>
- </param>
- <param>
- <key>peak_hold</key>
- <value>False</value>
- </param>
- <param>
- <key>average</key>
- <value>False</value>
- </param>
- <param>
- <key>avg_alpha</key>
- <value>0</value>
- </param>
- <param>
- <key>win</key>
- <value>None</value>
- </param>
- <param>
- <key>win_size</key>
- <value></value>
- </param>
- <param>
- <key>grid_pos</key>
- <value>1, 0, 1, 1</value>
- </param>
- <param>
- <key>notebook</key>
- <value>displays, 0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(344, 511)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>180</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>decim</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>20</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(310, 11)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>symbol_rate</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>3200</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(590, 12)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>channel_decim</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>int(sample_rate/channel_rate)</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(906, 12)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>deviation</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>4800</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(688, 14)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>demod_k</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>3*channel_rate/(2*math.pi*deviation)</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(598, 857)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>channel_taps</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>firdes.low_pass(10, sample_rate, passband/2.0, (channel_rate-passband)/2.0)</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(325, 857)</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>os.environ["HOME"]+"/.gnuradio/config.conf"</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(9, 133)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
- <value>saved_band_freq</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>930.5125e6</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>gr-pager</value>
- </param>
- <param>
- <key>option</key>
- <value>band_center</value>
- </param>
- <param>
- <key>writeback</key>
- <value>band_freq</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(228, 311)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
- <value>saved_channel</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>25</value>
- </param>
- <param>
- <key>type</key>
- <value>int</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>gr-pager</value>
- </param>
- <param>
- <key>option</key>
- <value>channel</value>
- </param>
- <param>
- <key>writeback</key>
- <value>channel</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(387, 312)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
- <value>saved_offset</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>0</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>gr-pager</value>
- </param>
- <param>
- <key>option</key>
- <value>freq_offset</value>
- </param>
- <param>
- <key>writeback</key>
- <value>offset</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(547, 312)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
- <value>saved_rx_gain</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>40</value>
- </param>
- <param>
- <key>type</key>
- <value>int</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>gr-pager</value>
- </param>
- <param>
- <key>option</key>
- <value>rx_gain</value>
- </param>
- <param>
- <key>writeback</key>
- <value>rx_gain</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(706, 312)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_text_box</key>
- <param>
- <key>id</key>
- <value>band_freq</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>Band Freq.</value>
- </param>
- <param>
- <key>value</key>
- <value>saved_band_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>(225, 121)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_static_text</key>
- <param>
- <key>id</key>
- <value>freq_text</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>Ch. Freq</value>
- </param>
- <param>
- <key>value</key>
- <value>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, 2, 1, 1</value>
- </param>
- <param>
- <key>notebook</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(801, 124)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>passband</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>2*(deviation+symbol_rate)</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(327, 930)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>channel_rate</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>8*3200</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(792, 13)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_slider</key>
- <param>
- <key>id</key>
- <value>channel</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>Channel</value>
- </param>
- <param>
- <key>value</key>
- <value>saved_channel</value>
- </param>
- <param>
- <key>min</key>
- <value>1</value>
- </param>
- <param>
- <key>max</key>
- <value>120</value>
- </param>
- <param>
- <key>num_steps</key>
- <value>119</value>
- </param>
- <param>
- <key>style</key>
- <value>wx.SL_HORIZONTAL</value>
- </param>
- <param>
- <key>converver</key>
- <value>int_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>(376, 120)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_slider</key>
- <param>
- <key>id</key>
- <value>rx_gain</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>Analog Gain</value>
- </param>
- <param>
- <key>value</key>
- <value>saved_rx_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>int_converter</value>
- </param>
- <param>
- <key>grid_pos</key>
- <value>0, 4, 1, 1</value>
- </param>
- <param>
- <key>notebook</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(658, 122)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_slider</key>
- <param>
- <key>id</key>
- <value>offset</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>Freq. Offset</value>
- </param>
- <param>
- <key>value</key>
- <value>saved_offset</value>
- </param>
- <param>
- <key>min</key>
- <value>-12.5e3</value>
- </param>
- <param>
- <key>max</key>
- <value>12.5e3</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>(518, 118)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gr_quadrature_demod_cf</key>
- <param>
- <key>id</key>
- <value>fm_demod</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>gain</key>
- <value>demod_k</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(599, 774)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>baseband_rate</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>16000</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1019, 17)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>nchan_taps</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>len(channel_taps)</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(412, 931)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>ma_ntaps</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>int(channel_rate/symbol_rate)</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(850, 863)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>bb_interp</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>5</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(938, 862)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>virtual_sink</key>
- <param>
- <key>id</key>
- <value>virtual_sink_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>stream_id</key>
- <value>baseband</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1100, 774)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>blks2_rational_resampler_xxx</key>
- <param>
- <key>id</key>
- <value>resampler</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>fff</value>
- </param>
- <param>
- <key>decim</key>
- <value>bb_decim</value>
- </param>
- <param>
- <key>interp</key>
- <value>bb_interp</value>
- </param>
- <param>
- <key>taps</key>
- <value>[1.0/ma_ntaps,]*ma_ntaps*bb_interp</value>
- </param>
- <param>
- <key>fractional_bw</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(851, 750)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>bb_decim</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>8</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1027, 864)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>wxgui_scopesink2</key>
- <param>
- <key>id</key>
- <value>wxgui_scopesink2_0_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>float</value>
- </param>
- <param>
- <key>title</key>
- <value>Baseband</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>16e3</value>
- </param>
- <param>
- <key>v_scale</key>
- <value>1</value>
- </param>
- <param>
- <key>v_offset</key>
- <value>0</value>
- </param>
- <param>
- <key>t_scale</key>
- <value>40.0/16e3</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>win_size</key>
- <value></value>
- </param>
- <param>
- <key>grid_pos</key>
- <value>0, 0, 1, 1</value>
- </param>
- <param>
- <key>notebook</key>
- <value>displays, 1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(851, 586)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>180</value>
- </param>
- </block>
- <block>
- <key>virtual_source</key>
- <param>
- <key>id</key>
- <value>virtual_source_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>stream_id</key>
- <value>baseband</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(79, 1186)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>pager_slicer_fb</key>
- <param>
- <key>id</key>
- <value>pager_slicer_fb_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>alpha</key>
- <value>1e-6</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(304, 1186)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>wxgui_scopesink2</key>
- <param>
- <key>id</key>
- <value>wxgui_scopesink2_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>False</value>
- </param>
- <param>
- <key>type</key>
- <value>float</value>
- </param>
- <param>
- <key>title</key>
- <value>Slicer Output</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>baseband_rate</value>
- </param>
- <param>
- <key>v_scale</key>
- <value>1</value>
- </param>
- <param>
- <key>v_offset</key>
- <value>0</value>
- </param>
- <param>
- <key>t_scale</key>
- <value>40.0/baseband_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>win_size</key>
- <value></value>
- </param>
- <param>
- <key>grid_pos</key>
- <value>1,0,1,1</value>
- </param>
- <param>
- <key>notebook</key>
- <value>displays, 1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(75, 1044)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>180</value>
- </param>
- </block>
- <block>
- <key>gr_char_to_float</key>
- <param>
- <key>id</key>
- <value>gr_char_to_float_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>False</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(325, 1088)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>180</value>
- </param>
- </block>
- <block>
- <key>pager_flex_sync</key>
- <param>
- <key>id</key>
- <value>pager_flex_sync_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(529, 1139)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>pager_flex_deinterleave</key>
- <param>
- <key>id</key>
- <value>pager_flex_deinterleave_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(777, 1116)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gr_null_sink</key>
- <param>
- <key>id</key>
- <value>gr_null_sink_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>int</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1042, 1116)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>pager_flex_deinterleave</key>
- <param>
- <key>id</key>
- <value>pager_flex_deinterleave_0_1_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(778, 1168)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>pager_flex_deinterleave</key>
- <param>
- <key>id</key>
- <value>pager_flex_deinterleave_0_1</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(776, 1225)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>pager_flex_deinterleave</key>
- <param>
- <key>id</key>
- <value>pager_flex_deinterleave_0_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(776, 1273)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gr_null_sink</key>
- <param>
- <key>id</key>
- <value>gr_null_sink_0_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>int</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1042, 1168)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gr_null_sink</key>
- <param>
- <key>id</key>
- <value>gr_null_sink_0_1</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>int</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1041, 1225)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gr_null_sink</key>
- <param>
- <key>id</key>
- <value>gr_null_sink_0_2</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>int</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1040, 1273)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <connection>
- <source_block_id>gr_freq_xlating_fir_filter_xxx_0</source_block_id>
- <sink_block_id>wxgui_fftsink2_1</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>gr_freq_xlating_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>wxgui_fftsink2_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>gr_freq_xlating_fir_filter_xxx_0</source_block_id>
- <sink_block_id>fm_demod</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>resampler</source_block_id>
- <sink_block_id>wxgui_scopesink2_0_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>fm_demod</source_block_id>
- <sink_block_id>resampler</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>resampler</source_block_id>
- <sink_block_id>virtual_sink_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pager_slicer_fb_0</source_block_id>
- <sink_block_id>pager_flex_sync_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>virtual_source_0</source_block_id>
- <sink_block_id>pager_slicer_fb_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pager_slicer_fb_0</source_block_id>
- <sink_block_id>gr_char_to_float_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>gr_char_to_float_0</source_block_id>
- <sink_block_id>wxgui_scopesink2_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pager_flex_sync_0</source_block_id>
- <sink_block_id>pager_flex_deinterleave_0_1_0</sink_block_id>
- <source_key>1</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pager_flex_sync_0</source_block_id>
- <sink_block_id>pager_flex_deinterleave_0_1</sink_block_id>
- <source_key>2</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pager_flex_sync_0</source_block_id>
- <sink_block_id>pager_flex_deinterleave_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pager_flex_sync_0</source_block_id>
- <sink_block_id>pager_flex_deinterleave_0_0</sink_block_id>
- <source_key>3</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pager_flex_deinterleave_0</source_block_id>
- <sink_block_id>gr_null_sink_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pager_flex_deinterleave_0_1_0</source_block_id>
- <sink_block_id>gr_null_sink_0_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pager_flex_deinterleave_0_1</source_block_id>
- <sink_block_id>gr_null_sink_0_1</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pager_flex_deinterleave_0_0</source_block_id>
- <sink_block_id>gr_null_sink_0_2</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
-</flow_graph>
diff --git a/gr-pager/apps/usrp_rx_flex.py b/gr-pager/apps/usrp_rx_flex.py
deleted file mode 100755
index 47bf5a3df..000000000
--- a/gr-pager/apps/usrp_rx_flex.py
+++ /dev/null
@@ -1,434 +0,0 @@
-#!/usr/bin/env python
-##################################################
-# Gnuradio Python Flow Graph
-# Title: USRP FLEX Pager Receiver (Single Channel)
-# Generated: Thu Oct 29 11:03:16 2009
-##################################################
-
-from gnuradio import blks2
-from gnuradio import eng_notation
-from gnuradio import gr
-from gnuradio import pager
-from gnuradio import window
-from gnuradio.eng_option import eng_option
-from gnuradio.gr import firdes
-from gnuradio.wxgui import fftsink2
-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 os, math
-import wx
-
-class usrp_rx_flex(grc_wxgui.top_block_gui):
-
- def __init__(self):
- grc_wxgui.top_block_gui.__init__(self, title="USRP FLEX Pager Receiver (Single Channel)")
-
- ##################################################
- # Variables
- ##################################################
- self.config_filename = config_filename = os.environ["HOME"]+"/.gnuradio/config.conf"
- self.symbol_rate = symbol_rate = 3200
- self._saved_channel_config = ConfigParser.ConfigParser()
- self._saved_channel_config.read(config_filename)
- try: saved_channel = self._saved_channel_config.getint("gr-pager", "channel")
- except: saved_channel = 25
- self.saved_channel = saved_channel
- self._saved_band_freq_config = ConfigParser.ConfigParser()
- self._saved_band_freq_config.read(config_filename)
- try: saved_band_freq = self._saved_band_freq_config.getfloat("gr-pager", "band_center")
- except: saved_band_freq = 930.5125e6
- self.saved_band_freq = saved_band_freq
- self.deviation = deviation = 4800
- self.decim = decim = 20
- self.adc_rate = adc_rate = 64e6
- self.sample_rate = sample_rate = adc_rate/decim
- self.passband = passband = 2*(deviation+symbol_rate)
- self.channel_rate = channel_rate = 8*3200
- self.channel = channel = saved_channel
- self.band_freq = band_freq = saved_band_freq
- self._saved_rx_gain_config = ConfigParser.ConfigParser()
- self._saved_rx_gain_config.read(config_filename)
- try: saved_rx_gain = self._saved_rx_gain_config.getint("gr-pager", "rx_gain")
- except: saved_rx_gain = 40
- self.saved_rx_gain = saved_rx_gain
- self._saved_offset_config = ConfigParser.ConfigParser()
- self._saved_offset_config.read(config_filename)
- try: saved_offset = self._saved_offset_config.getfloat("gr-pager", "freq_offset")
- except: saved_offset = 0
- self.saved_offset = saved_offset
- self.freq = freq = band_freq+(channel-61)*25e3
- self.channel_taps = channel_taps = firdes.low_pass(10, sample_rate, passband/2.0, (channel_rate-passband)/2.0)
- self.rx_gain = rx_gain = saved_rx_gain
- self.offset = offset = saved_offset
- self.nchan_taps = nchan_taps = len(channel_taps)
- self.ma_ntaps = ma_ntaps = int(channel_rate/symbol_rate)
- self.freq_text = freq_text = freq
- self.demod_k = demod_k = 3*channel_rate/(2*math.pi*deviation)
- self.channel_decim = channel_decim = int(sample_rate/channel_rate)
- self.bb_interp = bb_interp = 5
- self.bb_decim = bb_decim = 8
- self.baseband_rate = baseband_rate = 16000
-
- ##################################################
- # Notebooks
- ##################################################
- self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP)
- self.displays.AddPage(grc_wxgui.Panel(self.displays), "RX Spectrum")
- self.displays.AddPage(grc_wxgui.Panel(self.displays), "Baseband")
- self.GridAdd(self.displays, 1, 0, 1, 5)
-
- ##################################################
- # Controls
- ##################################################
- _channel_sizer = wx.BoxSizer(wx.VERTICAL)
- self._channel_text_box = forms.text_box(
- parent=self.GetWin(),
- sizer=_channel_sizer,
- value=self.channel,
- callback=self.set_channel,
- label="Channel",
- converter=forms.int_converter(),
- proportion=0,
- )
- self._channel_slider = forms.slider(
- parent=self.GetWin(),
- sizer=_channel_sizer,
- value=self.channel,
- callback=self.set_channel,
- minimum=1,
- maximum=120,
- num_steps=119,
- style=wx.SL_HORIZONTAL,
- cast=int,
- proportion=1,
- )
- self.GridAdd(_channel_sizer, 0, 1, 1, 1)
- self._band_freq_text_box = forms.text_box(
- parent=self.GetWin(),
- value=self.band_freq,
- callback=self.set_band_freq,
- label="Band Freq.",
- converter=forms.float_converter(),
- )
- self.GridAdd(self._band_freq_text_box, 0, 0, 1, 1)
- _rx_gain_sizer = wx.BoxSizer(wx.VERTICAL)
- self._rx_gain_text_box = forms.text_box(
- parent=self.GetWin(),
- sizer=_rx_gain_sizer,
- value=self.rx_gain,
- callback=self.set_rx_gain,
- label="Analog Gain",
- converter=forms.int_converter(),
- proportion=0,
- )
- self._rx_gain_slider = forms.slider(
- parent=self.GetWin(),
- sizer=_rx_gain_sizer,
- value=self.rx_gain,
- callback=self.set_rx_gain,
- minimum=0,
- maximum=100,
- num_steps=100,
- style=wx.SL_HORIZONTAL,
- cast=int,
- proportion=1,
- )
- self.GridAdd(_rx_gain_sizer, 0, 4, 1, 1)
- _offset_sizer = wx.BoxSizer(wx.VERTICAL)
- self._offset_text_box = forms.text_box(
- parent=self.GetWin(),
- sizer=_offset_sizer,
- value=self.offset,
- callback=self.set_offset,
- label="Freq. Offset",
- converter=forms.float_converter(),
- proportion=0,
- )
- self._offset_slider = forms.slider(
- parent=self.GetWin(),
- sizer=_offset_sizer,
- value=self.offset,
- callback=self.set_offset,
- minimum=-12.5e3,
- maximum=12.5e3,
- num_steps=100,
- style=wx.SL_HORIZONTAL,
- cast=float,
- proportion=1,
- )
- self.GridAdd(_offset_sizer, 0, 3, 1, 1)
- self._freq_text_static_text = forms.static_text(
- parent=self.GetWin(),
- value=self.freq_text,
- callback=self.set_freq_text,
- label="Ch. Freq",
- converter=forms.float_converter(),
- )
- self.GridAdd(self._freq_text_static_text, 0, 2, 1, 1)
-
- ##################################################
- # Blocks
- ##################################################
- self.fm_demod = gr.quadrature_demod_cf(demod_k)
- self.gr_freq_xlating_fir_filter_xxx_0 = gr.freq_xlating_fir_filter_ccc(channel_decim, (channel_taps), band_freq-freq+offset, sample_rate)
- self.gr_null_sink_0 = gr.null_sink(gr.sizeof_int*1)
- self.gr_null_sink_0_0 = gr.null_sink(gr.sizeof_int*1)
- self.gr_null_sink_0_1 = gr.null_sink(gr.sizeof_int*1)
- self.gr_null_sink_0_2 = gr.null_sink(gr.sizeof_int*1)
- self.pager_flex_deinterleave_0 = pager.flex_deinterleave()
- self.pager_flex_deinterleave_0_0 = pager.flex_deinterleave()
- self.pager_flex_deinterleave_0_1 = pager.flex_deinterleave()
- self.pager_flex_deinterleave_0_1_0 = pager.flex_deinterleave()
- self.pager_flex_sync_0 = pager.flex_sync()
- self.pager_slicer_fb_0 = pager.slicer_fb(1e-6)
- self.resampler = blks2.rational_resampler_fff(
- interpolation=bb_interp,
- decimation=bb_decim,
- taps=([1.0/ma_ntaps,]*ma_ntaps*bb_interp),
- fractional_bw=None,
- )
- self.usrp_source = grc_usrp.simple_source_c(which=0, side="A", rx_ant="RXA")
- self.usrp_source.set_decim_rate(decim)
- self.usrp_source.set_frequency(band_freq, verbose=True)
- self.usrp_source.set_gain(rx_gain)
- self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
- self.displays.GetPage(0).GetWin(),
- baseband_freq=band_freq,
- y_per_div=10,
- y_divs=10,
- ref_level=0,
- ref_scale=65536,
- sample_rate=sample_rate,
- fft_size=1024,
- fft_rate=30,
- average=False,
- avg_alpha=None,
- title="FLEX Spectrum",
- peak_hold=False,
- )
- self.displays.GetPage(0).GridAdd(self.wxgui_fftsink2_0.win, 0, 0, 1, 1)
- self.wxgui_fftsink2_1 = fftsink2.fft_sink_c(
- self.displays.GetPage(0).GetWin(),
- baseband_freq=freq,
- y_per_div=10,
- y_divs=10,
- ref_level=0,
- ref_scale=65536,
- sample_rate=channel_rate,
- fft_size=1024,
- fft_rate=30,
- average=False,
- avg_alpha=None,
- title="Channel Spectrum",
- peak_hold=False,
- )
- self.displays.GetPage(0).GridAdd(self.wxgui_fftsink2_1.win, 1, 0, 1, 1)
- self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_f(
- self.displays.GetPage(1).GetWin(),
- title="Baseband",
- sample_rate=16e3,
- v_scale=1,
- v_offset=0,
- t_scale=40.0/16e3,
- ac_couple=False,
- xy_mode=False,
- num_inputs=1,
- )
- self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0_0.win, 0, 0, 1, 1)
-
- ##################################################
- # Connections
- ##################################################
- self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.wxgui_fftsink2_1, 0))
- self.connect((self.usrp_source, 0), (self.gr_freq_xlating_fir_filter_xxx_0, 0))
- self.connect((self.usrp_source, 0), (self.wxgui_fftsink2_0, 0))
- self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.fm_demod, 0))
- self.connect((self.resampler, 0), (self.wxgui_scopesink2_0_0, 0))
- self.connect((self.fm_demod, 0), (self.resampler, 0))
- self.connect((self.pager_slicer_fb_0, 0), (self.pager_flex_sync_0, 0))
- self.connect((self.resampler, 0), (self.pager_slicer_fb_0, 0))
- self.connect((self.pager_flex_sync_0, 1), (self.pager_flex_deinterleave_0_1_0, 0))
- self.connect((self.pager_flex_sync_0, 2), (self.pager_flex_deinterleave_0_1, 0))
- self.connect((self.pager_flex_sync_0, 0), (self.pager_flex_deinterleave_0, 0))
- self.connect((self.pager_flex_sync_0, 3), (self.pager_flex_deinterleave_0_0, 0))
- self.connect((self.pager_flex_deinterleave_0, 0), (self.gr_null_sink_0, 0))
- self.connect((self.pager_flex_deinterleave_0_1_0, 0), (self.gr_null_sink_0_0, 0))
- self.connect((self.pager_flex_deinterleave_0_1, 0), (self.gr_null_sink_0_1, 0))
- self.connect((self.pager_flex_deinterleave_0_0, 0), (self.gr_null_sink_0_2, 0))
-
- def set_config_filename(self, config_filename):
- self.config_filename = config_filename
- self._saved_band_freq_config = ConfigParser.ConfigParser()
- self._saved_band_freq_config.read(self.config_filename)
- if not self._saved_band_freq_config.has_section("gr-pager"):
- self._saved_band_freq_config.add_section("gr-pager")
- self._saved_band_freq_config.set("gr-pager", "band_center", str(self.band_freq))
- self._saved_band_freq_config.write(open(self.config_filename, 'w'))
- self._saved_channel_config = ConfigParser.ConfigParser()
- self._saved_channel_config.read(self.config_filename)
- if not self._saved_channel_config.has_section("gr-pager"):
- self._saved_channel_config.add_section("gr-pager")
- self._saved_channel_config.set("gr-pager", "channel", str(self.channel))
- self._saved_channel_config.write(open(self.config_filename, 'w'))
- self._saved_offset_config = ConfigParser.ConfigParser()
- self._saved_offset_config.read(self.config_filename)
- if not self._saved_offset_config.has_section("gr-pager"):
- self._saved_offset_config.add_section("gr-pager")
- self._saved_offset_config.set("gr-pager", "freq_offset", str(self.offset))
- self._saved_offset_config.write(open(self.config_filename, 'w'))
- self._saved_rx_gain_config = ConfigParser.ConfigParser()
- self._saved_rx_gain_config.read(self.config_filename)
- if not self._saved_rx_gain_config.has_section("gr-pager"):
- self._saved_rx_gain_config.add_section("gr-pager")
- self._saved_rx_gain_config.set("gr-pager", "rx_gain", str(self.rx_gain))
- self._saved_rx_gain_config.write(open(self.config_filename, 'w'))
-
- def set_symbol_rate(self, symbol_rate):
- self.symbol_rate = symbol_rate
- self.set_passband(2*(self.deviation+self.symbol_rate))
- self.set_ma_ntaps(int(self.channel_rate/self.symbol_rate))
-
- def set_saved_channel(self, saved_channel):
- self.saved_channel = saved_channel
- self.set_channel(self.saved_channel)
-
- def set_saved_band_freq(self, saved_band_freq):
- self.saved_band_freq = saved_band_freq
- self.set_band_freq(self.saved_band_freq)
-
- def set_deviation(self, deviation):
- self.deviation = deviation
- self.set_demod_k(3*self.channel_rate/(2*math.pi*self.deviation))
- self.set_passband(2*(self.deviation+self.symbol_rate))
-
- def set_decim(self, decim):
- self.decim = decim
- self.set_sample_rate(self.adc_rate/self.decim)
- self.usrp_source.set_decim_rate(self.decim)
-
- def set_adc_rate(self, adc_rate):
- self.adc_rate = adc_rate
- self.set_sample_rate(self.adc_rate/self.decim)
-
- def set_sample_rate(self, sample_rate):
- self.sample_rate = sample_rate
- self.wxgui_fftsink2_0.set_sample_rate(self.sample_rate)
- self.set_channel_decim(int(self.sample_rate/self.channel_rate))
- self.set_channel_taps(firdes.low_pass(10, self.sample_rate, self.passband/2.0, (self.channel_rate-self.passband)/2.0))
-
- def set_passband(self, passband):
- self.passband = passband
- self.set_channel_taps(firdes.low_pass(10, self.sample_rate, self.passband/2.0, (self.channel_rate-self.passband)/2.0))
-
- def set_channel_rate(self, channel_rate):
- self.channel_rate = channel_rate
- self.wxgui_fftsink2_1.set_sample_rate(self.channel_rate)
- self.set_channel_decim(int(self.sample_rate/self.channel_rate))
- self.set_demod_k(3*self.channel_rate/(2*math.pi*self.deviation))
- self.set_channel_taps(firdes.low_pass(10, self.sample_rate, self.passband/2.0, (self.channel_rate-self.passband)/2.0))
- self.set_ma_ntaps(int(self.channel_rate/self.symbol_rate))
-
- def set_channel(self, channel):
- self.channel = channel
- self.set_freq(self.band_freq+(self.channel-61)*25e3)
- self._saved_channel_config = ConfigParser.ConfigParser()
- self._saved_channel_config.read(self.config_filename)
- if not self._saved_channel_config.has_section("gr-pager"):
- self._saved_channel_config.add_section("gr-pager")
- self._saved_channel_config.set("gr-pager", "channel", str(self.channel))
- self._saved_channel_config.write(open(self.config_filename, 'w'))
- self._channel_slider.set_value(self.channel)
- self._channel_text_box.set_value(self.channel)
-
- def set_band_freq(self, band_freq):
- self.band_freq = band_freq
- self.set_freq(self.band_freq+(self.channel-61)*25e3)
- self.wxgui_fftsink2_0.set_baseband_freq(self.band_freq)
- self.usrp_source.set_frequency(self.band_freq)
- self.gr_freq_xlating_fir_filter_xxx_0.set_center_freq(self.band_freq-self.freq+self.offset)
- self._saved_band_freq_config = ConfigParser.ConfigParser()
- self._saved_band_freq_config.read(self.config_filename)
- if not self._saved_band_freq_config.has_section("gr-pager"):
- self._saved_band_freq_config.add_section("gr-pager")
- self._saved_band_freq_config.set("gr-pager", "band_center", str(self.band_freq))
- self._saved_band_freq_config.write(open(self.config_filename, 'w'))
- self._band_freq_text_box.set_value(self.band_freq)
-
- def set_saved_rx_gain(self, saved_rx_gain):
- self.saved_rx_gain = saved_rx_gain
- self.set_rx_gain(self.saved_rx_gain)
-
- def set_saved_offset(self, saved_offset):
- self.saved_offset = saved_offset
- self.set_offset(self.saved_offset)
-
- def set_freq(self, freq):
- self.freq = freq
- self.gr_freq_xlating_fir_filter_xxx_0.set_center_freq(self.band_freq-self.freq+self.offset)
- self.wxgui_fftsink2_1.set_baseband_freq(self.freq)
- self.set_freq_text(self.freq)
-
- def set_channel_taps(self, channel_taps):
- self.channel_taps = channel_taps
- self.gr_freq_xlating_fir_filter_xxx_0.set_taps((self.channel_taps))
- self.set_nchan_taps(len(self.channel_taps))
-
- def set_rx_gain(self, rx_gain):
- self.rx_gain = rx_gain
- self.usrp_source.set_gain(self.rx_gain)
- self._saved_rx_gain_config = ConfigParser.ConfigParser()
- self._saved_rx_gain_config.read(self.config_filename)
- if not self._saved_rx_gain_config.has_section("gr-pager"):
- self._saved_rx_gain_config.add_section("gr-pager")
- self._saved_rx_gain_config.set("gr-pager", "rx_gain", str(self.rx_gain))
- self._saved_rx_gain_config.write(open(self.config_filename, 'w'))
- self._rx_gain_slider.set_value(self.rx_gain)
- self._rx_gain_text_box.set_value(self.rx_gain)
-
- def set_offset(self, offset):
- self.offset = offset
- self.gr_freq_xlating_fir_filter_xxx_0.set_center_freq(self.band_freq-self.freq+self.offset)
- self._saved_offset_config = ConfigParser.ConfigParser()
- self._saved_offset_config.read(self.config_filename)
- if not self._saved_offset_config.has_section("gr-pager"):
- self._saved_offset_config.add_section("gr-pager")
- self._saved_offset_config.set("gr-pager", "freq_offset", str(self.offset))
- self._saved_offset_config.write(open(self.config_filename, 'w'))
- self._offset_slider.set_value(self.offset)
- self._offset_text_box.set_value(self.offset)
-
- def set_nchan_taps(self, nchan_taps):
- self.nchan_taps = nchan_taps
-
- def set_ma_ntaps(self, ma_ntaps):
- self.ma_ntaps = ma_ntaps
-
- def set_freq_text(self, freq_text):
- self.freq_text = freq_text
- self._freq_text_static_text.set_value(self.freq_text)
-
- def set_demod_k(self, demod_k):
- self.demod_k = demod_k
-
- def set_channel_decim(self, channel_decim):
- self.channel_decim = channel_decim
-
- def set_bb_interp(self, bb_interp):
- self.bb_interp = bb_interp
-
- def set_bb_decim(self, bb_decim):
- self.bb_decim = bb_decim
-
- def set_baseband_rate(self, baseband_rate):
- self.baseband_rate = baseband_rate
-
-if __name__ == '__main__':
- parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
- (options, args) = parser.parse_args()
- tb = usrp_rx_flex()
- tb.Run(True)
-
diff --git a/gr-pager/gnuradio-pager.pc.in b/gr-pager/gnuradio-pager.pc.in
deleted file mode 100644
index 408d94eb2..000000000
--- a/gr-pager/gnuradio-pager.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: gnuradio-pager
-Description: GNU Radio blocks implementing a FLEX pager decoder
-Requires: gnuradio-core
-Version: @LIBVER@
-Libs: -L${libdir} -lgnuradio-pager
-Cflags: -I${includedir}
diff --git a/gr-pager/grc/CMakeLists.txt b/gr-pager/grc/CMakeLists.txt
deleted file mode 100644
index c982995b0..000000000
--- a/gr-pager/grc/CMakeLists.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-install(FILES
- pager_slicer_fb.xml
- pager_flex_sync.xml
- pager_flex_deinterleave.xml
- DESTINATION ${GRC_BLOCKS_DIR}
- COMPONENT "pager_python"
-)
diff --git a/gr-pager/grc/pager_flex_deinterleave.xml b/gr-pager/grc/pager_flex_deinterleave.xml
deleted file mode 100644
index 14e5782da..000000000
--- a/gr-pager/grc/pager_flex_deinterleave.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## FLEX Pager Deinterleaver
-###################################################
- -->
-<block>
- <name>FLEX Deinterleave</name>
- <key>pager_flex_deinterleave</key>
- <category>Pager</category>
- <import>from gnuradio import pager</import>
- <make>pager.flex_deinterleave()</make>
-
- <sink>
- <name>bits</name>
- <type>byte</type>
- </sink>
-
- <source>
- <name>codes</name>
- <type>int</type>
- </source>
-</block>
diff --git a/gr-pager/grc/pager_flex_sync.xml b/gr-pager/grc/pager_flex_sync.xml
deleted file mode 100644
index ec22321aa..000000000
--- a/gr-pager/grc/pager_flex_sync.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## FLEX Pager Synchronizer
-###################################################
- -->
-<block>
- <name>FLEX Synchronizer</name>
- <key>pager_flex_sync</key>
- <category>Pager</category>
- <import>from gnuradio import pager</import>
- <make>pager.flex_sync()</make>
-
- <sink>
- <name>dibits</name>
- <type>byte</type>
- </sink>
-
- <source>
- <name>A</name>
- <type>byte</type>
- </source>
- <source>
- <name>B</name>
- <type>byte</type>
- </source>
- <source>
- <name>C</name>
- <type>byte</type>
- </source>
- <source>
- <name>D</name>
- <type>byte</type>
- </source>
-
-</block>
diff --git a/gr-pager/grc/pager_slicer_fb.xml b/gr-pager/grc/pager_slicer_fb.xml
deleted file mode 100644
index 25642cb48..000000000
--- a/gr-pager/grc/pager_slicer_fb.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## FLEX Pager Slicer w/DC offset removal
-###################################################
- -->
-<block>
- <name>4-Level Slicer/DCR</name>
- <key>pager_slicer_fb</key>
- <category>Pager</category>
- <import>from gnuradio import pager</import>
- <make>pager.slicer_fb($alpha)</make>
-
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>1e-6</value>
- <type>real</type>
- </param>
-
- <sink>
- <name>bb</name>
- <type>float</type>
- </sink>
-
- <source>
- <name>dibits</name>
- <type>byte</type>
- </source>
-
-</block>
diff --git a/gr-pager/lib/CMakeLists.txt b/gr-pager/lib/CMakeLists.txt
deleted file mode 100644
index cb62bcc75..000000000
--- a/gr-pager/lib/CMakeLists.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-########################################################################
-# Setup the include and linker paths
-########################################################################
-include_directories(
- ${GR_PAGER_INCLUDE_DIRS}
- ${GNURADIO_CORE_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
- ${Boost_INCLUDE_DIRS}
-)
-
-link_directories(${Boost_LIBRARY_DIRS})
-
-########################################################################
-# Setup library
-########################################################################
-list(APPEND gr_pager_sources
- pager_flex_frame.cc
- pager_slicer_fb.cc
- pager_flex_sync.cc
- pager_flex_deinterleave.cc
- pager_flex_parse.cc
- pageri_bch3221.cc
- pageri_flex_modes.cc
- pageri_util.cc
-)
-
-list(APPEND pager_libs
- gnuradio-core
- ${Boost_LIBRARIES}
-)
-
-add_library(gnuradio-pager SHARED ${gr_pager_sources})
-target_link_libraries(gnuradio-pager ${pager_libs})
-GR_LIBRARY_FOO(gnuradio-pager RUNTIME_COMPONENT "pager_runtime" DEVEL_COMPONENT "pager_devel")
-
-########################################################################
-# Install header files
-########################################################################
-install(FILES
- pager_api.h
- pager_slicer_fb.h
- pager_flex_sync.h
- pager_flex_deinterleave.h
- pager_flex_parse.h
- pager_flex_frame.h
- pageri_bch3221.h
- pageri_flex_modes.h
- pageri_util.h
- DESTINATION ${GR_INCLUDE_DIR}/gnuradio
- COMPONENT "pager_devel"
-)
diff --git a/gr-pager/lib/pager_api.h b/gr-pager/lib/pager_api.h
deleted file mode 100644
index 4312c5ae3..000000000
--- a/gr-pager/lib/pager_api.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2011 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_PAGER_API_H
-#define INCLUDED_PAGER_API_H
-
-#include <gruel/attributes.h>
-
-#ifdef gnuradio_pager_EXPORTS
-# define PAGER_API __GR_ATTR_EXPORT
-#else
-# define PAGER_API __GR_ATTR_IMPORT
-#endif
-
-#endif /* INCLUDED_PAGER_API_H */
diff --git a/gr-pager/lib/pager_flex_deinterleave.cc b/gr-pager/lib/pager_flex_deinterleave.cc
deleted file mode 100644
index f7f1d9f69..000000000
--- a/gr-pager/lib/pager_flex_deinterleave.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2004,2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pager_flex_deinterleave.h>
-#include <pageri_bch3221.h>
-#include <pageri_util.h>
-#include <gr_io_signature.h>
-
-pager_flex_deinterleave_sptr pager_make_flex_deinterleave()
-{
- return gnuradio::get_initial_sptr(new pager_flex_deinterleave());
-}
-
-pager_flex_deinterleave::pager_flex_deinterleave() :
- gr_sync_decimator("flex_deinterleave",
- gr_make_io_signature(1, 1, sizeof(unsigned char)),
- gr_make_io_signature(1, 1, sizeof(gr_int32)), 32)
-{
- set_output_multiple(8); // One FLEX block at a time
-}
-
-int pager_flex_deinterleave::work(int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const unsigned char *in = (const unsigned char *)input_items[0];
- gr_int32 *out = (gr_int32 *)output_items[0];
-
- // FLEX codewords are interleaved in blocks of 256 bits or 8, 32 bit
- // codes. To deinterleave we parcel each incoming bit into the MSB
- // of each codeword, then switch to MSB-1, etc. This is done by shifting
- // in the bits from the right on each codeword as the bits come in.
- // When we are done we have a FLEX block of eight codewords, ready for
- // conversion to data words.
- //
- // FLEX data words are recovered by reversing the bit order of the code
- // word, masking off the (reversed) ECC, and inverting the remainder of
- // the bits (!).
- //
- // The data portion of a FLEX frame consists of 11 of these deinterleaved
- // and converted blocks.
- //
- // set_output_multiple garauntees we have output space for at least
- // eight data words, and 256 bits are supplied on input
-
- int i, j;
- for (i = 0; i < 32; i++) {
- for (j = 0; j < 8; j++) {
- d_codewords[j] <<= 1;
- d_codewords[j] |= *in++;
- }
- }
-
- // Now convert code words into data words
- for (j = 0; j < 8; j++) {
- gr_int32 codeword = d_codewords[j];
-
- // Apply BCH 32,21 error correction
- // TODO: mark dataword when codeword fails ECC
- pageri_bch3221(codeword);
-
- // Reverse bit order
- codeword = pageri_reverse_bits32(codeword);
-
- // Mask off ECC then invert lower 21 bits
- codeword = (codeword & 0x001FFFFF)^0x001FFFFF;
-
- *out++ = codeword;
- }
-
- return j;
-}
diff --git a/gr-pager/lib/pager_flex_deinterleave.h b/gr-pager/lib/pager_flex_deinterleave.h
deleted file mode 100644
index c702da23d..000000000
--- a/gr-pager/lib/pager_flex_deinterleave.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_PAGER_FLEX_DEINTERLEAVE_H
-#define INCLUDED_PAGER_FLEX_DEINTERLEAVE_H
-
-#include <pager_api.h>
-#include <gr_sync_decimator.h>
-
-class pager_flex_deinterleave;
-typedef boost::shared_ptr<pager_flex_deinterleave> pager_flex_deinterleave_sptr;
-
-PAGER_API pager_flex_deinterleave_sptr pager_make_flex_deinterleave();
-
-/*!
- * \brief flex deinterleave description
- * \ingroup pager_blk
- */
-
-class PAGER_API pager_flex_deinterleave : public gr_sync_decimator
-{
-private:
- // Constructors
- friend PAGER_API pager_flex_deinterleave_sptr pager_make_flex_deinterleave();
- pager_flex_deinterleave();
-
- // One FLEX block of deinterleaved data
- gr_int32 d_codewords[8];
-
-public:
-
- int work(int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-};
-
-#endif /* INCLUDED_PAGER_FLEX_DEINTERLEAVE_H */
diff --git a/gr-pager/lib/pager_flex_frame.cc b/gr-pager/lib/pager_flex_frame.cc
deleted file mode 100644
index 949f60320..000000000
--- a/gr-pager/lib/pager_flex_frame.cc
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <pager_flex_frame.h>
-
-pager_flex_frame_sptr pager_make_flex_frame()
-{
- return pager_flex_frame_sptr(new pager_flex_frame());
-}
-
-pager_flex_frame::pager_flex_frame()
-{
-}
-
-pager_flex_frame::~pager_flex_frame()
-{
-}
diff --git a/gr-pager/lib/pager_flex_frame.h b/gr-pager/lib/pager_flex_frame.h
deleted file mode 100644
index 61973f722..000000000
--- a/gr-pager/lib/pager_flex_frame.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_PAGER_FLEX_FRAME_H
-#define INCLUDED_PAGER_FLEX_FRAME_H
-
-#include <pager_api.h>
-#include <boost/shared_ptr.hpp>
-
-class pager_flex_frame;
-typedef boost::shared_ptr<pager_flex_frame> pager_flex_frame_sptr;
-
-/*!
- * \brief public constructor for pager_flex_frame
- */
-PAGER_API pager_flex_frame_sptr pager_make_flex_frame();
-
-/*!
- * \brief flex_frame.
- */
-class PAGER_API pager_flex_frame {
- // Constructor is private to force use of shared_ptr
- pager_flex_frame();
- friend PAGER_API pager_flex_frame_sptr pager_make_flex_frame();
-
-public:
- ~pager_flex_frame();
-};
-
-#endif /* INCLUDED_PAGER_FLEX_FRAME_H */
diff --git a/gr-pager/lib/pager_flex_parse.cc b/gr-pager/lib/pager_flex_parse.cc
deleted file mode 100644
index d7c308ddb..000000000
--- a/gr-pager/lib/pager_flex_parse.cc
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright 2004,2006,2007,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pager_flex_parse.h>
-#include <pageri_bch3221.h>
-#include <gr_io_signature.h>
-#include <ctype.h>
-#include <iostream>
-#include <iomanip>
-
-pager_flex_parse_sptr pager_make_flex_parse(gr_msg_queue_sptr queue, float freq)
-{
- return gnuradio::get_initial_sptr(new pager_flex_parse(queue, freq));
-}
-
-pager_flex_parse::pager_flex_parse(gr_msg_queue_sptr queue, float freq) :
- gr_sync_block("flex_parse",
- gr_make_io_signature(1, 1, sizeof(gr_int32)),
- gr_make_io_signature(0, 0, 0)),
- d_queue(queue),
- d_freq(freq)
-{
- d_count = 0;
-}
-
-int pager_flex_parse::work(int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const gr_int32 *in = (const gr_int32 *)input_items[0];
-
- int i = 0;
- while (i < noutput_items) {
- // Accumulate one whole frame's worth of data words (88 of them)
- d_datawords[d_count] = *in++; i++;
- if (++d_count == 88) {
- parse_data();
- d_count = 0;
- }
- }
-
- return i;
-}
-
-/* FLEX data frames (that is, 88 data words per phase recovered after sync,
- symbol decoding, dephasing, deinterleaving, error correction, and conversion
- from codewords to data words) start with a block information word containing
- indices of the page address field and page vector fields.
-*/
-
-void pager_flex_parse::parse_capcode(gr_int32 aw1, gr_int32 aw2)
-{
- d_laddr = (aw1 < 0x008001L) ||
- (aw1 > 0x1E0000L) ||
- (aw1 > 0x1E7FFEL);
-
- if (d_laddr)
- d_capcode = aw1+((aw2^0x001FFFFF)<<15)+0x1F9000; // Don't ask
- else
- d_capcode = aw1-0x8000;
-}
-
-void pager_flex_parse::parse_data()
-{
- // Block information word is the first data word in frame
- gr_int32 biw = d_datawords[0];
-
- // Nothing to see here, please move along
- if (biw == 0 || biw == 0x001FFFFF)
- return;
-
- // Vector start index is bits 15-10
- // Address start address is bits 9-8, plus one for offset
- int voffset = (biw >> 10) & 0x3f;
- int aoffset = ((biw >> 8) & 0x03) + 1;
-
- //printf("BIW:%08X AW:%02i-%02i\n", biw, aoffset, voffset);
-
- // Iterate through pages and dispatch to appropriate handler
- for (int i = aoffset; i < voffset; i++) {
- int j = voffset+i-aoffset; // Start of vector field for address @ i
-
- if (d_datawords[i] == 0x00000000 ||
- d_datawords[i] == 0x001FFFFF)
- continue; // Idle codewords, invalid address
-
- parse_capcode(d_datawords[i], d_datawords[i+1]);
- if (d_laddr)
- i++;
-
- if (d_capcode < 0) // Invalid address, skip
- continue;
-
- // Parse vector information word for address @ offset 'i'
- gr_int32 viw = d_datawords[j];
- d_type = (page_type_t)((viw >> 4) & 0x00000007);
- int mw1 = (viw >> 7) & 0x00000007F;
- int len = (viw >> 14) & 0x0000007F;
-
- if (is_numeric_page(d_type))
- len &= 0x07;
- int mw2 = mw1+len;
-
- if (mw1 == 0 && mw2 == 0)
- continue; // Invalid VIW
-
- if (is_tone_page(d_type))
- mw1 = mw2 = 0;
-
- if (mw1 > 87 || mw2 > 87)
- continue; // Invalid offsets
-
- d_payload.str("");
- d_payload.setf(std::ios::showpoint);
- d_payload << std::setprecision(6) << std::setw(7)
- << d_freq/1e6 << FIELD_DELIM
- << std::setw(10) << d_capcode << FIELD_DELIM
- << flex_page_desc[d_type] << FIELD_DELIM;
-
- if (is_alphanumeric_page(d_type))
- parse_alphanumeric(mw1, mw2-1, j);
- else if (is_numeric_page(d_type))
- parse_numeric(mw1, mw2, j);
- else if (is_tone_page(d_type))
- parse_tone_only();
- else
- parse_unknown(mw1, mw2);
-
- gr_message_sptr msg = gr_make_message_from_string(std::string(d_payload.str()));
- d_queue->handle(msg);
- }
-}
-
-void pager_flex_parse::parse_alphanumeric(int mw1, int mw2, int j)
-{
- int frag;
- //bool cont;
-
- if (!d_laddr) {
- frag = (d_datawords[mw1] >> 11) & 0x03;
- //cont = (d_datawords[mw1] >> 10) & 0x01;
- mw1++;
- }
- else {
- frag = (d_datawords[j+1] >> 11) & 0x03;
- //cont = (d_datawords[j+1] >> 10) & 0x01;
- mw2--;
- }
-
- //d_payload << frag << FIELD_DELIM;
- //d_payload << cont << FIELD_DELIM;
-
- for (int i = mw1; i <= mw2; i++) {
- gr_int32 dw = d_datawords[i];
- unsigned char ch;
-
- if (i > mw1 || frag != 0x03) {
- ch = dw & 0x7F;
- if (ch != 0x03)
- d_payload << ch;
- }
-
- ch = (dw >> 7) & 0x7F;
- if (ch != 0x03) // Fill
- d_payload << ch;
-
- ch = (dw >> 14) & 0x7F;
- if (ch != 0x03) // Fill
- d_payload << ch;
- }
-}
-
-void pager_flex_parse::parse_numeric(int mw1, int mw2, int j)
-{
- // Get first dataword from message field or from second
- // vector word if long address
- gr_int32 dw;
- if (!d_laddr) {
- dw = d_datawords[mw1];
- mw1++;
- mw2++;
- }
- else {
- dw = d_datawords[j+1];
- }
-
- unsigned char digit = 0;
- int count = 4;
- if (d_type == FLEX_NUMBERED_NUMERIC)
- count += 10; // Skip 10 header bits for numbered numeric pages
- else
- count += 2; // Otherwise skip 2
-
- for (int i = mw1; i <= mw2; i++) {
- for (int k = 0; k < 21; k++) {
- // Shift LSB from data word into digit
- digit = (digit >> 1) & 0x0F;
- if (dw & 0x01)
- digit ^= 0x08;
- dw >>= 1;
- if (--count == 0) {
- if (digit != 0x0C) // Fill
- d_payload << flex_bcd[digit];
- count = 4;
- }
- }
-
- dw = d_datawords[i];
- }
-}
-
-void pager_flex_parse::parse_tone_only()
-{
-}
-
-void pager_flex_parse::parse_unknown(int mw1, int mw2)
-{
-}
diff --git a/gr-pager/lib/pager_flex_parse.h b/gr-pager/lib/pager_flex_parse.h
deleted file mode 100644
index 499be299a..000000000
--- a/gr-pager/lib/pager_flex_parse.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_PAGER_FLEX_PARSE_H
-#define INCLUDED_PAGER_FLEX_PARSE_H
-
-#include <pager_api.h>
-#include <gr_sync_block.h>
-#include <gr_msg_queue.h>
-#include <pageri_flex_modes.h>
-#include <sstream>
-
-class pager_flex_parse;
-typedef boost::shared_ptr<pager_flex_parse> pager_flex_parse_sptr;
-
-PAGER_API pager_flex_parse_sptr pager_make_flex_parse(gr_msg_queue_sptr queue, float freq);
-
-#define FIELD_DELIM ((unsigned char)128)
-
-/*!
- * \brief flex parse description
- * \ingroup pager_blk
- */
-class PAGER_API pager_flex_parse : public gr_sync_block
-{
-private:
- // Constructors
- friend PAGER_API pager_flex_parse_sptr pager_make_flex_parse(gr_msg_queue_sptr queue, float freq);
- pager_flex_parse(gr_msg_queue_sptr queue, float freq);
-
- std::ostringstream d_payload;
- gr_msg_queue_sptr d_queue; // Destination for decoded pages
-
- int d_count; // Count of received codewords
- gr_int32 d_datawords[88]; // 11 blocks of 8 32-bit words
-
- page_type_t d_type; // Current page type
- int d_capcode; // Current page destination address
- bool d_laddr; // Current page has long address
- float d_freq; // Channel frequency
-
- void parse_data(); // Handle a frame's worth of data
- void parse_capcode(gr_int32 aw1, gr_int32 aw2);
- void parse_alphanumeric(int mw1, int mw2, int j);
- void parse_numeric(int mw1, int mw2, int j);
- void parse_tone_only();
- void parse_unknown(int mw1, int mw2);
-
-public:
- int work(int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-};
-
-#endif /* INCLUDED_PAGER_FLEX_PARSE_H */
diff --git a/gr-pager/lib/pager_flex_sync.cc b/gr-pager/lib/pager_flex_sync.cc
deleted file mode 100644
index c31acd7d2..000000000
--- a/gr-pager/lib/pager_flex_sync.cc
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * Copyright 2004,2006,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pager_flex_sync.h>
-#include <pageri_flex_modes.h>
-#include <pageri_bch3221.h>
-#include <pageri_util.h>
-#include <gr_io_signature.h>
-#include <gr_count_bits.h>
-#include <cstdio>
-
-pager_flex_sync_sptr pager_make_flex_sync()
-{
- return gnuradio::get_initial_sptr(new pager_flex_sync());
-}
-
-// FLEX sync block takes input from sliced baseband stream [0-3] at specified
-// channel rate. Symbol timing is established based on receiving one of the
-// defined FLEX protocol synchronization words. The block outputs one FLEX frame
-// worth of bits on each output phase for the data portion of the frame. Unused phases
-// get all zeros, which are considered idle code words.
-
-pager_flex_sync::pager_flex_sync() :
- gr_block ("flex_sync",
- gr_make_io_signature (1, 1, sizeof(unsigned char)),
- gr_make_io_signature (4, 4, sizeof(unsigned char))),
- d_sync(10) // Fixed at 10 samples per baud (@ 1600 baud)
-{
- enter_idle();
-}
-
-void pager_flex_sync::forecast(int noutput_items, gr_vector_int &inputs_required)
-{
- // samples per bit X number of outputs needed
- int items = noutput_items*d_spb;
- for (unsigned int i = 0; i < inputs_required.size(); i++)
- inputs_required[i] = items;
-}
-
-int pager_flex_sync::index_avg(int start, int end)
-{
- // modulo average
- if (start < end)
- return (end + start)/2;
- else
- return ((end + start)/2 + d_spb/2) % d_spb;
-}
-
-bool pager_flex_sync::test_sync(unsigned char sym)
-{
- // 64-bit FLEX sync code:
- // AAAA:BBBBBBBB:CCCC
- //
- // Where BBBBBBBB is always 0xA6C6AAAA
- // and AAAA^CCCC is 0xFFFF
- //
- // Specific values of AAAA determine what bps and encoding the
- // packet is beyond the frame information word
- //
- // First we match on the marker field with a hamming distance < 4
- // Then we match on the outer code with a hamming distance < 4
-
- d_sync[d_index] = (d_sync[d_index] << 1) | (sym < 2);
- gr_int64 val = d_sync[d_index];
- gr_int32 marker = ((val & 0x0000FFFFFFFF0000ULL)) >> 16;
-
- if (gr_count_bits32(marker^FLEX_SYNC_MARKER) < 4) {
- gr_int32 code = ((val & 0xFFFF000000000000ULL) >> 32) |
- (val & 0x000000000000FFFFULL);
-
- for (int i = 0; i < num_flex_modes; i++) {
- if (gr_count_bits32(code^flex_modes[i].sync) < 4) {
- d_mode = i;
- return true;
- }
- }
-
- // Marker received but doesn't match known codes
- // All codes have high word inverted to low word
- unsigned short high = (code & 0xFFFF0000) >> 16;
- unsigned short low = code & 0x0000FFFF;
- unsigned short syn = high^low;
- if (syn == 0xFFFF)
- fprintf(stderr, "Unknown sync code detected: %08X\n", code);
- }
-
- return false;
-}
-
-void pager_flex_sync::enter_idle()
-{
- d_state = ST_IDLE;
- d_index = 0;
- d_start = 0;
- d_center = 0;
- d_end = 0;
- d_count = 0;
- d_mode = 0;
- d_baudrate = 1600;
- d_levels = 2;
- d_spb = 16000/d_baudrate;
- d_bit_a = 0;
- d_bit_b = 0;
- d_bit_c = 0;
- d_bit_d = 0;
- d_hibit = false;
- fflush(stdout);
-}
-
-void pager_flex_sync::enter_syncing()
-{
- d_start = d_index;
- d_state = ST_SYNCING;
-}
-
-void pager_flex_sync::enter_sync1()
-{
- d_state = ST_SYNC1;
- d_end = d_index;
- d_center = index_avg(d_start, d_end); // Center of goodness
- d_count = 0;
-}
-
-void pager_flex_sync::enter_sync2()
-{
- d_state = ST_SYNC2;
- d_count = 0;
- d_baudrate = flex_modes[d_mode].baud;
- d_levels = flex_modes[d_mode].levels;
- d_spb = 16000/d_baudrate;
-
- if (d_baudrate == 3200) {
- // Oversampling buffer just got halved
- d_center = d_center/2;
-
- // We're here at the center of a 1600 baud bit
- // So this hack puts the index and bit counter
- // in the right place for 3200 bps.
- d_index = d_index/2-d_spb/2;
- d_count = -1;
- }
-}
-
-void pager_flex_sync::enter_data()
-{
- d_state = ST_DATA;
- d_count = 0;
-}
-
-void pager_flex_sync::parse_fiw()
-{
- // Nothing is done with these now, but these will end up getting
- // passed as metadata when mblocks are available
-
- // Bits 31-28 are frame number related, but unknown function
- // This might be a checksum
- d_unknown2 = pageri_reverse_bits8((d_fiw >> 24) & 0xF0);
-
- // Cycle is bits 27-24, reversed
- d_cycle = pageri_reverse_bits8((d_fiw >> 20) & 0xF0);
-
- // Frame is bits 23-17, reversed
- d_frame = pageri_reverse_bits8((d_fiw >> 16) & 0xFE);
-
- // Bits 16-11 are some sort of marker, usually identical across
- // many frames but sometimes changes between frames or modes
- d_unknown1 = (d_fiw >> 11) & 0x3F;
-
- //printf("CYC:%02i FRM:%03i\n", d_cycle, d_frame);
-}
-
-int pager_flex_sync::output_symbol(unsigned char sym)
-{
- // Here is where we output a 1 or 0 on each phase according
- // to current FLEX mode and symbol value. Unassigned phases
- // are zero from the enter_idle() initialization.
- //
- // FLEX can transmit the data portion of the frame at either
- // 1600 bps or 3200 bps, and can use either two- or four-level
- // FSK encoding.
- //
- // At 1600 bps, 2-level, a single "phase" is transmitted with bit
- // value '0' using level '3' and bit value '1' using level '0'.
- //
- // At 1600 bps, 4-level, a second "phase" is transmitted, and the
- // di-bits are encoded with a gray code:
- //
- // Symbol Phase 1 Phase 2
- // ------ ------- -------
- // 0 1 1
- // 1 1 0
- // 2 0 0
- // 3 0 1
- //
- // At 1600 bps, 4-level, these are called PHASE A and PHASE B.
- //
- // At 3200 bps, the same 1 or 2 bit encoding occurs, except that
- // additionally two streams are interleaved on alternating symbols.
- // Thus, PHASE A (and PHASE B if 4-level) are decoded on one symbol,
- // then PHASE C (and PHASE D if 4-level) are decoded on the next.
-
- int bits = 0;
-
- if (d_baudrate == 1600) {
- d_bit_a = (sym < 2);
- if (d_levels == 4)
- d_bit_b = (sym == 0) || (sym == 3);
-
- *d_phase_a++ = d_bit_a;
- *d_phase_b++ = d_bit_b;
- *d_phase_c++ = d_bit_c;
- *d_phase_d++ = d_bit_d;
- bits++;
- }
- else {
- if (!d_hibit) {
- d_bit_a = (sym < 2);
- if (d_levels == 4)
- d_bit_b = (sym == 0) || (sym == 3);
- d_hibit = true;
- }
- else {
- d_bit_c = (sym < 2);
- if (d_levels == 4)
- d_bit_d = (sym == 0) || (sym == 3);
- d_hibit = false;
-
- *d_phase_a++ = d_bit_a;
- *d_phase_b++ = d_bit_b;
- *d_phase_c++ = d_bit_c;
- *d_phase_d++ = d_bit_d;
- bits++;
- }
- }
-
- return bits;
-}
-
-int pager_flex_sync::general_work(int noutput_items,
- gr_vector_int &ninput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const unsigned char *in = (const unsigned char *)input_items[0];
- d_phase_a = (unsigned char *)output_items[0];
- d_phase_b = (unsigned char *)output_items[1];
- d_phase_c = (unsigned char *)output_items[2];
- d_phase_d = (unsigned char *)output_items[3];
-
- int i = 0, j = 0;
- int ninputs = ninput_items[0];
-
- while (i < ninputs && j < noutput_items) {
- unsigned char sym = *in++; i++;
- d_index = (d_index+1) % d_spb;
-
- switch (d_state) {
- case ST_IDLE:
- // Continually compare the received symbol stream
- // against the known FLEX sync words.
- if (test_sync(sym))
- enter_syncing();
- break;
-
- case ST_SYNCING:
- // Wait until we stop seeing sync, then calculate
- // the center of the bit period (d_center)
- if (!test_sync(sym))
- enter_sync1();
- break;
-
- case ST_SYNC1:
- // Skip 16 bits of dotting, then accumulate 32 bits
- // of Frame Information Word.
- if (d_index == d_center) {
- d_fiw = (d_fiw << 1) | (sym > 1);
- if (++d_count == 48) {
- // FIW is accumulated, call BCH to error correct it
- pageri_bch3221(d_fiw);
- parse_fiw();
- enter_sync2();
- }
- }
- break;
-
- case ST_SYNC2:
- // This part and the remainder of the frame are transmitted
- // at either 1600 bps or 3200 bps based on the received
- // FLEX sync word. The second SYNC header is 25ms of idle bits
- // at either speed.
- if (d_index == d_center) {
- // Skip 25 ms = 40 bits @ 1600 bps, 80 @ 3200 bps
- if (++d_count == d_baudrate/40)
- enter_data();
- }
- break;
-
- case ST_DATA:
- // The data portion of the frame is 1760 ms long at either
- // baudrate. This is 2816 bits @ 1600 bps and 5632 bits @ 3200 bps.
- // The output_symbol() routine decodes and doles out the bits
- // to each of the four transmitted phases of FLEX interleaved codes.
- if (d_index == d_center) {
- j += output_symbol(sym);
- if (++d_count == d_baudrate*1760/1000)
- enter_idle();
- }
- break;
-
- default:
- assert(0); // memory corruption of d_state if ever gets here
- break;
- }
- }
-
- consume_each(i);
- return j;
-}
diff --git a/gr-pager/lib/pager_flex_sync.h b/gr-pager/lib/pager_flex_sync.h
deleted file mode 100644
index b53737d12..000000000
--- a/gr-pager/lib/pager_flex_sync.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_PAGER_FLEX_SYNC_H
-#define INCLUDED_PAGER_FLEX_SYNC_H
-
-#include <pager_api.h>
-#include <gr_block.h>
-
-class pager_flex_sync;
-typedef boost::shared_ptr<pager_flex_sync> pager_flex_sync_sptr;
-typedef std::vector<gr_int64> gr_int64_vector;
-
-PAGER_API pager_flex_sync_sptr pager_make_flex_sync();
-
-/*!
- * \brief flex sync description
- * \ingroup pager_blk
- */
-
-class PAGER_API pager_flex_sync : public gr_block
-{
-private:
- // Constructors
- friend PAGER_API pager_flex_sync_sptr pager_make_flex_sync();
- pager_flex_sync();
-
- // State machine transitions
- void enter_idle();
- void enter_syncing();
- void enter_sync1();
- void enter_sync2();
- void enter_data();
-
- int index_avg(int start, int end);
- bool test_sync(unsigned char sym);
- void parse_fiw();
- int output_symbol(unsigned char sym);
-
- // Simple state machine
- enum state_t { ST_IDLE, ST_SYNCING, ST_SYNC1, ST_SYNC2, ST_DATA };
- state_t d_state;
-
- int d_index; // Index into current baud
- int d_start; // Start of good sync
- int d_center; // Center of bit
- int d_end; // End of good sync
- int d_count; // Bit counter
-
- int d_mode; // Current packet mode
- int d_baudrate; // Current decoding baud rate
- int d_levels; // Current decoding levels
- int d_spb; // Current samples per baud
- bool d_hibit; // Alternating bit indicator for 3200 bps
-
- gr_int32 d_fiw; // Frame information word
- int d_frame; // Current FLEX frame
- int d_cycle; // Current FLEX cycle
- int d_unknown1;
- int d_unknown2;
-
- unsigned char d_bit_a;
- unsigned char d_bit_b;
- unsigned char d_bit_c;
- unsigned char d_bit_d;
-
- unsigned char *d_phase_a;
- unsigned char *d_phase_b;
- unsigned char *d_phase_c;
- unsigned char *d_phase_d;
-
- gr_int64_vector d_sync; // Trial synchronizers
-
-public:
- void forecast(int noutput_items, gr_vector_int &inputs_required);
-
- int general_work(int noutput_items,
- gr_vector_int &ninput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-};
-
-#endif /* INCLUDED_PAGER_FLEX_SYNC_H */
diff --git a/gr-pager/lib/pager_slicer_fb.cc b/gr-pager/lib/pager_slicer_fb.cc
deleted file mode 100644
index 415e898cd..000000000
--- a/gr-pager/lib/pager_slicer_fb.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2004,2006,2007,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pager_slicer_fb.h>
-#include <gr_io_signature.h>
-
-pager_slicer_fb_sptr pager_make_slicer_fb(float alpha)
-{
- return gnuradio::get_initial_sptr(new pager_slicer_fb(alpha));
-}
-
-pager_slicer_fb::pager_slicer_fb(float alpha) :
- gr_sync_block ("slicer_fb",
- gr_make_io_signature (1, 1, sizeof(float)),
- gr_make_io_signature (1, 1, sizeof(unsigned char)))
-{
- d_alpha = alpha;
- d_beta = 1.0-alpha;
- d_avg = 0.0;
-}
-
-// Tracks average, minimum, and peak, then converts input into one of:
-//
-// [0, 1, 2, 3]
-unsigned char pager_slicer_fb::slice(float sample)
-{
- unsigned char decision;
-
- // Update DC level and remove
- d_avg = d_avg*d_beta+sample*d_alpha;
- sample -= d_avg;
-
- if (sample > 0) {
- if (sample > 2.0)
- decision = 3;
- else
- decision = 2;
- }
- else {
- if (sample < -2.0)
- decision = 0;
- else
- decision = 1;
- }
-
- return decision;
-}
-
-int pager_slicer_fb::work(int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- float *iptr = (float *) input_items[0];
- unsigned char *optr = (unsigned char *) output_items[0];
-
- int size = noutput_items;
-
- for (int i = 0; i < size; i++)
- *optr++ = slice(*iptr++);
-
- return noutput_items;
-}
diff --git a/gr-pager/lib/pager_slicer_fb.h b/gr-pager/lib/pager_slicer_fb.h
deleted file mode 100644
index cbbf9cd22..000000000
--- a/gr-pager/lib/pager_slicer_fb.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2006,2007 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_PAGER_SLICER_FB_H
-#define INCLUDED_PAGER_SLICER_FB_H
-
-#include <pager_api.h>
-#include <gr_sync_block.h>
-
-class pager_slicer_fb;
-typedef boost::shared_ptr<pager_slicer_fb> pager_slicer_fb_sptr;
-
-PAGER_API pager_slicer_fb_sptr pager_make_slicer_fb(float alpha);
-
-/*!
- * \brief slicer description
- * \ingroup pager_blk
- */
-class PAGER_API pager_slicer_fb : public gr_sync_block
-{
-private:
- friend PAGER_API pager_slicer_fb_sptr pager_make_slicer_fb(float alpha);
- pager_slicer_fb(float alpha);
-
- unsigned char slice(float sample);
-
- float d_alpha; // DC removal time constant
- float d_beta; // 1.0-d_alpha
- float d_avg; // Average value for DC offset subtraction
-
-public:
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
- float dc_offset() const { return d_avg; }
-};
-
-#endif /* INCLUDED_PAGER_SLICER_FB_H */
diff --git a/gr-pager/lib/pageri_bch3221.cc b/gr-pager/lib/pageri_bch3221.cc
deleted file mode 100644
index 9c6dd8148..000000000
--- a/gr-pager/lib/pageri_bch3221.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pageri_bch3221.h>
-
-// Corrects supplied data word according to BCH3221 encoding and
-// returns the number of errors detected/corrected.
-//
-// Not implemented yet
-
-int pageri_bch3221(gr_int32 &data)
-{
- return 0;
-}
diff --git a/gr-pager/lib/pageri_bch3221.h b/gr-pager/lib/pageri_bch3221.h
deleted file mode 100644
index 54227e438..000000000
--- a/gr-pager/lib/pageri_bch3221.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_PAGERI_BCH3221_H
-#define INCLUDED_PAGERI_BCH3221_H
-
-#include <gr_types.h>
-
-// Perform BCH (32,21) error correction on supplied data
-// Return number of errors found/corrected (0, 1, or 2)
-int pageri_bch3221(gr_int32 &data);
-
-#endif /* INCLUDED_PAGERI_BCH3221_H */
diff --git a/gr-pager/lib/pageri_flex_modes.cc b/gr-pager/lib/pageri_flex_modes.cc
deleted file mode 100644
index ad424fda1..000000000
--- a/gr-pager/lib/pageri_flex_modes.cc
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2006,2007 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "pageri_flex_modes.h"
-
-const flex_mode_t flex_modes[] =
-{
- { 0x870C78F3, 1600, 2 },
- { 0xB0684F97, 1600, 4 },
-// { 0xUNKNOWN, 3200, 2 },
- { 0xDEA0215F, 3200, 4 },
- { 0x4C7CB383, 3200, 4 }
-};
-
-const int num_flex_modes = sizeof(flex_modes)/sizeof(flex_modes[0]);
-
-unsigned char flex_bcd[17] = "0123456789 U -][";
-
-const char *flex_page_desc[] =
-{
- "ENC",
- "UNK",
- "TON",
- "NUM",
- "SPN",
- "ALN",
- "BIN",
- "NNM"
-};
-
-int find_flex_mode(gr_int32 sync_code)
-{
- for (int i = 0; i < num_flex_modes; i++)
- if (flex_modes[i].sync == sync_code)
- return i;
-
- // Not found
- return -1;
-}
diff --git a/gr-pager/lib/pageri_flex_modes.h b/gr-pager/lib/pageri_flex_modes.h
deleted file mode 100644
index 6d81613d7..000000000
--- a/gr-pager/lib/pageri_flex_modes.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2006,2007 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_PAGERI_FLEX_MODES_H
-#define INCLUDED_PAGERI_FLEX_MODES_H
-
-#include <gr_types.h>
-
-#define FLEX_SYNC_MARKER 0xA6C6AAAA
-
-typedef struct flex_mode
-{
- gr_int32 sync; // Outer synchronization code
- unsigned int baud; // Baudrate of SYNC2 and DATA
- unsigned int levels; // FSK encoding of SYNC2 and DATA
-}
-flex_mode_t;
-
-extern const flex_mode_t flex_modes[];
-extern const char *flex_page_desc[];
-extern const int num_flex_modes;
-int find_flex_mode(gr_int32 sync_code);
-extern unsigned char flex_bcd[];
-
-typedef enum {
- FLEX_SECURE,
- FLEX_UNKNOWN,
- FLEX_TONE,
- FLEX_STANDARD_NUMERIC,
- FLEX_SPECIAL_NUMERIC,
- FLEX_ALPHANUMERIC,
- FLEX_BINARY,
- FLEX_NUMBERED_NUMERIC,
- NUM_FLEX_PAGE_TYPES
-}
-page_type_t;
-
-inline bool is_alphanumeric_page(page_type_t type)
-{
- return (type == FLEX_ALPHANUMERIC ||
- type == FLEX_SECURE);
-}
-
-inline bool is_numeric_page(page_type_t type)
-{
- return (type == FLEX_STANDARD_NUMERIC ||
- type == FLEX_SPECIAL_NUMERIC ||
- type == FLEX_NUMBERED_NUMERIC);
-}
-
-inline bool is_tone_page(page_type_t type)
-{
- return (type == FLEX_TONE);
-}
-
-#endif // INCLUDED_PAGERI_FLEX_MODES_H
diff --git a/gr-pager/lib/pageri_util.cc b/gr-pager/lib/pageri_util.cc
deleted file mode 100644
index 7fa85e6ed..000000000
--- a/gr-pager/lib/pageri_util.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pageri_util.h>
-
-unsigned char pageri_reverse_bits8(unsigned char val)
-{
- // This method was attributed to Rich Schroeppel in the Programming
- // Hacks section of Beeler, M., Gosper, R. W., and Schroeppel, R.
- // HAKMEM. MIT AI Memo 239, Feb. 29, 1972.
- //
- // Reverses 8 bits in 5 machine operations with 64 bit arch
- return (val * 0x0202020202ULL & 0x010884422010ULL) % 1023;
-}
-
-gr_int32 pageri_reverse_bits32(gr_int32 val)
-{
- gr_int32 out = 0x00000000;
- out |= (pageri_reverse_bits8((val >> 24) & 0x000000FF) );
- out |= (pageri_reverse_bits8((val >> 16) & 0x000000FF) << 8);
- out |= (pageri_reverse_bits8((val >> 8) & 0x000000FF) << 16);
- out |= (pageri_reverse_bits8((val ) & 0x000000FF) << 24);
- return out;
-}
diff --git a/gr-pager/lib/pageri_util.h b/gr-pager/lib/pageri_util.h
deleted file mode 100644
index b90cddcce..000000000
--- a/gr-pager/lib/pageri_util.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_PAGERI_UTIL_H
-#define INCLUDED_PAGERI_UTIL_H
-
-#include <gr_types.h>
-
-unsigned char pageri_reverse_bits8(unsigned char val);
-gr_int32 pageri_reverse_bits32(gr_int32 val);
-
-#endif /* INCLUDED_PAGERI_UTIL_H */
diff --git a/gr-pager/python/CMakeLists.txt b/gr-pager/python/CMakeLists.txt
deleted file mode 100644
index 30ac0364d..000000000
--- a/gr-pager/python/CMakeLists.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2011-2012 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-########################################################################
-include(GrPython)
-
-GR_PYTHON_INSTALL(
- FILES
- __init__.py
- pager_utils.py
- flex_demod.py
- DESTINATION ${GR_PYTHON_DIR}/gnuradio/pager
- COMPONENT "pager_python"
-)
-
-########################################################################
-# Handle the unit tests
-########################################################################
-if(ENABLE_TESTING)
-
-list(APPEND GR_TEST_PYTHON_DIRS
- ${CMAKE_BINARY_DIR}/gr-pager/python
- ${CMAKE_BINARY_DIR}/gr-pager/swig
-)
-list(APPEND GR_TEST_TARGET_DEPS gnuradio-pager)
-
-include(GrTest)
-file(GLOB py_qa_test_files "qa_*.py")
-foreach(py_qa_test_file ${py_qa_test_files})
- get_filename_component(py_qa_test_name ${py_qa_test_file} NAME_WE)
- GR_ADD_TEST(${py_qa_test_name} ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${py_qa_test_file})
-endforeach(py_qa_test_file)
-endif(ENABLE_TESTING)
diff --git a/gr-pager/python/__init__.py b/gr-pager/python/__init__.py
deleted file mode 100644
index c395d4e45..000000000
--- a/gr-pager/python/__init__.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Copyright 2006 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-# The presence of this file turns this directory into a Python package
-
-'''
-The GNU Radio pager application.
-'''
-
-from pager_swig import *
-from flex_demod import flex_demod
-from pager_utils import *
diff --git a/gr-pager/python/flex_demod.py b/gr-pager/python/flex_demod.py
deleted file mode 100644
index 4146695f8..000000000
--- a/gr-pager/python/flex_demod.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# Copyright 2006,2007 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gru, optfir, blks2
-from math import pi
-import pager_swig
-
-class flex_demod(gr.hier_block2):
- """
- FLEX pager protocol demodulation block.
-
- This block demodulates a band-limited, complex down-converted baseband
- channel into FLEX protocol frames.
-
- """
-
- def __init__(self, queue, freq=0.0, verbose=False, log=False):
- gr.hier_block2.__init__(self, "flex_demod",
- gr.io_signature(1, 1, gr.sizeof_gr_complex),
- gr.io_signature(0,0,0))
-
- k = 25000/(2*pi*1600) # 4800 Hz max deviation
- quad = gr.quadrature_demod_cf(k)
- self.connect(self, quad)
-
- rsamp = blks2.rational_resampler_fff(16, 25)
- self.slicer = pager_swig.slicer_fb(5e-6) # DC removal averaging filter constant
- self.sync = pager_swig.flex_sync()
-
- self.connect(quad, rsamp, self.slicer, self.sync)
-
- for i in range(4):
- self.connect((self.sync, i), pager_swig.flex_deinterleave(), pager_swig.flex_parse(queue, freq))
-
- if log:
- suffix = '_'+ "%3.3f" % (freq/1e6,) + '.dat'
- quad_sink = gr.file_sink(gr.sizeof_float, 'quad'+suffix)
- rsamp_sink = gr.file_sink(gr.sizeof_float, 'rsamp'+suffix)
- slicer_sink = gr.file_sink(gr.sizeof_char, 'slicer'+suffix)
- self.connect(rsamp, rsamp_sink)
- self.connect(quad, quad_sink)
- self.connect(self.slicer, slicer_sink)
-
- def dc_offset(self):
- return self.slicer.dc_offset()
diff --git a/gr-pager/python/pager_utils.py b/gr-pager/python/pager_utils.py
deleted file mode 100644
index e935c86d4..000000000
--- a/gr-pager/python/pager_utils.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# Copyright 2008,2009 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-
-from gnuradio import gr
-import gnuradio.gr.gr_threading as _threading
-from string import split, join, printable
-import time
-
-def make_trans_table():
- table = 256 * ['.']
- for i in range(256):
- if (i < 32):
- table[i] = '.'
- else:
- table[i] = chr(i)
- return ''.join(table)
-
-_trans_table = make_trans_table()
-
-def make_printable(s):
- return s.translate(_trans_table)
-
-
-class queue_runner(_threading.Thread):
- def __init__(self, msgq):
- _threading.Thread.__init__(self)
- self.msgq = msgq
- self.done = False
- self.start()
-
- def run(self):
- while 1:
- msg = self.msgq.delete_head() # Blocking read
- if msg.type() != 0:
- break
-
- page = join(split(msg.to_string(), chr(128)), '|')
- s = make_printable(page)
- print msg.type(), s
-
- def end(self):
- self.msgq.insert_tail(gr.message(1))
- self.done = True
diff --git a/gr-pager/python/qa_pager.py b/gr-pager/python/qa_pager.py
deleted file mode 100755
index 87f0d0026..000000000
--- a/gr-pager/python/qa_pager.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2004,2006,2010 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-import pager_swig
-
-class test_pager(gr_unittest.TestCase):
-
- def setUp (self):
- self.tb = gr.top_block ()
-
- def tearDown (self):
- self.tb = None
-
-if __name__ == '__main__':
- gr_unittest.run(test_pager, "test_pager.xml")
diff --git a/gr-pager/swig/CMakeLists.txt b/gr-pager/swig/CMakeLists.txt
deleted file mode 100644
index c98369a36..000000000
--- a/gr-pager/swig/CMakeLists.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-########################################################################
-# Setup swig generation
-########################################################################
-include(GrPython)
-include(GrSwig)
-
-set(GR_SWIG_INCLUDE_DIRS
- ${GR_PAGER_INCLUDE_DIRS}
- ${GNURADIO_CORE_SWIG_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
- ${Boost_INCLUDE_DIRS}
-)
-
-set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/pager_swig_doc.i)
-set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../lib)
-
-set(GR_SWIG_LIBRARIES gnuradio-pager)
-
-GR_SWIG_MAKE(pager_swig pager_swig.i)
-
-GR_SWIG_INSTALL(
- TARGETS pager_swig
- DESTINATION ${GR_PYTHON_DIR}/gnuradio/pager
- COMPONENT "pager_python"
-)
-
-install(
- FILES
- pager_swig.i
- pager_flex_deinterleave.i
- pager_flex_frame.i
- pager_flex_parse.i
- pager_flex_sync.i
- pager_slicer_fb.i
- ${CMAKE_CURRENT_BINARY_DIR}/pager_swig_doc.i
- DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
- COMPONENT "pager_swig"
-)
diff --git a/gr-pager/swig/gnuradio/pager.scm b/gr-pager/swig/gnuradio/pager.scm
deleted file mode 100644
index 99331b09c..000000000
--- a/gr-pager/swig/gnuradio/pager.scm
+++ /dev/null
@@ -1,28 +0,0 @@
-;;;
-;;; Copyright 2010 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Radio
-;;;
-;;; GNU Radio is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Radio is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-;;;
-
-;;; Module that just re-exports the pager_swig module
-
-(define-module (gnuradio pager)
- #:use-module (gnuradio export-safely)
- #:use-module (gnuradio pager_swig)
- #:duplicates (merge-generics replace check))
-
-(re-export-all '(gnuradio pager_swig))
-
diff --git a/gr-pager/swig/pager_flex_deinterleave.i b/gr-pager/swig/pager_flex_deinterleave.i
deleted file mode 100644
index f34951a8a..000000000
--- a/gr-pager/swig/pager_flex_deinterleave.i
+++ /dev/null
@@ -1,11 +0,0 @@
-GR_SWIG_BLOCK_MAGIC(pager,flex_deinterleave);
-
-pager_flex_deinterleave_sptr pager_make_flex_deinterleave();
-
-class pager_flex_deinterleave : public gr_sync_decimator
-{
-private:
- pager_flex_deinterleave();
-
-public:
-};
diff --git a/gr-pager/swig/pager_flex_frame.i b/gr-pager/swig/pager_flex_frame.i
deleted file mode 100644
index 0ea996500..000000000
--- a/gr-pager/swig/pager_flex_frame.i
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-class pager_flex_frame;
-typedef boost::shared_ptr<pager_flex_frame> pager_flex_frame_sptr;
-%template(pager_flex_frame_sptr) boost::shared_ptr<pager_flex_frame>;
-
-%rename(flex_frame) pager_make_flex_frame;
-pager_flex_frame_sptr pager_make_flex_frame();
-
-/*!
- * \brief flex_frame.
- */
-class pager_flex_frame {
- pager_flex_frame();
-
-public:
-};
-
diff --git a/gr-pager/swig/pager_flex_parse.i b/gr-pager/swig/pager_flex_parse.i
deleted file mode 100644
index 21e0245cb..000000000
--- a/gr-pager/swig/pager_flex_parse.i
+++ /dev/null
@@ -1,11 +0,0 @@
-GR_SWIG_BLOCK_MAGIC(pager,flex_parse);
-
-pager_flex_parse_sptr pager_make_flex_parse(gr_msg_queue_sptr queue, float freq);
-
-class pager_flex_parse : public gr_block
-{
-private:
- pager_flex_parse(gr_msg_queue_sptr queue, float freq);
-
-public:
-};
diff --git a/gr-pager/swig/pager_flex_sync.i b/gr-pager/swig/pager_flex_sync.i
deleted file mode 100644
index 49823db06..000000000
--- a/gr-pager/swig/pager_flex_sync.i
+++ /dev/null
@@ -1,11 +0,0 @@
-GR_SWIG_BLOCK_MAGIC(pager,flex_sync);
-
-pager_flex_sync_sptr pager_make_flex_sync();
-
-class pager_flex_sync : public gr_block
-{
-private:
- pager_flex_sync();
-
-public:
-};
diff --git a/gr-pager/swig/pager_slicer_fb.i b/gr-pager/swig/pager_slicer_fb.i
deleted file mode 100644
index 4ffb5b73b..000000000
--- a/gr-pager/swig/pager_slicer_fb.i
+++ /dev/null
@@ -1,12 +0,0 @@
-GR_SWIG_BLOCK_MAGIC(pager,slicer_fb);
-
-pager_slicer_fb_sptr pager_make_slicer_fb(float alpha);
-
-class pager_slicer_fb : public gr_sync_block
-{
-private:
- pager_slicer_fb(float alpha);
-
-public:
- float dc_offset() const { return d_avg; }
-};
diff --git a/gr-pager/swig/pager_swig.i b/gr-pager/swig/pager_swig.i
deleted file mode 100644
index 04f804157..000000000
--- a/gr-pager/swig/pager_swig.i
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2005,2006,2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-%include "gnuradio.i"
-
-//load generated python docstrings
-%include "pager_swig_doc.i"
-
-%{
-#include "pager_flex_frame.h"
-#include "pager_slicer_fb.h"
-#include "pager_flex_sync.h"
-#include "pager_flex_deinterleave.h"
-#include "pager_flex_parse.h"
-%}
-
-%include "pager_flex_frame.i"
-%include "pager_slicer_fb.i"
-%include "pager_flex_sync.i"
-%include "pager_flex_deinterleave.i"
-%include "pager_flex_parse.i"