diff options
-rw-r--r-- | gnuradio-runtime/lib/hier_block2_detail.cc | 22 | ||||
-rw-r--r-- | gnuradio-runtime/python/pmt/pmt_to_python.py | 2 | ||||
-rw-r--r-- | gnuradio-runtime/swig/tags.i | 1 | ||||
-rw-r--r-- | gr-blocks/grc/blocks_message_strobe_random.xml | 2 | ||||
-rw-r--r-- | gr-blocks/grc/blocks_udp_sink.xml | 3 | ||||
-rw-r--r-- | gr-blocks/grc/blocks_udp_source.xml | 3 | ||||
-rw-r--r-- | gr-digital/include/gnuradio/digital/clock_recovery_mm_cc.h | 24 | ||||
-rw-r--r-- | gr-digital/include/gnuradio/digital/clock_recovery_mm_ff.h | 24 | ||||
-rw-r--r-- | gr-qtgui/grc/qtgui_time_sink_x.xml | 16 | ||||
-rw-r--r-- | gr-qtgui/lib/const_sink_c_impl.cc | 5 |
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; |