diff options
author | Tom Rondeau | 2012-10-31 13:15:25 -0400 |
---|---|---|
committer | Tom Rondeau | 2012-10-31 13:15:25 -0400 |
commit | 300f7b5313ff79d9f3d9c19e109e71ee608bea86 (patch) | |
tree | a608f07f4b1dc24e1fa4d6692a771db36b7ecc5f /gr-analog/lib/pwr_squelch_ff_impl.cc | |
parent | 54e947e394dcd2bbff2b49968adf7b0861f0851b (diff) | |
download | gnuradio-300f7b5313ff79d9f3d9c19e109e71ee608bea86.tar.gz gnuradio-300f7b5313ff79d9f3d9c19e109e71ee608bea86.tar.bz2 gnuradio-300f7b5313ff79d9f3d9c19e109e71ee608bea86.zip |
analog: adding pwr_squelch blocks to gr-analog with QA and GRC.
Diffstat (limited to 'gr-analog/lib/pwr_squelch_ff_impl.cc')
-rw-r--r-- | gr-analog/lib/pwr_squelch_ff_impl.cc | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/gr-analog/lib/pwr_squelch_ff_impl.cc b/gr-analog/lib/pwr_squelch_ff_impl.cc new file mode 100644 index 000000000..c6bb6af90 --- /dev/null +++ b/gr-analog/lib/pwr_squelch_ff_impl.cc @@ -0,0 +1,73 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004,2006,2010,2012 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 "pwr_squelch_ff_impl.h" + +namespace gr { + namespace analog { + + pwr_squelch_ff::sptr + pwr_squelch_ff::make(double threshold, double alpha, + int ramp, bool gate) + { + return gnuradio::get_initial_sptr + (new pwr_squelch_ff_impl(threshold, alpha, ramp, gate)); + } + + pwr_squelch_ff_impl::pwr_squelch_ff_impl(double threshold, double alpha, + int ramp, bool gate) + : gr_block("pwr_squelch_ff", + gr_make_io_signature(1, 1, sizeof(float)), + gr_make_io_signature(1, 1, sizeof(float))), + squelch_base_ff_impl("pwr_squelch_ff", ramp, gate), + d_iir(alpha) + { + set_threshold(threshold); + } + + pwr_squelch_ff_impl::~pwr_squelch_ff_impl() + { + } + + std::vector<float> + pwr_squelch_ff_impl::squelch_range() const + { + std::vector<float> r(3); + r[0] = -50.0; // min FIXME + r[1] = +50.0; // max FIXME + r[2] = (r[1] - r[0]) / 100; // step size + + return r; + } + + void + pwr_squelch_ff_impl::update_state(const float &in) + { + d_pwr = d_iir.filter(in*in); + } + + } /* namespace analog */ +} /* namespace gr */ |