GNU Radio 3.6.2 C++ API
gr_fxpt_vco.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2002,2004,2005 Free Software Foundation, Inc.
4
*
5
* This file is part of GNU Radio
6
*
7
* GNU Radio is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 3, or (at your option)
10
* any later version.
11
*
12
* GNU Radio is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with GNU Radio; see the file COPYING. If not, write to
19
* the Free Software Foundation, Inc., 51 Franklin Street,
20
* Boston, MA 02110-1301, USA.
21
*/
22
#ifndef INCLUDED_GR_FXPT_VCO_H
23
#define INCLUDED_GR_FXPT_VCO_H
24
25
#include <
gr_core_api.h
>
26
#include <
gr_fxpt.h
>
27
#include <
gr_complex.h
>
28
29
/*!
30
* \brief Voltage Controlled Oscillator (VCO)
31
* \ingroup misc
32
*/
33
class
GR_CORE_API
gr_fxpt_vco
{
34
gr_int32
d_phase;
35
36
public
:
37
gr_fxpt_vco
() : d_phase (0) {}
38
39
~gr_fxpt_vco
() {}
40
41
// radians
42
void
set_phase
(
float
angle) {
43
d_phase =
gr_fxpt::float_to_fixed
(angle);
44
}
45
46
void
adjust_phase
(
float
delta_phase) {
47
d_phase +=
gr_fxpt::float_to_fixed
(delta_phase);
48
}
49
50
float
get_phase
()
const
{
return
gr_fxpt::fixed_to_float
(d_phase); }
51
52
// compute sin and cos for current phase angle
53
void
sincos (
float
*sinx,
float
*cosx)
const
54
{
55
*sinx =
gr_fxpt::sin
(d_phase);
56
*cosx =
gr_fxpt::cos
(d_phase);
57
}
58
59
// compute a block at a time
60
void
cos (
float
*output,
const
float
*input,
int
noutput_items,
float
k,
float
ampl = 1.0)
61
{
62
for
(
int
i = 0; i < noutput_items; i++){
63
output[i] = (float)(
gr_fxpt::cos
(d_phase) * ampl);
64
adjust_phase(input[i] * k);
65
}
66
}
67
68
// compute cos or sin for current phase angle
69
float
cos
()
const
{
return
gr_fxpt::cos
(d_phase); }
70
float
sin
()
const
{
return
gr_fxpt::sin
(d_phase); }
71
};
72
73
#endif
/* INCLUDED_GR_FXPT_VCO_H */
gnuradio-core
src
lib
general
gr_fxpt_vco.h
Generated by
1.8.1.2