|
|
| 248 |
.AddAttribute ("TxAntennas", |
248 |
.AddAttribute ("TxAntennas", |
| 249 |
"The number of supported Tx antennas.", |
249 |
"The number of supported Tx antennas.", |
| 250 |
UintegerValue (1), |
250 |
UintegerValue (1), |
| 251 |
MakeUintegerAccessor (&WifiPhy::GetNumberOfTransmitAntennas, |
251 |
MakeUintegerAccessor (&WifiPhy::m_numberOfTransmitters), |
| 252 |
&WifiPhy::SetNumberOfTransmitAntennas), |
252 |
MakeUintegerChecker<uint32_t> (), |
| 253 |
MakeUintegerChecker<uint32_t> ()) |
253 |
TypeId::DEPRECATED, |
|
|
254 |
"Not used anymore.") |
| 254 |
.AddAttribute ("RxAntennas", |
255 |
.AddAttribute ("RxAntennas", |
| 255 |
"The number of supported Rx antennas.", |
256 |
"The number of supported Rx antennas.", |
| 256 |
UintegerValue (1), |
257 |
UintegerValue (1), |
| 257 |
MakeUintegerAccessor (&WifiPhy::GetNumberOfReceiveAntennas, |
258 |
MakeUintegerAccessor (&WifiPhy::m_numberOfReceivers), |
| 258 |
&WifiPhy::SetNumberOfReceiveAntennas), |
259 |
MakeUintegerChecker<uint32_t> (), |
|
|
260 |
TypeId::DEPRECATED, |
| 261 |
"Not used anymore.") |
| 262 |
.AddAttribute ("Antennas", |
| 263 |
"The number of antennas on the device.", |
| 264 |
UintegerValue (1), |
| 265 |
MakeUintegerAccessor (&WifiPhy::GetNumberOfAntennas, |
| 266 |
&WifiPhy::SetNumberOfAntennas), |
| 259 |
MakeUintegerChecker<uint32_t> ()) |
267 |
MakeUintegerChecker<uint32_t> ()) |
|
|
268 |
.AddAttribute ("MaxSupportedTxSpatialStreams", |
| 269 |
"The maximum number of supported TX spatial streams." |
| 270 |
"This parameter is only valuable for 802.11n/ac STAs and APs.", |
| 271 |
UintegerValue (1), |
| 272 |
MakeUintegerAccessor (&WifiPhy::GetMaxSupportedTxSpatialStreams, |
| 273 |
&WifiPhy::SetMaxSupportedTxSpatialStreams), |
| 274 |
MakeUintegerChecker<uint8_t> ()) |
| 275 |
.AddAttribute ("MaxSupportedRxSpatialStreams", |
| 276 |
"The maximum number of supported RX spatial streams." |
| 277 |
"This parameter is only valuable for 802.11n/ac STAs and APs.", |
| 278 |
UintegerValue (1), |
| 279 |
MakeUintegerAccessor (&WifiPhy::GetMaxSupportedRxSpatialStreams, |
| 280 |
&WifiPhy::SetMaxSupportedRxSpatialStreams), |
| 281 |
MakeUintegerChecker<uint8_t> ()) |
| 260 |
.AddAttribute ("ShortGuardEnabled", |
282 |
.AddAttribute ("ShortGuardEnabled", |
| 261 |
"Whether or not short guard interval is enabled." |
283 |
"Whether or not short guard interval is enabled." |
| 262 |
"This parameter is only valuable for 802.11n/ac STAs and APs.", |
284 |
"This parameter is only valuable for 802.11n/ac STAs and APs.", |
|
|
| 358 |
m_totalAmpduNumSymbols (0) |
380 |
m_totalAmpduNumSymbols (0) |
| 359 |
{ |
381 |
{ |
| 360 |
NS_LOG_FUNCTION (this); |
382 |
NS_LOG_FUNCTION (this); |
|
|
383 |
NS_UNUSED (m_numberOfTransmitters); |
| 384 |
NS_UNUSED (m_numberOfReceivers); |
| 361 |
m_random = CreateObject<UniformRandomVariable> (); |
385 |
m_random = CreateObject<UniformRandomVariable> (); |
| 362 |
m_state = CreateObject<WifiPhyStateHelper> (); |
386 |
m_state = CreateObject<WifiPhyStateHelper> (); |
| 363 |
} |
387 |
} |
|
|
| 456 |
{ |
480 |
{ |
| 457 |
NS_LOG_FUNCTION (this << noiseFigureDb); |
481 |
NS_LOG_FUNCTION (this << noiseFigureDb); |
| 458 |
m_interference.SetNoiseFigure (DbToRatio (noiseFigureDb)); |
482 |
m_interference.SetNoiseFigure (DbToRatio (noiseFigureDb)); |
|
|
483 |
m_interference.SetNumberOfReceiveAntennas (GetNumberOfAntennas ()); |
| 459 |
} |
484 |
} |
| 460 |
|
485 |
|
| 461 |
double |
486 |
double |
|
|
| 629 |
WifiPhy::SetErrorRateModel (Ptr<ErrorRateModel> rate) |
654 |
WifiPhy::SetErrorRateModel (Ptr<ErrorRateModel> rate) |
| 630 |
{ |
655 |
{ |
| 631 |
m_interference.SetErrorRateModel (rate); |
656 |
m_interference.SetErrorRateModel (rate); |
|
|
657 |
m_interference.SetNumberOfReceiveAntennas (GetNumberOfAntennas ()); |
| 632 |
} |
658 |
} |
| 633 |
|
659 |
|
| 634 |
Ptr<ErrorRateModel> |
660 |
Ptr<ErrorRateModel> |
|
|
| 853 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs5 ()); |
879 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs5 ()); |
| 854 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs6 ()); |
880 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs6 ()); |
| 855 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs7 ()); |
881 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs7 ()); |
| 856 |
if (GetSupportedTxSpatialStreams () > 1) |
882 |
if (GetMaxSupportedTxSpatialStreams () > 1) |
| 857 |
{ |
883 |
{ |
| 858 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs8 ()); |
884 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs8 ()); |
| 859 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs9 ()); |
885 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs9 ()); |
|
|
| 864 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs14 ()); |
890 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs14 ()); |
| 865 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs15 ()); |
891 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs15 ()); |
| 866 |
} |
892 |
} |
| 867 |
if (GetSupportedTxSpatialStreams () > 2) |
893 |
if (GetMaxSupportedTxSpatialStreams () > 2) |
| 868 |
{ |
894 |
{ |
| 869 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs16 ()); |
895 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs16 ()); |
| 870 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs17 ()); |
896 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs17 ()); |
|
|
| 875 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs22 ()); |
901 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs22 ()); |
| 876 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs23 ()); |
902 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs23 ()); |
| 877 |
} |
903 |
} |
| 878 |
if (GetSupportedTxSpatialStreams () > 3) |
904 |
if (GetMaxSupportedTxSpatialStreams () > 3) |
| 879 |
{ |
905 |
{ |
| 880 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs24 ()); |
906 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs24 ()); |
| 881 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs25 ()); |
907 |
m_deviceMcsSet.push_back (WifiPhy::GetHtMcs25 ()); |
|
|
| 1160 |
} |
1186 |
} |
| 1161 |
|
1187 |
|
| 1162 |
void |
1188 |
void |
| 1163 |
WifiPhy::SetNumberOfTransmitAntennas (uint32_t tx) |
1189 |
WifiPhy::SetNumberOfAntennas (uint8_t antennas) |
| 1164 |
{ |
1190 |
{ |
| 1165 |
m_numberOfTransmitters = tx; |
1191 |
NS_ASSERT_MSG (antennas > 0 && antennas <= 4, "unsupported number of antennas"); |
| 1166 |
ConfigureHtDeviceMcsSet (); |
1192 |
m_numberOfAntennas = antennas; |
|
|
1193 |
m_interference.SetNumberOfReceiveAntennas (antennas); |
| 1194 |
} |
| 1195 |
|
| 1196 |
uint8_t |
| 1197 |
WifiPhy::GetNumberOfAntennas (void) const |
| 1198 |
{ |
| 1199 |
return m_numberOfAntennas; |
| 1167 |
} |
1200 |
} |
| 1168 |
|
1201 |
|
| 1169 |
void |
1202 |
void |
| 1170 |
WifiPhy::SetNumberOfReceiveAntennas (uint32_t rx) |
1203 |
WifiPhy::SetMaxSupportedTxSpatialStreams (uint8_t streams) |
| 1171 |
{ |
1204 |
{ |
| 1172 |
m_numberOfReceivers = rx; |
1205 |
NS_ASSERT (streams <= GetNumberOfAntennas ()); |
| 1173 |
} |
1206 |
m_txSpatialStreams = streams; |
| 1174 |
|
1207 |
ConfigureHtDeviceMcsSet (); |
| 1175 |
uint32_t |
|
|
| 1176 |
WifiPhy::GetNumberOfTransmitAntennas (void) const |
| 1177 |
{ |
| 1178 |
return m_numberOfTransmitters; |
| 1179 |
} |
| 1180 |
|
| 1181 |
uint32_t |
| 1182 |
WifiPhy::GetNumberOfReceiveAntennas (void) const |
| 1183 |
{ |
| 1184 |
return m_numberOfReceivers; |
| 1185 |
} |
1208 |
} |
| 1186 |
|
1209 |
|
| 1187 |
uint8_t |
1210 |
uint8_t |
| 1188 |
WifiPhy::GetSupportedRxSpatialStreams (void) const |
1211 |
WifiPhy::GetMaxSupportedTxSpatialStreams (void) const |
| 1189 |
{ |
1212 |
{ |
| 1190 |
return (static_cast<uint8_t> (GetNumberOfReceiveAntennas ())); |
1213 |
return m_txSpatialStreams; |
|
|
1214 |
} |
| 1215 |
|
| 1216 |
void |
| 1217 |
WifiPhy::SetMaxSupportedRxSpatialStreams (uint8_t streams) |
| 1218 |
{ |
| 1219 |
NS_ASSERT (streams <= GetNumberOfAntennas ()); |
| 1220 |
m_rxSpatialStreams = streams; |
| 1191 |
} |
1221 |
} |
| 1192 |
|
1222 |
|
| 1193 |
uint8_t |
1223 |
uint8_t |
| 1194 |
WifiPhy::GetSupportedTxSpatialStreams (void) const |
1224 |
WifiPhy::GetMaxSupportedRxSpatialStreams (void) const |
| 1195 |
{ |
1225 |
{ |
| 1196 |
return (static_cast<uint8_t> (GetNumberOfTransmitAntennas ())); |
1226 |
return m_rxSpatialStreams; |
| 1197 |
} |
1227 |
} |
| 1198 |
|
1228 |
|
| 1199 |
uint32_t |
1229 |
uint32_t |