diff options
author | leo <leo@brix.(none)> | 2008-04-18 00:53:39 +0100 |
---|---|---|
committer | leo <leo@brix.(none)> | 2008-04-18 00:53:39 +0100 |
commit | ae813e4258cddb8442aa64c097bbf94f9bb0671d (patch) | |
tree | 46469d3f13fea188767d1d3f941951b3d12546a0 /gsm-tvoid/src/lib/gsm_burst_ff.cc | |
parent | 1160a9850752e6abb9a9a96ec4a3b7db6474dca0 (diff) |
patch 20080411
Diffstat (limited to 'gsm-tvoid/src/lib/gsm_burst_ff.cc')
-rwxr-xr-x | gsm-tvoid/src/lib/gsm_burst_ff.cc | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/gsm-tvoid/src/lib/gsm_burst_ff.cc b/gsm-tvoid/src/lib/gsm_burst_ff.cc index 2980829..dd449f1 100755 --- a/gsm-tvoid/src/lib/gsm_burst_ff.cc +++ b/gsm-tvoid/src/lib/gsm_burst_ff.cc @@ -9,17 +9,18 @@ #include <stdio.h> #include <gri_mmse_fir_interpolator_cc.h> -gsm_burst_ff_sptr gsm_make_burst_ff () +gsm_burst_ff_sptr gsm_make_burst_ff (gr_feval_ll *t) { - return gsm_burst_ff_sptr (new gsm_burst_ff()); + return gsm_burst_ff_sptr (new gsm_burst_ff(t)); } static const int MIN_IN = 1; // minimum number of input streams static const int MAX_IN = 1; // maximum number of input streams -static const int MIN_OUT = 1; // minimum number of output streams +static const int MIN_OUT = 0; // minimum number of output streams static const int MAX_OUT = 1; // maximum number of output streams -gsm_burst_ff::gsm_burst_ff () : +gsm_burst_ff::gsm_burst_ff (gr_feval_ll *t) : + gsm_burst(t), gr_block( "burst_ff", gr_make_io_signature (MIN_IN, MAX_IN, sizeof (float)), gr_make_io_signature (MIN_OUT, MAX_OUT, USEFUL_BITS * sizeof (float))) @@ -37,7 +38,7 @@ void gsm_burst_ff::forecast (int noutput_items, gr_vector_int &ninput_items_requ { unsigned ninputs = ninput_items_required.size (); for (unsigned i = 0; i < ninputs; i++) - ninput_items_required[i] = noutput_items * BBUF_SIZE + history(); + ninput_items_required[i] = noutput_items * BBUF_SIZE; } @@ -51,9 +52,10 @@ int gsm_burst_ff::general_work (int noutput_items, int ii=0; int rval = 0; //default to no output - + int do_output = output_items.size() > 0 ? 1 : 0; + int n_input = ninput_items[0]; - //fprintf(stderr,"#i=%d/#o=%d",n_input,noutput_items); +// fprintf(stderr,"out=%8.8x/#i=%d/#o=%d",(unsigned)out,n_input,noutput_items); while (( rval < noutput_items) && ( ii < n_input ) ) { @@ -68,15 +70,16 @@ int gsm_burst_ff::general_work (int noutput_items, if (get_burst()) { //found a burst, send to output - - //ensure that output data is in range - int b = d_burst_start; - if (b < 0) - b = 0; - else if (b >= 2 * MAX_CORR_DIST) - b = 2 * MAX_CORR_DIST - 1; - - memcpy(out+rval*USEFUL_BITS, d_burst_buffer + b, USEFUL_BITS*sizeof(float)); + if (do_output) { + //ensure that output data is in range + int b = d_burst_start; + if (b < 0) + b = 0; + else if (b >= 2 * MAX_CORR_DIST) + b = 2 * MAX_CORR_DIST - 1; + + memcpy(out+rval*USEFUL_BITS, d_burst_buffer + b, USEFUL_BITS*sizeof(float)); + } rval++; switch ( d_clock_options & QB_MASK ) { @@ -98,7 +101,7 @@ int gsm_burst_ff::general_work (int noutput_items, ii++; } - //fprintf(stderr,"/ii=%d/rval=%d\n",ii,rval); +// fprintf(stderr,"/ii=%d/rval=%d\n",ii,rval); consume_each (ii); |