diff options
Diffstat (limited to 'gr-pager')
45 files changed, 0 insertions, 6431 deletions
diff --git a/gr-pager/CMakeLists.txt b/gr-pager/CMakeLists.txt deleted file mode 100644 index 3054214a64..0000000000 --- a/gr-pager/CMakeLists.txt +++ /dev/null @@ -1,112 +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_GNURADIO_RUNTIME - ENABLE_GR_FILTER - ENABLE_GR_ANALOG -) - -GR_SET_GLOBAL(GR_PAGER_INCLUDE_DIRS - ${CMAKE_CURRENT_SOURCE_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR}/include -) - -GR_SET_GLOBAL(GR_PAGER_SWIG_INCLUDE_DIRS - ${CMAKE_CURRENT_SOURCE_DIR}/swig -) - -SET(GR_PKG_PAGER_EXAMPLES_DIR ${GR_PKG_DATA_DIR}/examples/pager) - -######################################################################## -# 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 "runtime_runtime" -) - -CPACK_COMPONENT("pager_devel" - GROUP "Pager" - DISPLAY_NAME "Development" - DESCRIPTION "C++ headers, package config, import libraries" - DEPENDS "runtime_devel" -) - -CPACK_COMPONENT("pager_python" - GROUP "Pager" - DISPLAY_NAME "Python" - DESCRIPTION "Python modules for runtime; GRC xml files" - DEPENDS "runtime_python;pager_runtime" -) - -CPACK_COMPONENT("pager_swig" - GROUP "Pager" - DISPLAY_NAME "SWIG" - DESCRIPTION "SWIG development .i files" - DEPENDS "runtime_swig;pager_python;pager_devel" -) - -######################################################################## -# Add subdirectories -######################################################################## -add_subdirectory(include/gnuradio/pager) -add_subdirectory(lib) -if(ENABLE_PYTHON) - add_subdirectory(python/pager) - 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 441fee0b43..0000000000 --- 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 a02cad56ef..0000000000 --- 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 94a13e51b4..0000000000 --- a/gr-pager/apps/usrp_flex +++ /dev/null @@ -1,164 +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, eng_notation, pager -from gnuradio import filter -from gnuradio.filter import optfir -from gnuradio import blocks -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 = blocks.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 = blocks.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 = filter.freq_xlating_fir_filter_ccf(10, # Decimation rate - taps, # Filter taps - 0.0, # Offset frequency - 250e3) # Sample rate - - if options.log: - chan_sink = blocks.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 4d950866f0..0000000000 --- a/gr-pager/apps/usrp_flex_all +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2006,2007,2009,2013 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, uhd, eng_notation, pager -from gnuradio import blocks -from gnuradio import filter -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 = blocks.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 = filter.firdes.low_pass(1.0, - 1.0, - 1.0/self.nchan*0.4, - 1.0/self.nchan*0.1, - filter.firdes.WIN_HANN) - - if options.verbose: - print "Channel filter has", len(taps), "taps" - - self.bank = filter.analysis_filterbank(self.nchan, taps) - self.connect(self.u, self.bank) - - if options.log and options.from_file == None: - src_sink = blocks.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), blocks.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), blocks.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 3a24d6cd52..0000000000 --- a/gr-pager/apps/usrp_flex_band +++ /dev/null @@ -1,144 +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, uhd, eng_notation, pager -from gnuradio import blocks -from gnuradio import filter -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 = blocks.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 = filter.firdes.low_pass(1.0, - 1.0, - 1.0/40.0*0.4, - 1.0/40.0*0.1, - filter.firdes.WIN_HANN) - - if options.verbose: - print "Channel filter has", len(taps), "taps" - - bank = filter.analysis_filterbank(40, taps) - self.connect(self.u, bank) - - if options.log and options.from_file == None: - src_sink = blocks.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), blocks.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 e806f0df9d..0000000000 --- a/gr-pager/apps/usrp_rx_flex.grc +++ /dev/null @@ -1,2840 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Sat Jul 12 11:24:07 2014</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>max_nouts</key> - <value>0</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>alias</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>bb_decim</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>8</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(1027, 864)</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>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(938, 862)</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>alias</key> - <value></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>nchan_taps</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>len(channel_taps)</value> - </param> - <param> - <key>alias</key> - <value></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>baseband_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>16000</value> - </param> - <param> - <key>alias</key> - <value></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>channel_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>8*3200</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(792, 13)</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>alias</key> - <value></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>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>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(9, 133)</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>alias</key> - <value></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>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>alias</key> - <value></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>deviation</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>4800</value> - </param> - <param> - <key>alias</key> - <value></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>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>alias</key> - <value></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>symbol_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>3200</value> - </param> - <param> - <key>alias</key> - <value></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>decim</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>20</value> - </param> - <param> - <key>alias</key> - <value></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>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>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(480, 11)</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>alias</key> - <value></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>adc_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>64e6</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(225, 12)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>notebook</key> - <param> - <key>id</key> - <value>displays</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>style</key> - <value>wx.NB_TOP</value> - </param> - <param> - <key>labels</key> - <value>['RX 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>alias</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>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 76)</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>alias</key> - <value></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>alias</key> - <value></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>alias</key> - <value></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>alias</key> - <value></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>alias</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>alias</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_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>alias</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>alias</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>alias</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(518, 118)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>virtual_source</key> - <param> - <key>id</key> - <value>virtual_source_0</value> - </param> - <param> - <key>_enabled</key> - <value>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>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</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>trig_mode</key> - <value>wxgui.TRIG_MODE_AUTO</value> - </param> - <param> - <key>y_axis_label</key> - <value>Counts</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(75, 1044)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>blocks_char_to_float</key> - <param> - <key>id</key> - <value>blocks_char_to_float_0</value> - </param> - <param> - <key>_enabled</key> - <value>False</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>scale</key> - <value>1</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</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>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</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>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(777, 1116)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blocks_null_sink</key> - <param> - <key>id</key> - <value>blocks_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>num_inputs</key> - <value>1</value> - </param> - <param> - <key>bus_conns</key> - <value>[[0,],]</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></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>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</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>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</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>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(776, 1273)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blocks_null_sink</key> - <param> - <key>id</key> - <value>blocks_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>num_inputs</key> - <value>1</value> - </param> - <param> - <key>bus_conns</key> - <value>[[0,],]</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(1042, 1168)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blocks_null_sink</key> - <param> - <key>id</key> - <value>blocks_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>num_inputs</key> - <value>1</value> - </param> - <param> - <key>bus_conns</key> - <value>[[0,],]</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(1041, 1225)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blocks_null_sink</key> - <param> - <key>id</key> - <value>blocks_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>num_inputs</key> - <value>1</value> - </param> - <param> - <key>bus_conns</key> - <value>[[0,],]</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(1040, 1273)</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>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>trig_mode</key> - <value>wxgui.TRIG_MODE_AUTO</value> - </param> - <param> - <key>y_axis_label</key> - <value>Counts</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(851, 586)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>rational_resampler_xxx</key> - <param> - <key>id</key> - <value>rational_resampler_xxx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>fff</value> - </param> - <param> - <key>interp</key> - <value>bb_decim</value> - </param> - <param> - <key>decim</key> - <value>bb_interp</value> - </param> - <param> - <key>taps</key> - <value>[1.0/ma_ntaps,]*ma_ntaps*bb_interp</value> - </param> - <param> - <key>fbw</key> - <value>0</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(831, 750)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>analog_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>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(599, 774)</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>freqvar</key> - <value>None</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(344, 511)</value> - </param> - <param> - <key>_rotation</key> - <value>180</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>freqvar</key> - <value>None</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(34, 508)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>freq_xlating_fir_filter_xxx</key> - <param> - <key>id</key> - <value>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>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(339, 741)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>uhd_usrp_source</key> - <param> - <key>id</key> - <value>uhd_usrp_source_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>fc32</value> - </param> - <param> - <key>otw</key> - <value>sc16</value> - </param> - <param> - <key>stream_args</key> - <value></value> - </param> - <param> - <key>stream_chans</key> - <value>[]</value> - </param> - <param> - <key>dev_addr</key> - <value>""</value> - </param> - <param> - <key>dev_args</key> - <value>""</value> - </param> - <param> - <key>sync</key> - <value></value> - </param> - <param> - <key>clock_rate</key> - <value>0.0</value> - </param> - <param> - <key>num_mboards</key> - <value>1</value> - </param> - <param> - <key>clock_source0</key> - <value></value> - </param> - <param> - <key>time_source0</key> - <value></value> - </param> - <param> - <key>sd_spec0</key> - <value></value> - </param> - <param> - <key>clock_source1</key> - <value></value> - </param> - <param> - <key>time_source1</key> - <value></value> - </param> - <param> - <key>sd_spec1</key> - <value></value> - </param> - <param> - <key>clock_source2</key> - <value></value> - </param> - <param> - <key>time_source2</key> - <value></value> - </param> - <param> - <key>sd_spec2</key> - <value></value> - </param> - <param> - <key>clock_source3</key> - <value></value> - </param> - <param> - <key>time_source3</key> - <value></value> - </param> - <param> - <key>sd_spec3</key> - <value></value> - </param> - <param> - <key>clock_source4</key> - <value></value> - </param> - <param> - <key>time_source4</key> - <value></value> - </param> - <param> - <key>sd_spec4</key> - <value></value> - </param> - <param> - <key>clock_source5</key> - <value></value> - </param> - <param> - <key>time_source5</key> - <value></value> - </param> - <param> - <key>sd_spec5</key> - <value></value> - </param> - <param> - <key>clock_source6</key> - <value></value> - </param> - <param> - <key>time_source6</key> - <value></value> - </param> - <param> - <key>sd_spec6</key> - <value></value> - </param> - <param> - <key>clock_source7</key> - <value></value> - </param> - <param> - <key>time_source7</key> - <value></value> - </param> - <param> - <key>sd_spec7</key> - <value></value> - </param> - <param> - <key>nchan</key> - <value>1</value> - </param> - <param> - <key>samp_rate</key> - <value>sample_rate</value> - </param> - <param> - <key>center_freq0</key> - <value>band_freq</value> - </param> - <param> - <key>gain0</key> - <value>rx_gain</value> - </param> - <param> - <key>ant0</key> - <value>RX2</value> - </param> - <param> - <key>bw0</key> - <value>0</value> - </param> - <param> - <key>center_freq1</key> - <value>0</value> - </param> - <param> - <key>gain1</key> - <value>0</value> - </param> - <param> - <key>ant1</key> - <value></value> - </param> - <param> - <key>bw1</key> - <value>0</value> - </param> - <param> - <key>center_freq2</key> - <value>0</value> - </param> - <param> - <key>gain2</key> - <value>0</value> - </param> - <param> - <key>ant2</key> - <value></value> - </param> - <param> - <key>bw2</key> - <value>0</value> - </param> - <param> - <key>center_freq3</key> - <value>0</value> - </param> - <param> - <key>gain3</key> - <value>0</value> - </param> - <param> - <key>ant3</key> - <value></value> - </param> - <param> - <key>bw3</key> - <value>0</value> - </param> - <param> - <key>center_freq4</key> - <value>0</value> - </param> - <param> - <key>gain4</key> - <value>0</value> - </param> - <param> - <key>ant4</key> - <value></value> - </param> - <param> - <key>bw4</key> - <value>0</value> - </param> - <param> - <key>center_freq5</key> - <value>0</value> - </param> - <param> - <key>gain5</key> - <value>0</value> - </param> - <param> - <key>ant5</key> - <value></value> - </param> - <param> - <key>bw5</key> - <value>0</value> - </param> - <param> - <key>center_freq6</key> - <value>0</value> - </param> - <param> - <key>gain6</key> - <value>0</value> - </param> - <param> - <key>ant6</key> - <value></value> - </param> - <param> - <key>bw6</key> - <value>0</value> - </param> - <param> - <key>center_freq7</key> - <value>0</value> - </param> - <param> - <key>gain7</key> - <value>0</value> - </param> - <param> - <key>ant7</key> - <value></value> - </param> - <param> - <key>bw7</key> - <value>0</value> - </param> - <param> - <key>center_freq8</key> - <value>0</value> - </param> - <param> - <key>gain8</key> - <value>0</value> - </param> - <param> - <key>ant8</key> - <value></value> - </param> - <param> - <key>bw8</key> - <value>0</value> - </param> - <param> - <key>center_freq9</key> - <value>0</value> - </param> - <param> - <key>gain9</key> - <value>0</value> - </param> - <param> - <key>ant9</key> - <value></value> - </param> - <param> - <key>bw9</key> - <value>0</value> - </param> - <param> - <key>center_freq10</key> - <value>0</value> - </param> - <param> - <key>gain10</key> - <value>0</value> - </param> - <param> - <key>ant10</key> - <value></value> - </param> - <param> - <key>bw10</key> - <value>0</value> - </param> - <param> - <key>center_freq11</key> - <value>0</value> - </param> - <param> - <key>gain11</key> - <value>0</value> - </param> - <param> - <key>ant11</key> - <value></value> - </param> - <param> - <key>bw11</key> - <value>0</value> - </param> - <param> - <key>center_freq12</key> - <value>0</value> - </param> - <param> - <key>gain12</key> - <value>0</value> - </param> - <param> - <key>ant12</key> - <value></value> - </param> - <param> - <key>bw12</key> - <value>0</value> - </param> - <param> - <key>center_freq13</key> - <value>0</value> - </param> - <param> - <key>gain13</key> - <value>0</value> - </param> - <param> - <key>ant13</key> - <value></value> - </param> - <param> - <key>bw13</key> - <value>0</value> - </param> - <param> - <key>center_freq14</key> - <value>0</value> - </param> - <param> - <key>gain14</key> - <value>0</value> - </param> - <param> - <key>ant14</key> - <value></value> - </param> - <param> - <key>bw14</key> - <value>0</value> - </param> - <param> - <key>center_freq15</key> - <value>0</value> - </param> - <param> - <key>gain15</key> - <value>0</value> - </param> - <param> - <key>ant15</key> - <value></value> - </param> - <param> - <key>bw15</key> - <value>0</value> - </param> - <param> - <key>center_freq16</key> - <value>0</value> - </param> - <param> - <key>gain16</key> - <value>0</value> - </param> - <param> - <key>ant16</key> - <value></value> - </param> - <param> - <key>bw16</key> - <value>0</value> - </param> - <param> - <key>center_freq17</key> - <value>0</value> - </param> - <param> - <key>gain17</key> - <value>0</value> - </param> - <param> - <key>ant17</key> - <value></value> - </param> - <param> - <key>bw17</key> - <value>0</value> - </param> - <param> - <key>center_freq18</key> - <value>0</value> - </param> - <param> - <key>gain18</key> - <value>0</value> - </param> - <param> - <key>ant18</key> - <value></value> - </param> - <param> - <key>bw18</key> - <value>0</value> - </param> - <param> - <key>center_freq19</key> - <value>0</value> - </param> - <param> - <key>gain19</key> - <value>0</value> - </param> - <param> - <key>ant19</key> - <value></value> - </param> - <param> - <key>bw19</key> - <value>0</value> - </param> - <param> - <key>center_freq20</key> - <value>0</value> - </param> - <param> - <key>gain20</key> - <value>0</value> - </param> - <param> - <key>ant20</key> - <value></value> - </param> - <param> - <key>bw20</key> - <value>0</value> - </param> - <param> - <key>center_freq21</key> - <value>0</value> - </param> - <param> - <key>gain21</key> - <value>0</value> - </param> - <param> - <key>ant21</key> - <value></value> - </param> - <param> - <key>bw21</key> - <value>0</value> - </param> - <param> - <key>center_freq22</key> - <value>0</value> - </param> - <param> - <key>gain22</key> - <value>0</value> - </param> - <param> - <key>ant22</key> - <value></value> - </param> - <param> - <key>bw22</key> - <value>0</value> - </param> - <param> - <key>center_freq23</key> - <value>0</value> - </param> - <param> - <key>gain23</key> - <value>0</value> - </param> - <param> - <key>ant23</key> - <value></value> - </param> - <param> - <key>bw23</key> - <value>0</value> - </param> - <param> - <key>center_freq24</key> - <value>0</value> - </param> - <param> - <key>gain24</key> - <value>0</value> - </param> - <param> - <key>ant24</key> - <value></value> - </param> - <param> - <key>bw24</key> - <value>0</value> - </param> - <param> - <key>center_freq25</key> - <value>0</value> - </param> - <param> - <key>gain25</key> - <value>0</value> - </param> - <param> - <key>ant25</key> - <value></value> - </param> - <param> - <key>bw25</key> - <value>0</value> - </param> - <param> - <key>center_freq26</key> - <value>0</value> - </param> - <param> - <key>gain26</key> - <value>0</value> - </param> - <param> - <key>ant26</key> - <value></value> - </param> - <param> - <key>bw26</key> - <value>0</value> - </param> - <param> - <key>center_freq27</key> - <value>0</value> - </param> - <param> - <key>gain27</key> - <value>0</value> - </param> - <param> - <key>ant27</key> - <value></value> - </param> - <param> - <key>bw27</key> - <value>0</value> - </param> - <param> - <key>center_freq28</key> - <value>0</value> - </param> - <param> - <key>gain28</key> - <value>0</value> - </param> - <param> - <key>ant28</key> - <value></value> - </param> - <param> - <key>bw28</key> - <value>0</value> - </param> - <param> - <key>center_freq29</key> - <value>0</value> - </param> - <param> - <key>gain29</key> - <value>0</value> - </param> - <param> - <key>ant29</key> - <value></value> - </param> - <param> - <key>bw29</key> - <value>0</value> - </param> - <param> - <key>center_freq30</key> - <value>0</value> - </param> - <param> - <key>gain30</key> - <value>0</value> - </param> - <param> - <key>ant30</key> - <value></value> - </param> - <param> - <key>bw30</key> - <value>0</value> - </param> - <param> - <key>center_freq31</key> - <value>0</value> - </param> - <param> - <key>gain31</key> - <value>0</value> - </param> - <param> - <key>ant31</key> - <value></value> - </param> - <param> - <key>bw31</key> - <value>0</value> - </param> - <param> - <key>alias</key> - <value></value> - </param> - <param> - <key>affinity</key> - <value></value> - </param> - <param> - <key>minoutbuf</key> - <value>0</value> - </param> - <param> - <key>maxoutbuf</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(20, 735)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <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>blocks_char_to_float_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blocks_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>blocks_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>blocks_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>blocks_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>blocks_null_sink_0_2</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>rational_resampler_xxx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>rational_resampler_xxx_0</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>rational_resampler_xxx_0</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>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>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>uhd_usrp_source_0</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>uhd_usrp_source_0</source_block_id> - <sink_block_id>freq_xlating_fir_filter_xxx_0</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 4de4ded9c4..0000000000 --- a/gr-pager/apps/usrp_rx_flex.py +++ /dev/null @@ -1,435 +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 eng_notation -from gnuradio import gr -from gnuradio import blocks -from gnuradio import filter -from gnuradio import pager -from gnuradio.eng_option import eng_option -from gnuradio.filter import window -from gnuradio.filter 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.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_int*1) - self.blocks_null_sink_0_0 = blocks.null_sink(gr.sizeof_int*1) - self.blocks_null_sink_0_1 = blocks.null_sink(gr.sizeof_int*1) - self.blocks_null_sink_0_2 = blocks.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 = filter.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.blocks_null_sink_0, 0)) - self.connect((self.pager_flex_deinterleave_0_1_0, 0), (self.blocks_null_sink_0_0, 0)) - self.connect((self.pager_flex_deinterleave_0_1, 0), (self.blocks_null_sink_0_1, 0)) - self.connect((self.pager_flex_deinterleave_0_0, 0), (self.blocks_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 42fce74536..0000000000 --- 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-runtime -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 c982995b0c..0000000000 --- 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 a006023212..0000000000 --- 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>[Core]/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 d37a4fb7a9..0000000000 --- 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>[Core]/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 f3e95e0748..0000000000 --- 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>[Core]/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/include/gnuradio/pager/CMakeLists.txt b/gr-pager/include/gnuradio/pager/CMakeLists.txt deleted file mode 100644 index 6577e7f4e6..0000000000 --- a/gr-pager/include/gnuradio/pager/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2012,2013 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 header files -######################################################################## -install(FILES - api.h - flex_frame.h - slicer_fb.h - flex_deinterleave.h - flex_parse.h - flex_sync.h - DESTINATION ${GR_INCLUDE_DIR}/gnuradio/pager - COMPONENT "pager_devel" -) diff --git a/gr-pager/include/gnuradio/pager/api.h b/gr-pager/include/gnuradio/pager/api.h deleted file mode 100644 index 3d76e6761a..0000000000 --- a/gr-pager/include/gnuradio/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 <gnuradio/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/include/gnuradio/pager/flex_deinterleave.h b/gr-pager/include/gnuradio/pager/flex_deinterleave.h deleted file mode 100644 index 224bc2900a..0000000000 --- a/gr-pager/include/gnuradio/pager/flex_deinterleave.h +++ /dev/null @@ -1,51 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifndef INCLUDED_PAGER_FLEX_DEINTERLEAVE_H -#define INCLUDED_PAGER_FLEX_DEINTERLEAVE_H - -#include <gnuradio/pager/api.h> -#include <gnuradio/sync_decimator.h> - -namespace gr { - namespace pager { - - /*! - * \brief flex deinterleave description - * \ingroup pager_blk - */ - class PAGER_API flex_deinterleave : virtual public sync_decimator - { - public: - // gr::pager::flex_deinterleave::sptr - typedef boost::shared_ptr<flex_deinterleave> sptr; - - /*! - * \brief Make flex deinterleaver - */ - static sptr make(); - }; - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_FLEX_DEINTERLEAVE_H */ diff --git a/gr-pager/include/gnuradio/pager/flex_frame.h b/gr-pager/include/gnuradio/pager/flex_frame.h deleted file mode 100644 index 6e19f41d40..0000000000 --- a/gr-pager/include/gnuradio/pager/flex_frame.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifndef INCLUDED_PAGER_FLEX_FRAME_H -#define INCLUDED_PAGER_FLEX_FRAME_H - -#include <gnuradio/pager/api.h> -#include <boost/shared_ptr.hpp> - -namespace gr { - namespace pager { - - /*! - * \brief flex_frame. - * \ingroup pager_blk - */ - class PAGER_API flex_frame - { - public: - // gr::pager::flex_frame::sptr - typedef boost::shared_ptr<flex_frame> sptr; - - static sptr make(); - }; - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_FLEX_FRAME_H */ diff --git a/gr-pager/include/gnuradio/pager/flex_parse.h b/gr-pager/include/gnuradio/pager/flex_parse.h deleted file mode 100644 index 42adaff6e0..0000000000 --- a/gr-pager/include/gnuradio/pager/flex_parse.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifndef INCLUDED_PAGER_FLEX_PARSE_H -#define INCLUDED_PAGER_FLEX_PARSE_H - -#include <gnuradio/pager/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/msg_queue.h> -#include <sstream> - -namespace gr { - namespace pager { - -#define FIELD_DELIM ((unsigned char)128) - - /*! - * \brief flex parse description - * \ingroup pager_blk - */ - class PAGER_API flex_parse : virtual public sync_block - { - public: - // gr::pager::flex_parse::sptr - typedef boost::shared_ptr<flex_parse> sptr; - - static sptr make(msg_queue::sptr queue, float freq); - }; - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_FLEX_PARSE_H */ diff --git a/gr-pager/include/gnuradio/pager/flex_sync.h b/gr-pager/include/gnuradio/pager/flex_sync.h deleted file mode 100644 index 54c3d827a2..0000000000 --- a/gr-pager/include/gnuradio/pager/flex_sync.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -*- c++ -*- */ -/* - * 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 <gnuradio/pager/api.h> -#include <gnuradio/block.h> - -namespace gr { - namespace pager { - - /*! - * \brief flex sync description - * \ingroup pager_blk - */ - class PAGER_API flex_sync : virtual public block - { - public: - // gr::pager::flex_sync::sptr - typedef boost::shared_ptr<flex_sync> sptr; - - static sptr make(); - - }; - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_FLEX_SYNC_H */ diff --git a/gr-pager/include/gnuradio/pager/slicer_fb.h b/gr-pager/include/gnuradio/pager/slicer_fb.h deleted file mode 100644 index 478c2b0e1e..0000000000 --- a/gr-pager/include/gnuradio/pager/slicer_fb.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2007,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. - */ - -#ifndef INCLUDED_PAGER_SLICER_FB_H -#define INCLUDED_PAGER_SLICER_FB_H - -#include <gnuradio/pager/api.h> -#include <gnuradio/sync_block.h> - -namespace gr { - namespace pager { - - /*! - * \brief slicer description - * \ingroup pager_blk - */ - class PAGER_API slicer_fb : virtual public sync_block - { - public: - // gr::pager::slicer_fb::sptr - typedef boost::shared_ptr<slicer_fb> sptr; - - /*! - * \brief Make a pager slicer - */ - static sptr make(float alpha); - - virtual float dc_offset() const = 0; - }; - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_SLICER_FB_H */ diff --git a/gr-pager/lib/CMakeLists.txt b/gr-pager/lib/CMakeLists.txt deleted file mode 100644 index 4a8c91c5ad..0000000000 --- a/gr-pager/lib/CMakeLists.txt +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright 2011,2013 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} - ${GR_BLOCKS_INCLUDE_DIRS} - ${GNURADIO_RUNTIME_INCLUDE_DIRS} - ${Boost_INCLUDE_DIRS} -) - -if(ENABLE_GR_CTRLPORT) - ADD_DEFINITIONS(-DGR_CTRLPORT) -endif(ENABLE_GR_CTRLPORT) - -link_directories(${Boost_LIBRARY_DIRS}) - -include_directories(${LOG4CPP_INCLUDE_DIRS}) -link_directories(${LOG4CPP_LIBRARY_DIRS}) - -######################################################################## -# Setup library -######################################################################## -list(APPEND pager_sources - flex_deinterleave_impl.cc - flex_frame_impl.cc - flex_parse_impl.cc - flex_sync_impl.cc - slicer_fb_impl.cc - bch3221.cc - flex_modes.cc - util.cc -) - -#Add Windows DLL resource file if using MSVC -if(MSVC) - include(${CMAKE_SOURCE_DIR}/cmake/Modules/GrVersion.cmake) - - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/gnuradio-pager.rc.in - ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-pager.rc - @ONLY) - - list(APPEND gr_pager_sources - ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-pager.rc - ) -endif(MSVC) - -list(APPEND pager_libs - gnuradio-runtime - gnuradio-blocks - ${Boost_LIBRARIES} - ${LOG4CPP_LIBRARIES} -) - -add_library(gnuradio-pager SHARED ${pager_sources}) -target_link_libraries(gnuradio-pager ${pager_libs}) -GR_LIBRARY_FOO(gnuradio-pager RUNTIME_COMPONENT "pager_runtime" DEVEL_COMPONENT "pager_devel") - -if(ENABLE_STATIC_LIBS) - if(ENABLE_GR_CTRLPORT) - # Remove GR_CTRLPORT set this target's definitions. - # Makes sure we don't try to use ControlPort stuff in source files - GET_DIRECTORY_PROPERTY(STATIC_DEFS COMPILE_DEFINITIONS) - list(REMOVE_ITEM STATIC_DEFS "GR_CTRLPORT") - SET_PROPERTY(DIRECTORY PROPERTY COMPILE_DEFINITIONS "${STATIC_DEFS}") - - # readd it to the target since we removed it from the directory-wide list. - SET_PROPERTY(TARGET gnuradio-pager APPEND PROPERTY COMPILE_DEFINITIONS "GR_CTRLPORT") - endif(ENABLE_GR_CTRLPORT) - - add_library(gnuradio-pager_static STATIC ${pager_sources}) - - if(NOT WIN32) - set_target_properties(gnuradio-pager_static - PROPERTIES OUTPUT_NAME gnuradio-pager) - endif(NOT WIN32) - - install(TARGETS gnuradio-pager_static - ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT "pager_devel" # .lib file - ) -endif(ENABLE_STATIC_LIBS) diff --git a/gr-pager/lib/bch3221.cc b/gr-pager/lib/bch3221.cc deleted file mode 100644 index 46722611a3..0000000000 --- a/gr-pager/lib/bch3221.cc +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "bch3221.h" - -namespace gr { - namespace pager { - - // Corrects supplied data word according to BCH3221 encoding and - // returns the number of errors detected/corrected. - // - // Not implemented yet - - int bch3221(int &data) - { - return 0; - } - - } /* namespace pager */ -} /* namespace gr */ diff --git a/gr-pager/lib/bch3221.h b/gr-pager/lib/bch3221.h deleted file mode 100644 index 24f39e39d7..0000000000 --- a/gr-pager/lib/bch3221.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifndef INCLUDED_PAGER_BCH3221_H -#define INCLUDED_PAGER_BCH3221_H - -namespace gr { - namespace pager { - - // Perform BCH (32,21) error correction on supplied data - // Return number of errors found/corrected (0, 1, or 2) - int bch3221(int &data); - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_BCH3221_H */ diff --git a/gr-pager/lib/flex_deinterleave_impl.cc b/gr-pager/lib/flex_deinterleave_impl.cc deleted file mode 100644 index 08ced37119..0000000000 --- a/gr-pager/lib/flex_deinterleave_impl.cc +++ /dev/null @@ -1,107 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2004,2006,2010,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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "flex_deinterleave_impl.h" -#include "bch3221.h" -#include "util.h" -#include <gnuradio/io_signature.h> - -namespace gr { - namespace pager { - - flex_deinterleave::sptr - flex_deinterleave::make() - { - return gnuradio::get_initial_sptr - (new flex_deinterleave_impl()); - } - - flex_deinterleave_impl::flex_deinterleave_impl() : - sync_decimator("flex_deinterleave", - io_signature::make(1, 1, sizeof(unsigned char)), - io_signature::make(1, 1, sizeof(int)), 32) - { - set_output_multiple(8); // One FLEX block at a time - } - - flex_deinterleave_impl::~flex_deinterleave_impl() - { - } - - int flex_deinterleave_impl::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]; - int *out = (int *)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++) { - int codeword = d_codewords[j]; - - // Apply BCH 32,21 error correction - // TODO: mark dataword when codeword fails ECC - bch3221(codeword); - - // Reverse bit order - codeword = reverse_bits32(codeword); - - // Mask off ECC then invert lower 21 bits - codeword = (codeword & 0x001FFFFF)^0x001FFFFF; - - *out++ = codeword; - } - - return j; - } - - } /* namespace pager */ -} /* namespace gr */ diff --git a/gr-pager/lib/flex_deinterleave_impl.h b/gr-pager/lib/flex_deinterleave_impl.h deleted file mode 100644 index 79aabf4320..0000000000 --- a/gr-pager/lib/flex_deinterleave_impl.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifndef INCLUDED_PAGER_FLEX_DEINTERLEAVE_IMPL_H -#define INCLUDED_PAGER_FLEX_DEINTERLEAVE_IMPL_H - -#include <gnuradio/pager/flex_deinterleave.h> -#include <gnuradio/sync_decimator.h> - -namespace gr { - namespace pager { - - /*! - * \brief flex deinterleave description - * \ingroup pager_blk - */ - class flex_deinterleave_impl : public flex_deinterleave - { - private: - // One FLEX block of deinterleaved data - int d_codewords[8]; - - public: - flex_deinterleave_impl(); - ~flex_deinterleave_impl(); - - int work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - }; - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_FLEX_DEINTERLEAVE_IMPL_H */ diff --git a/gr-pager/lib/flex_frame_impl.cc b/gr-pager/lib/flex_frame_impl.cc deleted file mode 100644 index 869a03c551..0000000000 --- a/gr-pager/lib/flex_frame_impl.cc +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "flex_frame_impl.h" - -namespace gr { - namespace pager { - - flex_frame::sptr - flex_frame::make() - { - return flex_frame::sptr - (new flex_frame_impl()); - } - - flex_frame_impl::flex_frame_impl() - { - } - - flex_frame_impl::~flex_frame_impl() - { - } - - } /* namespace pager */ -} /* namespace gr */ diff --git a/gr-pager/lib/flex_frame_impl.h b/gr-pager/lib/flex_frame_impl.h deleted file mode 100644 index e7d1139041..0000000000 --- a/gr-pager/lib/flex_frame_impl.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifndef INCLUDED_PAGER_FLEX_FRAME_IMPL_H -#define INCLUDED_PAGER_FLEX_FRAME_IMPL_H - -#include <gnuradio/pager/flex_frame.h> - -namespace gr { - namespace pager { - - class flex_frame_impl : public flex_frame - { - public: - flex_frame_impl(); - ~flex_frame_impl(); - }; - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_FLEX_FRAME_IMPL_H */ diff --git a/gr-pager/lib/flex_modes.cc b/gr-pager/lib/flex_modes.cc deleted file mode 100644 index 333883f11c..0000000000 --- a/gr-pager/lib/flex_modes.cc +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2007,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 "flex_modes.h" - -namespace gr { - namespace pager { - - const flex_mode_t - flex_modes[] = - { - { (int32_t) 0x870C78F3, 1600, 2 }, - { (int32_t) 0xB0684F97, 1600, 4 }, - { (int32_t) 0x7B1884E7, 3200, 2 }, - { (int32_t) 0xDEA0215F, 3200, 4 }, - { (int32_t) 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(int32_t sync_code) - { - for(int i = 0; i < num_flex_modes; i++) - if(flex_modes[i].sync == sync_code) - return i; - - // Not found - return -1; - } - - } /* namespace pager */ -} /* namespace gr */ diff --git a/gr-pager/lib/flex_modes.h b/gr-pager/lib/flex_modes.h deleted file mode 100644 index 9cb06fffb4..0000000000 --- a/gr-pager/lib/flex_modes.h +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2007,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. - */ - -#ifndef INCLUDED_PAGER_FLEX_MODES_H -#define INCLUDED_PAGER_FLEX_MODES_H - -#include <stdint.h> - -namespace gr { - namespace pager { - -#define FLEX_SYNC_MARKER 0xA6C6AAAA - - typedef struct flex_mode - { - int32_t 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(int32_t 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); - } - - } /* namespace pager */ -} /* namespace gr */ - -#endif // INCLUDED_PAGER_FLEX_MODES_H diff --git a/gr-pager/lib/flex_parse_impl.cc b/gr-pager/lib/flex_parse_impl.cc deleted file mode 100644 index 80123da229..0000000000 --- a/gr-pager/lib/flex_parse_impl.cc +++ /dev/null @@ -1,258 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2004,2006,2007,2010,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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "flex_parse_impl.h" -#include "bch3221.h" -#include <gnuradio/io_signature.h> -#include <ctype.h> -#include <iostream> -#include <iomanip> - -namespace gr { - namespace pager { - - flex_parse::sptr - flex_parse::make(msg_queue::sptr queue, float freq) - { - return gnuradio::get_initial_sptr - (new flex_parse_impl(queue, freq)); - } - - flex_parse_impl::flex_parse_impl(msg_queue::sptr queue, float freq) : - sync_block("flex_parse", - io_signature::make(1, 1, sizeof(int32_t)), - io_signature::make(0, 0, 0)), - d_queue(queue), - d_freq(freq) - { - d_count = 0; - } - - flex_parse_impl::~flex_parse_impl() - { - } - - int flex_parse_impl::work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) - { - const int32_t *in = (const int32_t *)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 - flex_parse_impl::parse_capcode(int aw1, int 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 - flex_parse_impl::parse_data() - { - // Block information word is the first data word in frame - int 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' - int 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); - - message::sptr msg = message::make_from_string(std::string(d_payload.str())); - d_queue->handle(msg); - } - } - - void - flex_parse_impl::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++) { - int 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 - flex_parse_impl::parse_numeric(int mw1, int mw2, int j) - { - // Get first dataword from message field or from second - // vector word if long address - int 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 - flex_parse_impl::parse_tone_only() - { - } - - void - flex_parse_impl::parse_unknown(int mw1, int mw2) - { - } - - } /* namespace pager */ -} /* namespace gr */ diff --git a/gr-pager/lib/flex_parse_impl.h b/gr-pager/lib/flex_parse_impl.h deleted file mode 100644 index f2e4236c56..0000000000 --- a/gr-pager/lib/flex_parse_impl.h +++ /dev/null @@ -1,70 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifndef INCLUDED_PAGER_FLEX_PARSE_IMPL_H -#define INCLUDED_PAGER_FLEX_PARSE_IMPL_H - -#include <gnuradio/pager/flex_parse.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/msg_queue.h> -#include "flex_modes.h" -#include <sstream> - -namespace gr { - namespace pager { - -#define FIELD_DELIM ((unsigned char)128) - - class flex_parse_impl : public flex_parse - { - private: - std::ostringstream d_payload; - msg_queue::sptr d_queue; // Destination for decoded pages - - int d_count; // Count of received codewords - int 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(int32_t aw1, int32_t 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: - flex_parse_impl(msg_queue::sptr queue, float freq); - ~flex_parse_impl(); - - int work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - }; - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_FLEX_PARSE_IMPL_H */ diff --git a/gr-pager/lib/flex_sync_impl.cc b/gr-pager/lib/flex_sync_impl.cc deleted file mode 100644 index 5124155d47..0000000000 --- a/gr-pager/lib/flex_sync_impl.cc +++ /dev/null @@ -1,365 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2004,2006,2010,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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "flex_sync_impl.h" -#include "flex_modes.h" -#include "bch3221.h" -#include "util.h" -#include <gnuradio/io_signature.h> -#include <gnuradio/blocks/count_bits.h> -#include <cstdio> - -namespace gr { - namespace pager { - - flex_sync::sptr - flex_sync::make() - { - return gnuradio::get_initial_sptr - (new flex_sync_impl()); - } - - // 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. - - flex_sync_impl::flex_sync_impl() : - block("flex_sync", - io_signature::make(1, 1, sizeof(unsigned char)), - io_signature::make(4, 4, sizeof(unsigned char))), - d_sync(10) // Fixed at 10 samples per baud (@ 1600 baud) - { - enter_idle(); - } - - flex_sync_impl::~flex_sync_impl() - { - } - - void - flex_sync_impl::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 - flex_sync_impl::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 - flex_sync_impl::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); - int64_t val = d_sync[d_index]; - int32_t marker = ((val & 0x0000FFFFFFFF0000ULL)) >> 16; - - if(gr::blocks::count_bits32(marker^FLEX_SYNC_MARKER) < 4) { - int32_t code = ((val & 0xFFFF000000000000ULL) >> 32) | - (val & 0x000000000000FFFFULL); - - for(int i = 0; i < num_flex_modes; i++) { - if(gr::blocks::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 - flex_sync_impl::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 - flex_sync_impl::enter_syncing() - { - d_start = d_index; - d_state = ST_SYNCING; - } - - void - flex_sync_impl::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 - flex_sync_impl::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 - flex_sync_impl::enter_data() - { - d_state = ST_DATA; - d_count = 0; - } - - void - flex_sync_impl::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 = reverse_bits8((d_fiw >> 24) & 0xF0); - - // Cycle is bits 27-24, reversed - d_cycle = reverse_bits8((d_fiw >> 20) & 0xF0); - - // Frame is bits 23-17, reversed - d_frame = 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 - flex_sync_impl::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 - flex_sync_impl::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 - 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; - } - - } /* namespace pager */ -} /* namespace gr */ diff --git a/gr-pager/lib/flex_sync_impl.h b/gr-pager/lib/flex_sync_impl.h deleted file mode 100644 index 9bc5111e7f..0000000000 --- a/gr-pager/lib/flex_sync_impl.h +++ /dev/null @@ -1,95 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifndef INCLUDED_PAGER_FLEX_SYNC_IMPL_H -#define INCLUDED_PAGER_FLEX_SYNC_IMPL_H - -#include <gnuradio/pager/flex_sync.h> - -namespace gr { - namespace pager { - - class flex_sync_impl : public flex_sync - { - private: - // 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 - - int 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; - - std::vector<int64_t> d_sync; // Trial synchronizers - - public: - flex_sync_impl(); - ~flex_sync_impl(); - - 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); - }; - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_FLEX_SYNC_IMPL_H */ diff --git a/gr-pager/lib/gnuradio-pager.rc.in b/gr-pager/lib/gnuradio-pager.rc.in deleted file mode 100644 index cf9d85b24f..0000000000 --- a/gr-pager/lib/gnuradio-pager.rc.in +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2013 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 <afxres.h> - -VS_VERSION_INFO VERSIONINFO - FILEVERSION @MAJOR_VERSION@,@API_COMPAT@,@RC_MINOR_VERSION@,@RC_MAINT_VERSION@ - PRODUCTVERSION @MAJOR_VERSION@,@API_COMPAT@,@RC_MINOR_VERSION@,@RC_MAINT_VERSION@ - FILEFLAGSMASK 0x3fL -#ifndef NDEBUG - FILEFLAGS 0x0L -#else - FILEFLAGS 0x1L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE VFT2_DRV_INSTALLABLE - BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "FileDescription", "gnuradio-pager" - VALUE "FileVersion", "@VERSION@" - VALUE "InternalName", "gnuradio-pager.dll" - VALUE "LegalCopyright", "Licensed under GPLv3 or any later version" - VALUE "OriginalFilename", "gnuradio-pager.dll" - VALUE "ProductName", "gnuradio-pager" - VALUE "ProductVersion", "@VERSION@" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END - END diff --git a/gr-pager/lib/slicer_fb_impl.cc b/gr-pager/lib/slicer_fb_impl.cc deleted file mode 100644 index 7d570ebc70..0000000000 --- a/gr-pager/lib/slicer_fb_impl.cc +++ /dev/null @@ -1,99 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2004,2006,2007,2010,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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "slicer_fb_impl.h" -#include <gnuradio/io_signature.h> - -namespace gr { - namespace pager { - - slicer_fb::sptr - slicer_fb::make(float alpha) - { - return gnuradio::get_initial_sptr - (new slicer_fb_impl(alpha)); - } - - slicer_fb_impl::slicer_fb_impl(float alpha) : - sync_block("slicer_fb", - io_signature::make(1, 1, sizeof(float)), - io_signature::make(1, 1, sizeof(unsigned char))) - { - d_alpha = alpha; - d_beta = 1.0-alpha; - d_avg = 0.0; - } - - slicer_fb_impl::~slicer_fb_impl() - { - } - - // Tracks average, minimum, and peak, then converts input into one of: - // - // [0, 1, 2, 3] - unsigned char - slicer_fb_impl::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 - slicer_fb_impl::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; - } - - } /* namespace pager */ -} /* namespace gr */ diff --git a/gr-pager/lib/slicer_fb_impl.h b/gr-pager/lib/slicer_fb_impl.h deleted file mode 100644 index d2d6ba7d89..0000000000 --- a/gr-pager/lib/slicer_fb_impl.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2007,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. - */ - -#ifndef INCLUDED_PAGER_SLICER_FB_IMPL_H -#define INCLUDED_PAGER_SLICER_FB_IMPL_H - -#include <gnuradio/pager/slicer_fb.h> - -namespace gr { - namespace pager { - - class slicer_fb_impl : public slicer_fb - { - private: - 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: - slicer_fb_impl(float alpha); - ~slicer_fb_impl(); - - 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; } - }; - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_SLICER_FB_IMPL_H */ diff --git a/gr-pager/lib/util.cc b/gr-pager/lib/util.cc deleted file mode 100644 index 8db4e5ca11..0000000000 --- a/gr-pager/lib/util.cc +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "util.h" - -namespace gr { - namespace pager { - - unsigned char - 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; - } - - int32_t - reverse_bits32(int32_t val) - { - int32_t out = 0x00000000; - out |= (reverse_bits8((val >> 24) & 0x000000FF) ); - out |= (reverse_bits8((val >> 16) & 0x000000FF) << 8); - out |= (reverse_bits8((val >> 8) & 0x000000FF) << 16); - out |= (reverse_bits8((val ) & 0x000000FF) << 24); - return out; - } - - } /* namespace pager */ -} /* namespace gr */ diff --git a/gr-pager/lib/util.h b/gr-pager/lib/util.h deleted file mode 100644 index db33e66b95..0000000000 --- a/gr-pager/lib/util.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,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. - */ - -#ifndef INCLUDED_PAGER_UTIL_H -#define INCLUDED_PAGER_UTIL_H - -#include <stdint.h> - -namespace gr { - namespace pager { - - unsigned char reverse_bits8(unsigned char val); - int32_t reverse_bits32(int32_t val); - - } /* namespace pager */ -} /* namespace gr */ - -#endif /* INCLUDED_PAGER_UTIL_H */ diff --git a/gr-pager/python/pager/CMakeLists.txt b/gr-pager/python/pager/CMakeLists.txt deleted file mode 100644 index 899c62e322..0000000000 --- a/gr-pager/python/pager/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) - - set(GR_TEST_TARGET_DEPS "") - set(GR_TEST_LIBRARY_DIRS "") - set(GR_TEST_PYTHON_DIRS - ${CMAKE_BINARY_DIR}/gnuradio-runtime/python - ) - - 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} ${QA_PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${py_qa_test_file}) - endforeach(py_qa_test_file) -endif(ENABLE_TESTING) diff --git a/gr-pager/python/pager/__init__.py b/gr-pager/python/pager/__init__.py deleted file mode 100644 index ea4856fad6..0000000000 --- a/gr-pager/python/pager/__init__.py +++ /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. -# - -# The presence of this file turns this directory into a Python package - -''' -The GNU Radio pager application. -''' -import os - -try: - from pager_swig import * -except ImportError: - dirname, filename = os.path.split(os.path.abspath(__file__)) - __path__.append(os.path.join(dirname, "..", "..", "swig")) - from pager_swig import * - -from flex_demod import flex_demod -from pager_utils import * diff --git a/gr-pager/python/pager/flex_demod.py b/gr-pager/python/pager/flex_demod.py deleted file mode 100644 index 3ed469886c..0000000000 --- a/gr-pager/python/pager/flex_demod.py +++ /dev/null @@ -1,66 +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 -from gnuradio import analog -from gnuradio import blocks -from gnuradio import filter -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 = analog.quadrature_demod_cf(k) - self.connect(self, quad) - - rsamp = filter.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 = blocks.file_sink(gr.sizeof_float, 'quad'+suffix) - rsamp_sink = blocks.file_sink(gr.sizeof_float, 'rsamp'+suffix) - slicer_sink = blocks.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/pager_utils.py b/gr-pager/python/pager/pager_utils.py deleted file mode 100644 index e935c86d4b..0000000000 --- a/gr-pager/python/pager/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/pager/qa_pager.py b/gr-pager/python/pager/qa_pager.py deleted file mode 100755 index dc9705e292..0000000000 --- a/gr-pager/python/pager/qa_pager.py +++ /dev/null @@ -1,34 +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, pager - -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 fc71394823..0000000000 --- a/gr-pager/swig/CMakeLists.txt +++ /dev/null @@ -1,56 +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_RUNTIME_SWIG_INCLUDE_DIRS} - ${Boost_INCLUDE_DIRS} -) - -if(ENABLE_GR_CTRLPORT) - list(APPEND GR_SWIG_FLAGS "-DGR_CTRLPORT") -endif(ENABLE_GR_CTRLPORT) - -set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/pager_swig_doc.i) -set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../include/gnuradio/pager) -set(GR_SWIG_DOCS_TARGET_DEPS runtime_swig_swig_doc) - -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 - ${CMAKE_CURRENT_BINARY_DIR}/pager_swig_doc.i - DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig - COMPONENT "pager_swig" -) diff --git a/gr-pager/swig/pager_swig.i b/gr-pager/swig/pager_swig.i deleted file mode 100644 index 1c594ac3c5..0000000000 --- a/gr-pager/swig/pager_swig.i +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2005,2006,2009,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. - */ - -#define PAGER_API - -%include "gnuradio.i" - -//load generated python docstrings -%include "pager_swig_doc.i" - -%{ -#include "gnuradio/pager/flex_frame.h" -#include "gnuradio/pager/slicer_fb.h" -#include "gnuradio/pager/flex_sync.h" -#include "gnuradio/pager/flex_deinterleave.h" -#include "gnuradio/pager/flex_parse.h" -%} - -%include "gnuradio/pager/flex_frame.h" -%include "gnuradio/pager/slicer_fb.h" -%include "gnuradio/pager/flex_sync.h" -%include "gnuradio/pager/flex_deinterleave.h" -%include "gnuradio/pager/flex_parse.h" - -GR_SWIG_BLOCK_MAGIC2(pager, flex_frame); -GR_SWIG_BLOCK_MAGIC2(pager, slicer_fb); -GR_SWIG_BLOCK_MAGIC2(pager, flex_sync); -GR_SWIG_BLOCK_MAGIC2(pager, flex_deinterleave); -GR_SWIG_BLOCK_MAGIC2(pager, flex_parse); |