summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/sphinx/source/gr/index.rst1
-rw-r--r--docs/sphinx/source/gr/modulation_blk.rst1
-rw-r--r--gnuradio-core/src/lib/general/CMakeLists.txt4
-rw-r--r--gnuradio-core/src/lib/general/general.i8
-rw-r--r--gnuradio-core/src/lib/general/gr_cpfsk_bc.cc78
-rw-r--r--gnuradio-core/src/lib/general/gr_cpfsk_bc.h64
-rw-r--r--gnuradio-core/src/lib/general/gr_cpfsk_bc.i34
-rw-r--r--gnuradio-core/src/lib/general/gr_cpm.cc218
-rw-r--r--gnuradio-core/src/lib/general/gr_cpm.h81
-rw-r--r--gnuradio-core/src/lib/general/gr_cpm.i40
-rw-r--r--gnuradio-core/src/lib/general/gr_fmdet_cf.cc105
-rw-r--r--gnuradio-core/src/lib/general/gr_fmdet_cf.h63
-rw-r--r--gnuradio-core/src/lib/general/gr_fmdet_cf.i31
-rw-r--r--gnuradio-core/src/lib/general/qa_general.cc2
-rw-r--r--gnuradio-core/src/lib/general/qa_gr_cpm.cc140
-rw-r--r--gnuradio-core/src/lib/general/qa_gr_cpm.h49
-rw-r--r--grc/blocks/block_tree.xml1
-rw-r--r--grc/blocks/gr_cpfsk_bc.xml37
18 files changed, 1 insertions, 956 deletions
diff --git a/docs/sphinx/source/gr/index.rst b/docs/sphinx/source/gr/index.rst
index 06f88c4ee1..be085188dc 100644
--- a/docs/sphinx/source/gr/index.rst
+++ b/docs/sphinx/source/gr/index.rst
@@ -185,7 +185,6 @@ Modulation
.. autosummary::
:nosignatures:
- gnuradio.gr.cpfsk_bc
gnuradio.gr.frequency_modulator_fc
gnuradio.gr.phase_modulator_fc
diff --git a/docs/sphinx/source/gr/modulation_blk.rst b/docs/sphinx/source/gr/modulation_blk.rst
index 1fff4614ca..4a8ab19bf6 100644
--- a/docs/sphinx/source/gr/modulation_blk.rst
+++ b/docs/sphinx/source/gr/modulation_blk.rst
@@ -1,6 +1,5 @@
gnuradio.gr: Modulation
=======================
-.. autooldblock:: gnuradio.gr.cpfsk_bc
.. autooldblock:: gnuradio.gr.frequency_modulator_fc
.. autooldblock:: gnuradio.gr.phase_modulator_fc
diff --git a/gnuradio-core/src/lib/general/CMakeLists.txt b/gnuradio-core/src/lib/general/CMakeLists.txt
index ff73dd91f6..27c43d4b3d 100644
--- a/gnuradio-core/src/lib/general/CMakeLists.txt
+++ b/gnuradio-core/src/lib/general/CMakeLists.txt
@@ -97,7 +97,6 @@ list(APPEND gnuradio_core_sources
list(APPEND test_gnuradio_core_sources
${CMAKE_CURRENT_SOURCE_DIR}/qa_general.cc
${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_circular_file.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_cpm.cc
${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_firdes.cc
${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt.cc
${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt_nco.cc
@@ -176,8 +175,6 @@ set(gr_core_general_triple_threats
gr_complex_to_xxx
gr_conjugate_cc
gr_copy
- gr_cpfsk_bc
- gr_cpm
gr_decode_ccsds_27_fb
gr_deinterleave
gr_delay
@@ -191,7 +188,6 @@ set(gr_core_general_triple_threats
gr_float_to_int
gr_float_to_short
gr_float_to_uchar
- gr_fmdet_cf
gr_frequency_modulator_fc
gr_head
gr_int_to_float
diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i
index 96b7e48d63..29adfaceb7 100644
--- a/gnuradio-core/src/lib/general/general.i
+++ b/gnuradio-core/src/lib/general/general.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
+ * Copyright 2004-2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -75,7 +75,6 @@
#include <gr_conjugate_cc.h>
#include <gr_vco_f.h>
#include <gr_threshold_ff.h>
-#include <gr_fmdet_cf.h>
#include <gr_regenerate_bb.h>
#include <gr_pa_2x2_phase_combiner.h>
#include <gr_kludge_copy.h>
@@ -94,7 +93,6 @@
#include <gr_bin_statistics_f.h>
#include <gr_peak_detector2_fb.h>
#include <gr_repeat.h>
-#include <gr_cpfsk_bc.h>
#include <gr_encode_ccsds_27_bb.h>
#include <gr_decode_ccsds_27_fb.h>
#include <gr_rail_ff.h>
@@ -105,7 +103,6 @@
#include <gr_annotator_1to1.h>
#include <gr_annotator_raw.h>
#include <gr_burst_tagger.h>
-#include <gr_cpm.h>
#include <gr_vector_map.h>
#include <gr_add_ff.h>
#include <gr_tag_debug.h>
@@ -164,7 +161,6 @@
%include "gr_conjugate_cc.i"
%include "gr_vco_f.i"
%include "gr_threshold_ff.i"
-%include "gr_fmdet_cf.i"
%include "gr_regenerate_bb.i"
%include "gr_pa_2x2_phase_combiner.i"
%include "gr_kludge_copy.i"
@@ -183,7 +179,6 @@
%include "gr_bin_statistics_f.i"
%include "gr_peak_detector2_fb.i"
%include "gr_repeat.i"
-%include "gr_cpfsk_bc.i"
%include "gr_encode_ccsds_27_bb.i"
%include "gr_decode_ccsds_27_fb.i"
%include "gr_rail_ff.i"
@@ -194,7 +189,6 @@
%include "gr_annotator_1to1.i"
%include "gr_annotator_raw.i"
%include "gr_burst_tagger.i"
-%include "gr_cpm.i"
%include "gr_vector_map.i"
%include "gr_add_ff.i"
%include "gr_tag_debug.i"
diff --git a/gnuradio-core/src/lib/general/gr_cpfsk_bc.cc b/gnuradio-core/src/lib/general/gr_cpfsk_bc.cc
deleted file mode 100644
index 24f0edd5cb..0000000000
--- a/gnuradio-core/src/lib/general/gr_cpfsk_bc.cc
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008,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,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_cpfsk_bc.h>
-#include <gr_io_signature.h>
-#include <gr_expj.h>
-
-#define M_TWOPI (2*M_PI)
-
-gr_cpfsk_bc_sptr
-gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym)
-{
- return gnuradio::get_initial_sptr(new gr_cpfsk_bc(k, ampl, samples_per_sym));
-}
-
-gr_cpfsk_bc::gr_cpfsk_bc(float k, float ampl, int samples_per_sym)
- : gr_sync_interpolator("cpfsk_bc",
- gr_make_io_signature(1, 1, sizeof(char)),
- gr_make_io_signature(1, 1, sizeof(gr_complex)),
- samples_per_sym)
-{
- d_samples_per_sym = samples_per_sym;
- d_freq = k*M_PI/samples_per_sym;
- d_ampl = ampl;
- d_phase = 0.0;
-}
-
-gr_cpfsk_bc::~gr_cpfsk_bc()
-{
-}
-
-int
-gr_cpfsk_bc::work(int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const char *in = (const char *)input_items[0];
- gr_complex *out = (gr_complex *)output_items[0];
-
- for (int i = 0; i < noutput_items/d_samples_per_sym; i++) {
- for (int j = 0; j < d_samples_per_sym; j++) {
- if (in[i] == 1)
- d_phase += d_freq;
- else
- d_phase -= d_freq;
-
- while (d_phase > M_TWOPI)
- d_phase -= M_TWOPI;
- while (d_phase < -M_TWOPI)
- d_phase += M_TWOPI;
-
- *out++ = gr_expj(d_phase)*d_ampl;
- }
- }
-
- return noutput_items;
-}
diff --git a/gnuradio-core/src/lib/general/gr_cpfsk_bc.h b/gnuradio-core/src/lib/general/gr_cpfsk_bc.h
deleted file mode 100644
index 6ad2774b3a..0000000000
--- a/gnuradio-core/src/lib/general/gr_cpfsk_bc.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008 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,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_GR_CPFSK_BC_H
-#define INCLUDED_GR_CPFSK_BC_H
-
-#include <gr_core_api.h>
-#include <gr_sync_interpolator.h>
-
-class gr_cpfsk_bc;
-
-typedef boost::shared_ptr<gr_cpfsk_bc> gr_cpfsk_bc_sptr;
-
-GR_CORE_API gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym);
-
-/*!
- * \brief Perform continuous phase 2-level frequency shift keying modulation
- * on an input stream of unpacked bits.
- * \ingroup modulation_blk
- *
- * \param k modulation index
- * \param ampl output amplitude
- * \param samples_per_sym number of output samples per input bit
- */
-
-class GR_CORE_API gr_cpfsk_bc : public gr_sync_interpolator
-{
-private:
- friend GR_CORE_API gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym);
-
- gr_cpfsk_bc(float k, float ampl, int samples_per_sym);
-
- int d_samples_per_sym; // Samples per symbol, square pulse
- float d_freq; // Modulation index*pi/samples_per_sym
- float d_ampl; // Output amplitude
- float d_phase; // Current phase
-
- public:
- ~gr_cpfsk_bc();
-
- void set_amplitude(float amplitude) { d_ampl = amplitude; }
-
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-};
-
-#endif /* INCLUDED_GR_CPFSK_BC_H */
diff --git a/gnuradio-core/src/lib/general/gr_cpfsk_bc.i b/gnuradio-core/src/lib/general/gr_cpfsk_bc.i
deleted file mode 100644
index b86dfb81bd..0000000000
--- a/gnuradio-core/src/lib/general/gr_cpfsk_bc.i
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008 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,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,cpfsk_bc);
-
-gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym);
-
-class gr_cpfsk_bc : public gr_sync_interpolator
-{
-private:
- gr_cpfsk_bc(float k, float ampl, int samples_per_sym);
-
-public:
- void set_amplitude(float amplitude);
-};
diff --git a/gnuradio-core/src/lib/general/gr_cpm.cc b/gnuradio-core/src/lib/general/gr_cpm.cc
deleted file mode 100644
index 32ce6502dd..0000000000
--- a/gnuradio-core/src/lib/general/gr_cpm.cc
+++ /dev/null
@@ -1,218 +0,0 @@
-/* -*- 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,
- * Boston, MA 02110-1301, USA.
- */
-
-// Calculate the taps for the CPM phase responses
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <cmath>
-#include <cfloat>
-#include <gr_cpm.h>
-
-//gives us erf on compilers without it
-#include <boost/math/special_functions/erf.hpp>
-namespace bm = boost::math;
-
-#ifndef M_TWOPI
-# define M_TWOPI (2*M_PI)
-#endif
-
-//! Normalised sinc function, sinc(x)=sin(pi*x)/pi*x
-inline double
-sinc(double x)
-{
- if (x == 0) {
- return 1.0;
- }
-
- return sin(M_PI * x) / (M_PI * x);
-}
-
-
-//! Taps for L-RC CPM (Raised cosine of length L symbols)
-std::vector<float>
-generate_cpm_lrc_taps(unsigned samples_per_sym, unsigned L)
-{
- std::vector<float> taps(samples_per_sym * L, 1.0/L/samples_per_sym);
- for (unsigned i = 0; i < samples_per_sym * L; i++) {
- taps[i] *= 1 - cos(M_TWOPI * i / L / samples_per_sym);
- }
-
- return taps;
-}
-
-
-/*! Taps for L-SRC CPM (Spectral raised cosine of length L symbols).
- *
- * L-SRC has a time-continuous phase response function of
- *
- * g(t) = 1/LT * sinc(2t/LT) * cos(beta * 2pi t / LT) / (1 - (4beta / LT * t)^2)
- *
- * which is the Fourier transform of a cos-rolloff function with rolloff
- * beta, and looks like a sinc-function, multiplied with a rolloff term.
- * We return the main lobe of the sinc, i.e., everything between the
- * zero crossings.
- * The time-discrete IR is thus
- *
- * g(k) = 1/Ls * sinc(2k/Ls) * cos(beta * pi k / Ls) / (1 - (4beta / Ls * k)^2)
- * where k = 0...Ls-1
- * and s = samples per symbol.
- */
-std::vector<float>
-generate_cpm_lsrc_taps(unsigned samples_per_sym, unsigned L, double beta)
-{
- double Ls = (double) L * samples_per_sym;
- std::vector<double> taps_d(L * samples_per_sym, 0.0);
- std::vector<float> taps(L * samples_per_sym, 0.0);
-
- double sum = 0;
- for (unsigned i = 0; i < samples_per_sym * L; i++) {
- double k = i - Ls/2; // Causal to acausal
-
- taps_d[i] = 1.0 / Ls * sinc(2.0 * k / Ls);
-
- // For k = +/-Ls/4*beta, the rolloff term's cos-function becomes zero
- // and the whole thing converges to PI/4 (to prove this, use de
- // l'hopital's rule).
- if (fabs(fabs(k) - Ls/4/beta) < 2*DBL_EPSILON) {
- taps_d[i] *= M_PI_4;
- } else {
- double tmp = 4.0 * beta * k / Ls;
- taps_d[i] *= cos(beta * M_TWOPI * k / Ls) / (1 - tmp * tmp);
- }
- sum += taps_d[i];
- }
- for (unsigned i = 0; i < samples_per_sym * L; i++) {
- taps[i] = (float) taps_d[i] / sum;
- }
-
- return taps;
-}
-
-
-//! Taps for L-REC CPM (Rectangular pulse shape of length L symbols)
-std::vector<float>
-generate_cpm_lrec_taps(unsigned samples_per_sym, unsigned L)
-{
- return std::vector<float>(samples_per_sym * L, 1.0/L/samples_per_sym);
-}
-
-
-//! Helper function for TFM
-double tfm_g0(double k, double sps)
-{
- if (fabs(k) < 2 * DBL_EPSILON) {
- return 1.145393004159143; // 1 + pi^2/48 / sqrt(2)
- }
-
- const double pi2_24 = 0.411233516712057; // pi^2/24
- double f = M_PI * k / sps;
- return sinc(k/sps) - pi2_24 * (2 * sin(f) - 2*f*cos(f) - f*f*sin(f)) / (f*f*f);
-}
-
-
-//! Taps for TFM CPM (Tamed frequency modulation)
-//
-// See [2, Chapter 2.7.2].
-//
-// [2]: Anderson, Aulin and Sundberg; Digital Phase Modulation
-std::vector<float>
-generate_cpm_tfm_taps(unsigned sps, unsigned L)
-{
- unsigned causal_shift = sps * L / 2;
- std::vector<double> taps_d(sps * L, 0.0);
- std::vector<float> taps(sps * L, 0.0);
-
- double sum = 0;
- for (unsigned i = 0; i < sps * L; i++) {
- double k = (double)(((int)i) - ((int)causal_shift)); // Causal to acausal
-
- taps_d[i] = tfm_g0(k - sps, sps) +
- 2 * tfm_g0(k, sps) +
- tfm_g0(k + sps, sps);
- sum += taps_d[i];
- }
- for (unsigned i = 0; i < sps * L; i++) {
- taps[i] = (float) taps_d[i] / sum;
- }
-
- return taps;
-}
-
-
-//! Taps for Gaussian CPM. Phase response is truncated after \p L symbols.
-// \p bt sets the 3dB-time-bandwidth product.
-//
-// Note: for h = 0.5, this is the phase response for GMSK.
-//
-// This C99-compatible formula for the taps is taken straight
-// from [1, Chapter 9.2.3].
-// A version in Q-notation can be found in [2, Chapter 2.7.2].
-//
-// [1]: Karl-Dirk Kammeyer; Nachrichtenübertragung, 4th Edition.
-// [2]: Anderson, Aulin and Sundberg; Digital Phase Modulation
-//
-std::vector<float>
-generate_cpm_gaussian_taps(unsigned samples_per_sym, unsigned L, double bt)
-{
- double Ls = (double) L * samples_per_sym;
- std::vector<double> taps_d(L * samples_per_sym, 0.0);
- std::vector<float> taps(L * samples_per_sym, 0.0);
-
- // alpha = sqrt(2/ln(2)) * pi * BT
- double alpha = 5.336446256636997 * bt;
- for (unsigned i = 0; i < samples_per_sym * L; i++) {
- double k = i - Ls/2; // Causal to acausal
- taps_d[i] = (bm::erf(alpha * (k / samples_per_sym + 0.5)) -
- bm::erf(alpha * (k / samples_per_sym - 0.5)))
- * 0.5 / samples_per_sym;
- taps[i] = (float) taps_d[i];
- }
-
- return taps;
-}
-
-
-std::vector<float>
-gr_cpm::phase_response(cpm_type type, unsigned samples_per_sym, unsigned L, double beta)
-{
- switch (type) {
- case LRC:
- return generate_cpm_lrc_taps(samples_per_sym, L);
-
- case LSRC:
- return generate_cpm_lsrc_taps(samples_per_sym, L, beta);
-
- case LREC:
- return generate_cpm_lrec_taps(samples_per_sym, L);
-
- case TFM:
- return generate_cpm_tfm_taps(samples_per_sym, L);
-
- case GAUSSIAN:
- return generate_cpm_gaussian_taps(samples_per_sym, L, beta);
-
- default:
- return generate_cpm_lrec_taps(samples_per_sym, 1);
- }
-}
-
diff --git a/gnuradio-core/src/lib/general/gr_cpm.h b/gnuradio-core/src/lib/general/gr_cpm.h
deleted file mode 100644
index ef2ff84142..0000000000
--- a/gnuradio-core/src/lib/general/gr_cpm.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- 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,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef INCLUDED_GR_CPM_H
-#define INCLUDED_GR_CPM_H
-
-#include <gr_core_api.h>
-#include <vector>
-
-class GR_CORE_API gr_cpm
-{
- public:
- enum cpm_type {
- LRC,
- LSRC,
- LREC,
- TFM,
- GAUSSIAN,
- GENERIC = 999
- };
-
- /*! \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);
-};
-
-#endif /* INCLUDED_GR_CPM_H */
-
diff --git a/gnuradio-core/src/lib/general/gr_cpm.i b/gnuradio-core/src/lib/general/gr_cpm.i
deleted file mode 100644
index 6c077687d5..0000000000
--- a/gnuradio-core/src/lib/general/gr_cpm.i
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- 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,
- * Boston, MA 02110-1301, USA.
- */
-
-%rename(cpm) gr_cpm;
-
-class gr_cpm
-{
- public:
- enum cpm_type {
- LRC,
- LSRC,
- LREC,
- TFM,
- GAUSSIAN,
- GENERIC = 999
- };
-
- 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/general/gr_fmdet_cf.cc b/gnuradio-core/src/lib/general/gr_fmdet_cf.cc
deleted file mode 100644
index f020362920..0000000000
--- a/gnuradio-core/src/lib/general/gr_fmdet_cf.cc
+++ /dev/null
@@ -1,105 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008,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,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_fmdet_cf.h>
-#include <gr_io_signature.h>
-#include <math.h>
-#include <gr_math.h>
-
-#define M_TWOPI (2*M_PI)
-
-gr_fmdet_cf_sptr
-gr_make_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl)
-{
- return gnuradio::get_initial_sptr(new gr_fmdet_cf (samplerate, freq_low, freq_high, scl));
-}
-
-gr_fmdet_cf::gr_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl)
- : gr_sync_block ("fmdet_cf",
- gr_make_io_signature (1, 1, sizeof (gr_complex)),
- gr_make_io_signature (1, 1, sizeof (float))),
- d_S1(0.1),d_S2(0.1),
- d_S3(0.1),d_S4(0.1)
-{
- const float h[]={0.003118678733, -0.012139843428, 0.027270898036, -0.051318579352,
- 0.090406910552, -0.162926865366, 0.361885392563, 0.000000000000,
- -0.361885392563, 0.162926865366, -0.090406910552, 0.051318579352,
- -0.027270898036, 0.012139843428, -0.003118678733};
-
-
-
-
- float delta;
- std::vector<float> taps(15);
-
- d_freqhi = freq_high;
- d_freqlo = freq_low;
- delta = (d_freqhi - d_freqlo);
- d_scl = scl;
- d_bias = 0.5*scl*(d_freqhi+d_freqlo)/delta;
- for (int i=0;i<15;i++) taps[i] = h[i];
- // d_filter = gr_fir_util::create_gr_fir_ccf(taps);
-
-}
-
-int
-gr_fmdet_cf::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
-{
- const gr_complex *iptr = (gr_complex *) input_items[0];
- float *optr = (float *) output_items[0];
- // const gr_complex *scaleiptr = (gr_complex *) input_items[0];
-
- int size = noutput_items;
-
- gr_complex Sdot,S0,S1=d_S1,S2=d_S2,S3=d_S3,S4=d_S4;
- float d_8 = 8.0;
-
- while (size-- > 0) {
- S0=*iptr++;
-
-
- Sdot = d_scl * (-S0+d_8*S1-d_8*S1+S4);
-
- d_freq = (S2.real()*Sdot.imag()-S2.imag()*Sdot.real())/
- (S2.real()*S2.real()+S2.imag()*S2.imag());
-
- S4=S3;
- S3=S2;
- S2=S1;
- S1=S0;
-
-
- *optr++ = d_freq-d_bias;
- }
- d_S1=S1;
- d_S2=S2;
- d_S3=S3;
- d_S4=S4;
- return noutput_items;
-}
diff --git a/gnuradio-core/src/lib/general/gr_fmdet_cf.h b/gnuradio-core/src/lib/general/gr_fmdet_cf.h
deleted file mode 100644
index f85630f2fb..0000000000
--- a/gnuradio-core/src/lib/general/gr_fmdet_cf.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008 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,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_FMDET_CF_H
-#define INCLUDED_GR_FMDET_CF_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-
-class gr_fmdet_cf;
-typedef boost::shared_ptr<gr_fmdet_cf> gr_fmdet_cf_sptr;
-
-GR_CORE_API gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl);
-
-class gr_fir_ccf;
-
-
-/*!
- * \brief Implements an IQ slope detector
- *
- *
- * input: stream of complex; output: stream of floats
- *
- * This implements a limiting slope detector. The limiter is in the
- * normalization by the magnitude of the sample
- */
-
-class GR_CORE_API gr_fmdet_cf : public gr_sync_block
-{
- friend GR_CORE_API gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low,
- float freq_high, float scl);
-
- gr_complex d_S1,d_S2,d_S3,d_S4;
- float d_freq,d_freqlo,d_freqhi,d_scl,d_bias;
- gr_fir_ccf* d_filter;
- gr_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl);
-
- int work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items);
-
-};
-
-#endif
diff --git a/gnuradio-core/src/lib/general/gr_fmdet_cf.i b/gnuradio-core/src/lib/general/gr_fmdet_cf.i
deleted file mode 100644
index 2db596b7a9..0000000000
--- a/gnuradio-core/src/lib/general/gr_fmdet_cf.i
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008 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,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,fmdet_cf)
-
-gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl);
-
-class gr_fmdet_cf : public gr_sync_block
-{
- private:
- gr_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl);
-};
diff --git a/gnuradio-core/src/lib/general/qa_general.cc b/gnuradio-core/src/lib/general/qa_general.cc
index 61e5c159bd..75d59434d4 100644
--- a/gnuradio-core/src/lib/general/qa_general.cc
+++ b/gnuradio-core/src/lib/general/qa_general.cc
@@ -28,7 +28,6 @@
#include <qa_general.h>
#include <qa_gr_firdes.h>
#include <qa_gr_circular_file.h>
-#include <qa_gr_cpm.h>
#include <qa_gr_fxpt.h>
#include <qa_gr_fxpt_nco.h>
#include <qa_gr_fxpt_vco.h>
@@ -41,7 +40,6 @@ qa_general::suite ()
s->addTest (qa_gr_firdes::suite ());
s->addTest (qa_gr_circular_file::suite ());
- s->addTest (qa_gr_cpm::suite ());
s->addTest (qa_gr_fxpt::suite ());
s->addTest (qa_gr_fxpt_nco::suite ());
s->addTest (qa_gr_fxpt_vco::suite ());
diff --git a/gnuradio-core/src/lib/general/qa_gr_cpm.cc b/gnuradio-core/src/lib/general/qa_gr_cpm.cc
deleted file mode 100644
index ee3e2bdea0..0000000000
--- a/gnuradio-core/src/lib/general/qa_gr_cpm.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-/* -*- 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,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <qa_gr_cpm.h>
-#include <gr_cpm.h>
-#include <cppunit/TestAssert.h>
-
-const double DELTA = 1e-5;
-const int L = 5;
-const int samples_per_sym = 4;
-const float taps_lrc[20] = {
- 0, 0.002447174185242, 0.009549150281253, 0.020610737385376,
- 0.034549150281253, 0.050000000000000, 0.065450849718747, 0.079389262614624,
- 0.090450849718747, 0.097552825814758, 0.100000000000000, 0.097552825814758,
- 0.090450849718747, 0.079389262614624, 0.065450849718747, 0.050000000000000,
- 0.034549150281253, 0.020610737385376, 0.009549150281253, 0.002447174185242
-};
-
-
-const float taps_lsrc[20] = { // beta = 0.2
- 0.000000000000000, 0.009062686687436, 0.019517618142920, 0.030875041875917,
- 0.042552315421249, 0.053912556756416, 0.064308860403517, 0.073130584159352,
- 0.079847961304114, 0.084051371489937, 0.085482007518284, 0.084051371489937,
- 0.079847961304114, 0.073130584159352, 0.064308860403517, 0.053912556756416,
- 0.042552315421249, 0.030875041875917, 0.019517618142920, 0.009062686687436
-};
-
-
-const float taps_tfm[20] = {
- -0.003946522220317, -0.005147757690530, -0.003171631690177, 0.003959659609805,
- 0.017498721302356, 0.037346982678383, 0.062251889790391, 0.087364237065604,
- 0.110049050955117, 0.125677762224511, 0.132288693729399, 0.125677762224511,
- 0.110049050955117, 0.087364237065604, 0.062251889790391, 0.037346982678383,
- 0.017498721302356, 0.003959659609805, -0.003171631690177, -0.005147757690530
-};
-
-
-const float taps_gaussian[20] = { // BT = 0.3
- 0.000000743866524, 0.000009286258371, 0.000085441834550, 0.000581664421923,
- 0.002945540765422, 0.011178079812344, 0.032117220937421, 0.070841188736816,
- 0.122053715366673, 0.167389736919915, 0.185594670675172, 0.167389736919915,
- 0.122053715366673, 0.070841188736816, 0.032117220937421, 0.011178079812344,
- 0.002945540765422, 0.000581664421923, 0.000085441834550, 0.000009286258371
-};
-
-
-// Check LREC phase response
-void
-qa_gr_cpm::t1 ()
-{
- std::vector<float> taps(gr_cpm::phase_response(gr_cpm::LREC, samples_per_sym, L));
-
- for (int i = 0; i < L * samples_per_sym; i++) {
- CPPUNIT_ASSERT_DOUBLES_EQUAL(taps[i], 0.05, DELTA);
- }
-}
-
-
-// Check LRC phase response
-void
-qa_gr_cpm::t2 ()
-{
- std::vector<float> taps(gr_cpm::phase_response(gr_cpm::LRC, samples_per_sym, L));
- float sum = 0;
-
- for (int i = 0; i < L * samples_per_sym; i++) {
- CPPUNIT_ASSERT_DOUBLES_EQUAL(taps[i], taps_lrc[i], DELTA);
- sum += taps[i];
- }
-
- CPPUNIT_ASSERT_DOUBLES_EQUAL(sum, 1.0, DELTA);
-}
-
-
-// Check LSRC phase response
-void
-qa_gr_cpm::t3 ()
-{
- std::vector<float> taps(gr_cpm::phase_response(gr_cpm::LSRC, samples_per_sym, L, 0.2));
- float sum = 0;
-
- for (int i = 0; i < L * samples_per_sym; i++) {
- CPPUNIT_ASSERT_DOUBLES_EQUAL(taps[i], taps_lsrc[i], DELTA);
- sum += taps[i];
- }
-
- CPPUNIT_ASSERT_DOUBLES_EQUAL(sum, 1.0, DELTA);
-}
-
-
-// Check the TFM phase response
-void
-qa_gr_cpm::t4 ()
-{
- std::vector<float> taps(gr_cpm::phase_response(gr_cpm::TFM, samples_per_sym, L));
- float sum = 0;
-
- for (int i = 0; i < L * samples_per_sym; i++) {
- CPPUNIT_ASSERT_DOUBLES_EQUAL(taps[i], taps_tfm[i], DELTA);
- sum += taps[i];
- }
-
- CPPUNIT_ASSERT_DOUBLES_EQUAL(sum, 1.0, DELTA);
-}
-
-
-// Check the Gaussian phase response
-void
-qa_gr_cpm::t5 ()
-{
- std::vector<float> taps(gr_cpm::phase_response(gr_cpm::GAUSSIAN, samples_per_sym, L, 0.3));
- float sum = 0;
-
- for (int i = 0; i < L * samples_per_sym; i++) {
- CPPUNIT_ASSERT_DOUBLES_EQUAL(taps[i], taps_gaussian[i], DELTA);
- sum += taps[i];
- }
-
- CPPUNIT_ASSERT_DOUBLES_EQUAL(sum, 1.0, DELTA);
-}
-
diff --git a/gnuradio-core/src/lib/general/qa_gr_cpm.h b/gnuradio-core/src/lib/general/qa_gr_cpm.h
deleted file mode 100644
index 2f46b42a78..0000000000
--- a/gnuradio-core/src/lib/general/qa_gr_cpm.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- 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,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef _QA_GR_CPM_H
-#define _QA_GR_CPM_H
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-class qa_gr_cpm : public CppUnit::TestCase {
-
- CPPUNIT_TEST_SUITE (qa_gr_cpm);
- CPPUNIT_TEST (t1);
- CPPUNIT_TEST (t2);
- CPPUNIT_TEST (t3);
- CPPUNIT_TEST (t4);
- CPPUNIT_TEST (t5);
- CPPUNIT_TEST_SUITE_END ();
-
- private:
- void t1 ();
- void t2 ();
- void t3 ();
- void t4 ();
- void t5 ();
-
-};
-
-
-#endif /* _QA_GR_CPM_H */
-
diff --git a/grc/blocks/block_tree.xml b/grc/blocks/block_tree.xml
index f88da24577..55c9fd1db3 100644
--- a/grc/blocks/block_tree.xml
+++ b/grc/blocks/block_tree.xml
@@ -151,7 +151,6 @@
<block>gr_frequency_modulator_fc</block>
<block>gr_phase_modulator_fc</block>
<block>gr_quadrature_demod_cf</block>
- <block>gr_cpfsk_bc</block>
<block>blks2_wfm_tx</block>
<block>blks2_wfm_rcv</block>
diff --git a/grc/blocks/gr_cpfsk_bc.xml b/grc/blocks/gr_cpfsk_bc.xml
deleted file mode 100644
index d5549d933f..0000000000
--- a/grc/blocks/gr_cpfsk_bc.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##CPFSK
-###################################################
- -->
-<block>
- <name>CPFSK</name>
- <key>gr_cpfsk_bc</key>
- <import>from gnuradio import gr</import>
- <make>gr.cpfsk_bc($k, $amplitude, $samples_per_symbol)</make>
- <callback>set_amplitude($amplitude)</callback>
- <param>
- <name>K</name>
- <key>k</key>
- <type>real</type>
- </param>
- <param>
- <name>Amplitude</name>
- <key>amplitude</key>
- <type>real</type>
- </param>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>