3
* Copyright 2008 Free Software Foundation, Inc.
5
* GNU Radio is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 3, or (at your option)
10
* GNU Radio is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with GNU Radio; see the file COPYING. If not, write to
17
* the Free Software Foundation, Inc., 51 Franklin Street,
18
* Boston, MA 02110-1301, USA.
20
#ifndef INCLUDED_GR_CPFSK_BC_H
21
#define INCLUDED_GR_CPFSK_BC_H
23
#include <gr_sync_interpolator.h>
27
typedef boost::shared_ptr<gr_cpfsk_bc> gr_cpfsk_bc_sptr;
29
gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym);
32
* \brief Perform continuous phase 2-level frequency shift keying modulation
33
* on an input stream of unpacked bits.
34
* \ingroup modulation_blk
36
* \param k modulation index
37
* \param ampl output amplitude
38
* \param samples_per_sym number of output samples per input bit
41
class gr_cpfsk_bc : public gr_sync_interpolator
44
friend gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym);
46
gr_cpfsk_bc(float k, float ampl, int samples_per_sym);
48
int d_samples_per_sym; // Samples per symbol, square pulse
49
float d_freq; // Modulation index*pi/samples_per_sym
50
float d_ampl; // Output amplitude
51
float d_phase; // Current phase
56
void set_amplitude(float amplitude) { d_ampl = amplitude; }
58
int work (int noutput_items,
59
gr_vector_const_void_star &input_items,
60
gr_vector_void_star &output_items);
63
#endif /* INCLUDED_GR_CPFSK_BC_H */