[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Patch-gnuradio] rewind() and clear() for vector source/sink; small upda
From: |
Andreas Müller |
Subject: |
[Patch-gnuradio] rewind() and clear() for vector source/sink; small update for channel model |
Date: |
Mon, 26 May 2008 14:54:13 +0200 |
User-agent: |
Thunderbird 2.0.0.14 (X11/20080506) |
Hello
I've attached two very small extensions:
- gr_vector_source_sink.diff adds rewind() and clear() to vector
sources and sinks. This is useful when doing automatic testing of a
block (e.g. BER vs SNR)
- channel_model.py.diff allows to set the random seed for the noise
source via __init__ and adds a function to set the timing offset.
Regards, Andreas
Index: gnuradio-core/src/python/gnuradio/blks2impl/channel_model.py
===================================================================
--- gnuradio-core/src/python/gnuradio/blks2impl/channel_model.py
(revision 8484)
+++ gnuradio-core/src/python/gnuradio/blks2impl/channel_model.py
(working copy)
@@ -23,7 +23,7 @@
from gnuradio import gr
class channel_model(gr.hier_block2):
- def __init__(self, noise_voltage=0.0, frequency_offset=0.0, epsilon=1.0,
taps=[1.0,0.0]):
+ def __init__(self, noise_voltage=0.0, frequency_offset=0.0, epsilon=1.0,
taps=[1.0,0.0], noise_seed=3021):
''' Creates a channel model that includes:
- AWGN noise power in terms of noise voltage
- A frequency offest in the channel in ratio
@@ -40,7 +40,7 @@
self.multipath = gr.fir_filter_ccc(1, taps)
self.noise_adder = gr.add_cc()
- self.noise = gr.noise_source_c(gr.GR_GAUSSIAN,noise_voltage)
+ self.noise = gr.noise_source_c(gr.GR_GAUSSIAN, noise_voltage,
noise_seed)
self.freq_offset = gr.sig_source_c(1, gr.GR_SIN_WAVE,
frequency_offset, 1.0, 0.0)
self.mixer_offset = gr.multiply_cc()
@@ -60,3 +60,6 @@
def set_taps(self, taps):
self.multipath.set_taps(taps)
+
+ def set_timing_offset(self, epsilon):
+ self.timing_offset.set_interp_ratio(epsilon)
Index: gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
===================================================================
--- gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t (revision 8484)
+++ gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t (working copy)
@@ -46,6 +46,7 @@
@NAME@ (const std::vector<@TYPE@> &data, bool repeat);
public:
+ void rewind() {d_offset=0;}
virtual int work (int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
Index: gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
===================================================================
--- gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t (revision 8484)
+++ gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t (working copy)
@@ -49,6 +49,7 @@
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
+ void clear() {d_data.clear();}
std::vector<@TYPE@> data () const;
};
Index: gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t
===================================================================
--- gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t (revision 8484)
+++ gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t (working copy)
@@ -28,6 +28,8 @@
address@hidden@ (const std::vector<@TYPE@> &data, bool repeat = false);
class @NAME@ : public gr_sync_block {
+ public:
+ void rewind() {d_offset=0;}
private:
@NAME@ (const std::vector<@TYPE@> &data);
};
Index: gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t
===================================================================
--- gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t (revision 8484)
+++ gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t (working copy)
@@ -32,6 +32,7 @@
@NAME@ ();
public:
+ void clear() {d_data.clear();}
std::vector<@TYPE@> data () const;
};
signature.asc
Description: OpenPGP digital signature
- [Patch-gnuradio] rewind() and clear() for vector source/sink; small update for channel model,
Andreas Müller <=