From c8a37f2e8ad0ec719cda1ee6a0e50e7731502cee Mon Sep 17 00:00:00 2001 From: leo Date: Thu, 21 Feb 2008 02:37:14 +0000 Subject: tvoid's patch 0001 - 0005 --- gsm-tvoid/src/lib/gsm_burst.h | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) (limited to 'gsm-tvoid/src/lib/gsm_burst.h') diff --git a/gsm-tvoid/src/lib/gsm_burst.h b/gsm-tvoid/src/lib/gsm_burst.h index 951cef2..def20e0 100755 --- a/gsm-tvoid/src/lib/gsm_burst.h +++ b/gsm-tvoid/src/lib/gsm_burst.h @@ -6,19 +6,23 @@ // everything but I/O & clocking & sync_state? // What about handling complex&diff&bin data? -#include +#include "gsm_constants.h" #include +//#include //for callback testing +#include #include "gsmstack.h" + //Console printing options #define PRINT_NOTHING 0x00000000 #define PRINT_EVERYTHING 0x7FFFFFFF //7 for SWIG overflow check work around #define PRINT_BITS 0x00000001 #define PRINT_ALL_BITS 0x00000002 #define PRINT_CORR_BITS 0x00000004 +#define PRINT_STATE 0x00000008 #define PRINT_ALL_TYPES 0x00000FF0 -#define PRINT_KNOWN 0x00000008 +#define PRINT_KNOWN 0x00000FE0 #define PRINT_UNKNOWN 0x00000010 #define PRINT_TS0 0x00000020 #define PRINT_FCCH 0x00000040 @@ -26,6 +30,10 @@ #define PRINT_DUMMY 0x00000100 #define PRINT_NORMAL 0x00000200 +#define PRINT_GSM_DECODE 0x00000400 + +#define PRINT_HEX 0x00001000 + //Timing/clock options #define QB_NONE 0x00000000 #define QB_QUARTER 0x00000001 //only for internal clocked versions @@ -46,7 +54,7 @@ // G T D1 TS D2 T G // Start ^ -#define MAX_SYNC_WAIT 176 //Bursts between SCH before reverting to WAIT_FCCH. (TODO: 88 should be max?) +#define MAX_SYNC_WAIT 32 //Number of missed bursts before reverting to WAIT_FCCH. #define MAX_CORR_DIST 7 // 4 + 3 = 1/2 GUARD + TAIL #define SCH_CORR_THRESHOLD 0.80 @@ -80,11 +88,11 @@ protected: unsigned long d_sample_count; //sample count at end (TODO:beginning) of BBUF (bit count if external clock) unsigned long d_last_burst_s_count; //sample count from previous burst + unsigned char d_decoded_burst[USEFUL_BITS]; //Differentially Decoded burst buffer {0,1} + ///// Sync/training sequence correlation - //TODO: need all sync patterns float corr_sync[N_SYNC_BITS]; //encoded sync bits for correlation float corr_train_seq[10][N_TRAIN_BITS]; -// float d_corr[50]; const float *d_corr_pattern; int d_corr_pat_size; float d_corr_max; @@ -96,13 +104,18 @@ protected: ///// Burst information SYNC_STATE d_sync_state; + SYNC_STATE d_last_sync_state; BURST_TYPE d_burst_type; unsigned d_ts; //timeslot 0-7 + unsigned long d_last_good; //Burst count of last good burst unsigned long d_burst_count; //Bursts received starting w/ initial FCCH reset after lost sync unsigned long d_last_sch; //Burst count of last SCH - float d_freq_offset; int d_color_code; + float d_freq_offset; + double d_freq_off_sum; + double d_freq_off_weight; + //////// Methods int get_burst(void); BURST_TYPE get_fcch_burst(void); @@ -113,15 +126,18 @@ protected: void calc_freq_offset(void); void equalize(void); float correlate_pattern(const float *,const int,const int,const int); + void diff_decode_burst(void); + + void sync_reset(void); void print_bits(const float *data,int length); + void print_hex(const unsigned char *data,int length); void soft2hardbit(char *dst, const float *data, int len); void print_burst(void); void diff_encode(const float *in,float *out,int length,float lastbit = 1.0); void diff_decode(const float *in,float *out,int length,float lastbit = 1.0); - public: ~gsm_burst (); @@ -134,6 +150,7 @@ public: long d_normal_count; long d_dummy_count; long d_unknown_count; + long d_total_count; ////// Options unsigned long d_clock_options; @@ -141,11 +158,11 @@ public: EQ_TYPE d_equalizer_type; int sync_state() { return d_sync_state;} - float freq_offset() {return d_freq_offset;} + float last_freq_offset() {return d_freq_offset;} + double mean_freq_offset(void); //Methods - //TODO: reset state (e.g. channel change) - //void reset(void); + void full_reset(void); }; -- cgit v1.2.3