diff options
Diffstat (limited to 'gr-pager')
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" |