receiver: Added resamp_rate parameter

Change-Id: Iaffbe8fc28be9a70fbf8fa1689687fbd171f6b0e
diff --git a/grc/receiver/gsm_receiver.xml b/grc/receiver/gsm_receiver.xml
index 2988243..bfa0b26 100644
--- a/grc/receiver/gsm_receiver.xml
+++ b/grc/receiver/gsm_receiver.xml
@@ -3,7 +3,7 @@
   <name>GSM Receiver</name>
   <key>gsm_receiver</key>
   <import>import grgsm</import>
-  <make>grgsm.receiver($osr, $cell_allocation, $tseq_nums, False)</make>
+  <make>grgsm.receiver($osr, $cell_allocation, $tseq_nums, $resamp_rate, False)</make>
 
   <param>
     <name>Oversampling ratio</name>
@@ -29,6 +29,14 @@
   </param>
 
   <param>
+    <name>Resamp rate</name>
+    <key>resamp_rate</key>
+    <value>1.0</value>
+    <type>float</type>
+    <hide>part</hide>
+  </param>
+
+  <param>
     <name>Num Streams</name>
     <key>num_streams</key>
     <value>1</value>
@@ -36,7 +44,7 @@
     <hide>part</hide>
   </param>
   <check>$num_streams &gt;= 0</check>
-  
+
   <sink>
     <name>in</name>
     <type>complex</type>
diff --git a/grc/receiver/gsm_receiver_with_uplink.xml b/grc/receiver/gsm_receiver_with_uplink.xml
index 4b68336..899272c 100644
--- a/grc/receiver/gsm_receiver_with_uplink.xml
+++ b/grc/receiver/gsm_receiver_with_uplink.xml
@@ -3,7 +3,7 @@
   <name>GSM Receiver (with uplink)</name>
   <key>gsm_receiver_with_uplink</key>
   <import>import grgsm</import>
-  <make>grgsm.receiver($osr, $cell_allocation, $tseq_nums, True)</make>
+  <make>grgsm.receiver($osr, $cell_allocation, $tseq_nums, $resamp_rate, True)</make>
 
   <param>
     <name>Oversampling ratio</name>
@@ -29,6 +29,14 @@
   </param>
 
   <param>
+    <name>Resamp rate</name>
+    <key>resamp_rate</key>
+    <value>1.0</value>
+    <type>float</type>
+    <hide>part</hide>
+  </param>
+
+  <param>
     <name>Num Streams</name>
     <key>num_streams</key>
     <value>1</value>
diff --git a/include/grgsm/receiver/receiver.h b/include/grgsm/receiver/receiver.h
index dbbe327..f892392 100644
--- a/include/grgsm/receiver/receiver.h
+++ b/include/grgsm/receiver/receiver.h
@@ -50,7 +50,13 @@
        * class. gsm::receiver::make is the public interface for
        * creating new instances.
        */
-      static sptr make(int osr, const std::vector<int> &cell_allocation, const std::vector<int> &seq_nums, bool process_uplink=false);
+      static sptr make(
+        int osr,
+        const std::vector<int> &cell_allocation,
+        const std::vector<int> &tseq_nums,
+        double resamp_rate=1,
+        bool process_uplink=false
+      );
       
       virtual void set_cell_allocation(const std::vector<int> &cell_allocation) = 0;
       virtual void set_tseq_nums(const std::vector<int> & tseq_nums) = 0;
diff --git a/lib/receiver/receiver_impl.cc b/lib/receiver/receiver_impl.cc
index ffaf9ee..4570b96 100644
--- a/lib/receiver/receiver_impl.cc
+++ b/lib/receiver/receiver_impl.cc
@@ -58,18 +58,30 @@
     /* The public constructor */
     receiver::sptr
     receiver::make(
-      int osr, const std::vector<int> &cell_allocation,
-      const std::vector<int> &tseq_nums, bool process_uplink)
+      int osr,
+      const std::vector<int> &cell_allocation,
+      const std::vector<int> &tseq_nums,
+      double resamp_rate,
+      bool process_uplink
+    )
     {
-      return gnuradio::get_initial_sptr
-        (new receiver_impl(osr, cell_allocation,
-          tseq_nums, process_uplink));
+      return gnuradio::get_initial_sptr(
+        new receiver_impl(
+          osr,
+          cell_allocation,
+          tseq_nums,
+          resamp_rate,
+          process_uplink)
+        );
     }
 
     /* The private constructor */
     receiver_impl::receiver_impl(
-      int osr, const std::vector<int> &cell_allocation,
-      const std::vector<int> &tseq_nums, bool process_uplink
+      int osr,
+      const std::vector<int> &cell_allocation,
+      const std::vector<int> &tseq_nums,
+      double resamp_rate,
+      bool process_uplink
     ) : gr::sync_block("receiver",
           gr::io_signature::make(1, -1, sizeof(gr_complex)),
           gr::io_signature::make(0, 0, 0)),
diff --git a/lib/receiver/receiver_impl.h b/lib/receiver/receiver_impl.h
index b880837..8714d52 100644
--- a/lib/receiver/receiver_impl.h
+++ b/lib/receiver/receiver_impl.h
@@ -213,7 +213,13 @@
             gr_vector_const_void_star &input_items, int noutput_items);
 
      public:
-        receiver_impl(int osr, const std::vector<int> &cell_allocation, const std::vector<int> &tseq_nums, bool process_uplink);
+        receiver_impl(
+          int osr,
+          const std::vector<int> &cell_allocation,
+          const std::vector<int> &tseq_nums,
+          double resamp_rate,
+          bool process_uplink
+        );
         ~receiver_impl();
       
         int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items);