diff options
Diffstat (limited to 'gsm-tvoid/src/lib/gsm_burst.cc')
-rwxr-xr-x | gsm-tvoid/src/lib/gsm_burst.cc | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/gsm-tvoid/src/lib/gsm_burst.cc b/gsm-tvoid/src/lib/gsm_burst.cc index 6d02ea6..176b1ad 100755 --- a/gsm-tvoid/src/lib/gsm_burst.cc +++ b/gsm-tvoid/src/lib/gsm_burst.cc @@ -17,6 +17,9 @@ gsm_burst::gsm_burst (gr_feval_ll *t) : p_tuner(t), d_clock_options(DEFAULT_CLK_OPTS), d_print_options(0), + d_test_options(0), + d_hop_good_arfcn(1), + d_hop_bad_arfcn(2), d_equalizer_type(EQ_FIXED_DFE) { @@ -33,15 +36,17 @@ gsm_burst::gsm_burst (gr_feval_ll *t) : tsync[i] = 2.0*SYNC_BITS[i] - 1.0; } + diff_encode(tsync,corr_sync,N_SYNC_BITS); + +/* fprintf(stderr," Sync: "); print_bits(tsync,N_SYNC_BITS); fprintf(stderr,"\n"); - diff_encode(tsync,corr_sync,N_SYNC_BITS); fprintf(stderr,"DSync: "); print_bits(corr_sync,N_SYNC_BITS); fprintf(stderr,"\n\n"); - +*/ for (int i=0; i < 10; i++) { for (int j=0; j < N_TRAIN_BITS; j++) { @@ -49,9 +54,11 @@ gsm_burst::gsm_burst (gr_feval_ll *t) : } diff_encode(tsync,corr_train_seq[i],N_TRAIN_BITS); +/* fprintf(stderr,"TSC%d: ",i); print_bits(corr_train_seq[i],N_TRAIN_BITS); fprintf(stderr,"\n"); +*/ } /* Initialize GSM Stack */ @@ -650,7 +657,6 @@ int gsm_burst::get_burst(void) d_ts = 0; //TODO: check this break; case SCH: -#ifndef TEST_TUNE_TIMING //TODO: it would be better to adjust tuning on first FCCH (for better SCH detection), // but tuning can run away with false FCCHs // Some logic to retune back to original offset on false FCCH might work @@ -661,7 +667,6 @@ int gsm_burst::get_burst(void) p_tuner->calleval(BURST_CB_SYNC_OFFSET); } -#endif d_burst_count++; d_sch_count++; d_last_sch = d_burst_count; @@ -704,35 +709,39 @@ int gsm_burst::get_burst(void) ///////////////////// //start tune testing -#ifdef TEST_TUNE_TIMING - +#ifdef TEST_HOP_SPEED static int good_count = -1; //-1: wait sch, >=0: got sch, counting static int wait_count = 0; + + if (OPT_TEST_HOP_SPEED & d_test_options ) { + //have we started counting? + if ( good_count >= 0 ) { + + if (UNKNOWN == d_burst_type) { + if (good_count >= 0) { + fprintf(stdout,"good_count: %d\n",good_count); - if (UNKNOWN == d_burst_type) { - if (good_count >= 0) { - fprintf(stdout,"good_count: %d\n",good_count); - - if (p_tuner) { - next_arfcn = TEST_TUNE_GOOD_ARFCN; - p_tuner->calleval(BURST_CB_TUNE); + if (p_tuner) { + next_arfcn = d_hop_good_arfcn; + p_tuner->calleval(BURST_CB_TUNE); + } + } + good_count = -1; // start again at resync + + } else { + //count good bursts + good_count++; } - } - good_count = -1; // start again at resync - - } else { - - if (good_count >= 0 ) { - good_count++; - } - - if (SCH == d_burst_type) { - if ((good_count < 0) && (++wait_count > 20)) { // get some good syncs before trying again + + } else { + //haven't started counting + // get some good syncs before trying again + if ((SCH == d_burst_type) && (++wait_count > 5)) { fprintf(stdout,"restarting good_count\n"); good_count = wait_count = 0; //tune away if (p_tuner) { - next_arfcn = TEST_TUNE_EMPTY_ARFCN; + next_arfcn = d_hop_bad_arfcn; p_tuner->calleval(BURST_CB_TUNE); } } |