summaryrefslogtreecommitdiff
path: root/gnuradio-examples
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-examples')
-rw-r--r--gnuradio-examples/python/Makefile.am1
-rw-r--r--gnuradio-examples/python/apps/.gitignore2
-rw-r--r--gnuradio-examples/python/apps/Makefile.am26
-rw-r--r--gnuradio-examples/python/apps/README26
-rw-r--r--gnuradio-examples/python/apps/hf_explorer/.gitignore3
-rw-r--r--gnuradio-examples/python/apps/hf_explorer/Makefile.am31
-rw-r--r--gnuradio-examples/python/apps/hf_explorer/README48
-rwxr-xr-xgnuradio-examples/python/apps/hf_explorer/hfx2.py801
-rw-r--r--gnuradio-examples/python/apps/hf_explorer/hfx_help180
-rw-r--r--gnuradio-examples/python/apps/hf_radio/.gitignore3
-rw-r--r--gnuradio-examples/python/apps/hf_radio/Makefile.am39
-rw-r--r--gnuradio-examples/python/apps/hf_radio/README.TXT60
-rw-r--r--gnuradio-examples/python/apps/hf_radio/hfir.sci59
-rw-r--r--gnuradio-examples/python/apps/hf_radio/input.py46
-rw-r--r--gnuradio-examples/python/apps/hf_radio/output.py17
-rwxr-xr-xgnuradio-examples/python/apps/hf_radio/radio.py304
-rw-r--r--gnuradio-examples/python/apps/hf_radio/radio.xml441
-rw-r--r--gnuradio-examples/python/apps/hf_radio/ssb_taps1023
-rw-r--r--gnuradio-examples/python/apps/hf_radio/ssbagc.py48
-rw-r--r--gnuradio-examples/python/apps/hf_radio/ssbdemod.py97
-rw-r--r--gnuradio-examples/python/apps/hf_radio/startup.py1
-rwxr-xr-xgnuradio-examples/python/apps/hf_radio/ui.py295
22 files changed, 0 insertions, 3551 deletions
diff --git a/gnuradio-examples/python/Makefile.am b/gnuradio-examples/python/Makefile.am
index 3f1977e74..c9084505d 100644
--- a/gnuradio-examples/python/Makefile.am
+++ b/gnuradio-examples/python/Makefile.am
@@ -22,7 +22,6 @@
include $(top_srcdir)/Makefile.common
SUBDIRS = \
- apps \
digital \
digital-bert \
mp-sched \
diff --git a/gnuradio-examples/python/apps/.gitignore b/gnuradio-examples/python/apps/.gitignore
deleted file mode 100644
index b336cc7ce..000000000
--- a/gnuradio-examples/python/apps/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/Makefile
-/Makefile.in
diff --git a/gnuradio-examples/python/apps/Makefile.am b/gnuradio-examples/python/apps/Makefile.am
deleted file mode 100644
index 50fe75151..000000000
--- a/gnuradio-examples/python/apps/Makefile.am
+++ /dev/null
@@ -1,26 +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.
-#
-
-include $(top_srcdir)/Makefile.common
-
-SUBDIRS = hf_explorer hf_radio
-EXTRA_DIST += README
-
diff --git a/gnuradio-examples/python/apps/README b/gnuradio-examples/python/apps/README
deleted file mode 100644
index b64b9d066..000000000
--- a/gnuradio-examples/python/apps/README
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Copyright 2005 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.
-#
-
-This directory servers as the parent directory for various and sundry
-applications such as scanners, HF radios, etc. Each subdirectory
-shall have a README file that includes a short description of what the
-application does, and a list of hardware dependencies. E.g., requires
-a USRP with an xyz daughterboard, connected to a footronics magic box.
diff --git a/gnuradio-examples/python/apps/hf_explorer/.gitignore b/gnuradio-examples/python/apps/hf_explorer/.gitignore
deleted file mode 100644
index b6950912c..000000000
--- a/gnuradio-examples/python/apps/hf_explorer/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/Makefile
-/Makefile.in
-/*.pyc
diff --git a/gnuradio-examples/python/apps/hf_explorer/Makefile.am b/gnuradio-examples/python/apps/hf_explorer/Makefile.am
deleted file mode 100644
index 88ad52128..000000000
--- a/gnuradio-examples/python/apps/hf_explorer/Makefile.am
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright 2006,2009 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-include $(top_srcdir)/Makefile.common
-
-ourdatadir = $(exampledir)/hf_explorer
-
-dist_ourdata_DATA = \
- README \
- hfx_help
-
-dist_ourdata_SCRIPTS = \
- hfx2.py
diff --git a/gnuradio-examples/python/apps/hf_explorer/README b/gnuradio-examples/python/apps/hf_explorer/README
deleted file mode 100644
index 5f780b3d9..000000000
--- a/gnuradio-examples/python/apps/hf_explorer/README
+++ /dev/null
@@ -1,48 +0,0 @@
-hfx.py is meant to be a full-featured Long Wave / Medium Wave
-and Short Wave (250kHz to 30Mhz) AM and Single Sideband receiver.
-It uses the USRP with a Basic RX board, and will need an
-antenna and some preamps, about 30db gain will work. See the
-'Help' menu or hfx_help for more info.
-
-----------------------------------------------------------
-
-hfx2.py is a major revision built about complex fir filter
-coeffecients ability and cleaner python script. Inherits
-most features from hfx.py - Powermate knob supported but
-not required, tooltip frequency display, single click
-tuning, AGC, record to disk, play from disk and record audio.
-New feature is ability to tailor the audio passband with two
-sliders over the spectrum display. The sliders almost align
-with the actual frequency. Preset filter settings for LSB
-(-3000 to 0kHz), USB (0 to +3000kHz), CW (-400 to -800Hz)
-and AM (-5kHz from carrier to +5kHz).
-
-AM now switches in a synchronous PLL detector with the
-carriers at 7.5kHz. The PLL carrier is displayed in the
-bottom display and helps show where on the upper spectrum
-the demodulated signal lies. Everything gets shifted up
-7.5kHz in AM, center frequency, tooltips, etc. The target
-AM carrier needs to be closely tuned in, it will have a
-hollow sound untill it is locked, and then the PLL carrier
-in the bottom display will jump up and remain relatively
-constant. There is a slider "AM sync carrier" to play with
-different levels to mix with the signal for demodulation.
-The filter in AM is preset to 2500/12500 (7.5kHz +/- 5kHz)
-and is handy for removing adjacent channel interference.
-Change AM_SYNC_DISPLAY in script for whether to show AM
-Sync carrier or not.
-Run with "-h" for command line help with setting USRP
-ddc center frequency, decimation, rf data record, playback
-and audio data recording.
-
-There are some controls for controlling a varactor and
-tuning an antenna - just ignore them unless you want
-to build a voltage tuned antenna to track frequency.
-
-There is also code for Web based control of frequency and
-volume - so I can tune the radio with an Ipaq from bed.
-Disabled by default - it takes a web server, some
-directories and scripts to use.
-
-
-
diff --git a/gnuradio-examples/python/apps/hf_explorer/hfx2.py b/gnuradio-examples/python/apps/hf_explorer/hfx2.py
deleted file mode 100755
index 00a3b9047..000000000
--- a/gnuradio-examples/python/apps/hf_explorer/hfx2.py
+++ /dev/null
@@ -1,801 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: ANSI_X3.4-1968 -*-
-# generated by wxGlade 0.4 on Tue Mar 14 10:16:06 2006
-#
-# 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.
-#
-#-----------------------------------------------------------------
-#
-# +-->(fft)
-# |
-# (src)->(xlate)--+->(audio filter)--+-->(sel_am)-+--------------+
-# | | |
-# | (pll) |
-# | | |
-# | (pll_carrier_scale) |
-# | | |
-# | (pll_carrier_filter) |
-# | | |
-# | +--(fft2) |
-# | | |
-# | +--(c2f3)--+ |
-# | | | |
-# | (phaser1) (phaser2) |
-# | | | |
-# | +--(f2c)---+ |
-# | | V
-# V +---------->(am_det)
-# (c2f) |
-# | (c2f2)
-# | |
-# +-->(sel_sb)------------>(combine)
-# |
-# V
-# +--------------------------(scale)
-# | |
-# | |
-# | +++
-# V | |
-# (agc)<--(offset)<--(intr)<---(sqr1)
-# |
-# V
-# (dst)
-#
-#----------------------------------------------------------------------
-#
-# Versions 2.2.1 adds loop antenna automatic tuner
-#
-# 2.3.1 adds web control, made AM Sync display optional,
-# added more comments.
-#
-# 2.4.1 updates usrp interface to support auto subdev
-#
-# 2.8.1 changed saved file format from 8-byte complex to
-# 4-byte short for obvious storage space savings.
-
-# Web server control disabled by default. Do not enable
-# until directory structure and scripts are in place.
-WEB_CONTROL = False
-
-# Controls display of AM Sync Carrier - turn off for smaller
-# window if not needed
-AM_SYNC_DISPLAY = False
-
-import os, wx, sys, math
-import wx.lib.evtmgr as em
-from gnuradio.wxgui import powermate, fftsink2
-from gnuradio import gr, audio, eng_notation, usrp, gru
-from gnuradio.eng_option import eng_option
-from optparse import OptionParser
-
-ID_BUTTON_1 = wx.NewId() # LSB button
-ID_BUTTON_2 = wx.NewId() # USB
-ID_BUTTON_3 = wx.NewId() # AM
-ID_BUTTON_4 = wx.NewId() # CW
-ID_BUTTON_5 = wx.NewId() # Powermate controls: Upper audio freq cutoff
-ID_BUTTON_6 = wx.NewId() # " Lower audio freq cutoff
-ID_BUTTON_7 = wx.NewId() # " Frequency
-ID_BUTTON_8 = wx.NewId() # " Volume
-ID_BUTTON_9 = wx.NewId() # " Time
-ID_BUTTON_10 = wx.NewId() # Time Seek Forwards
-ID_BUTTON_11 = wx.NewId() # Time Seek Backwards
-ID_BUTTON_12 = wx.NewId() # Automatic Antenna Tune (AT) enable
-ID_BUTTON_13 = wx.NewId() # AT Calibrate point
-ID_BUTTON_14 = wx.NewId() # AT Reset
-ID_TEXT_1 = wx.NewId() # Band Center, USRP ddc Freq
-ID_SPIN_1 = wx.NewId() # Frequency display and control
-ID_SLIDER_1 = wx.NewId() # Upper audio freq cutoff
-ID_SLIDER_2 = wx.NewId() # Lower audio freq cutoff
-ID_SLIDER_3 = wx.NewId() # Frequency
-ID_SLIDER_4 = wx.NewId() # Volume
-ID_SLIDER_5 = wx.NewId() # Programmable Gain Amp, PGA, RF gain
-ID_SLIDER_6 = wx.NewId() # AM Sync carrier level
-ID_SLIDER_7 = wx.NewId() # AT control voltage output
-ID_EXIT = wx.NewId() # Menu Exit
-
-
-def pick_subdevice(u):
- """
- The user didn't specify a subdevice on the command line.
- If there's a daughterboard on A, select A.
- If there's a daughterboard on B, select B.
- Otherwise, select A.
- """
- if u.db(0, 0).dbid() >= 0: # dbid is < 0 if there's no d'board or a problem
- return (0, 0)
- if u.db(1, 0).dbid() >= 0:
- return (1, 0)
- return (0, 0)
-
-
-class MyFrame(wx.Frame):
- def __init__(self, *args, **kwds):
- # begin wxGlade: MyFrame.__init__
- kwds["style"] = wx.DEFAULT_FRAME_STYLE
- wx.Frame.__init__(self, *args, **kwds)
-
- # Menu Bar
- self.frame_1_menubar = wx.MenuBar()
- self.SetMenuBar(self.frame_1_menubar)
- wxglade_tmp_menu = wx.Menu()
- self.Exit = wx.MenuItem(wxglade_tmp_menu, ID_EXIT, "Exit", "Exit", wx.ITEM_NORMAL)
- wxglade_tmp_menu.AppendItem(self.Exit)
- self.frame_1_menubar.Append(wxglade_tmp_menu, "File")
- # Menu Bar end
- self.panel_1 = wx.Panel(self, -1)
- self.button_1 = wx.Button(self, ID_BUTTON_1, "LSB")
- self.button_2 = wx.Button(self, ID_BUTTON_2, "USB")
- self.button_3 = wx.Button(self, ID_BUTTON_3, "AM")
- self.button_4 = wx.Button(self, ID_BUTTON_4, "CW")
- self.button_5 = wx.ToggleButton(self, ID_BUTTON_5, "Upper")
- self.slider_1 = wx.Slider(self, ID_SLIDER_1, 0, -15799, 15799, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
- self.button_6 = wx.ToggleButton(self, ID_BUTTON_6, "Lower")
- self.slider_2 = wx.Slider(self, ID_SLIDER_2, 0, -15799, 15799, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
- self.panel_5 = wx.Panel(self, -1)
- self.label_1 = wx.StaticText(self, -1, " Band\nCenter")
- self.text_ctrl_1 = wx.TextCtrl(self, ID_TEXT_1, "")
- self.panel_6 = wx.Panel(self, -1)
- self.panel_7 = wx.Panel(self, -1)
- self.panel_2 = wx.Panel(self, -1)
- self.button_7 = wx.ToggleButton(self, ID_BUTTON_7, "Freq")
- self.slider_3 = wx.Slider(self, ID_SLIDER_3, 3000, 0, 6000)
- self.spin_ctrl_1 = wx.SpinCtrl(self, ID_SPIN_1, "", min=0, max=100)
- self.button_8 = wx.ToggleButton(self, ID_BUTTON_8, "Vol")
- self.slider_4 = wx.Slider(self, ID_SLIDER_4, 0, 0, 500)
- self.slider_5 = wx.Slider(self, ID_SLIDER_5, 0, 0, 20)
- self.button_9 = wx.ToggleButton(self, ID_BUTTON_9, "Time")
- self.button_11 = wx.Button(self, ID_BUTTON_11, "Rew")
- self.button_10 = wx.Button(self, ID_BUTTON_10, "Fwd")
- self.panel_3 = wx.Panel(self, -1)
- self.label_2 = wx.StaticText(self, -1, "PGA ")
- self.panel_4 = wx.Panel(self, -1)
- self.panel_8 = wx.Panel(self, -1)
- self.panel_9 = wx.Panel(self, -1)
- self.label_3 = wx.StaticText(self, -1, "AM Sync\nCarrier")
- self.slider_6 = wx.Slider(self, ID_SLIDER_6, 50, 0, 200, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
- self.label_4 = wx.StaticText(self, -1, "Antenna Tune")
- self.slider_7 = wx.Slider(self, ID_SLIDER_7, 1575, 950, 2200, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
- self.panel_10 = wx.Panel(self, -1)
- self.button_12 = wx.ToggleButton(self, ID_BUTTON_12, "Auto Tune")
- self.button_13 = wx.Button(self, ID_BUTTON_13, "Calibrate")
- self.button_14 = wx.Button(self, ID_BUTTON_14, "Reset")
- self.panel_11 = wx.Panel(self, -1)
- self.panel_12 = wx.Panel(self, -1)
-
- self.__set_properties()
- self.__do_layout()
- # end wxGlade
-
- parser = OptionParser (option_class=eng_option)
- parser.add_option ("-c", "--ddc-freq", type="eng_float", default=3.9e6,
- help="set Rx DDC frequency to FREQ", metavar="FREQ")
- parser.add_option ("-a", "--audio_file", default="",
- help="audio output file", metavar="FILE")
- parser.add_option ("-r", "--radio_file", default="",
- help="radio output file", metavar="FILE")
- parser.add_option ("-i", "--input_file", default="",
- help="radio input file", metavar="FILE")
- parser.add_option ("-d", "--decim", type="int", default=250,
- help="USRP decimation")
- parser.add_option("-R", "--rx-subdev-spec", type="subdev", default=None, help="select USRP Rx side A or B (default=first one with a daughterboard)")
- (options, args) = parser.parse_args ()
-
- self.usrp_center = options.ddc_freq
- usb_rate = 64e6 / options.decim
- self.slider_range = usb_rate * 0.9375
- self.f_lo = self.usrp_center - (self.slider_range/2)
- self.f_hi = self.usrp_center + (self.slider_range/2)
- self.af_sample_rate = 32000
- fir_decim = long (usb_rate / self.af_sample_rate)
-
- # data point arrays for antenna tuner
- self.xdata = []
- self.ydata = []
-
- self.tb = gr.top_block()
-
- # radio variables, initial conditions
- self.frequency = self.usrp_center
- # these map the frequency slider (0-6000) to the actual range
- self.f_slider_offset = self.f_lo
- self.f_slider_scale = 10000/options.decim
- self.spin_ctrl_1.SetRange(self.f_lo,self.f_hi)
- self.text_ctrl_1.SetValue(str(int(self.usrp_center)))
- self.slider_5.SetValue(0)
- self.AM_mode = False
-
- self.slider_3.SetValue((self.frequency-self.f_slider_offset)/self.f_slider_scale)
- self.spin_ctrl_1.SetValue(int(self.frequency))
-
- POWERMATE = True
- try:
- self.pm = powermate.powermate(self)
- except:
- sys.stderr.write("Unable to find PowerMate or Contour Shuttle\n")
- POWERMATE = False
-
- if POWERMATE:
- powermate.EVT_POWERMATE_ROTATE(self, self.on_rotate)
- powermate.EVT_POWERMATE_BUTTON(self, self.on_pmButton)
- self.active_button = 7
-
- # command line options
- if options.audio_file == "": SAVE_AUDIO_TO_FILE = False
- else: SAVE_AUDIO_TO_FILE = True
- if options.radio_file == "": SAVE_RADIO_TO_FILE = False
- else: SAVE_RADIO_TO_FILE = True
- if options.input_file == "": self.PLAY_FROM_USRP = True
- else: self.PLAY_FROM_USRP = False
-
- if self.PLAY_FROM_USRP:
- self.src = usrp.source_s(decim_rate=options.decim)
- if options.rx_subdev_spec is None:
- options.rx_subdev_spec = pick_subdevice(self.src)
- self.src.set_mux(usrp.determine_rx_mux_value(self.src, options.rx_subdev_spec))
- self.subdev = usrp.selected_subdev(self.src, options.rx_subdev_spec)
- self.src.tune(0, self.subdev, self.usrp_center)
- self.tune_offset = 0 # -self.usrp_center - self.src.rx_freq(0)
-
- else:
- self.src = gr.file_source (gr.sizeof_short,options.input_file)
- self.tune_offset = 2200 # 2200 works for 3.5-4Mhz band
-
- # save radio data to a file
- if SAVE_RADIO_TO_FILE:
- file = gr.file_sink(gr.sizeof_short, options.radio_file)
- self.tb.connect (self.src, file)
-
- # 2nd DDC
- xlate_taps = gr.firdes.low_pass ( \
- 1.0, usb_rate, 16e3, 4e3, gr.firdes.WIN_HAMMING )
- self.xlate = gr.freq_xlating_fir_filter_ccf ( \
- fir_decim, xlate_taps, self.tune_offset, usb_rate )
-
- # convert rf data in interleaved short int form to complex
- s2ss = gr.stream_to_streams(gr.sizeof_short,2)
- s2f1 = gr.short_to_float()
- s2f2 = gr.short_to_float()
- src_f2c = gr.float_to_complex()
- self.tb.connect(self.src,s2ss)
- self.tb.connect((s2ss,0),s2f1)
- self.tb.connect((s2ss,1),s2f2)
- self.tb.connect(s2f1,(src_f2c,0))
- self.tb.connect(s2f2,(src_f2c,1))
-
-
- # Complex Audio filter
- audio_coeffs = gr.firdes.complex_band_pass (
- 1.0, # gain
- self.af_sample_rate, # sample rate
- -3000, # low cutoff
- 0, # high cutoff
- 100, # transition
- gr.firdes.WIN_HAMMING) # window
- self.slider_1.SetValue(0)
- self.slider_2.SetValue(-3000)
-
- self.audio_filter = gr.fir_filter_ccc ( 1, audio_coeffs)
-
- # Main +/- 16Khz spectrum display
- self.fft = fftsink2.fft_sink_c (self.panel_2, fft_size=512, sample_rate=self.af_sample_rate, average=True, size=(640,240))
-
- # AM Sync carrier
- if AM_SYNC_DISPLAY:
- self.fft2 = fftsink.fft_sink_c (self.tb, self.panel_9, y_per_div=20, fft_size=512, sample_rate=self.af_sample_rate, average=True, size=(640,240))
-
- c2f = gr.complex_to_float()
-
- # AM branch
- self.sel_am = gr.multiply_const_cc(0)
- # the following frequencies turn out to be in radians/sample
- # gr.pll_refout_cc(alpha,beta,min_freq,max_freq)
- # suggested alpha = X, beta = .25 * X * X
- pll = gr.pll_refout_cc(.5,.0625,(2.*math.pi*7.5e3/self.af_sample_rate),(2.*math.pi*6.5e3/self.af_sample_rate))
- self.pll_carrier_scale = gr.multiply_const_cc(complex(10,0))
- am_det = gr.multiply_cc()
- # these are for converting +7.5kHz to -7.5kHz
- # for some reason gr.conjugate_cc() adds noise ??
- c2f2 = gr.complex_to_float()
- c2f3 = gr.complex_to_float()
- f2c = gr.float_to_complex()
- phaser1 = gr.multiply_const_ff(1)
- phaser2 = gr.multiply_const_ff(-1)
-
- # filter for pll generated carrier
- pll_carrier_coeffs = gr.firdes.complex_band_pass (
- 2.0, # gain
- self.af_sample_rate, # sample rate
- 7400, # low cutoff
- 7600, # high cutoff
- 100, # transition
- gr.firdes.WIN_HAMMING) # window
-
- self.pll_carrier_filter = gr.fir_filter_ccc ( 1, pll_carrier_coeffs)
-
- self.sel_sb = gr.multiply_const_ff(1)
- combine = gr.add_ff()
-
- #AGC
- sqr1 = gr.multiply_ff()
- intr = gr.iir_filter_ffd ( [.004, 0], [0, .999] )
- offset = gr.add_const_ff(1)
- agc = gr.divide_ff()
-
-
- self.scale = gr.multiply_const_ff(0.00001)
- dst = audio.sink(long(self.af_sample_rate))
-
- self.tb.connect(src_f2c,self.xlate,self.fft)
- self.tb.connect(self.xlate,self.audio_filter,self.sel_am,(am_det,0))
- self.tb.connect(self.sel_am,pll,self.pll_carrier_scale,self.pll_carrier_filter,c2f3)
- self.tb.connect((c2f3,0),phaser1,(f2c,0))
- self.tb.connect((c2f3,1),phaser2,(f2c,1))
- self.tb.connect(f2c,(am_det,1))
- self.tb.connect(am_det,c2f2,(combine,0))
- self.tb.connect(self.audio_filter,c2f,self.sel_sb,(combine,1))
- if AM_SYNC_DISPLAY:
- self.tb.connect(self.pll_carrier_filter,self.fft2)
- self.tb.connect(combine,self.scale)
- self.tb.connect(self.scale,(sqr1,0))
- self.tb.connect(self.scale,(sqr1,1))
- self.tb.connect(sqr1, intr, offset, (agc, 1))
- self.tb.connect(self.scale,(agc, 0))
- self.tb.connect(agc,dst)
-
- if SAVE_AUDIO_TO_FILE:
- f_out = gr.file_sink(gr.sizeof_short,options.audio_file)
- sc1 = gr.multiply_const_ff(64000)
- f2s1 = gr.float_to_short()
- self.tb.connect(agc,sc1,f2s1,f_out)
-
- self.tb.start()
-
- # for mouse position reporting on fft display
- em.eventManager.Register(self.Mouse, wx.EVT_MOTION, self.fft.win)
- # and left click to re-tune
- em.eventManager.Register(self.Click, wx.EVT_LEFT_DOWN, self.fft.win)
-
- # start a timer to check for web commands
- if WEB_CONTROL:
- self.timer = UpdateTimer(self, 1000) # every 1000 mSec, 1 Sec
-
-
- wx.EVT_BUTTON(self,ID_BUTTON_1,self.set_lsb)
- wx.EVT_BUTTON(self,ID_BUTTON_2,self.set_usb)
- wx.EVT_BUTTON(self,ID_BUTTON_3,self.set_am)
- wx.EVT_BUTTON(self,ID_BUTTON_4,self.set_cw)
- wx.EVT_BUTTON(self,ID_BUTTON_10,self.fwd)
- wx.EVT_BUTTON(self,ID_BUTTON_11,self.rew)
- wx.EVT_BUTTON(self, ID_BUTTON_13, self.AT_calibrate)
- wx.EVT_BUTTON(self, ID_BUTTON_14, self.AT_reset)
- wx.EVT_TOGGLEBUTTON(self,ID_BUTTON_5,self.on_button)
- wx.EVT_TOGGLEBUTTON(self,ID_BUTTON_6,self.on_button)
- wx.EVT_TOGGLEBUTTON(self,ID_BUTTON_7,self.on_button)
- wx.EVT_TOGGLEBUTTON(self,ID_BUTTON_8,self.on_button)
- wx.EVT_TOGGLEBUTTON(self,ID_BUTTON_9,self.on_button)
- wx.EVT_SLIDER(self,ID_SLIDER_1,self.set_filter)
- wx.EVT_SLIDER(self,ID_SLIDER_2,self.set_filter)
- wx.EVT_SLIDER(self,ID_SLIDER_3,self.slide_tune)
- wx.EVT_SLIDER(self,ID_SLIDER_4,self.set_volume)
- wx.EVT_SLIDER(self,ID_SLIDER_5,self.set_pga)
- wx.EVT_SLIDER(self,ID_SLIDER_6,self.am_carrier)
- wx.EVT_SLIDER(self,ID_SLIDER_7,self.antenna_tune)
- wx.EVT_SPINCTRL(self,ID_SPIN_1,self.spin_tune)
-
- wx.EVT_MENU(self, ID_EXIT, self.TimeToQuit)
-
- def __set_properties(self):
- # begin wxGlade: MyFrame.__set_properties
- self.SetTitle("HF Explorer 2")
- self.slider_1.SetMinSize((450, 38))
- self.slider_2.SetMinSize((450, 38))
- self.panel_2.SetMinSize((640, 240))
- self.button_7.SetValue(1)
- self.slider_3.SetMinSize((450, 19))
- self.slider_4.SetMinSize((275, 19))
- self.slider_5.SetMinSize((275, 19))
- if AM_SYNC_DISPLAY:
- self.panel_9.SetMinSize((640, 240))
- self.slider_6.SetMinSize((300, 38))
- self.slider_7.SetMinSize((400, 38))
- # end wxGlade
-
- def __do_layout(self):
- # begin wxGlade: MyFrame.__do_layout
- sizer_1 = wx.BoxSizer(wx.VERTICAL)
- grid_sizer_1 = wx.FlexGridSizer(11, 2, 0, 0)
- sizer_7 = wx.BoxSizer(wx.HORIZONTAL)
- sizer_5 = wx.BoxSizer(wx.HORIZONTAL)
- sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
- sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
- sizer_6 = wx.BoxSizer(wx.VERTICAL)
- sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
- grid_sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
- sizer_2.Add(self.button_1, 0, wx.ADJUST_MINSIZE, 0)
- sizer_2.Add(self.button_2, 0, wx.ADJUST_MINSIZE, 0)
- sizer_2.Add(self.button_3, 0, wx.ADJUST_MINSIZE, 0)
- sizer_2.Add(self.button_4, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.button_5, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(self.slider_1, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(self.button_6, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(self.slider_2, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ADJUST_MINSIZE, 0)
- sizer_6.Add(self.panel_5, 1, wx.EXPAND, 0)
- sizer_6.Add(self.label_1, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ADJUST_MINSIZE, 0)
- sizer_6.Add(self.text_ctrl_1, 0, wx.ADJUST_MINSIZE, 0)
- sizer_6.Add(self.panel_6, 1, wx.EXPAND, 0)
- sizer_6.Add(self.panel_7, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(sizer_6, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.panel_2, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.button_7, 0, wx.ADJUST_MINSIZE, 0)
- sizer_3.Add(self.slider_3, 0, wx.ADJUST_MINSIZE, 0)
- sizer_3.Add(self.spin_ctrl_1, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(sizer_3, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.button_8, 0, wx.ADJUST_MINSIZE, 0)
- sizer_4.Add(self.slider_4, 0, wx.ADJUST_MINSIZE, 0)
- sizer_4.Add(self.slider_5, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(sizer_4, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.button_9, 0, wx.ADJUST_MINSIZE, 0)
- sizer_5.Add(self.button_11, 0, wx.ADJUST_MINSIZE, 0)
- sizer_5.Add(self.button_10, 0, wx.ADJUST_MINSIZE, 0)
- sizer_5.Add(self.panel_3, 1, wx.EXPAND, 0)
- sizer_5.Add(self.label_2, 0, wx.ADJUST_MINSIZE, 0)
- sizer_5.Add(self.panel_4, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(sizer_5, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.panel_8, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.panel_9, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.label_3, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(self.slider_6, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(self.label_4, 0, wx.ALIGN_BOTTOM|wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(self.slider_7, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(self.panel_10, 1, wx.EXPAND, 0)
- sizer_7.Add(self.button_12, 0, wx.ADJUST_MINSIZE, 0)
- sizer_7.Add(self.button_13, 0, wx.ADJUST_MINSIZE, 0)
- sizer_7.Add(self.button_14, 0, wx.ADJUST_MINSIZE, 0)
- sizer_7.Add(self.panel_11, 1, wx.EXPAND, 0)
- sizer_7.Add(self.panel_12, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(sizer_7, 1, wx.EXPAND, 0)
- sizer_1.Add(grid_sizer_1, 1, wx.EXPAND, 0)
- self.SetAutoLayout(True)
- self.SetSizer(sizer_1)
- sizer_1.Fit(self)
- sizer_1.SetSizeHints(self)
- self.Layout()
- # end wxGlade
-
- # Menu exit
- def TimeToQuit(self, event):
- self.tb.stop()
- self.Close(True)
-
- # Powermate being turned
- def on_rotate(self, event):
- if self.active_button == 5:
- self.slider_1.SetValue(self.slider_1.GetValue()+event.delta)
- if self.slider_2.GetValue() > (self.slider_1.GetValue() - 200) :
- self.slider_2.SetValue(self.slider_1.GetValue() - 200)
- self.filter()
- if self.active_button == 6:
- self.slider_2.SetValue(self.slider_2.GetValue()+event.delta)
- if self.slider_1.GetValue() < (self.slider_2.GetValue() + 200) :
- self.slider_1.SetValue(self.slider_2.GetValue() + 200)
- self.filter()
- if self.active_button == 7:
- new = max(0, min(6000, self.slider_3.GetValue() + event.delta))
- self.slider_3.SetValue(new)
- self.frequency = (self.f_slider_scale * new) + self.f_slider_offset
- self.spin_ctrl_1.SetValue(self.frequency)
- if self.AM_mode == False:
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset))
- else:
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset - 7.5e3))
- if self.button_12.GetValue():
- self.auto_antenna_tune()
- if self.active_button == 8:
- new = max(0, min(500, self.slider_4.GetValue() + event.delta))
- self.slider_4.SetValue(new)
- self.scale.set_k(math.pow(10.,((self.slider_4.GetValue()-500.)/100.)))
- if self.active_button == 9:
- if self.PLAY_FROM_USRP == False:
- if event.delta == -1:
- self.src.seek(-1000000,gr.SEEK_CUR)
- elif event.delta == 1:
- self.src.seek(1000000,gr.SEEK_CUR)
-
-
- # Powermate pressed to switch controlled function
- def on_pmButton(self, event):
- if event.value == 0:
- if self.active_button == 5:
- self.active_button = 6
- self.button_5.SetValue(False)
- self.button_6.SetValue(True)
- elif self.active_button == 6:
- self.active_button = 7
- self.button_6.SetValue(False)
- self.button_7.SetValue(True)
- elif self.active_button == 7:
- self.active_button = 8
- self.button_7.SetValue(False)
- self.button_8.SetValue(True)
- elif self.active_button == 8:
- self.active_button = 9
- self.button_8.SetValue(False)
- self.button_9.SetValue(True)
- elif self.active_button == 9:
- self.active_button = 5
- self.button_9.SetValue(False)
- self.button_5.SetValue(True)
-
- # Clicking one PM control button turns the rest off
- def on_button(self, event):
- id = event.GetId()
- if id == ID_BUTTON_5:
- self.active_button = 5
- self.button_6.SetValue(False)
- self.button_7.SetValue(False)
- self.button_8.SetValue(False)
- self.button_9.SetValue(False)
- if id == ID_BUTTON_6:
- self.active_button = 6
- self.button_5.SetValue(False)
- self.button_7.SetValue(False)
- self.button_8.SetValue(False)
- self.button_9.SetValue(False)
- if id == ID_BUTTON_7:
- self.active_button = 7
- self.button_5.SetValue(False)
- self.button_6.SetValue(False)
- self.button_8.SetValue(False)
- self.button_9.SetValue(False)
- if id == ID_BUTTON_8:
- self.active_button = 8
- self.button_5.SetValue(False)
- self.button_6.SetValue(False)
- self.button_7.SetValue(False)
- self.button_9.SetValue(False)
- if id == ID_BUTTON_9:
- self.active_button = 9
- self.button_5.SetValue(False)
- self.button_6.SetValue(False)
- self.button_7.SetValue(False)
- self.button_8.SetValue(False)
-
- # Make sure filter settings are legal
- def set_filter(self, event):
- slider = event.GetId()
- slider1 = self.slider_1.GetValue()
- slider2 = self.slider_2.GetValue()
- if slider == ID_SLIDER_1:
- if slider2 > (self.slider_1.GetValue() - 200) :
- self.slider_2.SetValue(slider1 - 200)
- elif slider == ID_SLIDER_2:
- if slider1 < (self.slider_2.GetValue() + 200) :
- self.slider_1.SetValue(slider2 + 200)
- self.filter()
-
- # Calculate taps and apply
- def filter(self):
- audio_coeffs = gr.firdes.complex_band_pass (
- 1.0, # gain
- self.af_sample_rate, # sample rate
- self.slider_2.GetValue(), # low cutoff
- self.slider_1.GetValue(), # high cutoff
- 100, # transition
- gr.firdes.WIN_HAMMING) # window
- self.audio_filter.set_taps(audio_coeffs)
-
- def set_lsb(self, event):
- self.AM_mode = False
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset))
- self.sel_sb.set_k(1)
- self.sel_am.set_k(0)
- self.slider_1.SetValue(0)
- self.slider_2.SetValue(-3000)
- self.filter()
-
- def set_usb(self, event):
- self.AM_mode = False
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset))
- self.sel_sb.set_k(1)
- self.sel_am.set_k(0)
- self.slider_1.SetValue(3000)
- self.slider_2.SetValue(0)
- self.filter()
-
- def set_am(self, event):
- self.AM_mode = True
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset - 7.5e3))
- self.sel_sb.set_k(0)
- self.sel_am.set_k(1)
- self.slider_1.SetValue(12500)
- self.slider_2.SetValue(2500)
- self.filter()
-
- def set_cw(self, event):
- self.AM_mode = False
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset))
- self.AM_mode = False
- self.sel_sb.set_k(1)
- self.sel_am.set_k(0)
- self.slider_1.SetValue(-400)
- self.slider_2.SetValue(-800)
- self.filter()
-
- def set_volume(self, event):
- self.scale.set_k(math.pow(10.,((self.slider_4.GetValue()-500.)/100.)))
-
- def set_pga(self,event):
- if self.PLAY_FROM_USRP:
- self.subdev.set_gain(self.slider_5.GetValue())
-
- def slide_tune(self, event):
- self.frequency = (self.f_slider_scale * self.slider_3.GetValue()) + self.f_slider_offset
- if self.AM_mode == False:
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset))
- else:
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset - 7.5e3))
- self.spin_ctrl_1.SetValue(self.frequency)
- if self.button_12.GetValue():
- self.auto_antenna_tune()
-
- def spin_tune(self, event):
- self.frequency = self.spin_ctrl_1.GetValue()
- if self.AM_mode == False:
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset))
- else:
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset - 7.5e3))
- self.slider_3.SetValue(int((self.frequency-self.f_slider_offset)/self.f_slider_scale))
- if self.button_12.GetValue():
- self.auto_antenna_tune()
-
- # Seek forwards in file
- def fwd(self, event):
- if self.PLAY_FROM_USRP == False:
- self.src.seek(10000000,gr.SEEK_CUR)
-
- # Seek backwards in file
- def rew(self, event):
- if self.PLAY_FROM_USRP == False:
- self.src.seek(-10000000,gr.SEEK_CUR)
-
- # Mouse over fft display - show frequency in tooltip
- def Mouse(self,event):
- if self.AM_mode:
- fRel = ( event.GetX() - 330. ) / 14.266666 - 7.5
- else:
- fRel = ( event.GetX() - 330. ) / 14.266666
- self.fft.win.SetToolTip(wx.ToolTip(eng_notation.num_to_str(self.frequency + (fRel*1e3))))
-
- # Mouse clicked on fft display - change frequency
- def Click(self,event):
- fRel = ( event.GetX() - 330. ) / 14.266666
- if self.AM_mode == False:
- self.frequency = self.frequency + (fRel*1e3)
- else:
- self.frequency = self.frequency + (fRel*1e3) - 7.5e3
- self.spin_ctrl_1.SetValue(int(self.frequency))
- self.slider_3.SetValue(int((self.frequency-self.f_slider_offset)/self.f_slider_scale))
- if self.AM_mode == False:
- self.xlate.set_center_freq ( self.usrp_center - ( self.frequency - self.tune_offset ))
- else:
- self.xlate.set_center_freq( self.usrp_center - (self.frequency - self.tune_offset - 7.5e3))
-
- # Set power of AM sync carrier
- def am_carrier(self,event):
- scale = math.pow(10,(self.slider_6.GetValue())/50.)
- self.pll_carrier_scale.set_k(complex(scale,0))
-
- # Reset AT data and start calibrate over
- def AT_reset(self, event):
- self.xdata = []
- self.ydata = []
-
- # Save AT setting for a particular frequency
- def AT_calibrate(self, event):
- self.xdata.append(float(self.frequency))
- self.ydata.append(self.slider_7.GetValue())
- if len(self.xdata) > 1:
- self.m = []
- self.b = []
- for i in range(0,len(self.xdata)-1):
- self.m.append( (self.ydata[i+1] - self.ydata[i]) / (self.xdata[i+1] - self.xdata[i]) )
- self.b.append( self.ydata[i] - self.m[i] * self.xdata[i] )
-
- # Lookup calibrated points and calculate interpolated antenna tune voltage.
- # This is to automatically tune a narrowband loop antenna when the freq
- # is changed, to keep signals peaked.
- def auto_antenna_tune(self):
- for i in range(0,len(self.xdata)-1):
- if (self.frequency > self.xdata[i]) & (self.frequency < self.xdata[i+1]):
- self.slider_7.SetValue(self.m[i]*self.frequency + self.b[i])
- self.antenna_tune(0)
-
- # Slider to set loop antenna capacitance
- def antenna_tune(self, evt):
- if self.PLAY_FROM_USRP:
- self.src.write_aux_dac(0,3,self.slider_7.GetValue())
-
- # Timer events - check for web commands
- def OnUpdate(self):
- cmds = os.listdir("/var/www/cgi-bin/commands/")
- if cmds!=[]:
- if cmds[0]=='chfreq':
- fd=open("/var/www/cgi-bin/commands/chfreq","r")
- new=fd.readline()
- fd.close()
- if new!='':
- os.unlink("/var/www/cgi-bin/commands/chfreq")
- if ( int(new) >= self.f_lo ) & ( int(new) <= self.f_hi ):
- self.frequency = int(new)
- self.slider_3.SetValue(( self.frequency - self.f_slider_offset) / self.f_slider_scale )
- self.spin_ctrl_1.SetValue(self.frequency)
- if self.button_12.GetValue():
- self.auto_antenna_tune()
- if self.AM_mode:
- self.xlate.set_center_freq ( self.usrp_center - ( self.frequency - self.tune_offset - 7.5e3 ))
- else:
- self.xlate.set_center_freq ( self.usrp_center - ( self.frequency - self.tune_offset ))
-
- if cmds[0]=='chvolume':
- fd=open("/var/www/cgi-bin/commands/chvolume","r")
- new=fd.readline()
- fd.close()
- if new!='':
- os.unlink("/var/www/cgi-bin/commands/chvolume")
- if ( int(new) >= 0 ) & ( int(new) <= 500 ):
- self.volume = int(new)
- self.slider_4.SetValue(self.volume)
- self.scale.set_k(math.pow(10.,((self.slider_4.GetValue()-500.)/100.)))
-
- else: # no new web commands, update state
- fh = open("/var/www/cgi-bin/state/freq","w")
- fh.write(str(int(self.frequency))+'\n')
- fh.close()
- fh = open("/var/www/cgi-bin/state/volume","w")
- fh.write(str(self.slider_4.GetValue())+'\n')
- fh.close()
-
-
-# end of class MyFrame
-
-# wx.Timer to check for web updates
-class UpdateTimer(wx.Timer):
- def __init__(self, target, dur=1000):
- wx.Timer.__init__(self)
- self.target = target
- self.Start(dur)
-
- def Notify(self):
- """Called every timer interval"""
- if self.target:
- self.target.OnUpdate()
-
-
-class MyApp(wx.App):
- def OnInit(self):
- frame = MyFrame(None, -1, "HF Explorer 2")
- frame.Show(True)
- self.SetTopWindow(frame)
- return True
-
-app = MyApp(0)
-app.MainLoop()
-
diff --git a/gnuradio-examples/python/apps/hf_explorer/hfx_help b/gnuradio-examples/python/apps/hf_explorer/hfx_help
deleted file mode 100644
index 9a52dd2bb..000000000
--- a/gnuradio-examples/python/apps/hf_explorer/hfx_help
+++ /dev/null
@@ -1,180 +0,0 @@
-
- HF Explorer Help
-
- -----------------------------------------------------------------------
-
- Command Line Switches:
-
- -c DDC center frequency, set band.
- -c 7.2e6 or -c 7.2M for 40 meter ham band.
- Default is 3.9e6 80 meter ham band.
- Example:
-
- hfx.py -c 9500k
-
- starts up in the 31 meter band.
-
- -a Audio output file. Output file for 32kHz two channel
- signed word audio. Two channels are used for
- independent sideband. This file can be converted
- to a wav file with sox. Example:
-
- sox -c 2 -r 3200 file.sw file.wav
-
- sox needs the .sw extension to indicate file type.
- If not specified no audio file is created.
-
- -r Radio output file. File to write RF data to for later
- demodulation. Records the entire band to disk, width
- determined by sample rate/decimation. Be sure to
- note the decimation and center freq for later use!
- Example:
-
- hfx.py -c 900e3 -d 80 -r rf_data_AM-c900e3-d80
-
- writes a pre-demod rf file centered on 900kHz with a
- bandwidth of 800kHz (That's 80 AM stations!). The
- center and decimation could be put in the filename for
- proper use later.
- If not specified no rf data file is created.
- At default 250 decimation disk usage is about
- 8Gb / hour.
-
- -i Radio input file. Use to play back a previously
- recorded rf data file. Example:
-
- hfx.py -c 900e3 -d 80 -i rf_data_AM-c900e3-d80
-
- plays back the previously recorded band, no
- usrp hardware needed. Tune about the 800kHz wide band.
- When playing a recorded file, time controls
- fast-forward and rewind are available.
-
- -d Decimation. Sets sample rate and bandwidth.
- This is the factor that the usrp sample rate, 64e6,
- is divided by. Default is 250 for 256kHz bandwidth
- which is enough to record a ham band without
- eating up disk space too fast. The 64e6 sample
- rate limits the upper practical frequency to 32MHz.
- The Basic RX transformer limits the lower frequency
- to about 200kHz.
-
-
- Powermate Knob:
-
- A Powermate knob is recommended but not necessary. If a knob
- is used, it is in one of 3 or 4 modes controlling frequency,
- volume, filter and (if playing a recorded file) time.
- Pushing the knob switches mode and the buttons on the HFX panel
- change to show which mode is in effect. Then just turn the knob
- to set frequency, volume, filter or go fast forward or rewind.
-
-
- Bandswitch:
-
- Across the top are a set of predefined bands and buttons
- to rapidly switch to the center of that band. To change a band,
- type the frequency in Hz into the box under "Center Frequency",
- then press "Set" on the left, then the button you want to
- program. From then on (untill the program is exited) pushing
- that button takes you to that band. To make a band button
- permenant edit the hfx.py script with whatever frequency you
- want assigned to what button.
-
-
- Frequency:
-
- There are 6 ways to set the frequency.
- 1) Move the slider with the mouse
- 2) Use the Spin Control up/down arrows (very fine 1Hz control)
- 3) Type the frequency in Hz into the Spin Control
- 4) Turn the Powermate knob
- 5) Web control.
- 6) Clicking on the FFT display to set demod center. This is very
- convenient for tuning +-15kHz when you see a signal on the
- display. If in Lower Sideband, clicking just to the right of
- a signal will tune to it immediately. Clicking several times
- on the far right right or left of the display will rapidly
- tune up or down the band.
-
-
- Volume:
-
- Move the volume slider with the mouse, or push the Powermate knob
- untill the volume button is active, or click on the volume button,
- then turn the knob. Volume can also be set by web control if web
- control is setup and enabled.
-
-
- Filter:
-
- Similar to volume, switches in any of 30 audio filters from 600
- to 3600Hz in Sideband or up to 5kHz in AM.
-
-
- Mode:
-
- Demodulation modes are chosen by clicking on the buttons for
- Lower Sideband, Upper Sideband, or AM.
-
-
- PGA:
-
- PGA slider sets the rf gain in the Analog-to-Digital converter
- before digitizing. 0 to 20db gain easily shows up on the FFT
- display.
-
-
- Time:
-
- When playing back a recorded RF data file, you can enjoy the
- freedom of rewinding or fast-forwarding. Replay a weak signal
- or skip through annoying AM commercials.
-
-
- Antennas and Preamps:
-
- The USRP Basic RX board is not sensitive enough for anything but
- the strongest signals. In my experience about 40 db of small
- signal gain is required to make the HFX as sensitive as other
- receivers. Some working amplifiers are the Ramsey PR-2 with 20db
- gain, fairly low noise and more bandwidth than we can use here.
- Also the amp modules from Advanced Receiver Research are nice.
- I use an ARR 7-7.4MHz GaAsFET 29db amp with .5db noise at the
- apex of a 40 meter dipole with excellent results. Another
- amp I like is a Minicircuits ZHL-32A 29db amp but they are
- expensive and hard to find. Also it may help to use some filters
- to keep strong local signals from the ADC, or limit rf input
- to the band of interest, etc.
- Resonant outdoor antennas, like a dipole, in a low-noise (away
- from consumer electronics) environment are nice. Long random wires
- with a tuner work. I like a small indoor tuned loop made from 10ft
- of 1/4" copper tube, a 365pf tuning cap and a pickup loop connected
- to rg-58.
-
-
- Web Control:
-
- To control your radio remotely, ensure you have a web server
- (Apache, etc) working and a compatible directory structure in
- place. Directories /var/www/cgi-bin/commands and
- /var/www/cgi-bin/state must already exist. You will need a
- home page with forms and a set of scripts to put commands in
- and put the current state on the home page. email me for further
- help. Setting WEB_CONTROL to True in hfx.py turns on the timers
- that check for commands and update the state.
-
-
- IF Output:
-
- There is a provision for outputting un-demodulated complex
- through the audio out in stereo for use with Digital Radio
- Mondial (DRM) or using a seperate demodulation program like
- SDRadio (by I2PHD).
- Set IF_OUTPUT to True in weaver_isb_am1_usrp4.py.
-
-
- --Good luck and happy LW/MW/SW Exploring.
- Chuck
- chuckek@musicriver.homeunix.com
-
diff --git a/gnuradio-examples/python/apps/hf_radio/.gitignore b/gnuradio-examples/python/apps/hf_radio/.gitignore
deleted file mode 100644
index b6950912c..000000000
--- a/gnuradio-examples/python/apps/hf_radio/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/Makefile
-/Makefile.in
-/*.pyc
diff --git a/gnuradio-examples/python/apps/hf_radio/Makefile.am b/gnuradio-examples/python/apps/hf_radio/Makefile.am
deleted file mode 100644
index e514076f6..000000000
--- a/gnuradio-examples/python/apps/hf_radio/Makefile.am
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright 2006,2009 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-include $(top_srcdir)/Makefile.common
-
-ourdatadir = $(exampledir)/hf_radio
-
-dist_ourdata_DATA = \
- hfir.sci \
- radio.xml \
- input.py \
- output.py \
- README.TXT \
- ssbagc.py \
- ssbdemod.py \
- startup.py \
- ssb_taps
-
-dist_ourdata_SCRIPTS = \
- radio.py \
- ui.py
diff --git a/gnuradio-examples/python/apps/hf_radio/README.TXT b/gnuradio-examples/python/apps/hf_radio/README.TXT
deleted file mode 100644
index 7c7edf5e0..000000000
--- a/gnuradio-examples/python/apps/hf_radio/README.TXT
+++ /dev/null
@@ -1,60 +0,0 @@
-# 2008-02-07
-#
-# These files have not yet been update to use the new top_block/hier_block2
-# interfaces. Until someone does that, this files will no longer run.
-#
-
-
-The files in this directory implement a fairly simple HF radio that works
-with the basic rx daughter board on the USRP.
-
-Many thanks to the Gnu Radio folks for a great new way to waste large blocks
-of time in infinitely tweaking a huge number of free parameters.
-
-Start the receiver by running the radio.py in this directory. Or from the
-Python prompt type "from radio import *" and you'll get the prompt back
-with the receiver running. You can then poke around to see what's going on.
-
-There are two spectrum displays. One is the output of the USRP and displays
-about 300KHz of bandwidth centered at the current tuning freq. The other
-displays the output spectrum of the demodulator.
-
-The demodulator does AM demod using the complex modulus block from gr. It
-does SSB demod using the frequency translating fir filter as a complex
-hilbert transformer. The taps for this filter were generated using a program
-called Scilab and the Scilab program in the file hfir.sci. More details in
-the associated files.
-
-Tune the receiver using the spin buttons under the big frequency display.
-
-The agc block is a roll your own. The standard agc in the newer CVS updates
-seems to work but doesn't seem to have adjustable time constants or provide
-access to internal signal nodes which are used for the RSSI.
-
-The AGC authority (a sort of gain parameter) and the reference level used
-in the power to dB computagion can be adjusted using the spin buttons.
-
-The audio bandwidth can be similarly adjusted from about 50Hz to 10KHz.
-
-The GUI layout was produced using wxGlade. The file radio.xml is the GUI
-specification. It will produce a file called ui.py which is subclassed
-by classes defined in radio.py. The ui.py is purely generated by wxGlade
-all app specific code for the GUI is in radio.py.
-
-Most of the actual signal processing code is built up in the other included
-files using the hierarchical block facilities. This organization should
-make it easier to tweak to your heart's content.
-
-Known bugs weakness and other
-
-wxPython and wxGlade seem to conspire to insure that the layout can never
-be exactly what you have in mind.
-
-Some of the controls don't behave as one might like. wx spin controls
-and spin boxes only support integers so it is rather a nuisance to make
-units come out nice. In the process of development I came up with a reasonable
-kluge so there is a mixture of approaches.
-
-Enjoy.
-
-M. Revnell 2006-Jan-06
diff --git a/gnuradio-examples/python/apps/hf_radio/hfir.sci b/gnuradio-examples/python/apps/hf_radio/hfir.sci
deleted file mode 100644
index a2d5e2a62..000000000
--- a/gnuradio-examples/python/apps/hf_radio/hfir.sci
+++ /dev/null
@@ -1,59 +0,0 @@
-// designs a complex tap fir filter akin to the hilbert transformer.
-//
-// The hilbert transformer is classified as a linear phase fir
-// with allpass magnitude response and 90 degree phase response for
-// positive frequencies and -90 degrees phase for negative frequencies.
-// Or, if you prefer, normalized frequencies between .5 and 1 since
-// negative frequencies don't really have much meaning outside the complex
-// domain.
-//
-// Normally one would use the hilbert transformer in one leg of a complex
-// processing block and a compensating delay in the other.
-//
-// This one differs in the following respects:
-// It is low pass with a cutoff of .078125
-// The filter is a lowpass kaiser windowed filter with parameter 3
-// The phase response is 45 degrees for positive frequencies and -45
-// for negative frequencies.
-// The coefficent set is used in one path and the same coefficients
-// are used time reversed in the other. This results in the net effect
-// of +/- 90 degrees as in the usual hilbert application.
-//
-// The coefficient set can be used in the gnuradio frequency translating
-// fir filter for ssb demodulation.
-//
-// This isn't as computationally efficient as using the hilbert transformer
-// and compensating delay but fascinating none the less.
-//
-// This program is for the scilab language a very powerful free math
-// package similar to Matlab with infinitely better price/performace.
-//
-// compute the prototype lowpass fir
-// length is 255 (odd) for the same symmetry reasons as the hilbert transformer
-
-len = 1023;
-l2 = floor(len/2);
-md = l2 + 1;
-l3 = md + 1;
-
-h = wfir( 'lp', len, [10.0/256 0], 'kr', [3 0] );
-
-H = fft(h);
-
-H(1:l2)=H(1:l2)*exp(%i*%pi/4);
-H(md)=0+%i*0;
-H(l3:len)=H(l3:len)*exp(-%i*%pi/4);
-
-j=real(ifft(H));
-k(1:len)=j(len:-1:1);
-x=j+%i.*k;
-X=fft(x);
-plot(abs(X))
-
-f = file('open','taps')
-for i=(1:len)
- fprintf( f, '%f%+fj', j(i), k(i) )
-end
-
-file('close',f)
-
diff --git a/gnuradio-examples/python/apps/hf_radio/input.py b/gnuradio-examples/python/apps/hf_radio/input.py
deleted file mode 100644
index 5984d8254..000000000
--- a/gnuradio-examples/python/apps/hf_radio/input.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Basic USRP setup and control.
-# It's only ever been tried with a basic rx daughter card.
-#
-# Imagine that the gnuradio boilerplate is here.
-#
-# M. Revnell 2005-Dec
-
-from gnuradio import gr, gru, optfir
-from gnuradio import usrp
-from usrpm import usrp_dbid
-import math
-
-# Put special knowlege of usrp here.
-
-class input:
- def __init__( self, decim ):
- self.freq = -2.5e6
- self.src = usrp.source_c( )
- self.subdev = usrp.pick_subdev( self.src,
- (usrp_dbid.BASIC_RX,
- usrp_dbid.TV_RX,
- usrp_dbid.TV_RX_REV_2,
- usrp_dbid.TV_RX_REV_3,
- usrp_dbid.TV_RX_MIMO,
- usrp_dbid.TV_RX_REV_2_MIMO,
- usrp_dbid.TV_RX_REV_3_MIMO))
-
- print self.subdev
-
- self.subdevice = usrp.selected_subdev( self.src,
- self.subdev )
-
- self.mux = usrp.determine_rx_mux_value( self.src,
- self.subdev )
- self.decim = decim
-
- self.adc_rate = self.src.adc_rate()
- self.usrp_rate = self.adc_rate / self.decim
- self.src.set_decim_rate( self.decim )
- self.src.set_mux( self.mux )
- usrp.tune( self.src, 0, self.subdevice, self.freq )
-
- def set_freq( self, x ):
- r = usrp.tune( self.src, 0, self.subdevice, -x )
- if r:
- self.freq = -x
diff --git a/gnuradio-examples/python/apps/hf_radio/output.py b/gnuradio-examples/python/apps/hf_radio/output.py
deleted file mode 100644
index dc9caf528..000000000
--- a/gnuradio-examples/python/apps/hf_radio/output.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Audio output with a volume control.
-#
-# M. Revnell 2005-Dec
-
-from gnuradio import gr, gru
-from gnuradio import audio
-
-class output( gr.hier_block ):
- def __init__( self, fg, rate ):
- self.out = audio.sink( rate )
- self.vol = gr.multiply_const_ff( 0.1 )
- fg.connect( self.vol, self.out )
- gr.hier_block.__init__(self, fg, self.vol, None )
-
- def set( self, val ):
- self.vol.set_k( val )
-
diff --git a/gnuradio-examples/python/apps/hf_radio/radio.py b/gnuradio-examples/python/apps/hf_radio/radio.py
deleted file mode 100755
index 9f444b916..000000000
--- a/gnuradio-examples/python/apps/hf_radio/radio.py
+++ /dev/null
@@ -1,304 +0,0 @@
-#!/usr/bin/env python
-
-# GUI interactions and high level connections handled here.
-#
-# Interacts with classes defined by wxGlade in ui.py.
-#
-# The usual gnuradio copyright boilerplate incorperated here by reference.
-#
-# M. Revnell 2006-Jan
-
-from threading import *
-import wx
-import wx.lib.evtmgr as em
-import time
-
-from gnuradio import gr, gru, eng_notation, optfir
-from gnuradio import audio
-from gnuradio import usrp
-from gnuradio import blks
-from gnuradio.wxgui import fftsink
-from gnuradio.wxgui import waterfallsink
-from gnuradio.wxgui import scopesink
-
-from input import *
-from output import *
-from ssbdemod import *
-from ssbagc import *
-from ui import *
-from math import log10
-
-class graph( gr.hier_block ):
- def __init__( self, fg ):
- self.graph = fg
- self.fe_decim = 250
- self.src = input( self.fe_decim )
- self.adc_rate = self.src.adc_rate
- self.fe_rate = self.adc_rate / self.fe_decim
- self.filter_decim = 1
- self.audio_decim = 16
- self.demod_rate = self.fe_rate / self.filter_decim
- self.audio_rate = self.demod_rate / self.audio_decim
-
- self.demod = ssb_demod( fg, self.demod_rate, self.audio_rate )
- self.agc = agc( fg )
- #self.agc = gr.agc_ff()
- self.out = output( fg, self.audio_rate )
-
- fg.connect( self.src.src,
- self.demod,
- self.agc,
- self.out )
-
- gr.hier_block.__init__( self, fg, None, None )
-
- def tune( self, freq ):
- fe_target = -freq
- self.src.set_freq( fe_target )
- fe_freq = self.src.src.rx_freq( 0 )
- demod_cf = fe_target - fe_freq
- self.demod.tune( demod_cf )
-
-class radio_frame( ui_frame ):
- def __init__( self, block, *args, **kwds ):
- ui_frame.__init__( self, *args, **kwds )
- self.block = block
- self.freq_disp.SetRange(0, 30e6)
- f = self.block.src.freq
- self.freq_disp.SetValue( -f )
- self.volume.SetRange( 0, 20 )
- self.pga.SetRange( 0, 20 )
- self.rssi_range = 1
- self.rssi.SetRange( self.rssi_range )
- self.agc_max.SetValue( str( self.rssi_range ) )
- self.spin_e0.SetValue( 50 )
- self.spin_e1.SetValue( 50 )
- self.spin_e2.SetValue( 50 )
- self.spin_e3.SetValue( 50 )
- self.spin_e4.SetValue( 50 )
- self.spin_e5.SetValue( 50 )
- self.spin_e6.SetValue( 50 )
- bw = 3.3e3
- self.bandwidth.SetValue( str( bw ) )
- self.block.demod.set_bw( bw )
- self.bw_spin.SetValue( 5 )
- agc_gain = self.block.agc.gain.k()
- self.agc_gain_s.SetValue( 5 )
- self.agc_gain.SetValue( str( agc_gain ) )
- agc_ref = self.block.agc.offs.k()
- self.agc_ref.SetValue( str( agc_ref ) )
- self.agc_ref_s.SetValue( 5 )
-
- self.fespectrum = fftsink.fft_sink_c(
- self.block.graph,
- self.fe_panel,
- fft_size=512,
- sample_rate = block.fe_rate,
- baseband_freq = 0,
- average = False,
- size = ( 680, 140 ) )
-
- self.ifspectrum = fftsink.fft_sink_c(
- self.block.graph,
- self.if_panel,
- fft_size=512,
- sample_rate = block.audio_rate,
- baseband_freq = 0,
- average = False,
- size = ( 680, 140 ) )
-
- em.eventManager.Register( self.fe_mouse,
- wx.EVT_MOTION,
- self.fespectrum.win )
-
- em.eventManager.Register( self.fe_click,
- wx.EVT_LEFT_DOWN,
- self.fespectrum.win )
-
- block.graph.connect( block.src.src, self.fespectrum )
- block.graph.connect( block.demod.xlate, self.ifspectrum )
-
- def agc_ref_up( self, event ):
- self.agc_ref_s.SetValue( 5 )
- r = float( self.agc_ref.GetValue() )
- r = r + 5
- self.agc_ref.SetValue( str( r ) )
- self.block.agc.offs.set_k( r )
-
- def agc_ref_down( self, event ):
- self.agc_ref_s.SetValue( 5 )
- r = float( self.agc_ref.GetValue() )
- r = r - 5
- self.agc_ref.SetValue( str( r ) )
- self.block.agc.offs.set_k( r )
-
- def agc_gain_up( self, event ):
- self.agc_gain_s.SetValue( 5 )
- g = float(self.agc_gain.GetValue())
- g = g + 10
- self.agc_gain.SetValue( str( g ) )
- self.block.agc.gain.set_k( g )
-
- def agc_gain_down( self, event ):
- self.agc_gain_s.SetValue( 5 )
- g = float(self.agc_gain.GetValue())
- g = g - 10
- self.agc_gain.SetValue( str( g ) )
- self.block.agc.gain.set_k( g )
-
- def fe_mouse( self, event ):
- f = int(self.freq_disp.GetValue())
- f = f+((event.GetX()-346.)*(400./610.))*1000
- self.fespectrum.win.SetToolTip(
- wx.ToolTip( eng_notation.num_to_str(f)))
-
- def fe_click( self, event ):
- f = int(self.freq_disp.GetValue())
- f = f+((event.GetX()-346.)*(400./610.))*1000
- self.tune( f )
-
- def setrssi( self, level ):
- if level < 0:
- level = 0
- if level > self.rssi_range:
- self.rssi_range = level
- self.rssi.SetRange( level )
- self.agc_max.SetValue( str( level ))
- self.rssi.SetValue( level )
- self.agc_level.SetValue( str( level ))
-
- def tune_evt( self, event ):
- f = self.freq_disp.GetValue()
- self.tune( f )
-
- def tune( self, frequency ):
- self.freq_disp.SetValue( frequency )
- self.block.tune( frequency )
-
- def up_e0( self, event ):
- self.spin_e0.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() + 1e0 )
-
- def down_e0( self, event ):
- self.spin_e0.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() - 1e0 )
-
- def up_e1( self, event ):
- self.spin_e1.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() + 1e1 )
-
- def down_e1( self, event ):
- self.spin_e1.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() - 1e1 )
-
- def up_e2( self, event ):
- self.spin_e2.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() + 1e2 )
-
- def down_e2( self, event ):
- self.spin_e2.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() - 1e2 )
-
- def up_e3( self, event ):
- self.spin_e3.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() + 1e3 )
-
- def down_e3( self, event ):
- self.spin_e3.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() - 1e3 )
-
- def up_e4( self, event ):
- self.spin_e4.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() + 1e4 )
-
- def down_e4( self, event ):
- self.spin_e4.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() - 1e4 )
-
- def up_e5( self, event ):
- self.spin_e5.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() + 1e5 )
-
- def down_e5( self, event ):
- self.spin_e5.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() - 1e5 )
-
- def up_e6( self, event ):
- self.spin_e6.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() + 1e6 )
-
- def down_e6( self, event ):
- self.spin_e6.SetValue( 50 )
- self.tune( self.freq_disp.GetValue() - 1e6 )
-
- def event_pga( self, event ):
- self.block.src.src.set_pga( 0, self.pga.GetValue())
-
- def event_vol( self, event ):
- self.block.out.set( self.volume.GetValue()/20.0 )
-
- def set_usb( self, event ):
- self.block.demod.upper_sb()
-
- def set_lsb( self, event ):
- self.block.demod.lower_sb()
-
- def set_am( self, event ):
- self.block.demod.set_am()
-
- def bw_up( self, event ):
- self.bw_spin.SetValue( 5 )
- bw = float(self.bandwidth.GetValue())
- bw = bw + 20.0
- if bw > 10e3:
- bw = 10e3
- self.bandwidth.SetValue( str( bw ) )
- self.block.demod.set_bw( bw )
-
- def bw_down( self, event ):
- self.bw_spin.SetValue( 5 )
- bw = float(self.bandwidth.GetValue())
- bw = bw - 20.0
- if bw < 50:
- bw = 50
- self.bandwidth.SetValue( str( bw ) )
- self.block.demod.set_bw( bw )
-
-
-class radio( wx.App ):
- def OnInit( self ):
- self.graph = gr.flow_graph()
- self.block = graph( self.graph )
- self.frame = radio_frame( self.block, None, -1, "Title" )
- self.frame.Show( True )
- self.SetTopWindow( self.frame )
- return True
-
-a=radio( 0 )
-
-l=gr.probe_signal_f()
-#l=gr.probe_avg_mag_sqrd_f(1,.001)
-a.graph.connect(a.block.agc.offs,l )
-#a.graph.connect(a.block.demod,l)
-
-def main_function():
- global a
- a.MainLoop()
-
-
-def rssi_function():
- global a
- global l
- while 1:
- level = l.level()
- wx.CallAfter( a.frame.setrssi, level )
- time.sleep( .1 )
-
-thread1 = Thread( target = main_function )
-thread2 = Thread( target = rssi_function )
-
-thread1.start()
-thread2.start()
-
-a.graph.start()
-
diff --git a/gnuradio-examples/python/apps/hf_radio/radio.xml b/gnuradio-examples/python/apps/hf_radio/radio.xml
deleted file mode 100644
index 81daa19b0..000000000
--- a/gnuradio-examples/python/apps/hf_radio/radio.xml
+++ /dev/null
@@ -1,441 +0,0 @@
-<?xml version="1.0"?>
-<!-- generated by wxGlade 0.4 on Fri Jan 6 09:51:36 2006 -->
-
-<application path="/root/radio/ui.py" name="" class="" option="0" language="python" top_window="" encoding="UTF-8" use_gettext="0" overwrite="0" use_new_namespace="1" for_version="2.6">
- <object class="ui_frame" name="frame_1" base="EditFrame">
- <style>wxDEFAULT_FRAME_STYLE</style>
- <title>frame_1</title>
- <object class="wxStaticBoxSizer" name="sizer_1" base="EditStaticBoxSizer">
- <orient>wxVERTICAL</orient>
- <label>sizer_1</label>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxBoxSizer" name="sizer_2" base="EditBoxSizer">
- <orient>wxHORIZONTAL</orient>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxBoxSizer" name="sizer_3" base="EditBoxSizer">
- <orient>wxVERTICAL</orient>
- <object class="sizeritem">
- <flag>wxEXPAND|wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxSpinCtrl" name="freq_disp" base="EditSpinCtrl">
- <font>
- <size>32</size>
- <family>default</family>
- <style>normal</style>
- <weight>normal</weight>
- <underlined>0</underlined>
- <face></face>
- </font>
- <events>
- <handler event="EVT_SPINCTRL">tune_evt</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxGridSizer" name="grid_sizer_1" base="EditGridSizer">
- <hgap>0</hgap>
- <rows>2</rows>
- <cols>3</cols>
- <vgap>0</vgap>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxGridSizer" name="grid_sizer_2" base="EditGridSizer">
- <hgap>0</hgap>
- <rows>1</rows>
- <cols>7</cols>
- <vgap>0</vgap>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinButton" name="spin_e6" base="EditSpinButton">
- <events>
- <handler event="EVT_SPIN_UP">up_e6</handler>
- <handler event="EVT_SPIN_DOWN">down_e6</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinButton" name="spin_e5" base="EditSpinButton">
- <events>
- <handler event="EVT_SPIN_UP">up_e5</handler>
- <handler event="EVT_SPIN_DOWN">down_e5</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinButton" name="spin_e4" base="EditSpinButton">
- <events>
- <handler event="EVT_SPIN_UP">up_e4</handler>
- <handler event="EVT_SPIN_DOWN">down_e4</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinButton" name="spin_e3" base="EditSpinButton">
- <events>
- <handler event="EVT_SPIN_UP">up_e3</handler>
- <handler event="EVT_SPIN_DOWN">down_e3</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinButton" name="spin_e2" base="EditSpinButton">
- <events>
- <handler event="EVT_SPIN_UP">up_e2</handler>
- <handler event="EVT_SPIN_DOWN">down_e2</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinButton" name="spin_e1" base="EditSpinButton">
- <events>
- <handler event="EVT_SPIN_UP">up_e1</handler>
- <handler event="EVT_SPIN_DOWN">down_e1</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinButton" name="spin_e0" base="EditSpinButton">
- <events>
- <handler event="EVT_SPIN_UP">up_e0</handler>
- <handler event="EVT_SPIN_DOWN">down_e0</handler>
- </events>
- </object>
- </object>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxPanel" name="panel_1" base="EditPanel">
- <style>wxTAB_TRAVERSAL</style>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxPanel" name="panel_2" base="EditPanel">
- <style>wxTAB_TRAVERSAL</style>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxButton" name="button_lsb" base="EditButton">
- <label>LSB</label>
- <events>
- <handler event="EVT_BUTTON">set_lsb</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxButton" name="button_usb" base="EditButton">
- <label>USB</label>
- <events>
- <handler event="EVT_BUTTON">set_usb</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxButton" name="button_am" base="EditButton">
- <label>AM</label>
- <events>
- <handler event="EVT_BUTTON">set_am</handler>
- </events>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxBoxSizer" name="sizer_4" base="EditBoxSizer">
- <orient>wxVERTICAL</orient>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxGridSizer" name="grid_sizer_3" base="EditGridSizer">
- <hgap>0</hgap>
- <rows>2</rows>
- <cols>4</cols>
- <vgap>0</vgap>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxStaticText" name="label_1" base="EditStaticText">
- <attribute>1</attribute>
- <label>VOLUME</label>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxStaticText" name="label_2" base="EditStaticText">
- <attribute>1</attribute>
- <label>PGA</label>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxTextCtrl" name="agc_level" base="EditTextCtrl">
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxStaticText" name="label_6" base="EditStaticText">
- <attribute>1</attribute>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinCtrl" name="volume" base="EditSpinCtrl">
- <events>
- <handler event="EVT_SPINCTRL">event_vol</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinCtrl" name="pga" base="EditSpinCtrl">
- <events>
- <handler event="EVT_SPINCTRL">event_pga</handler>
- </events>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxTextCtrl" name="agc_max" base="EditTextCtrl">
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxStaticText" name="label_7" base="EditStaticText">
- <attribute>1</attribute>
- </object>
- </object>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxGridSizer" name="grid_sizer_4" base="EditGridSizer">
- <hgap>0</hgap>
- <rows>2</rows>
- <cols>4</cols>
- <vgap>0</vgap>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxStaticText" name="label_4" base="EditStaticText">
- <attribute>1</attribute>
- <label>AGC AUTHORITY</label>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxStaticText" name="label_5" base="EditStaticText">
- <attribute>1</attribute>
- <label>AGC REF LVL</label>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxStaticText" name="label_3" base="EditStaticText">
- <attribute>1</attribute>
- <label>BANDWIDTH</label>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxStaticText" name="label_8" base="EditStaticText">
- <attribute>1</attribute>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxBoxSizer" name="sizer_6" base="EditBoxSizer">
- <orient>wxHORIZONTAL</orient>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxTextCtrl" name="agc_gain" base="EditTextCtrl">
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinButton" name="agc_gain_s" base="EditSpinButton">
- <events>
- <handler event="EVT_SPIN_UP">agc_gain_up</handler>
- <handler event="EVT_SPIN_DOWN">agc_gain_down</handler>
- </events>
- </object>
- </object>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxBoxSizer" name="sizer_7" base="EditBoxSizer">
- <orient>wxHORIZONTAL</orient>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxTextCtrl" name="agc_ref" base="EditTextCtrl">
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinButton" name="agc_ref_s" base="EditSpinButton">
- <events>
- <handler event="EVT_SPIN_UP">agc_ref_up</handler>
- <handler event="EVT_SPIN_DOWN">agc_ref_down</handler>
- </events>
- </object>
- </object>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxBoxSizer" name="sizer_5" base="EditBoxSizer">
- <orient>wxHORIZONTAL</orient>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxTextCtrl" name="bandwidth" base="EditTextCtrl">
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxSpinButton" name="bw_spin" base="EditSpinButton">
- <events>
- <handler event="EVT_SPIN_UP">bw_up</handler>
- <handler event="EVT_SPIN_DOWN">bw_down</handler>
- </events>
- </object>
- </object>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>0</option>
- <object class="wxStaticText" name="label_9" base="EditStaticText">
- <attribute>1</attribute>
- </object>
- </object>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND|wxADJUST_MINSIZE</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxGauge" name="rssi" base="EditGauge">
- <foreground>#ff0000</foreground>
- <style>wxGA_HORIZONTAL|wxGA_SMOOTH</style>
- <range>10</range>
- <size>315, 10</size>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxPanel" name="fe_panel" base="EditPanel">
- <style>wxTAB_TRAVERSAL</style>
- </object>
- </object>
- <object class="sizeritem">
- <flag>wxEXPAND</flag>
- <border>0</border>
- <option>1</option>
- <object class="wxPanel" name="if_panel" base="EditPanel">
- <style>wxTAB_TRAVERSAL</style>
- </object>
- </object>
- </object>
- </object>
-</application>
diff --git a/gnuradio-examples/python/apps/hf_radio/ssb_taps b/gnuradio-examples/python/apps/hf_radio/ssb_taps
deleted file mode 100644
index 0ef3bbf26..000000000
--- a/gnuradio-examples/python/apps/hf_radio/ssb_taps
+++ /dev/null
@@ -1,1023 +0,0 @@
--0.000035-0.000009j
--0.000066-0.000020j
--0.000080-0.000044j
--0.000084-0.000071j
--0.000077-0.000100j
--0.000063-0.000127j
--0.000041-0.000150j
--0.000013-0.000167j
-0.000020-0.000177j
-0.000054-0.000180j
-0.000089-0.000174j
-0.000121-0.000161j
-0.000150-0.000140j
-0.000173-0.000113j
-0.000188-0.000081j
-0.000196-0.000046j
-0.000194-0.000011j
-0.000184+0.000022j
-0.000165+0.000052j
-0.000139+0.000077j
-0.000107+0.000093j
-0.000071+0.000102j
-0.000034+0.000101j
--0.000002+0.000090j
--0.000036+0.000070j
--0.000064+0.000042j
--0.000086+0.000006j
--0.000098-0.000034j
--0.000101-0.000077j
--0.000093-0.000120j
--0.000076-0.000161j
--0.000049-0.000197j
--0.000014-0.000227j
-0.000026-0.000248j
-0.000071-0.000259j
-0.000117-0.000259j
-0.000162-0.000249j
-0.000203-0.000228j
-0.000237-0.000199j
-0.000263-0.000162j
-0.000279-0.000120j
-0.000284-0.000075j
-0.000278-0.000031j
-0.000260+0.000010j
-0.000232+0.000045j
-0.000196+0.000073j
-0.000153+0.000090j
-0.000106+0.000095j
-0.000059+0.000089j
-0.000014+0.000071j
--0.000027+0.000041j
--0.000059+0.000002j
--0.000082-0.000046j
--0.000093-0.000098j
--0.000091-0.000152j
--0.000077-0.000206j
--0.000050-0.000255j
--0.000012-0.000298j
-0.000034-0.000330j
-0.000088-0.000351j
-0.000145-0.000359j
-0.000202-0.000354j
-0.000256-0.000335j
-0.000304-0.000304j
-0.000343-0.000262j
-0.000370-0.000213j
-0.000384-0.000158j
-0.000384-0.000102j
-0.000369-0.000048j
-0.000341+0.000002j
-0.000302+0.000042j
-0.000252+0.000072j
-0.000196+0.000088j
-0.000137+0.000089j
-0.000078+0.000075j
-0.000024+0.000047j
--0.000023+0.000005j
--0.000059-0.000048j
--0.000082-0.000109j
--0.000090-0.000175j
--0.000081-0.000242j
--0.000058-0.000306j
--0.000019-0.000364j
-0.000032-0.000411j
-0.000093-0.000445j
-0.000161-0.000465j
-0.000232-0.000467j
-0.000301-0.000453j
-0.000365-0.000423j
-0.000419-0.000379j
-0.000461-0.000323j
-0.000487-0.000259j
-0.000497-0.000190j
-0.000489-0.000121j
-0.000464-0.000056j
-0.000423+0.000001j
-0.000369+0.000046j
-0.000304+0.000076j
-0.000233+0.000089j
-0.000160+0.000083j
-0.000089+0.000060j
-0.000025+0.000018j
--0.000027-0.000038j
--0.000065-0.000107j
--0.000086-0.000185j
--0.000088-0.000266j
--0.000071-0.000347j
--0.000035-0.000422j
-0.000019-0.000487j
-0.000086-0.000538j
-0.000164-0.000573j
-0.000248-0.000588j
-0.000334-0.000582j
-0.000415-0.000557j
-0.000488-0.000513j
-0.000548-0.000452j
-0.000592-0.000379j
-0.000616-0.000297j
-0.000619-0.000213j
-0.000600-0.000130j
-0.000561-0.000054j
-0.000504+0.000010j
-0.000432+0.000058j
-0.000350+0.000086j
-0.000261+0.000093j
-0.000173+0.000078j
-0.000090+0.000040j
-0.000017-0.000017j
--0.000040-0.000092j
--0.000078-0.000180j
--0.000095-0.000275j
--0.000088-0.000374j
--0.000058-0.000469j
--0.000006-0.000555j
-0.000065-0.000627j
-0.000152-0.000681j
-0.000250-0.000712j
-0.000352-0.000720j
-0.000454-0.000703j
-0.000548-0.000663j
-0.000630-0.000601j
-0.000694-0.000521j
-0.000737-0.000428j
-0.000755-0.000327j
-0.000748-0.000225j
-0.000715-0.000128j
-0.000659-0.000042j
-0.000582+0.000028j
-0.000490+0.000077j
-0.000387+0.000101j
-0.000280+0.000099j
-0.000175+0.000070j
-0.000080+0.000015j
--0.000001-0.000063j
--0.000061-0.000159j
--0.000097-0.000268j
--0.000106-0.000385j
--0.000087-0.000501j
--0.000040-0.000611j
-0.000032-0.000708j
-0.000125-0.000786j
-0.000235-0.000839j
-0.000354-0.000866j
-0.000477-0.000863j
-0.000595-0.000831j
-0.000702-0.000772j
-0.000792-0.000688j
-0.000859-0.000585j
-0.000898-0.000469j
-0.000907-0.000347j
-0.000886-0.000227j
-0.000835-0.000115j
-0.000757-0.000019j
-0.000657+0.000055j
-0.000540+0.000102j
-0.000415+0.000119j
-0.000287+0.000103j
-0.000165+0.000056j
-0.000058-0.000020j
--0.000029-0.000122j
--0.000090-0.000243j
--0.000121-0.000378j
--0.000118-0.000517j
--0.000082-0.000653j
--0.000014-0.000778j
-0.000082-0.000885j
-0.000201-0.000966j
-0.000337-0.001017j
-0.000481-0.001034j
-0.000626-0.001016j
-0.000762-0.000965j
-0.000882-0.000882j
-0.000978-0.000772j
-0.001044-0.000643j
-0.001076-0.000501j
-0.001072-0.000355j
-0.001032-0.000215j
-0.000958-0.000089j
-0.000854+0.000016j
-0.000726+0.000091j
-0.000582+0.000133j
-0.000431+0.000138j
-0.000281+0.000105j
-0.000143+0.000035j
-0.000024-0.000068j
--0.000068-0.000199j
--0.000126-0.000350j
--0.000147-0.000513j
--0.000128-0.000677j
--0.000070-0.000834j
-0.000024-0.000974j
-0.000150-0.001089j
-0.000300-0.001171j
-0.000465-0.001216j
-0.000637-0.001219j
-0.000805-0.001182j
-0.000960-0.001105j
-0.001091-0.000993j
-0.001191-0.000853j
-0.001253-0.000692j
-0.001274-0.000521j
-0.001252-0.000350j
-0.001188-0.000189j
-0.001085-0.000049j
-0.000950+0.000062j
-0.000790+0.000136j
-0.000614+0.000168j
-0.000435+0.000156j
-0.000261+0.000099j
-0.000105+0.000000j
--0.000024-0.000136j
--0.000117-0.000301j
--0.000169-0.000486j
--0.000175-0.000680j
--0.000134-0.000872j
--0.000048-0.001051j
-0.000079-0.001206j
-0.000240-0.001326j
-0.000426-0.001406j
-0.000626-0.001439j
-0.000829-0.001424j
-0.001022-0.001361j
-0.001195-0.001252j
-0.001336-0.001106j
-0.001437-0.000929j
-0.001491-0.000733j
-0.001496-0.000529j
-0.001449-0.000330j
-0.001354-0.000148j
-0.001217+0.000005j
-0.001044+0.000120j
-0.000846+0.000188j
-0.000635+0.000206j
-0.000424+0.000170j
-0.000226+0.000083j
-0.000053-0.000053j
--0.000084-0.000228j
--0.000176-0.000434j
--0.000216-0.000659j
--0.000201-0.000889j
--0.000131-0.001111j
--0.000009-0.001312j
-0.000158-0.001480j
-0.000362-0.001604j
-0.000590-0.001677j
-0.000829-0.001694j
-0.001066-0.001653j
-0.001286-0.001556j
-0.001477-0.001408j
-0.001626-0.001219j
-0.001724-0.001000j
-0.001765-0.000762j
-0.001746-0.000522j
-0.001668-0.000293j
-0.001534-0.000090j
-0.001353+0.000075j
-0.001135+0.000190j
-0.000893+0.000247j
-0.000642+0.000243j
-0.000396+0.000176j
-0.000172+0.000049j
--0.000017-0.000131j
--0.000159-0.000355j
--0.000244-0.000609j
--0.000266-0.000880j
--0.000222-0.001151j
--0.000114-0.001406j
-0.000053-0.001630j
-0.000270-0.001810j
-0.000524-0.001934j
-0.000802-0.001994j
-0.001087-0.001987j
-0.001362-0.001911j
-0.001611-0.001772j
-0.001819-0.001576j
-0.001973-0.001336j
-0.002063-0.001065j
-0.002084-0.000779j
-0.002033-0.000497j
-0.001914-0.000236j
-0.001732-0.000011j
-0.001498+0.000162j
-0.001225+0.000272j
-0.000931+0.000312j
-0.000633+0.000277j
-0.000349+0.000168j
-0.000097-0.000009j
--0.000107-0.000246j
--0.000250-0.000528j
--0.000322-0.000841j
--0.000316-0.001166j
--0.000233-0.001484j
--0.000076-0.001775j
-0.000148-0.002024j
-0.000426-0.002213j
-0.000743-0.002332j
-0.001080-0.002373j
-0.001418-0.002332j
-0.001736-0.002211j
-0.002017-0.002017j
-0.002241-0.001760j
-0.002397-0.001457j
-0.002473-0.001124j
-0.002464-0.000783j
-0.002371-0.000453j
-0.002198-0.000156j
-0.001954+0.000091j
-0.001654+0.000269j
-0.001316+0.000369j
-0.000959+0.000381j
-0.000606+0.000303j
-0.000279+0.000139j
--0.000003-0.000103j
--0.000220-0.000411j
--0.000359-0.000768j
--0.000408-0.001152j
--0.000365-0.001542j
--0.000229-0.001915j
--0.000006-0.002248j
-0.000292-0.002522j
-0.000648-0.002719j
-0.001042-0.002826j
-0.001452-0.002837j
-0.001853-0.002750j
-0.002223-0.002569j
-0.002537-0.002304j
-0.002778-0.001971j
-0.002930-0.001588j
-0.002984-0.001179j
-0.002933-0.000770j
-0.002782-0.000384j
-0.002538-0.000046j
-0.002215+0.000222j
-0.001831+0.000402j
-0.001410+0.000481j
-0.000976+0.000452j
-0.000557+0.000316j
-0.000179+0.000077j
--0.000134-0.000252j
--0.000362-0.000654j
--0.000490-0.001105j
--0.000506-0.001580j
--0.000407-0.002052j
--0.000197-0.002492j
-0.000113-0.002875j
-0.000508-0.003176j
-0.000966-0.003377j
-0.001460-0.003464j
-0.001963-0.003432j
-0.002444-0.003281j
-0.002876-0.003019j
-0.003231-0.002659j
-0.003488-0.002224j
-0.003631-0.001739j
-0.003649-0.001233j
-0.003540-0.000737j
-0.003309-0.000282j
-0.002969+0.000103j
-0.002539+0.000393j
-0.002044+0.000568j
-0.001515+0.000614j
-0.000982+0.000525j
-0.000480+0.000304j
-0.000039-0.000039j
--0.000311-0.000487j
--0.000547-0.001016j
--0.000652-0.001595j
--0.000615-0.002193j
--0.000436-0.002773j
--0.000122-0.003301j
-0.000311-0.003746j
-0.000842-0.004081j
-0.001440-0.004282j
-0.002071-0.004338j
-0.002700-0.004243j
-0.003289-0.004000j
-0.003803-0.003622j
-0.004210-0.003132j
-0.004485-0.002556j
-0.004610-0.001930j
-0.004574-0.001291j
-0.004379-0.000679j
-0.004034-0.000133j
-0.003558+0.000313j
-0.002977+0.000627j
-0.002327+0.000787j
-0.001647+0.000779j
-0.000977+0.000598j
-0.000360+0.000250j
--0.000163-0.000249j
--0.000559-0.000872j
--0.000799-0.001587j
--0.000864-0.002354j
--0.000744-0.003129j
--0.000442-0.003866j
-0.000031-0.004522j
-0.000651-0.005057j
-0.001385-0.005437j
-0.002193-0.005637j
-0.003030-0.005643j
-0.003848-0.005451j
-0.004597-0.005069j
-0.005234-0.004519j
-0.005718-0.003830j
-0.006019-0.003044j
-0.006114-0.002206j
-0.005997-0.001368j
-0.005669-0.000583j
-0.005147+0.000099j
-0.004460+0.000631j
-0.003647+0.000975j
-0.002757+0.001105j
-0.001842+0.001003j
-0.000961+0.000668j
-0.000168+0.000111j
--0.000482-0.000643j
--0.000944-0.001555j
--0.001183-0.002578j
--0.001176-0.003656j
--0.000912-0.004727j
--0.000397-0.005728j
-0.000346-0.006601j
-0.001284-0.007292j
-0.002368-0.007755j
-0.003540-0.007959j
-0.004735-0.007886j
-0.005885-0.007535j
-0.006922-0.006922j
-0.007782-0.006078j
-0.008412-0.005050j
-0.008769-0.003898j
-0.008825-0.002691j
-0.008572-0.001504j
-0.008016-0.000412j
-0.007185+0.000510j
-0.006123+0.001196j
-0.004891+0.001591j
-0.003560+0.001657j
-0.002212+0.001372j
-0.000933+0.000734j
--0.000192-0.000236j
--0.001083-0.001500j
--0.001672-0.002998j
--0.001905-0.004655j
--0.001747-0.006384j
--0.001182-0.008090j
--0.000222-0.009676j
-0.001101-0.011045j
-0.002732-0.012114j
-0.004593-0.012810j
-0.006591-0.013081j
-0.008621-0.012896j
-0.010571-0.012253j
-0.012328-0.011175j
-0.013785-0.009712j
-0.014847-0.007941j
-0.015438-0.005962j
-0.015507-0.003893j
-0.015029-0.001863j
-0.014011-0.000011j
-0.012494+0.001529j
-0.010549+0.002630j
-0.008277+0.003179j
-0.005809+0.003090j
-0.003294+0.002304j
-0.000896+0.000795j
--0.001212-0.001423j
--0.002859-0.004299j
--0.003886-0.007744j
--0.004151-0.011630j
--0.003539-0.015799j
--0.001969-0.020066j
-0.000601-0.024225j
-0.004168-0.028064j
-0.008684-0.031367j
-0.014056-0.033927j
-0.020145-0.035558j
-0.026775-0.036101j
-0.033735-0.035433j
-0.040789-0.033475j
-0.047684-0.030197j
-0.054164-0.025619j
-0.059974-0.019815j
-0.064878-0.012907j
-0.068665-0.005067j
-0.071159+0.003494j
-0.072228+0.012531j
-0.071791+0.021776j
-0.069818+0.030947j
-0.066339+0.039761j
-0.061435+0.047944j
-0.055243+0.055243j
-0.047944+0.061435j
-0.039761+0.066339j
-0.030947+0.069818j
-0.021776+0.071791j
-0.012531+0.072228j
-0.003494+0.071159j
--0.005067+0.068665j
--0.012907+0.064878j
--0.019815+0.059974j
--0.025619+0.054164j
--0.030197+0.047684j
--0.033475+0.040789j
--0.035433+0.033735j
--0.036101+0.026775j
--0.035558+0.020145j
--0.033927+0.014056j
--0.031367+0.008684j
--0.028064+0.004168j
--0.024225+0.000601j
--0.020066-0.001969j
--0.015799-0.003539j
--0.011630-0.004151j
--0.007744-0.003886j
--0.004299-0.002859j
--0.001423-0.001212j
-0.000795+0.000896j
-0.002304+0.003294j
-0.003090+0.005809j
-0.003179+0.008277j
-0.002630+0.010549j
-0.001529+0.012494j
--0.000011+0.014011j
--0.001863+0.015029j
--0.003893+0.015507j
--0.005962+0.015438j
--0.007941+0.014847j
--0.009712+0.013785j
--0.011175+0.012328j
--0.012253+0.010571j
--0.012896+0.008621j
--0.013081+0.006591j
--0.012810+0.004593j
--0.012114+0.002732j
--0.011045+0.001101j
--0.009676-0.000222j
--0.008090-0.001182j
--0.006384-0.001747j
--0.004655-0.001905j
--0.002998-0.001672j
--0.001500-0.001083j
--0.000236-0.000192j
-0.000734+0.000933j
-0.001372+0.002212j
-0.001657+0.003560j
-0.001591+0.004891j
-0.001196+0.006123j
-0.000510+0.007185j
--0.000412+0.008016j
--0.001504+0.008572j
--0.002691+0.008825j
--0.003898+0.008769j
--0.005050+0.008412j
--0.006078+0.007782j
--0.006922+0.006922j
--0.007535+0.005885j
--0.007886+0.004735j
--0.007959+0.003540j
--0.007755+0.002368j
--0.007292+0.001284j
--0.006601+0.000346j
--0.005728-0.000397j
--0.004727-0.000912j
--0.003656-0.001176j
--0.002578-0.001183j
--0.001555-0.000944j
--0.000643-0.000482j
-0.000111+0.000168j
-0.000668+0.000961j
-0.001003+0.001842j
-0.001105+0.002757j
-0.000975+0.003647j
-0.000631+0.004460j
-0.000099+0.005147j
--0.000583+0.005669j
--0.001368+0.005997j
--0.002206+0.006114j
--0.003044+0.006019j
--0.003830+0.005718j
--0.004519+0.005234j
--0.005069+0.004597j
--0.005451+0.003848j
--0.005643+0.003030j
--0.005637+0.002193j
--0.005437+0.001385j
--0.005057+0.000651j
--0.004522+0.000031j
--0.003866-0.000442j
--0.003129-0.000744j
--0.002354-0.000864j
--0.001587-0.000799j
--0.000872-0.000559j
--0.000249-0.000163j
-0.000250+0.000360j
-0.000598+0.000977j
-0.000779+0.001647j
-0.000787+0.002327j
-0.000627+0.002977j
-0.000313+0.003558j
--0.000133+0.004034j
--0.000679+0.004379j
--0.001291+0.004574j
--0.001930+0.004610j
--0.002556+0.004485j
--0.003132+0.004210j
--0.003622+0.003803j
--0.004000+0.003289j
--0.004243+0.002700j
--0.004338+0.002071j
--0.004282+0.001440j
--0.004081+0.000842j
--0.003746+0.000311j
--0.003301-0.000122j
--0.002773-0.000436j
--0.002193-0.000615j
--0.001595-0.000652j
--0.001016-0.000547j
--0.000487-0.000311j
--0.000039+0.000039j
-0.000304+0.000480j
-0.000525+0.000982j
-0.000614+0.001515j
-0.000568+0.002044j
-0.000393+0.002539j
-0.000103+0.002969j
--0.000282+0.003309j
--0.000737+0.003540j
--0.001233+0.003649j
--0.001739+0.003631j
--0.002224+0.003488j
--0.002659+0.003231j
--0.003019+0.002876j
--0.003281+0.002444j
--0.003432+0.001963j
--0.003464+0.001460j
--0.003377+0.000966j
--0.003176+0.000508j
--0.002875+0.000113j
--0.002492-0.000197j
--0.002052-0.000407j
--0.001580-0.000506j
--0.001105-0.000490j
--0.000654-0.000362j
--0.000252-0.000134j
-0.000077+0.000179j
-0.000316+0.000557j
-0.000452+0.000976j
-0.000481+0.001410j
-0.000402+0.001831j
-0.000222+0.002215j
--0.000046+0.002538j
--0.000384+0.002782j
--0.000770+0.002933j
--0.001179+0.002984j
--0.001588+0.002930j
--0.001971+0.002778j
--0.002304+0.002537j
--0.002569+0.002223j
--0.002750+0.001853j
--0.002837+0.001452j
--0.002826+0.001042j
--0.002719+0.000648j
--0.002522+0.000292j
--0.002248-0.000006j
--0.001915-0.000229j
--0.001542-0.000365j
--0.001152-0.000408j
--0.000768-0.000359j
--0.000411-0.000220j
--0.000103-0.000003j
-0.000139+0.000279j
-0.000303+0.000606j
-0.000381+0.000959j
-0.000369+0.001316j
-0.000269+0.001654j
-0.000091+0.001954j
--0.000156+0.002198j
--0.000453+0.002371j
--0.000783+0.002464j
--0.001124+0.002473j
--0.001457+0.002397j
--0.001760+0.002241j
--0.002017+0.002017j
--0.002211+0.001736j
--0.002332+0.001418j
--0.002373+0.001080j
--0.002332+0.000743j
--0.002213+0.000426j
--0.002024+0.000148j
--0.001775-0.000076j
--0.001484-0.000233j
--0.001166-0.000316j
--0.000841-0.000322j
--0.000528-0.000250j
--0.000246-0.000107j
--0.000009+0.000097j
-0.000168+0.000349j
-0.000277+0.000633j
-0.000312+0.000931j
-0.000272+0.001225j
-0.000162+0.001498j
--0.000011+0.001732j
--0.000236+0.001914j
--0.000497+0.002033j
--0.000779+0.002084j
--0.001065+0.002063j
--0.001336+0.001973j
--0.001576+0.001819j
--0.001772+0.001611j
--0.001911+0.001362j
--0.001987+0.001087j
--0.001994+0.000802j
--0.001934+0.000524j
--0.001810+0.000270j
--0.001630+0.000053j
--0.001406-0.000114j
--0.001151-0.000222j
--0.000880-0.000266j
--0.000609-0.000244j
--0.000355-0.000159j
--0.000131-0.000017j
-0.000049+0.000172j
-0.000176+0.000396j
-0.000243+0.000642j
-0.000247+0.000893j
-0.000190+0.001135j
-0.000075+0.001353j
--0.000090+0.001534j
--0.000293+0.001668j
--0.000522+0.001746j
--0.000762+0.001765j
--0.001000+0.001724j
--0.001219+0.001626j
--0.001408+0.001477j
--0.001556+0.001286j
--0.001653+0.001066j
--0.001694+0.000829j
--0.001677+0.000590j
--0.001604+0.000362j
--0.001480+0.000158j
--0.001312-0.000009j
--0.001111-0.000131j
--0.000889-0.000201j
--0.000659-0.000216j
--0.000434-0.000176j
--0.000228-0.000084j
--0.000053+0.000053j
-0.000083+0.000226j
-0.000170+0.000424j
-0.000206+0.000635j
-0.000188+0.000846j
-0.000120+0.001044j
-0.000005+0.001217j
--0.000148+0.001354j
--0.000330+0.001449j
--0.000529+0.001496j
--0.000733+0.001491j
--0.000929+0.001437j
--0.001106+0.001336j
--0.001252+0.001195j
--0.001361+0.001022j
--0.001424+0.000829j
--0.001439+0.000626j
--0.001406+0.000426j
--0.001326+0.000240j
--0.001206+0.000079j
--0.001051-0.000048j
--0.000872-0.000134j
--0.000680-0.000175j
--0.000486-0.000169j
--0.000301-0.000117j
--0.000136-0.000024j
-0.000000+0.000105j
-0.000099+0.000261j
-0.000156+0.000435j
-0.000168+0.000614j
-0.000136+0.000790j
-0.000062+0.000950j
--0.000049+0.001085j
--0.000189+0.001188j
--0.000350+0.001252j
--0.000521+0.001274j
--0.000692+0.001253j
--0.000853+0.001191j
--0.000993+0.001091j
--0.001105+0.000960j
--0.001182+0.000805j
--0.001219+0.000637j
--0.001216+0.000465j
--0.001171+0.000300j
--0.001089+0.000150j
--0.000974+0.000024j
--0.000834-0.000070j
--0.000677-0.000128j
--0.000513-0.000147j
--0.000350-0.000126j
--0.000199-0.000068j
--0.000068+0.000024j
-0.000035+0.000143j
-0.000105+0.000281j
-0.000138+0.000431j
-0.000133+0.000582j
-0.000091+0.000726j
-0.000016+0.000854j
--0.000089+0.000958j
--0.000215+0.001032j
--0.000355+0.001072j
--0.000501+0.001076j
--0.000643+0.001044j
--0.000772+0.000978j
--0.000882+0.000882j
--0.000965+0.000762j
--0.001016+0.000626j
--0.001034+0.000481j
--0.001017+0.000337j
--0.000966+0.000201j
--0.000885+0.000082j
--0.000778-0.000014j
--0.000653-0.000082j
--0.000517-0.000118j
--0.000378-0.000121j
--0.000243-0.000090j
--0.000122-0.000029j
--0.000020+0.000058j
-0.000056+0.000165j
-0.000103+0.000287j
-0.000119+0.000415j
-0.000102+0.000540j
-0.000055+0.000657j
--0.000019+0.000757j
--0.000115+0.000835j
--0.000227+0.000886j
--0.000347+0.000907j
--0.000469+0.000898j
--0.000585+0.000859j
--0.000688+0.000792j
--0.000772+0.000702j
--0.000831+0.000595j
--0.000863+0.000477j
--0.000866+0.000354j
--0.000839+0.000235j
--0.000786+0.000125j
--0.000708+0.000032j
--0.000611-0.000040j
--0.000501-0.000087j
--0.000385-0.000106j
--0.000268-0.000097j
--0.000159-0.000061j
--0.000063-0.000001j
-0.000015+0.000080j
-0.000070+0.000175j
-0.000099+0.000280j
-0.000101+0.000387j
-0.000077+0.000490j
-0.000028+0.000582j
--0.000042+0.000659j
--0.000128+0.000715j
--0.000225+0.000748j
--0.000327+0.000755j
--0.000428+0.000737j
--0.000521+0.000694j
--0.000601+0.000630j
--0.000663+0.000548j
--0.000703+0.000454j
--0.000720+0.000352j
--0.000712+0.000250j
--0.000681+0.000152j
--0.000627+0.000065j
--0.000555-0.000006j
--0.000469-0.000058j
--0.000374-0.000088j
--0.000275-0.000095j
--0.000180-0.000078j
--0.000092-0.000040j
--0.000017+0.000017j
-0.000040+0.000090j
-0.000078+0.000173j
-0.000093+0.000261j
-0.000086+0.000350j
-0.000058+0.000432j
-0.000010+0.000504j
--0.000054+0.000561j
--0.000130+0.000600j
--0.000213+0.000619j
--0.000297+0.000616j
--0.000379+0.000592j
--0.000452+0.000548j
--0.000513+0.000488j
--0.000557+0.000415j
--0.000582+0.000334j
--0.000588+0.000248j
--0.000573+0.000164j
--0.000538+0.000086j
--0.000487+0.000019j
--0.000422-0.000035j
--0.000347-0.000071j
--0.000266-0.000088j
--0.000185-0.000086j
--0.000107-0.000065j
--0.000038-0.000027j
-0.000018+0.000025j
-0.000060+0.000089j
-0.000083+0.000160j
-0.000089+0.000233j
-0.000076+0.000304j
-0.000046+0.000369j
-0.000001+0.000423j
--0.000056+0.000464j
--0.000121+0.000489j
--0.000190+0.000497j
--0.000259+0.000487j
--0.000323+0.000461j
--0.000379+0.000419j
--0.000423+0.000365j
--0.000453+0.000301j
--0.000467+0.000232j
--0.000465+0.000161j
--0.000445+0.000093j
--0.000411+0.000032j
--0.000364-0.000019j
--0.000306-0.000058j
--0.000242-0.000081j
--0.000175-0.000090j
--0.000109-0.000082j
--0.000048-0.000059j
-0.000005-0.000023j
-0.000047+0.000024j
-0.000075+0.000078j
-0.000089+0.000137j
-0.000088+0.000196j
-0.000072+0.000252j
-0.000042+0.000302j
-0.000002+0.000341j
--0.000048+0.000369j
--0.000102+0.000384j
--0.000158+0.000384j
--0.000213+0.000370j
--0.000262+0.000343j
--0.000304+0.000304j
--0.000335+0.000256j
--0.000354+0.000202j
--0.000359+0.000145j
--0.000351+0.000088j
--0.000330+0.000034j
--0.000298-0.000012j
--0.000255-0.000050j
--0.000206-0.000077j
--0.000152-0.000091j
--0.000098-0.000093j
--0.000046-0.000082j
-0.000002-0.000059j
-0.000041-0.000027j
-0.000071+0.000014j
-0.000089+0.000059j
-0.000095+0.000106j
-0.000090+0.000153j
-0.000073+0.000196j
-0.000045+0.000232j
-0.000010+0.000260j
--0.000031+0.000278j
--0.000075+0.000284j
--0.000120+0.000279j
--0.000162+0.000263j
--0.000199+0.000237j
--0.000228+0.000203j
--0.000249+0.000162j
--0.000259+0.000117j
--0.000259+0.000071j
--0.000248+0.000026j
--0.000227-0.000014j
--0.000197-0.000049j
--0.000161-0.000076j
--0.000120-0.000093j
--0.000077-0.000101j
--0.000034-0.000098j
-0.000006-0.000086j
-0.000042-0.000064j
-0.000070-0.000036j
-0.000090-0.000002j
-0.000101+0.000034j
-0.000102+0.000071j
-0.000093+0.000107j
-0.000077+0.000139j
-0.000052+0.000165j
-0.000022+0.000184j
--0.000011+0.000194j
--0.000046+0.000196j
--0.000081+0.000188j
--0.000113+0.000173j
--0.000140+0.000150j
--0.000161+0.000121j
--0.000174+0.000089j
--0.000180+0.000054j
--0.000177+0.000020j
--0.000167-0.000013j
--0.000150-0.000041j
--0.000127-0.000063j
--0.000100-0.000077j
--0.000071-0.000084j
--0.000044-0.000080j
--0.000020-0.000066j
--0.000009-0.000035j
diff --git a/gnuradio-examples/python/apps/hf_radio/ssbagc.py b/gnuradio-examples/python/apps/hf_radio/ssbagc.py
deleted file mode 100644
index fdf40bc6b..000000000
--- a/gnuradio-examples/python/apps/hf_radio/ssbagc.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# post detection agc processing
-#
-# Imagine that the usual gnuradio copyright stuff is right here.
-#
-# This agc strategy is copied more or less verbatim from
-# weaver_isb_am1_usrp3.py by cswiger.
-#
-# Thanks.
-#
-# Then modified in a variety of ways.
-#
-# There doesn't appear to be a way to hook multiple blocks to the
-# input port when building a hier block like this. Thus the
-# split below.
-#
-# Basic operation.
-# Power is estimated by squaring the input.
-# Low pass filter using a 1 pole iir.
-# The time constant can be tweaked by changing the taps.
-# Currently there is no implementation to change this while operating
-# a potentially useful addition.
-# The log block turns this into dB
-# gain adjusts the agc authority.
-#
-# M. Revnell 2006-Jan
-
-from gnuradio import gr, gru
-
-class agc( gr.hier_block ):
- def __init__( self, fg ):
- self.split = gr.multiply_const_ff( 1 )
- self.sqr = gr.multiply_ff( )
- self.int0 = gr.iir_filter_ffd( [.004, 0], [0, .999] )
- self.offs = gr.add_const_ff( -30 )
- self.gain = gr.multiply_const_ff( 70 )
- self.log = gr.nlog10_ff( 10, 1 )
- self.agc = gr.divide_ff( )
-
- fg.connect( self.split, ( self.agc, 0 ) )
- fg.connect( self.split, ( self.sqr, 0 ) )
- fg.connect( self.split, ( self.sqr, 1 ) )
- fg.connect( self.sqr, self.int0 )
- fg.connect( self.int0, self.log )
- fg.connect( self.log, self.offs )
- fg.connect( self.offs, self.gain )
- fg.connect( self.gain, ( self.agc, 1 ) )
-
- gr.hier_block.__init__( self, fg, self.split, self.agc )
diff --git a/gnuradio-examples/python/apps/hf_radio/ssbdemod.py b/gnuradio-examples/python/apps/hf_radio/ssbdemod.py
deleted file mode 100644
index c73567b66..000000000
--- a/gnuradio-examples/python/apps/hf_radio/ssbdemod.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# This tries to push the hilbert transform for ssb demod back into the
-# freq. xlating filter.
-#
-# The usual gnuradio copyright notice is hereby included by reference.
-#
-# The starting point for this was weaver_isb_am1_usrp3.py.
-#
-# The tap coefficients for freq_xlating_fir_filter_ccf were generated
-# externally and are read from a file because I didn't want to learn how
-# to make fir filters with arbitrary phase response using python numeric
-# facilities.
-#
-# They were generated using Scilab which I am already familiar with.
-# M. Revnell Jan 06
-
-from gnuradio import gr, gru
-from gnuradio import audio
-from gnuradio import usrp
-
-class ssb_demod( gr.hier_block ):
- def __init__( self, fg, if_rate, af_rate ):
-
- self.if_rate = if_rate
- self.af_rate = af_rate
- self.if_decim = if_rate / af_rate
- self.sideband = 1
-
- self.xlate_taps = ([complex(v) for v in file('ssb_taps').readlines()])
-
- self.audio_taps = gr.firdes.low_pass(
- 1.0,
- self.af_rate,
- 3e3,
- 600,
- gr.firdes.WIN_HAMMING )
-
- self.xlate = gr.freq_xlating_fir_filter_ccc(
- self.if_decim,
- self.xlate_taps,
- 0,
- self.if_rate )
-
- self.split = gr.complex_to_float()
-
- self.lpf = gr.fir_filter_fff(
- 1, self.audio_taps )
-
- self.sum = gr.add_ff( )
- self.am_sel = gr.multiply_const_ff( 0 )
- self.sb_sel = gr.multiply_const_ff( 1 )
- self.mixer = gr.add_ff()
- self.am_det = gr.complex_to_mag()
-
- fg.connect( self.xlate, self.split )
- fg.connect( ( self.split,0 ), ( self.sum,0 ) )
- fg.connect( ( self.split,1 ), ( self.sum,1 ) )
- fg.connect( self.sum, self.sb_sel )
- fg.connect( self.xlate, self.am_det )
- fg.connect( self.sb_sel, ( self.mixer, 0 ) )
- fg.connect( self.am_det, self.am_sel )
- fg.connect( self.am_sel, ( self.mixer, 1 ) )
- fg.connect( self.mixer, self.lpf )
-
- gr.hier_block.__init__( self, fg, self.xlate, self.lpf )
-
- def upper_sb( self ):
- self.xlate.set_taps([v.conjugate() for v in self.xlate_taps])
- self.sb_sel.set_k( 1.0 )
- self.am_sel.set_k( 0.0 )
-
- def lower_sb( self ):
- self.xlate.set_taps(self.xlate_taps)
- self.sb_sel.set_k( 1.0 )
- self.am_sel.set_k( 0.0 )
-
- def set_am( self ):
- taps = gr.firdes.low_pass( 1.0,
- self.if_rate,
- 5e3,
- 2e3,
- gr.firdes.WIN_HAMMING )
- self.xlate.set_taps( taps )
- self.sb_sel.set_k( 0.0 )
- self.am_sel.set_k( 1.0 )
-
- def set_bw( self, bw ):
- self.audio_taps = gr.firdes.low_pass(
- 1.0,
- self.af_rate,
- bw,
- 600,
- gr.firdes.WIN_HAMMING )
- self.lpf.set_taps( self.audio_taps )
-
- def tune( self, freq ):
- self.xlate.set_center_freq( freq )
-
diff --git a/gnuradio-examples/python/apps/hf_radio/startup.py b/gnuradio-examples/python/apps/hf_radio/startup.py
deleted file mode 100644
index 093369b57..000000000
--- a/gnuradio-examples/python/apps/hf_radio/startup.py
+++ /dev/null
@@ -1 +0,0 @@
-from radio import *
diff --git a/gnuradio-examples/python/apps/hf_radio/ui.py b/gnuradio-examples/python/apps/hf_radio/ui.py
deleted file mode 100755
index 71b73c128..000000000
--- a/gnuradio-examples/python/apps/hf_radio/ui.py
+++ /dev/null
@@ -1,295 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-# generated by wxGlade 0.4 on Mon Jan 2 19:02:03 2006
-
-import wx
-
-class ui_frame(wx.Frame):
- def __init__(self, *args, **kwds):
- # begin wxGlade: ui_frame.__init__
- kwds["style"] = wx.DEFAULT_FRAME_STYLE
- wx.Frame.__init__(self, *args, **kwds)
- self.sizer_1_staticbox = wx.StaticBox(self, -1, "sizer_1")
- self.freq_disp = wx.SpinCtrl(self, -1, "", min=0, max=100)
- self.spin_e6 = wx.SpinButton(self, -1 )
- self.spin_e5 = wx.SpinButton(self, -1 )
- self.spin_e4 = wx.SpinButton(self, -1 )
- self.spin_e3 = wx.SpinButton(self, -1 )
- self.spin_e2 = wx.SpinButton(self, -1 )
- self.spin_e1 = wx.SpinButton(self, -1 )
- self.spin_e0 = wx.SpinButton(self, -1 )
- self.panel_1 = wx.Panel(self, -1)
- self.panel_2 = wx.Panel(self, -1)
- self.button_lsb = wx.Button(self, -1, "LSB")
- self.button_usb = wx.Button(self, -1, "USB")
- self.button_am = wx.Button(self, -1, "AM")
- self.label_1 = wx.StaticText(self, -1, "VOLUME")
- self.label_2 = wx.StaticText(self, -1, "PGA")
- self.agc_level = wx.TextCtrl(self, -1, "")
- self.label_6 = wx.StaticText(self, -1, "")
- self.volume = wx.SpinCtrl(self, -1, "", min=0, max=100)
- self.pga = wx.SpinCtrl(self, -1, "", min=0, max=100)
- self.agc_max = wx.TextCtrl(self, -1, "")
- self.label_7 = wx.StaticText(self, -1, "")
- self.label_4 = wx.StaticText(self, -1, "AGC AUTHORITY")
- self.label_5 = wx.StaticText(self, -1, "AGC REF LVL")
- self.label_3 = wx.StaticText(self, -1, "BANDWIDTH")
- self.label_8 = wx.StaticText(self, -1, "")
- self.agc_gain = wx.TextCtrl(self, -1, "")
- self.agc_gain_s = wx.SpinButton(self, -1 )
- self.agc_ref = wx.TextCtrl(self, -1, "")
- self.agc_ref_s = wx.SpinButton(self, -1 )
- self.bandwidth = wx.TextCtrl(self, -1, "")
- self.bw_spin = wx.SpinButton(self, -1 )
- self.label_9 = wx.StaticText(self, -1, "")
- self.rssi = wx.Gauge(self, -1, 10, style=wx.GA_HORIZONTAL|wx.GA_SMOOTH)
- self.fe_panel = wx.Panel(self, -1)
- self.if_panel = wx.Panel(self, -1)
-
- self.__set_properties()
- self.__do_layout()
-
- self.Bind(wx.EVT_SPINCTRL, self.tune_evt, self.freq_disp)
- self.Bind(wx.EVT_SPIN_DOWN, self.down_e6, self.spin_e6)
- self.Bind(wx.EVT_SPIN_UP, self.up_e6, self.spin_e6)
- self.Bind(wx.EVT_SPIN_DOWN, self.down_e5, self.spin_e5)
- self.Bind(wx.EVT_SPIN_UP, self.up_e5, self.spin_e5)
- self.Bind(wx.EVT_SPIN_DOWN, self.down_e4, self.spin_e4)
- self.Bind(wx.EVT_SPIN_UP, self.up_e4, self.spin_e4)
- self.Bind(wx.EVT_SPIN_DOWN, self.down_e3, self.spin_e3)
- self.Bind(wx.EVT_SPIN_UP, self.up_e3, self.spin_e3)
- self.Bind(wx.EVT_SPIN_DOWN, self.down_e2, self.spin_e2)
- self.Bind(wx.EVT_SPIN_UP, self.up_e2, self.spin_e2)
- self.Bind(wx.EVT_SPIN_DOWN, self.down_e1, self.spin_e1)
- self.Bind(wx.EVT_SPIN_UP, self.up_e1, self.spin_e1)
- self.Bind(wx.EVT_SPIN_DOWN, self.down_e0, self.spin_e0)
- self.Bind(wx.EVT_SPIN_UP, self.up_e0, self.spin_e0)
- self.Bind(wx.EVT_BUTTON, self.set_lsb, self.button_lsb)
- self.Bind(wx.EVT_BUTTON, self.set_usb, self.button_usb)
- self.Bind(wx.EVT_BUTTON, self.set_am, self.button_am)
- self.Bind(wx.EVT_SPINCTRL, self.event_vol, self.volume)
- self.Bind(wx.EVT_SPINCTRL, self.event_pga, self.pga)
- self.Bind(wx.EVT_SPIN_DOWN, self.agc_gain_down, self.agc_gain_s)
- self.Bind(wx.EVT_SPIN_UP, self.agc_gain_up, self.agc_gain_s)
- self.Bind(wx.EVT_SPIN_DOWN, self.agc_ref_down, self.agc_ref_s)
- self.Bind(wx.EVT_SPIN_UP, self.agc_ref_up, self.agc_ref_s)
- self.Bind(wx.EVT_SPIN_DOWN, self.bw_down, self.bw_spin)
- self.Bind(wx.EVT_SPIN_UP, self.bw_up, self.bw_spin)
- # end wxGlade
-
- def __set_properties(self):
- # begin wxGlade: ui_frame.__set_properties
- self.SetTitle("frame_1")
- self.freq_disp.SetFont(wx.Font(32, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
- self.rssi.SetMinSize((315, 10))
- self.rssi.SetForegroundColour(wx.Colour(255, 0, 0))
- # end wxGlade
-
- def __do_layout(self):
- # begin wxGlade: ui_frame.__do_layout
- sizer_1 = wx.StaticBoxSizer(self.sizer_1_staticbox, wx.VERTICAL)
- sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
- sizer_4 = wx.BoxSizer(wx.VERTICAL)
- grid_sizer_4 = wx.GridSizer(2, 4, 0, 0)
- sizer_5 = wx.BoxSizer(wx.HORIZONTAL)
- sizer_7 = wx.BoxSizer(wx.HORIZONTAL)
- sizer_6 = wx.BoxSizer(wx.HORIZONTAL)
- grid_sizer_3 = wx.GridSizer(2, 4, 0, 0)
- sizer_3 = wx.BoxSizer(wx.VERTICAL)
- grid_sizer_1 = wx.GridSizer(2, 3, 0, 0)
- grid_sizer_2 = wx.GridSizer(1, 7, 0, 0)
- sizer_3.Add(self.freq_disp, 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
- grid_sizer_2.Add(self.spin_e6, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_2.Add(self.spin_e5, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_2.Add(self.spin_e4, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_2.Add(self.spin_e3, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_2.Add(self.spin_e2, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_2.Add(self.spin_e1, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_2.Add(self.spin_e0, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(grid_sizer_2, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.panel_2, 1, wx.EXPAND, 0)
- grid_sizer_1.Add(self.button_lsb, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(self.button_usb, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_1.Add(self.button_am, 0, wx.ADJUST_MINSIZE, 0)
- sizer_3.Add(grid_sizer_1, 1, wx.EXPAND, 0)
- sizer_2.Add(sizer_3, 1, wx.EXPAND, 0)
- grid_sizer_3.Add(self.label_1, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_3.Add(self.label_2, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_3.Add(self.agc_level, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_3.Add(self.label_6, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_3.Add(self.volume, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_3.Add(self.pga, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_3.Add(self.agc_max, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_3.Add(self.label_7, 0, wx.ADJUST_MINSIZE, 0)
- sizer_4.Add(grid_sizer_3, 1, wx.EXPAND, 0)
- grid_sizer_4.Add(self.label_4, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_4.Add(self.label_5, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_4.Add(self.label_3, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_4.Add(self.label_8, 0, wx.ADJUST_MINSIZE, 0)
- sizer_6.Add(self.agc_gain, 0, wx.ADJUST_MINSIZE, 0)
- sizer_6.Add(self.agc_gain_s, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_4.Add(sizer_6, 1, wx.EXPAND, 0)
- sizer_7.Add(self.agc_ref, 0, wx.ADJUST_MINSIZE, 0)
- sizer_7.Add(self.agc_ref_s, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_4.Add(sizer_7, 1, wx.EXPAND, 0)
- sizer_5.Add(self.bandwidth, 0, wx.ADJUST_MINSIZE, 0)
- sizer_5.Add(self.bw_spin, 0, wx.ADJUST_MINSIZE, 0)
- grid_sizer_4.Add(sizer_5, 1, wx.EXPAND, 0)
- grid_sizer_4.Add(self.label_9, 0, wx.ADJUST_MINSIZE, 0)
- sizer_4.Add(grid_sizer_4, 1, wx.EXPAND, 0)
- sizer_4.Add(self.rssi, 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
- sizer_2.Add(sizer_4, 1, wx.EXPAND, 0)
- sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
- sizer_1.Add(self.fe_panel, 1, wx.EXPAND, 0)
- sizer_1.Add(self.if_panel, 1, wx.EXPAND, 0)
- self.SetAutoLayout(True)
- self.SetSizer(sizer_1)
- sizer_1.Fit(self)
- sizer_1.SetSizeHints(self)
- self.Layout()
- # end wxGlade
-
- def down_e6(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `down_e6' not implemented"
- event.Skip()
-
- def up_e6(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `up_e6' not implemented"
- event.Skip()
-
- def down_e5(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `down_e5' not implemented"
- event.Skip()
-
- def up_e5(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `up_e5' not implemented"
- event.Skip()
-
- def down_e4(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `down_e4' not implemented"
- event.Skip()
-
- def up_e4(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `up_e4' not implemented"
- event.Skip()
-
- def down_e3(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `down_e3' not implemented"
- event.Skip()
-
- def up_e3(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `up_e3' not implemented"
- event.Skip()
-
- def down_e2(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `down_e2' not implemented"
- event.Skip()
-
- def up_e2(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `up_e2' not implemented"
- event.Skip()
-
- def down_e1(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `down_e1' not implemented"
- event.Skip()
-
- def up_e1(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `up_e1' not implemented"
- event.Skip()
-
- def down_e0(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `down_e0' not implemented"
- event.Skip()
-
- def up_e0(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `up_e0' not implemented"
- event.Skip()
-
- def event_vol(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `event_vol' not implemented"
- event.Skip()
-
- def event_pga(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `event_pga' not implemented"
- event.Skip()
-
- def set_lsb(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `set_lsb' not implemented"
- event.Skip()
-
- def set_usb(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `set_usb' not implemented"
- event.Skip()
-
- def set_am(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `set_am' not implemented"
- event.Skip()
-
- def set_bw(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `set_bw' not implemented"
- event.Skip()
-
- def tune_evt(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `tune_evt' not implemented"
- event.Skip()
-
- def bw_down(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `bw_down' not implemented"
- event.Skip()
-
- def bw_up(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `bw_up' not implemented"
- event.Skip()
-
- def agc_gain_down(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `agc_gain_down' not implemented"
- event.Skip()
-
- def agc_gain_up(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `agc_gain_up' not implemented"
- event.Skip()
-
- def agc_ref_down(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `agc_ref_down' not implemented"
- event.Skip()
-
- def agc_ref_up(self, event): # wxGlade: ui_frame.<event_handler>
- print "Event handler `agc_ref_up' not implemented"
- event.Skip()
-
-# end of class ui_frame
-
-
-class RadioFrame(wx.Frame):
- def __init__(self, *args, **kwds):
- # content of this block not found: did you rename this class?
- pass
-
- def __set_properties(self):
- # content of this block not found: did you rename this class?
- pass
-
- def __do_layout(self):
- # content of this block not found: did you rename this class?
- pass
-
-# end of class RadioFrame
-
-
-class MyFrame(wx.Frame):
- def __init__(self, *args, **kwds):
- # content of this block not found: did you rename this class?
- pass
-
- def __set_properties(self):
- # content of this block not found: did you rename this class?
- pass
-
- def __do_layout(self):
- # content of this block not found: did you rename this class?
- pass
-
-# end of class MyFrame
-
-