|
|
| 197 |
UintegerValue (1), |
197 |
UintegerValue (1), |
| 198 |
MakeUintegerAccessor (&LteHelper::m_noOfCcs), |
198 |
MakeUintegerAccessor (&LteHelper::m_noOfCcs), |
| 199 |
MakeUintegerChecker<uint16_t> (MIN_NO_CC, MAX_NO_CC)) |
199 |
MakeUintegerChecker<uint16_t> (MIN_NO_CC, MAX_NO_CC)) |
|
|
200 |
.AddAttribute ("UeUlCcBandwidth", |
| 201 |
"Uplink Transmission Bandwidth Configuration in number of Resource Blocks", |
| 202 |
UintegerValue (25), |
| 203 |
MakeUintegerAccessor (&LteHelper::m_ulCcBw), |
| 204 |
MakeUintegerChecker<uint8_t> ()) |
| 205 |
.AddAttribute ("UeDlCcBandwidth", |
| 206 |
"Downlink Transmission Bandwidth Configuration in number of Resource Blocks", |
| 207 |
UintegerValue (25), |
| 208 |
MakeUintegerAccessor (&LteHelper::m_dlCcBw), |
| 209 |
MakeUintegerChecker<uint8_t> ()) |
| 210 |
.AddAttribute ("UeUlCcEarfcn", |
| 211 |
"Uplink E-UTRA Absolute Radio Frequency Channel Number (EARFCN) " |
| 212 |
"as per 3GPP 36.101 Section 5.7.3. ", |
| 213 |
UintegerValue (18100), |
| 214 |
MakeUintegerAccessor (&LteHelper::m_ulCcEarfcn), |
| 215 |
MakeUintegerChecker<uint32_t> (0, 262143)) |
| 200 |
; |
216 |
; |
| 201 |
return tid; |
217 |
return tid; |
| 202 |
} |
218 |
} |
|
|
| 518 |
Ptr<LteEnbNetDevice> dev = m_enbNetDeviceFactory.Create<LteEnbNetDevice> (); |
534 |
Ptr<LteEnbNetDevice> dev = m_enbNetDeviceFactory.Create<LteEnbNetDevice> (); |
| 519 |
Ptr<LteHandoverAlgorithm> handoverAlgorithm = m_handoverAlgorithmFactory.Create<LteHandoverAlgorithm> (); |
535 |
Ptr<LteHandoverAlgorithm> handoverAlgorithm = m_handoverAlgorithmFactory.Create<LteHandoverAlgorithm> (); |
| 520 |
|
536 |
|
| 521 |
if (m_componentCarrierPhyParams.size() == 0) |
537 |
/* if (m_componentCarrierPhyParams.size() == 0) |
| 522 |
{ |
538 |
{ |
| 523 |
DoComponentCarrierConfigure (dev->GetUlEarfcn (), dev->GetDlEarfcn (), dev->GetUlBandwidth (), dev->GetDlBandwidth ()); |
539 |
DoComponentCarrierConfigure (dev->GetUlEarfcn (), dev->GetDlEarfcn (), dev->GetUlBandwidth (), dev->GetDlBandwidth ()); |
| 524 |
} |
540 |
}*/ |
|
|
541 |
|
| 542 |
Ptr<CcHelper> ccHelper = CreateObject<CcHelper> (); |
| 543 |
ccHelper->SetNumberOfComponentCarriers (m_noOfCcs); |
| 544 |
ccHelper->SetUlEarfcn (dev->GetUlEarfcn ()); |
| 545 |
ccHelper->SetDlEarfcn (dev->GetDlEarfcn ()); |
| 546 |
ccHelper->SetDlBandwidth (dev->GetUlBandwidth ()); |
| 547 |
ccHelper->SetUlBandwidth (dev->GetDlBandwidth ()); |
| 548 |
m_componentCarrierPhyParams = ccHelper->EquallySpacedCcs (); |
| 549 |
m_componentCarrierPhyParams.at(0).SetAsPrimary(true); |
| 525 |
|
550 |
|
| 526 |
NS_ASSERT_MSG(m_componentCarrierPhyParams.size()!=0, "Cannot create enb ccm map."); |
551 |
NS_ASSERT_MSG(m_componentCarrierPhyParams.size()!=0, "Cannot create enb ccm map."); |
| 527 |
// create component carrier map for this eNb device |
552 |
// create component carrier map for this eNb device |
|
|
| 756 |
rrc->SetEpcX2SapProvider (x2->GetEpcX2SapProvider ()); |
781 |
rrc->SetEpcX2SapProvider (x2->GetEpcX2SapProvider ()); |
| 757 |
} |
782 |
} |
| 758 |
|
783 |
|
|
|
784 |
m_componentCarrierPhyParams.clear(); |
| 785 |
|
| 759 |
return dev; |
786 |
return dev; |
| 760 |
} |
787 |
} |
| 761 |
|
788 |
|
|
|
| 764 |
{ |
791 |
{ |
| 765 |
NS_LOG_FUNCTION (this); |
792 |
NS_LOG_FUNCTION (this); |
| 766 |
|
793 |
|
| 767 |
NS_ABORT_MSG_IF (m_componentCarrierPhyParams.size() == 0 && m_useCa, "If CA is enabled, before call this method you need to install Enbs --> InstallEnbDevice()"); |
794 |
//NS_ABORT_MSG_IF (m_componentCarrierPhyParams.size() == 0 && m_useCa, "If CA is enabled, before call this method you need to install Enbs --> InstallEnbDevice()"); |
|
|
795 |
|
| 796 |
if(m_noOfCcs>1) |
| 797 |
{ |
| 798 |
NS_LOG_WARN("User should remember to set the attributes, UeUlCcBandwidth, UeDlCcBandwidth and UeUlCcEarfcn for UE's primary component carrier. Else default values will be used"); |
| 799 |
} |
| 768 |
|
800 |
|
| 769 |
Ptr<LteUeNetDevice> dev = m_ueNetDeviceFactory.Create<LteUeNetDevice> (); |
801 |
Ptr<LteUeNetDevice> dev = m_ueNetDeviceFactory.Create<LteUeNetDevice> (); |
| 770 |
std::map<uint8_t, Ptr<ComponentCarrierUe> > ueCcMap; |
802 |
std::map<uint8_t, Ptr<ComponentCarrierUe> > ueCcMap; |
| 771 |
|
803 |
|
|
|
804 |
Ptr<CcHelper> ccHelper = CreateObject<CcHelper> (); |
| 805 |
ccHelper->SetNumberOfComponentCarriers (m_noOfCcs); |
| 806 |
ccHelper->SetUlEarfcn (m_ulCcEarfcn); |
| 807 |
ccHelper->SetDlEarfcn (dev->GetDlEarfcn ()); |
| 808 |
ccHelper->SetDlBandwidth (m_ulCcBw); |
| 809 |
ccHelper->SetUlBandwidth (m_dlCcBw); |
| 810 |
m_componentCarrierPhyParams = ccHelper->EquallySpacedCcs (); |
| 811 |
m_componentCarrierPhyParams.at(0).SetAsPrimary(true); |
| 812 |
|
| 772 |
for (std::map< uint8_t, ComponentCarrier >::iterator it = m_componentCarrierPhyParams.begin() ; it != m_componentCarrierPhyParams.end(); ++it) |
813 |
for (std::map< uint8_t, ComponentCarrier >::iterator it = m_componentCarrierPhyParams.begin() ; it != m_componentCarrierPhyParams.end(); ++it) |
| 773 |
{ |
814 |
{ |
| 774 |
Ptr <ComponentCarrierUe> cc = CreateObject<ComponentCarrierUe> (); |
815 |
Ptr <ComponentCarrierUe> cc = CreateObject<ComponentCarrierUe> (); |
|
|
| 935 |
|
976 |
|
| 936 |
dev->Initialize (); |
977 |
dev->Initialize (); |
| 937 |
|
978 |
|
|
|
979 |
m_componentCarrierPhyParams.clear(); |
| 980 |
ueCcMap.clear(); |
| 938 |
return dev; |
981 |
return dev; |
| 939 |
} |
982 |
} |
| 940 |
|
983 |
|