[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] gnuradio-core ChangeLog src/lib/general/gr_cost...
From: |
Eric Blossom |
Subject: |
[Commit-gnuradio] gnuradio-core ChangeLog src/lib/general/gr_cost... |
Date: |
Wed, 21 Jun 2006 03:56:12 +0000 |
CVSROOT: /sources/gnuradio
Module name: gnuradio-core
Changes by: Eric Blossom <eb> 06/06/21 03:56:11
Modified files:
. : ChangeLog
src/lib/general: gr_costas_loop_cc.cc gr_costas_loop_cc.h
gr_costas_loop_cc.i
Log message:
modified to support BPSK and QPSK
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnuradio-core/ChangeLog?cvsroot=gnuradio&r1=1.240&r2=1.241
http://cvs.savannah.gnu.org/viewcvs/gnuradio-core/src/lib/general/gr_costas_loop_cc.cc?cvsroot=gnuradio&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/gnuradio-core/src/lib/general/gr_costas_loop_cc.h?cvsroot=gnuradio&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/gnuradio-core/src/lib/general/gr_costas_loop_cc.i?cvsroot=gnuradio&r1=1.3&r2=1.4
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnuradio/gnuradio-core/ChangeLog,v
retrieving revision 1.240
retrieving revision 1.241
diff -u -b -r1.240 -r1.241
--- ChangeLog 21 Jun 2006 00:08:02 -0000 1.240
+++ ChangeLog 21 Jun 2006 03:56:11 -0000 1.241
@@ -1,3 +1,9 @@
+2006-06-20 Tom Rondeau <address@hidden>
+
+ * src/lib/general/gr_costas_loop_cc.{h,cc,i}: modified to support
+ both BPSK and QPSK via "order" constructor argument. Removed
+ unused ref_phase ctor arg.
+
2006-06-20 Eric Blossom <address@hidden>
* src/lib/general/gr_probe_avg_mag_sqrd_{f,c}.{h,cc,i}: added accessor
Index: src/lib/general/gr_costas_loop_cc.cc
===================================================================
RCS file: /sources/gnuradio/gnuradio-core/src/lib/general/gr_costas_loop_cc.cc,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- src/lib/general/gr_costas_loop_cc.cc 23 May 2006 01:27:46 -0000
1.13
+++ src/lib/general/gr_costas_loop_cc.cc 21 Jun 2006 03:56:11 -0000
1.14
@@ -33,31 +33,56 @@
#define M_TWOPI (2*M_PI)
gr_costas_loop_cc_sptr
-gr_make_costas_loop_cc (float alpha, float beta, float max_freq, float
min_freq, float ref_phase)
+gr_make_costas_loop_cc (float alpha, float beta,
+ float max_freq, float min_freq,
+ int order
+ ) throw (std::invalid_argument)
{
- return gr_costas_loop_cc_sptr (new gr_costas_loop_cc (alpha, beta, max_freq,
min_freq,ref_phase));
+ return gr_costas_loop_cc_sptr (new gr_costas_loop_cc (alpha, beta,
+ max_freq, min_freq,
+ order));
}
gr_costas_loop_cc::gr_costas_loop_cc (float alpha, float beta,
- float max_freq, float min_freq, float
ref_phase)
+ float max_freq, float min_freq,
+ int order
+ ) throw (std::invalid_argument)
: gr_sync_block ("costas_loop_cc",
gr_make_io_signature (1, 1, sizeof (gr_complex)),
gr_make_io_signature (1, 1, sizeof (gr_complex))),
d_alpha(alpha), d_beta(beta),
d_max_freq(max_freq), d_min_freq(min_freq),
d_phase(0), d_freq((max_freq+min_freq)/2),
- d_ref_phase(ref_phase)
+ d_order(order), d_phase_detector(0)
{
+ switch(d_order) {
+ case 2:
+ d_phase_detector = &gr_costas_loop_cc::phase_detector_2;
+ break;
+
+ case 4:
+ d_phase_detector = &gr_costas_loop_cc::phase_detector_4;
+ break;
+
+ default:
+ throw std::invalid_argument("order must be 2 or 4");
+ break;
+ }
}
float
-gr_costas_loop_cc::phase_detector(gr_complex sample,float ref_phase)
+gr_costas_loop_cc::phase_detector_4(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_costas_loop_cc::phase_detector_2(gr_complex sample) const
+{
+ return (sample.real()*sample.imag());
}
int
@@ -75,7 +100,7 @@
nco_out = gr_expj(-d_phase);
optr[i] = iptr[i] * nco_out;
- error = phase_detector(optr[i], d_ref_phase);
+ error = (*this.*d_phase_detector)(optr[i]);
d_freq = d_freq + d_beta * error;
d_phase = d_phase + d_freq + d_alpha * error;
Index: src/lib/general/gr_costas_loop_cc.h
===================================================================
RCS file: /sources/gnuradio/gnuradio-core/src/lib/general/gr_costas_loop_cc.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/lib/general/gr_costas_loop_cc.h 10 Mar 2006 20:29:24 -0000 1.6
+++ src/lib/general/gr_costas_loop_cc.h 21 Jun 2006 03:56:11 -0000 1.7
@@ -25,26 +25,42 @@
#define INCLUDED_GR_COSTAS_LOOP_CC_H
#include <gr_sync_block.h>
+#include <stdexcept>
class gr_costas_loop_cc;
typedef boost::shared_ptr<gr_costas_loop_cc> gr_costas_loop_cc_sptr;
-gr_costas_loop_cc_sptr gr_make_costas_loop_cc (float alpha, float beta,
- float max_freq, float min_freq,
float ref_phase);
+gr_costas_loop_cc_sptr
+gr_make_costas_loop_cc (float alpha, float beta,
+ float max_freq, float min_freq,
+ int order
+ ) throw (std::invalid_argument);
+
/*!
* \brief Carrier tracking PLL for QPSK
* input: complex; output: complex
+ *
+ * \p order must be 2 or 4.
*/
class gr_costas_loop_cc : public gr_sync_block
{
friend gr_costas_loop_cc_sptr gr_make_costas_loop_cc (float alpha, float
beta,
- float max_freq, float
min_freq, float ref_phase);
-
- float d_alpha, d_beta, d_max_freq, d_min_freq, d_phase, d_freq, d_ref_phase;
-
- gr_costas_loop_cc (float alpha, float beta, float max_freq, float min_freq,
float ref_phase);
- float phase_detector(gr_complex sample,float ref_phase);
+ float max_freq, float
min_freq,
+ int order
+ ) throw
(std::invalid_argument);
+
+ float d_alpha, d_beta, d_max_freq, d_min_freq, d_phase, d_freq;
+ int d_order;
+
+ gr_costas_loop_cc (float alpha, float beta,
+ float max_freq, float min_freq,
+ int order
+ ) throw (std::invalid_argument);
+
+ float phase_detector_4(gr_complex sample) const; // for QPSK
+ float phase_detector_2(gr_complex sample) const; // for BPSK
+ float (gr_costas_loop_cc::*d_phase_detector)(gr_complex sample) const;
public:
Index: src/lib/general/gr_costas_loop_cc.i
===================================================================
RCS file: /sources/gnuradio/gnuradio-core/src/lib/general/gr_costas_loop_cc.i,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- src/lib/general/gr_costas_loop_cc.i 27 Jan 2006 18:05:07 -0000 1.3
+++ src/lib/general/gr_costas_loop_cc.i 21 Jun 2006 03:56:11 -0000 1.4
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2005 Free Software Foundation, Inc.
+ * Copyright 2005,2006 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -20,13 +20,18 @@
* Boston, MA 02111-1307, USA.
*/
-GR_SWIG_BLOCK_MAGIC(gr,costas_loop_cc)
+GR_SWIG_BLOCK_MAGIC(gr,costas_loop_cc);
+
+gr_costas_loop_cc_sptr
+gr_make_costas_loop_cc (float alpha, float beta,
+ float max_freq, float min_freq,
+ int order
+ ) throw (std::invalid_argument);
- gr_costas_loop_cc_sptr gr_make_costas_loop_cc (float alpha, float beta,
- float max_freq, float
min_freq, float ref_phase);
class gr_costas_loop_cc : public gr_sync_block
{
private:
- gr_costas_loop_cc (float alpha, float beta, float max_freq, float min_freq,
float ref_phase);
+ gr_costas_loop_cc (float alpha, float beta,
+ float max_freq, float min_freq, int order);
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] gnuradio-core ChangeLog src/lib/general/gr_cost...,
Eric Blossom <=