188 return pms; |
188 return pms; |
189 } |
189 } |
190 double |
190 double |
191 NistErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbits) const |
191 NistErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbits) const |
192 { |
192 { |
193 if (mode == WifiPhy::Get6mba () || mode == WifiPhy::Get3mb10Mhz () || mode == WifiPhy::Get1_5mb5Mhz ()) |
193 if (mode.GetModulationClass () == WIFI_MOD_CLASS_OFDM) |
194 { |
194 { |
195 return GetFecBpskBer (snr, |
195 if (mode.GetConstellationSize () == 2) |
196 nbits, |
196 { |
197 1 // b value |
197 if (mode.GetCodeRate () == WIFI_CODE_RATE_1_2) |
198 ); |
198 { |
199 } |
199 return GetFecBpskBer (snr, |
200 else if (mode == WifiPhy::Get9mba () || mode == WifiPhy::Get4_5mb10Mhz () || mode == WifiPhy::Get2_25mb5Mhz ()) |
200 nbits, |
201 { |
201 1 // b value |
202 return GetFecBpskBer (snr, |
202 ); |
203 nbits, |
203 } |
204 3 // b value |
204 else |
205 ); |
205 { |
206 } |
206 return GetFecBpskBer (snr, |
207 else if (mode == WifiPhy::Get12mba () || mode == WifiPhy::Get6mb10Mhz () || mode == WifiPhy::Get3mb5Mhz ()) |
207 nbits, |
208 { |
208 3 // b value |
209 return GetFecQpskBer (snr, |
209 ); |
210 nbits, |
210 } |
211 1 // b value |
211 } |
212 ); |
212 else if (mode.GetConstellationSize () == 4) |
213 } |
213 { |
214 else if (mode == WifiPhy::Get18mba () || mode == WifiPhy::Get9mb10Mhz () || mode == WifiPhy::Get4_5mb5Mhz ()) |
214 if (mode.GetCodeRate () == WIFI_CODE_RATE_1_2) |
215 { |
215 { |
216 return GetFecQpskBer (snr, |
216 return GetFecQpskBer (snr, |
217 nbits, |
217 nbits, |
218 3 // b value |
218 1 // b value |
219 ); |
219 ); |
220 } |
220 } |
221 else if (mode == WifiPhy::Get24mba () || mode == WifiPhy::Get12mb10Mhz () || mode == WifiPhy::Get6mb5Mhz ()) |
221 else |
222 { |
222 { |
223 return GetFec16QamBer (snr, |
223 return GetFecQpskBer (snr, |
224 nbits, |
224 nbits, |
225 1 // b value |
225 3 // b value |
226 ); |
226 ); |
227 } |
227 } |
228 else if (mode == WifiPhy::Get36mba () || mode == WifiPhy::Get18mb10Mhz () || mode == WifiPhy::Get9mb5Mhz ()) |
228 } |
229 { |
229 else if (mode.GetConstellationSize () == 16) |
230 return GetFec16QamBer (snr, |
230 { |
231 nbits, |
231 if (mode.GetCodeRate () == WIFI_CODE_RATE_1_2) |
232 3 // b value |
232 { |
233 ); |
233 return GetFec16QamBer (snr, |
234 } |
234 nbits, |
235 else if (mode == WifiPhy::Get48mba () || mode == WifiPhy::Get24mb10Mhz () || mode == WifiPhy::Get12mb5Mhz ()) |
235 1 // b value |
236 { |
236 ); |
237 return GetFec64QamBer (snr, |
237 } |
238 nbits, |
238 else |
239 2 // b value |
239 { |
240 ); |
240 return GetFec16QamBer (snr, |
241 } |
241 nbits, |
242 else if (mode == WifiPhy::Get54mba () || mode == WifiPhy::Get27mb10Mhz () || mode == WifiPhy::Get13_5mb5Mhz ()) |
242 3 // b value |
243 { |
243 ); |
244 return GetFec64QamBer (snr, |
244 } |
245 nbits, |
245 } |
246 3 // b value |
246 else if (mode.GetConstellationSize () == 64) |
247 ); |
247 { |
248 } |
248 if (mode.GetCodeRate () == WIFI_CODE_RATE_2_3) |
249 else if (mode == WifiPhy::Get1mbb ()) |
249 { |
250 { |
250 return GetFec64QamBer (snr, |
251 return DsssErrorRateModel::GetDsssDbpskSuccessRate (snr,nbits); |
251 nbits, |
252 } |
252 2 // b value |
253 else if (mode == WifiPhy::Get2mbb ()) |
253 ); |
254 { |
254 } |
255 return DsssErrorRateModel::GetDsssDqpskSuccessRate (snr,nbits); |
255 else |
256 } |
256 { |
257 else if (mode == WifiPhy::Get5_5mbb ()) |
257 return GetFec64QamBer (snr, |
258 { |
258 nbits, |
259 return DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (snr,nbits); |
259 3 // b value |
260 } |
260 ); |
261 else if (mode == WifiPhy::Get11mbb ()) |
261 } |
262 { |
262 } |
263 return DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (snr,nbits); |
263 } |
|
264 else if (mode.GetModulationClass () == WIFI_MOD_CLASS_DSSS) |
|
265 { |
|
266 switch (mode.GetDataRate ()) |
|
267 { |
|
268 case 1000000: |
|
269 return DsssErrorRateModel::GetDsssDbpskSuccessRate (snr, nbits); |
|
270 case 2000000: |
|
271 return DsssErrorRateModel::GetDsssDqpskSuccessRate (snr, nbits); |
|
272 case 5500000: |
|
273 return DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (snr, nbits); |
|
274 case 11000000: |
|
275 return DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (snr, nbits); |
|
276 } |
264 } |
277 } |
265 return 0; |
278 return 0; |
266 } |
279 } |
267 |
280 |
268 } // namespace ns3 |
281 } // namespace ns3 |