GNU Radio 3.6.5.1 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
*/
40
class
GR_CORE_API
gr_pwr_squelch_cc
:
public
gr_squelch_base_cc
41
{
42
private
:
43
double
d_threshold;
44
double
d_pwr;
45
gr_single_pole_iir<double,double,double>
d_iir;
46
47
friend
GR_CORE_API
gr_pwr_squelch_cc_sptr
gr_make_pwr_squelch_cc
(
double
db,
double
alpha,
int
ramp,
bool
gate);
48
gr_pwr_squelch_cc
(
double
db,
double
alpha,
int
ramp,
bool
gate);
49
50
protected
:
51
virtual
void
update_state
(
const
gr_complex
&in);
52
virtual
bool
mute
()
const
{
return
d_pwr < d_threshold; }
53
54
public
:
55
std::vector<float>
squelch_range
()
const
;
56
57
double
threshold
()
const
{
return
10*log10(d_threshold); }
58
void
set_threshold
(
double
db) { d_threshold = std::pow(10.0, db/10); }
59
void
set_alpha
(
double
alpha) { d_iir.set_taps(alpha); }
60
};
61
62
#endif
/* INCLUDED_GR_PWR_SQUELCH_CC_H */
gnuradio-core
src
lib
general
gr_pwr_squelch_cc.h
Generated on Mon Aug 19 2013 15:37:30 for GNU Radio 3.6.5.1 C++ API by
1.8.1.2