commit-gnuradio
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]