|
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 |
|