[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r8045 - gnuradio/branches/developers/michaelld/wxgui/g
From: |
michaelld |
Subject: |
[Commit-gnuradio] r8045 - gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python |
Date: |
Wed, 19 Mar 2008 08:32:13 -0600 (MDT) |
Author: michaelld
Date: 2008-03-19 08:32:13 -0600 (Wed, 19 Mar 2008)
New Revision: 8045
Modified:
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/fftsink2.py
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/numbersink2.py
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/scopesink2.py
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/waterfallsink2.py
Log:
Refactored into YY_base, YY_f, and YY_c classes, such that all the
latter 2 classes do is call the base class and it sorts out the real
or complex connectivity.
Now passes through 'size' correctly to the WX widget.
Modified:
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/fftsink2.py
===================================================================
---
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/fftsink2.py
2008-03-19 13:06:57 UTC (rev 8044)
+++
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/fftsink2.py
2008-03-19 14:32:13 UTC (rev 8045)
@@ -32,16 +32,15 @@
# classes to handle fft sink
-class fft_sink_base(object):
- def __init__(self, input_is_real=False, baseband_freq=0, y_per_div=10,
- y_divs=8, ref_level=50,
- sample_rate=1, fft_size=512,
- fft_rate=default_fft_rate,
- average=False, avg_alpha=None, title='', peak_hold=False):
+class fft_sink_base (gr.hier_block2):
+ def __init__ (self, input_is_real, parent, size, title,
+ baseband_freq, ref_scale, y_per_div, y_divs,
+ ref_level, sample_rate, fft_size, fft_rate,
+ average, avg_alpha, peak_hold):
# initialize common attributes
self.baseband_freq = baseband_freq
- self.y_per_div=y_per_div
+ self.y_per_div = y_per_div
self.y_divs = y_divs
self.ref_level = ref_level
self.sample_rate = sample_rate
@@ -55,8 +54,53 @@
self.title = title
self.peak_hold = peak_hold
self.input_is_real = input_is_real
- self.msgq = gr.msg_queue(2) # queue that holds a maximum of 2
messages
+ # queue that holds a maximum of 2 messages
+ self.msgq = gr.msg_queue (2)
+
+ if input_is_real:
+ data_item_size = gr.sizeof_float
+ fft_func = gr.fft_vfc
+ cr_str = "f"
+ else:
+ data_item_size = gr.sizeof_gr_complex
+ fft_func = gr.fft_vcc
+ cr_str = "c"
+
+ gr.hier_block2.__init__ (self, "fft_sink_" + cr_str,
+ gr.io_signature (1, 1, data_item_size),
+ gr.io_signature (0, 0, 0))
+
+ self.s2p = gr.stream_to_vector (data_item_size, self.fft_size)
+ self.one_in_n = gr.keep_one_in_n (data_item_size * self.fft_size,
+ max (1, int (self.sample_rate /
+ self.fft_size /
+ self.fft_rate)))
+ mywindow = window.blackmanharris (self.fft_size)
+ self.fft = fft_func (self.fft_size, True, mywindow)
+ self.c2mag = gr.complex_to_mag (self.fft_size)
+ self.avg = gr.single_pole_iir_filter_ff (1.0, self.fft_size)
+
+ # FIXME We need to add 3dB to all bins but the DC bin
+ power = 0
+ for tap in mywindow:
+ power += tap * tap
+ self.log = gr.nlog10_ff (20, self.fft_size,
+ # Adjust for number of bins
+ -10.0 * math.log10 (self.fft_size)
+ # Adjust for windowing loss
+ -10.0 * math.log10 (power / self.fft_size)
+ # Adjust for reference scale
+ -20.0 * math.log10 (ref_scale / 2))
+
+ self.sink = gr.message_sink (gr.sizeof_float * self.fft_size,
+ self.msgq, True)
+ self.connect (self, self.s2p, self.one_in_n, self.fft,
+ self.c2mag, self.avg, self.log, self.sink)
+
+ self.win = fft_window (self, parent, size=size)
+ self.set_average (self.average)
+
def set_y_per_div(self, y_per_div):
self.y_per_div = y_per_div
@@ -91,92 +135,32 @@
self.one_in_n.set_n(max(1,
int(self.sample_rate/self.fft_size/self.fft_rate)))
-class fft_sink_f(gr.hier_block2, fft_sink_base):
- def __init__(self, parent, baseband_freq=0, ref_scale=2.0,
- y_per_div=10, y_divs=8, ref_level=50, sample_rate=1,
fft_size=512,
- fft_rate=default_fft_rate, average=False, avg_alpha=None,
- title='', size=default_fftsink_size, peak_hold=False):
+class fft_sink_f (fft_sink_base):
+ def __init__ (self, parent, baseband_freq=0, ref_scale=2.0,
+ y_per_div=10, y_divs=8, ref_level=50, sample_rate=1,
+ fft_size=512, fft_rate=default_fft_rate,
+ average=False, avg_alpha=None, title='',
+ size=default_fftsink_size, peak_hold=False):
- gr.hier_block2.__init__(self, "fft_sink_f",
- gr.io_signature(1, 1, gr.sizeof_float),
- gr.io_signature(0,0,0))
+ fft_sink_base.__init__ (self, True, parent, size, title,
+ baseband_freq, ref_scale, y_per_div,
+ y_divs, ref_level, sample_rate,
+ fft_size, fft_rate, average,
+ avg_alpha, peak_hold)
- fft_sink_base.__init__(self, input_is_real=True,
baseband_freq=baseband_freq,
- y_per_div=y_per_div, y_divs=y_divs,
ref_level=ref_level,
- sample_rate=sample_rate, fft_size=fft_size,
- fft_rate=fft_rate,
- average=average, avg_alpha=avg_alpha,
title=title,
- peak_hold=peak_hold)
-
- self.s2p = gr.stream_to_vector(gr.sizeof_float, self.fft_size)
- self.one_in_n = gr.keep_one_in_n(gr.sizeof_float * self.fft_size,
- max(1,
int(self.sample_rate/self.fft_size/self.fft_rate)))
-
- mywindow = window.blackmanharris(self.fft_size)
- self.fft = gr.fft_vfc(self.fft_size, True, mywindow)
- power = 0
- for tap in mywindow:
- power += tap*tap
-
- self.c2mag = gr.complex_to_mag(self.fft_size)
- self.avg = gr.single_pole_iir_filter_ff(1.0, self.fft_size)
+class fft_sink_c (fft_sink_base):
+ def __init__ (self, parent, baseband_freq=0, ref_scale=2.0,
+ y_per_div=10, y_divs=8, ref_level=50, sample_rate=1,
+ fft_size=512, fft_rate=default_fft_rate,
+ average=False, avg_alpha=None, title='',
+ size=default_fftsink_size, peak_hold=False):
- # FIXME We need to add 3dB to all bins but the DC bin
- self.log = gr.nlog10_ff(20, self.fft_size,
- -10*math.log10(self.fft_size) #
Adjust for number of bins
- -10*math.log10(power/self.fft_size) #
Adjust for windowing loss
- -20*math.log10(ref_scale/2)) #
Adjust for reference scale
-
- self.sink = gr.message_sink(gr.sizeof_float * self.fft_size,
self.msgq, True)
- self.connect(self, self.s2p, self.one_in_n, self.fft, self.c2mag,
self.avg, self.log, self.sink)
+ fft_sink_base.__init__ (self, False, parent, size, title,
+ baseband_freq, ref_scale, y_per_div,
+ y_divs, ref_level, sample_rate,
+ fft_size, fft_rate, average,
+ avg_alpha, peak_hold)
- self.win = fft_window(self, parent, size=size)
- self.set_average(self.average)
-
-
-class fft_sink_c(gr.hier_block2, fft_sink_base):
- def __init__(self, parent, baseband_freq=0, ref_scale=2.0,
- y_per_div=10, y_divs=8, ref_level=50, sample_rate=1,
fft_size=512,
- fft_rate=default_fft_rate, average=False, avg_alpha=None,
- title='', size=default_fftsink_size, peak_hold=False):
-
- gr.hier_block2.__init__(self, "fft_sink_c",
- gr.io_signature(1, 1, gr.sizeof_gr_complex),
- gr.io_signature(0,0,0))
-
- fft_sink_base.__init__(self, input_is_real=False,
baseband_freq=baseband_freq,
- y_per_div=y_per_div, y_divs=y_divs,
ref_level=ref_level,
- sample_rate=sample_rate, fft_size=fft_size,
- fft_rate=fft_rate,
- average=average, avg_alpha=avg_alpha,
title=title,
- peak_hold=peak_hold)
-
- self.s2p = gr.stream_to_vector(gr.sizeof_gr_complex, self.fft_size)
- self.one_in_n = gr.keep_one_in_n(gr.sizeof_gr_complex * self.fft_size,
- max(1,
int(self.sample_rate/self.fft_size/self.fft_rate)))
-
- mywindow = window.blackmanharris(self.fft_size)
- self.fft = gr.fft_vcc(self.fft_size, True, mywindow)
- power = 0
- for tap in mywindow:
- power += tap*tap
-
- self.c2mag = gr.complex_to_mag(self.fft_size)
- self.avg = gr.single_pole_iir_filter_ff(1.0, self.fft_size)
-
- # FIXME We need to add 3dB to all bins but the DC bin
- self.log = gr.nlog10_ff(20, self.fft_size,
- -10*math.log10(self.fft_size) #
Adjust for number of bins
- -10*math.log10(power/self.fft_size) #
Adjust for windowing loss
- -20*math.log10(ref_scale/2)) #
Adjust for reference scale
-
- self.sink = gr.message_sink(gr.sizeof_float * self.fft_size,
self.msgq, True)
- self.connect(self, self.s2p, self.one_in_n, self.fft, self.c2mag,
self.avg, self.log, self.sink)
-
- self.win = fft_window(self, parent, size=size)
- self.set_average(self.average)
-
-
# ------------------------------------------------------------------------
class fft_window (plot.PlotCanvas):
Modified:
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/numbersink2.py
===================================================================
---
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/numbersink2.py
2008-03-19 13:06:57 UTC (rev 8044)
+++
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/numbersink2.py
2008-03-19 14:32:13 UTC (rev 8045)
@@ -32,11 +32,11 @@
# classes to handle number sink
-class number_sink_base(object):
- def __init__(self, input_is_real=False, unit='',base_value=0,
minval=-100.0,maxval=100.0,factor=1.0,decimal_places=10, ref_level=50,
- sample_rate=1,
- number_rate=default_number_rate,
- average=False, avg_alpha=None, label='', peak_hold=False):
+class number_sink_base (gr.hier_block2):
+ def __init__ (self, input_is_real, parent, size, label, unit,
+ base_value, minval, maxval, factor, decimal_places,
+ ref_level, sample_rate, number_rate, average,
+ avg_alpha, peak_hold):
# initialize common attributes
self.unit=unit
@@ -48,8 +48,7 @@
self.decimal_places=decimal_places
self.ref_level = ref_level
self.sample_rate = sample_rate
- number_size=1
- self.number_size = number_size
+ self.number_size = number_size = 1
self.number_rate = number_rate
self.average = average
if avg_alpha is None:
@@ -60,8 +59,32 @@
self.peak_hold = peak_hold
self.show_gauge = True
self.input_is_real = input_is_real
- self.msgq = gr.msg_queue(2) # queue that holds a maximum of 2
messages
+ # queue that holds a maximum of 2 messages
+ self.msgq = gr.msg_queue(2)
+ if input_is_real:
+ data_item_size = gr.sizeof_float
+ avg_func = gr.single_pole_iir_filter_ff
+ cr_str = "f"
+ else:
+ data_item_size = gr.sizeof_gr_complex
+ avg_func = gr.single_pole_iir_filter_cc
+ cr_str = "c"
+
+ gr.hier_block2.__init__ (self, "number_sink_" + cr_str,
+ gr.io_signature (1, 1, data_item_size),
+ gr.io_signature (0, 0, 0))
+
+ self.avg = avg_func (1.0, number_size)
+ self.one_in_n = gr.keep_one_in_n (data_item_size,
+ max (1, int (sample_rate /
+ number_rate)))
+ self.sink = gr.message_sink (data_item_size, self.msgq, True)
+ self.connect (self, self.avg, self.one_in_n, self.sink)
+
+ self.win = number_window (self, parent, size=size, label=label)
+ self.set_average (self.average)
+
def set_decimal_places(self, decimal_places):
self.decimal_places = decimal_places
@@ -94,64 +117,31 @@
def set_base_value(self, base_value):
self.base_value = base_value
-
-class number_sink_f(gr.hier_block2, number_sink_base):
- def __init__(self, parent,
unit='',base_value=0,minval=-100.0,maxval=100.0,factor=1.0,
- decimal_places=10, ref_level=50, sample_rate=1,
- number_rate=default_number_rate, average=False,
avg_alpha=None,
- label='', size=default_numbersink_size, peak_hold=False):
+class number_sink_f (number_sink_base):
+ def __init__ (self, parent, unit='', base_value=0, minval=-100.0,
+ maxval=100.0, factor=1.0, decimal_places=10, ref_level=50,
+ sample_rate=1, number_rate=default_number_rate,
+ average=False, avg_alpha=None, label='',
+ size=default_numbersink_size, peak_hold=False):
- gr.hier_block2.__init__(self, "number_sink_f",
- gr.io_signature(1, 1, gr.sizeof_float), # Input
signature
- gr.io_signature(0, 0, 0)) #
Output signature
+ number_sink_base.__init__ (self, True, parent, size, label, unit,
+ base_value, minval, maxval, factor,
+ decimal_places, ref_level, sample_rate,
+ number_rate, average, avg_alpha, peak_hold)
- number_sink_base.__init__(self, unit=unit, input_is_real=True,
base_value=base_value,
- minval=minval,maxval=maxval,factor=factor,
- decimal_places=decimal_places,
ref_level=ref_level,
- sample_rate=sample_rate,
number_rate=number_rate,
- average=average, avg_alpha=avg_alpha,
label=label,
- peak_hold=peak_hold)
-
- number_size=1
- one_in_n = gr.keep_one_in_n(gr.sizeof_float,
- max(1, int(sample_rate/number_rate)))
-
- self.avg = gr.single_pole_iir_filter_ff(1.0, number_size)
- sink = gr.message_sink(gr.sizeof_float , self.msgq, True)
- self.connect(self, self.avg, one_in_n, sink)
+class number_sink_c (number_sink_base):
+ def __init__ (self, parent, unit='', base_value=0, minval=-100.0,
+ maxval=100.0, factor=1.0, decimal_places=10, ref_level=50,
+ sample_rate=1, number_rate=default_number_rate,
+ average=False, avg_alpha=None, label='',
+ size=default_numbersink_size, peak_hold=False):
- self.win = number_window(self, parent, size=size,label=label)
- self.set_average(self.average)
+ number_sink_base.__init__ (self, False, parent, size, label, unit,
+ base_value, minval, maxval, factor,
+ decimal_places, ref_level, sample_rate,
+ number_rate, average, avg_alpha, peak_hold)
-class number_sink_c(gr.hier_block2, number_sink_base):
- def __init__(self, parent,
unit='',base_value=0,minval=-100.0,maxval=100.0,factor=1.0,
- decimal_places=10, ref_level=50, sample_rate=1,
- number_rate=default_number_rate, average=False,
avg_alpha=None,
- label='', size=default_numbersink_size, peak_hold=False):
-
- gr.hier_block2.__init__(self, "number_sink_c",
- gr.io_signature(1, 1, gr.sizeof_gr_complex), #
Input signature
- gr.io_signature(0, 0, 0)) #
Output signature
-
- number_sink_base.__init__(self, unit=unit, input_is_real=False,
base_value=base_value,factor=factor,
-
minval=minval,maxval=maxval,decimal_places=decimal_places, ref_level=ref_level,
- sample_rate=sample_rate,
number_rate=number_rate,
- average=average, avg_alpha=avg_alpha,
label=label,
- peak_hold=peak_hold)
-
- number_size=1
- one_in_n = gr.keep_one_in_n(gr.sizeof_gr_complex,
- max(1, int(sample_rate/number_rate)))
-
- self.avg = gr.single_pole_iir_filter_cc(1.0, number_size)
- sink = gr.message_sink(gr.sizeof_gr_complex , self.msgq, True)
- self.connect(self, self.avg, one_in_n, sink)
-
- self.win = number_window(self, parent, size=size,label=label)
- self.set_average(self.average)
-
-
# ------------------------------------------------------------------------
class static_text_window (wx.StaticText): #plot.PlotCanvas):
Modified:
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/scopesink2.py
===================================================================
---
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/scopesink2.py
2008-03-19 13:06:57 UTC (rev 8044)
+++
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/scopesink2.py
2008-03-19 14:32:13 UTC (rev 8045)
@@ -33,56 +33,68 @@
# classes to handle scope sink
-class scope_sink_f(gr.hier_block2):
- def __init__(self, parent, title='', sample_rate=1,
- size=default_scopesink_size, frame_decim=default_frame_decim,
- v_scale=default_v_scale, t_scale=None, num_inputs=1):
+class scope_sink_base (gr.hier_block2):
+ def __init__ (self, input_is_real, parent, size, title, sample_rate,
+ frame_decim, v_scale, t_scale, num_inputs):
- gr.hier_block2.__init__(self, "scope_sink_f",
- gr.io_signature(num_inputs, num_inputs,
gr.sizeof_float),
- gr.io_signature(0,0,0))
+ if input_is_real:
+ data_item_size = gr.sizeof_float
+ cr_str = "f"
+ else:
+ data_item_size = gr.sizeof_gr_complex
+ cr_str = "c"
- msgq = gr.msg_queue(2) # message queue that holds at most 2
messages
- self.guts = gr.oscope_sink_f(sample_rate, msgq)
- for i in range(num_inputs):
- self.connect((self, i), (self.guts, i))
+ gr.hier_block2.__init__ (self, "scope_sink_" + cr_str,
+ gr.io_signature (num_inputs, num_inputs,
+ data_item_size),
+ gr.io_signature (0, 0, 0))
- self.win = scope_window(win_info (msgq, sample_rate, frame_decim,
- v_scale, t_scale, self.guts, title),
parent)
+ # message queue that holds at most 2 messages
+ msgq = gr.msg_queue (2)
- def set_sample_rate(self, sample_rate):
- self.guts.set_sample_rate(sample_rate)
- self.win.info.set_sample_rate(sample_rate)
+ self.guts = gr.oscope_sink_f (sample_rate, msgq)
+ for i in range (num_inputs):
+ if input_is_real:
+ self.connect ((self, i), (self.guts, i))
+ else:
+ c2f = gr.complex_to_float ()
+ self.connect ((self, i), c2f)
+ self.connect ((c2f, 0), (self.guts, (2 * i) + 0))
+ self.connect ((c2f, 1), (self.guts, (2 * i) + 1))
+ wi = win_info (msgq, sample_rate, frame_decim,
+ v_scale, t_scale, self.guts, title)
+ self.win = scope_window (wi, parent, size=size)
-class scope_sink_c(gr.hier_block2):
- def __init__(self, parent, title='', sample_rate=1,
- size=default_scopesink_size, frame_decim=default_frame_decim,
- v_scale=default_v_scale, t_scale=None, num_inputs=1):
+ def set_sample_rate (self, sample_rate):
+ self.guts.set_sample_rate (sample_rate)
+ self.win.info.set_sample_rate (sample_rate)
- gr.hier_block2.__init__(self, "scope_sink_c",
- gr.io_signature(num_inputs, num_inputs,
gr.sizeof_gr_complex),
- gr.io_signature(0,0,0))
+class scope_sink_f (scope_sink_base):
+ def __init__ (self, parent, title='', sample_rate=1,
+ size=default_scopesink_size,
+ frame_decim=default_frame_decim,
+ v_scale=default_v_scale, t_scale=None, num_inputs=1):
- msgq = gr.msg_queue(2) # message queue that holds at most 2
messages
- self.guts = gr.oscope_sink_f(sample_rate, msgq)
- for i in range(num_inputs):
- c2f = gr.complex_to_float()
- self.connect((self, i), c2f)
- self.connect((c2f, 0), (self.guts, 2*i+0))
- self.connect((c2f, 1), (self.guts, 2*i+1))
-
- self.win = scope_window(win_info(msgq, sample_rate, frame_decim,
- v_scale, t_scale, self.guts, title),
parent)
-
- def set_sample_rate(self, sample_rate):
- self.guts.set_sample_rate(sample_rate)
- self.win.info.set_sample_rate(sample_rate)
+ scope_sink_base.__init__ (self, True, parent, size, title,
+ sample_rate, frame_decim, v_scale,
+ t_scale, num_inputs)
+class scope_sink_c (scope_sink_base):
+ def __init__ (self, parent, title='', sample_rate=1,
+ size=default_scopesink_size,
+ frame_decim=default_frame_decim,
+ v_scale=default_v_scale, t_scale=None, num_inputs=1):
+
+ scope_sink_base.__init__ (self, False, parent, size, title,
+ sample_rate, frame_decim, v_scale,
+ t_scale, num_inputs)
+
class constellation_sink(scope_sink_c):
def __init__(self, parent, title='Constellation', sample_rate=1,
size=default_scopesink_size, frame_decim=default_frame_decim):
- scope_sink_c.__init__(self, parent=parent, title=title,
sample_rate=sample_rate,
- size=size, frame_decim=frame_decim)
+ scope_sink_c.__init__(self, parent=parent, title=title,
+ sample_rate=sample_rate,
+ size=size, frame_decim=frame_decim)
self.win.info.xy = True #constellation mode
# ========================================================================
@@ -181,7 +193,6 @@
return self.marker
class scope_window (wx.Panel):
-
def __init__ (self, info, parent, id = -1,
pos = wx.DefaultPosition, size = wx.DefaultSize, name = ""):
wx.Panel.__init__ (self, parent, -1)
Modified:
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/waterfallsink2.py
===================================================================
---
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/waterfallsink2.py
2008-03-19 13:06:57 UTC (rev 8044)
+++
gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python/waterfallsink2.py
2008-03-19 14:32:13 UTC (rev 8045)
@@ -32,11 +32,12 @@
# classes to handle waterfall sink
-class waterfall_sink_base(object):
- def __init__(self, input_is_real=False, baseband_freq=0,
- sample_rate=1, fft_size=512,
- fft_rate=default_fft_rate,
- average=False, avg_alpha=None, title=''):
+class waterfall_sink_base (gr.hier_block2):
+ def __init__ (self, input_is_real, parent, size, title,
+ baseband_freq, y_per_div, ref_level, sample_rate,
+ fft_size, fft_rate, average, avg_alpha):
+ # unused inputs (even if saved), right now (some commented out)
+ # title, y_per_div, ref_level
# initialize common attributes
self.baseband_freq = baseband_freq
@@ -50,8 +51,42 @@
self.avg_alpha = avg_alpha
self.title = title
self.input_is_real = input_is_real
- self.msgq = gr.msg_queue(2) # queue up to 2 messages
+ # message queue that holds at most 2 messages
+ self.msgq = gr.msg_queue(2)
+
+ if input_is_real:
+ data_item_size = gr.sizeof_float
+ fft_func = gr.fft_vfc
+ cr_str = "f"
+ else:
+ data_item_size = gr.sizeof_gr_complex
+ fft_func = gr.fft_vcc
+ cr_str = "c"
+
+ gr.hier_block2.__init__ (self, "waterfall_sink_" + cr_str,
+ gr.io_signature (1, 1, data_item_size),
+ gr.io_signature (0, 0, 0))
+
+ self.s2p = gr.serial_to_parallel (data_item_size, self.fft_size)
+ self.one_in_n = gr.keep_one_in_n (data_item_size * self.fft_size,
+ max (1, int (self.sample_rate /
+ self.fft_size /
+ self.fft_rate)))
+ mywindow = window.blackmanharris (self.fft_size)
+ self.fft = fft_func (self.fft_size, True, mywindow)
+ self.c2mag = gr.complex_to_mag (self.fft_size)
+ self.avg = gr.single_pole_iir_filter_ff (1.0, self.fft_size)
+ self.log = gr.nlog10_ff (20, self.fft_size,
+ -20.0 * math.log10 (self.fft_size))
+ self.sink = gr.message_sink (gr.sizeof_float * self.fft_size,
+ self.msgq, True)
+ self.connect (self, self.s2p, self.one_in_n, self.fft,
+ self.c2mag, self.avg, self.log, self.sink)
+
+ self.win = waterfall_window (self, parent, size=size)
+ self.set_average (self.average)
+
def set_average(self, average):
self.average = average
if average:
@@ -71,69 +106,29 @@
def _set_n(self):
self.one_in_n.set_n(max(1,
int(self.sample_rate/self.fft_size/self.fft_rate)))
-
-class waterfall_sink_f(gr.hier_block2, waterfall_sink_base):
- def __init__(self, parent, baseband_freq=0,
- y_per_div=10, ref_level=50, sample_rate=1, fft_size=512,
- fft_rate=default_fft_rate, average=False, avg_alpha=None,
- title='', size=default_fftsink_size):
- gr.hier_block2.__init__(self, "waterfall_sink_f",
- gr.io_signature(1, 1, gr.sizeof_float),
- gr.io_signature(0,0,0))
+class waterfall_sink_f (waterfall_sink_base):
+ def __init__ (self, parent, baseband_freq=0,
+ y_per_div=10, ref_level=50, sample_rate=1, fft_size=512,
+ fft_rate=default_fft_rate, average=False, avg_alpha=None,
+ title='', size=default_fftsink_size):
- waterfall_sink_base.__init__(self, input_is_real=True,
baseband_freq=baseband_freq,
- sample_rate=sample_rate, fft_size=fft_size,
- fft_rate=fft_rate,
- average=average, avg_alpha=avg_alpha,
title=title)
-
- self.s2p = gr.serial_to_parallel(gr.sizeof_float, self.fft_size)
- self.one_in_n = gr.keep_one_in_n(gr.sizeof_float * self.fft_size,
- max(1,
int(self.sample_rate/self.fft_size/self.fft_rate)))
-
- mywindow = window.blackmanharris(self.fft_size)
- self.fft = gr.fft_vfc(self.fft_size, True, mywindow)
- self.c2mag = gr.complex_to_mag(self.fft_size)
- self.avg = gr.single_pole_iir_filter_ff(1.0, self.fft_size)
- self.log = gr.nlog10_ff(20, self.fft_size,
-20*math.log10(self.fft_size))
- self.sink = gr.message_sink(gr.sizeof_float * self.fft_size,
self.msgq, True)
- self.connect(self, self.s2p, self.one_in_n, self.fft, self.c2mag,
self.avg, self.log, self.sink)
+ waterfall_sink_base.__init__ (self, True, parent, size, title,
+ baseband_freq, y_per_div, ref_level,
+ sample_rate, fft_size, fft_rate,
+ average, avg_alpha)
- self.win = waterfall_window(self, parent, size=size)
- self.set_average(self.average)
+class waterfall_sink_c (waterfall_sink_base):
+ def __init__ (self, parent, baseband_freq=0,
+ y_per_div=10, ref_level=50, sample_rate=1, fft_size=512,
+ fft_rate=default_fft_rate, average=False, avg_alpha=None,
+ title='', size=default_fftsink_size):
+ waterfall_sink_base.__init__ (self, False, parent, size, title,
+ baseband_freq, y_per_div, ref_level,
+ sample_rate, fft_size, fft_rate,
+ average, avg_alpha)
-class waterfall_sink_c(gr.hier_block2, waterfall_sink_base):
- def __init__(self, parent, baseband_freq=0,
- y_per_div=10, ref_level=50, sample_rate=1, fft_size=512,
- fft_rate=default_fft_rate, average=False, avg_alpha=None,
- title='', size=default_fftsink_size):
-
- gr.hier_block2.__init__(self, "waterfall_sink_c",
- gr.io_signature(1, 1, gr.sizeof_gr_complex),
- gr.io_signature(0,0,0))
-
- waterfall_sink_base.__init__(self, input_is_real=False,
baseband_freq=baseband_freq,
- sample_rate=sample_rate,
fft_size=fft_size,
- fft_rate=fft_rate,
- average=average, avg_alpha=avg_alpha,
title=title)
-
- self.s2p = gr.serial_to_parallel(gr.sizeof_gr_complex, self.fft_size)
- self.one_in_n = gr.keep_one_in_n(gr.sizeof_gr_complex * self.fft_size,
- max(1,
int(self.sample_rate/self.fft_size/self.fft_rate)))
-
- mywindow = window.blackmanharris(self.fft_size)
- self.fft = gr.fft_vcc(self.fft_size, True, mywindow)
- self.c2mag = gr.complex_to_mag(self.fft_size)
- self.avg = gr.single_pole_iir_filter_ff(1.0, self.fft_size)
- self.log = gr.nlog10_ff(20, self.fft_size,
-20*math.log10(self.fft_size))
- self.sink = gr.message_sink(gr.sizeof_float * self.fft_size,
self.msgq, True)
- self.connect(self, self.s2p, self.one_in_n, self.fft, self.c2mag,
self.avg, self.log, self.sink)
-
- self.win = waterfall_window(self, parent, size=size)
- self.set_average(self.average)
-
-
# ------------------------------------------------------------------------
class waterfall_window (wx.Panel):
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r8045 - gnuradio/branches/developers/michaelld/wxgui/gr-wxgui/src/python,
michaelld <=