summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnuradio-runtime/lib/hier_block2_detail.cc22
-rw-r--r--gnuradio-runtime/python/pmt/pmt_to_python.py2
-rw-r--r--gnuradio-runtime/swig/tags.i1
-rw-r--r--gr-blocks/grc/blocks_message_strobe_random.xml2
-rw-r--r--gr-blocks/grc/blocks_udp_sink.xml3
-rw-r--r--gr-blocks/grc/blocks_udp_source.xml3
-rw-r--r--gr-digital/include/gnuradio/digital/clock_recovery_mm_cc.h24
-rw-r--r--gr-digital/include/gnuradio/digital/clock_recovery_mm_ff.h24
-rw-r--r--gr-qtgui/grc/qtgui_time_sink_x.xml16
-rw-r--r--gr-qtgui/lib/const_sink_c_impl.cc5
10 files changed, 72 insertions, 30 deletions
diff --git a/gnuradio-runtime/lib/hier_block2_detail.cc b/gnuradio-runtime/lib/hier_block2_detail.cc
index e6d867b269..e23ca2bd3d 100644
--- a/gnuradio-runtime/lib/hier_block2_detail.cc
+++ b/gnuradio-runtime/lib/hier_block2_detail.cc
@@ -594,12 +594,6 @@ namespace gr {
basic_block_sptr b;
b = p->src().block();
- if(ctrlport_on) {
- if(!b->is_rpc_set()) {
- b->setup_rpc();
- b->rpc_set();
- }
- }
if(set_all_min_buff){
//sets the min buff for every block within hier_block2
if(min_buff != 0){
@@ -656,12 +650,6 @@ namespace gr {
}
b = p->dst().block();
- if(ctrlport_on) {
- if(!b->is_rpc_set()) {
- b->setup_rpc();
- b->rpc_set();
- }
- }
if(set_all_min_buff){
//sets the min buff for every block within hier_block2
if(min_buff != 0){
@@ -797,8 +785,16 @@ namespace gr {
// First add the list of singleton blocks
std::vector<basic_block_sptr>::const_iterator b; // Because flatten_aux is const
- for(b = d_blocks.begin(); b != d_blocks.end(); b++)
+ for(b = d_blocks.begin(); b != d_blocks.end(); b++) {
tmp.push_back(*b);
+ // for every block, attempt to setup RPC
+ if(ctrlport_on) {
+ if(!(*b)->is_rpc_set()) {
+ (*b)->setup_rpc();
+ (*b)->rpc_set();
+ }
+ }
+ }
// Now add the list of connected input blocks
std::stringstream msg;
diff --git a/gnuradio-runtime/python/pmt/pmt_to_python.py b/gnuradio-runtime/python/pmt/pmt_to_python.py
index e08b7265de..f9000ec279 100644
--- a/gnuradio-runtime/python/pmt/pmt_to_python.py
+++ b/gnuradio-runtime/python/pmt/pmt_to_python.py
@@ -130,6 +130,6 @@ def pmt_to_python(p):
def python_to_pmt(p):
for python_type, pmt_check, to_python, from_python in type_mappings:
if python_type is None:
- if p == None: return from_python(p)
+ if p is None: return from_python(p)
elif isinstance(p, python_type): return from_python(p)
raise ValueError("can't convert %s type to pmt (%s)"%(type(p),p))
diff --git a/gnuradio-runtime/swig/tags.i b/gnuradio-runtime/swig/tags.i
index 2615264738..c86e7f7244 100644
--- a/gnuradio-runtime/swig/tags.i
+++ b/gnuradio-runtime/swig/tags.i
@@ -25,6 +25,7 @@
%import <pmt_swig.i> //for pmt support
+%ignore gr::tag_t::operator=;
%include <gnuradio/tags.h>
//gives support for a vector of tags (get tags in range)
diff --git a/gr-blocks/grc/blocks_message_strobe_random.xml b/gr-blocks/grc/blocks_message_strobe_random.xml
index 0b3e7296a0..573db58aef 100644
--- a/gr-blocks/grc/blocks_message_strobe_random.xml
+++ b/gr-blocks/grc/blocks_message_strobe_random.xml
@@ -11,7 +11,7 @@
<import>import pmt</import>
<make>blocks.message_strobe_random($msg, $dist, $mean, $std)</make>
<callback>set_msg($msg)</callback>
- <callback>set_dist($period)</callback>
+ <callback>set_dist($dist)</callback>
<callback>set_mean($mean)</callback>
<callback>set_std($std)</callback>
<param>
diff --git a/gr-blocks/grc/blocks_udp_sink.xml b/gr-blocks/grc/blocks_udp_sink.xml
index a001b2f1bb..0b67532c72 100644
--- a/gr-blocks/grc/blocks_udp_sink.xml
+++ b/gr-blocks/grc/blocks_udp_sink.xml
@@ -9,7 +9,6 @@
<key>blocks_udp_sink</key>
<import>from gnuradio import blocks</import>
<make>blocks.udp_sink($type.size*$vlen, $ipaddr, $port, $psize, $eof)</make>
- <callback>set_mtu($mtu)</callback>
<param>
<name>Input Type</name>
<key>type</key>
@@ -57,7 +56,7 @@
<type>int</type>
</param>
<param>
- <name>Send Null Pkt as EOF</name>
+ <name>Send Null Pkt as EOF</name>
<key>eof</key>
<value>True</value>
<type>bool</type>
diff --git a/gr-blocks/grc/blocks_udp_source.xml b/gr-blocks/grc/blocks_udp_source.xml
index 03dbb5781b..c84816f785 100644
--- a/gr-blocks/grc/blocks_udp_source.xml
+++ b/gr-blocks/grc/blocks_udp_source.xml
@@ -10,7 +10,6 @@
<flags>throttle</flags>
<import>from gnuradio import blocks</import>
<make>blocks.udp_source($type.size*$vlen, $ipaddr, $port, $psize, $eof)</make>
- <callback>set_mtu($mtu)</callback>
<param>
<name>Output Type</name>
<key>type</key>
@@ -60,7 +59,7 @@
<type>int</type>
</param>
<param>
- <name>Null Pkt is EOF</name>
+ <name>Null Pkt is EOF</name>
<key>eof</key>
<value>True</value>
<type>bool</type>
diff --git a/gr-digital/include/gnuradio/digital/clock_recovery_mm_cc.h b/gr-digital/include/gnuradio/digital/clock_recovery_mm_cc.h
index 9bca249afd..c487f01db4 100644
--- a/gr-digital/include/gnuradio/digital/clock_recovery_mm_cc.h
+++ b/gr-digital/include/gnuradio/digital/clock_recovery_mm_cc.h
@@ -37,6 +37,30 @@ namespace gr {
* This implements the Mueller and Müller (M&M) discrete-time
* error-tracking synchronizer.
*
+ * The peak to peak input signal amplitude must be symmetrical
+ * about zero, as the M&M timing error detector (TED) is a
+ * decision directed TED, and this block uses a symbol decision
+ * slicer referenced at zero.
+ *
+ * The input signal peak amplitude should be controlled to a
+ * consistent level (e.g. +/- 1.0) before this block to achieve
+ * consistent results for given gain settings; as the TED's output
+ * error signal is directly affected by the input amplitude.
+ *
+ * The input signal must have peaks in order for the TED to output
+ * a correct error signal. If the input signal pulses do not have
+ * peaks (e.g. rectangular pulses) the input signal should be
+ * conditioned with a matched pulse filter or other appropriate
+ * filter to peak the input pulses. For a rectangular base pulse
+ * that is N samples wide, the matched filter taps would be
+ * [1.0/float(N)]*N, or in other words a moving average over N
+ * samples.
+ *
+ * This block will output samples at a rate of one sample per
+ * recovered symbol, and is thus not outputting at a constant rate.
+ *
+ * Output symbols are not a subset of input, but may be interpolated.
+ *
* The complex version here is based on: Modified Mueller and
* Muller clock recovery circuit:
*
diff --git a/gr-digital/include/gnuradio/digital/clock_recovery_mm_ff.h b/gr-digital/include/gnuradio/digital/clock_recovery_mm_ff.h
index 8b87810a36..61b2e96ac8 100644
--- a/gr-digital/include/gnuradio/digital/clock_recovery_mm_ff.h
+++ b/gr-digital/include/gnuradio/digital/clock_recovery_mm_ff.h
@@ -37,6 +37,30 @@ namespace gr {
* This implements the Mueller and Müller (M&M) discrete-time
* error-tracking synchronizer.
*
+ * The peak to peak input signal amplitude must be symmetrical
+ * about zero, as the M&M timing error detector (TED) is a
+ * decision directed TED, and this block uses a symbol decision
+ * slicer referenced at zero.
+ *
+ * The input signal peak amplitude should be controlled to a
+ * consistent level (e.g. +/- 1.0) before this block to achieve
+ * consistent results for given gain settings; as the TED's output
+ * error signal is directly affected by the input amplitude.
+ *
+ * The input signal must have peaks in order for the TED to output
+ * a correct error signal. If the input signal pulses do not have
+ * peaks (e.g. rectangular pulses) the input signal should be
+ * conditioned with a matched pulse filter or other appropriate
+ * filter to peak the input pulses. For a rectangular base pulse
+ * that is N samples wide, the matched filter taps would be
+ * [1.0/float(N)]*N, or in other words a moving average over N
+ * samples.
+ *
+ * This block will output samples at a rate of one sample per
+ * recovered symbol, and is thus not outputting at a constant rate.
+ *
+ * Output symbols are not a subset of input, but may be interpolated.
+ *
* See "Digital Communication Receivers: Synchronization, Channel
* Estimation and Signal Processing" by Heinrich Meyr, Marc
* Moeneclaey, & Stefan Fechtel. ISBN 0-471-50275-8.
diff --git a/gr-qtgui/grc/qtgui_time_sink_x.xml b/gr-qtgui/grc/qtgui_time_sink_x.xml
index f78c3e2958..2ff832de35 100644
--- a/gr-qtgui/grc/qtgui_time_sink_x.xml
+++ b/gr-qtgui/grc/qtgui_time_sink_x.xml
@@ -46,8 +46,8 @@ markers = [$marker1, $marker2, $marker3, $marker4, $marker5,
alphas = [$alpha1, $alpha2, $alpha3, $alpha4, $alpha5,
$alpha6, $alpha7, $alpha8, $alpha9, $alpha10]
-#if($type() == "complex")
-for i in xrange(2*$nconnections):
+#if($type() == "complex" or $type() == "msg_complex")
+for i in xrange(#if $type.t == 'message' then 2 else 2*$nconnections#):
if len(labels[i]) == 0:
if(i % 2 == 0):
self.$(id).set_line_label(i, "Re{{Data {0}}}".format(i/2))
@@ -540,14 +540,14 @@ $(gui_hint()($win))</make>
<base_key>label1</base_key>
<name>Line 2 Label</name>
<key>label2</key>
- <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1)) then 'part' else 'all'#</hide>
+ <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1) or ($type() == "msg_complex")) then 'part' else 'all'#</hide>
</param>
<param>
<base_key>width1</base_key>
<name>Line 2 Width</name>
<key>width2</key>
- <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1)) then 'part' else 'all'#</hide>
+ <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1) or ($type() == "msg_complex")) then 'part' else 'all'#</hide>
</param>
<param>
@@ -555,28 +555,28 @@ $(gui_hint()($win))</make>
<name>Line 2 Color</name>
<key>color2</key>
<value>"red"</value>
- <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1)) then 'part' else 'all'#</hide>
+ <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1) or ($type() == "msg_complex")) then 'part' else 'all'#</hide>
</param>
<param>
<base_key>style1</base_key>
<name>Line 2 Style</name>
<key>style2</key>
- <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1)) then 'part' else 'all'#</hide>
+ <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1) or ($type() == "msg_complex")) then 'part' else 'all'#</hide>
</param>
<param>
<base_key>marker1</base_key>
<name>Line 2 Marker</name>
<key>marker2</key>
- <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1)) then 'part' else 'all'#</hide>
+ <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1) or ($type() == "msg_complex")) then 'part' else 'all'#</hide>
</param>
<param>
<base_key>alpha1</base_key>
<name>Line 2 Alpha</name>
<key>alpha2</key>
- <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1)) then 'part' else 'all'#</hide>
+ <hide>#if (int($nconnections()) >= 2 or ($type() == "complex" and int($nconnections()) >= 1) or ($type() == "msg_complex")) then 'part' else 'all'#</hide>
</param>
diff --git a/gr-qtgui/lib/const_sink_c_impl.cc b/gr-qtgui/lib/const_sink_c_impl.cc
index 26ddf793dc..3f3bbf4405 100644
--- a/gr-qtgui/lib/const_sink_c_impl.cc
+++ b/gr-qtgui/lib/const_sink_c_impl.cc
@@ -98,7 +98,6 @@ namespace gr {
set_trigger_mode(TRIG_MODE_FREE, TRIG_SLOPE_POS, 0, 0);
set_history(2); // so we can look ahead for the trigger slope
- declare_sample_delay(1); // delay the tags for a history of 2
}
const_sink_c_impl::~const_sink_c_impl()
@@ -439,7 +438,7 @@ namespace gr {
if(tags.size() > 0) {
d_triggered = true;
trigger_index = tags[0].offset - nr;
- d_start = d_index + trigger_index - 1;
+ d_start = d_index + trigger_index;
d_end = d_start + d_size;
d_trigger_count = 0;
}
@@ -516,7 +515,7 @@ namespace gr {
in = (const gr_complex*)input_items[n];
volk_32fc_deinterleave_64f_x2(&d_residbufs_real[n][d_index],
&d_residbufs_imag[n][d_index],
- &in[0], nitems);
+ &in[history()-1], nitems);
}
d_index += nitems;