diff options
author | Josh Blum <josh@joshknows.com> | 2013-06-07 08:34:26 -0700 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2013-06-07 11:41:27 -0400 |
commit | c25304bf1c87f0044a34188d51142b8a7e2b4378 (patch) | |
tree | efca7e9584035a95a0fdaa140956a526e195863f /gr-blocks/lib/plateau_detector_fb_impl.cc | |
parent | fed9214214380a1d8ce3aef8c3a953e0490adb1f (diff) |
blocks: plateau_detector_fb is now a gr_block and forecasts
The detector actually could return 0 with insufficient input.
The forecast always requires at least 2*d_max_len.
However, forecast could be conditionalized to only
require this based on the last threshold detected.
Diffstat (limited to 'gr-blocks/lib/plateau_detector_fb_impl.cc')
-rw-r--r-- | gr-blocks/lib/plateau_detector_fb_impl.cc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/gr-blocks/lib/plateau_detector_fb_impl.cc b/gr-blocks/lib/plateau_detector_fb_impl.cc index 0c35a32f68..14d52b392c 100644 --- a/gr-blocks/lib/plateau_detector_fb_impl.cc +++ b/gr-blocks/lib/plateau_detector_fb_impl.cc @@ -38,7 +38,7 @@ namespace gr { } plateau_detector_fb_impl::plateau_detector_fb_impl(int max_len, float threshold) - : sync_block("plateau_detector_fb", + : block("plateau_detector_fb", io_signature::make(1, 1, sizeof(float)), io_signature::make(1, 1, sizeof(char))), d_max_len(max_len), @@ -49,15 +49,22 @@ namespace gr { { } + void + plateau_detector_fb_impl::forecast(int, gr_vector_int &ninput_items_required) + { + ninput_items_required[0] = 2*d_max_len; + } + int - plateau_detector_fb_impl::work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) + plateau_detector_fb_impl::general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) { const float *in = (const float *) input_items[0]; unsigned char *out = (unsigned char *) output_items[0]; int flank_start; - + noutput_items = std::min(noutput_items, ninput_items[0]); memset((void *) out, 0x00, noutput_items); int i; for(i = 0; i < noutput_items; i++) { @@ -75,6 +82,7 @@ namespace gr { } } + this->consume_each(i); return i; } |