A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
lte-amc.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Original Author: Giuseppe Piro <g.piro@poliba.it>
18 * Modified by: Marco Miozzo <mmiozzo@cttc.es>
19 * Nicola Baldo <nbaldo@cttc.es>
20 */
21
22#include "lte-amc.h"
23
24#include "lte-mi-error-model.h"
25
26#include "ns3/enum.h"
27#include <ns3/assert.h>
28#include <ns3/double.h>
29#include <ns3/log.h>
30#include <ns3/math.h>
31#include <ns3/spectrum-value.h>
32
33#include <vector>
34
35namespace ns3
36{
37
39
41
42/**
43 * Table of CQI index and its spectral efficiency. Taken from 3GPP TSG-RAN WG1
44 * [R1-081483 Conveying MCS and TB size via PDCCH]
45 * (http://www.3gpp.org/ftp/tsg_ran/WG1_RL1/TSGR1_52b/Docs/R1-081483.zip)
46 * file `TBS_support.xls` tab "MCS Table" (rounded to 2 decimal digits).
47 * The index of the vector (range 0-15) identifies the CQI value.
48 */
49static const double SpectralEfficiencyForCqi[16] = {
50 0.0, // out of range
51 0.15,
52 0.23,
53 0.38,
54 0.6,
55 0.88,
56 1.18,
57 1.48,
58 1.91,
59 2.41,
60 2.73,
61 3.32,
62 3.9,
63 4.52,
64 5.12,
65 5.55,
66};
67
68#if 0 // currently unused
69/**
70 * Table of MCS index (IMCS) and its TBS index (ITBS). Taken from 3GPP TS
71 * 36.213 v8.8.0 Table 7.1.7.1-1: _Modulation and TBS index table for PDSCH_.
72 * The index of the vector (range 0-31; valid values 0-28) identifies the MCS
73 * index. Note that this is similar to the one in R1-081483, but:
74 * - a few values are different; and
75 * - in R1-081483, a valid MCS index is in the range of 1-30 (not 0-28).
76 */
77static const int ModulationSchemeForMcs[32] = {
78 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79 4, 4, 4, 4, 4, 4, 4,
80 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
81 2, // reserved
82 4, // reserved
83 6, // reserved
84};
85#endif
86
87/**
88 * Table of MCS index and its spectral efficiency. Taken from 3GPP TSG-RAN WG1
89 * [R1-081483 Conveying MCS and TB size via PDCCH]
90 * (http://www.3gpp.org/ftp/tsg_ran/WG1_RL1/TSGR1_52b/Docs/R1-081483.zip)
91 * file `TBS_support.xls` tab "MCS Table" (rounded to 2 decimal digits).
92 * The index of the vector (range 0-31) corresponds to the MCS index according
93 * to the convention in TS 36.213 (i.e., the MCS index reported in R1-081483
94 * minus one)
95 */
96static const double SpectralEfficiencyForMcs[32] = {
97 0.15, 0.19, 0.23, 0.31, 0.38, 0.49, 0.6, 0.74, 0.88, 1.03, 1.18, 1.33, 1.48, 1.7, 1.91, 2.16,
98 2.41, 2.57, 2.73, 3.03, 3.32, 3.61, 3.9, 4.21, 4.52, 4.82, 5.12, 5.33, 5.55, 0, 0, 0,
99};
100
101/**
102 * Table of MCS index (IMCS) and its TBS index (ITBS). Taken from 3GPP TS
103 * 36.213 v8.8.0 Table 7.1.7.1-1: _Modulation and TBS index table for PDSCH_.
104 * The index of the vector (range 0-28) identifies the MCS index.
105 */
106static const int McsToItbsDl[29] = {
107 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13,
108 14, 15, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
109};
110
111/**
112 * Table of MCS index (IMCS) and its TBS index (ITBS). Taken from 3GPP TS
113 * 36.213 v8.8.0 Table 8.6.1-1: _Modulation, TBS index and redundancy version table for PUSCH_.
114 * The index of the vector (range 0-28) identifies the MCS index.
115 */
116static const int McsToItbsUl[29] = {
117 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13,
118 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 23, 24, 25, 26,
119};
120
121/**
122 * Table of number of physical resource blocks (NPRB), TBS index (ITBS), and
123 * their associated transport block size. Taken from 3GPP TS 36.213 v8.8.0
124 * Table 7.1.7.2.1-1: _Transport block size table (dimension 27×110)_.
125 * \note For NPRB = 1 and ITBS = 6 the standard returns 328, but it is not
126 * consistent with the other values, therefore we use 88 obtained by
127 * following the sequence of NPRB = 1 values.
128 */
129static const int TransportBlockSizeTable[110][27] = {
130 /* NPRB 001*/ {16, 24, 32, 40, 56, 72, 88, 104, 120, 136, 144, 176, 208, 224,
131 256, 280, 328, 336, 376, 408, 440, 488, 520, 552, 584, 616, 712},
132 /* NPRB 002*/ {32, 56, 72, 104, 120, 144, 176, 224, 256, 296, 328, 376, 440, 488,
133 552, 600, 632, 696, 776, 840, 904, 1000, 1064, 1128, 1192, 1256, 1480},
134 /* NPRB 003*/ {56, 88, 144, 176, 208, 224, 256, 328, 392, 456, 504, 584, 680, 744,
135 840, 904, 968, 1064, 1160, 1288, 1384, 1480, 1608, 1736, 1800, 1864, 2216},
136 /* NPRB 004*/ {88, 144, 176, 208, 256, 328, 392, 472, 536,
137 616, 680, 776, 904, 1000, 1128, 1224, 1288, 1416,
138 1544, 1736, 1864, 1992, 2152, 2280, 2408, 2536, 2984},
139 /* NPRB 005*/ {120, 176, 208, 256, 328, 424, 504, 584, 680,
140 776, 872, 1000, 1128, 1256, 1416, 1544, 1608, 1800,
141 1992, 2152, 2344, 2472, 2664, 2856, 2984, 3112, 3752},
142 /* NPRB 006*/ {152, 208, 256, 328, 408, 504, 600, 712, 808,
143 936, 1032, 1192, 1352, 1544, 1736, 1800, 1928, 2152,
144 2344, 2600, 2792, 2984, 3240, 3496, 3624, 3752, 4392},
145 /* NPRB 007*/ {176, 224, 296, 392, 488, 600, 712, 840, 968,
146 1096, 1224, 1384, 1608, 1800, 1992, 2152, 2280, 2536,
147 2792, 2984, 3240, 3496, 3752, 4008, 4264, 4392, 5160},
148 /* NPRB 008*/ {208, 256, 328, 440, 552, 680, 808, 968, 1096,
149 1256, 1384, 1608, 1800, 2024, 2280, 2472, 2600, 2856,
150 3112, 3496, 3752, 4008, 4264, 4584, 4968, 5160, 5992},
151 /* NPRB 009*/ {224, 328, 376, 504, 632, 776, 936, 1096, 1256,
152 1416, 1544, 1800, 2024, 2280, 2600, 2728, 2984, 3240,
153 3624, 3880, 4136, 4584, 4776, 5160, 5544, 5736, 6712},
154 /* NPRB 010*/ {256, 344, 424, 568, 696, 872, 1032, 1224, 1384,
155 1544, 1736, 2024, 2280, 2536, 2856, 3112, 3240, 3624,
156 4008, 4264, 4584, 4968, 5352, 5736, 5992, 6200, 7480},
157 /* NPRB 011*/ {288, 376, 472, 616, 776, 968, 1128, 1320, 1544,
158 1736, 1928, 2216, 2472, 2856, 3112, 3368, 3624, 4008,
159 4392, 4776, 5160, 5544, 5992, 6200, 6712, 6968, 8248},
160 /* NPRB 012*/ {328, 424, 520, 680, 840, 1032, 1224, 1480, 1672,
161 1864, 2088, 2408, 2728, 3112, 3496, 3624, 3880, 4392,
162 4776, 5160, 5544, 5992, 6456, 6968, 7224, 7480, 8760},
163 /* NPRB 013*/ {344, 456, 568, 744, 904, 1128, 1352, 1608, 1800,
164 2024, 2280, 2600, 2984, 3368, 3752, 4008, 4264, 4776,
165 5160, 5544, 5992, 6456, 6968, 7480, 7992, 8248, 9528},
166 /* NPRB 014*/ {376, 488, 616, 808, 1000, 1224, 1480, 1672, 1928,
167 2216, 2472, 2792, 3240, 3624, 4008, 4264, 4584, 5160,
168 5544, 5992, 6456, 6968, 7480, 7992, 8504, 8760, 10296},
169 /* NPRB 015*/ {392, 520, 648, 872, 1064, 1320, 1544, 1800, 2088,
170 2344, 2664, 2984, 3368, 3880, 4264, 4584, 4968, 5352,
171 5992, 6456, 6968, 7480, 7992, 8504, 9144, 9528, 11064},
172 /* NPRB 016*/ {424, 568, 696, 904, 1128, 1384, 1672, 1928, 2216,
173 2536, 2792, 3240, 3624, 4136, 4584, 4968, 5160, 5736,
174 6200, 6968, 7480, 7992, 8504, 9144, 9912, 10296, 11832},
175 /* NPRB 017*/ {456, 600, 744, 968, 1192, 1480, 1736, 2088, 2344,
176 2664, 2984, 3496, 3880, 4392, 4968, 5160, 5544, 6200,
177 6712, 7224, 7992, 8504, 9144, 9912, 10296, 10680, 12576},
178 /* NPRB 018*/ {488, 632, 776, 1032, 1288, 1544, 1864, 2216, 2536,
179 2856, 3112, 3624, 4136, 4584, 5160, 5544, 5992, 6456,
180 7224, 7736, 8248, 9144, 9528, 10296, 11064, 11448, 13536},
181 /* NPRB 019*/ {504, 680, 840, 1096, 1352, 1672, 1992, 2344, 2664,
182 2984, 3368, 3880, 4392, 4968, 5544, 5736, 6200, 6712,
183 7480, 8248, 8760, 9528, 10296, 11064, 11448, 12216, 14112},
184 /* NPRB 020*/ {536, 712, 872, 1160, 1416, 1736, 2088, 2472, 2792,
185 3112, 3496, 4008, 4584, 5160, 5736, 6200, 6456, 7224,
186 7992, 8504, 9144, 9912, 10680, 11448, 12216, 12576, 14688},
187 /* NPRB 021*/ {568, 744, 936, 1224, 1480, 1864, 2216, 2536, 2984,
188 3368, 3752, 4264, 4776, 5352, 5992, 6456, 6712, 7480,
189 8248, 9144, 9912, 10680, 11448, 12216, 12960, 13536, 15264},
190 /* NPRB 022*/ {600, 776, 968, 1256, 1544, 1928, 2280, 2664, 3112,
191 3496, 3880, 4392, 4968, 5736, 6200, 6712, 7224, 7992,
192 8760, 9528, 10296, 11064, 11832, 12576, 13536, 14112, 16416},
193 /* NPRB 023*/ {616, 808, 1000, 1320, 1608, 2024, 2408, 2792, 3240,
194 3624, 4008, 4584, 5352, 5992, 6456, 6968, 7480, 8248,
195 9144, 9912, 10680, 11448, 12576, 12960, 14112, 14688, 16992},
196 /* NPRB 024*/ {648, 872, 1064, 1384, 1736, 2088, 2472, 2984, 3368,
197 3752, 4264, 4776, 5544, 6200, 6968, 7224, 7736, 8760,
198 9528, 10296, 11064, 12216, 12960, 13536, 14688, 15264, 17568},
199 /* NPRB 025*/ {680, 904, 1096, 1416, 1800, 2216, 2600, 3112, 3496,
200 4008, 4392, 4968, 5736, 6456, 7224, 7736, 7992, 9144,
201 9912, 10680, 11448, 12576, 13536, 14112, 15264, 15840, 18336},
202 /* NPRB 026*/ {712, 936, 1160, 1480, 1864, 2280, 2728, 3240, 3624,
203 4136, 4584, 5352, 5992, 6712, 7480, 7992, 8504, 9528,
204 10296, 11064, 12216, 12960, 14112, 14688, 15840, 16416, 19080},
205 /* NPRB 027*/ {744, 968, 1192, 1544, 1928, 2344, 2792, 3368, 3752,
206 4264, 4776, 5544, 6200, 6968, 7736, 8248, 8760, 9912,
207 10680, 11448, 12576, 13536, 14688, 15264, 16416, 16992, 19848},
208 /* NPRB 028*/ {776, 1000, 1256, 1608, 1992, 2472, 2984, 3368, 3880,
209 4392, 4968, 5736, 6456, 7224, 7992, 8504, 9144, 10296,
210 11064, 12216, 12960, 14112, 15264, 15840, 16992, 17568, 20616},
211 /* NPRB 029*/ {776, 1032, 1288, 1672, 2088, 2536, 2984, 3496, 4008,
212 4584, 5160, 5992, 6712, 7480, 8248, 8760, 9528, 10296,
213 11448, 12576, 13536, 14688, 15840, 16416, 17568, 18336, 21384},
214 /* NPRB 030*/ {808, 1064, 1320, 1736, 2152, 2664, 3112, 3624, 4264,
215 4776, 5352, 5992, 6712, 7736, 8504, 9144, 9912, 10680,
216 11832, 12960, 14112, 15264, 16416, 16992, 18336, 19080, 22152},
217 /* NPRB 031*/ {840, 1128, 1384, 1800, 2216, 2728, 3240, 3752, 4392,
218 4968, 5544, 6200, 6968, 7992, 8760, 9528, 9912, 11064,
219 12216, 13536, 14688, 15840, 16992, 17568, 19080, 19848, 22920},
220 /* NPRB 032*/ {872, 1160, 1416, 1864, 2280, 2792, 3368, 3880, 4584,
221 5160, 5736, 6456, 7224, 8248, 9144, 9912, 10296, 11448,
222 12576, 13536, 14688, 15840, 16992, 18336, 19848, 20616, 23688},
223 /* NPRB 033*/ {904, 1192, 1480, 1928, 2344, 2856, 3496, 4008, 4584,
224 5160, 5736, 6712, 7480, 8504, 9528, 10296, 10680, 11832,
225 12960, 14112, 15264, 16416, 17568, 19080, 19848, 20616, 24496},
226 /* NPRB 034*/ {936, 1224, 1544, 1992, 2408, 2984, 3496, 4136, 4776,
227 5352, 5992, 6968, 7736, 8760, 9912, 10296, 11064, 12216,
228 13536, 14688, 15840, 16992, 18336, 19848, 20616, 21384, 25456},
229 /* NPRB 035*/ {968, 1256, 1544, 2024, 2472, 3112, 3624, 4264, 4968,
230 5544, 6200, 6968, 7992, 9144, 9912, 10680, 11448, 12576,
231 14112, 15264, 16416, 17568, 19080, 19848, 21384, 22152, 25456},
232 /* NPRB 036*/ {1000, 1288, 1608, 2088, 2600, 3112, 3752, 4392, 4968,
233 5736, 6200, 7224, 8248, 9144, 10296, 11064, 11832, 12960,
234 14112, 15264, 16992, 18336, 19080, 20616, 22152, 22920, 26416},
235 /* NPRB 037*/ {1032, 1352, 1672, 2152, 2664, 3240, 3880, 4584, 5160,
236 5736, 6456, 7480, 8504, 9528, 10680, 11448, 12216, 13536,
237 14688, 15840, 16992, 18336, 19848, 21384, 22920, 23688, 27376},
238 /* NPRB 038*/ {1032, 1384, 1672, 2216, 2728, 3368, 4008, 4584, 5352,
239 5992, 6712, 7736, 8760, 9912, 11064, 11832, 12216, 13536,
240 15264, 16416, 17568, 19080, 20616, 22152, 22920, 24496, 28336},
241 /* NPRB 039*/ {1064, 1416, 1736, 2280, 2792, 3496, 4136, 4776, 5544,
242 6200, 6712, 7736, 8760, 9912, 11064, 11832, 12576, 14112,
243 15264, 16992, 18336, 19848, 21384, 22152, 23688, 24496, 29296},
244 /* NPRB 040*/ {1096, 1416, 1800, 2344, 2856, 3496, 4136, 4968, 5544,
245 6200, 6968, 7992, 9144, 10296, 11448, 12216, 12960, 14688,
246 15840, 16992, 18336, 19848, 21384, 22920, 24496, 25456, 29296},
247 /* NPRB 041*/ {1128, 1480, 1800, 2408, 2984, 3624, 4264, 4968, 5736,
248 6456, 7224, 8248, 9528, 10680, 11832, 12576, 13536, 14688,
249 16416, 17568, 19080, 20616, 22152, 23688, 25456, 26416, 30576},
250 /* NPRB 042*/ {1160, 1544, 1864, 2472, 2984, 3752, 4392, 5160, 5992,
251 6712, 7480, 8504, 9528, 10680, 12216, 12960, 13536, 15264,
252 16416, 18336, 19848, 21384, 22920, 24496, 25456, 26416, 30576},
253 /* NPRB 043*/ {1192, 1544, 1928, 2536, 3112, 3752, 4584, 5352, 5992,
254 6712, 7480, 8760, 9912, 11064, 12216, 12960, 14112, 15264,
255 16992, 18336, 19848, 21384, 22920, 24496, 26416, 27376, 31704},
256 /* NPRB 044*/ {1224, 1608, 1992, 2536, 3112, 3880, 4584, 5352, 6200,
257 6968, 7736, 8760, 9912, 11448, 12576, 13536, 14112, 15840,
258 17568, 19080, 20616, 22152, 23688, 25456, 26416, 28336, 32856},
259 /* NPRB 045*/ {1256, 1608, 2024, 2600, 3240, 4008, 4776, 5544, 6200,
260 6968, 7992, 9144, 10296, 11448, 12960, 13536, 14688, 16416,
261 17568, 19080, 20616, 22920, 24496, 25456, 27376, 28336, 32856},
262 /* NPRB 046*/ {1256, 1672, 2088, 2664, 3240, 4008, 4776, 5736, 6456,
263 7224, 7992, 9144, 10680, 11832, 12960, 14112, 14688, 16416,
264 18336, 19848, 21384, 22920, 24496, 26416, 28336, 29296, 34008},
265 /* NPRB 047*/ {1288, 1736, 2088, 2728, 3368, 4136, 4968, 5736, 6456,
266 7480, 8248, 9528, 10680, 12216, 13536, 14688, 15264, 16992,
267 18336, 20616, 22152, 23688, 25456, 27376, 28336, 29296, 35160},
268 /* NPRB 048*/ {1320, 1736, 2152, 2792, 3496, 4264, 4968, 5992, 6712,
269 7480, 8504, 9528, 11064, 12216, 13536, 14688, 15840, 17568,
270 19080, 20616, 22152, 24496, 25456, 27376, 29296, 30576, 35160},
271 /* NPRB 049*/ {1352, 1800, 2216, 2856, 3496, 4392, 5160, 5992, 6968,
272 7736, 8504, 9912, 11064, 12576, 14112, 15264, 15840, 17568,
273 19080, 21384, 22920, 24496, 26416, 28336, 29296, 31704, 36696},
274 /* NPRB 050*/ {1384, 1800, 2216, 2856, 3624, 4392, 5160, 6200, 6968,
275 7992, 8760, 9912, 11448, 12960, 14112, 15264, 16416, 18336,
276 19848, 21384, 22920, 25456, 27376, 28336, 30576, 31704, 36696},
277 /* NPRB 051*/ {1416, 1864, 2280, 2984, 3624, 4584, 5352, 6200, 7224,
278 7992, 9144, 10296, 11832, 12960, 14688, 15840, 16416, 18336,
279 19848, 22152, 23688, 25456, 27376, 29296, 31704, 32856, 37888},
280 /* NPRB 052*/ {1416, 1864, 2344, 2984, 3752, 4584, 5352, 6456, 7224,
281 8248, 9144, 10680, 11832, 13536, 14688, 15840, 16992, 19080,
282 20616, 22152, 24496, 26416, 28336, 29296, 31704, 32856, 37888},
283 /* NPRB 053*/ {1480, 1928, 2344, 3112, 3752, 4776, 5544, 6456, 7480,
284 8248, 9144, 10680, 12216, 13536, 15264, 16416, 16992, 19080,
285 21384, 22920, 24496, 26416, 28336, 30576, 32856, 34008, 39232},
286 /* NPRB 054*/ {1480, 1992, 2408, 3112, 3880, 4776, 5736, 6712, 7480,
287 8504, 9528, 11064, 12216, 14112, 15264, 16416, 17568, 19848,
288 21384, 22920, 25456, 27376, 29296, 30576, 32856, 34008, 40576},
289 /* NPRB 055*/ {1544, 1992, 2472, 3240, 4008, 4776, 5736, 6712, 7736,
290 8760, 9528, 11064, 12576, 14112, 15840, 16992, 17568, 19848,
291 22152, 23688, 25456, 27376, 29296, 31704, 34008, 35160, 40576},
292 /* NPRB 056*/ {1544, 2024, 2536, 3240, 4008, 4968, 5992, 6712, 7736,
293 8760, 9912, 11448, 12576, 14688, 15840, 16992, 18336, 20616,
294 22152, 24496, 26416, 28336, 30576, 31704, 34008, 35160, 40576},
295 /* NPRB 057*/ {1608, 2088, 2536, 3368, 4136, 4968, 5992, 6968, 7992,
296 9144, 9912, 11448, 12960, 14688, 16416, 17568, 18336, 20616,
297 22920, 24496, 26416, 28336, 30576, 32856, 35160, 36696, 42368},
298 /* NPRB 058*/ {1608, 2088, 2600, 3368, 4136, 5160, 5992, 6968, 7992,
299 9144, 10296, 11832, 12960, 14688, 16416, 17568, 19080, 20616,
300 22920, 25456, 27376, 29296, 31704, 32856, 35160, 36696, 42368},
301 /* NPRB 059*/ {1608, 2152, 2664, 3496, 4264, 5160, 6200, 7224, 8248,
302 9144, 10296, 11832, 13536, 15264, 16992, 18336, 19080, 21384,
303 23688, 25456, 27376, 29296, 31704, 34008, 36696, 37888, 43816},
304 /* NPRB 060*/ {1672, 2152, 2664, 3496, 4264, 5352, 6200, 7224, 8504,
305 9528, 10680, 12216, 13536, 15264, 16992, 18336, 19848, 21384,
306 23688, 25456, 28336, 30576, 32856, 34008, 36696, 37888, 43816},
307 /* NPRB 061*/ {1672, 2216, 2728, 3624, 4392, 5352, 6456, 7480, 8504,
308 9528, 10680, 12216, 14112, 15840, 17568, 18336, 19848, 22152,
309 24496, 26416, 28336, 30576, 32856, 35160, 36696, 39232, 45352},
310 /* NPRB 062*/ {1736, 2280, 2792, 3624, 4392, 5544, 6456, 7480, 8760,
311 9912, 11064, 12576, 14112, 15840, 17568, 19080, 19848, 22152,
312 24496, 26416, 29296, 31704, 34008, 35160, 37888, 39232, 45352},
313 /* NPRB 063*/ {1736, 2280, 2856, 3624, 4584, 5544, 6456, 7736, 8760,
314 9912, 11064, 12576, 14112, 16416, 18336, 19080, 20616, 22920,
315 24496, 27376, 29296, 31704, 34008, 36696, 37888, 40576, 46888},
316 /* NPRB 064*/ {1800, 2344, 2856, 3752, 4584, 5736, 6712, 7736, 9144,
317 10296, 11448, 12960, 14688, 16416, 18336, 19848, 20616, 22920,
318 25456, 27376, 29296, 31704, 34008, 36696, 39232, 40576, 46888},
319 /* NPRB 065*/ {1800, 2344, 2856, 3752, 4584, 5736, 6712, 7992, 9144,
320 10296, 11448, 12960, 14688, 16992, 18336, 19848, 21384, 23688,
321 25456, 28336, 30576, 32856, 35160, 37888, 39232, 40576, 48936},
322 /* NPRB 066*/ {1800, 2408, 2984, 3880, 4776, 5736, 6968, 7992, 9144,
323 10296, 11448, 13536, 15264, 16992, 19080, 20616, 21384, 23688,
324 26416, 28336, 30576, 32856, 35160, 37888, 40576, 42368, 48936},
325 /* NPRB 067*/ {1864, 2472, 2984, 3880, 4776, 5992, 6968, 8248, 9528,
326 10680, 11832, 13536, 15264, 16992, 19080, 20616, 22152, 24496,
327 26416, 29296, 31704, 34008, 36696, 37888, 40576, 42368, 48936},
328 /* NPRB 068*/ {1864, 2472, 3112, 4008, 4968, 5992, 6968, 8248, 9528,
329 10680, 11832, 13536, 15264, 17568, 19848, 20616, 22152, 24496,
330 27376, 29296, 31704, 34008, 36696, 39232, 42368, 43816, 51024},
331 /* NPRB 069*/ {1928, 2536, 3112, 4008, 4968, 5992, 7224, 8504, 9528,
332 11064, 12216, 14112, 15840, 17568, 19848, 21384, 22152, 24496,
333 27376, 29296, 31704, 35160, 36696, 39232, 42368, 43816, 51024},
334 /* NPRB 070*/ {1928, 2536, 3112, 4136, 4968, 6200, 7224, 8504, 9912,
335 11064, 12216, 14112, 15840, 18336, 19848, 21384, 22920, 25456,
336 27376, 30576, 32856, 35160, 37888, 40576, 42368, 43816, 52752},
337 /* NPRB 071*/ {1992, 2600, 3240, 4136, 5160, 6200, 7480, 8760, 9912,
338 11064, 12576, 14112, 16416, 18336, 20616, 22152, 22920, 25456,
339 28336, 30576, 32856, 35160, 37888, 40576, 43816, 45352, 52752},
340 /* NPRB 072*/ {1992, 2600, 3240, 4264, 5160, 6200, 7480, 8760, 9912,
341 11448, 12576, 14688, 16416, 18336, 20616, 22152, 23688, 26416,
342 28336, 30576, 34008, 36696, 39232, 40576, 43816, 45352, 52752},
343 /* NPRB 073*/ {2024, 2664, 3240, 4264, 5160, 6456, 7736, 8760, 10296,
344 11448, 12960, 14688, 16416, 19080, 20616, 22152, 23688, 26416,
345 29296, 31704, 34008, 36696, 39232, 42368, 45352, 46888, 55056},
346 /* NPRB 074*/ {2088, 2728, 3368, 4392, 5352, 6456, 7736, 9144, 10296,
347 11832, 12960, 14688, 16992, 19080, 21384, 22920, 24496, 26416,
348 29296, 31704, 34008, 36696, 40576, 42368, 45352, 46888, 55056},
349 /* NPRB 075*/ {2088, 2728, 3368, 4392, 5352, 6712, 7736, 9144, 10680,
350 11832, 12960, 15264, 16992, 19080, 21384, 22920, 24496, 27376,
351 29296, 32856, 35160, 37888, 40576, 43816, 45352, 46888, 55056},
352 /* NPRB 076*/ {2088, 2792, 3368, 4392, 5544, 6712, 7992, 9144, 10680,
353 11832, 13536, 15264, 17568, 19848, 22152, 23688, 24496, 27376,
354 30576, 32856, 35160, 37888, 40576, 43816, 46888, 48936, 55056},
355 /* NPRB 077*/ {2152, 2792, 3496, 4584, 5544, 6712, 7992, 9528, 10680,
356 12216, 13536, 15840, 17568, 19848, 22152, 23688, 25456, 27376,
357 30576, 32856, 35160, 39232, 42368, 43816, 46888, 48936, 57336},
358 /* NPRB 078*/ {2152, 2856, 3496, 4584, 5544, 6968, 8248, 9528, 11064,
359 12216, 13536, 15840, 17568, 19848, 22152, 23688, 25456, 28336,
360 30576, 34008, 36696, 39232, 42368, 45352, 46888, 48936, 57336},
361 /* NPRB 079*/ {2216, 2856, 3496, 4584, 5736, 6968, 8248, 9528, 11064,
362 12576, 14112, 15840, 18336, 20616, 22920, 24496, 25456, 28336,
363 31704, 34008, 36696, 39232, 42368, 45352, 48936, 51024, 57336},
364 /* NPRB 080*/ {2216, 2856, 3624, 4776, 5736, 6968, 8248, 9912, 11064,
365 12576, 14112, 16416, 18336, 20616, 22920, 24496, 26416, 29296,
366 31704, 34008, 36696, 40576, 43816, 45352, 48936, 51024, 59256},
367 /* NPRB 081*/ {2280, 2984, 3624, 4776, 5736, 7224, 8504, 9912, 11448,
368 12960, 14112, 16416, 18336, 20616, 22920, 24496, 26416, 29296,
369 31704, 35160, 37888, 40576, 43816, 46888, 48936, 51024, 59256},
370 /* NPRB 082*/ {2280, 2984, 3624, 4776, 5992, 7224, 8504, 9912, 11448,
371 12960, 14688, 16416, 19080, 21384, 23688, 25456, 26416, 29296,
372 32856, 35160, 37888, 40576, 43816, 46888, 51024, 52752, 59256},
373 /* NPRB 083*/ {2280, 2984, 3752, 4776, 5992, 7224, 8760, 10296, 11448,
374 12960, 14688, 16992, 19080, 21384, 23688, 25456, 27376, 30576,
375 32856, 35160, 39232, 42368, 45352, 46888, 51024, 52752, 61664},
376 /* NPRB 084*/ {2344, 3112, 3752, 4968, 5992, 7480, 8760, 10296, 11832,
377 13536, 14688, 16992, 19080, 21384, 24496, 25456, 27376, 30576,
378 32856, 36696, 39232, 42368, 45352, 48936, 51024, 52752, 61664},
379 /* NPRB 085*/ {2344, 3112, 3880, 4968, 5992, 7480, 8760, 10296, 11832,
380 13536, 14688, 16992, 19080, 22152, 24496, 26416, 27376, 30576,
381 34008, 36696, 39232, 42368, 45352, 48936, 52752, 55056, 61664},
382 /* NPRB 086*/ {2408, 3112, 3880, 4968, 6200, 7480, 9144, 10680, 12216,
383 13536, 15264, 17568, 19848, 22152, 24496, 26416, 28336, 30576,
384 34008, 36696, 40576, 43816, 46888, 48936, 52752, 55056, 63776},
385 /* NPRB 087*/ {2408, 3240, 3880, 5160, 6200, 7736, 9144, 10680, 12216,
386 13536, 15264, 17568, 19848, 22152, 25456, 26416, 28336, 31704,
387 34008, 37888, 40576, 43816, 46888, 51024, 52752, 55056, 63776},
388 /* NPRB 088*/ {2472, 3240, 4008, 5160, 6200, 7736, 9144, 10680, 12216,
389 14112, 15264, 17568, 19848, 22920, 25456, 27376, 28336, 31704,
390 35160, 37888, 40576, 43816, 46888, 51024, 52752, 55056, 63776},
391 /* NPRB 089*/ {2472, 3240, 4008, 5160, 6456, 7736, 9144, 11064, 12576,
392 14112, 15840, 18336, 20616, 22920, 25456, 27376, 29296, 31704,
393 35160, 37888, 42368, 45352, 48936, 51024, 55056, 57336, 66592},
394 /* NPRB 090*/ {2536, 3240, 4008, 5352, 6456, 7992, 9528, 11064, 12576,
395 14112, 15840, 18336, 20616, 22920, 25456, 27376, 29296, 32856,
396 35160, 39232, 42368, 45352, 48936, 51024, 55056, 57336, 66592},
397 /* NPRB 091*/ {2536, 3368, 4136, 5352, 6456, 7992, 9528, 11064, 12576,
398 14112, 15840, 18336, 20616, 23688, 26416, 28336, 29296, 32856,
399 36696, 39232, 42368, 45352, 48936, 52752, 55056, 57336, 66592},
400 /* NPRB 092*/ {2536, 3368, 4136, 5352, 6456, 7992, 9528, 11448, 12960,
401 14688, 16416, 18336, 21384, 23688, 26416, 28336, 30576, 32856,
402 36696, 39232, 42368, 46888, 48936, 52752, 57336, 59256, 68808},
403 /* NPRB 093*/ {2600, 3368, 4136, 5352, 6712, 8248, 9528, 11448, 12960,
404 14688, 16416, 19080, 21384, 23688, 26416, 28336, 30576, 34008,
405 36696, 40576, 43816, 46888, 51024, 52752, 57336, 59256, 68808},
406 /* NPRB 094*/ {2600, 3496, 4264, 5544, 6712, 8248, 9912, 11448, 12960,
407 14688, 16416, 19080, 21384, 24496, 27376, 29296, 30576, 34008,
408 37888, 40576, 43816, 46888, 51024, 55056, 57336, 59256, 68808},
409 /* NPRB 095*/ {2664, 3496, 4264, 5544, 6712, 8248, 9912, 11448, 13536,
410 15264, 16992, 19080, 21384, 24496, 27376, 29296, 30576, 34008,
411 37888, 40576, 43816, 46888, 51024, 55056, 57336, 61664, 71112},
412 /* NPRB 096*/ {2664, 3496, 4264, 5544, 6968, 8504, 9912, 11832, 13536,
413 15264, 16992, 19080, 22152, 24496, 27376, 29296, 31704, 35160,
414 37888, 40576, 45352, 48936, 51024, 55056, 59256, 61664, 71112},
415 /* NPRB 097*/ {2728, 3496, 4392, 5736, 6968, 8504, 10296, 11832, 13536,
416 15264, 16992, 19848, 22152, 25456, 28336, 29296, 31704, 35160,
417 37888, 42368, 45352, 48936, 52752, 55056, 59256, 61664, 71112},
418 /* NPRB 098*/ {2728, 3624, 4392, 5736, 6968, 8760, 10296, 11832, 13536,
419 15264, 16992, 19848, 22152, 25456, 28336, 30576, 31704, 35160,
420 39232, 42368, 45352, 48936, 52752, 57336, 59256, 61664, 73712},
421 /* NPRB 099*/ {2728, 3624, 4392, 5736, 6968, 8760, 10296, 12216, 14112,
422 15840, 17568, 19848, 22920, 25456, 28336, 30576, 31704, 35160,
423 39232, 42368, 46888, 48936, 52752, 57336, 61664, 63776, 73712},
424 /* NPRB 100*/ {2792, 3624, 4584, 5736, 7224, 8760, 10296, 12216, 14112,
425 15840, 17568, 19848, 22920, 25456, 28336, 30576, 32856, 36696,
426 39232, 43816, 46888, 51024, 55056, 57336, 61664, 63776, 75376},
427 /* NPRB 101*/ {2792, 3752, 4584, 5992, 7224, 8760, 10680, 12216, 14112,
428 15840, 17568, 20616, 22920, 26416, 29296, 30576, 32856, 36696,
429 40576, 43816, 46888, 51024, 55056, 57336, 61664, 63776, 75376},
430 /* NPRB 102*/ {2856, 3752, 4584, 5992, 7224, 9144, 10680, 12576, 14112,
431 16416, 18336, 20616, 23688, 26416, 29296, 31704, 32856, 36696,
432 40576, 43816, 46888, 51024, 55056, 59256, 61664, 63776, 75376},
433 /* NPRB 103*/ {2856, 3752, 4584, 5992, 7480, 9144, 10680, 12576, 14688,
434 16416, 18336, 20616, 23688, 26416, 29296, 31704, 34008, 36696,
435 40576, 43816, 48936, 51024, 55056, 59256, 63776, 66592, 75376},
436 /* NPRB 104*/ {2856, 3752, 4584, 5992, 7480, 9144, 10680, 12576, 14688,
437 16416, 18336, 21384, 23688, 26416, 29296, 31704, 34008, 37888,
438 40576, 45352, 48936, 52752, 57336, 59256, 63776, 66592, 75376},
439 /* NPRB 105*/ {2984, 3880, 4776, 6200, 7480, 9144, 11064, 12960, 14688,
440 16416, 18336, 21384, 23688, 27376, 30576, 31704, 34008, 37888,
441 42368, 45352, 48936, 52752, 57336, 59256, 63776, 66592, 75376},
442 /* NPRB 106*/ {2984, 3880, 4776, 6200, 7480, 9528, 11064, 12960, 14688,
443 16992, 18336, 21384, 24496, 27376, 30576, 32856, 34008, 37888,
444 42368, 45352, 48936, 52752, 57336, 61664, 63776, 66592, 75376},
445 /* NPRB 107*/ {2984, 3880, 4776, 6200, 7736, 9528, 11064, 12960, 15264,
446 16992, 19080, 21384, 24496, 27376, 30576, 32856, 35160, 39232,
447 42368, 46888, 48936, 52752, 57336, 61664, 66592, 68808, 75376},
448 /* NPRB 108*/ {2984, 4008, 4776, 6200, 7736, 9528, 11448, 12960, 15264,
449 16992, 19080, 22152, 24496, 27376, 30576, 32856, 35160, 39232,
450 42368, 46888, 51024, 55056, 59256, 61664, 66592, 68808, 75376},
451 /* NPRB 109*/ {2984, 4008, 4968, 6456, 7736, 9528, 11448, 13536, 15264,
452 16992, 19080, 22152, 24496, 28336, 31704, 34008, 35160, 39232,
453 43816, 46888, 51024, 55056, 59256, 61664, 66592, 68808, 75376},
454 /* NPRB 110*/ {3112, 4008, 4968, 6456, 7992, 9528, 11448, 13536, 15264,
455 17568, 19080, 22152, 25456, 28336, 31704, 34008, 35160, 39232,
456 43816, 46888, 51024, 55056, 59256, 63776, 66592, 71112, 75376},
457};
458
460{
461}
462
464{
465}
466
467TypeId
469{
470 static TypeId tid =
471 TypeId("ns3::LteAmc")
472 .SetParent<Object>()
473 .SetGroupName("Lte")
474 .AddConstructor<LteAmc>()
475 .AddAttribute("Ber",
476 "The requested BER in assigning MCS (default is 0.00005).",
477 DoubleValue(0.00005),
479 MakeDoubleChecker<double>())
480 .AddAttribute(
481 "AmcModel",
482 "AMC model used to assign CQI",
484 MakeEnumAccessor<AmcModel>(&LteAmc::m_amcModel),
486 return tid;
487}
488
489int
491{
493 NS_ASSERT_MSG(s >= 0.0, "negative spectral efficiency = " << s);
494 int cqi = 0;
495 while ((cqi < 15) && (SpectralEfficiencyForCqi[cqi + 1] < s))
496 {
497 ++cqi;
498 }
499 NS_LOG_LOGIC("cqi = " << cqi);
500 return cqi;
501}
502
503int
505{
506 NS_LOG_FUNCTION(cqi);
507 NS_ASSERT_MSG(cqi >= 0 && cqi <= 15, "CQI must be in [0..15] = " << cqi);
508 double spectralEfficiency = SpectralEfficiencyForCqi[cqi];
509 int mcs = 0;
510 while ((mcs < 28) && (SpectralEfficiencyForMcs[mcs + 1] <= spectralEfficiency))
511 {
512 ++mcs;
513 }
514 NS_LOG_LOGIC("mcs = " << mcs);
515 return mcs;
516}
517
518int
520{
521 NS_LOG_FUNCTION(mcs);
522
523 NS_ASSERT_MSG(mcs < 29, "MCS=" << mcs);
524 NS_ASSERT_MSG(nprb > 0 && nprb < 111, "NPRB=" << nprb);
525
526 int itbs = McsToItbsDl[mcs];
527 return TransportBlockSizeTable[nprb - 1][itbs];
528}
529
530int
532{
533 NS_LOG_FUNCTION(mcs);
534
535 NS_ASSERT_MSG(mcs < 29, "MCS=" << mcs);
536 NS_ASSERT_MSG(nprb > 0 && nprb < 111, "NPRB=" << nprb);
537
538 int itbs = McsToItbsUl[mcs];
539 return TransportBlockSizeTable[nprb - 1][itbs];
540}
541
542double
544{
545 NS_LOG_FUNCTION(cqi);
546 NS_ASSERT_MSG(cqi >= 0 && cqi <= 15, "CQI must be in [0..15] = " << cqi);
547 NS_LOG_LOGIC("Spectral efficiency = " << SpectralEfficiencyForCqi[cqi]);
548 return SpectralEfficiencyForCqi[cqi];
549}
550
551std::vector<int>
552LteAmc::CreateCqiFeedbacks(const SpectrumValue& sinr, uint8_t rbgSize)
553{
554 NS_LOG_FUNCTION(this);
555
556 std::vector<int> cqi;
557
558 if (m_amcModel == PiroEW2010)
559 {
560 for (auto it = sinr.ConstValuesBegin(); it != sinr.ConstValuesEnd(); it++)
561 {
562 double sinr_ = (*it);
563 if (sinr_ == 0.0)
564 {
565 cqi.push_back(-1); // SINR == 0 (linear units) means no signal in this RB
566 }
567 else
568 {
569 /*
570 * Compute the spectral efficiency from the SINR
571 * SINR
572 * spectralEfficiency = log2 (1 + -------------------- )
573 * -ln(5*BER)/1.5
574 * NB: SINR must be expressed in linear units
575 */
576
577 double s = log2(1 + (sinr_ / ((-std::log(5.0 * m_ber)) / 1.5)));
578
579 int cqi_ = GetCqiFromSpectralEfficiency(s);
580
581 NS_LOG_LOGIC(" PRB =" << cqi.size() << ", sinr = " << sinr_
582 << " (=" << 10 * std::log10(sinr_) << " dB)"
583 << ", spectral efficiency =" << s << ", CQI = " << cqi_
584 << ", BER = " << m_ber);
585
586 cqi.push_back(cqi_);
587 }
588 }
589 }
590 else if (m_amcModel == MiErrorModel)
591 {
592 NS_LOG_DEBUG(this << " AMC-VIENNA RBG size " << (uint16_t)rbgSize);
593 NS_ASSERT_MSG(rbgSize > 0, " LteAmc-Vienna: RBG size must be greater than 0");
594 std::vector<int> rbgMap;
595 int rbId = 0;
596 for (auto it = sinr.ConstValuesBegin(); it != sinr.ConstValuesEnd(); it++)
597 {
598 rbgMap.push_back(rbId++);
599 if ((rbId % rbgSize == 0) || ((it + 1) == sinr.ConstValuesEnd()))
600 {
601 uint8_t mcs = 0;
602 TbStats_t tbStats;
603 while (mcs <= 28)
604 {
605 HarqProcessInfoList_t harqInfoList;
607 sinr,
608 rbgMap,
609 (uint16_t)GetDlTbSizeFromMcs(mcs, rbgSize) / 8,
610 mcs,
611 harqInfoList);
612 if (tbStats.tbler > 0.1)
613 {
614 break;
615 }
616 mcs++;
617 }
618 if (mcs > 0)
619 {
620 mcs--;
621 }
622 NS_LOG_DEBUG(this << "\t RBG " << rbId << " MCS " << (uint16_t)mcs << " TBLER "
623 << tbStats.tbler);
624 int rbgCqi = 0;
625 if ((tbStats.tbler > 0.1) && (mcs == 0))
626 {
627 rbgCqi = 0; // any MCS can guarantee the 10 % of BER
628 }
629 else if (mcs == 28)
630 {
631 rbgCqi = 15; // all MCSs can guarantee the 10 % of BER
632 }
633 else
634 {
635 double s = SpectralEfficiencyForMcs[mcs];
636 rbgCqi = 0;
637 while ((rbgCqi < 15) && (SpectralEfficiencyForCqi[rbgCqi + 1] < s))
638 {
639 ++rbgCqi;
640 }
641 }
642 NS_LOG_DEBUG(this << "\t MCS " << (uint16_t)mcs << "-> CQI " << rbgCqi);
643 // fill the cqi vector (per RB basis)
644 for (uint8_t j = 0; j < rbgSize; j++)
645 {
646 cqi.push_back(rbgCqi);
647 }
648 rbgMap.clear();
649 }
650 }
651 }
652
653 return cqi;
654}
655
656} // namespace ns3
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Definition: double.h:42
Hold variables of type enum.
Definition: enum.h:62
Implements the Adaptive Modulation And Coding Scheme.
Definition: lte-amc.h:42
int GetCqiFromSpectralEfficiency(double s)
Get a proper CQI for the spectral efficiency value.
Definition: lte-amc.cc:490
~LteAmc() override
Definition: lte-amc.cc:463
int GetDlTbSizeFromMcs(int mcs, int nprb)
Get the Transport Block Size for a selected MCS and number of PRB (table 7.1.7.2.1-1 of 36....
Definition: lte-amc.cc:519
@ MiErrorModel
An AMC model based on 10% of BER according to LteMiErrorModel.
Definition: lte-amc.h:67
@ PiroEW2010
Definition: lte-amc.h:63
int GetMcsFromCqi(int cqi)
Get the Modulation and Coding Scheme for a CQI value.
Definition: lte-amc.cc:504
std::vector< int > CreateCqiFeedbacks(const SpectrumValue &sinr, uint8_t rbgSize=0)
Create a message with CQI feedback.
Definition: lte-amc.cc:552
int GetUlTbSizeFromMcs(int mcs, int nprb)
Get the Transport Block Size for a selected MCS and number of PRB (table 8.6.1-1 of 36....
Definition: lte-amc.cc:531
double m_ber
The Ber attribute.
Definition: lte-amc.h:127
double GetSpectralEfficiencyFromCqi(int cqi)
Get the spectral efficiency value associated to the received CQI.
Definition: lte-amc.cc:543
AmcModel m_amcModel
The AmcModel attribute.
Definition: lte-amc.h:134
static TypeId GetTypeId()
Get the type ID.
Definition: lte-amc.cc:468
static TbStats_t GetTbDecodificationStats(const SpectrumValue &sinr, const std::vector< int > &map, uint16_t size, uint8_t mcs, HarqProcessInfoList_t miHistory)
run the error-model algorithm for the specified TB
A base class which provides memory management and object aggregation.
Definition: object.h:89
Set of values corresponding to a given SpectrumModel.
Values::const_iterator ConstValuesBegin() const
Values::const_iterator ConstValuesEnd() const
a unique identifier for an interface.
Definition: type-id.h:59
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition: type-id.cc:932
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
Definition: assert.h:86
Ptr< const AttributeAccessor > MakeDoubleAccessor(T1 a1)
Definition: double.h:43
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:202
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Definition: log.h:268
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
Definition: log.h:282
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition: object-base.h:46
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static const int TransportBlockSizeTable[110][27]
Table of number of physical resource blocks (NPRB), TBS index (ITBS), and their associated transport ...
Definition: lte-amc.cc:129
static const int McsToItbsUl[29]
Table of MCS index (IMCS) and its TBS index (ITBS).
Definition: lte-amc.cc:116
Ptr< const AttributeChecker > MakeEnumChecker(T v, std::string n, Ts... args)
Make an EnumChecker pre-configured with a set of allowed values by name.
Definition: enum.h:189
std::vector< HarqProcessInfoElement_t > HarqProcessInfoList_t
HarqProcessInfoList_t typedef.
Definition: lte-harq-phy.h:44
static const double SpectralEfficiencyForCqi[16]
Table of CQI index and its spectral efficiency.
Definition: lte-amc.cc:49
static const double SpectralEfficiencyForMcs[32]
Table of MCS index and its spectral efficiency.
Definition: lte-amc.cc:96
static const int McsToItbsDl[29]
Table of MCS index (IMCS) and its TBS index (ITBS).
Definition: lte-amc.cc:106
TbStats_t structure.
double tbler
Transport block BLER.