1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
/* -*- c++ -*- */
//%feature("autodoc", "1"); // generate python docstrings
//%include "exception.i"
%import "gnuradio.i" // the common stuff
%{
#include "gnuradio_swig_bug_workaround.h" // mandatory bug fix
//#include "gsm_constants.h"
//#include "gsm_burst.h"
#include "gsm_burst_ff.h"
#include "gsm_burst_cf.h"
#include "gsm_burst_sink_c.h"
//#include <stdexcept>
%}
// ----------------------------------------------------------------
#define OPT_TEST_HOP_SPEED 0x00000001
#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 0x00000FE0
#define PRINT_UNKNOWN 0x00000010
#define PRINT_TS0 0x00000020
#define PRINT_FCCH 0x00000040
#define PRINT_SCH 0x00000080
#define PRINT_DUMMY 0x00000100
#define PRINT_NORMAL 0x00000200
#define PRINT_GSM_DECODE 0x00004000
#define PRINT_HEX 0x00001000
//Timing/clock options
#define QB_NONE 0x00000000
#define QB_QUARTER 0x00000001 //only for internal clocked versions
#define QB_FULL04 0x00000003
#define QB_MASK 0x0000000F
#define CLK_CORR_TRACK 0x00000010 //adjust timing based on correlation offsets
#define BURST_CB_SYNC_OFFSET 1
#define BURST_CB_ADJ_OFFSET 2
#define BURST_CB_TUNE 3
//EQ options
enum EQ_TYPE {
EQ_NONE,
EQ_FIXED_LINEAR,
EQ_ADAPTIVE_LINEAR,
EQ_FIXED_DFE,
EQ_ADAPTIVE_DFE,
EQ_VITERBI
};
//GR_SWIG_BLOCK_MAGIC(gsm,burst);
class gsm_burst {
public:
~gsm_burst ();
unsigned long d_clock_options;
unsigned long d_print_options;
unsigned long d_test_options;
EQ_TYPE d_equalizer_type;
//stats
long d_sync_loss_count;
long d_fcch_count;
long d_part_sch_count;
long d_sch_count;
long d_normal_count;
long d_dummy_count;
long d_unknown_count;
long d_total_count;
long next_arfcn;
//hop testing
long d_hop_good_arfcn;
long d_hop_bad_arfcn;
int sync_state();
float last_freq_offset(void);
float mean_freq_offset(void);
//Methods
void full_reset(void);
protected:
gsm_burst(gr_feval_ll *);
};
GR_SWIG_BLOCK_MAGIC(gsm,burst_ff);
gsm_burst_ff_sptr gsm_make_burst_ff (gr_feval_ll *);
class gsm_burst_ff : public gr_block, public gsm_burst {
private:
gsm_burst_ff (gr_feval_ll *);
};
GR_SWIG_BLOCK_MAGIC(gsm,burst_cf);
gsm_burst_cf_sptr gsm_make_burst_cf (gr_feval_ll *,float);
class gsm_burst_cf : public gr_block, public gsm_burst {
public:
float get_omega();
private:
gsm_burst_cf (gr_feval_ll *,float);
};
GR_SWIG_BLOCK_MAGIC(gsm,burst_sink_c);
gsm_burst_sink_c_sptr gsm_make_burst_sink_c(gr_feval_ll *,float);
class gsm_burst_sink_c : public gr_sync_block, public gsm_burst {
private:
gsm_burst_sink_c (gr_feval_ll *,float);
};
|