lte: implement RRC CA message structure generation, serialization and deserialization
This commit is contained in:
@@ -6796,10 +6796,14 @@ def register_Ns3LteRrcSapMeasResults_methods(root_module, cls):
|
||||
cls.add_constructor([param('ns3::LteRrcSap::MeasResults const &', 'arg0')])
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::haveMeasResultNeighCells [variable]
|
||||
cls.add_instance_attribute('haveMeasResultNeighCells', 'bool', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::haveScellsMeas [variable]
|
||||
cls.add_instance_attribute('haveScellsMeas', 'bool', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::measId [variable]
|
||||
cls.add_instance_attribute('measId', 'uint8_t', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::measResultListEutra [variable]
|
||||
cls.add_instance_attribute('measResultListEutra', 'std::list< ns3::LteRrcSap::MeasResultEutra >', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::measScellResultList [variable]
|
||||
cls.add_instance_attribute('measScellResultList', 'ns3::LteRrcSap::MeasResultServFreqList', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::rsrpResult [variable]
|
||||
cls.add_instance_attribute('rsrpResult', 'uint8_t', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::rsrqResult [variable]
|
||||
@@ -12924,6 +12928,11 @@ def register_Ns3Asn1Header_methods(root_module, cls):
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('std::bitset< 6u > *', 'optionalOrDefaultMask'), param('bool', 'isExtensionMarkerPresent'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-asn1-header.h (module 'lte'): ns3::Buffer::Iterator ns3::Asn1Header::DeserializeSequence(std::bitset<7u> * optionalOrDefaultMask, bool isExtensionMarkerPresent, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeSequence',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('std::bitset< 7u > *', 'optionalOrDefaultMask'), param('bool', 'isExtensionMarkerPresent'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-asn1-header.h (module 'lte'): ns3::Buffer::Iterator ns3::Asn1Header::DeserializeSequence(std::bitset<9u> * optionalOrDefaultMask, bool isExtensionMarkerPresent, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeSequence',
|
||||
'ns3::Buffer::Iterator',
|
||||
@@ -13049,6 +13058,11 @@ def register_Ns3Asn1Header_methods(root_module, cls):
|
||||
'void',
|
||||
[param('std::bitset< 6u >', 'optionalOrDefaultMask'), param('bool', 'isExtensionMarkerPresent')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-asn1-header.h (module 'lte'): void ns3::Asn1Header::SerializeSequence(std::bitset<7u> optionalOrDefaultMask, bool isExtensionMarkerPresent) const [member function]
|
||||
cls.add_method('SerializeSequence',
|
||||
'void',
|
||||
[param('std::bitset< 7u >', 'optionalOrDefaultMask'), param('bool', 'isExtensionMarkerPresent')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-asn1-header.h (module 'lte'): void ns3::Asn1Header::SerializeSequence(std::bitset<9u> optionalOrDefaultMask, bool isExtensionMarkerPresent) const [member function]
|
||||
cls.add_method('SerializeSequence',
|
||||
'void',
|
||||
@@ -16058,14 +16072,26 @@ def register_Ns3LteEnbRrc_methods(root_module, cls):
|
||||
cls.add_method('GetLteAnrSapUser',
|
||||
'ns3::LteAnrSapUser *',
|
||||
[])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteCcmRrcSapUser * ns3::LteEnbRrc::GetLteCcmRrcSapUser() [member function]
|
||||
cls.add_method('GetLteCcmRrcSapUser',
|
||||
'ns3::LteCcmRrcSapUser *',
|
||||
[])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteEnbCmacSapUser * ns3::LteEnbRrc::GetLteEnbCmacSapUser() [member function]
|
||||
cls.add_method('GetLteEnbCmacSapUser',
|
||||
'ns3::LteEnbCmacSapUser *',
|
||||
[])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteEnbCmacSapUser * ns3::LteEnbRrc::GetLteEnbCmacSapUser(uint8_t pos) [member function]
|
||||
cls.add_method('GetLteEnbCmacSapUser',
|
||||
'ns3::LteEnbCmacSapUser *',
|
||||
[param('uint8_t', 'pos')])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteEnbCphySapUser * ns3::LteEnbRrc::GetLteEnbCphySapUser() [member function]
|
||||
cls.add_method('GetLteEnbCphySapUser',
|
||||
'ns3::LteEnbCphySapUser *',
|
||||
[])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteEnbCphySapUser * ns3::LteEnbRrc::GetLteEnbCphySapUser(uint8_t pos) [member function]
|
||||
cls.add_method('GetLteEnbCphySapUser',
|
||||
'ns3::LteEnbCphySapUser *',
|
||||
[param('uint8_t', 'pos')])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteEnbRrcSapProvider * ns3::LteEnbRrc::GetLteEnbRrcSapProvider() [member function]
|
||||
cls.add_method('GetLteEnbRrcSapProvider',
|
||||
'ns3::LteEnbRrcSapProvider *',
|
||||
@@ -16074,6 +16100,10 @@ def register_Ns3LteEnbRrc_methods(root_module, cls):
|
||||
cls.add_method('GetLteFfrRrcSapUser',
|
||||
'ns3::LteFfrRrcSapUser *',
|
||||
[])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteFfrRrcSapUser * ns3::LteEnbRrc::GetLteFfrRrcSapUser(uint8_t index) [member function]
|
||||
cls.add_method('GetLteFfrRrcSapUser',
|
||||
'ns3::LteFfrRrcSapUser *',
|
||||
[param('uint8_t', 'index')])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteHandoverManagementSapUser * ns3::LteEnbRrc::GetLteHandoverManagementSapUser() [member function]
|
||||
cls.add_method('GetLteHandoverManagementSapUser',
|
||||
'ns3::LteHandoverManagementSapUser *',
|
||||
@@ -16141,14 +16171,26 @@ def register_Ns3LteEnbRrc_methods(root_module, cls):
|
||||
cls.add_method('SetLteAnrSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteAnrSapProvider *', 's')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteCcmRrcSapProvider(ns3::LteCcmRrcSapProvider * s) [member function]
|
||||
cls.add_method('SetLteCcmRrcSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteCcmRrcSapProvider *', 's')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteEnbCmacSapProvider(ns3::LteEnbCmacSapProvider * s) [member function]
|
||||
cls.add_method('SetLteEnbCmacSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteEnbCmacSapProvider *', 's')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteEnbCmacSapProvider(ns3::LteEnbCmacSapProvider * s, uint16_t pos) [member function]
|
||||
cls.add_method('SetLteEnbCmacSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteEnbCmacSapProvider *', 's'), param('uint16_t', 'pos')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteEnbCphySapProvider(ns3::LteEnbCphySapProvider * s) [member function]
|
||||
cls.add_method('SetLteEnbCphySapProvider',
|
||||
'void',
|
||||
[param('ns3::LteEnbCphySapProvider *', 's')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteEnbCphySapProvider(ns3::LteEnbCphySapProvider * s, uint8_t pos) [member function]
|
||||
cls.add_method('SetLteEnbCphySapProvider',
|
||||
'void',
|
||||
[param('ns3::LteEnbCphySapProvider *', 's'), param('uint8_t', 'pos')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteEnbRrcSapUser(ns3::LteEnbRrcSapUser * s) [member function]
|
||||
cls.add_method('SetLteEnbRrcSapUser',
|
||||
'void',
|
||||
@@ -16157,6 +16199,10 @@ def register_Ns3LteEnbRrc_methods(root_module, cls):
|
||||
cls.add_method('SetLteFfrRrcSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteFfrRrcSapProvider *', 's')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteFfrRrcSapProvider(ns3::LteFfrRrcSapProvider * s, uint8_t index) [member function]
|
||||
cls.add_method('SetLteFfrRrcSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteFfrRrcSapProvider *', 's'), param('uint8_t', 'index')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteHandoverManagementSapProvider(ns3::LteHandoverManagementSapProvider * s) [member function]
|
||||
cls.add_method('SetLteHandoverManagementSapProvider',
|
||||
'void',
|
||||
@@ -16184,6 +16230,11 @@ def register_Ns3LteEnbRrc_methods(root_module, cls):
|
||||
'void',
|
||||
[],
|
||||
visibility='protected', is_virtual=True)
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::DoInitialize() [member function]
|
||||
cls.add_method('DoInitialize',
|
||||
'void',
|
||||
[],
|
||||
visibility='protected', is_virtual=True)
|
||||
return
|
||||
|
||||
def register_Ns3LteEnbRrcProtocolIdeal_methods(root_module, cls):
|
||||
@@ -18662,6 +18713,11 @@ def register_Ns3LteUeRrc_methods(root_module, cls):
|
||||
cls.add_method('GetAsSapProvider',
|
||||
'ns3::LteAsSapProvider *',
|
||||
[])
|
||||
## lte-ue-rrc.h (module 'lte'): bool ns3::LteUeRrc::GetCaSupport() const [member function]
|
||||
cls.add_method('GetCaSupport',
|
||||
'bool',
|
||||
[],
|
||||
is_const=True)
|
||||
## lte-ue-rrc.h (module 'lte'): uint16_t ns3::LteUeRrc::GetCellId() const [member function]
|
||||
cls.add_method('GetCellId',
|
||||
'uint16_t',
|
||||
@@ -18682,6 +18738,10 @@ def register_Ns3LteUeRrc_methods(root_module, cls):
|
||||
'uint64_t',
|
||||
[],
|
||||
is_const=True)
|
||||
## lte-ue-rrc.h (module 'lte'): ns3::LteUeCcmRrcSapUser * ns3::LteUeRrc::GetLteCcmRrcSapUser() [member function]
|
||||
cls.add_method('GetLteCcmRrcSapUser',
|
||||
'ns3::LteUeCcmRrcSapUser *',
|
||||
[])
|
||||
## lte-ue-rrc.h (module 'lte'): ns3::LteUeCmacSapUser * ns3::LteUeRrc::GetLteUeCmacSapUser() [member function]
|
||||
cls.add_method('GetLteUeCmacSapUser',
|
||||
'ns3::LteUeCmacSapUser *',
|
||||
@@ -18723,10 +18783,18 @@ def register_Ns3LteUeRrc_methods(root_module, cls):
|
||||
cls.add_method('SetAsSapUser',
|
||||
'void',
|
||||
[param('ns3::LteAsSapUser *', 's')])
|
||||
## lte-ue-rrc.h (module 'lte'): void ns3::LteUeRrc::SetCaSupport(bool supportCa) [member function]
|
||||
cls.add_method('SetCaSupport',
|
||||
'void',
|
||||
[param('bool', 'supportCa')])
|
||||
## lte-ue-rrc.h (module 'lte'): void ns3::LteUeRrc::SetImsi(uint64_t imsi) [member function]
|
||||
cls.add_method('SetImsi',
|
||||
'void',
|
||||
[param('uint64_t', 'imsi')])
|
||||
## lte-ue-rrc.h (module 'lte'): void ns3::LteUeRrc::SetLteCcmRrcSapProvider(ns3::LteUeCcmRrcSapProvider * s) [member function]
|
||||
cls.add_method('SetLteCcmRrcSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteUeCcmRrcSapProvider *', 's')])
|
||||
## lte-ue-rrc.h (module 'lte'): void ns3::LteUeRrc::SetLteMacSapProvider(ns3::LteMacSapProvider * s) [member function]
|
||||
cls.add_method('SetLteMacSapProvider',
|
||||
'void',
|
||||
@@ -18747,6 +18815,8 @@ def register_Ns3LteUeRrc_methods(root_module, cls):
|
||||
cls.add_method('SetUseRlcSm',
|
||||
'void',
|
||||
[param('bool', 'val')])
|
||||
## lte-ue-rrc.h (module 'lte'): ns3::LteUeRrc::m_numberOfComponentCarriers [variable]
|
||||
cls.add_instance_attribute('m_numberOfComponentCarriers', 'uint16_t', is_const=False)
|
||||
## lte-ue-rrc.h (module 'lte'): void ns3::LteUeRrc::DoDispose() [member function]
|
||||
cls.add_method('DoDispose',
|
||||
'void',
|
||||
@@ -20425,6 +20495,11 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'uint32_t',
|
||||
[param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
is_pure_virtual=True, visibility='protected', is_virtual=True)
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeCellIdentification(ns3::LteRrcSap::CellIdentification * ci, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeCellIdentification',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::CellIdentification *', 'ci'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeDrbToAddModList(std::list<ns3::LteRrcSap::DrbToAddMod, std::allocator<ns3::LteRrcSap::DrbToAddMod> > * drbToAddModLis, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeDrbToAddModList',
|
||||
'ns3::Buffer::Iterator',
|
||||
@@ -20445,11 +20520,21 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::MeasResults *', 'measResults'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeNonCriticalExtensionConfig(ns3::LteRrcSap::NonCriticalExtensionConfiguration * nonCriticalExtension, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeNonCriticalExtensionConfig',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::NonCriticalExtensionConfiguration *', 'nonCriticalExtension'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializePhysicalConfigDedicated(ns3::LteRrcSap::PhysicalConfigDedicated * physicalConfigDedicated, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializePhysicalConfigDedicated',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::PhysicalConfigDedicated *', 'physicalConfigDedicated'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializePhysicalConfigDedicatedSCell(ns3::LteRrcSap::PhysicalConfigDedicatedSCell * pcdsc, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializePhysicalConfigDedicatedSCell',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::PhysicalConfigDedicatedSCell *', 'pcdsc'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializePlmnIdentity(uint32_t * plmnId, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializePlmnIdentity',
|
||||
'ns3::Buffer::Iterator',
|
||||
@@ -20470,6 +20555,11 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigCommon *', 'radioResourceConfigCommon'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeRadioResourceConfigCommonSCell(ns3::LteRrcSap::RadioResourceConfigCommonSCell * rrccsc, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeRadioResourceConfigCommonSCell',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigCommonSCell *', 'rrccsc'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeRadioResourceConfigCommonSib(ns3::LteRrcSap::RadioResourceConfigCommonSib * radioResourceConfigCommonSib, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeRadioResourceConfigCommonSib',
|
||||
'ns3::Buffer::Iterator',
|
||||
@@ -20480,6 +20570,11 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigDedicated *', 'radioResourceConfigDedicated'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeRadioResourceConfigDedicatedSCell(ns3::LteRrcSap::RadioResourceConfigDedicatedSCell * rrcdsc, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeRadioResourceConfigDedicatedSCell',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigDedicatedSCell *', 'rrcdsc'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeSrbToAddModList(std::list<ns3::LteRrcSap::SrbToAddMod, std::allocator<ns3::LteRrcSap::SrbToAddMod> > * srbToAddModList, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeSrbToAddModList',
|
||||
'ns3::Buffer::Iterator',
|
||||
@@ -20545,11 +20640,21 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::MeasResults', 'measResults')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializeNonCriticalExtensionConfiguration(ns3::LteRrcSap::NonCriticalExtensionConfiguration nonCriticalExtensionConfiguration) const [member function]
|
||||
cls.add_method('SerializeNonCriticalExtensionConfiguration',
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::NonCriticalExtensionConfiguration', 'nonCriticalExtensionConfiguration')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializePhysicalConfigDedicated(ns3::LteRrcSap::PhysicalConfigDedicated physicalConfigDedicated) const [member function]
|
||||
cls.add_method('SerializePhysicalConfigDedicated',
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::PhysicalConfigDedicated', 'physicalConfigDedicated')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializePhysicalConfigDedicatedSCell(ns3::LteRrcSap::PhysicalConfigDedicatedSCell pcdsc) const [member function]
|
||||
cls.add_method('SerializePhysicalConfigDedicatedSCell',
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::PhysicalConfigDedicatedSCell', 'pcdsc')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializePlmnIdentity(uint32_t plmnId) const [member function]
|
||||
cls.add_method('SerializePlmnIdentity',
|
||||
'void',
|
||||
@@ -20570,6 +20675,11 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigCommon', 'radioResourceConfigCommon')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializeRadioResourceConfigCommonSCell(ns3::LteRrcSap::RadioResourceConfigCommonSCell rrccsc) const [member function]
|
||||
cls.add_method('SerializeRadioResourceConfigCommonSCell',
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigCommonSCell', 'rrccsc')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializeRadioResourceConfigCommonSib(ns3::LteRrcSap::RadioResourceConfigCommonSib radioResourceConfigCommonSib) const [member function]
|
||||
cls.add_method('SerializeRadioResourceConfigCommonSib',
|
||||
'void',
|
||||
@@ -20580,6 +20690,11 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigDedicated', 'radioResourceConfigDedicated')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializeRadioResourceDedicatedSCell(ns3::LteRrcSap::RadioResourceConfigDedicatedSCell rrcdsc) const [member function]
|
||||
cls.add_method('SerializeRadioResourceDedicatedSCell',
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigDedicatedSCell', 'rrcdsc')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializeSrbToAddModList(std::list<ns3::LteRrcSap::SrbToAddMod, std::allocator<ns3::LteRrcSap::SrbToAddMod> > srbToAddModList) const [member function]
|
||||
cls.add_method('SerializeSrbToAddModList',
|
||||
'void',
|
||||
@@ -22500,6 +22615,10 @@ def register_Ns3RrcConnectionReconfigurationHeader_methods(root_module, cls):
|
||||
cls.add_method('GetHaveMobilityControlInfo',
|
||||
'bool',
|
||||
[])
|
||||
## lte-rrc-header.h (module 'lte'): bool ns3::RrcConnectionReconfigurationHeader::GetHaveNonCriticalExtensionConfig() [member function]
|
||||
cls.add_method('GetHaveNonCriticalExtensionConfig',
|
||||
'bool',
|
||||
[])
|
||||
## lte-rrc-header.h (module 'lte'): bool ns3::RrcConnectionReconfigurationHeader::GetHaveRadioResourceConfigDedicated() [member function]
|
||||
cls.add_method('GetHaveRadioResourceConfigDedicated',
|
||||
'bool',
|
||||
@@ -22517,6 +22636,10 @@ def register_Ns3RrcConnectionReconfigurationHeader_methods(root_module, cls):
|
||||
cls.add_method('GetMobilityControlInfo',
|
||||
'ns3::LteRrcSap::MobilityControlInfo',
|
||||
[])
|
||||
## lte-rrc-header.h (module 'lte'): ns3::LteRrcSap::NonCriticalExtensionConfiguration ns3::RrcConnectionReconfigurationHeader::GetNonCriticalExtensionConfig() [member function]
|
||||
cls.add_method('GetNonCriticalExtensionConfig',
|
||||
'ns3::LteRrcSap::NonCriticalExtensionConfiguration',
|
||||
[])
|
||||
## lte-rrc-header.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated ns3::RrcConnectionReconfigurationHeader::GetPhysicalConfigDedicated() const [member function]
|
||||
cls.add_method('GetPhysicalConfigDedicated',
|
||||
'ns3::LteRrcSap::PhysicalConfigDedicated',
|
||||
|
||||
@@ -6796,10 +6796,14 @@ def register_Ns3LteRrcSapMeasResults_methods(root_module, cls):
|
||||
cls.add_constructor([param('ns3::LteRrcSap::MeasResults const &', 'arg0')])
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::haveMeasResultNeighCells [variable]
|
||||
cls.add_instance_attribute('haveMeasResultNeighCells', 'bool', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::haveScellsMeas [variable]
|
||||
cls.add_instance_attribute('haveScellsMeas', 'bool', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::measId [variable]
|
||||
cls.add_instance_attribute('measId', 'uint8_t', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::measResultListEutra [variable]
|
||||
cls.add_instance_attribute('measResultListEutra', 'std::list< ns3::LteRrcSap::MeasResultEutra >', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::measScellResultList [variable]
|
||||
cls.add_instance_attribute('measScellResultList', 'ns3::LteRrcSap::MeasResultServFreqList', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::rsrpResult [variable]
|
||||
cls.add_instance_attribute('rsrpResult', 'uint8_t', is_const=False)
|
||||
## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MeasResults::rsrqResult [variable]
|
||||
@@ -12924,6 +12928,11 @@ def register_Ns3Asn1Header_methods(root_module, cls):
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('std::bitset< 6ul > *', 'optionalOrDefaultMask'), param('bool', 'isExtensionMarkerPresent'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-asn1-header.h (module 'lte'): ns3::Buffer::Iterator ns3::Asn1Header::DeserializeSequence(std::bitset<7ul> * optionalOrDefaultMask, bool isExtensionMarkerPresent, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeSequence',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('std::bitset< 7ul > *', 'optionalOrDefaultMask'), param('bool', 'isExtensionMarkerPresent'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-asn1-header.h (module 'lte'): ns3::Buffer::Iterator ns3::Asn1Header::DeserializeSequence(std::bitset<9ul> * optionalOrDefaultMask, bool isExtensionMarkerPresent, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeSequence',
|
||||
'ns3::Buffer::Iterator',
|
||||
@@ -13049,6 +13058,11 @@ def register_Ns3Asn1Header_methods(root_module, cls):
|
||||
'void',
|
||||
[param('std::bitset< 6ul >', 'optionalOrDefaultMask'), param('bool', 'isExtensionMarkerPresent')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-asn1-header.h (module 'lte'): void ns3::Asn1Header::SerializeSequence(std::bitset<7ul> optionalOrDefaultMask, bool isExtensionMarkerPresent) const [member function]
|
||||
cls.add_method('SerializeSequence',
|
||||
'void',
|
||||
[param('std::bitset< 7ul >', 'optionalOrDefaultMask'), param('bool', 'isExtensionMarkerPresent')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-asn1-header.h (module 'lte'): void ns3::Asn1Header::SerializeSequence(std::bitset<9ul> optionalOrDefaultMask, bool isExtensionMarkerPresent) const [member function]
|
||||
cls.add_method('SerializeSequence',
|
||||
'void',
|
||||
@@ -16058,14 +16072,26 @@ def register_Ns3LteEnbRrc_methods(root_module, cls):
|
||||
cls.add_method('GetLteAnrSapUser',
|
||||
'ns3::LteAnrSapUser *',
|
||||
[])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteCcmRrcSapUser * ns3::LteEnbRrc::GetLteCcmRrcSapUser() [member function]
|
||||
cls.add_method('GetLteCcmRrcSapUser',
|
||||
'ns3::LteCcmRrcSapUser *',
|
||||
[])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteEnbCmacSapUser * ns3::LteEnbRrc::GetLteEnbCmacSapUser() [member function]
|
||||
cls.add_method('GetLteEnbCmacSapUser',
|
||||
'ns3::LteEnbCmacSapUser *',
|
||||
[])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteEnbCmacSapUser * ns3::LteEnbRrc::GetLteEnbCmacSapUser(uint8_t pos) [member function]
|
||||
cls.add_method('GetLteEnbCmacSapUser',
|
||||
'ns3::LteEnbCmacSapUser *',
|
||||
[param('uint8_t', 'pos')])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteEnbCphySapUser * ns3::LteEnbRrc::GetLteEnbCphySapUser() [member function]
|
||||
cls.add_method('GetLteEnbCphySapUser',
|
||||
'ns3::LteEnbCphySapUser *',
|
||||
[])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteEnbCphySapUser * ns3::LteEnbRrc::GetLteEnbCphySapUser(uint8_t pos) [member function]
|
||||
cls.add_method('GetLteEnbCphySapUser',
|
||||
'ns3::LteEnbCphySapUser *',
|
||||
[param('uint8_t', 'pos')])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteEnbRrcSapProvider * ns3::LteEnbRrc::GetLteEnbRrcSapProvider() [member function]
|
||||
cls.add_method('GetLteEnbRrcSapProvider',
|
||||
'ns3::LteEnbRrcSapProvider *',
|
||||
@@ -16074,6 +16100,10 @@ def register_Ns3LteEnbRrc_methods(root_module, cls):
|
||||
cls.add_method('GetLteFfrRrcSapUser',
|
||||
'ns3::LteFfrRrcSapUser *',
|
||||
[])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteFfrRrcSapUser * ns3::LteEnbRrc::GetLteFfrRrcSapUser(uint8_t index) [member function]
|
||||
cls.add_method('GetLteFfrRrcSapUser',
|
||||
'ns3::LteFfrRrcSapUser *',
|
||||
[param('uint8_t', 'index')])
|
||||
## lte-enb-rrc.h (module 'lte'): ns3::LteHandoverManagementSapUser * ns3::LteEnbRrc::GetLteHandoverManagementSapUser() [member function]
|
||||
cls.add_method('GetLteHandoverManagementSapUser',
|
||||
'ns3::LteHandoverManagementSapUser *',
|
||||
@@ -16141,14 +16171,26 @@ def register_Ns3LteEnbRrc_methods(root_module, cls):
|
||||
cls.add_method('SetLteAnrSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteAnrSapProvider *', 's')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteCcmRrcSapProvider(ns3::LteCcmRrcSapProvider * s) [member function]
|
||||
cls.add_method('SetLteCcmRrcSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteCcmRrcSapProvider *', 's')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteEnbCmacSapProvider(ns3::LteEnbCmacSapProvider * s) [member function]
|
||||
cls.add_method('SetLteEnbCmacSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteEnbCmacSapProvider *', 's')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteEnbCmacSapProvider(ns3::LteEnbCmacSapProvider * s, uint16_t pos) [member function]
|
||||
cls.add_method('SetLteEnbCmacSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteEnbCmacSapProvider *', 's'), param('uint16_t', 'pos')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteEnbCphySapProvider(ns3::LteEnbCphySapProvider * s) [member function]
|
||||
cls.add_method('SetLteEnbCphySapProvider',
|
||||
'void',
|
||||
[param('ns3::LteEnbCphySapProvider *', 's')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteEnbCphySapProvider(ns3::LteEnbCphySapProvider * s, uint8_t pos) [member function]
|
||||
cls.add_method('SetLteEnbCphySapProvider',
|
||||
'void',
|
||||
[param('ns3::LteEnbCphySapProvider *', 's'), param('uint8_t', 'pos')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteEnbRrcSapUser(ns3::LteEnbRrcSapUser * s) [member function]
|
||||
cls.add_method('SetLteEnbRrcSapUser',
|
||||
'void',
|
||||
@@ -16157,6 +16199,10 @@ def register_Ns3LteEnbRrc_methods(root_module, cls):
|
||||
cls.add_method('SetLteFfrRrcSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteFfrRrcSapProvider *', 's')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteFfrRrcSapProvider(ns3::LteFfrRrcSapProvider * s, uint8_t index) [member function]
|
||||
cls.add_method('SetLteFfrRrcSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteFfrRrcSapProvider *', 's'), param('uint8_t', 'index')])
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteHandoverManagementSapProvider(ns3::LteHandoverManagementSapProvider * s) [member function]
|
||||
cls.add_method('SetLteHandoverManagementSapProvider',
|
||||
'void',
|
||||
@@ -16184,6 +16230,11 @@ def register_Ns3LteEnbRrc_methods(root_module, cls):
|
||||
'void',
|
||||
[],
|
||||
visibility='protected', is_virtual=True)
|
||||
## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::DoInitialize() [member function]
|
||||
cls.add_method('DoInitialize',
|
||||
'void',
|
||||
[],
|
||||
visibility='protected', is_virtual=True)
|
||||
return
|
||||
|
||||
def register_Ns3LteEnbRrcProtocolIdeal_methods(root_module, cls):
|
||||
@@ -18662,6 +18713,11 @@ def register_Ns3LteUeRrc_methods(root_module, cls):
|
||||
cls.add_method('GetAsSapProvider',
|
||||
'ns3::LteAsSapProvider *',
|
||||
[])
|
||||
## lte-ue-rrc.h (module 'lte'): bool ns3::LteUeRrc::GetCaSupport() const [member function]
|
||||
cls.add_method('GetCaSupport',
|
||||
'bool',
|
||||
[],
|
||||
is_const=True)
|
||||
## lte-ue-rrc.h (module 'lte'): uint16_t ns3::LteUeRrc::GetCellId() const [member function]
|
||||
cls.add_method('GetCellId',
|
||||
'uint16_t',
|
||||
@@ -18682,6 +18738,10 @@ def register_Ns3LteUeRrc_methods(root_module, cls):
|
||||
'uint64_t',
|
||||
[],
|
||||
is_const=True)
|
||||
## lte-ue-rrc.h (module 'lte'): ns3::LteUeCcmRrcSapUser * ns3::LteUeRrc::GetLteCcmRrcSapUser() [member function]
|
||||
cls.add_method('GetLteCcmRrcSapUser',
|
||||
'ns3::LteUeCcmRrcSapUser *',
|
||||
[])
|
||||
## lte-ue-rrc.h (module 'lte'): ns3::LteUeCmacSapUser * ns3::LteUeRrc::GetLteUeCmacSapUser() [member function]
|
||||
cls.add_method('GetLteUeCmacSapUser',
|
||||
'ns3::LteUeCmacSapUser *',
|
||||
@@ -18723,10 +18783,18 @@ def register_Ns3LteUeRrc_methods(root_module, cls):
|
||||
cls.add_method('SetAsSapUser',
|
||||
'void',
|
||||
[param('ns3::LteAsSapUser *', 's')])
|
||||
## lte-ue-rrc.h (module 'lte'): void ns3::LteUeRrc::SetCaSupport(bool supportCa) [member function]
|
||||
cls.add_method('SetCaSupport',
|
||||
'void',
|
||||
[param('bool', 'supportCa')])
|
||||
## lte-ue-rrc.h (module 'lte'): void ns3::LteUeRrc::SetImsi(uint64_t imsi) [member function]
|
||||
cls.add_method('SetImsi',
|
||||
'void',
|
||||
[param('uint64_t', 'imsi')])
|
||||
## lte-ue-rrc.h (module 'lte'): void ns3::LteUeRrc::SetLteCcmRrcSapProvider(ns3::LteUeCcmRrcSapProvider * s) [member function]
|
||||
cls.add_method('SetLteCcmRrcSapProvider',
|
||||
'void',
|
||||
[param('ns3::LteUeCcmRrcSapProvider *', 's')])
|
||||
## lte-ue-rrc.h (module 'lte'): void ns3::LteUeRrc::SetLteMacSapProvider(ns3::LteMacSapProvider * s) [member function]
|
||||
cls.add_method('SetLteMacSapProvider',
|
||||
'void',
|
||||
@@ -18747,6 +18815,8 @@ def register_Ns3LteUeRrc_methods(root_module, cls):
|
||||
cls.add_method('SetUseRlcSm',
|
||||
'void',
|
||||
[param('bool', 'val')])
|
||||
## lte-ue-rrc.h (module 'lte'): ns3::LteUeRrc::m_numberOfComponentCarriers [variable]
|
||||
cls.add_instance_attribute('m_numberOfComponentCarriers', 'uint16_t', is_const=False)
|
||||
## lte-ue-rrc.h (module 'lte'): void ns3::LteUeRrc::DoDispose() [member function]
|
||||
cls.add_method('DoDispose',
|
||||
'void',
|
||||
@@ -20425,6 +20495,11 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'uint32_t',
|
||||
[param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
is_pure_virtual=True, visibility='protected', is_virtual=True)
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeCellIdentification(ns3::LteRrcSap::CellIdentification * ci, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeCellIdentification',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::CellIdentification *', 'ci'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeDrbToAddModList(std::list<ns3::LteRrcSap::DrbToAddMod, std::allocator<ns3::LteRrcSap::DrbToAddMod> > * drbToAddModLis, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeDrbToAddModList',
|
||||
'ns3::Buffer::Iterator',
|
||||
@@ -20445,11 +20520,21 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::MeasResults *', 'measResults'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeNonCriticalExtensionConfig(ns3::LteRrcSap::NonCriticalExtensionConfiguration * nonCriticalExtension, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeNonCriticalExtensionConfig',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::NonCriticalExtensionConfiguration *', 'nonCriticalExtension'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializePhysicalConfigDedicated(ns3::LteRrcSap::PhysicalConfigDedicated * physicalConfigDedicated, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializePhysicalConfigDedicated',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::PhysicalConfigDedicated *', 'physicalConfigDedicated'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializePhysicalConfigDedicatedSCell(ns3::LteRrcSap::PhysicalConfigDedicatedSCell * pcdsc, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializePhysicalConfigDedicatedSCell',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::PhysicalConfigDedicatedSCell *', 'pcdsc'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializePlmnIdentity(uint32_t * plmnId, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializePlmnIdentity',
|
||||
'ns3::Buffer::Iterator',
|
||||
@@ -20470,6 +20555,11 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigCommon *', 'radioResourceConfigCommon'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeRadioResourceConfigCommonSCell(ns3::LteRrcSap::RadioResourceConfigCommonSCell * rrccsc, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeRadioResourceConfigCommonSCell',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigCommonSCell *', 'rrccsc'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeRadioResourceConfigCommonSib(ns3::LteRrcSap::RadioResourceConfigCommonSib * radioResourceConfigCommonSib, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeRadioResourceConfigCommonSib',
|
||||
'ns3::Buffer::Iterator',
|
||||
@@ -20480,6 +20570,11 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigDedicated *', 'radioResourceConfigDedicated'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeRadioResourceConfigDedicatedSCell(ns3::LteRrcSap::RadioResourceConfigDedicatedSCell * rrcdsc, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeRadioResourceConfigDedicatedSCell',
|
||||
'ns3::Buffer::Iterator',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigDedicatedSCell *', 'rrcdsc'), param('ns3::Buffer::Iterator', 'bIterator')],
|
||||
visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): ns3::Buffer::Iterator ns3::RrcAsn1Header::DeserializeSrbToAddModList(std::list<ns3::LteRrcSap::SrbToAddMod, std::allocator<ns3::LteRrcSap::SrbToAddMod> > * srbToAddModList, ns3::Buffer::Iterator bIterator) [member function]
|
||||
cls.add_method('DeserializeSrbToAddModList',
|
||||
'ns3::Buffer::Iterator',
|
||||
@@ -20545,11 +20640,21 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::MeasResults', 'measResults')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializeNonCriticalExtensionConfiguration(ns3::LteRrcSap::NonCriticalExtensionConfiguration nonCriticalExtensionConfiguration) const [member function]
|
||||
cls.add_method('SerializeNonCriticalExtensionConfiguration',
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::NonCriticalExtensionConfiguration', 'nonCriticalExtensionConfiguration')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializePhysicalConfigDedicated(ns3::LteRrcSap::PhysicalConfigDedicated physicalConfigDedicated) const [member function]
|
||||
cls.add_method('SerializePhysicalConfigDedicated',
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::PhysicalConfigDedicated', 'physicalConfigDedicated')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializePhysicalConfigDedicatedSCell(ns3::LteRrcSap::PhysicalConfigDedicatedSCell pcdsc) const [member function]
|
||||
cls.add_method('SerializePhysicalConfigDedicatedSCell',
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::PhysicalConfigDedicatedSCell', 'pcdsc')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializePlmnIdentity(uint32_t plmnId) const [member function]
|
||||
cls.add_method('SerializePlmnIdentity',
|
||||
'void',
|
||||
@@ -20570,6 +20675,11 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigCommon', 'radioResourceConfigCommon')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializeRadioResourceConfigCommonSCell(ns3::LteRrcSap::RadioResourceConfigCommonSCell rrccsc) const [member function]
|
||||
cls.add_method('SerializeRadioResourceConfigCommonSCell',
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigCommonSCell', 'rrccsc')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializeRadioResourceConfigCommonSib(ns3::LteRrcSap::RadioResourceConfigCommonSib radioResourceConfigCommonSib) const [member function]
|
||||
cls.add_method('SerializeRadioResourceConfigCommonSib',
|
||||
'void',
|
||||
@@ -20580,6 +20690,11 @@ def register_Ns3RrcAsn1Header_methods(root_module, cls):
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigDedicated', 'radioResourceConfigDedicated')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializeRadioResourceDedicatedSCell(ns3::LteRrcSap::RadioResourceConfigDedicatedSCell rrcdsc) const [member function]
|
||||
cls.add_method('SerializeRadioResourceDedicatedSCell',
|
||||
'void',
|
||||
[param('ns3::LteRrcSap::RadioResourceConfigDedicatedSCell', 'rrcdsc')],
|
||||
is_const=True, visibility='protected')
|
||||
## lte-rrc-header.h (module 'lte'): void ns3::RrcAsn1Header::SerializeSrbToAddModList(std::list<ns3::LteRrcSap::SrbToAddMod, std::allocator<ns3::LteRrcSap::SrbToAddMod> > srbToAddModList) const [member function]
|
||||
cls.add_method('SerializeSrbToAddModList',
|
||||
'void',
|
||||
@@ -22500,6 +22615,10 @@ def register_Ns3RrcConnectionReconfigurationHeader_methods(root_module, cls):
|
||||
cls.add_method('GetHaveMobilityControlInfo',
|
||||
'bool',
|
||||
[])
|
||||
## lte-rrc-header.h (module 'lte'): bool ns3::RrcConnectionReconfigurationHeader::GetHaveNonCriticalExtensionConfig() [member function]
|
||||
cls.add_method('GetHaveNonCriticalExtensionConfig',
|
||||
'bool',
|
||||
[])
|
||||
## lte-rrc-header.h (module 'lte'): bool ns3::RrcConnectionReconfigurationHeader::GetHaveRadioResourceConfigDedicated() [member function]
|
||||
cls.add_method('GetHaveRadioResourceConfigDedicated',
|
||||
'bool',
|
||||
@@ -22517,6 +22636,10 @@ def register_Ns3RrcConnectionReconfigurationHeader_methods(root_module, cls):
|
||||
cls.add_method('GetMobilityControlInfo',
|
||||
'ns3::LteRrcSap::MobilityControlInfo',
|
||||
[])
|
||||
## lte-rrc-header.h (module 'lte'): ns3::LteRrcSap::NonCriticalExtensionConfiguration ns3::RrcConnectionReconfigurationHeader::GetNonCriticalExtensionConfig() [member function]
|
||||
cls.add_method('GetNonCriticalExtensionConfig',
|
||||
'ns3::LteRrcSap::NonCriticalExtensionConfiguration',
|
||||
[])
|
||||
## lte-rrc-header.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated ns3::RrcConnectionReconfigurationHeader::GetPhysicalConfigDedicated() const [member function]
|
||||
cls.add_method('GetPhysicalConfigDedicated',
|
||||
'ns3::LteRrcSap::PhysicalConfigDedicated',
|
||||
|
||||
@@ -270,6 +270,11 @@ void Asn1Header::SerializeSequence (std::bitset<6> optionalOrDefaultMask, bool i
|
||||
SerializeSequence<6> (optionalOrDefaultMask,isExtensionMarkerPresent);
|
||||
}
|
||||
|
||||
void Asn1Header::SerializeSequence (std::bitset<7> optionalOrDefaultMask, bool isExtensionMarkerPresent) const
|
||||
{
|
||||
SerializeSequence<7> (optionalOrDefaultMask,isExtensionMarkerPresent);
|
||||
}
|
||||
|
||||
void Asn1Header::SerializeSequence (std::bitset<9> optionalOrDefaultMask, bool isExtensionMarkerPresent) const
|
||||
{
|
||||
SerializeSequence<9> (optionalOrDefaultMask,isExtensionMarkerPresent);
|
||||
@@ -727,6 +732,11 @@ Buffer::Iterator Asn1Header::DeserializeSequence (std::bitset<6> *optionalOrDefa
|
||||
return DeserializeSequence<6> (optionalOrDefaultMask,isExtensionMarkerPresent,bIterator);
|
||||
}
|
||||
|
||||
Buffer::Iterator Asn1Header::DeserializeSequence (std::bitset<7> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator)
|
||||
{
|
||||
return DeserializeSequence<7> (optionalOrDefaultMask,isExtensionMarkerPresent,bIterator);
|
||||
}
|
||||
|
||||
Buffer::Iterator Asn1Header::DeserializeSequence (std::bitset<9> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator)
|
||||
{
|
||||
return DeserializeSequence<9> (optionalOrDefaultMask,isExtensionMarkerPresent,bIterator);
|
||||
|
||||
@@ -190,6 +190,13 @@ protected:
|
||||
* \param optionalOrDefaultMask Mask to serialize
|
||||
* \param isExtensionMarkerPresent true if Extension Marker is present
|
||||
*/
|
||||
void SerializeSequence (std::bitset<7> optionalOrDefaultMask,
|
||||
bool isExtensionMarkerPresent) const;
|
||||
/**
|
||||
* Serialize a sequence
|
||||
* \param optionalOrDefaultMask Mask to serialize
|
||||
* \param isExtensionMarkerPresent true if Extension Marker is present
|
||||
*/
|
||||
void SerializeSequence (std::bitset<9> optionalOrDefaultMask,
|
||||
bool isExtensionMarkerPresent) const;
|
||||
/**
|
||||
@@ -402,6 +409,17 @@ protected:
|
||||
Buffer::Iterator DeserializeSequence (std::bitset<6> *optionalOrDefaultMask,
|
||||
bool isExtensionMarkerPresent,
|
||||
Buffer::Iterator bIterator);
|
||||
|
||||
/**
|
||||
* Deserialize a sequence
|
||||
* \param optionalOrDefaultMask buffer to store the result
|
||||
* \param isExtensionMarkerPresent true if Extension Marker is present
|
||||
* \param bIterator buffer iterator
|
||||
* \returns the modified buffer iterator
|
||||
*/
|
||||
Buffer::Iterator DeserializeSequence (std::bitset<7> *optionalOrDefaultMask,
|
||||
bool isExtensionMarkerPresent,
|
||||
Buffer::Iterator bIterator);
|
||||
/**
|
||||
* Deserialize a sequence
|
||||
* \param optionalOrDefaultMask buffer to store the result
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
* Authors: Nicola Baldo <nbaldo@cttc.es>
|
||||
* Marco Miozzo <mmiozzo@cttc.es>
|
||||
* Manuel Requena <manuel.requena@cttc.es>
|
||||
* Modified by: Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregation - GSoC 2015),
|
||||
* Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)
|
||||
*/
|
||||
|
||||
#include "lte-enb-rrc.h"
|
||||
@@ -142,10 +144,11 @@ UeManager::UeManager (Ptr<LteEnbRrc> rrc, uint16_t rnti, State s)
|
||||
m_pendingRrcConnectionReconfiguration (false),
|
||||
m_sourceX2apId (0),
|
||||
m_sourceCellId (0),
|
||||
m_needPhyMacConfiguration (false)
|
||||
m_needPhyMacConfiguration (false),
|
||||
m_caSupportConfigured (false),
|
||||
m_pendingStartDataRadioBearers (false)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
m_pendingStartDataRadioBearers = false;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -185,7 +188,7 @@ UeManager::DoInitialize ()
|
||||
lcinfo.lcId = lcid;
|
||||
// leave the rest of lcinfo empty as CCCH (LCID 0) is pre-configured
|
||||
m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
|
||||
|
||||
// MacSapUserForRlc in the ComponentCarrierManager MacSapUser
|
||||
}
|
||||
|
||||
// setup the eNB side of SRB1; the UE side will be set up upon RRC connection establishment
|
||||
@@ -861,7 +864,16 @@ UeManager::RecvRrcConnectionSetupCompleted (LteRrcSap::RrcConnectionSetupComplet
|
||||
{
|
||||
case CONNECTION_SETUP:
|
||||
m_connectionSetupTimeout.Cancel ();
|
||||
StartDataRadioBearers ();
|
||||
if ( m_caSupportConfigured == false && m_rrc->m_numberOfComponentCarriers > 1)
|
||||
{
|
||||
m_pendingRrcConnectionReconfiguration = true; // Force Reconfiguration
|
||||
m_pendingStartDataRadioBearers = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pendingStartDataRadioBearers = false;
|
||||
StartDataRadioBearers ();
|
||||
}
|
||||
SwitchToState (CONNECTED_NORMALLY);
|
||||
m_rrc->m_connectionEstablishedTrace (m_imsi, m_rrc->m_cellId, m_rnti);
|
||||
break;
|
||||
@@ -976,7 +988,9 @@ UeManager::RecvMeasurementReport (LteRrcSap::MeasurementReport msg)
|
||||
NS_LOG_FUNCTION (this << (uint16_t) measId);
|
||||
NS_LOG_LOGIC ("measId " << (uint16_t) measId
|
||||
<< " haveMeasResultNeighCells " << msg.measResults.haveMeasResultNeighCells
|
||||
<< " measResultListEutra " << msg.measResults.measResultListEutra.size ());
|
||||
<< " measResultListEutra " << msg.measResults.measResultListEutra.size ()
|
||||
<< " haveScellsMeas " << msg.measResults.haveScellsMeas
|
||||
<< " measScellResultList " << msg.measResults.measScellResultList.measResultScell.size ());
|
||||
NS_LOG_LOGIC ("serving cellId " << m_rrc->m_cellId
|
||||
<< " RSRP " << (uint16_t) msg.measResults.rsrpResult
|
||||
<< " RSRQ " << (uint16_t) msg.measResults.rsrqResult);
|
||||
@@ -1156,6 +1170,7 @@ UeManager::RemoveDataRadioBearerInfo (uint8_t drbid)
|
||||
LteRrcSap::RrcConnectionReconfiguration
|
||||
UeManager::BuildRrcConnectionReconfiguration ()
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
LteRrcSap::RrcConnectionReconfiguration msg;
|
||||
msg.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
|
||||
msg.haveRadioResourceConfigDedicated = true;
|
||||
@@ -1163,6 +1178,18 @@ UeManager::BuildRrcConnectionReconfiguration ()
|
||||
msg.haveMobilityControlInfo = false;
|
||||
msg.haveMeasConfig = true;
|
||||
msg.measConfig = m_rrc->m_ueMeasConfig;
|
||||
if ( m_caSupportConfigured == false && m_rrc->m_numberOfComponentCarriers > 1)
|
||||
{
|
||||
m_caSupportConfigured = true;
|
||||
NS_LOG_FUNCTION ( this << "CA not configured. Configure now!" );
|
||||
msg.haveNonCriticalExtension = true;
|
||||
msg.nonCriticalExtension = BuildNonCriticalExtentionConfigurationCa ();
|
||||
NS_LOG_FUNCTION ( this << " haveNonCriticalExtension " << msg.haveNonCriticalExtension );
|
||||
}
|
||||
else
|
||||
{
|
||||
msg.haveNonCriticalExtension = false;
|
||||
}
|
||||
|
||||
return msg;
|
||||
}
|
||||
@@ -1268,6 +1295,10 @@ UeManager::SwitchToState (State newState)
|
||||
{
|
||||
ScheduleRrcConnectionReconfiguration ();
|
||||
}
|
||||
if (m_pendingStartDataRadioBearers == true && m_caSupportConfigured == true)
|
||||
{
|
||||
StartDataRadioBearers ();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1285,6 +1316,71 @@ UeManager::SwitchToState (State newState)
|
||||
}
|
||||
}
|
||||
|
||||
LteRrcSap::NonCriticalExtensionConfiguration
|
||||
UeManager::BuildNonCriticalExtentionConfigurationCa ()
|
||||
{
|
||||
NS_LOG_FUNCTION ( this );
|
||||
LteRrcSap::NonCriticalExtensionConfiguration ncec;
|
||||
|
||||
// LteRrcSap::SCellToAddMod scell;
|
||||
std::list<LteRrcSap::SCellToAddMod> SccCon;
|
||||
|
||||
// sCellToReleaseList is always empty since no Scc is released
|
||||
std::map<uint8_t, Ptr<ComponentCarrierEnb> >::iterator it = m_rrc->m_componentCarrierEnbMap.begin();
|
||||
|
||||
it++;
|
||||
for (;it!=m_rrc->m_componentCarrierEnbMap.end(); it++)
|
||||
{
|
||||
|
||||
uint8_t ccId = it->first;
|
||||
Ptr<ComponentCarrierEnb> eNbCcm = it->second;
|
||||
LteRrcSap::SCellToAddMod component;
|
||||
component.sCellIndex = ccId;
|
||||
component.cellIdentification.physCellId = m_rrc->m_cellId;
|
||||
component.cellIdentification.dlCarrierFreq = eNbCcm->m_dlEarfcn;
|
||||
component.radioResourceConfigCommonSCell.haveNonUlConfiguration = true;
|
||||
component.radioResourceConfigCommonSCell.nonUlConfiguration.dlBandwidth = eNbCcm->m_dlBandwidth;
|
||||
component.radioResourceConfigCommonSCell.nonUlConfiguration.antennaInfoCommon.antennaPortsCount = 0;
|
||||
component.radioResourceConfigCommonSCell.nonUlConfiguration.pdschConfigCommon.referenceSignalPower = m_rrc->m_cphySapProvider->GetReferenceSignalPower ();
|
||||
component.radioResourceConfigCommonSCell.nonUlConfiguration.pdschConfigCommon.pb = 0;
|
||||
component.radioResourceConfigCommonSCell.haveUlConfiguration = true;
|
||||
component.radioResourceConfigCommonSCell.ulConfiguration.ulFreqInfo.ulCarrierFreq = eNbCcm->m_ulEarfcn;
|
||||
component.radioResourceConfigCommonSCell.ulConfiguration.ulFreqInfo.ulBandwidth = eNbCcm->m_ulBandwidth;
|
||||
component.radioResourceConfigCommonSCell.ulConfiguration.ulPowerControlCommonSCell.alpha = 0;
|
||||
//component.radioResourceConfigCommonSCell.ulConfiguration.soundingRsUlConfigCommon.type = LteRrcSap::SoundingRsUlConfigDedicated::SETUP;
|
||||
component.radioResourceConfigCommonSCell.ulConfiguration.soundingRsUlConfigCommon.srsBandwidthConfig = 0;
|
||||
component.radioResourceConfigCommonSCell.ulConfiguration.soundingRsUlConfigCommon.srsSubframeConfig = 0;
|
||||
component.radioResourceConfigCommonSCell.ulConfiguration.prachConfigSCell.index = 0;
|
||||
|
||||
if (true)
|
||||
{
|
||||
component.haveRadioResourceConfigDedicatedSCell = true;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.haveNonUlConfiguration = true;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.haveAntennaInfoDedicated = true;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.antennaInfo.transmissionMode = m_rrc->m_defaultTransmissionMode;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.crossCarrierSchedulingConfig = false;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.havePdschConfigDedicated = true;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.pdschConfigDedicated.pa = LteRrcSap::PdschConfigDedicated::dB0;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.haveUlConfiguration = true;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.haveAntennaInfoDedicated = true;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.antennaInfoUl.transmissionMode = m_rrc->m_defaultTransmissionMode;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.pushConfigDedicatedSCell.nPuschIdentity = 0;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.ulPowerControlDedicatedSCell.pSrsOffset = 0;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.haveSoundingRsUlConfigDedicated = true;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.soundingRsUlConfigDedicated.srsConfigIndex = GetSrsConfigurationIndex();
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.soundingRsUlConfigDedicated.type = LteRrcSap::SoundingRsUlConfigDedicated::SETUP;
|
||||
component.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.soundingRsUlConfigDedicated.srsBandwidth = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
component.haveRadioResourceConfigDedicatedSCell = false;
|
||||
}
|
||||
SccCon.push_back (component);
|
||||
}
|
||||
ncec.sCellsToAddModList = SccCon;
|
||||
|
||||
return ncec;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////
|
||||
@@ -1297,6 +1393,7 @@ LteEnbRrc::LteEnbRrc ()
|
||||
: m_x2SapProvider (0),
|
||||
m_cmacSapProvider (0),
|
||||
m_handoverManagementSapProvider (0),
|
||||
m_ccmRrcSapProvider (0),
|
||||
m_anrSapProvider (0),
|
||||
m_ffrRrcSapProvider (0),
|
||||
m_rrcSapUser (0),
|
||||
@@ -1307,7 +1404,8 @@ LteEnbRrc::LteEnbRrc ()
|
||||
m_lastAllocatedRnti (0),
|
||||
m_srsCurrentPeriodicityId (0),
|
||||
m_lastAllocatedConfigurationIndex (0),
|
||||
m_reconfigureUes (false)
|
||||
m_reconfigureUes (false),
|
||||
m_numberOfComponentCarriers (0)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
m_cmacSapUser = new EnbRrcMemberLteEnbCmacSapUser (this);
|
||||
@@ -1318,8 +1416,23 @@ LteEnbRrc::LteEnbRrc ()
|
||||
m_x2SapUser = new EpcX2SpecificEpcX2SapUser<LteEnbRrc> (this);
|
||||
m_s1SapUser = new MemberEpcEnbS1SapUser<LteEnbRrc> (this);
|
||||
m_cphySapUser = new MemberLteEnbCphySapUser<LteEnbRrc> (this);
|
||||
m_ccmRrcSapUser = new MemberLteCcmRrcSapUser <LteEnbRrc>(this);
|
||||
}
|
||||
|
||||
void LteEnbRrc::DoInitialize()
|
||||
{
|
||||
if (m_numberOfComponentCarriers < MIN_NO_CC || m_numberOfComponentCarriers > MAX_NO_CC)
|
||||
{
|
||||
// this check is neede in order to maintain backward compatibility with scripts and tests
|
||||
// if case lte-helper is not used (like in several tests) the m_numberOfComponentCarriers
|
||||
// is not set and then an error is rised
|
||||
// In this case m_numberOfComponentCarriers is set to 1
|
||||
m_numberOfComponentCarriers = MIN_NO_CC;
|
||||
}
|
||||
Object::DoInitialize ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
LteEnbRrc::~LteEnbRrc ()
|
||||
{
|
||||
@@ -1334,6 +1447,7 @@ LteEnbRrc::DoDispose ()
|
||||
m_ueMap.clear ();
|
||||
delete m_cmacSapUser;
|
||||
delete m_handoverManagementSapUser;
|
||||
delete m_ccmRrcSapUser;
|
||||
delete m_anrSapUser;
|
||||
delete m_ffrRrcSapUser;
|
||||
delete m_rrcSapProvider;
|
||||
@@ -1543,6 +1657,20 @@ LteEnbRrc::GetLteHandoverManagementSapUser ()
|
||||
return m_handoverManagementSapUser;
|
||||
}
|
||||
|
||||
void
|
||||
LteEnbRrc::SetLteCcmRrcSapProvider (LteCcmRrcSapProvider * s)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << s);
|
||||
m_ccmRrcSapProvider = s;
|
||||
}
|
||||
|
||||
LteCcmRrcSapUser*
|
||||
LteEnbRrc::GetLteCcmRrcSapUser ()
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
return m_ccmRrcSapUser;
|
||||
}
|
||||
|
||||
void
|
||||
LteEnbRrc::SetLteAnrSapProvider (LteAnrSapProvider * s)
|
||||
{
|
||||
@@ -2019,6 +2147,7 @@ LteEnbRrc::DoRecvHandoverRequest (EpcX2SapUser::HandoverRequestParams req)
|
||||
handoverCommand.mobilityControlInfo.radioResourceConfigCommon.rachConfigCommon.preambleInfo.numberOfRaPreambles = rc.numberOfRaPreambles;
|
||||
handoverCommand.mobilityControlInfo.radioResourceConfigCommon.rachConfigCommon.raSupervisionInfo.preambleTransMax = rc.preambleTransMax;
|
||||
handoverCommand.mobilityControlInfo.radioResourceConfigCommon.rachConfigCommon.raSupervisionInfo.raResponseWindowSize = rc.raResponseWindowSize;
|
||||
handoverCommand.haveNonCriticalExtension = false;
|
||||
|
||||
Ptr<Packet> encodedHandoverCommand = m_rrcSapUser->EncodeHandoverCommand (handoverCommand);
|
||||
|
||||
@@ -2180,6 +2309,15 @@ LteEnbRrc::DoAddUeMeasReportConfigForHandover (LteRrcSap::ReportConfigEutra repo
|
||||
return measId;
|
||||
}
|
||||
|
||||
uint8_t
|
||||
LteEnbRrc::DoAddUeMeasReportConfigForComponentCarrier (LteRrcSap::ReportConfigEutra reportConfig)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
uint8_t measId = AddUeMeasReportConfig (reportConfig);
|
||||
m_componentCarrierMeasIds.insert (measId);
|
||||
return measId;
|
||||
}
|
||||
|
||||
void
|
||||
LteEnbRrc::DoTriggerHandover (uint16_t rnti, uint16_t targetCellId)
|
||||
{
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
* Authors: Nicola Baldo <nbaldo@cttc.es>
|
||||
* Marco Miozzo <mmiozzo@cttc.es>
|
||||
* Manuel Requena <manuel.requena@cttc.es>
|
||||
* Modified by:
|
||||
* Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregation - GSoC 2015)
|
||||
* Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)
|
||||
*/
|
||||
|
||||
#ifndef LTE_ENB_RRC_H
|
||||
@@ -36,10 +39,12 @@
|
||||
#include <ns3/epc-x2-sap.h>
|
||||
#include <ns3/epc-enb-s1-sap.h>
|
||||
#include <ns3/lte-handover-management-sap.h>
|
||||
#include <ns3/lte-ccm-rrc-sap.h>
|
||||
#include <ns3/lte-enb-cphy-sap.h>
|
||||
#include <ns3/lte-rrc-sap.h>
|
||||
#include <ns3/lte-anr-sap.h>
|
||||
#include <ns3/lte-ffr-rrc-sap.h>
|
||||
#include <ns3/lte-rlc.h>
|
||||
|
||||
#include <map>
|
||||
#include <set>
|
||||
@@ -354,6 +359,13 @@ private:
|
||||
*/
|
||||
LteRrcSap::RrcConnectionReconfiguration BuildRrcConnectionReconfiguration ();
|
||||
|
||||
/**
|
||||
*
|
||||
* \return an NonCriticalExtensionConfiguration struct built based on the
|
||||
* current configuration
|
||||
*/
|
||||
LteRrcSap::NonCriticalExtensionConfiguration BuildNonCriticalExtentionConfigurationCa ();
|
||||
|
||||
/**
|
||||
*
|
||||
* \return a RadioResourceConfigDedicated struct built based on the
|
||||
@@ -527,6 +539,7 @@ class LteEnbRrc : public Object
|
||||
friend class MemberEpcEnbS1SapUser<LteEnbRrc>;
|
||||
friend class EpcX2SpecificEpcX2SapUser<LteEnbRrc>;
|
||||
friend class UeManager;
|
||||
friend class MemberLteCcmRrcSapUser<LteEnbRrc>;
|
||||
|
||||
public:
|
||||
/**
|
||||
@@ -543,6 +556,7 @@ public:
|
||||
|
||||
// inherited from Object
|
||||
protected:
|
||||
virtual void DoInitialize ();
|
||||
virtual void DoDispose (void);
|
||||
public:
|
||||
static TypeId GetTypeId (void);
|
||||
@@ -568,12 +582,15 @@ public:
|
||||
*/
|
||||
void SetLteEnbCmacSapProvider (LteEnbCmacSapProvider * s);
|
||||
|
||||
void SetLteEnbCmacSapProvider (LteEnbCmacSapProvider * s, uint16_t pos);
|
||||
|
||||
/**
|
||||
* Get the CMAC SAP offered by this RRC
|
||||
* \return s the CMAC SAP User interface offered to the MAC by this RRC
|
||||
*/
|
||||
LteEnbCmacSapUser* GetLteEnbCmacSapUser ();
|
||||
|
||||
LteEnbCmacSapUser* GetLteEnbCmacSapUser (uint8_t pos);
|
||||
|
||||
/**
|
||||
* set the Handover Management SAP this RRC should interact with
|
||||
@@ -590,6 +607,21 @@ public:
|
||||
LteHandoverManagementSapUser* GetLteHandoverManagementSapUser ();
|
||||
|
||||
|
||||
/**
|
||||
* set the Component Carrier Management SAP this RRC should interact with
|
||||
*
|
||||
* \param s the Component Carrier Management SAP Provider to be used by this RRC
|
||||
*/
|
||||
void SetLteCcmRrcSapProvider (LteCcmRrcSapProvider * s);
|
||||
|
||||
/**
|
||||
* Get the Component Carrier Management SAP offered by this RRC
|
||||
* \return s the Component Carrier Management SAP User interface offered to the
|
||||
* carrier component selection algorithm by this RRC
|
||||
*/
|
||||
LteCcmRrcSapUser* GetLteCcmRrcSapUser ();
|
||||
|
||||
|
||||
/**
|
||||
* set the ANR SAP this RRC should interact with
|
||||
*
|
||||
@@ -612,6 +644,7 @@ public:
|
||||
* \param s the FFR SAP Provider to be used by this RRC
|
||||
*/
|
||||
void SetLteFfrRrcSapProvider (LteFfrRrcSapProvider * s);
|
||||
void SetLteFfrRrcSapProvider (LteFfrRrcSapProvider * s, uint8_t index);
|
||||
|
||||
/**
|
||||
* Get the FFR SAP offered by this RRC
|
||||
@@ -619,6 +652,7 @@ public:
|
||||
* RRC
|
||||
*/
|
||||
LteFfrRrcSapUser* GetLteFfrRrcSapUser ();
|
||||
LteFfrRrcSapUser* GetLteFfrRrcSapUser (uint8_t index);
|
||||
|
||||
/**
|
||||
* set the RRC SAP this RRC should interact with
|
||||
@@ -665,6 +699,8 @@ public:
|
||||
*/
|
||||
void SetLteEnbCphySapProvider (LteEnbCphySapProvider * s);
|
||||
|
||||
void SetLteEnbCphySapProvider (LteEnbCphySapProvider * s, uint8_t pos);
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
@@ -672,6 +708,8 @@ public:
|
||||
*/
|
||||
LteEnbCphySapUser* GetLteEnbCphySapUser ();
|
||||
|
||||
LteEnbCphySapUser* GetLteEnbCphySapUser (uint8_t pos);
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
@@ -922,6 +960,8 @@ private:
|
||||
// Handover Management SAP methods
|
||||
|
||||
uint8_t DoAddUeMeasReportConfigForHandover (LteRrcSap::ReportConfigEutra reportConfig);
|
||||
uint8_t DoAddUeMeasReportConfigForComponentCarrier (LteRrcSap::ReportConfigEutra reportConfig);
|
||||
|
||||
void DoTriggerHandover (uint16_t rnti, uint16_t targetCellId);
|
||||
|
||||
// ANR SAP methods
|
||||
@@ -1077,6 +1117,11 @@ private:
|
||||
/// Interface to the handover algorithm instance.
|
||||
LteHandoverManagementSapProvider* m_handoverManagementSapProvider;
|
||||
|
||||
/// Receive API calls from the LteEnbComponetCarrierManager instance.
|
||||
LteCcmRrcSapUser* m_ccmRrcSapUser;
|
||||
/// Interface to the LteEnbComponetCarrierManager instance.
|
||||
LteCcmRrcSapProvider* m_ccmRrcSapProvider;
|
||||
|
||||
/// Receive API calls from the ANR instance.
|
||||
LteAnrSapUser* m_anrSapUser;
|
||||
/// Interface to the ANR instance.
|
||||
@@ -1140,6 +1185,8 @@ private:
|
||||
std::set<uint8_t> m_anrMeasIds;
|
||||
/// List of measurement identities which are intended for FFR purpose.
|
||||
std::set<uint8_t> m_ffrMeasIds;
|
||||
// List of measurement identities which are intended for component carrier management purposes.
|
||||
std::set<uint8_t> m_componentCarrierMeasIds;
|
||||
|
||||
struct X2uTeidInfo
|
||||
{
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Lluis Parcerisa <lparcerisa@cttc.cat>
|
||||
* Modified by:
|
||||
* Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregation - GSoC 2015)
|
||||
* Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)
|
||||
*/
|
||||
|
||||
#include "ns3/log.h"
|
||||
@@ -36,6 +39,8 @@
|
||||
#define MAX_CELL_MEAS 32
|
||||
#define MAX_CELL_REPORT 8
|
||||
|
||||
#define MAX_SCELL_REPORT 5
|
||||
#define MAX_SCELL_CONF 5
|
||||
namespace ns3 {
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE ("RrcHeader");
|
||||
@@ -630,8 +635,12 @@ RrcAsn1Header::SerializeMeasResults (LteRrcSap::MeasResults measResults) const
|
||||
measResults.haveMeasResultNeighCells = false;
|
||||
}
|
||||
|
||||
// Serialize MeasResults sequence, 1 optional value, extension marker present
|
||||
SerializeSequence (std::bitset<1> (measResults.haveMeasResultNeighCells),true);
|
||||
std::bitset<4> measResultOptional;
|
||||
measResultOptional.set (3, measResults.haveScellsMeas);
|
||||
measResultOptional.set (2, false); //LocationInfo-r10
|
||||
measResultOptional.set (1, false); // MeasResultForECID-r9
|
||||
measResultOptional.set (0, measResults.haveMeasResultNeighCells);
|
||||
SerializeSequence(measResultOptional,true);
|
||||
|
||||
// Serialize measId
|
||||
SerializeInteger (measResults.measId,1,MAX_MEAS_ID);
|
||||
@@ -704,6 +713,40 @@ RrcAsn1Header::SerializeMeasResults (LteRrcSap::MeasResults measResults) const
|
||||
}
|
||||
}
|
||||
}
|
||||
if (measResults.haveScellsMeas)
|
||||
{
|
||||
// Serialize measResultNeighCells
|
||||
SerializeSequenceOf (measResults.measScellResultList.measResultScell.size (),MAX_SCELL_REPORT,1);
|
||||
// serialize MeasResultServFreqList-r10 elements in the list
|
||||
std::list<LteRrcSap::MeasResultScell>::iterator it;
|
||||
for (it = measResults.measScellResultList.measResultScell.begin (); it != measResults.measScellResultList.measResultScell.end (); it++)
|
||||
{
|
||||
// Serialize measId
|
||||
SerializeInteger (it->servFreqId,0,MAX_MEAS_ID); // ToDo: change with FreqId, currently is the componentCarrierId
|
||||
// Serialize MeasResultServFreqList
|
||||
std::bitset<2> measResultScellPresent;
|
||||
measResultScellPresent[0] = measResults.measScellResultList.haveMeasurementResultsServingSCells;
|
||||
measResultScellPresent[1] = measResults.measScellResultList.haveMeasurementResultsNeighCell; // Not implemented
|
||||
SerializeSequence (measResultScellPresent,true);
|
||||
|
||||
// Serialize measResult
|
||||
std::bitset<2> measResultScellFieldsPresent;
|
||||
measResultScellFieldsPresent[1] = it->haveRsrpResult;
|
||||
measResultScellFieldsPresent[0] = it->haveRsrqResult;
|
||||
SerializeSequence (measResultScellFieldsPresent,true);
|
||||
|
||||
if (it->haveRsrpResult)
|
||||
{
|
||||
SerializeInteger (it->rsrpResult,0,97);
|
||||
}
|
||||
|
||||
if (it->haveRsrqResult)
|
||||
{
|
||||
SerializeInteger (it->rsrqResult,0,34);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1669,6 +1712,281 @@ RrcAsn1Header::SerializeMeasConfig (LteRrcSap::MeasConfig measConfig) const
|
||||
}
|
||||
}
|
||||
}
|
||||
void
|
||||
RrcAsn1Header::SerializeNonCriticalExtensionConfiguration (LteRrcSap::NonCriticalExtensionConfiguration nonCriticalExtension) const
|
||||
{
|
||||
// 3 optional fields. Extension marker not present.
|
||||
std::bitset<3> noncriticalExtension_v1020;
|
||||
noncriticalExtension_v1020.set (1,0); // No sCellToRealeaseList-r10
|
||||
noncriticalExtension_v1020.set (1,1); // sCellToAddModList-r10
|
||||
noncriticalExtension_v1020.set (0,0); // No nonCriticalExtension RRCConnectionReconfiguration-v1130-IEs
|
||||
SerializeSequence (noncriticalExtension_v1020,false);
|
||||
if (!nonCriticalExtension.sCellsToAddModList.empty ())
|
||||
{
|
||||
SerializeSequenceOf (nonCriticalExtension.sCellsToAddModList.size (),MAX_OBJECT_ID,1);
|
||||
for (std::list<LteRrcSap::SCellToAddMod>::iterator it = nonCriticalExtension.sCellsToAddModList.begin (); it != nonCriticalExtension.sCellsToAddModList.end (); it++)
|
||||
{
|
||||
std::bitset<4> sCellToAddMod_r10;
|
||||
sCellToAddMod_r10.set (3,1); // sCellIndex
|
||||
sCellToAddMod_r10.set (2,1); // CellIdentification
|
||||
sCellToAddMod_r10.set (1,1); // RadioResourceConfigCommonSCell
|
||||
sCellToAddMod_r10.set (0,it->haveRadioResourceConfigDedicatedSCell); // No nonCriticalExtension RRC
|
||||
SerializeSequence (sCellToAddMod_r10, false);
|
||||
SerializeInteger (it->sCellIndex,1,MAX_OBJECT_ID); //sCellIndex
|
||||
|
||||
// Serialize CellIdentification
|
||||
std::bitset<2> cellIdentification_r10;
|
||||
cellIdentification_r10.set(1,1); // phyCellId-r10
|
||||
cellIdentification_r10.set(0,1); // dl-CarrierFreq-r10
|
||||
SerializeSequence (cellIdentification_r10, false);
|
||||
|
||||
SerializeInteger (it->cellIdentification.physCellId,1,MAX_EARFCN);
|
||||
SerializeInteger (it->cellIdentification.dlCarrierFreq,1,MAX_EARFCN);
|
||||
|
||||
//Serialize RadioResourceConfigCommonSCell
|
||||
SerializeRadioResourceConfigCommonSCell (it->radioResourceConfigCommonSCell);
|
||||
|
||||
if (it->haveRadioResourceConfigDedicatedSCell)
|
||||
{
|
||||
//Serialize RadioResourceConfigDedicatedSCell
|
||||
SerializeRadioResourceDedicatedSCell (it->radioResourceConfigDedicateSCell);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// NS_ASSERT_MSG ( this << "NonCriticalExtension.sCellsToAddModList cannot be empty ", false);
|
||||
}
|
||||
|
||||
}
|
||||
void
|
||||
RrcAsn1Header::SerializeRadioResourceConfigCommonSCell (LteRrcSap::RadioResourceConfigCommonSCell rrccsc) const
|
||||
{
|
||||
// 2 optional fields. Extension marker not present.
|
||||
std::bitset<2> radioResourceConfigCommonSCell_r10;
|
||||
radioResourceConfigCommonSCell_r10.set (1,rrccsc.haveNonUlConfiguration); // NonUlConfiguration
|
||||
radioResourceConfigCommonSCell_r10.set (0,rrccsc.haveUlConfiguration); // UlConfiguration
|
||||
SerializeSequence (radioResourceConfigCommonSCell_r10,false);
|
||||
|
||||
if (radioResourceConfigCommonSCell_r10[1])
|
||||
{
|
||||
// 5 optional fields. Extension marker not present.
|
||||
std::bitset<5> nonUlConfiguration_r10;
|
||||
nonUlConfiguration_r10.set (4,1); // Dl- bandwidth --> convert in enum
|
||||
nonUlConfiguration_r10.set (3,1); // AntennaInfoCommon-r10
|
||||
nonUlConfiguration_r10.set (2,0); // phich-Config-r10 Not Implemented
|
||||
nonUlConfiguration_r10.set (1,1); // pdschConfigCommon
|
||||
nonUlConfiguration_r10.set (0,0); // Tdd-Config-r10 Not Implemented
|
||||
SerializeSequence (nonUlConfiguration_r10,false);
|
||||
|
||||
SerializeInteger (rrccsc.nonUlConfiguration.dlBandwidth,6,100);
|
||||
|
||||
std::bitset<1> antennaInfoCommon_r10;
|
||||
antennaInfoCommon_r10.set (0,1);
|
||||
SerializeSequence (antennaInfoCommon_r10,false);
|
||||
SerializeInteger (rrccsc.nonUlConfiguration.antennaInfoCommon.antennaPortsCount,0,65536);
|
||||
|
||||
std::bitset<2> pdschConfigCommon_r10;
|
||||
pdschConfigCommon_r10.set (1,1);
|
||||
pdschConfigCommon_r10.set (0,1);
|
||||
SerializeSequence (pdschConfigCommon_r10,false);
|
||||
|
||||
SerializeInteger (rrccsc.nonUlConfiguration.pdschConfigCommon.referenceSignalPower,-60,50);
|
||||
SerializeInteger (rrccsc.nonUlConfiguration.pdschConfigCommon.pb,0,3);
|
||||
|
||||
}
|
||||
if (radioResourceConfigCommonSCell_r10[0])
|
||||
{
|
||||
//Serialize Ul Configuration
|
||||
// 7 optional fields. Extension marker present.
|
||||
std::bitset<7> UlConfiguration_r10;
|
||||
UlConfiguration_r10.set (6,1); // ul-Configuration-r10
|
||||
UlConfiguration_r10.set (5,0); // p-Max-r10 Not Implemented
|
||||
UlConfiguration_r10.set (4,1); // uplinkPowerControlCommonSCell-r10
|
||||
UlConfiguration_r10.set (3,0); // soundingRS-UL-ConfigCommon-r10
|
||||
UlConfiguration_r10.set (2,0); // ul-CyclicPrefixLength-r10
|
||||
UlConfiguration_r10.set (1,1); // prach-ConfigSCell-r10
|
||||
UlConfiguration_r10.set (0,0); // pusch-ConfigCommon-r10 Not Implemented
|
||||
SerializeSequence (UlConfiguration_r10,true);
|
||||
|
||||
//Serialize ulFreqInfo
|
||||
std::bitset<3> FreqInfo_r10;
|
||||
FreqInfo_r10.set (2,1); // ulCarrierFreq
|
||||
FreqInfo_r10.set (1,1); // UlBandwidth
|
||||
FreqInfo_r10.set (0,0); // additionalSpectrumEmissionSCell-r10 Not Implemented
|
||||
SerializeSequence (FreqInfo_r10,false);
|
||||
|
||||
SerializeInteger (rrccsc.ulConfiguration.ulFreqInfo.ulCarrierFreq,0,MAX_EARFCN);
|
||||
SerializeInteger (rrccsc.ulConfiguration.ulFreqInfo.ulBandwidth,6,100);
|
||||
|
||||
//Serialize UlPowerControllCommonSCell
|
||||
std::bitset<2> UlPowerControlCommonSCell_r10;
|
||||
UlPowerControlCommonSCell_r10.set (1,0); // p0-NominalPUSCH-r10 Not Implemented
|
||||
UlPowerControlCommonSCell_r10.set (0,1); // alpha
|
||||
SerializeSequence (UlPowerControlCommonSCell_r10,false);
|
||||
|
||||
SerializeInteger (rrccsc.ulConfiguration.ulPowerControlCommonSCell.alpha,0,65536);
|
||||
|
||||
//Serialize soundingRs-UlConfigCommon
|
||||
//Not Implemented
|
||||
|
||||
//Serialize PrachConfigSCell
|
||||
std::bitset<1> prachConfigSCell_r10;
|
||||
prachConfigSCell_r10.set(0,1);
|
||||
SerializeSequence(prachConfigSCell_r10,false);
|
||||
SerializeInteger (rrccsc.ulConfiguration.prachConfigSCell.index,0,256);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
void
|
||||
RrcAsn1Header::SerializeRadioResourceDedicatedSCell (LteRrcSap::RadioResourceConfigDedicatedSCell rrcdsc) const
|
||||
{
|
||||
//Serialize RadioResourceConfigDedicatedSCell
|
||||
std::bitset<1> RadioResourceConfigDedicatedSCell_r10;
|
||||
RadioResourceConfigDedicatedSCell_r10.set (0,1);
|
||||
SerializeSequence (RadioResourceConfigDedicatedSCell_r10,false);
|
||||
|
||||
LteRrcSap::PhysicalConfigDedicatedSCell pcdsc = rrcdsc.physicalConfigDedicatedSCell;
|
||||
SerializePhysicalConfigDedicatedSCell (pcdsc);
|
||||
}
|
||||
|
||||
void
|
||||
RrcAsn1Header::SerializePhysicalConfigDedicatedSCell (LteRrcSap::PhysicalConfigDedicatedSCell pcdsc) const
|
||||
{
|
||||
std::bitset<2> pcdscOpt;
|
||||
pcdscOpt.set (1,pcdsc.haveNonUlConfiguration);
|
||||
pcdscOpt.set (0,pcdsc.haveUlConfiguration);
|
||||
SerializeSequence (pcdscOpt, true);
|
||||
|
||||
if (pcdscOpt[1])
|
||||
{
|
||||
//Serialize NonUl configuration
|
||||
std::bitset<4> nulOpt;
|
||||
nulOpt.set (3,pcdsc.haveAntennaInfoDedicated);
|
||||
nulOpt.set (2,0); // crossCarrierSchedulingConfig-r10 NOT IMplemented
|
||||
nulOpt.set (1,0); // csi-RS-Config-r10 Not Implemented
|
||||
nulOpt.set (0, pcdsc.havePdschConfigDedicated); // pdsch-ConfigDedicated-r10
|
||||
SerializeSequence (nulOpt,false);
|
||||
|
||||
if (pcdsc.haveAntennaInfoDedicated)
|
||||
{
|
||||
// Serialize antennaInfo choice
|
||||
// 2 options. Selected: 0 ("explicitValue" of type "AntennaInfoDedicated")
|
||||
SerializeChoice (2,0,false);
|
||||
|
||||
// Serialize AntennaInfoDedicated sequence
|
||||
// 1 optional parameter, not present. No extension marker.
|
||||
SerializeSequence (std::bitset<1> (0),false);
|
||||
|
||||
// Serialize transmissionMode
|
||||
// Assuming the value in the struct is the enum index
|
||||
SerializeEnum (8,pcdsc.antennaInfo.transmissionMode);
|
||||
|
||||
// Serialize ue-TransmitAntennaSelection choice
|
||||
SerializeChoice (2,0,false);
|
||||
|
||||
// Serialize release
|
||||
SerializeNull ();
|
||||
}
|
||||
if (pcdsc.havePdschConfigDedicated)
|
||||
{
|
||||
// Serialize Pdsch-ConfigDedicated Sequence:
|
||||
// 0 optional / default fields, no extension marker.
|
||||
SerializeSequence (std::bitset<0> (),false);
|
||||
|
||||
// Serialize p-a
|
||||
// Assuming the value in the struct is the enum index
|
||||
SerializeEnum (8,pcdsc.pdschConfigDedicated.pa);
|
||||
|
||||
// Serialize release
|
||||
SerializeNull ();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
if (pcdscOpt[0])
|
||||
{
|
||||
//Serialize Ul Configuration
|
||||
std::bitset<7> ulOpt;
|
||||
ulOpt.set (6, pcdsc.haveAntennaInfoUlDedicated);// antennaInfoUL-r10
|
||||
ulOpt.set (5,0); // pusch-ConfigDedicatedSCell-r10 not present
|
||||
ulOpt.set (4,0); // uplinkPowerControlDedicatedSCell-r10 not present
|
||||
ulOpt.set (3,0); // cqi-ReportConfigSCell-r10 not present
|
||||
ulOpt.set (2,pcdsc.haveSoundingRsUlConfigDedicated);// soundingRS-UL-ConfigDedicated-r10
|
||||
ulOpt.set (1,0); // soundingRS-UL-ConfigDedicated-v1020 not present
|
||||
ulOpt.set (0,0); // soundingRS-UL-ConfigDedicatedAperiodic-r10 not present
|
||||
SerializeSequence (ulOpt,false);
|
||||
|
||||
if (pcdsc.haveAntennaInfoUlDedicated)
|
||||
{
|
||||
// Serialize antennaInfo choice
|
||||
// 2 options. Selected: 0 ("explicitValue" of type "AntennaInfoDedicated")
|
||||
SerializeChoice (2,0,false);
|
||||
|
||||
// Serialize AntennaInfoDedicated sequence
|
||||
// 1 optional parameter, not present. No extension marker.
|
||||
SerializeSequence (std::bitset<1> (0),false);
|
||||
|
||||
// Serialize transmissionMode
|
||||
// Assuming the value in the struct is the enum index
|
||||
SerializeEnum (8,pcdsc.antennaInfoUl.transmissionMode);
|
||||
|
||||
// Serialize ue-TransmitAntennaSelection choice
|
||||
SerializeChoice (2,0,false);
|
||||
|
||||
// Serialize release
|
||||
SerializeNull ();
|
||||
}
|
||||
if (pcdsc.haveSoundingRsUlConfigDedicated)
|
||||
{
|
||||
// Serialize SoundingRS-UL-ConfigDedicated choice:
|
||||
switch (pcdsc.soundingRsUlConfigDedicated.type)
|
||||
{
|
||||
case LteRrcSap::SoundingRsUlConfigDedicated::RESET:
|
||||
SerializeChoice (2,0,false);
|
||||
SerializeNull ();
|
||||
break;
|
||||
|
||||
case LteRrcSap::SoundingRsUlConfigDedicated::SETUP:
|
||||
default:
|
||||
// 2 options, selected: 1 (setup)
|
||||
SerializeChoice (2,1,false);
|
||||
|
||||
// Serialize setup sequence
|
||||
// 0 optional / default fields, no extension marker.
|
||||
SerializeSequence (std::bitset<0> (),false);
|
||||
|
||||
// Serialize srs-Bandwidth
|
||||
SerializeEnum (4,pcdsc.soundingRsUlConfigDedicated.srsBandwidth);
|
||||
|
||||
// Serialize srs-HoppingBandwidth
|
||||
SerializeEnum (4,0);
|
||||
|
||||
// Serialize freqDomainPosition
|
||||
SerializeInteger (0,0,23);
|
||||
|
||||
// Serialize duration
|
||||
SerializeBoolean (false);
|
||||
|
||||
// Serialize srs-ConfigIndex
|
||||
SerializeInteger (pcdsc.soundingRsUlConfigDedicated.srsConfigIndex,0,1023);
|
||||
|
||||
// Serialize transmissionComb
|
||||
SerializeInteger (0,0,1);
|
||||
|
||||
// Serialize cyclicShift
|
||||
SerializeEnum (8,0);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Buffer::Iterator
|
||||
RrcAsn1Header::DeserializeThresholdEutra (LteRrcSap::ThresholdEutra * thresholdEutra, Buffer::Iterator bIterator)
|
||||
@@ -2256,6 +2574,305 @@ RrcAsn1Header::Print (std::ostream &os) const
|
||||
NS_FATAL_ERROR ("RrcAsn1Header Print() function must also specify LteRrcSap::RadioResourceConfigDedicated as a second argument");
|
||||
}
|
||||
|
||||
Buffer::Iterator
|
||||
RrcAsn1Header::DeserializeNonCriticalExtensionConfig (LteRrcSap::NonCriticalExtensionConfiguration *nonCriticalExtension, Buffer::Iterator bIterator)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
std::bitset<2> nonCriticalExtension_v890;
|
||||
bIterator = DeserializeSequence (&nonCriticalExtension_v890, false,bIterator);
|
||||
|
||||
if (nonCriticalExtension_v890[0])
|
||||
{
|
||||
// Continue to analyze future Release optional fields
|
||||
std::bitset<3> nonCriticalExtension_v920;
|
||||
bIterator = DeserializeSequence (&nonCriticalExtension_v920, false, bIterator);
|
||||
if (nonCriticalExtension_v920[0])
|
||||
{
|
||||
// Continue to deserialize futere Release optional fields
|
||||
std::bitset<3> nonCriticalExtension_v1020;
|
||||
bIterator = DeserializeSequence (&nonCriticalExtension_v1020, false, bIterator);
|
||||
int numElems;
|
||||
bIterator = DeserializeSequenceOf (&numElems,MAX_OBJECT_ID,1,bIterator);
|
||||
nonCriticalExtension->sCellsToAddModList.clear ();
|
||||
// Deserialize SCellToAddMod
|
||||
for (int i = 0; i < numElems; i++)
|
||||
{
|
||||
std::bitset<4> sCellToAddMod_r10;
|
||||
bIterator = DeserializeSequence (&sCellToAddMod_r10, false, bIterator);
|
||||
|
||||
LteRrcSap::SCellToAddMod sctam;
|
||||
// Deserialize sCellIndex
|
||||
int n;
|
||||
bIterator = DeserializeInteger (&n,1,MAX_OBJECT_ID,bIterator);
|
||||
sctam.sCellIndex = n;
|
||||
// Deserialize CellIdentification
|
||||
bIterator = DeserializeCellIdentification (&sctam.cellIdentification, bIterator);
|
||||
|
||||
// Deserialize RadioResourceConfigCommonSCell
|
||||
bIterator = DeserializeRadioResourceConfigCommonSCell (&sctam.radioResourceConfigCommonSCell, bIterator);
|
||||
if (sCellToAddMod_r10[0])
|
||||
{
|
||||
//Deserialize RadioResourceConfigDedicatedSCell
|
||||
bIterator = DeserializeRadioResourceConfigDedicatedSCell (&sctam.radioResourceConfigDedicateSCell, bIterator);
|
||||
}
|
||||
|
||||
nonCriticalExtension->sCellsToAddModList.insert (nonCriticalExtension->sCellsToAddModList.end (), sctam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return bIterator;
|
||||
}
|
||||
|
||||
Buffer::Iterator
|
||||
RrcAsn1Header::DeserializeCellIdentification (LteRrcSap::CellIdentification *ci, Buffer::Iterator bIterator)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
std::bitset<2> cellIdentification_r10;
|
||||
bIterator = DeserializeSequence (&cellIdentification_r10,false,bIterator);
|
||||
int n1;
|
||||
bIterator = DeserializeInteger (&n1,1,65536,bIterator);
|
||||
ci->physCellId = n1;
|
||||
int n2;
|
||||
bIterator = DeserializeInteger (&n2,1,65536,bIterator);
|
||||
ci->dlCarrierFreq = n2;
|
||||
|
||||
return bIterator;
|
||||
}
|
||||
|
||||
Buffer::Iterator
|
||||
RrcAsn1Header::DeserializeRadioResourceConfigCommonSCell (LteRrcSap::RadioResourceConfigCommonSCell *rrccsc, Buffer::Iterator bIterator)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
std::bitset<2> radioResourceConfigCommonSCell_r10;
|
||||
bIterator = DeserializeSequence (&radioResourceConfigCommonSCell_r10,false,bIterator);
|
||||
rrccsc->haveNonUlConfiguration = radioResourceConfigCommonSCell_r10[1];
|
||||
rrccsc->haveUlConfiguration = radioResourceConfigCommonSCell_r10[0];
|
||||
if (rrccsc->haveNonUlConfiguration)
|
||||
{
|
||||
std::bitset<5> nonUlConfiguration_r10;
|
||||
bIterator = DeserializeSequence (&nonUlConfiguration_r10,false,bIterator);
|
||||
int n;
|
||||
bIterator = DeserializeInteger (&n,6,100,bIterator);
|
||||
rrccsc->nonUlConfiguration.dlBandwidth = n;
|
||||
|
||||
std::bitset<1> antennaInfoCommon_r10;
|
||||
bIterator = DeserializeSequence (&antennaInfoCommon_r10,false,bIterator);
|
||||
bIterator = DeserializeInteger (&n,0,65536,bIterator);
|
||||
rrccsc->nonUlConfiguration.antennaInfoCommon.antennaPortsCount = n;
|
||||
|
||||
std::bitset<2> pdschConfigCommon_r10;
|
||||
bIterator = DeserializeSequence (&pdschConfigCommon_r10,false,bIterator);
|
||||
bIterator = DeserializeInteger (&n,-60,50,bIterator);
|
||||
rrccsc->nonUlConfiguration.pdschConfigCommon.referenceSignalPower = n;
|
||||
bIterator = DeserializeInteger (&n,0,3,bIterator);
|
||||
rrccsc->nonUlConfiguration.pdschConfigCommon.pb = n;
|
||||
}
|
||||
if (rrccsc->haveUlConfiguration)
|
||||
{
|
||||
std::bitset<7> UlConfiguration_r10;
|
||||
bIterator = DeserializeSequence (&UlConfiguration_r10,true,bIterator);
|
||||
|
||||
std::bitset<3> FreqInfo_r10;
|
||||
bIterator = DeserializeSequence (&FreqInfo_r10,false,bIterator);
|
||||
int n;
|
||||
bIterator = DeserializeInteger (&n,0,MAX_EARFCN,bIterator);
|
||||
rrccsc->ulConfiguration.ulFreqInfo.ulCarrierFreq = n;
|
||||
bIterator = DeserializeInteger (&n,6,100,bIterator);
|
||||
rrccsc->ulConfiguration.ulFreqInfo.ulBandwidth = n;
|
||||
|
||||
std::bitset<2> UlPowerControlCommonSCell_r10;
|
||||
bIterator = DeserializeSequence (&UlPowerControlCommonSCell_r10,false,bIterator);
|
||||
bIterator = DeserializeInteger (&n,0,MAX_EARFCN,bIterator);
|
||||
rrccsc->ulConfiguration.ulPowerControlCommonSCell.alpha = n;
|
||||
|
||||
std::bitset<1> prachConfigSCell_r10;
|
||||
bIterator = DeserializeSequence (&prachConfigSCell_r10,false,bIterator);
|
||||
bIterator = DeserializeInteger (&n,0,256,bIterator);
|
||||
rrccsc->ulConfiguration.prachConfigSCell.index = n;
|
||||
}
|
||||
|
||||
return bIterator;
|
||||
}
|
||||
|
||||
Buffer::Iterator
|
||||
RrcAsn1Header::DeserializeRadioResourceConfigDedicatedSCell (LteRrcSap::RadioResourceConfigDedicatedSCell *rrcdsc, Buffer::Iterator bIterator)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
std::bitset<1> RadioResourceConfigDedicatedSCell_r10;
|
||||
bIterator = DeserializeSequence (&RadioResourceConfigDedicatedSCell_r10,false,bIterator);
|
||||
DeserializePhysicalConfigDedicatedSCell (&rrcdsc->physicalConfigDedicatedSCell, bIterator);
|
||||
|
||||
return bIterator;
|
||||
}
|
||||
|
||||
Buffer::Iterator
|
||||
RrcAsn1Header::DeserializePhysicalConfigDedicatedSCell (LteRrcSap::PhysicalConfigDedicatedSCell *pcdsc, Buffer::Iterator bIterator)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
std::bitset<2> pcdscOpt;
|
||||
bIterator = DeserializeSequence (&pcdscOpt,true,bIterator);
|
||||
pcdsc->haveNonUlConfiguration = pcdscOpt[1];
|
||||
pcdsc->haveUlConfiguration = pcdscOpt[0];
|
||||
if (pcdsc->haveNonUlConfiguration)
|
||||
{
|
||||
std::bitset<4> nulOpt;
|
||||
bIterator = DeserializeSequence (&nulOpt,false,bIterator);
|
||||
pcdsc->haveAntennaInfoDedicated = nulOpt[3];
|
||||
pcdsc->havePdschConfigDedicated = nulOpt[0];
|
||||
|
||||
if (pcdsc->haveAntennaInfoDedicated)
|
||||
{
|
||||
// Deserialize antennaInfo
|
||||
int sel;
|
||||
bIterator = DeserializeChoice (2,false,&sel,bIterator);
|
||||
if (sel == 1)
|
||||
{
|
||||
bIterator = DeserializeNull (bIterator);
|
||||
}
|
||||
else if (sel == 0)
|
||||
{
|
||||
std::bitset<1> codebookSubsetRestrictionPresent;
|
||||
bIterator = DeserializeSequence (&codebookSubsetRestrictionPresent,false,bIterator);
|
||||
|
||||
int txmode;
|
||||
bIterator = DeserializeEnum (8,&txmode,bIterator);
|
||||
pcdsc->antennaInfo.transmissionMode = txmode;
|
||||
|
||||
if (codebookSubsetRestrictionPresent[0])
|
||||
{
|
||||
// Deserialize codebookSubsetRestriction
|
||||
// ...
|
||||
}
|
||||
|
||||
int txantennaselchosen;
|
||||
bIterator = DeserializeChoice (2,false,&txantennaselchosen,bIterator);
|
||||
if (txantennaselchosen == 0)
|
||||
{
|
||||
// Deserialize ue-TransmitAntennaSelection release
|
||||
bIterator = DeserializeNull (bIterator);
|
||||
}
|
||||
else if (txantennaselchosen == 1)
|
||||
{
|
||||
// Deserialize ue-TransmitAntennaSelection setup
|
||||
// ...
|
||||
}
|
||||
}
|
||||
}
|
||||
if (pcdsc->havePdschConfigDedicated)
|
||||
{
|
||||
// Deserialize pdsch-ConfigDedicated
|
||||
std::bitset<0> bitset0;
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
|
||||
int slct;
|
||||
|
||||
// Deserialize p-a
|
||||
bIterator = DeserializeEnum (8,&slct,bIterator);
|
||||
pcdsc->pdschConfigDedicated.pa = slct;
|
||||
|
||||
bIterator = DeserializeNull (bIterator);
|
||||
}
|
||||
|
||||
}
|
||||
if (pcdsc->haveUlConfiguration)
|
||||
{
|
||||
std::bitset<7> ulOpt;
|
||||
bIterator = DeserializeSequence (&ulOpt,false,bIterator);
|
||||
pcdsc->haveAntennaInfoUlDedicated = ulOpt[6];
|
||||
pcdsc->haveSoundingRsUlConfigDedicated = ulOpt[2];
|
||||
|
||||
if (pcdsc->haveAntennaInfoUlDedicated)
|
||||
{
|
||||
// Deserialize antennaInfo
|
||||
int sel;
|
||||
bIterator = DeserializeChoice (2,false,&sel,bIterator);
|
||||
if (sel == 1)
|
||||
{
|
||||
bIterator = DeserializeNull (bIterator);
|
||||
}
|
||||
else if (sel == 0)
|
||||
{
|
||||
std::bitset<1> codebookSubsetRestrictionPresent;
|
||||
bIterator = DeserializeSequence (&codebookSubsetRestrictionPresent,false,bIterator);
|
||||
|
||||
int txmode;
|
||||
bIterator = DeserializeEnum (8,&txmode,bIterator);
|
||||
pcdsc->antennaInfo.transmissionMode = txmode;
|
||||
|
||||
if (codebookSubsetRestrictionPresent[0])
|
||||
{
|
||||
// Deserialize codebookSubsetRestriction
|
||||
// ...
|
||||
}
|
||||
|
||||
int txantennaselchosen;
|
||||
bIterator = DeserializeChoice (2,false,&txantennaselchosen,bIterator);
|
||||
if (txantennaselchosen == 0)
|
||||
{
|
||||
// Deserialize ue-TransmitAntennaSelection release
|
||||
bIterator = DeserializeNull (bIterator);
|
||||
}
|
||||
else if (txantennaselchosen == 1)
|
||||
{
|
||||
// Deserialize ue-TransmitAntennaSelection setup
|
||||
// ...
|
||||
}
|
||||
}
|
||||
}
|
||||
if (pcdsc->haveSoundingRsUlConfigDedicated)
|
||||
{
|
||||
// Deserialize soundingRS-UL-ConfigDedicated
|
||||
int sel;
|
||||
bIterator = DeserializeChoice (2,false,&sel,bIterator);
|
||||
|
||||
if (sel == 0)
|
||||
{
|
||||
pcdsc->soundingRsUlConfigDedicated.type = LteRrcSap::SoundingRsUlConfigDedicated::RESET;
|
||||
|
||||
bIterator = DeserializeNull (bIterator);
|
||||
}
|
||||
|
||||
else if (sel == 1)
|
||||
{
|
||||
pcdsc->soundingRsUlConfigDedicated.type = LteRrcSap::SoundingRsUlConfigDedicated::SETUP;
|
||||
|
||||
std::bitset<0> bitset0;
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
|
||||
int slct;
|
||||
|
||||
// Deserialize srs-Bandwidth
|
||||
bIterator = DeserializeEnum (4,&slct,bIterator);
|
||||
pcdsc->soundingRsUlConfigDedicated.srsBandwidth = slct;
|
||||
|
||||
// Deserialize srs-HoppingBandwidth
|
||||
bIterator = DeserializeEnum (4,&slct,bIterator);
|
||||
|
||||
// Deserialize freqDomainPosition
|
||||
bIterator = DeserializeInteger (&slct,0,23,bIterator);
|
||||
|
||||
// Deserialize duration
|
||||
bool duration;
|
||||
bIterator = DeserializeBoolean (&duration,bIterator);
|
||||
|
||||
// Deserialize srs-ConfigIndex
|
||||
bIterator = DeserializeInteger (&slct,0,1023,bIterator);
|
||||
pcdsc->soundingRsUlConfigDedicated.srsConfigIndex = slct;
|
||||
|
||||
// Deserialize transmissionComb
|
||||
bIterator = DeserializeInteger (&slct,0,1,bIterator);
|
||||
|
||||
// Deserialize cyclicShift
|
||||
bIterator = DeserializeEnum (8,&slct,bIterator);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return bIterator;
|
||||
}
|
||||
void
|
||||
RrcAsn1Header::Print (std::ostream &os, LteRrcSap::RadioResourceConfigDedicated radioResourceConfigDedicated) const
|
||||
{
|
||||
@@ -2894,8 +3511,9 @@ RrcAsn1Header::DeserializeMeasResults (LteRrcSap::MeasResults *measResults, Buff
|
||||
{
|
||||
int n;
|
||||
std::bitset<0> b0;
|
||||
std::bitset<1> measResultNeighCellsPresent;
|
||||
bIterator = DeserializeSequence (&measResultNeighCellsPresent,true,bIterator);
|
||||
std::bitset<4> measResultOptionalPresent;
|
||||
// bIterator = DeserializeSequence (&measResultNeighCellsPresent,true,bIterator);
|
||||
bIterator = DeserializeSequence (&measResultOptionalPresent,true,bIterator);
|
||||
|
||||
// Deserialize measId
|
||||
bIterator = DeserializeInteger (&n, 1, MAX_MEAS_ID, bIterator);
|
||||
@@ -2912,7 +3530,8 @@ RrcAsn1Header::DeserializeMeasResults (LteRrcSap::MeasResults *measResults, Buff
|
||||
bIterator = DeserializeInteger (&n, 0, 34, bIterator);
|
||||
measResults->rsrqResult = n;
|
||||
|
||||
measResults->haveMeasResultNeighCells = measResultNeighCellsPresent[0];
|
||||
measResults->haveMeasResultNeighCells = measResultOptionalPresent[0];
|
||||
measResults->haveScellsMeas = measResultOptionalPresent[3];
|
||||
if ( measResults->haveMeasResultNeighCells)
|
||||
{
|
||||
int measResultNeighCellsChoice;
|
||||
@@ -3015,7 +3634,52 @@ RrcAsn1Header::DeserializeMeasResults (LteRrcSap::MeasResults *measResults, Buff
|
||||
// ...
|
||||
}
|
||||
}
|
||||
if (measResults->haveScellsMeas)
|
||||
{
|
||||
|
||||
int numElems;
|
||||
bIterator = DeserializeSequenceOf (&numElems,MAX_SCELL_REPORT,1,bIterator);
|
||||
for (int i = 0; i < numElems; i++)
|
||||
{
|
||||
LteRrcSap::MeasResultScell measResultScell;
|
||||
int measScellId;
|
||||
// Deserialize measId
|
||||
bIterator = DeserializeInteger (&measScellId, 1,MAX_SCELL_REPORT,bIterator);
|
||||
measResultScell.servFreqId = measScellId;
|
||||
std::bitset<2> measResultScellPresent;
|
||||
bIterator = DeserializeSequence (&measResultScellPresent,true,bIterator);
|
||||
measResults->measScellResultList.haveMeasurementResultsServingSCells = measResultScellPresent[0];
|
||||
measResults->measScellResultList.haveMeasurementResultsNeighCell = measResultScellPresent[1];
|
||||
if (measResults->measScellResultList.haveMeasurementResultsServingSCells)
|
||||
{
|
||||
// Deserialize measResult
|
||||
std::bitset<2> measResultOpts;
|
||||
bIterator = DeserializeSequence (&measResultOpts, true, bIterator);
|
||||
|
||||
measResultScell.haveRsrpResult = measResultOpts[1];
|
||||
if (measResultOpts[1])
|
||||
{
|
||||
// Deserialize rsrpResult
|
||||
bIterator = DeserializeInteger (&n,0,97,bIterator);
|
||||
measResultScell.rsrpResult = n;
|
||||
}
|
||||
|
||||
measResultScell.haveRsrqResult = measResultOpts[0];
|
||||
if (measResultOpts[0])
|
||||
{
|
||||
// Deserialize rsrqResult
|
||||
bIterator = DeserializeInteger (&n,0,34,bIterator);
|
||||
measResultScell.rsrqResult = n;
|
||||
}
|
||||
}
|
||||
if (measResults->measScellResultList.haveMeasurementResultsNeighCell)
|
||||
{
|
||||
// Deserialize measResultBestNeighCell
|
||||
}
|
||||
measResults->measScellResultList.measResultScell.push_back (measResultScell);
|
||||
}
|
||||
|
||||
}
|
||||
return bIterator;
|
||||
}
|
||||
|
||||
@@ -4447,7 +5111,7 @@ RrcConnectionReconfigurationHeader::PreSerialize () const
|
||||
options.set (3,0); // No dedicatedInfoNASList
|
||||
options.set (2,m_haveRadioResourceConfigDedicated);
|
||||
options.set (1,0); // No securityConfigHO
|
||||
options.set (0,0); // No nonCriticalExtension
|
||||
options.set (0,m_haveNonCriticalExtension); // Implemented nonCriticalExtension because compatibility with R10 - CA
|
||||
SerializeSequence (options,false);
|
||||
|
||||
if (m_haveMeasConfig)
|
||||
@@ -4553,6 +5217,28 @@ RrcConnectionReconfigurationHeader::PreSerialize () const
|
||||
{
|
||||
// Serialize RadioResourceConfigDedicated
|
||||
SerializeRadioResourceConfigDedicated (m_radioResourceConfigDedicated);
|
||||
}
|
||||
|
||||
if (m_haveNonCriticalExtension)
|
||||
{
|
||||
// Serialize NonCriticalExtension RRCConnectionReconfiguration-v890-IEs sequence:
|
||||
// 2 optional fields. Extension marker not present.
|
||||
std::bitset<2> noncriticalExtension_v890;
|
||||
noncriticalExtension_v890.set (1,0); // No lateNonCriticalExtension
|
||||
noncriticalExtension_v890.set (0,m_haveNonCriticalExtension); // Implemented nonCriticalExtension because compatibility with R10 - CA
|
||||
//Enable RRCCoonectionReconfiguration-v920-IEs
|
||||
SerializeSequence (noncriticalExtension_v890,false);
|
||||
|
||||
// Serialize NonCriticalExtension RRCConnectionReconfiguration-v920-IEs sequence:
|
||||
// 3 optional fields. Extension marker not present.
|
||||
std::bitset<3> noncriticalExtension_v920;
|
||||
noncriticalExtension_v920.set (1,0); // No otehrConfig-r9
|
||||
noncriticalExtension_v920.set (1,0); // No fullConfig-r9
|
||||
//Enable RRCCoonectionReconfiguration-v1020-IEs
|
||||
noncriticalExtension_v920.set (0,m_haveNonCriticalExtension); // Implemented nonCriticalExtension because compatibility with R10 - CA
|
||||
SerializeSequence (noncriticalExtension_v920,false);
|
||||
|
||||
SerializeNonCriticalExtensionConfiguration (m_nonCriticalExtension); //Serializing RRCConnectionReconfiguration-r8-IEs
|
||||
}
|
||||
|
||||
// Finish serialization
|
||||
@@ -4742,8 +5428,10 @@ RrcConnectionReconfigurationHeader::Deserialize (Buffer::Iterator bIterator)
|
||||
}
|
||||
|
||||
// nonCriticalExtension
|
||||
if (rrcConnRecOpts[0])
|
||||
m_haveNonCriticalExtension = rrcConnRecOpts[0];
|
||||
if (m_haveNonCriticalExtension)
|
||||
{
|
||||
bIterator = DeserializeNonCriticalExtensionConfig (&m_nonCriticalExtension,bIterator);
|
||||
// ...
|
||||
}
|
||||
}
|
||||
@@ -4999,6 +5687,8 @@ RrcConnectionReconfigurationHeader::SetMessage (LteRrcSap::RrcConnectionReconfig
|
||||
m_mobilityControlInfo = msg.mobilityControlInfo;
|
||||
m_haveRadioResourceConfigDedicated = msg.haveRadioResourceConfigDedicated;
|
||||
m_radioResourceConfigDedicated = msg.radioResourceConfigDedicated;
|
||||
m_haveNonCriticalExtension = msg.haveNonCriticalExtension;
|
||||
m_nonCriticalExtension = msg.nonCriticalExtension;
|
||||
|
||||
m_isDataSerialized = false;
|
||||
}
|
||||
@@ -5015,6 +5705,8 @@ RrcConnectionReconfigurationHeader::GetMessage () const
|
||||
msg.mobilityControlInfo = m_mobilityControlInfo;
|
||||
msg.haveRadioResourceConfigDedicated = m_haveRadioResourceConfigDedicated;
|
||||
msg.radioResourceConfigDedicated = m_radioResourceConfigDedicated;
|
||||
msg.haveNonCriticalExtension = m_haveNonCriticalExtension;
|
||||
msg.nonCriticalExtension = m_nonCriticalExtension;
|
||||
|
||||
return msg;
|
||||
}
|
||||
@@ -5059,6 +5751,18 @@ LteRrcSap::RadioResourceConfigDedicated
|
||||
RrcConnectionReconfigurationHeader::GetRadioResourceConfigDedicated ()
|
||||
{
|
||||
return m_radioResourceConfigDedicated;
|
||||
}
|
||||
|
||||
bool
|
||||
RrcConnectionReconfigurationHeader::GetHaveNonCriticalExtensionConfig ()
|
||||
{
|
||||
return m_haveNonCriticalExtension;
|
||||
}
|
||||
|
||||
LteRrcSap::NonCriticalExtensionConfiguration
|
||||
RrcConnectionReconfigurationHeader::GetNonCriticalExtensionConfig ()
|
||||
{
|
||||
return m_nonCriticalExtension;
|
||||
}
|
||||
|
||||
bool
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Lluis Parcerisa <lparcerisa@cttc.cat>
|
||||
* Modified by:
|
||||
* Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregation - GSoC 2015)
|
||||
* Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)
|
||||
*/
|
||||
|
||||
#ifndef RRC_HEADER_H
|
||||
@@ -54,6 +57,7 @@ protected:
|
||||
void SerializeLogicalChannelConfig (LteRrcSap::LogicalChannelConfig logicalChannelConfig) const;
|
||||
void SerializeRadioResourceConfigDedicated (LteRrcSap::RadioResourceConfigDedicated radioResourceConfigDedicated) const;
|
||||
void SerializePhysicalConfigDedicated (LteRrcSap::PhysicalConfigDedicated physicalConfigDedicated) const;
|
||||
void SerializePhysicalConfigDedicatedSCell (LteRrcSap::PhysicalConfigDedicatedSCell pcdsc) const;
|
||||
void SerializeSystemInformationBlockType1 (LteRrcSap::SystemInformationBlockType1 systemInformationBlockType1) const;
|
||||
void SerializeSystemInformationBlockType2 (LteRrcSap::SystemInformationBlockType2 systemInformationBlockType2) const;
|
||||
void SerializeRadioResourceConfigCommon (LteRrcSap::RadioResourceConfigCommon radioResourceConfigCommon) const;
|
||||
@@ -62,6 +66,9 @@ protected:
|
||||
void SerializePlmnIdentity (uint32_t plmnId) const;
|
||||
void SerializeRachConfigCommon (LteRrcSap::RachConfigCommon rachConfigCommon) const;
|
||||
void SerializeMeasConfig (LteRrcSap::MeasConfig measConfig) const;
|
||||
void SerializeNonCriticalExtensionConfiguration (LteRrcSap::NonCriticalExtensionConfiguration nonCriticalExtensionConfiguration) const;
|
||||
void SerializeRadioResourceConfigCommonSCell (LteRrcSap::RadioResourceConfigCommonSCell rrccsc) const;
|
||||
void SerializeRadioResourceDedicatedSCell (LteRrcSap::RadioResourceConfigDedicatedSCell rrcdsc) const;
|
||||
void SerializeQoffsetRange (int8_t qOffsetRange) const;
|
||||
void SerializeThresholdEutra (LteRrcSap::ThresholdEutra thresholdEutra) const;
|
||||
|
||||
@@ -81,6 +88,11 @@ protected:
|
||||
Buffer::Iterator DeserializeMeasConfig (LteRrcSap::MeasConfig * measConfig, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeQoffsetRange (int8_t * qOffsetRange, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeThresholdEutra (LteRrcSap::ThresholdEutra * thresholdEutra, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeNonCriticalExtensionConfig (LteRrcSap::NonCriticalExtensionConfiguration * nonCriticalExtension, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeCellIdentification (LteRrcSap::CellIdentification * ci, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeRadioResourceConfigCommonSCell (LteRrcSap::RadioResourceConfigCommonSCell * rrccsc, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeRadioResourceConfigDedicatedSCell (LteRrcSap::RadioResourceConfigDedicatedSCell * rrcdsc, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializePhysicalConfigDedicatedSCell (LteRrcSap::PhysicalConfigDedicatedSCell *pcdsc, Buffer::Iterator bIterator);
|
||||
|
||||
void Print (std::ostream &os) const;
|
||||
/**
|
||||
@@ -446,6 +458,18 @@ public:
|
||||
*/
|
||||
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated () const;
|
||||
|
||||
/**
|
||||
* Getter for m_haveNonCriticalExtension
|
||||
* @return m_haveNonCriticalExtension
|
||||
*/
|
||||
bool GetHaveNonCriticalExtensionConfig ();
|
||||
|
||||
/**
|
||||
* Getter for m_nonCriticalExtension
|
||||
* @return m_nonCriticalExtension
|
||||
*/
|
||||
LteRrcSap::NonCriticalExtensionConfiguration GetNonCriticalExtensionConfig ();
|
||||
|
||||
/**
|
||||
* Gets m_radioResourceConfigDedicated.havePhysicalConfigDedicated
|
||||
* @return m_radioResourceConfigDedicated.havePhysicalConfigDedicated
|
||||
|
||||
@@ -607,6 +607,8 @@ public:
|
||||
uint8_t rsrqResult;
|
||||
bool haveMeasResultNeighCells;
|
||||
std::list<MeasResultEutra> measResultListEutra;
|
||||
bool haveScellsMeas;
|
||||
MeasResultServFreqList measScellResultList;
|
||||
};
|
||||
|
||||
// Messages
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
*
|
||||
* Author: Nicola Baldo <nbaldo@cttc.es>
|
||||
* Budiarto Herman <budiarto.herman@magister.fi>
|
||||
* Modified by:
|
||||
* Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregation - GSoC 2015)
|
||||
* Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)
|
||||
*/
|
||||
|
||||
#include "lte-ue-rrc.h"
|
||||
@@ -127,6 +130,7 @@ LteUeRrc::LteUeRrc ()
|
||||
m_rrcSapUser (0),
|
||||
m_macSapProvider (0),
|
||||
m_asSapUser (0),
|
||||
m_ccmRrcSapProvider (0),
|
||||
m_state (IDLE_START),
|
||||
m_imsi (0),
|
||||
m_rnti (0),
|
||||
@@ -136,7 +140,8 @@ LteUeRrc::LteUeRrc ()
|
||||
m_hasReceivedMib (false),
|
||||
m_hasReceivedSib1 (false),
|
||||
m_hasReceivedSib2 (false),
|
||||
m_csgWhiteList (0)
|
||||
m_csgWhiteList (0),
|
||||
m_numberOfComponentCarriers (0)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
m_cphySapUser = new MemberLteUeCphySapUser<LteUeRrc> (this);
|
||||
@@ -144,6 +149,7 @@ LteUeRrc::LteUeRrc ()
|
||||
m_rrcSapProvider = new MemberLteUeRrcSapProvider<LteUeRrc> (this);
|
||||
m_drbPdcpSapUser = new LtePdcpSpecificLtePdcpSapUser<LteUeRrc> (this);
|
||||
m_asSapProvider = new MemberLteAsSapProvider<LteUeRrc> (this);
|
||||
m_ccmRrcSapUser = new MemberLteUeCcmRrcSapUser<LteUeRrc> (this);
|
||||
}
|
||||
|
||||
|
||||
@@ -161,6 +167,7 @@ LteUeRrc::DoDispose ()
|
||||
delete m_rrcSapProvider;
|
||||
delete m_drbPdcpSapUser;
|
||||
delete m_asSapProvider;
|
||||
delete m_ccmRrcSapUser;
|
||||
m_drbMap.clear ();
|
||||
}
|
||||
|
||||
@@ -169,7 +176,7 @@ LteUeRrc::GetTypeId (void)
|
||||
{
|
||||
static TypeId tid = TypeId ("ns3::LteUeRrc")
|
||||
.SetParent<Object> ()
|
||||
.SetGroupName("Lte")
|
||||
.SetGroupName ("Lte")
|
||||
.AddConstructor<LteUeRrc> ()
|
||||
.AddAttribute ("DataRadioBearerMap", "List of UE RadioBearerInfo for Data Radio Bearers by LCID.",
|
||||
ObjectMapValue (),
|
||||
@@ -309,6 +316,20 @@ LteUeRrc::SetLteMacSapProvider (LteMacSapProvider * s)
|
||||
m_macSapProvider = s;
|
||||
}
|
||||
|
||||
void
|
||||
LteUeRrc::SetLteCcmRrcSapProvider (LteUeCcmRrcSapProvider * s)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << s);
|
||||
m_ccmRrcSapProvider = s;
|
||||
}
|
||||
|
||||
LteUeCcmRrcSapUser*
|
||||
LteUeRrc::GetLteCcmRrcSapUser ()
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
return m_ccmRrcSapUser;
|
||||
}
|
||||
|
||||
void
|
||||
LteUeRrc::SetAsSapUser (LteAsSapUser* s)
|
||||
{
|
||||
@@ -718,6 +739,7 @@ void
|
||||
LteUeRrc::DoRecvSystemInformationBlockType1 (uint16_t cellId,
|
||||
LteRrcSap::SystemInformationBlockType1 msg)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
switch (m_state)
|
||||
{
|
||||
case IDLE_WAIT_SIB1:
|
||||
@@ -760,13 +782,25 @@ LteUeRrc::DoReportUeMeasurements (LteUeCphySapUser::UeMeasurementsParameters par
|
||||
|
||||
// layer 3 filtering does not apply in IDLE mode
|
||||
bool useLayer3Filtering = (m_state == CONNECTED_NORMALLY);
|
||||
|
||||
bool triggering = true;
|
||||
std::vector <LteUeCphySapUser::UeMeasurementsElement>::iterator newMeasIt;
|
||||
for (newMeasIt = params.m_ueMeasurementsList.begin ();
|
||||
newMeasIt != params.m_ueMeasurementsList.end (); ++newMeasIt)
|
||||
{
|
||||
SaveUeMeasurements (newMeasIt->m_cellId, newMeasIt->m_rsrp,
|
||||
newMeasIt->m_rsrq, useLayer3Filtering);
|
||||
if (params.m_componentCarrierId != 0)
|
||||
{
|
||||
triggering = false; // report is triggered only when an event is on the primary carrier
|
||||
// in this case the measurement received is related to secondary carriers
|
||||
// measurements related to secondary carriers are saved on a different portion of memory
|
||||
SaveScellUeMeasurements (newMeasIt->m_cellId, newMeasIt->m_rsrp,
|
||||
newMeasIt->m_rsrq, useLayer3Filtering,
|
||||
params.m_componentCarrierId );
|
||||
}
|
||||
else
|
||||
{
|
||||
SaveUeMeasurements (newMeasIt->m_cellId, newMeasIt->m_rsrp,
|
||||
newMeasIt->m_rsrq, useLayer3Filtering);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_state == IDLE_CELL_SEARCH)
|
||||
@@ -776,11 +810,14 @@ LteUeRrc::DoReportUeMeasurements (LteUeCphySapUser::UeMeasurementsParameters par
|
||||
}
|
||||
else
|
||||
{
|
||||
std::map<uint8_t, LteRrcSap::MeasIdToAddMod>::iterator measIdIt;
|
||||
for (measIdIt = m_varMeasConfig.measIdList.begin ();
|
||||
measIdIt != m_varMeasConfig.measIdList.end (); ++measIdIt)
|
||||
if (triggering)
|
||||
{
|
||||
MeasurementReportTriggering (measIdIt->first);
|
||||
std::map<uint8_t, LteRrcSap::MeasIdToAddMod>::iterator measIdIt;
|
||||
for (measIdIt = m_varMeasConfig.measIdList.begin ();
|
||||
measIdIt != m_varMeasConfig.measIdList.end (); ++measIdIt)
|
||||
{
|
||||
MeasurementReportTriggering (measIdIt->first);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -790,7 +827,7 @@ LteUeRrc::DoReportUeMeasurements (LteUeCphySapUser::UeMeasurementsParameters par
|
||||
|
||||
// RRC SAP methods
|
||||
|
||||
void
|
||||
void
|
||||
LteUeRrc::DoCompleteSetup (LteUeRrcSapProvider::CompleteSetupParameters params)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << " RNTI " << m_rnti);
|
||||
@@ -875,6 +912,7 @@ void
|
||||
LteUeRrc::DoRecvRrcConnectionReconfiguration (LteRrcSap::RrcConnectionReconfiguration msg)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << " RNTI " << m_rnti);
|
||||
NS_LOG_INFO ("DoRecvRrcConnectionReconfiguration haveNonCriticalExtension:" << msg.haveNonCriticalExtension );
|
||||
switch (m_state)
|
||||
{
|
||||
case CONNECTED_NORMALLY:
|
||||
@@ -921,6 +959,11 @@ LteUeRrc::DoRecvRrcConnectionReconfiguration (LteRrcSap::RrcConnectionReconfigur
|
||||
else
|
||||
{
|
||||
NS_LOG_INFO ("haveMobilityControlInfo == false");
|
||||
if (msg.haveNonCriticalExtension)
|
||||
{
|
||||
ApplyRadioResourceConfigDedicatedSecondaryCarrier (msg.nonCriticalExtension);
|
||||
NS_LOG_FUNCTION ( this << "RNTI " << m_rnti << " Configured for CA" );
|
||||
}
|
||||
if (msg.haveRadioResourceConfigDedicated)
|
||||
{
|
||||
ApplyRadioResourceConfigDedicated (msg.radioResourceConfigDedicated);
|
||||
@@ -1119,6 +1162,41 @@ LteUeRrc::EvaluateCellForSelection ()
|
||||
} // end of void LteUeRrc::EvaluateCellForSelection ()
|
||||
|
||||
|
||||
void
|
||||
LteUeRrc::ApplyRadioResourceConfigDedicatedSecondaryCarrier (LteRrcSap::NonCriticalExtensionConfiguration nonCec)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
|
||||
for(std::list<LteRrcSap::SCellToAddMod>::iterator it = nonCec.sCellsToAddModList.begin(); it!=nonCec.sCellsToAddModList.end(); it++)
|
||||
{
|
||||
LteRrcSap::SCellToAddMod scell = *it;
|
||||
uint8_t ccId = scell.sCellIndex;
|
||||
|
||||
if (ccId>=m_numberOfComponentCarriers)
|
||||
break;
|
||||
|
||||
uint8_t ulBand = scell.radioResourceConfigCommonSCell.ulConfiguration.ulFreqInfo.ulBandwidth;
|
||||
uint32_t ulEarfcn = scell.radioResourceConfigCommonSCell.ulConfiguration.ulFreqInfo.ulCarrierFreq;
|
||||
uint8_t dlBand = scell.radioResourceConfigCommonSCell.nonUlConfiguration.dlBandwidth;
|
||||
uint32_t dlEarfcn = scell.cellIdentification.dlCarrierFreq;
|
||||
uint8_t txMode = scell.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.antennaInfo.transmissionMode;
|
||||
uint8_t srsIndex = scell.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.soundingRsUlConfigDedicated.srsConfigIndex;
|
||||
|
||||
m_cphySapProvider->SynchronizeWithEnb (m_cellId, dlEarfcn);
|
||||
m_cphySapProvider->SetDlBandwidth (dlBand);
|
||||
m_cphySapProvider->ConfigureUplink (ulEarfcn, ulBand);
|
||||
m_cphySapProvider->ConfigureReferenceSignalPower (scell.radioResourceConfigCommonSCell.nonUlConfiguration.pdschConfigCommon.referenceSignalPower);
|
||||
m_cphySapProvider->SetTransmissionMode (txMode);
|
||||
m_cphySapProvider->SetRnti(m_rnti);
|
||||
m_cmacSapProvider->SetRnti(m_rnti);
|
||||
// update PdschConfigDedicated (i.e. P_A value)
|
||||
LteRrcSap::PdschConfigDedicated pdschConfigDedicated = scell.radioResourceConfigDedicateSCell.physicalConfigDedicatedSCell.pdschConfigDedicated;
|
||||
double paDouble = LteRrcSap::ConvertPdschConfigDedicated2Double (pdschConfigDedicated);
|
||||
m_cphySapProvider->SetPa (paDouble);
|
||||
m_cphySapProvider->SetSrsConfigurationIndex (srsIndex);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
LteUeRrc::ApplyRadioResourceConfigDedicated (LteRrcSap::RadioResourceConfigDedicated rrcd)
|
||||
{
|
||||
@@ -1185,7 +1263,7 @@ LteUeRrc::ApplyRadioResourceConfigDedicated (LteRrcSap::RadioResourceConfigDedic
|
||||
m_cmacSapProvider->AddLc (lcid, lcConfig, rlc->GetLteMacSapUser ());
|
||||
|
||||
++stamIt;
|
||||
NS_ASSERT_MSG (stamIt == rrcd.srbToAddModList.end (), "at most one SrbToAdd supported");
|
||||
NS_ASSERT_MSG (stamIt == rrcd.srbToAddModList.end (), "at most one SrbToAdd supported");
|
||||
|
||||
LteUeRrcSapUser::SetupParameters ueParams;
|
||||
ueParams.srb0SapProvider = m_srb0->m_rlc->GetLteRlcSapProvider ();
|
||||
@@ -2682,6 +2760,28 @@ LteUeRrc::SendMeasurementReport (uint8_t measId)
|
||||
NS_LOG_WARN (this << " cellsTriggeredList is empty");
|
||||
}
|
||||
|
||||
measResults.haveScellsMeas = false;
|
||||
std::map<uint16_t, MeasValues>::iterator sCellsMeasIt = m_storedScellMeasValues.begin ();
|
||||
if (sCellsMeasIt != m_storedScellMeasValues.end ())
|
||||
{
|
||||
measResults.haveScellsMeas = true;
|
||||
measResults.measScellResultList.haveMeasurementResultsServingSCells = true;
|
||||
measResults.measScellResultList.haveMeasurementResultsNeighCell = false;
|
||||
|
||||
|
||||
for ( sCellsMeasIt = m_storedScellMeasValues.begin ();
|
||||
sCellsMeasIt != m_storedScellMeasValues.end (); ++sCellsMeasIt)
|
||||
{
|
||||
LteRrcSap::MeasResultScell measResultScell;
|
||||
measResultScell.servFreqId = sCellsMeasIt->first;
|
||||
measResultScell.haveRsrpResult = true;
|
||||
measResultScell.haveRsrqResult = true;
|
||||
measResultScell.rsrpResult = EutranMeasurementMapping::Dbm2RsrpRange (sCellsMeasIt->second.rsrp);
|
||||
measResultScell.rsrqResult = EutranMeasurementMapping::Db2RsrqRange (sCellsMeasIt->second.rsrq);
|
||||
measResults.measScellResultList.measResultScell.push_back (measResultScell);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The current LteRrcSap implementation is broken in that it does not
|
||||
* allow for infinite values of reportAmount, which is probably the most
|
||||
@@ -2859,7 +2959,73 @@ LteUeRrc::SwitchToState (State newState)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
LteUeRrc::DoComponentCarrierEnabling (std::vector<uint8_t> res)
|
||||
{
|
||||
NS_LOG_INFO (this);
|
||||
}
|
||||
|
||||
void
|
||||
LteUeRrc::SaveScellUeMeasurements (uint16_t sCellId, double rsrp, double rsrq,
|
||||
bool useLayer3Filtering, uint16_t componentCarrierId)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << sCellId << componentCarrierId << rsrp << rsrq << useLayer3Filtering);
|
||||
if (sCellId == m_cellId)
|
||||
{
|
||||
|
||||
std::map<uint16_t, MeasValues>::iterator storedMeasIt = m_storedScellMeasValues.find (componentCarrierId);
|
||||
|
||||
if (storedMeasIt != m_storedScellMeasValues.end ())
|
||||
{
|
||||
if (useLayer3Filtering)
|
||||
{
|
||||
// F_n = (1-a) F_{n-1} + a M_n
|
||||
storedMeasIt->second.rsrp = (1 - m_varMeasConfig.aRsrp) * storedMeasIt->second.rsrp
|
||||
+ m_varMeasConfig.aRsrp * rsrp;
|
||||
|
||||
if (std::isnan (storedMeasIt->second.rsrq))
|
||||
{
|
||||
// the previous RSRQ measurements provided UE PHY are invalid
|
||||
storedMeasIt->second.rsrq = rsrq; // replace it with unfiltered value
|
||||
}
|
||||
else
|
||||
{
|
||||
storedMeasIt->second.rsrq = (1 - m_varMeasConfig.aRsrq) * storedMeasIt->second.rsrq
|
||||
+ m_varMeasConfig.aRsrq * rsrq;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
storedMeasIt->second.rsrp = rsrp;
|
||||
storedMeasIt->second.rsrq = rsrq;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// first value is always unfiltered
|
||||
MeasValues v;
|
||||
v.rsrp = rsrp;
|
||||
v.rsrq = rsrq;
|
||||
std::pair<uint16_t, MeasValues> val (componentCarrierId, v);
|
||||
std::pair<std::map<uint16_t, MeasValues>::iterator, bool>
|
||||
ret = m_storedScellMeasValues.insert (val);
|
||||
NS_ASSERT_MSG (ret.second == true, "element already existed");
|
||||
storedMeasIt = ret.first;
|
||||
}
|
||||
|
||||
NS_LOG_DEBUG (this << " IMSI " << m_imsi << " state " << ToString (m_state)
|
||||
<< ", measured cell " << sCellId
|
||||
<< ", carrier component Id " << componentCarrierId
|
||||
<< ", new RSRP " << rsrp << " stored " << storedMeasIt->second.rsrp
|
||||
<< ", new RSRQ " << rsrq << " stored " << storedMeasIt->second.rsrq);
|
||||
storedMeasIt->second.timestamp = Simulator::Now ();
|
||||
}
|
||||
else
|
||||
{
|
||||
NS_LOG_DEBUG (this << " IMSI " << m_imsi << "measurement on SCC from not serving cell ");
|
||||
}
|
||||
|
||||
} // end of void SaveUeMeasurements
|
||||
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
*
|
||||
* Author: Nicola Baldo <nbaldo@cttc.es>
|
||||
* Budiarto Herman <budiarto.herman@magister.fi>
|
||||
* Modified by:
|
||||
* Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregation - GSoC 2015)
|
||||
* Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)
|
||||
*/
|
||||
|
||||
#ifndef LTE_UE_RRC_H
|
||||
@@ -30,10 +33,16 @@
|
||||
#include <ns3/lte-ue-cphy-sap.h>
|
||||
#include <ns3/lte-rrc-sap.h>
|
||||
#include <ns3/traced-callback.h>
|
||||
#include "ns3/component-carrier-ue.h"
|
||||
#include <ns3/lte-ue-ccm-rrc-sap.h>
|
||||
#include <vector>
|
||||
|
||||
#include <map>
|
||||
#include <set>
|
||||
|
||||
#define MIN_NO_CC 1
|
||||
#define MAX_NO_CC 5 // this is the maximum number of carrier components allowed by 3GPP up to R13
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
|
||||
@@ -76,6 +85,7 @@ class LteUeRrc : public Object
|
||||
friend class MemberLteAsSapProvider<LteUeRrc>;
|
||||
friend class MemberLteUeCphySapUser<LteUeRrc>;
|
||||
friend class MemberLteUeRrcSapProvider<LteUeRrc>;
|
||||
friend class MemberLteUeCcmRrcSapUser<LteUeRrc>;
|
||||
|
||||
public:
|
||||
|
||||
@@ -122,7 +132,6 @@ private:
|
||||
public:
|
||||
static TypeId GetTypeId (void);
|
||||
|
||||
|
||||
/**
|
||||
* set the CPHY SAP this RRC should use to interact with the PHY
|
||||
*
|
||||
@@ -189,6 +198,20 @@ public:
|
||||
*/
|
||||
LteAsSapProvider* GetAsSapProvider ();
|
||||
|
||||
/**
|
||||
* set the Component Carrier Management SAP this RRC should interact with
|
||||
*
|
||||
* \param s the Component Carrier Management SAP Provider to be used by this RRC
|
||||
*/
|
||||
void SetLteCcmRrcSapProvider (LteUeCcmRrcSapProvider * s);
|
||||
|
||||
/**
|
||||
* Get the Component Carrier Management SAP offered by this RRC
|
||||
* \return s the Component Carrier Management SAP User interface offered to the
|
||||
* carrier component selection algorithm by this RRC
|
||||
*/
|
||||
LteUeCcmRrcSapUser* GetLteCcmRrcSapUser ();
|
||||
|
||||
/**
|
||||
*
|
||||
* \param imsi the unique UE identifier
|
||||
@@ -246,6 +269,17 @@ public:
|
||||
*/
|
||||
void SetUseRlcSm (bool val);
|
||||
|
||||
/**
|
||||
*
|
||||
* \param support CA
|
||||
*/
|
||||
void SetCaSupport (bool supportCa);
|
||||
|
||||
/**
|
||||
*
|
||||
* \return support CA
|
||||
*/
|
||||
bool GetCaSupport (void) const;
|
||||
|
||||
/**
|
||||
* TracedCallback signature for imsi, cellId and rnti events.
|
||||
@@ -337,6 +371,9 @@ private:
|
||||
/// Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReject interface.
|
||||
void DoRecvRrcConnectionReject (LteRrcSap::RrcConnectionReject msg);
|
||||
|
||||
// RRC CCM SAP USER Method
|
||||
void DoComponentCarrierEnabling (std::vector<uint8_t> res);
|
||||
|
||||
|
||||
// INTERNAL METHODS
|
||||
|
||||
@@ -448,6 +485,24 @@ private:
|
||||
void SaveUeMeasurements (uint16_t cellId, double rsrp, double rsrq,
|
||||
bool useLayer3Filtering);
|
||||
|
||||
/**
|
||||
* \brief keep the given measurement result as the latest measurement figures,
|
||||
* to be utilised by UE RRC functions.
|
||||
* \param cellId the cell ID of the measured cell
|
||||
* \param rsrp measured RSRP value to be saved (in dBm)
|
||||
* \param rsrq measured RSRQ value to be saved (in dB)
|
||||
* \param useLayer3Filtering
|
||||
* \param componentCarrierId
|
||||
* \todo Remove the useLayer3Filtering argument
|
||||
*
|
||||
* As for SaveUeMeasurements, this function aims to store the latest measurements
|
||||
* related to the secondary component carriers.
|
||||
* in the current implementation it saves only measurements related on the serving
|
||||
* secondary carriers while, measurements related to the Neighbor Cell are filtered
|
||||
*/
|
||||
|
||||
void SaveScellUeMeasurements (uint16_t cellId, double rsrp, double rsrq,
|
||||
bool useLayer3Filtering, uint16_t componentCarrierId);
|
||||
/**
|
||||
* \brief Evaluate the reporting criteria of a measurement identity and
|
||||
* invoke some reporting actions based on the result.
|
||||
@@ -508,6 +563,7 @@ private:
|
||||
void SendMeasurementReport (uint8_t measId);
|
||||
|
||||
void ApplyRadioResourceConfigDedicated (LteRrcSap::RadioResourceConfigDedicated rrcd);
|
||||
void ApplyRadioResourceConfigDedicatedSecondaryCarrier (LteRrcSap::NonCriticalExtensionConfiguration nonCec);
|
||||
void StartConnection ();
|
||||
void LeaveConnectedMode ();
|
||||
void DisposeOldSrb1 ();
|
||||
@@ -535,6 +591,13 @@ private:
|
||||
LteAsSapProvider* m_asSapProvider;
|
||||
LteAsSapUser* m_asSapUser;
|
||||
|
||||
// Receive API calls from the LteUeComponetCarrierManager instance.
|
||||
// LteCcmRrcSapUser* m_ccmRrcSapUser;
|
||||
/// Interface to the LteUeComponetCarrierManage instance.
|
||||
LteUeCcmRrcSapProvider* m_ccmRrcSapProvider;
|
||||
LteUeCcmRrcSapUser* m_ccmRrcSapUser;
|
||||
|
||||
|
||||
/// The current UE RRC state.
|
||||
State m_state;
|
||||
|
||||
@@ -809,6 +872,26 @@ private:
|
||||
*/
|
||||
std::map<uint16_t, MeasValues> m_storedMeasValues;
|
||||
|
||||
std::map<uint16_t, std::map <uint8_t, MeasValues> > m_storedMeasValuesPerCarrier;
|
||||
|
||||
/**
|
||||
* \brief Internal storage of the latest measurement results from all detected
|
||||
* detected Secondary carrier component, indexed by the carrier component ID
|
||||
* where the measurement was taken from.
|
||||
*
|
||||
* Each *measurement result* comprises of RSRP (in dBm) and RSRQ (in dB).
|
||||
*
|
||||
* In IDLE mode, the measurement results are used by the *initial cell
|
||||
* selection* procedure. While in CONNECTED mode, *layer-3 filtering* is
|
||||
* applied to the measurement results and they are used by *UE measurements*
|
||||
* function:
|
||||
* - LteUeRrc::MeasurementReportTriggering: in this case it is not set any
|
||||
* measurment related to seconday carrier components since the
|
||||
* A6 event is not implemented
|
||||
* - LteUeRrc::SendMeasurementReport: in this case the report are sent.
|
||||
*/
|
||||
std::map<uint16_t, MeasValues> m_storedScellMeasValues;
|
||||
|
||||
/**
|
||||
* \brief Represents a single triggered event from a measurement identity
|
||||
* which reporting criteria have been fulfilled, but delayed by
|
||||
@@ -943,6 +1026,12 @@ private:
|
||||
*/
|
||||
void ConnectionTimeout ();
|
||||
|
||||
public:
|
||||
/**
|
||||
* The number of component carriers.
|
||||
*/
|
||||
uint16_t m_numberOfComponentCarriers;
|
||||
|
||||
}; // end of class LteUeRrc
|
||||
|
||||
|
||||
|
||||
@@ -574,6 +574,7 @@ RrcConnectionReconfigurationTestCase::DoRun (void)
|
||||
|
||||
msg.radioResourceConfigDedicated = CreateRadioResourceConfigDedicated ();
|
||||
|
||||
msg.haveNonCriticalExtension = false; //Danilo
|
||||
RrcConnectionReconfigurationHeader source;
|
||||
source.SetMessage (msg);
|
||||
|
||||
@@ -946,6 +947,7 @@ MeasurementReportTestCase::DoRun (void)
|
||||
mResEutra.cgiInfo.trackingAreaCode = 5;
|
||||
msg.measResults.measResultListEutra.push_back (mResEutra);
|
||||
|
||||
msg.measResults.haveScellsMeas = false;
|
||||
|
||||
MeasurementReportHeader source;
|
||||
source.SetMessage (msg);
|
||||
|
||||
Reference in New Issue
Block a user