X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gnuradio-core%2Fsrc%2Flib%2Fgengen%2Fgr_peak_detector_fb.cc;fp=gnuradio-core%2Fsrc%2Flib%2Fgengen%2Fgr_peak_detector_fb.cc;h=0000000000000000000000000000000000000000;hb=d522829d8cd5a386b4426de5157b46d5d1856900;hp=2c7b0d483066e0d6c41e926e1c90e9588d5790e9;hpb=8a9ddbb0675f9bfcc6e03b457fba6c79474a3693;p=debian%2Fgnuradio diff --git a/gnuradio-core/src/lib/gengen/gr_peak_detector_fb.cc b/gnuradio-core/src/lib/gengen/gr_peak_detector_fb.cc deleted file mode 100644 index 2c7b0d48..00000000 --- a/gnuradio-core/src/lib/gengen/gr_peak_detector_fb.cc +++ /dev/null @@ -1,111 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007 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. - */ - -// WARNING: this file is machine generated. Edits will be over written - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include - -gr_peak_detector_fb_sptr -gr_make_peak_detector_fb (float threshold_factor_rise, - float threshold_factor_fall, - int look_ahead, float alpha) -{ - return gr_peak_detector_fb_sptr (new gr_peak_detector_fb (threshold_factor_rise, - threshold_factor_fall, - look_ahead, alpha)); -} - -gr_peak_detector_fb::gr_peak_detector_fb (float threshold_factor_rise, - float threshold_factor_fall, - int look_ahead, float alpha) - : gr_sync_block ("peak_detector_fb", - gr_make_io_signature (1, 1, sizeof (float)), - gr_make_io_signature (1, 1, sizeof (char))), - d_threshold_factor_rise(threshold_factor_rise), - d_threshold_factor_fall(threshold_factor_fall), - d_look_ahead(look_ahead), d_avg_alpha(alpha), d_avg(0), d_found(0) -{ -} - -int -gr_peak_detector_fb::work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) -{ - float *iptr = (float *) input_items[0]; - char *optr = (char *) output_items[0]; - - memset(optr, 0, noutput_items*sizeof(char)); - - float peak_val = -(float)INFINITY; - int peak_ind = 0; - unsigned char state = 0; - int i = 0; - - //printf("noutput_items %d\n",noutput_items); - while(i < noutput_items) { - if(state == 0) { // below threshold - if(iptr[i] > d_avg*d_threshold_factor_rise) { - state = 1; - } - else { - d_avg = (d_avg_alpha)*iptr[i] + (1-d_avg_alpha)*d_avg; - i++; - } - } - else if(state == 1) { // above threshold, have not found peak - //printf("Entered State 1: %f i: %d noutput_items: %d\n", iptr[i], i, noutput_items); - if(iptr[i] > peak_val) { - peak_val = iptr[i]; - peak_ind = i; - d_avg = (d_avg_alpha)*iptr[i] + (1-d_avg_alpha)*d_avg; - i++; - } - else if (iptr[i] > d_avg*d_threshold_factor_fall) { - d_avg = (d_avg_alpha)*iptr[i] + (1-d_avg_alpha)*d_avg; - i++; - } - else { - optr[peak_ind] = 1; - state = 0; - peak_val = -(float)INFINITY; - //printf("Leaving State 1: Peak: %f Peak Ind: %d i: %d noutput_items: %d\n", - //peak_val, peak_ind, i, noutput_items); - } - } - } - - if(state == 0) { - //printf("Leave in State 0, produced %d\n",noutput_items); - return noutput_items; - } - else { // only return up to passing the threshold - //printf("Leave in State 1, only produced %d of %d\n",peak_ind,noutput_items); - return peak_ind+1; - } -}