fun_ofdm
1.0
802.11a Physical Layer for USRP
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Enumerations
Enumerator
Macros
Pages
rates.h
Go to the documentation of this file.
1
10
#ifndef RATES_H
11
#define RATES_H
12
13
#include <assert.h>
14
#include <vector>
15
#include <string>
16
17
namespace
fun
18
{
19
21
static
std::vector<unsigned char>
VALID_RATES
= {0xD, 0xE, 0xF, 0x5, 0x6, 0x7, 0x9, 0xA, 0xB, 0x1, 0x3};
22
23
31
enum
Rate
:
int
32
{
33
RATE_1_2_BPSK
= 0,
34
RATE_2_3_BPSK
= 1,
35
RATE_3_4_BPSK
= 2,
36
RATE_1_2_QPSK
= 3,
37
RATE_2_3_QPSK
= 4,
38
RATE_3_4_QPSK
= 5,
39
RATE_1_2_QAM16
= 6,
40
RATE_2_3_QAM16
= 7,
41
RATE_3_4_QAM16
= 8,
42
RATE_2_3_QAM64
= 9,
43
RATE_3_4_QAM64
= 10
44
};
45
46
// Parameters for each data rate
52
struct
RateParams
53
{
54
unsigned
char
rate_field
;
55
int
cbps
;
56
int
dbps
;
57
int
bpsc
;
58
Rate
rate
;
59
double
rel_rate
;
60
std::string
name
;
61
68
RateParams
(
Rate
_rate)
69
{
70
switch
(_rate)
71
{
72
// 1/2 BPSK
73
case
RATE_1_2_BPSK
:
74
rate_field
= 0xD;
75
cbps
= 48;
76
dbps
= 24;
77
rate
=
RATE_1_2_BPSK
;
78
rel_rate
= 1.0;
79
bpsc
= 1;
80
name
=
"1/2 BPSK"
;
81
break
;
82
83
// 2/3 BPSK
84
case
RATE_2_3_BPSK
:
85
rate_field
= 0xE;
86
cbps
= 48;
87
dbps
= 32;
88
rate
=
RATE_2_3_BPSK
;
89
rel_rate
= 3.0 / 4.0;
90
bpsc
= 1;
91
name
=
"2/3 BPSK"
;
92
break
;
93
94
// 3/4 BPSK
95
case
RATE_3_4_BPSK
:
96
rate_field
= 0xF;
97
cbps
= 48;
98
dbps
= 36;
99
rate
=
RATE_3_4_BPSK
;
100
rel_rate
= 2.0 / 3.0;
101
bpsc
= 1;
102
name
=
"3/4 BPSK"
;
103
break
;
104
105
// 1/2 QPSK
106
case
RATE_1_2_QPSK
:
107
rate_field
= 0x5;
108
cbps
= 96;
109
dbps
= 48;
110
rate
=
RATE_1_2_QPSK
;
111
rel_rate
= 1.0;
112
bpsc
= 2;
113
name
=
"1/2 QPSK"
;
114
break
;
115
116
// 2/3 QPSK
117
case
RATE_2_3_QPSK
:
118
rate_field
= 0x6;
119
cbps
= 96;
120
dbps
= 64;
121
rate
=
RATE_2_3_QPSK
;
122
rel_rate
= 3.0 / 4.0;
123
bpsc
= 2;
124
name
=
"2/3 QPSK"
;
125
break
;
126
127
// 3/4 QPSK
128
case
RATE_3_4_QPSK
:
129
rate_field
= 0x7;
130
cbps
= 96;
131
dbps
= 72;
132
rate
=
RATE_3_4_QPSK
;
133
rel_rate
= 2.0 / 3.0;
134
bpsc
= 2;
135
name
=
"3/4 QPSK"
;
136
break
;
137
138
// 1/2 QAM16
139
case
RATE_1_2_QAM16
:
140
rate_field
= 0x9;
141
cbps
= 192;
142
dbps
= 96;
143
rate
=
RATE_1_2_QAM16
;
144
rel_rate
= 1.0;
145
bpsc
= 4;
146
name
=
"1/2 QAM16"
;
147
break
;
148
149
// 2/3 QAM16
150
case
RATE_2_3_QAM16
:
151
rate_field
= 0xA;
152
cbps
= 192;
153
dbps
= 128;
154
rate
=
RATE_2_3_QAM16
;
155
rel_rate
= 3.0 / 4.0;
156
bpsc
= 4;
157
name
=
"2/3 QAM16"
;
158
break
;
159
160
// 3/4 QAM16
161
case
RATE_3_4_QAM16
:
162
rate_field
= 0xB;
163
cbps
= 192;
164
dbps
= 144;
165
rate
=
RATE_3_4_QAM16
;
166
rel_rate
= 2.0 / 3.0;
167
bpsc
= 4;
168
name
=
"3/4 QAM16"
;
169
break
;
170
171
// 2/3 QAM64
172
case
RATE_2_3_QAM64
:
173
rate_field
= 0x1;
174
cbps
= 288;
175
dbps
= 192;
176
rate
=
RATE_2_3_QAM64
;
177
rel_rate
= 3.0 / 4.0;
178
bpsc
= 6;
179
name
=
"2/3 QAM64"
;
180
break
;
181
182
// 3/4 QAM64
183
case
RATE_3_4_QAM64
:
184
rate_field
= 0x3;
185
cbps
= 288;
186
dbps
= 216;
187
rate
=
RATE_3_4_QAM64
;
188
rel_rate
= 2.0 / 3.0;
189
bpsc
= 6;
190
name
=
"3/4 QAM64"
;
191
break
;
192
193
default
:
194
break
;
195
}
196
}
197
208
static
RateParams
FromRateField
(
unsigned
char
rate_field
)
209
{
210
switch
(rate_field)
211
{
212
// 1/2 BPSK
213
case
0xD:
return
RateParams
(
RATE_1_2_BPSK
);
break
;
214
215
// 2/3 BPSK
216
case
0xE:
return
RateParams
(
RATE_2_3_BPSK
);
break
;
217
218
// 3/4 BPSK
219
case
0xF:
return
RateParams
(
RATE_3_4_BPSK
);
break
;
220
221
// 1/2 QPSK
222
case
0x5:
return
RateParams
(
RATE_1_2_QPSK
);
break
;
223
224
// 2/3 QPSK
225
case
0x6:
return
RateParams
(
RATE_2_3_QPSK
);
break
;
226
227
// 3/4 QPSK
228
case
0x7:
return
RateParams
(
RATE_3_4_QPSK
);
break
;
229
230
// 1/2 QAM16
231
case
0x9:
return
RateParams
(
RATE_1_2_QAM16
);
break
;
232
233
// 2/3 QAM16
234
case
0xA:
return
RateParams
(
RATE_2_3_QAM16
);
break
;
235
236
// 3/4 QAM16
237
case
0xB:
return
RateParams
(
RATE_3_4_QAM16
);
break
;
238
239
// 2/3 QAM64
240
case
0x1:
return
RateParams
(
RATE_2_3_QAM64
);
break
;
241
242
// 3/4 QAM64
243
case
0x3:
return
RateParams
(
RATE_3_4_QAM64
);
break
;
244
245
default
:
246
assert(
false
);
247
break
;
248
}
249
}
250
};
251
}
252
253
254
255
#endif // RATES_H
src
rates.h
Generated on Mon Oct 20 2014 10:26:27 for fun_ofdm by
1.8.4