summaryrefslogtreecommitdiff
path: root/gsm-tvoid/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'gsm-tvoid/src/lib')
-rwxr-xr-xgsm-tvoid/src/lib/gsm_burst.cc11
-rwxr-xr-xgsm-tvoid/src/lib/gsm_burst.h6
-rwxr-xr-xgsm-tvoid/src/lib/gsm_burst_cf.cc10
-rwxr-xr-xgsm-tvoid/src/lib/gsm_burst_ff.cc8
4 files changed, 25 insertions, 10 deletions
diff --git a/gsm-tvoid/src/lib/gsm_burst.cc b/gsm-tvoid/src/lib/gsm_burst.cc
index 00a5a95..97e8682 100755
--- a/gsm-tvoid/src/lib/gsm_burst.cc
+++ b/gsm-tvoid/src/lib/gsm_burst.cc
@@ -477,7 +477,8 @@ float gsm_burst::correlate_pattern(const float *pattern,const int pat_size,const
corr = 0.0;
for (int i = 1; i < pat_size; i++) { //Start a 1 to skip first bit due to diff encoding
//d_corr[j+distance] += d_burst_buffer[center+i+j] * pattern[i];
- corr += SIGNUM(d_burst_buffer[center+i+j]) * pattern[i]; //binary corr/sliced
+ //corr += SIGNUM(d_burst_buffer[center+i+j]) * pattern[i]; //binary corr/sliced
+ corr += d_burst_buffer[center+i+j] * pattern[i];
}
corr /= pat_size - 1; //normalize, -1 for skipped first bit
if (corr > d_corr_max) {
@@ -647,9 +648,12 @@ int gsm_burst::get_burst(void)
d_fcch_count++;
calc_freq_offset();
+
+#ifndef TEST_TUNE_TIMING
if (p_tuner) {
p_tuner->calleval(BURST_CB_ADJ_OFFSET);
}
+#endif
d_ts = 0;
break;
@@ -703,6 +707,7 @@ int gsm_burst::get_burst(void)
/////////////////////
//start tune testing
#ifdef TEST_TUNE_TIMING
+
static int good_count = -1; //-1: wait sch, >=0: got sch, counting
if (UNKNOWN == d_burst_type) {
@@ -710,7 +715,7 @@ int gsm_burst::get_burst(void)
fprintf(stdout,"good_count: %d\n",good_count);
if (p_tuner) {
- next_arfcn = 658; //tune back to the good channel
+ next_arfcn = TEST_TUNE_GOOD_ARFCN;
p_tuner->calleval(BURST_CB_TUNE);
}
}
@@ -728,7 +733,7 @@ int gsm_burst::get_burst(void)
good_count = 0;
//tune away
if (p_tuner) {
- next_arfcn = 655; //this should be an empty channel
+ next_arfcn = TEST_TUNE_EMPTY_ARFCN;
p_tuner->calleval(BURST_CB_TUNE);
}
}
diff --git a/gsm-tvoid/src/lib/gsm_burst.h b/gsm-tvoid/src/lib/gsm_burst.h
index f1fb26e..79d72d6 100755
--- a/gsm-tvoid/src/lib/gsm_burst.h
+++ b/gsm-tvoid/src/lib/gsm_burst.h
@@ -11,6 +11,12 @@
#include <gr_feval.h>
#include "gsmstack.h"
+//Testing Modes
+//Tune test measures hopping latency by hopping between good and empty ARFCNs
+#define TEST_TUNE_TIMING
+#define TEST_TUNE_GOOD_ARFCN 658
+#define TEST_TUNE_EMPTY_ARFCN 655
+
//Console printing options
#define PRINT_NOTHING 0x00000000
diff --git a/gsm-tvoid/src/lib/gsm_burst_cf.cc b/gsm-tvoid/src/lib/gsm_burst_cf.cc
index 821b41f..df182a6 100755
--- a/gsm-tvoid/src/lib/gsm_burst_cf.cc
+++ b/gsm-tvoid/src/lib/gsm_burst_cf.cc
@@ -16,7 +16,7 @@ gsm_burst_cf_sptr gsm_make_burst_cf (gr_feval_ll *t,float sample_rate)
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_cf::gsm_burst_cf (gr_feval_ll *t, float sample_rate) :
@@ -103,9 +103,11 @@ int gsm_burst_cf::general_work (int noutput_items,
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++;
-
+ if (out) {
+ memcpy(out+rval*USEFUL_BITS, d_burst_buffer + b, USEFUL_BITS*sizeof(float));
+ rval++;
+ }
+
switch ( d_clock_options & QB_MASK ) {
case QB_QUARTER: //extra 1/4 bit each burst
d_mu -= d_relative_sample_rate / 4.0;
diff --git a/gsm-tvoid/src/lib/gsm_burst_ff.cc b/gsm-tvoid/src/lib/gsm_burst_ff.cc
index d73e73d..086f21b 100755
--- a/gsm-tvoid/src/lib/gsm_burst_ff.cc
+++ b/gsm-tvoid/src/lib/gsm_burst_ff.cc
@@ -16,7 +16,7 @@ gsm_burst_ff_sptr gsm_make_burst_ff (gr_feval_ll *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 (gr_feval_ll *t) :
@@ -77,8 +77,10 @@ int gsm_burst_ff::general_work (int noutput_items,
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++;
+ if (out) {
+ memcpy(out+rval*USEFUL_BITS, d_burst_buffer + b, USEFUL_BITS*sizeof(float));
+ rval++;
+ }
switch ( d_clock_options & QB_MASK ) {
case QB_QUARTER: //Can't do this in the FF version
personal git repositories of Harald Welte. Your mileage may vary