From c96ea6723a3e7ce6dc5bbccb4386647a088186aa Mon Sep 17 00:00:00 2001
From: Martin Braun <martin.braun@kit.edu>
Date: Fri, 10 Dec 2010 10:44:08 +0100
Subject: updated doxygen blocks, changed param order for gmsk

---
 gnuradio-core/src/lib/general/gr_cpm.h         | 81 +++++++++++++-------------
 gnuradio-core/src/lib/hier/gr_cpmmod_bc.h      | 27 +++++----
 gnuradio-core/src/lib/hier/gr_gmskmod_bc.cc    |  6 +-
 gnuradio-core/src/lib/hier/gr_gmskmod_bc.h     | 28 ++++-----
 gnuradio-core/src/lib/hier/gr_gmskmod_bc.i     |  4 +-
 gnuradio-core/src/python/gnuradio/gr/qa_cpm.py |  3 +-
 6 files changed, 73 insertions(+), 76 deletions(-)

(limited to 'gnuradio-core/src')

diff --git a/gnuradio-core/src/lib/general/gr_cpm.h b/gnuradio-core/src/lib/general/gr_cpm.h
index f9b97f7ea7..09598024a2 100644
--- a/gnuradio-core/src/lib/general/gr_cpm.h
+++ b/gnuradio-core/src/lib/general/gr_cpm.h
@@ -1,17 +1,17 @@
 /* -*- c++ -*- */
 /*
  * Copyright 2010 Free Software Foundation, Inc.
- * 
+ *
  * GNU Radio is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 3, or (at your option)
  * any later version.
- * 
+ *
  * GNU Radio is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with GNU Radio; see the file COPYING.  If not, write to
  * the Free Software Foundation, Inc., 51 Franklin Street,
@@ -24,7 +24,9 @@
 
 #include <vector>
 
-#define M_TWOPI (2*M_PI)
+#ifndef M_TWOPI
+#  define M_TWOPI (2*M_PI)
+#endif
 
 class gr_cpm
 {
@@ -38,41 +40,42 @@ class gr_cpm
 	 GENERIC = 999
 	};
 
-	//! Return the taps for an interpolating FIR filter (gr_fir_filter_fff).
-	//
-	// These taps represent the phase response for use in a CPM modulator.
-	//
-	// Parameters:
-	// \p type: The CPM type (Rectangular, Raised Cosine, Spectral Raised Cosine,
-	//          Tamed FM or Gaussian).
-	// \p samples_per_sym: Samples per symbol.
-	// \p L: The length of the phase response in symbols.
-	// \p beta: For Spectral Raised Cosine, this is the rolloff factor. For Gaussian
-	//          phase responses, this the 3dB-time-bandwidth product. For all other
-	//          cases, it is ignored.
-	//
-	// Output: returns a vector of length \p L * \p samples_per_sym. This can be used
-	//         directly in an interpolating FIR filter such as gr_interp_fir_filter_fff
-	//         with interpolation factor \p samples_per_sym.
-	//
-	// All taps are normalised s.t. \sum taps = 1; this causes a maximum phase change
-	// of h*pi between two symbols, where h is the modulation index.
-	//
-	// The following phase responses can be generated:
-	// * LREC: Rectangular phase response.
-	// * LRC: Raised cosine phase response, looks like 1 - cos(x).
-	// * LSRC: Spectral raised cosine. This requires a rolloff factor beta.
-	//         The phase response is the Fourier transform of raised cosine
-	//         function.
-	// * TFM: Tamed frequency modulation. This scheme minimizes phase change for
-	//        rapidly varying input symbols.
-	// * GAUSSIAN: A Gaussian phase response. For a modulation index h = 1/2, this
-	//             results in GMSK.
-	//
-	// A short description of all these phase responses can be found in [1].
-	//
-	//
-	// [1]: Anderson, Aulin and Sundberg; Digital Phase Modulation
+    /*! \brief Return the taps for an interpolating FIR filter (gr_interp_fir_filter_fff).
+	 *
+	 * These taps represent the phase response \f$g(k)\f$ for use in a CPM modulator,
+	 * see also gr_cpmmod_bc.
+	 *
+	 * \param type The CPM type (Rectangular, Raised Cosine, Spectral Raised Cosine,
+	 *             Tamed FM or Gaussian).
+	 * \param samples_per_sym Samples per symbol.
+	 * \param L The length of the phase response in symbols.
+	 * \param beta For Spectral Raised Cosine, this is the rolloff factor. For Gaussian
+	 *             phase responses, this the 3dB-time-bandwidth product. For all other
+	 *             cases, it is ignored.
+	 *
+	 * Output: returns a vector of length \a K = \p samples_per_sym x \p L.
+	 *         This can be used directly in an interpolating FIR filter such as
+	 *         gr_interp_fir_filter_fff with interpolation factor \p samples_per_sym.
+	 *
+	 * All phase responses are normalised s.t. \f$ \sum_{k=0}^{K-1} g(k) = 1\f$; this will cause
+	 * a maximum phase change of \f$ h \cdot \pi\f$ between two symbols, where \a h is the
+	 * modulation index.
+	 *
+	 * The following phase responses can be generated:
+	 * - LREC: Rectangular phase response.
+	 * - LRC: Raised cosine phase response, looks like 1 - cos(x).
+	 * - LSRC: Spectral raised cosine. This requires a rolloff factor beta.
+	 *         The phase response is the Fourier transform of raised cosine
+	 *         function.
+	 * - TFM: Tamed frequency modulation. This scheme minimizes phase change for
+	 *        rapidly varying input symbols.
+	 * - GAUSSIAN: A Gaussian phase response. For a modulation index h = 1/2, this
+	 *             results in GMSK.
+	 *
+	 * A short description of all these phase responses can be found in [1].
+	 *
+	 * [1]: Anderson, Aulin and Sundberg; Digital Phase Modulation
+     */
 	static std::vector<float>
 	phase_response(cpm_type type, unsigned samples_per_sym, unsigned L, double beta=0.3);
 };
diff --git a/gnuradio-core/src/lib/hier/gr_cpmmod_bc.h b/gnuradio-core/src/lib/hier/gr_cpmmod_bc.h
index f32d0fdcad..210b30612a 100644
--- a/gnuradio-core/src/lib/hier/gr_cpmmod_bc.h
+++ b/gnuradio-core/src/lib/hier/gr_cpmmod_bc.h
@@ -43,22 +43,21 @@ gr_make_cpmmod_bc(int type, float h, unsigned samples_per_sym, unsigned L, doubl
  *
  * \ingroup modulation_blk
  *
- * Parameters:
- * * \p type: The modulation type. Can be one of LREC, LRC, LSRC, TFM or GAUSSIAN. See
- *            gr_cpm::phase_response() for a detailed description.
- * * \p h: The modulation index. h*PI is the maximum phase change that can occur
- *         between two symbols, i.e., if you only send ones, the phase will increase
- *         by h*PI every \p samples_per_sym samples. Set this to 0.5 for Minimum Shift
- *         Keying variants.
- * * \p samples_per_sym: Samples per symbol.
- * * \p L: The length of the phase duration in symbols. For L=1, this yields full-
- *         response CPM symbols, for L > 1, partial-response.
- * * \p beta: For LSRC, this is the rolloff factor. For Gaussian pulses, this is the 3 dB
- *            time-bandwidth product.
+ * \param type The modulation type. Can be one of LREC, LRC, LSRC, TFM or GAUSSIAN. See
+ *             gr_cpm::phase_response() for a detailed description.
+ * \param h The modulation index. \f$ h \cdot \pi\f$ is the maximum phase change that can occur
+ *          between two symbols, i.e., if you only send ones, the phase will increase
+ *          by \f$ h \cdot \pi\f$ every \p samples_per_sym samples. Set this to 0.5 for Minimum Shift
+ *          Keying variants.
+ * \param samples_per_sym Samples per symbol.
+ * \param L The length of the phase duration in symbols. For L=1, this yields full-
+ *          response CPM symbols, for L > 1, partial-response.
+ * \param beta For LSRC, this is the rolloff factor. For Gaussian pulses, this is the 3 dB
+ *             time-bandwidth product.
  *
  * Examples:
- * * Setting h = 0.5, L = 1, type = LREC yields MSK.
- * * Setting h = 0.5, type = GAUSSIAN and beta = 0.3 yields GMSK as used in GSM.
+ * - Setting h = 0.5, L = 1, type = LREC yields MSK.
+ * - Setting h = 0.5, type = GAUSSIAN and beta = 0.3 yields GMSK as used in GSM.
  *
  * The input of this block are symbols from an M-ary alphabet
  * +/-1, +/-3, ..., +/-(M-1). Usually, M = 2 and therefore, the
diff --git a/gnuradio-core/src/lib/hier/gr_gmskmod_bc.cc b/gnuradio-core/src/lib/hier/gr_gmskmod_bc.cc
index 9324edc96b..37128d99c8 100644
--- a/gnuradio-core/src/lib/hier/gr_gmskmod_bc.cc
+++ b/gnuradio-core/src/lib/hier/gr_gmskmod_bc.cc
@@ -28,13 +28,13 @@
 
 // Shared pointer constructor
 gr_gmskmod_bc_sptr
-gr_make_gmskmod_bc(unsigned samples_per_sym, unsigned L, double bt)
+gr_make_gmskmod_bc(unsigned samples_per_sym, double bt, unsigned L)
 {
-  return gnuradio::get_initial_sptr(new gr_gmskmod_bc(samples_per_sym, L, bt));
+  return gnuradio::get_initial_sptr(new gr_gmskmod_bc(samples_per_sym, bt, L));
 }
 
 
-gr_gmskmod_bc::gr_gmskmod_bc(unsigned samples_per_sym, unsigned L, double bt)
+gr_gmskmod_bc::gr_gmskmod_bc(unsigned samples_per_sym, double bt, unsigned L)
 	: gr_cpmmod_bc(gr_cpm::GAUSSIAN, 0.5, samples_per_sym, L, bt)
 {
 }
diff --git a/gnuradio-core/src/lib/hier/gr_gmskmod_bc.h b/gnuradio-core/src/lib/hier/gr_gmskmod_bc.h
index bfe0513e1a..39bd576e23 100644
--- a/gnuradio-core/src/lib/hier/gr_gmskmod_bc.h
+++ b/gnuradio-core/src/lib/hier/gr_gmskmod_bc.h
@@ -1,19 +1,19 @@
 /* -*- c++ -*- */
 /*
  * Copyright 2010 Free Software Foundation, Inc.
- * 
+ *
  * This file is part of GNU Radio
- * 
+ *
  * GNU Radio is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 3, or (at your option)
  * any later version.
- * 
+ *
  * GNU Radio is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with GNU Radio; see the file COPYING.  If not, write to
  * the Free Software Foundation, Inc., 51 Franklin Street,
@@ -30,7 +30,7 @@ typedef boost::shared_ptr<gr_gmskmod_bc> gr_gmskmod_bc_sptr;
 
 
 gr_gmskmod_bc_sptr
-gr_make_gmskmod_bc(unsigned samples_per_sym=2, unsigned L=4, double bt=0.3);
+gr_make_gmskmod_bc(unsigned samples_per_sym=2, double bt=0.3, unsigned L=4);
 
 
 /*!
@@ -38,16 +38,10 @@ gr_make_gmskmod_bc(unsigned samples_per_sym=2, unsigned L=4, double bt=0.3);
  *
  * \ingroup modulation_blk
  *
- * Parameters:
- * * \p samples_per_sym: Samples per symbol.
- * * \p L: The length of the phase duration in symbols. The Gaussian pulse is truncated
- *         after L symbols.
- * * \p bt: For LSRC, this is the rolloff factor. For Gaussian pulses, this is the 3 dB
- *            time-bandwidth product.
- *
- * Examples:
- * * Setting h = 0.5, L = 1, type = LREC yields MSK.
- * * Setting h = 0.5, type = GAUSSIAN and beta = 0.3 yields GMSK as used in GSM.
+ * \param samples_per_sym Samples per symbol.
+ * \param bt The 3 dB time-bandwidth product.
+ * \param L The length of the phase duration in symbols. The Gaussian pulse is truncated
+ *          after L symbols.
  *
  * The input of this block are symbols from an M-ary alphabet
  * +/-1, +/-3, ..., +/-(M-1). Usually, M = 2 and therefore, the
@@ -57,8 +51,8 @@ gr_make_gmskmod_bc(unsigned samples_per_sym=2, unsigned L=4, double bt=0.3);
  */
 class gr_gmskmod_bc : public gr_cpmmod_bc
 {
-	friend gr_gmskmod_bc_sptr gr_make_gmskmod_bc(unsigned samples_per_sym, unsigned L, double bt);
-	gr_gmskmod_bc(unsigned samples_per_sym, unsigned L, double bt);
+	friend gr_gmskmod_bc_sptr gr_make_gmskmod_bc(unsigned samples_per_sym, double bt, unsigned L);
+	gr_gmskmod_bc(unsigned samples_per_sym, double bt, unsigned L);
 };
 
 #endif /* INCLUDED_GR_GMSKMOD_BC_H */
diff --git a/gnuradio-core/src/lib/hier/gr_gmskmod_bc.i b/gnuradio-core/src/lib/hier/gr_gmskmod_bc.i
index 7fb16839bb..dadf3be62e 100644
--- a/gnuradio-core/src/lib/hier/gr_gmskmod_bc.i
+++ b/gnuradio-core/src/lib/hier/gr_gmskmod_bc.i
@@ -23,12 +23,12 @@
 GR_SWIG_BLOCK_MAGIC(gr, gmskmod_bc)
 
 gr_gmskmod_bc_sptr
-gr_make_gmskmod_bc(unsigned samples_per_sym=2, unsigned L=4, double bt=0.3);
+gr_make_gmskmod_bc(unsigned samples_per_sym=2, double bt=0.3, unsigned L=4);
 
 class gr_gmskmod_bc : public gr_hier_block2
 {
  private:
-  gr_cpmmod_bc(int type, float h, unsigned samples_per_sym, unsigned L, double beta);
+  gr_cpmmod_bc(int type, float h, unsigned samples_per_sym, double beta, unsigned L);
 
  public:
   std::vector<float> get_taps();
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_cpm.py b/gnuradio-core/src/python/gnuradio/gr/qa_cpm.py
index 9cc22c257e..b28decce24 100755
--- a/gnuradio-core/src/python/gnuradio/gr/qa_cpm.py
+++ b/gnuradio-core/src/python/gnuradio/gr/qa_cpm.py
@@ -64,9 +64,10 @@ class test_cpm(gr_unittest.TestCase):
     def test_001_lgmsk(self):
         sps = 2
         L = 5
+        bt = 0.3
         in_bits = (1,) * 20
         src = gr.vector_source_b(in_bits, False)
-        gmsk = gr.gmskmod_bc(sps, L)
+        gmsk = gr.gmskmod_bc(sps, bt, L)
         arg = gr.complex_to_arg()
         sink = gr.vector_sink_f()
 
-- 
cgit v1.2.3