|
|
| 54 |
cmd.Parse (argc,argv); |
54 |
cmd.Parse (argc,argv); |
| 55 |
|
55 |
|
| 56 |
std::cout << "DataRate" << "\t" << "Throughput" << '\n'; |
56 |
std::cout << "DataRate" << "\t" << "Throughput" << '\n'; |
| 57 |
for (int mcs = 0; mcs <= 31; mcs++) |
57 |
for (int i = 0; i <= 31; i++) |
| 58 |
{ |
58 |
{ |
| 59 |
uint32_t payloadSize; //1500 byte IP packet |
59 |
uint32_t payloadSize; //1500 byte IP packet |
| 60 |
if (udp) |
60 |
if (udp) |
|
|
| 76 |
YansWifiPhyHelper phy = YansWifiPhyHelper::Default (); |
76 |
YansWifiPhyHelper phy = YansWifiPhyHelper::Default (); |
| 77 |
phy.SetChannel (channel.Create ()); |
77 |
phy.SetChannel (channel.Create ()); |
| 78 |
|
78 |
|
| 79 |
if (mcs <= 7) |
79 |
if (i <= 7) |
| 80 |
{ |
80 |
{ |
| 81 |
phy.Set ("ShortGuardEnabled", BooleanValue (false)); |
81 |
phy.Set ("ShortGuardEnabled", BooleanValue (false)); |
| 82 |
phy.Set ("ChannelBonding", BooleanValue (false)); |
82 |
phy.Set ("ChannelBonding", BooleanValue (false)); |
| 83 |
} |
83 |
} |
| 84 |
else if (mcs > 7 && mcs <= 15) |
84 |
else if (i > 7 && i <= 15) |
| 85 |
{ |
85 |
{ |
| 86 |
phy.Set ("ShortGuardEnabled", BooleanValue (true)); |
86 |
phy.Set ("ShortGuardEnabled", BooleanValue (true)); |
| 87 |
phy.Set ("ChannelBonding", BooleanValue (false)); |
87 |
phy.Set ("ChannelBonding", BooleanValue (false)); |
| 88 |
} |
88 |
} |
| 89 |
else if (mcs > 15 && mcs <= 23) |
89 |
else if (i > 15 && i <= 23) |
| 90 |
{ |
90 |
{ |
| 91 |
phy.Set ("ShortGuardEnabled", BooleanValue (false)); |
91 |
phy.Set ("ShortGuardEnabled", BooleanValue (false)); |
| 92 |
phy.Set ("ChannelBonding", BooleanValue (true)); |
92 |
phy.Set ("ChannelBonding", BooleanValue (true)); |
|
|
| 105 |
|
105 |
|
| 106 |
double datarate = 0; |
106 |
double datarate = 0; |
| 107 |
StringValue DataRate; |
107 |
StringValue DataRate; |
| 108 |
if (mcs == 0) |
108 |
if (i == 0) |
| 109 |
{ |
109 |
{ |
| 110 |
DataRate = StringValue ("OfdmRate6_5MbpsBW20MHz"); |
110 |
DataRate = StringValue ("OfdmRate6_5MbpsBW20MHz"); |
| 111 |
datarate = 6.5; |
111 |
datarate = 6.5; |
| 112 |
} |
112 |
} |
| 113 |
else if (mcs == 1) |
113 |
else if (i == 1) |
| 114 |
{ |
114 |
{ |
| 115 |
DataRate = StringValue ("OfdmRate13MbpsBW20MHz"); |
115 |
DataRate = StringValue ("OfdmRate13MbpsBW20MHz"); |
| 116 |
datarate = 13; |
116 |
datarate = 13; |
| 117 |
} |
117 |
} |
| 118 |
else if (mcs == 2) |
118 |
else if (i == 2) |
| 119 |
{ |
119 |
{ |
| 120 |
DataRate = StringValue ("OfdmRate19_5MbpsBW20MHz"); |
120 |
DataRate = StringValue ("OfdmRate19_5MbpsBW20MHz"); |
| 121 |
datarate = 19.5; |
121 |
datarate = 19.5; |
| 122 |
} |
122 |
} |
| 123 |
else if (mcs == 3) |
123 |
else if (i == 3) |
| 124 |
{ |
124 |
{ |
| 125 |
DataRate = StringValue ("OfdmRate26MbpsBW20MHz"); |
125 |
DataRate = StringValue ("OfdmRate26MbpsBW20MHz"); |
| 126 |
datarate = 26; |
126 |
datarate = 26; |
| 127 |
} |
127 |
} |
| 128 |
else if (mcs == 4) |
128 |
else if (i == 4) |
| 129 |
{ |
129 |
{ |
| 130 |
DataRate = StringValue ("OfdmRate39MbpsBW20MHz"); |
130 |
DataRate = StringValue ("OfdmRate39MbpsBW20MHz"); |
| 131 |
datarate = 39; |
131 |
datarate = 39; |
| 132 |
} |
132 |
} |
| 133 |
else if (mcs == 5) |
133 |
else if (i == 5) |
| 134 |
{ |
134 |
{ |
| 135 |
DataRate = StringValue ("OfdmRate52MbpsBW20MHz"); |
135 |
DataRate = StringValue ("OfdmRate52MbpsBW20MHz"); |
| 136 |
datarate = 52; |
136 |
datarate = 52; |
| 137 |
} |
137 |
} |
| 138 |
else if (mcs == 6) |
138 |
else if (i == 6) |
| 139 |
{ |
139 |
{ |
| 140 |
DataRate = StringValue ("OfdmRate58_5MbpsBW20MHz"); |
140 |
DataRate = StringValue ("OfdmRate58_5MbpsBW20MHz"); |
| 141 |
datarate = 58.5; |
141 |
datarate = 58.5; |
| 142 |
} |
142 |
} |
| 143 |
else if (mcs == 7) |
143 |
else if (i == 7) |
| 144 |
{ |
144 |
{ |
| 145 |
DataRate = StringValue ("OfdmRate65MbpsBW20MHz"); |
145 |
DataRate = StringValue ("OfdmRate65MbpsBW20MHz"); |
| 146 |
datarate = 65; |
146 |
datarate = 65; |
| 147 |
} |
147 |
} |
| 148 |
else if (mcs == 8) |
148 |
else if (i == 8) |
| 149 |
{ |
149 |
{ |
| 150 |
DataRate = StringValue ("OfdmRate7_2MbpsBW20MHz"); |
150 |
DataRate = StringValue ("OfdmRate7_2MbpsBW20MHz"); |
| 151 |
datarate = 7.2; |
151 |
datarate = 7.2; |
| 152 |
} |
152 |
} |
| 153 |
else if (mcs == 9) |
153 |
else if (i == 9) |
| 154 |
{ |
154 |
{ |
| 155 |
DataRate = StringValue ("OfdmRate14_4MbpsBW20MHz"); |
155 |
DataRate = StringValue ("OfdmRate14_4MbpsBW20MHz"); |
| 156 |
datarate = 14.4; |
156 |
datarate = 14.4; |
| 157 |
} |
157 |
} |
| 158 |
else if (mcs == 10) |
158 |
else if (i == 10) |
| 159 |
{ |
159 |
{ |
| 160 |
DataRate = StringValue ("OfdmRate21_7MbpsBW20MHz"); |
160 |
DataRate = StringValue ("OfdmRate21_7MbpsBW20MHz"); |
| 161 |
datarate = 21.7; |
161 |
datarate = 21.7; |
| 162 |
} |
162 |
} |
| 163 |
else if (mcs == 11) |
163 |
else if (i == 11) |
| 164 |
{ |
164 |
{ |
| 165 |
DataRate = StringValue ("OfdmRate28_9MbpsBW20MHz"); |
165 |
DataRate = StringValue ("OfdmRate28_9MbpsBW20MHz"); |
| 166 |
datarate = 28.9; |
166 |
datarate = 28.9; |
| 167 |
} |
167 |
} |
| 168 |
else if (mcs == 12) |
168 |
else if (i == 12) |
| 169 |
{ |
169 |
{ |
| 170 |
DataRate = StringValue ("OfdmRate43_3MbpsBW20MHz"); |
170 |
DataRate = StringValue ("OfdmRate43_3MbpsBW20MHz"); |
| 171 |
datarate = 43.3; |
171 |
datarate = 43.3; |
| 172 |
} |
172 |
} |
| 173 |
else if (mcs == 13) |
173 |
else if (i == 13) |
| 174 |
{ |
174 |
{ |
| 175 |
DataRate = StringValue ("OfdmRate57_8MbpsBW20MHz"); |
175 |
DataRate = StringValue ("OfdmRate57_8MbpsBW20MHz"); |
| 176 |
datarate = 57.8; |
176 |
datarate = 57.8; |
| 177 |
} |
177 |
} |
| 178 |
else if (mcs == 14) |
178 |
else if (i == 14) |
| 179 |
{ |
179 |
{ |
| 180 |
DataRate = StringValue ("OfdmRate65MbpsBW20MHzShGi"); |
180 |
DataRate = StringValue ("OfdmRate65MbpsBW20MHzShGi"); |
| 181 |
datarate = 65; |
181 |
datarate = 65; |
| 182 |
} |
182 |
} |
| 183 |
else if (mcs == 15) |
183 |
else if (i == 15) |
| 184 |
{ |
184 |
{ |
| 185 |
DataRate = StringValue ("OfdmRate72_2MbpsBW20MHz"); |
185 |
DataRate = StringValue ("OfdmRate72_2MbpsBW20MHz"); |
| 186 |
datarate = 72.2; |
186 |
datarate = 72.2; |
| 187 |
} |
187 |
} |
| 188 |
else if (mcs == 16) |
188 |
else if (i == 16) |
| 189 |
{ |
189 |
{ |
| 190 |
DataRate = StringValue ("OfdmRate13_5MbpsBW40MHz"); |
190 |
DataRate = StringValue ("OfdmRate13_5MbpsBW40MHz"); |
| 191 |
datarate = 13.5; |
191 |
datarate = 13.5; |
| 192 |
} |
192 |
} |
| 193 |
else if (mcs == 17) |
193 |
else if (i == 17) |
| 194 |
{ |
194 |
{ |
| 195 |
DataRate = StringValue ("OfdmRate27MbpsBW40MHz"); |
195 |
DataRate = StringValue ("OfdmRate27MbpsBW40MHz"); |
| 196 |
datarate = 27; |
196 |
datarate = 27; |
| 197 |
} |
197 |
} |
| 198 |
else if (mcs == 18) |
198 |
else if (i == 18) |
| 199 |
{ |
199 |
{ |
| 200 |
DataRate = StringValue ("OfdmRate40_5MbpsBW40MHz"); |
200 |
DataRate = StringValue ("OfdmRate40_5MbpsBW40MHz"); |
| 201 |
datarate = 40.5; |
201 |
datarate = 40.5; |
| 202 |
} |
202 |
} |
| 203 |
else if (mcs == 19) |
203 |
else if (i == 19) |
| 204 |
{ |
204 |
{ |
| 205 |
DataRate = StringValue ("OfdmRate54MbpsBW40MHz"); |
205 |
DataRate = StringValue ("OfdmRate54MbpsBW40MHz"); |
| 206 |
datarate = 54; |
206 |
datarate = 54; |
| 207 |
} |
207 |
} |
| 208 |
else if (mcs == 20) |
208 |
else if (i == 20) |
| 209 |
{ |
209 |
{ |
| 210 |
DataRate = StringValue ("OfdmRate81MbpsBW40MHz"); |
210 |
DataRate = StringValue ("OfdmRate81MbpsBW40MHz"); |
| 211 |
datarate = 81; |
211 |
datarate = 81; |
| 212 |
} |
212 |
} |
| 213 |
else if (mcs == 21) |
213 |
else if (i == 21) |
| 214 |
{ |
214 |
{ |
| 215 |
DataRate = StringValue ("OfdmRate108MbpsBW40MHz"); |
215 |
DataRate = StringValue ("OfdmRate108MbpsBW40MHz"); |
| 216 |
datarate = 108; |
216 |
datarate = 108; |
| 217 |
} |
217 |
} |
| 218 |
else if (mcs == 22) |
218 |
else if (i == 22) |
| 219 |
{ |
219 |
{ |
| 220 |
DataRate = StringValue ("OfdmRate121_5MbpsBW40MHz"); |
220 |
DataRate = StringValue ("OfdmRate121_5MbpsBW40MHz"); |
| 221 |
datarate = 121.5; |
221 |
datarate = 121.5; |
| 222 |
} |
222 |
} |
| 223 |
else if (mcs == 23) |
223 |
else if (i == 23) |
| 224 |
{ |
224 |
{ |
| 225 |
DataRate = StringValue ("OfdmRate135MbpsBW40MHz"); |
225 |
DataRate = StringValue ("OfdmRate135MbpsBW40MHz"); |
| 226 |
datarate = 135; |
226 |
datarate = 135; |
| 227 |
} |
227 |
} |
| 228 |
else if (mcs == 24) |
228 |
else if (i == 24) |
| 229 |
{ |
229 |
{ |
| 230 |
DataRate = StringValue ("OfdmRate15MbpsBW40MHz"); |
230 |
DataRate = StringValue ("OfdmRate15MbpsBW40MHz"); |
| 231 |
datarate = 15; |
231 |
datarate = 15; |
| 232 |
} |
232 |
} |
| 233 |
else if (mcs == 25) |
233 |
else if (i == 25) |
| 234 |
{ |
234 |
{ |
| 235 |
DataRate = StringValue ("OfdmRate30MbpsBW40MHz"); |
235 |
DataRate = StringValue ("OfdmRate30MbpsBW40MHz"); |
| 236 |
datarate = 30; |
236 |
datarate = 30; |
| 237 |
} |
237 |
} |
| 238 |
else if (mcs == 26) |
238 |
else if (i == 26) |
| 239 |
{ |
239 |
{ |
| 240 |
DataRate = StringValue ("OfdmRate45MbpsBW40MHz"); |
240 |
DataRate = StringValue ("OfdmRate45MbpsBW40MHz"); |
| 241 |
datarate = 45; |
241 |
datarate = 45; |
| 242 |
} |
242 |
} |
| 243 |
else if (mcs == 27) |
243 |
else if (i == 27) |
| 244 |
{ |
244 |
{ |
| 245 |
DataRate = StringValue ("OfdmRate60MbpsBW40MHz"); |
245 |
DataRate = StringValue ("OfdmRate60MbpsBW40MHz"); |
| 246 |
datarate = 60; |
246 |
datarate = 60; |
| 247 |
} |
247 |
} |
| 248 |
else if (mcs == 28) |
248 |
else if (i == 28) |
| 249 |
{ |
249 |
{ |
| 250 |
DataRate = StringValue ("OfdmRate90MbpsBW40MHz"); |
250 |
DataRate = StringValue ("OfdmRate90MbpsBW40MHz"); |
| 251 |
datarate = 90; |
251 |
datarate = 90; |
| 252 |
} |
252 |
} |
| 253 |
else if (mcs == 29) |
253 |
else if (i == 29) |
| 254 |
{ |
254 |
{ |
| 255 |
DataRate = StringValue ("OfdmRate120MbpsBW40MHz"); |
255 |
DataRate = StringValue ("OfdmRate120MbpsBW40MHz"); |
| 256 |
datarate = 120; |
256 |
datarate = 120; |
| 257 |
} |
257 |
} |
| 258 |
else if (mcs == 30) |
258 |
else if (i == 30) |
| 259 |
{ |
259 |
{ |
| 260 |
DataRate = StringValue ("OfdmRate135MbpsBW40MHzShGi"); |
260 |
DataRate = StringValue ("OfdmRate135MbpsBW40MHzShGi"); |
| 261 |
datarate = 135; |
261 |
datarate = 135; |