GNU Radio 3.5.3.2 C++ API
gr_pwr_squelch_cc.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2006 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
23
#ifndef INCLUDED_GR_PWR_SQUELCH_CC_H
24
#define INCLUDED_GR_PWR_SQUELCH_CC_H
25
26
#include <
gr_core_api.h
>
27
#include <cmath>
28
#include <
gr_squelch_base_cc.h
>
29
#include <
gr_single_pole_iir.h
>
30
31
class
gr_pwr_squelch_cc
;
32
typedef
boost::shared_ptr<gr_pwr_squelch_cc>
gr_pwr_squelch_cc_sptr
;
33
34
GR_CORE_API
gr_pwr_squelch_cc_sptr
35
gr_make_pwr_squelch_cc
(
double
db,
double
alpha = 0.0001,
int
ramp
=0,
bool
gate
=
false
);
36
37
/*!
38
* \brief gate or zero output when input power below threshold
39
* \ingroup level_blk
40
*/
41
class
GR_CORE_API
gr_pwr_squelch_cc
:
public
gr_squelch_base_cc
42
{
43
private
:
44
double
d_threshold;
45
double
d_pwr;
46
gr_single_pole_iir<double,double,double>
d_iir;
47
48
friend
GR_CORE_API
gr_pwr_squelch_cc_sptr
gr_make_pwr_squelch_cc
(
double
db,
double
alpha,
int
ramp,
bool
gate);
49
gr_pwr_squelch_cc
(
double
db,
double
alpha,
int
ramp,
bool
gate);
50
51
protected
:
52
virtual
void
update_state
(
const
gr_complex
&in);
53
virtual
bool
mute
()
const
{
return
d_pwr < d_threshold; }
54
55
public
:
56
std::vector<float>
squelch_range
()
const
;
57
58
double
threshold
()
const
{
return
10*log10(d_threshold); }
59
void
set_threshold
(
double
db) { d_threshold = std::pow(10.0, db/10); }
60
void
set_alpha
(
double
alpha) { d_iir.set_taps(alpha); }
61
};
62
63
#endif
/* INCLUDED_GR_PWR_SQUELCH_CC_H */
gnuradio-core
src
lib
general
gr_pwr_squelch_cc.h
Generated on Sat Mar 15 2014 12:03:54 for GNU Radio 3.5.3.2 C++ API by
1.8.1.2