patch-gnuradio
[Top][All Lists]
Advanced

[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;
 };
 

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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