summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2013-02-20 17:33:05 -0500
committerTom Rondeau <trondeau@vt.edu>2013-02-20 18:36:45 -0500
commit844a6e15b34d8106752bbf3783b3eb8b65728cac (patch)
tree9af8e62eac7668ce950c7c555d0299499b491880
parent11746e7de98462a6d6a9917e0500077ed063a1d7 (diff)
ctrlport: made display type in ControlPort setup field into an options mask.
Options are used to determine default plot type, type of plots available, initial states. qtgui: fixed enabling stem plot to properly check the menu option.
-rw-r--r--gnuradio-core/src/lib/general/gr_ctrlport_probe2_c.cc3
-rw-r--r--gnuradio-core/src/lib/general/gr_ctrlport_probe_c.cc3
-rw-r--r--gnuradio-core/src/lib/general/gr_throttle.cc6
-rw-r--r--gnuradio-core/src/lib/runtime/gnuradio.ice24
-rw-r--r--gnuradio-core/src/lib/runtime/gr_block.cc30
-rw-r--r--gnuradio-core/src/lib/runtime/nop_impl.cc8
-rw-r--r--gnuradio-core/src/lib/runtime/rpccallbackregister_base.h27
-rw-r--r--gnuradio-core/src/lib/runtime/rpcserver_ice.h4
-rw-r--r--gnuradio-core/src/lib/runtime/runtime.i27
-rw-r--r--gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py12
-rwxr-xr-xgnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor78
-rwxr-xr-xgnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py4
-rw-r--r--gr-channels/lib/channel_model_impl.cc16
-rw-r--r--gr-channels/lib/fading_model_impl.cc16
-rw-r--r--gr-digital/lib/pfb_clock_sync_ccf_impl.cc12
-rw-r--r--gr-qtgui/lib/timedisplayform.cc9
-rw-r--r--gr-qtgui/lib/timedisplayform.h1
17 files changed, 171 insertions, 109 deletions
diff --git a/gnuradio-core/src/lib/general/gr_ctrlport_probe2_c.cc b/gnuradio-core/src/lib/general/gr_ctrlport_probe2_c.cc
index 1b78a9cbc3..ca6667a214 100644
--- a/gnuradio-core/src/lib/general/gr_ctrlport_probe2_c.cc
+++ b/gnuradio-core/src/lib/general/gr_ctrlport_probe2_c.cc
@@ -138,7 +138,8 @@ gr_ctrlport_probe2_c::setup_rpc()
pmt::make_c32vector(0,-2),
pmt::make_c32vector(0,2),
pmt::make_c32vector(0,0),
- "volts", d_desc.c_str(), RPC_PRIVLVL_MIN, DISPXYSCATTER)));
+ "volts", d_desc.c_str(), RPC_PRIVLVL_MIN,
+ DISPXY | DISPOPTSCATTER)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_get<gr_ctrlport_probe2_c, int>(
diff --git a/gnuradio-core/src/lib/general/gr_ctrlport_probe_c.cc b/gnuradio-core/src/lib/general/gr_ctrlport_probe_c.cc
index e06f27eb70..253d4c380e 100644
--- a/gnuradio-core/src/lib/general/gr_ctrlport_probe_c.cc
+++ b/gnuradio-core/src/lib/general/gr_ctrlport_probe_c.cc
@@ -90,6 +90,7 @@ gr_ctrlport_probe_c::setup_rpc()
pmt::make_c32vector(0,-2),
pmt::make_c32vector(0,2),
pmt::make_c32vector(0,0),
- "volts", d_desc.c_str(), RPC_PRIVLVL_MIN, DISPXYSCATTER)));
+ "volts", d_desc.c_str(), RPC_PRIVLVL_MIN,
+ DISPXY | DISPOPTSCATTER)));
#endif /* GR_CTRLPORT */
}
diff --git a/gnuradio-core/src/lib/general/gr_throttle.cc b/gnuradio-core/src/lib/general/gr_throttle.cc
index d293e1c540..1c6c8cf893 100644
--- a/gnuradio-core/src/lib/general/gr_throttle.cc
+++ b/gnuradio-core/src/lib/general/gr_throttle.cc
@@ -89,12 +89,14 @@ private:
rpcbasic_sptr(new rpcbasic_register_get<gr_throttle_impl, double>(
alias(), "sample_rate", &gr_throttle_impl::sample_rate,
pmt::mp(0.0), pmt::mp(100.0e6), pmt::mp(0.0),
- "Hz", "Sample Rate", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "Hz", "Sample Rate", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_set<gr_throttle_impl, double>(
alias(), "sample_rate", &gr_throttle_impl::set_sample_rate,
pmt::mp(0.0), pmt::mp(100.0e6), pmt::mp(0.0),
- "Hz", "Sample Rate", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "Hz", "Sample Rate", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
#endif
}
};
diff --git a/gnuradio-core/src/lib/runtime/gnuradio.ice b/gnuradio-core/src/lib/runtime/gnuradio.ice
index 8fa909417e..e17d91901b 100644
--- a/gnuradio-core/src/lib/runtime/gnuradio.ice
+++ b/gnuradio-core/src/lib/runtime/gnuradio.ice
@@ -52,23 +52,23 @@ enum KnobType { KNOBBOOL, KNOBCHAR, KNOBINT, KNOBFLOAT,
KNOBVECCHAR, KNOBVECINT, KNOBVECFLOAT, KNOBVECDOUBLE,
KNOBVECSTRING, KNOBVECLONG };
-enum DisplayType {
- DISPNULL,
- DISPTIMESERIESF,
- DISPTIMESERIESC,
- DISPXYSCATTER,
- DISPXYLINE,
- DISPLOGTIMESERIESF,
- DISPLOGTIMESERIESC,
- DISPSTRIPCHARTF,
- DISPSTRIPCHARTC,
-};
+const int DISPNULL = 0x0000;
+const int DISPTIME = 0x0001;
+const int DISPXY = 0x0002;
+const int DISPPSD = 0x0004;
+const int DISPSPEC = 0x0008;
+const int DISPRAST = 0x0010;
+const int DISPOPTCPLX = 0x0100;
+const int DISPOPTLOG = 0x0200;
+const int DISPOPTSTEM = 0x0400;
+const int DISPOPTSTRIP = 0x0800;
+const int DISPOPTSCATTER = 0x1000;
struct KnobProp {
KnobType type;
string units;
string description;
- DisplayType display;
+ int display;
Knob min;
Knob max;
Knob defaultvalue;
diff --git a/gnuradio-core/src/lib/runtime/gr_block.cc b/gnuradio-core/src/lib/runtime/gr_block.cc
index fb39909ab8..ce92c88975 100644
--- a/gnuradio-core/src/lib/runtime/gr_block.cc
+++ b/gnuradio-core/src/lib/runtime/gr_block.cc
@@ -442,61 +442,71 @@ gr_block::setup_pc_rpc()
rpcbasic_sptr(new rpcbasic_register_get<gr_block, float>(
alias(), "avg noutput_items", &gr_block::pc_noutput_items,
pmt::mp(0), pmt::mp(32768), pmt::mp(0),
- "", "Average noutput items", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Average noutput items", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_get<gr_block, float>(
alias(), "var noutput_items", &gr_block::pc_noutput_items_var,
pmt::mp(0), pmt::mp(32768), pmt::mp(0),
- "", "Var. noutput items", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Var. noutput items", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_get<gr_block, float>(
alias(), "avg nproduced", &gr_block::pc_nproduced,
pmt::mp(0), pmt::mp(32768), pmt::mp(0),
- "", "Average items produced", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Average items produced", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_get<gr_block, float>(
alias(), "var nproduced", &gr_block::pc_nproduced_var,
pmt::mp(0), pmt::mp(32768), pmt::mp(0),
- "", "Var. items produced", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Var. items produced", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_get<gr_block, float>(
alias(), "avg work time", &gr_block::pc_work_time,
pmt::mp(0), pmt::mp(1e9), pmt::mp(0),
- "", "Average clock cycles in call to work", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Average clock cycles in call to work", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_get<gr_block, float>(
alias(), "var work time", &gr_block::pc_work_time_var,
pmt::mp(0), pmt::mp(1e9), pmt::mp(0),
- "", "Var. clock cycles in call to work", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Var. clock cycles in call to work", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_get<gr_block, std::vector<float> >(
alias(), "avg input \% full", &gr_block::pc_input_buffers_full,
pmt::make_c32vector(0,0), pmt::make_c32vector(0,1), pmt::make_c32vector(0,0),
- "", "Average of how full input buffers are", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Average of how full input buffers are", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_get<gr_block, std::vector<float> >(
alias(), "var input \% full", &gr_block::pc_input_buffers_full_var,
pmt::make_c32vector(0,0), pmt::make_c32vector(0,1), pmt::make_c32vector(0,0),
- "", "Var. of how full input buffers are", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Var. of how full input buffers are", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_get<gr_block, std::vector<float> >(
alias(), "avg output \% full", &gr_block::pc_output_buffers_full,
pmt::make_c32vector(0,0), pmt::make_c32vector(0,1), pmt::make_c32vector(0,0),
- "", "Average of how full output buffers are", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Average of how full output buffers are", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_rpc_vars.push_back(
rpcbasic_sptr(new rpcbasic_register_get<gr_block, std::vector<float> >(
alias(), "var output \% full", &gr_block::pc_output_buffers_full_var,
pmt::make_c32vector(0,0), pmt::make_c32vector(0,1), pmt::make_c32vector(0,0),
- "", "Var. of how full output buffers are", RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Var. of how full output buffers are", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
#endif /* GR_CTRLPORT */
}
diff --git a/gnuradio-core/src/lib/runtime/nop_impl.cc b/gnuradio-core/src/lib/runtime/nop_impl.cc
index 6df2c0391d..def1740678 100644
--- a/gnuradio-core/src/lib/runtime/nop_impl.cc
+++ b/gnuradio-core/src/lib/runtime/nop_impl.cc
@@ -90,15 +90,15 @@ namespace gr {
(new get_32i_t(d_name, "a", this, unique_id(),
&nop_impl::a,
pmt::mp(-128), pmt::mp(127), pmt::mp(0),
- "", "Value of a",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Value of a", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_get_32i_rpcs.push_back(get_32i_sptr
(new get_32i_t(d_name, "b", this, unique_id(),
&nop_impl::b,
pmt::mp(-128), pmt::mp(127), pmt::mp(0),
- "", "Value of b",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Value of b", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
d_set_32i_rpcs.push_back(set_32i_sptr
(new set_32i_t(d_name, "a", this, unique_id(),
diff --git a/gnuradio-core/src/lib/runtime/rpccallbackregister_base.h b/gnuradio-core/src/lib/runtime/rpccallbackregister_base.h
index a9a3925d94..dbfda4ed47 100644
--- a/gnuradio-core/src/lib/runtime/rpccallbackregister_base.h
+++ b/gnuradio-core/src/lib/runtime/rpccallbackregister_base.h
@@ -26,17 +26,22 @@
#include <gruel/msg_accepter.h>
#include <gruel/msg_producer.h>
-enum DisplayType {
- DISPNULL,
- DISPTIMESERIESF,
- DISPTIMESERIESC,
- DISPXYSCATTER,
- DISPXYLINE,
- DISPLOGTIMESERIESF,
- DISPLOGTIMESERIESC,
- DISPSTRIPCHARTF,
- DISPSTRIPCHARTC,
-};
+typedef uint32_t DisplayType;
+
+// DisplayType Plotting types
+const uint32_t DISPNULL = 0x0000;
+const uint32_t DISPTIME = 0x0001;
+const uint32_t DISPXY = 0x0002;
+const uint32_t DISPPSD = 0x0004;
+const uint32_t DISPSPEC = 0x0008;
+const uint32_t DISPRAST = 0x0010;
+
+// DisplayType Options
+const uint32_t DISPOPTCPLX = 0x0100;
+const uint32_t DISPOPTLOG = 0x0200;
+const uint32_t DISPOPTSTEM = 0x0400;
+const uint32_t DISPOPTSTRIP = 0x0800;
+const uint32_t DISPOPTSCATTER = 0x1000;
enum priv_lvl_t {
RPC_PRIVLVL_ALL = 0,
diff --git a/gnuradio-core/src/lib/runtime/rpcserver_ice.h b/gnuradio-core/src/lib/runtime/rpcserver_ice.h
index 98847bbe05..66ed8d5156 100644
--- a/gnuradio-core/src/lib/runtime/rpcserver_ice.h
+++ b/gnuradio-core/src/lib/runtime/rpcserver_ice.h
@@ -162,7 +162,7 @@ private:
prop.description = p.second.description;
prop.min = rpcpmtconverter::from_pmt(p.second.min, c);
prop.max = rpcpmtconverter::from_pmt(p.second.max, c);
- prop.display = static_cast<GNURadio::DisplayType>(p.second.display);
+ prop.display = static_cast<uint32_t>(p.second.display);
outknobs[p.first] = prop;
}
else {
@@ -197,7 +197,7 @@ private:
prop.description = iter->second.description;
prop.min = rpcpmtconverter::from_pmt(iter->second.min, c);
prop.max = rpcpmtconverter::from_pmt(iter->second.max, c);
- prop.display = static_cast<GNURadio::DisplayType>(iter->second.display);
+ prop.display = static_cast<uint32_t>(iter->second.display);
//outknobs[iter->first] = prop;
outknobs[p] = prop;
}
diff --git a/gnuradio-core/src/lib/runtime/runtime.i b/gnuradio-core/src/lib/runtime/runtime.i
index ea6b7f79ac..c3510a65e2 100644
--- a/gnuradio-core/src/lib/runtime/runtime.i
+++ b/gnuradio-core/src/lib/runtime/runtime.i
@@ -71,17 +71,22 @@
#ifdef GR_CTRLPORT
-enum DisplayType {
- DISPNULL,
- DISPTIMESERIESF,
- DISPTIMESERIESC,
- DISPXYSCATTER,
- DISPXYLINE,
- DISPLOGTIMESERIESF,
- DISPLOGTIMESERIESC,
- DISPSTRIPCHARTF,
- DISPSTRIPCHARTC,
-};
+typedef uint32_t DisplayType;
+
+// DisplayType Plotting types
+const uint32_t DISPNULL = 0x0000;
+const uint32_t DISPTIME = 0x0001;
+const uint32_t DISPXY = 0x0002;
+const uint32_t DISPPSD = 0x0004;
+const uint32_t DISPSPEC = 0x0008;
+const uint32_t DISPRAST = 0x0010;
+
+// DisplayType Options
+const uint32_t DISPOPTCPLX = 0x0100;
+const uint32_t DISPOPTLOG = 0x0200;
+const uint32_t DISPOPTSTEM = 0x0400;
+const uint32_t DISPOPTSTRIP = 0x0800;
+const uint32_t DISPOPTSCATTER = 0x1000;
enum priv_lvl_t {
RPC_PRIVLVL_ALL = 0,
diff --git a/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py b/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py
index 1990e21aa4..27858b575b 100644
--- a/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py
+++ b/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py
@@ -68,6 +68,9 @@ class GrDataPlotterC(gr.top_block):
def semilogy(self, en=True):
self.snk.enable_semilogy(en)
+ def stem(self, en=True):
+ self.snk.enable_stem_plot(en)
+
def update(self, data):
# Ask GUI if there has been a change in nsamps
npts = self.snk.nsamps()
@@ -147,6 +150,9 @@ class GrDataPlotterF(gr.top_block):
def semilogy(self, en=True):
self.snk.enable_semilogy(en)
+ def stem(self, en=True):
+ self.snk.enable_stem_plot(en)
+
def update(self, data):
# Ask GUI if there has been a change in nsamps
npts = self.snk.nsamps()
@@ -219,6 +225,12 @@ class GrDataPlotterConst(gr.top_block):
def name(self):
return self._name
+ def scatter(self, en=True):
+ if(en):
+ self.snk.set_line_style(0, 0)
+ else:
+ self.snk.set_line_style(0, 1)
+
def update(self, data):
# Ask GUI if there has been a change in nsamps
npts = self.snk.nsamps()
diff --git a/gnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor b/gnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor
index 4625a2d863..60a810b04e 100755
--- a/gnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor
+++ b/gnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor
@@ -115,17 +115,28 @@ class MAINWindow(QtGui.QMainWindow):
else:
pmax = 1.1*pmax
+ # Use display option mask of item to set up available plot
+ # types and default options.
+ disp = self.knobprops[uid][key].display
+ cplx = disp & gr.DISPOPTCPLX | disp & gr.DISPXY
+ strip = disp & gr.DISPOPTSTRIP
+ stem = disp & gr.DISPOPTSTEM
+ log = disp & gr.DISPOPTLOG
+ scatter = disp & gr.DISPOPTSCATTER
+
def newUpdaterProxy():
self.newUpdater(key, radio)
def newPlotterFProxy():
- self.newPlotF(key, uid, title, pmin, pmax)
+ self.newPlotF(key, uid, title, pmin, pmax,
+ log, strip, stem)
def newPlotterCProxy():
- self.newPlotC(key, uid, title, pmin, pmax)
+ self.newPlotC(key, uid, title, pmin, pmax,
+ log, strip, stem)
def newPlotterConstProxy():
- self.newPlotConst(key, uid, title, pmin, pmax)
+ self.newPlotConst(key, uid, title, pmin, pmax, scatter)
def newPlotterPsdFProxy():
self.newPlotPsdF(key, uid, title)
@@ -147,13 +158,15 @@ class MAINWindow(QtGui.QMainWindow):
menu.addAction("Properties", newUpdaterProxy)
# displays available
- menu.addAction("Plot Time", newPlotterFProxy)
- menu.addAction("Plot Time (cpx)", newPlotterCProxy)
- menu.addAction("Plot PSD", newPlotterPsdFProxy)
- menu.addAction("Plot PSD cpx", newPlotterPsdCProxy)
- menu.addAction("Plot Constellation", newPlotterConstProxy)
- menu.addAction("Plot Raster (real)", newPlotterRasterFProxy)
- #menu.addAction("Plot Raster (bits)", newPlotterRasterBProxy)
+ if(cplx == 0):
+ menu.addAction("Plot Time", newPlotterFProxy)
+ menu.addAction("Plot PSD", newPlotterPsdFProxy)
+ menu.addAction("Plot Raster (real)", newPlotterRasterFProxy)
+ #menu.addAction("Plot Raster (bits)", newPlotterRasterBProxy)
+ else:
+ menu.addAction("Plot Time", newPlotterCProxy)
+ menu.addAction("Plot PSD", newPlotterPsdCProxy)
+ menu.addAction("Plot Constellation", newPlotterConstProxy)
menu.popup(QtGui.QCursor.pos())
@@ -182,20 +195,27 @@ class MAINWindow(QtGui.QMainWindow):
else:
pmax = 1.1*pmax
- if(knobprop.display == GNURadio.DisplayType.DISPXYSCATTER):
- self.newPlotConst(tag, uid, title, pmin, pmax)
- elif(knobprop.display == GNURadio.DisplayType.DISPTIMESERIESF):
- self.newPlotF(tag, uid, title, pmin, pmax)
- elif(knobprop.display == GNURadio.DisplayType.DISPTIMESERIESC):
- self.newPlotC(tag, uid, title, pmin, pmax)
- elif(knobprop.display == GNURadio.DisplayType.DISPLOGTIMESERIESF):
- self.newPlotF(tag, uid, title, pmin, pmax, True)
- elif(knobprop.display == GNURadio.DisplayType.DISPLOGTIMESERIESC):
- self.newPlotC(tag, uid, title, pmin, pmax, True)
- elif(knobprop.display == GNURadio.DisplayType.DISPSTRIPCHARTF):
- self.newPlotC(tag, uid, title, pmin, pmax, False, True)
- elif(knobprop.display == GNURadio.DisplayType.DISPSTRIPCHARTC):
- self.newPlotC(tag, uid, title, pmin, pmax, False, True)
+ disp = knobprop.display
+ if(disp & gr.DISPTIME):
+ strip = disp & gr.DISPOPTSTRIP
+ stem = disp & gr.DISPOPTSTEM
+ log = disp & gr.DISPOPTLOG
+ if(disp & gr.DISPOPTCPLX == 0):
+ self.newPlotF(tag, uid, title, pmin, pmax,
+ log, strip, stem)
+ else:
+ self.newPlotC(tag, uid, title, pmin, pmax,
+ log, strip, stem)
+
+ elif(disp & gr.DISPXY):
+ scatter = disp & gr.DISPOPTSCATTER
+ self.newPlotConst(tag, uid, title, pmin, pmax, scatter)
+
+ elif(disp & gr.DISPPSD):
+ if(disp & gr.DISPOPTCPLX == 0):
+ self.newPlotPsdF(tag, uid, title)
+ else:
+ self.newPlotPsdC(tag, uid, title)
def createPlot(self, plot, uid, title):
plot.start()
@@ -216,20 +236,24 @@ class MAINWindow(QtGui.QMainWindow):
plots.remove(p)
break
- def newPlotConst(self, tag, uid, title="", pmin=None, pmax=None):
+ def newPlotConst(self, tag, uid, title="", pmin=None, pmax=None,
+ scatter=False):
plot = GrDataPlotterConst(tag, 32e6, pmin, pmax)
+ plot.scatter(scatter)
self.createPlot(plot, uid, title)
def newPlotF(self, tag, uid, title="", pmin=None, pmax=None,
- logy=False, stripchart=False):
+ logy=False, stripchart=False, stem=False):
plot = GrDataPlotterF(tag, 32e6, pmin, pmax, stripchart)
plot.semilogy(logy)
+ plot.stem(stem)
self.createPlot(plot, uid, title)
def newPlotC(self, tag, uid, title="", pmin=None, pmax=None,
- logy=False, stripchart=False):
+ logy=False, stripchart=False, stem=False):
plot = GrDataPlotterC(tag, 32e6, pmin, pmax, stripchart)
plot.semilogy(logy)
+ plot.stem(stem)
self.createPlot(plot, uid, title)
def newPlotPsdF(self, tag, uid, title="", pmin=None, pmax=None):
diff --git a/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py b/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py
index a8b6de8c53..6de5d5fc9f 100755
--- a/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py
+++ b/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py
@@ -98,12 +98,12 @@ class test_cpp_py_binding(gr_unittest.TestCase):
v5 = gr.RPC_get_vector_float("pyland", "fvec", "unit_5_float_vector",
"Python Exported Float Vector", [], [], [],
- gr.DISPTIMESERIESC)
+ gr.DISPTIME | gr.DISPOPTCPLX)
v5.activate(get5)
v6 = gr.RPC_get_vector_gr_complex("pyland", "cvec", "unit_6_gr_complex_vector",
"Python Exported Complex Vector", [], [], [],
- gr.DISPXYSCATTER)
+ gr.DISPXY | gr.DISPOPTSCATTER)
v6.activate(get6)
# print some variables locally
diff --git a/gr-channels/lib/channel_model_impl.cc b/gr-channels/lib/channel_model_impl.cc
index 642986cccd..aafab12f37 100644
--- a/gr-channels/lib/channel_model_impl.cc
+++ b/gr-channels/lib/channel_model_impl.cc
@@ -142,24 +142,24 @@ namespace gr {
alias(), "noise",
&channel_model::noise_voltage,
pmt::mp(-10.0f), pmt::mp(10.0f), pmt::mp(0.0f),
- "", "Noise Voltage",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Noise Voltage", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_get<channel_model, double>(
alias(), "freq",
&channel_model::frequency_offset,
pmt::mp(-1.0f), pmt::mp(1.0f), pmt::mp(0.0f),
- "Hz", "Frequency Offset",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "Hz", "Frequency Offset", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_get<channel_model, double>(
alias(), "timing",
&channel_model::timing_offset,
pmt::mp(0.0), pmt::mp(2.0), pmt::mp(0.0),
- "", "Timing Offset",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Timing Offset", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_get<channel_model, std::vector<gr_complex> >(
@@ -168,8 +168,8 @@ namespace gr {
pmt::make_c32vector(0,-10),
pmt::make_c32vector(0,10),
pmt::make_c32vector(0,0),
- "", "Multipath taps",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTC)));
+ "", "Multipath taps", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTCPLX | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_set<channel_model, double>(
diff --git a/gr-channels/lib/fading_model_impl.cc b/gr-channels/lib/fading_model_impl.cc
index 2e329f5174..080a3b8e06 100644
--- a/gr-channels/lib/fading_model_impl.cc
+++ b/gr-channels/lib/fading_model_impl.cc
@@ -97,14 +97,14 @@ namespace gr {
&fading_model::fDTs,
pmt::mp(0), pmt::mp(1), pmt::mp(0.01),
"Hz*Sec", "normalized maximum doppler frequency (fD*Ts)",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ RPC_PRIVLVL_MIN, DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_set<fading_model, float >(
alias(), "fDTs",
&fading_model::set_fDTs,
pmt::mp(0), pmt::mp(1), pmt::mp(0.01),
"Hz*Sec", "normalized maximum doppler frequency (fD*Ts)",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ RPC_PRIVLVL_MIN, DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_get<fading_model, float >(
@@ -112,14 +112,14 @@ namespace gr {
&fading_model::K,
pmt::mp(0), pmt::mp(8), pmt::mp(4),
"Ratio", "Rician factor (ratio of the specular power to the scattered power)",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ RPC_PRIVLVL_MIN, DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_set<fading_model, float >(
alias(), "K",
&fading_model::set_K,
pmt::mp(0), pmt::mp(8), pmt::mp(4),
"Ratio", "Rician factor (ratio of the specular power to the scattered power)",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ RPC_PRIVLVL_MIN, DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_get<fading_model, float >(
@@ -127,14 +127,14 @@ namespace gr {
&fading_model::step,
pmt::mp(0), pmt::mp(8), pmt::mp(4),
"radians", "Maximum step size for random walk angle per sample",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ RPC_PRIVLVL_MIN, DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_set<fading_model, float >(
alias(), "step",
&fading_model::set_step,
pmt::mp(0), pmt::mp(1), pmt::mp(0.00001),
"radians", "Maximum step size for random walk angle per sample",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ RPC_PRIVLVL_MIN, DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_get<fading_model, float >(
@@ -142,14 +142,14 @@ namespace gr {
&fading_model::step,
pmt::mp(0), pmt::mp(8), pmt::mp(4),
"radians", "Maximum step size for random walk angle per sample",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ RPC_PRIVLVL_MIN, DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_set<fading_model, float >(
alias(), "step",
&fading_model::set_step,
pmt::mp(0), pmt::mp(1), pmt::mp(0.00001),
"radians", "Maximum step size for random walk angle per sample",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ RPC_PRIVLVL_MIN, DISPTIME | DISPOPTSTRIP)));
#endif /* GR_CTRLPORT */
}
diff --git a/gr-digital/lib/pfb_clock_sync_ccf_impl.cc b/gr-digital/lib/pfb_clock_sync_ccf_impl.cc
index 58f41a466f..3c4a0e8ad4 100644
--- a/gr-digital/lib/pfb_clock_sync_ccf_impl.cc
+++ b/gr-digital/lib/pfb_clock_sync_ccf_impl.cc
@@ -463,24 +463,24 @@ namespace gr {
alias(), "error",
&pfb_clock_sync_ccf::error,
pmt::mp(-2.0f), pmt::mp(2.0f), pmt::mp(0.0f),
- "", "Error signal of loop",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Error signal of loop", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_get<pfb_clock_sync_ccf, float>(
alias(), "rate",
&pfb_clock_sync_ccf::rate,
pmt::mp(-2.0f), pmt::mp(2.0f), pmt::mp(0.0f),
- "", "Rate change of phase",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Rate change of phase", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_get<pfb_clock_sync_ccf, float>(
alias(), "phase",
&pfb_clock_sync_ccf::phase,
pmt::mp(0), pmt::mp((int)d_nfilters), pmt::mp(0),
- "", "Current filter phase arm",
- RPC_PRIVLVL_MIN, DISPSTRIPCHARTF)));
+ "", "Current filter phase arm", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
add_rpc_variable(
rpcbasic_sptr(new rpcbasic_register_get<pfb_clock_sync_ccf, float>(
diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc
index aaaf19518a..5e1fbfb570 100644
--- a/gr-qtgui/lib/timedisplayform.cc
+++ b/gr-qtgui/lib/timedisplayform.cc
@@ -45,10 +45,10 @@ TimeDisplayForm::TimeDisplayForm(int nplots, QWidget* parent)
connect(nptsmenu, SIGNAL(whichTrigger(int)),
this, SLOT(setNPoints(const int)));
- QAction *stemmenu = new QAction("Stem Plot", this);
- stemmenu->setCheckable(true);
- _menu->addAction(stemmenu);
- connect(stemmenu, SIGNAL(triggered(bool)),
+ d_stemmenu = new QAction("Stem Plot", this);
+ d_stemmenu->setCheckable(true);
+ _menu->addAction(d_stemmenu);
+ connect(d_stemmenu, SIGNAL(triggered(bool)),
this, SLOT(setStem(bool)));
d_semilogxmenu = new QAction("Semilog X", this);
@@ -148,6 +148,7 @@ void
TimeDisplayForm::setStem(bool en)
{
d_stem = en;
+ d_stemmenu->setChecked(en);
getPlot()->stemPlot(d_stem);
getPlot()->replot();
}
diff --git a/gr-qtgui/lib/timedisplayform.h b/gr-qtgui/lib/timedisplayform.h
index 082c66c31a..4bc99f622d 100644
--- a/gr-qtgui/lib/timedisplayform.h
+++ b/gr-qtgui/lib/timedisplayform.h
@@ -69,6 +69,7 @@ private:
bool d_semilogx;
bool d_semilogy;
+ QAction *d_stemmenu;
QAction *d_semilogxmenu;
QAction *d_semilogymenu;
};