commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r4211 - gnuradio/branches/developers/trondeau/digital-


From: trondeau
Subject: [Commit-gnuradio] r4211 - gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general
Date: Mon, 1 Jan 2007 13:57:03 -0700 (MST)

Author: trondeau
Date: 2007-01-01 13:57:03 -0700 (Mon, 01 Jan 2007)
New Revision: 4211

Modified:
   
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc
   
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.h
   
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.i
Log:
fixing class name and bugs in mpsk receiver

Modified: 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc
===================================================================
--- 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc
     2007-01-01 19:59:43 UTC (rev 4210)
+++ 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc
     2007-01-01 20:57:03 UTC (rev 4211)
@@ -26,7 +26,7 @@
 
 #include <gr_io_signature.h>
 #include <gr_prefs.h>
-#include <gr_timing_recovery_simple_cc.h>
+#include <gr_mpsk_receiver_cc.h>
 #include <stdexcept>
 #include <gr_math.h>
 #include <gr_expj.h>
@@ -38,26 +38,26 @@
 
 // Public constructor
 
-gr_timing_recovery_simple_cc_sptr 
-gr_make_timing_recovery_simple_cc(unsigned int M, float theta,
+gr_mpsk_receiver_cc_sptr 
+gr_make_mpsk_receiver_cc(unsigned int M, float theta,
                                  float alpha, float beta,
                                  float fmin, float fmax,
                                  float mu, float gain_mu, 
                                  float omega, float gain_omega, float 
omega_rel)
 {
-  return gr_timing_recovery_simple_cc_sptr (new gr_timing_recovery_simple_cc 
(M, theta, 
+  return gr_mpsk_receiver_cc_sptr (new gr_mpsk_receiver_cc (M, theta, 
                                                                              
alpha, beta,
                                                                              
fmin, fmax,
                                                                              
mu, gain_mu, 
                                                                              
omega, gain_omega, omega_rel));
 }
 
-gr_timing_recovery_simple_cc::gr_timing_recovery_simple_cc (unsigned int M, 
float theta, 
+gr_mpsk_receiver_cc::gr_mpsk_receiver_cc (unsigned int M, float theta, 
                                                            float alpha, float 
beta,
                                                            float fmin, float 
fmax,
                                                            float mu, float 
gain_mu, 
                                                            float omega, float 
gain_omega, float omega_rel)
-  : gr_block ("timing_recovery_simple_cc",
+  : gr_block ("mpsk_receiver_cc",
              gr_make_io_signature (1, 1, sizeof (gr_complex)),
              gr_make_io_signature (1, 1, sizeof (gr_complex))),
     d_M(M), d_theta(theta), 
@@ -74,18 +74,18 @@
   // Select a phase detector and a decision maker for the modulation order
   switch(d_M) {
   case 2:  // optimized algorithms for BPSK
-    d_phase_error_detector = 
&gr_timing_recovery_simple_cc::phase_error_detector_bpsk;
-    d_decision = &gr_timing_recovery_simple_cc::decision_bpsk;
+    d_phase_error_detector = &gr_mpsk_receiver_cc::phase_error_detector_bpsk;
+    d_decision = &gr_mpsk_receiver_cc::decision_bpsk;
     break;
 
   case 4: // optimized algorithms for QPSK
-    d_phase_error_detector = 
&gr_timing_recovery_simple_cc::phase_error_detector_qpsk;
-    d_decision = &gr_timing_recovery_simple_cc::decision_qpsk;
+    d_phase_error_detector = &gr_mpsk_receiver_cc::phase_error_detector_qpsk;
+    d_decision = &gr_mpsk_receiver_cc::decision_qpsk;
     break;
 
   default: // generic algorithms for any M (power of 2?) but not pretty
-    d_phase_error_detector = 
&gr_timing_recovery_simple_cc::phase_error_detector_generic;
-    d_decision = &gr_timing_recovery_simple_cc::decision_generic;
+    d_phase_error_detector = 
&gr_mpsk_receiver_cc::phase_error_detector_generic;
+    d_decision = &gr_mpsk_receiver_cc::decision_generic;
     break;
   }
   
@@ -93,7 +93,7 @@
   fout.open("timing_recovery.txt");
 }
 
-gr_timing_recovery_simple_cc::~gr_timing_recovery_simple_cc ()
+gr_mpsk_receiver_cc::~gr_mpsk_receiver_cc ()
 {
   // FIXME: remove when we've got everything working
   fout.close();
@@ -101,27 +101,27 @@
 }
 
 void
-gr_timing_recovery_simple_cc::forecast(int noutput_items, gr_vector_int 
&ninput_items_required)
+gr_mpsk_receiver_cc::forecast(int noutput_items, gr_vector_int 
&ninput_items_required)
 {
   unsigned ninputs = ninput_items_required.size();
   for (unsigned i=0; i < ninputs; i++)
-    ninput_items_required[i] = d_samples_per_symbol+d_offset;
+    ninput_items_required[i] = (int)(d_omega);
 }
 
 float
-gr_timing_recovery_simple_cc::phase_error_detector_qpsk(gr_complex sample) 
const
+gr_mpsk_receiver_cc::phase_error_detector_qpsk(gr_complex sample) const
 {
   return ((sample.real()>0 ? 1.0 : -1.0) * sample.imag() -
          (sample.imag()>0 ? 1.0 : -1.0) * sample.real());
 }
 
 float
-gr_timing_recovery_simple_cc::phase_error_detector_bpsk(gr_complex sample) 
const
+gr_mpsk_receiver_cc::phase_error_detector_bpsk(gr_complex sample) const
 {
   return (sample.real()*sample.imag());
 }
 
-float gr_timing_recovery_simple_cc::phase_error_detector_generic(gr_complex 
sample) const
+float gr_mpsk_receiver_cc::phase_error_detector_generic(gr_complex sample) 
const
 {
   unsigned int min_m = 0;
   gr_complex constpoint;
@@ -148,7 +148,7 @@
 }
 
 gr_complex
-gr_timing_recovery_simple_cc::decision_bpsk(gr_complex sample) const
+gr_mpsk_receiver_cc::decision_bpsk(gr_complex sample) const
 {
   float real=-0.5, imag=0.0;
 
@@ -159,7 +159,7 @@
 }
 
 gr_complex
-gr_timing_recovery_simple_cc::decision_qpsk(gr_complex sample) const
+gr_mpsk_receiver_cc::decision_qpsk(gr_complex sample) const
 {
   float real=-0.5, imag=-0.5;
 
@@ -172,7 +172,7 @@
 }
 
 gr_complex
-gr_timing_recovery_simple_cc::decision_generic(gr_complex sample) const
+gr_mpsk_receiver_cc::decision_generic(gr_complex sample) const
 {
   unsigned int min_m = 0;
   gr_complex constpoint;
@@ -195,7 +195,7 @@
 }
 
 int
-gr_timing_recovery_simple_cc::general_work (int noutput_items,
+gr_mpsk_receiver_cc::general_work (int noutput_items,
                                            gr_vector_int &ninput_items,
                                            gr_vector_const_void_star 
&input_items,
                                            gr_vector_void_star &output_items)
@@ -241,7 +241,6 @@
     }
     
     if(i < ninput_items[0]) {
-      d_offset = d_samples_per_symbol;
       gr_complex interp_sample = d_interp->interpolate(&d_dl[d_dl_idx], d_mu);
       
       // Make sample timing corrections

Modified: 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.h
===================================================================
--- 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.h
      2007-01-01 19:59:43 UTC (rev 4210)
+++ 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.h
      2007-01-01 20:57:03 UTC (rev 4211)
@@ -20,8 +20,8 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#ifndef INCLUDED_GR_TIMING_RECOVERY_SIMPLE_CC_H
-#define        INCLUDED_GR_TIMING_RECOVERY_SIMPLE_CC_H
+#ifndef INCLUDED_GR_MPSK_RECEIVER_CC_H
+#define        INCLUDED_GR_MPSK_RECEIVER_CC_H
 
 #include <gr_block.h>
 #include <gr_complex.h>
@@ -29,16 +29,16 @@
 
 class gri_mmse_fir_interpolator_cc;
 
-class gr_timing_recovery_simple_cc;
-typedef boost::shared_ptr<gr_timing_recovery_simple_cc> 
gr_timing_recovery_simple_cc_sptr;
+class gr_mpsk_receiver_cc;
+typedef boost::shared_ptr<gr_mpsk_receiver_cc> gr_mpsk_receiver_cc_sptr;
 
 // public constructor
-gr_timing_recovery_simple_cc_sptr 
-gr_make_timing_recovery_simple_cc (unsigned int M, float theta, 
-                                  float alpha, float beta,
-                                  float fmin, float fmax,
-                                  float mu, float gain_mu, 
-                                  float omega, float gain_omega, float 
omega_rel);
+gr_mpsk_receiver_cc_sptr 
+gr_make_mpsk_receiver_cc (unsigned int M, float theta, 
+                         float alpha, float beta,
+                         float fmin, float fmax,
+                         float mu, float gain_mu, 
+                         float omega, float gain_omega, float omega_rel);
 
 /*!
  * \brief This block takes care of receiving M-PSK modulated signals through 
phase, frequency, and symbol
@@ -68,10 +68,10 @@
  *
  */
 
-class gr_timing_recovery_simple_cc : public gr_block
+class gr_mpsk_receiver_cc : public gr_block
 {
  public:
-  ~gr_timing_recovery_simple_cc ();
+  ~gr_mpsk_receiver_cc ();
   void forecast(int noutput_items, gr_vector_int &ninput_items_required);
   int general_work (int noutput_items,
                    gr_vector_int &ninput_items,
@@ -121,19 +121,19 @@
   float freq() const { return d_freq; }
 
   //! (CL) Returns the current value of the phase of the NCO in the Costal loop
-  float phase() const { return d_phaes; }
+  float phase() const { return d_phase; }
 
   //! (CL) Sets the value for alpha (the phase gain term)
   void set_alpha(float alpha) { d_alpha = alpha; }
   
   //! (CL) Setss the value of beta (the frequency gain term)
-  float set_beta(float beta) { d_beta = beta; }
+  void set_beta(float beta) { d_beta = beta; }
 
   //! (CL) Sets the current value of the frequency of the NCO in the Costas 
loop
-  float set_freq(float freq) { d_freq = freq; }
+  void set_freq(float freq) { d_freq = freq; }
 
   //! (CL) Setss the current value of the phase of the NCO in the Costal loop
-  float set_phase(float phase) { d_phaes = phase; }
+  void set_phase(float phase) { d_phase = phase; }
 
 
 protected:
@@ -156,7 +156,7 @@
    * The constructor also chooses which phase detector and decision maker to 
use in the work loop based on the
    * value of M.
    */
-  gr_timing_recovery_simple_cc (unsigned int M, float theta, 
+  gr_mpsk_receiver_cc (unsigned int M, float theta, 
                                float alpha, float beta,
                                float fmin, float fmax,
                                float mu, float gain_mu, 
@@ -260,13 +260,13 @@
    * This is a function pointer that is set in the constructor to point to the 
proper decision function
    * for the specified constellation order.
  */
-  gr_complex (gr_timing_recovery_simple_cc::*d_decision)(gr_complex sample) 
const; // pointer to decision function
+  gr_complex (gr_mpsk_receiver_cc::*d_decision)(gr_complex sample) const; // 
pointer to decision function
 
 
 
   // Members related to symbol timing
   float d_mu, d_gain_mu;
-  float d_omega, d_gain_omega, d_omega_rel, d_min_omega, d_max_omega;
+  float d_omega, d_gain_omega, d_omega_rel, d_max_omega, d_min_omega;
   gr_complex d_p_2T, d_p_1T, d_p_0T;
   gr_complex d_c_2T, d_c_1T, d_c_0T;
 
@@ -278,7 +278,7 @@
    * This is a function pointer that is set in the constructor to point to the 
proper phase error detector
    * function for the specified constellation order.
  */
-  float (gr_timing_recovery_simple_cc::*d_phase_error_detector)(gr_complex 
sample) const;
+  float (gr_mpsk_receiver_cc::*d_phase_error_detector)(gr_complex sample) 
const;
 
 
   //! get interpolated value
@@ -296,12 +296,12 @@
   // FIXME: remove this once we're satisfied it all works
   std::ofstream fout;
   
-  friend gr_timing_recovery_simple_cc_sptr
-  gr_make_timing_recovery_simple_cc (unsigned int M, float theta,
-                                    float alpha, float beta,
-                                    float fmin, float fmax,
-                                    float mu, float gain_mu, 
-                                    float omega, float gain_omega, float 
omega_rel);
+  friend gr_mpsk_receiver_cc_sptr
+  gr_make_mpsk_receiver_cc (unsigned int M, float theta,
+                           float alpha, float beta,
+                           float fmin, float fmax,
+                           float mu, float gain_mu, 
+                           float omega, float gain_omega, float omega_rel);
 };
 
 #endif

Modified: 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.i
===================================================================
--- 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.i
      2007-01-01 19:59:43 UTC (rev 4210)
+++ 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.i
      2007-01-01 20:57:03 UTC (rev 4211)
@@ -20,23 +20,40 @@
  * Boston, MA 02110-1301, USA.
  */
 
-GR_SWIG_BLOCK_MAGIC(gr,timing_recovery_simple_cc);
+GR_SWIG_BLOCK_MAGIC(gr,mpsk_receiver_cc);
 
-gr_timing_recovery_simple_cc_sptr gr_make_timing_recovery_simple_cc (unsigned 
int M, float theta,
-                                                                    float 
alpha, float beta,
-                                                                    float 
fmin, float fmax,
-                                                                    float mu, 
float gain_mu, 
-                                                                    float 
omega, float gain_omega, float omega_rel);
-class gr_timing_recovery_simple_cc : public gr_block
+gr_mpsk_receiver_cc_sptr gr_make_mpsk_receiver_cc (unsigned int M, float theta,
+                                                  float alpha, float beta,
+                                                  float fmin, float fmax,
+                                                  float mu, float gain_mu, 
+                                                  float omega, float 
gain_omega, float omega_rel);
+class gr_mpsk_receiver_cc : public gr_block
 {
  private:
-  gr_timing_recovery_simple_cc (unsigned int M,float theta,
+  gr_mpsk_receiver_cc (unsigned int M,float theta,
                                float alpha, float beta,
                                float fmin, float fmax,
                                float mu, float gain_mu, 
                                float omega, float gain_omega, float omega_rel);
 public:
-  unsigned int samples_per_symbol() const { return d_samples_per_symbol;}
-
-  void set_samples_per_symbol (unsigned int samples_per_symbol) { 
d_samples_per_symbol = samples_per_symbol; }
+  float mu() const { return d_mu;}
+  float omega() const { return d_omega;}
+  float gain_mu() const { return d_gain_mu;}
+  float gain_omega() const { return d_gain_omega;}
+  void set_mu (float mu) { d_mu = mu; }
+  void set_omega (float omega) { 
+    d_omega = omega;
+    d_min_omega = omega*(1.0 - d_omega_rel);
+    d_max_omega = omega*(1.0 + d_omega_rel);
+  }
+  void set_gain_mu (float gain_mu) { d_gain_mu = gain_mu; }
+  void set_gain_omega (float gain_omega) { d_gain_omega = gain_omega; }
+  float alpha() const { return d_alpha; }
+  float beta() const { return d_beta; }
+  float freq() const { return d_freq; }
+  float phase() const { return d_phase; }
+  void set_alpha(float alpha) { d_alpha = alpha; }
+  void set_beta(float beta) { d_beta = beta; }
+  void set_freq(float freq) { d_freq = freq; }
+  void set_phase(float phase) { d_phase = phase; } 
 };





reply via email to

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