[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r8795 - gnuradio/branches/developers/jblum/gr-wxglgui/
From: |
jblum |
Subject: |
[Commit-gnuradio] r8795 - gnuradio/branches/developers/jblum/gr-wxglgui/src/python |
Date: |
Fri, 4 Jul 2008 16:48:36 -0600 (MDT) |
Author: jblum
Date: 2008-07-04 16:48:27 -0600 (Fri, 04 Jul 2008)
New Revision: 8795
Modified:
gnuradio/branches/developers/jblum/gr-wxglgui/src/python/constsink.py
gnuradio/branches/developers/jblum/gr-wxglgui/src/python/fftsink.py
Log:
log scaling on sliders
Modified: gnuradio/branches/developers/jblum/gr-wxglgui/src/python/constsink.py
===================================================================
--- gnuradio/branches/developers/jblum/gr-wxglgui/src/python/constsink.py
2008-07-04 19:06:02 UTC (rev 8794)
+++ gnuradio/branches/developers/jblum/gr-wxglgui/src/python/constsink.py
2008-07-04 22:48:27 UTC (rev 8795)
@@ -27,15 +27,14 @@
import common
import wx
import numpy
-import time
import math
##################################################
# Constants
##################################################
SLIDER_STEPS = 100
-ALPHA_MIN, ALPHA_MAX = 0, .02
-GAIN_MU_MIN, GAIN_MU_MAX = 0, .02
+ALPHA_SLIDER_MIN, ALPHA_SLIDER_MAX = -6, -0.7
+GAIN_MU_SLIDER_MIN, GAIN_MU_SLIDER_MAX = -6, -0.7
DEFAULT_FRAME_RATE = 30
DEFAULT_WIN_SIZE = (500, 400)
DEFAULT_CONST_SIZE = 1024
@@ -67,35 +66,19 @@
control_box.Add(common.LabelText(self, 'Options'), 0,
wx.ALIGN_CENTER)
control_box.AddSpacer(2)
#alpha
+ control_box.AddStretchSpacer()
self.alpha_label = wx.StaticText(self, -1, '')
control_box.Add(self.alpha_label, 0, wx.EXPAND)
self.alpha_slider = wx.Slider(self, -1, 0, 0, SLIDER_STEPS,
style=wx.SL_HORIZONTAL)
- self.alpha_slider.Bind(wx.EVT_SCROLL, self._on_alpha)
+ self.alpha_slider.Bind(wx.EVT_SLIDER, self._on_alpha)
control_box.Add(self.alpha_slider, 0, wx.EXPAND)
- control_box.AddStretchSpacer()
- #mu
- hbox = wx.BoxSizer(wx.HORIZONTAL)
- control_box.Add(hbox, 1, wx.EXPAND)
- hbox.Add(wx.StaticText(self, -1, ' Mu: '), 0,
wx.ALIGN_CENTER_VERTICAL)
- self.mu_text_box = wx.TextCtrl(self, -1, '',
style=wx.TE_PROCESS_ENTER)
- self.mu_text_box.Bind(wx.EVT_TEXT_ENTER, self._on_mu)
- hbox.Add(self.mu_text_box, 0, wx.ALIGN_CENTER_VERTICAL)
- control_box.AddStretchSpacer()
#gain_mu
- self.gain_mu_label = wx.StaticText(self, -1, '')
+ control_box.AddStretchSpacer()
+ self.gain_mu_label = wx.StaticText(self, -1, '0'*15)
control_box.Add(self.gain_mu_label, 0, wx.EXPAND)
self.gain_mu_slider = wx.Slider(self, -1, 0, 0, SLIDER_STEPS,
style=wx.SL_HORIZONTAL)
- self.gain_mu_slider.Bind(wx.EVT_SCROLL, self._on_gain_mu)
+ self.gain_mu_slider.Bind(wx.EVT_SLIDER, self._on_gain_mu)
control_box.Add(self.gain_mu_slider, 0, wx.EXPAND)
- control_box.AddStretchSpacer()
- #omega
- hbox = wx.BoxSizer(wx.HORIZONTAL)
- control_box.Add(hbox, 1, wx.EXPAND)
- hbox.Add(wx.StaticText(self, -1, ' Omega: '), 0,
wx.ALIGN_CENTER_VERTICAL)
- self.omega_text_box = wx.TextCtrl(self, -1, '',
style=wx.TE_PROCESS_ENTER)
- self.omega_text_box.Bind(wx.EVT_TEXT_ENTER, self._on_omega)
- hbox.Add(self.omega_text_box, 0, wx.ALIGN_CENTER_VERTICAL)
- control_box.AddStretchSpacer()
#run/stop
control_box.AddStretchSpacer()
self.run_button = wx.Button(self, -1, '', style=wx.BU_EXACTFIT)
@@ -109,12 +92,14 @@
def update(self):
#update mpsk params
- self.alpha_label.SetLabel('Alpha: %g'%self.parent.alpha)
-
self.alpha_slider.SetValue(SLIDER_STEPS*(self.parent.alpha-ALPHA_MIN)/(ALPHA_MAX-ALPHA_MIN))
- self.mu_text_box.SetValue(str(self.parent.mu))
- self.gain_mu_label.SetLabel('Gain Mu: %g'%self.parent.gain_mu)
-
self.gain_mu_slider.SetValue(SLIDER_STEPS*(self.parent.gain_mu-GAIN_MU_MIN)/(GAIN_MU_MAX-GAIN_MU_MIN))
- self.omega_text_box.SetValue(str(self.parent.omega))
+ self.alpha_label.SetLabel('Alpha: %.3g'%self.parent.alpha)
+ slider_value =
SLIDER_STEPS*(math.log10(self.parent.alpha)-ALPHA_SLIDER_MIN)/(ALPHA_SLIDER_MAX-ALPHA_SLIDER_MIN)
+ if abs(slider_value - self.alpha_slider.GetValue()) > 1:
+ self.alpha_slider.SetValue(slider_value)
+ self.gain_mu_label.SetLabel('Gain Mu: %.3g'%self.parent.gain_mu)
+ slider_value =
SLIDER_STEPS*(math.log10(self.parent.gain_mu)-GAIN_MU_SLIDER_MIN)/(GAIN_MU_SLIDER_MAX-GAIN_MU_SLIDER_MIN)
+ if abs(slider_value - self.gain_mu_slider.GetValue()) > 1:
+ self.gain_mu_slider.SetValue(slider_value)
#update the run/stop button
if self.parent.running: self.run_button.SetLabel('Stop')
else: self.run_button.SetLabel('Run')
@@ -124,11 +109,9 @@
##################################################
def _on_run(self, event): self.parent.set_run(not self.parent.running)
def _on_alpha(self, event):
-
self.parent.set_alpha((ALPHA_MAX-ALPHA_MIN)*self.alpha_slider.GetValue()/SLIDER_STEPS
+ ALPHA_MIN)
- def _on_mu(self, event):
self.parent.set_mu(float(self.mu_text_box.GetValue()))
+
self.parent.set_alpha(10**(float(ALPHA_SLIDER_MAX-ALPHA_SLIDER_MIN)*self.alpha_slider.GetValue()/SLIDER_STEPS
+ ALPHA_SLIDER_MIN))
def _on_gain_mu(self, event):
-
self.parent.set_gain_mu((GAIN_MU_MAX-GAIN_MU_MIN)*self.gain_mu_slider.GetValue()/SLIDER_STEPS
+ GAIN_MU_MIN)
- def _on_omega(self, event):
self.parent.set_omega(float(self.omega_text_box.GetValue()))
+
self.parent.set_gain_mu(10**(float(GAIN_MU_SLIDER_MAX-GAIN_MU_SLIDER_MIN)*self.gain_mu_slider.GetValue()/SLIDER_STEPS
+ GAIN_MU_SLIDER_MIN))
##################################################
# Constellation window with plotter and control panel
@@ -140,15 +123,11 @@
size,
title,
alpha,
- mu,
gain_mu,
- omega,
#callbacks to mpsk recv
ext_set_alpha,
ext_set_beta,
- ext_set_mu,
ext_set_gain_mu,
- ext_set_omega,
ext_set_gain_omega,
):
#setup
@@ -157,15 +136,11 @@
self.y_divs = 8
#mspk settings
self.alpha = alpha
- self.mu = mu
self.gain_mu = gain_mu
- self.omega = omega
#callbacks to mpsk recv
self.ext_set_alpha = ext_set_alpha
self.ext_set_beta = ext_set_beta
- self.ext_set_mu = ext_set_mu
self.ext_set_gain_mu = ext_set_gain_mu
- self.ext_set_omega = ext_set_omega
self.ext_set_gain_omega = ext_set_gain_omega
#init panel and plot
wx.Panel.__init__(self, parent, -1, style=wx.SIMPLE_BORDER)
@@ -205,9 +180,7 @@
#update mpsk
self.ext_set_alpha(self.alpha)
self.ext_set_beta(.25*self.alpha**2)
- self.ext_set_mu(self.mu)
self.ext_set_gain_mu(self.gain_mu)
- self.ext_set_omega(self.omega)
self.ext_set_gain_omega(.25*self.gain_mu**2)
#update the x axis
x_max = 1.2
@@ -225,15 +198,9 @@
def set_alpha(self, alpha):
self.alpha = alpha
self.update()
- def set_mu(self, mu):
- self.mu = mu
- self.update()
def set_gain_mu(self, gain_mu):
self.gain_mu = gain_mu
self.update()
- def set_omega(self, omega):
- self.omega = omega
- self.update()
def set_run(self, running):
self.running = running
self.update()
@@ -261,7 +228,7 @@
fmax=0.06,
mu=0.5,
gain_mu=0.005,
- omega=2, #samples per symbol
+ symbol_rate=1,
omega_rel=0.005,
):
#init
@@ -272,16 +239,18 @@
gr.io_signature(0, 0, 0),
)
#blocks
- sd = common.stream_decimator(
+ self.sd = common.stream_decimator(
item_size=gr.sizeof_gr_complex,
sample_rate=sample_rate,
vec_rate=frame_rate,
vec_len=const_size,
)
- beta = .25*alpha**2
+ beta = .25*alpha**2 #redundant, will be updated
fmin = -fmax
- gain_omega = .25*gain_mu**2
- sync = gr.mpsk_receiver_cc(
+ gain_omega = .25*gain_mu**2 #redundant, will be updated
+ omega = 1 #set_sample_rate will update this
+ self.symbol_rate = symbol_rate
+ self.sync = gr.mpsk_receiver_cc(
M, #psk order
theta,
alpha,
@@ -298,28 +267,32 @@
msgq = gr.msg_queue(2)
sink = gr.message_sink(gr.sizeof_gr_complex*const_size, msgq,
True)
#connect
- self.connect(self, sync, agc, sd, sink)
+ self.connect(self, self.sync, agc, self.sd, sink)
#create window
self.win = const_window(
parent=parent,
size=size,
title=title,
alpha=alpha,
- mu=mu,
gain_mu=gain_mu,
- omega=omega,
#callbacks to mpsk recv
- ext_set_alpha=sync.set_alpha,
- ext_set_beta=sync.set_beta,
- ext_set_mu=sync.set_mu,
- ext_set_gain_mu=sync.set_gain_mu,
- ext_set_omega=sync.set_omega,
- ext_set_gain_omega=sync.set_gain_omega,
+ ext_set_alpha=self.sync.set_alpha,
+ ext_set_beta=self.sync.set_beta,
+ ext_set_gain_mu=self.sync.set_gain_mu,
+ ext_set_gain_omega=self.sync.set_gain_omega,
)
#register callbacks from window for external use
- self.set_sample_rate = sd.set_sample_rate
+
#setup the input watcher
common.input_watcher(msgq, self._handle_msg)
+ #update
+ self.set_sample_rate(sample_rate)
+
+ def set_sample_rate(self, sample_rate):
+ self.sample_rate = sample_rate
+ self.omega = float(self.sample_rate)/self.symbol_rate
+ self.sd.set_sample_rate(self.sample_rate)
+ self.sync.set_omega(self.omega)
def _handle_msg(self, msg):
itemsize = int(msg.arg1())
Modified: gnuradio/branches/developers/jblum/gr-wxglgui/src/python/fftsink.py
===================================================================
--- gnuradio/branches/developers/jblum/gr-wxglgui/src/python/fftsink.py
2008-07-04 19:06:02 UTC (rev 8794)
+++ gnuradio/branches/developers/jblum/gr-wxglgui/src/python/fftsink.py
2008-07-04 22:48:27 UTC (rev 8795)
@@ -27,11 +27,13 @@
import common
import wx
import numpy
+import math
##################################################
# Constants
##################################################
SLIDER_STEPS = 100
+AVG_ALPHA_SLIDER_MIN, AVG_ALPHA_SLIDER_MAX = -4, 0
DEFAULT_FRAME_RATE = 30
DEFAULT_WIN_SIZE = (640, 240)
DIV_LEVELS = (1, 2, 5, 10, 20)
@@ -65,10 +67,10 @@
self.peak_hold_check_box.Bind(wx.EVT_CHECKBOX,
self._on_peak_hold)
control_box.Add(self.peak_hold_check_box, 0, wx.EXPAND)
control_box.AddSpacer(2)
- self.avg_alpha_label = wx.StaticText(self, -1, 'Avg Alpha:
0.00')
+ self.avg_alpha_label = wx.StaticText(self, -1, '0'*15)
control_box.Add(self.avg_alpha_label, 0, wx.EXPAND)
self.avg_alpha_slider = wx.Slider(self, -1, 0, 0, SLIDER_STEPS,
style=wx.SL_HORIZONTAL)
- self.avg_alpha_slider.Bind(wx.EVT_SCROLL, self._on_avg_alpha)
+ self.avg_alpha_slider.Bind(wx.EVT_SLIDER, self._on_avg_alpha)
control_box.Add(self.avg_alpha_slider, 0, wx.EXPAND)
#radio buttons for div size
@@ -90,6 +92,13 @@
self._ref_lvl_buttons = common.IncrDecrButtons(self,
self._on_incr_ref_level, self._on_decr_ref_level)
control_box.Add(self._ref_lvl_buttons, 0, wx.ALIGN_CENTER)
control_box.AddStretchSpacer()
+
+ #run/stop
+ control_box.AddStretchSpacer()
+ self.run_button = wx.Button(self, -1, '', style=wx.BU_EXACTFIT)
+ self.run_button.Bind(wx.EVT_BUTTON, self._on_run)
+ control_box.Add(self.run_button, 0, wx.EXPAND)
+
#set sizer
self.SetSizerAndFit(control_box)
#update
@@ -99,12 +108,17 @@
"""!
Read the state of the fft plot settings and update the control
panel.
"""
+ #update the run/stop button
+ if self.parent.running: self.run_button.SetLabel('Stop')
+ else: self.run_button.SetLabel('Run')
#update checkboxes
self.average_check_box.SetValue(self.parent.average)
self.peak_hold_check_box.SetValue(self.parent.peak_hold)
#update avg alpha
- self.avg_alpha_label.SetLabel('Avg Alpha:
%.2f'%self.parent.avg_alpha)
-
self.avg_alpha_slider.SetValue(self.parent.avg_alpha*SLIDER_STEPS)
+ self.avg_alpha_label.SetLabel('Avg Alpha:
%.3g'%self.parent.avg_alpha)
+ slider_value =
SLIDER_STEPS*(math.log10(self.parent.avg_alpha)-AVG_ALPHA_SLIDER_MIN)/(AVG_ALPHA_SLIDER_MAX-AVG_ALPHA_SLIDER_MIN)
+ if abs(slider_value - self.avg_alpha_slider.GetValue()) > 1:
+ self.avg_alpha_slider.SetValue(slider_value)
if self.parent.average:
self.avg_alpha_label.Enable()
self.avg_alpha_slider.Enable()
@@ -128,7 +142,9 @@
def _on_peak_hold(self, event):
self.parent.set_peak_hold(event.IsChecked())
def _on_incr_ref_level(self, event): self.parent.incr_ref_level()
def _on_decr_ref_level(self, event): self.parent.decr_ref_level()
- def _on_avg_alpha(self, event):
self.parent.set_avg_alpha(float(self.avg_alpha_slider.GetValue())/SLIDER_STEPS)
+ def _on_avg_alpha(self, event):
+
self.parent.set_avg_alpha(10**(float(AVG_ALPHA_SLIDER_MAX-AVG_ALPHA_SLIDER_MIN)*self.avg_alpha_slider.GetValue()/SLIDER_STEPS
+ AVG_ALPHA_SLIDER_MIN))
+ def _on_run(self, event): self.parent.set_run(not self.parent.running)
##################################################
# FFT window with plotter and control panel
@@ -155,6 +171,7 @@
#ensure y_per_div
if y_per_div not in DIV_LEVELS: y_per_div = DIV_LEVELS[0]
#setup
+ self.running = True
self.real = real
self.baseband_freq = baseband_freq
self.sample_rate = sample_rate
@@ -190,6 +207,7 @@
If peak hold is enabled, plot peak vals as channel 2.
@param samples the fft array
"""
+ if not self.running: return
#peak hold calculation
if self.peak_hold:
if len(self.peak_vals) != len(samples): self.peak_vals
= samples
@@ -273,6 +291,9 @@
self.update()
def incr_ref_level(self): self.set_ref_level(self.ref_level +
self.y_per_div)
def decr_ref_level(self): self.set_ref_level(self.ref_level -
self.y_per_div)
+ def set_run(self, running):
+ self.running = running
+ self.update()
##################################################
# FFT sink base block for real and complex types
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r8795 - gnuradio/branches/developers/jblum/gr-wxglgui/src/python,
jblum <=