diff --git a/src/lte/bindings/callbacks_list.py b/src/lte/bindings/callbacks_list.py index 48dc4f75c..bd406fdf1 100644 --- a/src/lte/bindings/callbacks_list.py +++ b/src/lte/bindings/callbacks_list.py @@ -1,10 +1,6 @@ callback_classes = [ ['void', 'ns3::Ptr', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], - ['void', 'unsigned short', 'ns3::Ptr', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], ['void', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], - ['void', 'ns3::UlInfoListElement_s', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], - ['void', 'ns3::DlInfoListElement_s', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], - ['void', 'std::list, std::allocator > >', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], ['bool', 'ns3::Ptr', 'ns3::Ptr', 'unsigned short', 'ns3::Address const&', 'ns3::Address const&', 'ns3::NetDevice::PacketType', 'ns3::empty', 'ns3::empty', 'ns3::empty'], ['bool', 'ns3::Ptr', 'ns3::Ptr', 'unsigned short', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], ['bool', 'ns3::Ptr', 'ns3::Address const&', 'ns3::Address const&', 'unsigned short', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], @@ -13,5 +9,9 @@ callback_classes = [ ['void', 'ns3::Ptr', 'unsigned int', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], ['void', 'ns3::Ptr', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], ['bool', 'ns3::Ptr', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], + ['void', 'unsigned short', 'ns3::Ptr', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], + ['void', 'ns3::UlInfoListElement_s', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], + ['void', 'ns3::DlInfoListElement_s', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], + ['void', 'std::list, std::allocator > >', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], ['unsigned char', 'ns3::Ptr', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], ] diff --git a/src/lte/bindings/modulegen__gcc_ILP32.py b/src/lte/bindings/modulegen__gcc_ILP32.py index 529fe10c7..a6bd9b809 100644 --- a/src/lte/bindings/modulegen__gcc_ILP32.py +++ b/src/lte/bindings/modulegen__gcc_ILP32.py @@ -94,6 +94,8 @@ def register_types(module): module.add_class('DlInfoListElement_s') ## ff-mac-common.h (module 'lte'): ns3::DlInfoListElement_s::HarqStatus_e [enumeration] module.add_enum('HarqStatus_e', ['ACK', 'NACK', 'DTX'], outer_class=root_module['ns3::DlInfoListElement_s']) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo [struct] + module.add_class('DlSchedulingCallbackInfo') ## ff-mac-common.h (module 'lte'): ns3::DrxConfig_s [struct] module.add_class('DrxConfig_s') ## epc-enb-s1-sap.h (module 'lte'): ns3::EpcEnbS1SapProvider [class] @@ -954,6 +956,12 @@ def register_types(module): module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue']) ## channel.h (module 'network'): ns3::Channel [class] module.add_class('Channel', import_from_module='ns.network', parent=root_module['ns3::Object']) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier [class] + module.add_class('ComponentCarrier', parent=root_module['ns3::Object']) + ## component-carrier-enb.h (module 'lte'): ns3::ComponentCarrierEnb [class] + module.add_class('ComponentCarrierEnb', parent=root_module['ns3::ComponentCarrier']) + ## component-carrier-ue.h (module 'lte'): ns3::ComponentCarrierUe [class] + module.add_class('ComponentCarrierUe', parent=root_module['ns3::ComponentCarrier']) ## random-variable-stream.h (module 'core'): ns3::ConstantRandomVariable [class] module.add_class('ConstantRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream']) ## data-calculator.h (module 'stats'): ns3::DataCalculator [class] @@ -1402,6 +1410,8 @@ def register_types(module): module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map') module.add_container('std::list< ns3::Ptr< ns3::LteControlMessage > >', 'ns3::Ptr< ns3::LteControlMessage >', container_type=u'list') module.add_container('std::list< ns3::UlDciLteControlMessage >', 'ns3::UlDciLteControlMessage', container_type=u'list') + module.add_container('std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierUe > >', ('unsigned char', 'ns3::Ptr< ns3::ComponentCarrierUe >'), container_type=u'map') + module.add_container('std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierEnb > >', ('unsigned char', 'ns3::Ptr< ns3::ComponentCarrierEnb >'), container_type=u'map') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >', u'ns3::Uint32Map') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >*', u'ns3::Uint32Map*') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >&', u'ns3::Uint32Map&') @@ -1417,9 +1427,6 @@ def register_types(module): typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >', u'ns3::HarqProcessInfoList_t') typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >*', u'ns3::HarqProcessInfoList_t*') typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >&', u'ns3::HarqProcessInfoList_t&') - typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxPssCallback') - typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxPssCallback*') - typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxPssCallback&') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyTxEndCallback') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyTxEndCallback*') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyTxEndCallback&') @@ -1447,9 +1454,6 @@ def register_types(module): typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::DlHarqProcessesStatus_t') typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::DlHarqProcessesStatus_t*') typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::DlHarqProcessesStatus_t&') - typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback') - typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*') - typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&') typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >', u'ns3::Bands') typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >*', u'ns3::Bands*') typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >&', u'ns3::Bands&') @@ -1463,9 +1467,9 @@ def register_types(module): typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*') typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&') module.add_typedef(root_module['ns3::Vector3D'], 'Vector') - typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter') - typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*') - typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&') + typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback') + typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*') + typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&') typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue') typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*') typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&') @@ -1504,12 +1508,18 @@ def register_types(module): typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*') typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&') module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker') + typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter') + typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*') + typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&') typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::DlHarqProcessesTimer_t') typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::DlHarqProcessesTimer_t*') typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::DlHarqProcessesTimer_t&') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >', u'ns3::Uint32StatsMap') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >*', u'ns3::Uint32StatsMap*') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >&', u'ns3::Uint32StatsMap&') + typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxPssCallback') + typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxPssCallback*') + typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxPssCallback&') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&') @@ -1656,6 +1666,7 @@ def register_methods(root_module): register_Ns3DataRate_methods(root_module, root_module['ns3::DataRate']) register_Ns3DlDciListElement_s_methods(root_module, root_module['ns3::DlDciListElement_s']) register_Ns3DlInfoListElement_s_methods(root_module, root_module['ns3::DlInfoListElement_s']) + register_Ns3DlSchedulingCallbackInfo_methods(root_module, root_module['ns3::DlSchedulingCallbackInfo']) register_Ns3DrxConfig_s_methods(root_module, root_module['ns3::DrxConfig_s']) register_Ns3EpcEnbS1SapProvider_methods(root_module, root_module['ns3::EpcEnbS1SapProvider']) register_Ns3EpcEnbS1SapProviderBearerToBeSwitched_methods(root_module, root_module['ns3::EpcEnbS1SapProvider::BearerToBeSwitched']) @@ -2019,6 +2030,9 @@ def register_methods(root_module): register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase']) register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue']) register_Ns3Channel_methods(root_module, root_module['ns3::Channel']) + register_Ns3ComponentCarrier_methods(root_module, root_module['ns3::ComponentCarrier']) + register_Ns3ComponentCarrierEnb_methods(root_module, root_module['ns3::ComponentCarrierEnb']) + register_Ns3ComponentCarrierUe_methods(root_module, root_module['ns3::ComponentCarrierUe']) register_Ns3ConstantRandomVariable_methods(root_module, root_module['ns3::ConstantRandomVariable']) register_Ns3DataCalculator_methods(root_module, root_module['ns3::DataCalculator']) register_Ns3DataOutputInterface_methods(root_module, root_module['ns3::DataOutputInterface']) @@ -2976,6 +2990,29 @@ def register_Ns3DlInfoListElement_s_methods(root_module, cls): cls.add_instance_attribute('m_rnti', 'uint16_t', is_const=False) return +def register_Ns3DlSchedulingCallbackInfo_methods(root_module, cls): + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::DlSchedulingCallbackInfo() [constructor] + cls.add_constructor([]) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::DlSchedulingCallbackInfo(ns3::DlSchedulingCallbackInfo const & arg0) [copy constructor] + cls.add_constructor([param('ns3::DlSchedulingCallbackInfo const &', 'arg0')]) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::componentCarrierId [variable] + cls.add_instance_attribute('componentCarrierId', 'uint8_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::frameNo [variable] + cls.add_instance_attribute('frameNo', 'uint32_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::mcsTb1 [variable] + cls.add_instance_attribute('mcsTb1', 'uint8_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::mcsTb2 [variable] + cls.add_instance_attribute('mcsTb2', 'uint8_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::rnti [variable] + cls.add_instance_attribute('rnti', 'uint16_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::sizeTb1 [variable] + cls.add_instance_attribute('sizeTb1', 'uint16_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::sizeTb2 [variable] + cls.add_instance_attribute('sizeTb2', 'uint16_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::subframeNo [variable] + cls.add_instance_attribute('subframeNo', 'uint32_t', is_const=False) + return + def register_Ns3DrxConfig_s_methods(root_module, cls): ## ff-mac-common.h (module 'lte'): ns3::DrxConfig_s::DrxConfig_s() [constructor] cls.add_constructor([]) @@ -8994,8 +9031,8 @@ def register_Ns3FdtbfqsFlowPerf_t_methods(root_module, cls): return def register_Ns3Int64x64_t_methods(root_module, cls): - cls.add_binary_comparison_operator('!=') cls.add_binary_comparison_operator('<=') + cls.add_binary_comparison_operator('!=') cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right')) cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right')) cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right')) @@ -11537,8 +11574,8 @@ def register_Ns3SpectrumValue_methods(root_module, cls): return def register_Ns3Time_methods(root_module, cls): - cls.add_binary_comparison_operator('!=') cls.add_binary_comparison_operator('<=') + cls.add_binary_comparison_operator('!=') cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right')) cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right')) cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right')) @@ -12764,6 +12801,193 @@ def register_Ns3Channel_methods(root_module, cls): is_static=True) return +def register_Ns3ComponentCarrier_methods(root_module, cls): + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::ComponentCarrier(ns3::ComponentCarrier const & arg0) [copy constructor] + cls.add_constructor([param('ns3::ComponentCarrier const &', 'arg0')]) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::ComponentCarrier() [constructor] + cls.add_constructor([]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::DoDispose() [member function] + cls.add_method('DoDispose', + 'void', + [], + is_virtual=True) + ## component-carrier.h (module 'lte'): uint32_t ns3::ComponentCarrier::GetCsgId() const [member function] + cls.add_method('GetCsgId', + 'uint32_t', + [], + is_const=True) + ## component-carrier.h (module 'lte'): bool ns3::ComponentCarrier::GetCsgIndication() const [member function] + cls.add_method('GetCsgIndication', + 'bool', + [], + is_const=True) + ## component-carrier.h (module 'lte'): uint8_t ns3::ComponentCarrier::GetDlBandwidth() const [member function] + cls.add_method('GetDlBandwidth', + 'uint8_t', + [], + is_const=True) + ## component-carrier.h (module 'lte'): uint32_t ns3::ComponentCarrier::GetDlEarfcn() const [member function] + cls.add_method('GetDlEarfcn', + 'uint32_t', + [], + is_const=True) + ## component-carrier.h (module 'lte'): static ns3::TypeId ns3::ComponentCarrier::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + ## component-carrier.h (module 'lte'): uint8_t ns3::ComponentCarrier::GetUlBandwidth() const [member function] + cls.add_method('GetUlBandwidth', + 'uint8_t', + [], + is_const=True) + ## component-carrier.h (module 'lte'): uint32_t ns3::ComponentCarrier::GetUlEarfcn() const [member function] + cls.add_method('GetUlEarfcn', + 'uint32_t', + [], + is_const=True) + ## component-carrier.h (module 'lte'): bool ns3::ComponentCarrier::IsPrimary() const [member function] + cls.add_method('IsPrimary', + 'bool', + [], + is_const=True) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetAsPrimary(bool primaryCarrier) [member function] + cls.add_method('SetAsPrimary', + 'void', + [param('bool', 'primaryCarrier')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetCsgId(uint32_t csgId) [member function] + cls.add_method('SetCsgId', + 'void', + [param('uint32_t', 'csgId')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetCsgIndication(bool csgIndication) [member function] + cls.add_method('SetCsgIndication', + 'void', + [param('bool', 'csgIndication')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetDlBandwidth(uint8_t bw) [member function] + cls.add_method('SetDlBandwidth', + 'void', + [param('uint8_t', 'bw')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetDlEarfcn(uint32_t earfcn) [member function] + cls.add_method('SetDlEarfcn', + 'void', + [param('uint32_t', 'earfcn')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetUlBandwidth(uint8_t bw) [member function] + cls.add_method('SetUlBandwidth', + 'void', + [param('uint8_t', 'bw')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetUlEarfcn(uint32_t earfcn) [member function] + cls.add_method('SetUlEarfcn', + 'void', + [param('uint32_t', 'earfcn')]) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::m_dlBandwidth [variable] + cls.add_instance_attribute('m_dlBandwidth', 'uint8_t', is_const=False) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::m_dlEarfcn [variable] + cls.add_instance_attribute('m_dlEarfcn', 'uint32_t', is_const=False) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::m_ulBandwidth [variable] + cls.add_instance_attribute('m_ulBandwidth', 'uint8_t', is_const=False) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::m_ulEarfcn [variable] + cls.add_instance_attribute('m_ulEarfcn', 'uint32_t', is_const=False) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::DoInitialize() [member function] + cls.add_method('DoInitialize', + 'void', + [], + visibility='protected', is_virtual=True) + return + +def register_Ns3ComponentCarrierEnb_methods(root_module, cls): + ## component-carrier-enb.h (module 'lte'): ns3::ComponentCarrierEnb::ComponentCarrierEnb(ns3::ComponentCarrierEnb const & arg0) [copy constructor] + cls.add_constructor([param('ns3::ComponentCarrierEnb const &', 'arg0')]) + ## component-carrier-enb.h (module 'lte'): ns3::ComponentCarrierEnb::ComponentCarrierEnb() [constructor] + cls.add_constructor([]) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::DoDispose() [member function] + cls.add_method('DoDispose', + 'void', + [], + is_virtual=True) + ## component-carrier-enb.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierEnb::GetFfMacScheduler() [member function] + cls.add_method('GetFfMacScheduler', + 'ns3::Ptr< ns3::FfMacScheduler >', + []) + ## component-carrier-enb.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierEnb::GetFfrAlgorithm() [member function] + cls.add_method('GetFfrAlgorithm', + 'ns3::Ptr< ns3::LteFfrAlgorithm >', + []) + ## component-carrier-enb.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierEnb::GetMac() [member function] + cls.add_method('GetMac', + 'ns3::Ptr< ns3::LteEnbMac >', + []) + ## component-carrier-enb.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierEnb::GetPhy() [member function] + cls.add_method('GetPhy', + 'ns3::Ptr< ns3::LteEnbPhy >', + []) + ## component-carrier-enb.h (module 'lte'): static ns3::TypeId ns3::ComponentCarrierEnb::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::SetFfMacScheduler(ns3::Ptr s) [member function] + cls.add_method('SetFfMacScheduler', + 'void', + [param('ns3::Ptr< ns3::FfMacScheduler >', 's')]) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::SetFfrAlgorithm(ns3::Ptr s) [member function] + cls.add_method('SetFfrAlgorithm', + 'void', + [param('ns3::Ptr< ns3::LteFfrAlgorithm >', 's')]) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::SetMac(ns3::Ptr s) [member function] + cls.add_method('SetMac', + 'void', + [param('ns3::Ptr< ns3::LteEnbMac >', 's')]) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::SetPhy(ns3::Ptr s) [member function] + cls.add_method('SetPhy', + 'void', + [param('ns3::Ptr< ns3::LteEnbPhy >', 's')]) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::DoInitialize() [member function] + cls.add_method('DoInitialize', + 'void', + [], + visibility='protected', is_virtual=True) + return + +def register_Ns3ComponentCarrierUe_methods(root_module, cls): + ## component-carrier-ue.h (module 'lte'): ns3::ComponentCarrierUe::ComponentCarrierUe(ns3::ComponentCarrierUe const & arg0) [copy constructor] + cls.add_constructor([param('ns3::ComponentCarrierUe const &', 'arg0')]) + ## component-carrier-ue.h (module 'lte'): ns3::ComponentCarrierUe::ComponentCarrierUe() [constructor] + cls.add_constructor([]) + ## component-carrier-ue.h (module 'lte'): void ns3::ComponentCarrierUe::DoDispose() [member function] + cls.add_method('DoDispose', + 'void', + [], + is_virtual=True) + ## component-carrier-ue.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierUe::GetMac() const [member function] + cls.add_method('GetMac', + 'ns3::Ptr< ns3::LteUeMac >', + [], + is_const=True) + ## component-carrier-ue.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierUe::GetPhy() const [member function] + cls.add_method('GetPhy', + 'ns3::Ptr< ns3::LteUePhy >', + [], + is_const=True) + ## component-carrier-ue.h (module 'lte'): static ns3::TypeId ns3::ComponentCarrierUe::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + ## component-carrier-ue.h (module 'lte'): void ns3::ComponentCarrierUe::SetMac(ns3::Ptr s) [member function] + cls.add_method('SetMac', + 'void', + [param('ns3::Ptr< ns3::LteUeMac >', 's')]) + ## component-carrier-ue.h (module 'lte'): void ns3::ComponentCarrierUe::SetPhy(ns3::Ptr s) [member function] + cls.add_method('SetPhy', + 'void', + [param('ns3::Ptr< ns3::LteUePhy >', 's')]) + ## component-carrier-ue.h (module 'lte'): void ns3::ComponentCarrierUe::DoInitialize() [member function] + cls.add_method('DoInitialize', + 'void', + [], + visibility='protected', is_virtual=True) + return + def register_Ns3ConstantRandomVariable_methods(root_module, cls): ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ConstantRandomVariable::GetTypeId() [member function] cls.add_method('GetTypeId', @@ -15384,6 +15608,10 @@ def register_Ns3LteEnbRrc_methods(root_module, cls): cls.add_method('SetLteMacSapProvider', 'void', [param('ns3::LteMacSapProvider *', 's')]) + ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetNumberOfComponentCarriers(uint16_t numberOfComponentCarriers) [member function] + cls.add_method('SetNumberOfComponentCarriers', + 'void', + [param('uint16_t', 'numberOfComponentCarriers')]) ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetS1SapProvider(ns3::EpcEnbS1SapProvider * s) [member function] cls.add_method('SetS1SapProvider', 'void', @@ -21471,6 +21699,14 @@ def register_Ns3LteUeNetDevice_methods(root_module, cls): cls.add_method('GetTargetEnb', 'ns3::Ptr< ns3::LteEnbNetDevice >', []) + ## lte-ue-net-device.h (module 'lte'): void ns3::LteUeNetDevice::SetCcMap(std::map, std::less, std::allocator > > > ccm) [member function] + cls.add_method('SetCcMap', + 'void', + [param('std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierUe > >', 'ccm')]) + ## lte-ue-net-device.h (module 'lte'): std::map, std::less, std::allocator > > > ns3::LteUeNetDevice::GetCcMap() [member function] + cls.add_method('GetCcMap', + 'std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierUe > >', + []) ## lte-ue-net-device.h (module 'lte'): void ns3::LteUeNetDevice::DoInitialize() [member function] cls.add_method('DoInitialize', 'void', @@ -22017,11 +22253,19 @@ def register_Ns3LteEnbNetDevice_methods(root_module, cls): 'ns3::Ptr< ns3::LteEnbMac >', [], is_const=True) + ## lte-enb-net-device.h (module 'lte'): ns3::Ptr ns3::LteEnbNetDevice::GetMac(uint8_t index) [member function] + cls.add_method('GetMac', + 'ns3::Ptr< ns3::LteEnbMac >', + [param('uint8_t', 'index')]) ## lte-enb-net-device.h (module 'lte'): ns3::Ptr ns3::LteEnbNetDevice::GetPhy() const [member function] cls.add_method('GetPhy', 'ns3::Ptr< ns3::LteEnbPhy >', [], is_const=True) + ## lte-enb-net-device.h (module 'lte'): ns3::Ptr ns3::LteEnbNetDevice::GetPhy(uint8_t index) [member function] + cls.add_method('GetPhy', + 'ns3::Ptr< ns3::LteEnbPhy >', + [param('uint8_t', 'index')]) ## lte-enb-net-device.h (module 'lte'): ns3::Ptr ns3::LteEnbNetDevice::GetRrc() const [member function] cls.add_method('GetRrc', 'ns3::Ptr< ns3::LteEnbRrc >', @@ -22086,6 +22330,14 @@ def register_Ns3LteEnbNetDevice_methods(root_module, cls): cls.add_method('SetCsgIndication', 'void', [param('bool', 'csgIndication')]) + ## lte-enb-net-device.h (module 'lte'): void ns3::LteEnbNetDevice::SetCcMap(std::map, std::less, std::allocator > > > ccm) [member function] + cls.add_method('SetCcMap', + 'void', + [param('std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierEnb > >', 'ccm')]) + ## lte-enb-net-device.h (module 'lte'): std::map, std::less, std::allocator > > > ns3::LteEnbNetDevice::GetCcMap() [member function] + cls.add_method('GetCcMap', + 'std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierEnb > >', + []) ## lte-enb-net-device.h (module 'lte'): void ns3::LteEnbNetDevice::DoInitialize() [member function] cls.add_method('DoInitialize', 'void', diff --git a/src/lte/bindings/modulegen__gcc_LP64.py b/src/lte/bindings/modulegen__gcc_LP64.py index 3d4ec5f58..a517aa5c9 100644 --- a/src/lte/bindings/modulegen__gcc_LP64.py +++ b/src/lte/bindings/modulegen__gcc_LP64.py @@ -94,6 +94,8 @@ def register_types(module): module.add_class('DlInfoListElement_s') ## ff-mac-common.h (module 'lte'): ns3::DlInfoListElement_s::HarqStatus_e [enumeration] module.add_enum('HarqStatus_e', ['ACK', 'NACK', 'DTX'], outer_class=root_module['ns3::DlInfoListElement_s']) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo [struct] + module.add_class('DlSchedulingCallbackInfo') ## ff-mac-common.h (module 'lte'): ns3::DrxConfig_s [struct] module.add_class('DrxConfig_s') ## epc-enb-s1-sap.h (module 'lte'): ns3::EpcEnbS1SapProvider [class] @@ -954,6 +956,12 @@ def register_types(module): module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue']) ## channel.h (module 'network'): ns3::Channel [class] module.add_class('Channel', import_from_module='ns.network', parent=root_module['ns3::Object']) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier [class] + module.add_class('ComponentCarrier', parent=root_module['ns3::Object']) + ## component-carrier-enb.h (module 'lte'): ns3::ComponentCarrierEnb [class] + module.add_class('ComponentCarrierEnb', parent=root_module['ns3::ComponentCarrier']) + ## component-carrier-ue.h (module 'lte'): ns3::ComponentCarrierUe [class] + module.add_class('ComponentCarrierUe', parent=root_module['ns3::ComponentCarrier']) ## random-variable-stream.h (module 'core'): ns3::ConstantRandomVariable [class] module.add_class('ConstantRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream']) ## data-calculator.h (module 'stats'): ns3::DataCalculator [class] @@ -1402,6 +1410,8 @@ def register_types(module): module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map') module.add_container('std::list< ns3::Ptr< ns3::LteControlMessage > >', 'ns3::Ptr< ns3::LteControlMessage >', container_type=u'list') module.add_container('std::list< ns3::UlDciLteControlMessage >', 'ns3::UlDciLteControlMessage', container_type=u'list') + module.add_container('std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierUe > >', ('unsigned char', 'ns3::Ptr< ns3::ComponentCarrierUe >'), container_type=u'map') + module.add_container('std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierEnb > >', ('unsigned char', 'ns3::Ptr< ns3::ComponentCarrierEnb >'), container_type=u'map') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >', u'ns3::Uint32Map') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >*', u'ns3::Uint32Map*') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >&', u'ns3::Uint32Map&') @@ -1417,9 +1427,6 @@ def register_types(module): typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >', u'ns3::HarqProcessInfoList_t') typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >*', u'ns3::HarqProcessInfoList_t*') typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >&', u'ns3::HarqProcessInfoList_t&') - typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxPssCallback') - typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxPssCallback*') - typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxPssCallback&') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyTxEndCallback') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyTxEndCallback*') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyTxEndCallback&') @@ -1447,9 +1454,6 @@ def register_types(module): typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::DlHarqProcessesStatus_t') typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::DlHarqProcessesStatus_t*') typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::DlHarqProcessesStatus_t&') - typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback') - typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*') - typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&') typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >', u'ns3::Bands') typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >*', u'ns3::Bands*') typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >&', u'ns3::Bands&') @@ -1463,9 +1467,9 @@ def register_types(module): typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*') typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&') module.add_typedef(root_module['ns3::Vector3D'], 'Vector') - typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter') - typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*') - typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&') + typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback') + typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*') + typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&') typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue') typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*') typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&') @@ -1504,12 +1508,18 @@ def register_types(module): typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*') typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&') module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker') + typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter') + typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*') + typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&') typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::DlHarqProcessesTimer_t') typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::DlHarqProcessesTimer_t*') typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::DlHarqProcessesTimer_t&') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >', u'ns3::Uint32StatsMap') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >*', u'ns3::Uint32StatsMap*') typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >&', u'ns3::Uint32StatsMap&') + typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxPssCallback') + typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxPssCallback*') + typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxPssCallback&') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*') typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&') @@ -1656,6 +1666,7 @@ def register_methods(root_module): register_Ns3DataRate_methods(root_module, root_module['ns3::DataRate']) register_Ns3DlDciListElement_s_methods(root_module, root_module['ns3::DlDciListElement_s']) register_Ns3DlInfoListElement_s_methods(root_module, root_module['ns3::DlInfoListElement_s']) + register_Ns3DlSchedulingCallbackInfo_methods(root_module, root_module['ns3::DlSchedulingCallbackInfo']) register_Ns3DrxConfig_s_methods(root_module, root_module['ns3::DrxConfig_s']) register_Ns3EpcEnbS1SapProvider_methods(root_module, root_module['ns3::EpcEnbS1SapProvider']) register_Ns3EpcEnbS1SapProviderBearerToBeSwitched_methods(root_module, root_module['ns3::EpcEnbS1SapProvider::BearerToBeSwitched']) @@ -2019,6 +2030,9 @@ def register_methods(root_module): register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase']) register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue']) register_Ns3Channel_methods(root_module, root_module['ns3::Channel']) + register_Ns3ComponentCarrier_methods(root_module, root_module['ns3::ComponentCarrier']) + register_Ns3ComponentCarrierEnb_methods(root_module, root_module['ns3::ComponentCarrierEnb']) + register_Ns3ComponentCarrierUe_methods(root_module, root_module['ns3::ComponentCarrierUe']) register_Ns3ConstantRandomVariable_methods(root_module, root_module['ns3::ConstantRandomVariable']) register_Ns3DataCalculator_methods(root_module, root_module['ns3::DataCalculator']) register_Ns3DataOutputInterface_methods(root_module, root_module['ns3::DataOutputInterface']) @@ -2976,6 +2990,29 @@ def register_Ns3DlInfoListElement_s_methods(root_module, cls): cls.add_instance_attribute('m_rnti', 'uint16_t', is_const=False) return +def register_Ns3DlSchedulingCallbackInfo_methods(root_module, cls): + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::DlSchedulingCallbackInfo() [constructor] + cls.add_constructor([]) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::DlSchedulingCallbackInfo(ns3::DlSchedulingCallbackInfo const & arg0) [copy constructor] + cls.add_constructor([param('ns3::DlSchedulingCallbackInfo const &', 'arg0')]) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::componentCarrierId [variable] + cls.add_instance_attribute('componentCarrierId', 'uint8_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::frameNo [variable] + cls.add_instance_attribute('frameNo', 'uint32_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::mcsTb1 [variable] + cls.add_instance_attribute('mcsTb1', 'uint8_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::mcsTb2 [variable] + cls.add_instance_attribute('mcsTb2', 'uint8_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::rnti [variable] + cls.add_instance_attribute('rnti', 'uint16_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::sizeTb1 [variable] + cls.add_instance_attribute('sizeTb1', 'uint16_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::sizeTb2 [variable] + cls.add_instance_attribute('sizeTb2', 'uint16_t', is_const=False) + ## lte-common.h (module 'lte'): ns3::DlSchedulingCallbackInfo::subframeNo [variable] + cls.add_instance_attribute('subframeNo', 'uint32_t', is_const=False) + return + def register_Ns3DrxConfig_s_methods(root_module, cls): ## ff-mac-common.h (module 'lte'): ns3::DrxConfig_s::DrxConfig_s() [constructor] cls.add_constructor([]) @@ -8994,8 +9031,8 @@ def register_Ns3FdtbfqsFlowPerf_t_methods(root_module, cls): return def register_Ns3Int64x64_t_methods(root_module, cls): - cls.add_binary_comparison_operator('!=') cls.add_binary_comparison_operator('<=') + cls.add_binary_comparison_operator('!=') cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right')) cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right')) cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right')) @@ -11537,8 +11574,8 @@ def register_Ns3SpectrumValue_methods(root_module, cls): return def register_Ns3Time_methods(root_module, cls): - cls.add_binary_comparison_operator('!=') cls.add_binary_comparison_operator('<=') + cls.add_binary_comparison_operator('!=') cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right')) cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right')) cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right')) @@ -12764,6 +12801,193 @@ def register_Ns3Channel_methods(root_module, cls): is_static=True) return +def register_Ns3ComponentCarrier_methods(root_module, cls): + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::ComponentCarrier(ns3::ComponentCarrier const & arg0) [copy constructor] + cls.add_constructor([param('ns3::ComponentCarrier const &', 'arg0')]) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::ComponentCarrier() [constructor] + cls.add_constructor([]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::DoDispose() [member function] + cls.add_method('DoDispose', + 'void', + [], + is_virtual=True) + ## component-carrier.h (module 'lte'): uint32_t ns3::ComponentCarrier::GetCsgId() const [member function] + cls.add_method('GetCsgId', + 'uint32_t', + [], + is_const=True) + ## component-carrier.h (module 'lte'): bool ns3::ComponentCarrier::GetCsgIndication() const [member function] + cls.add_method('GetCsgIndication', + 'bool', + [], + is_const=True) + ## component-carrier.h (module 'lte'): uint8_t ns3::ComponentCarrier::GetDlBandwidth() const [member function] + cls.add_method('GetDlBandwidth', + 'uint8_t', + [], + is_const=True) + ## component-carrier.h (module 'lte'): uint32_t ns3::ComponentCarrier::GetDlEarfcn() const [member function] + cls.add_method('GetDlEarfcn', + 'uint32_t', + [], + is_const=True) + ## component-carrier.h (module 'lte'): static ns3::TypeId ns3::ComponentCarrier::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + ## component-carrier.h (module 'lte'): uint8_t ns3::ComponentCarrier::GetUlBandwidth() const [member function] + cls.add_method('GetUlBandwidth', + 'uint8_t', + [], + is_const=True) + ## component-carrier.h (module 'lte'): uint32_t ns3::ComponentCarrier::GetUlEarfcn() const [member function] + cls.add_method('GetUlEarfcn', + 'uint32_t', + [], + is_const=True) + ## component-carrier.h (module 'lte'): bool ns3::ComponentCarrier::IsPrimary() const [member function] + cls.add_method('IsPrimary', + 'bool', + [], + is_const=True) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetAsPrimary(bool primaryCarrier) [member function] + cls.add_method('SetAsPrimary', + 'void', + [param('bool', 'primaryCarrier')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetCsgId(uint32_t csgId) [member function] + cls.add_method('SetCsgId', + 'void', + [param('uint32_t', 'csgId')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetCsgIndication(bool csgIndication) [member function] + cls.add_method('SetCsgIndication', + 'void', + [param('bool', 'csgIndication')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetDlBandwidth(uint8_t bw) [member function] + cls.add_method('SetDlBandwidth', + 'void', + [param('uint8_t', 'bw')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetDlEarfcn(uint32_t earfcn) [member function] + cls.add_method('SetDlEarfcn', + 'void', + [param('uint32_t', 'earfcn')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetUlBandwidth(uint8_t bw) [member function] + cls.add_method('SetUlBandwidth', + 'void', + [param('uint8_t', 'bw')]) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::SetUlEarfcn(uint32_t earfcn) [member function] + cls.add_method('SetUlEarfcn', + 'void', + [param('uint32_t', 'earfcn')]) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::m_dlBandwidth [variable] + cls.add_instance_attribute('m_dlBandwidth', 'uint8_t', is_const=False) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::m_dlEarfcn [variable] + cls.add_instance_attribute('m_dlEarfcn', 'uint32_t', is_const=False) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::m_ulBandwidth [variable] + cls.add_instance_attribute('m_ulBandwidth', 'uint8_t', is_const=False) + ## component-carrier.h (module 'lte'): ns3::ComponentCarrier::m_ulEarfcn [variable] + cls.add_instance_attribute('m_ulEarfcn', 'uint32_t', is_const=False) + ## component-carrier.h (module 'lte'): void ns3::ComponentCarrier::DoInitialize() [member function] + cls.add_method('DoInitialize', + 'void', + [], + visibility='protected', is_virtual=True) + return + +def register_Ns3ComponentCarrierEnb_methods(root_module, cls): + ## component-carrier-enb.h (module 'lte'): ns3::ComponentCarrierEnb::ComponentCarrierEnb(ns3::ComponentCarrierEnb const & arg0) [copy constructor] + cls.add_constructor([param('ns3::ComponentCarrierEnb const &', 'arg0')]) + ## component-carrier-enb.h (module 'lte'): ns3::ComponentCarrierEnb::ComponentCarrierEnb() [constructor] + cls.add_constructor([]) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::DoDispose() [member function] + cls.add_method('DoDispose', + 'void', + [], + is_virtual=True) + ## component-carrier-enb.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierEnb::GetFfMacScheduler() [member function] + cls.add_method('GetFfMacScheduler', + 'ns3::Ptr< ns3::FfMacScheduler >', + []) + ## component-carrier-enb.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierEnb::GetFfrAlgorithm() [member function] + cls.add_method('GetFfrAlgorithm', + 'ns3::Ptr< ns3::LteFfrAlgorithm >', + []) + ## component-carrier-enb.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierEnb::GetMac() [member function] + cls.add_method('GetMac', + 'ns3::Ptr< ns3::LteEnbMac >', + []) + ## component-carrier-enb.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierEnb::GetPhy() [member function] + cls.add_method('GetPhy', + 'ns3::Ptr< ns3::LteEnbPhy >', + []) + ## component-carrier-enb.h (module 'lte'): static ns3::TypeId ns3::ComponentCarrierEnb::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::SetFfMacScheduler(ns3::Ptr s) [member function] + cls.add_method('SetFfMacScheduler', + 'void', + [param('ns3::Ptr< ns3::FfMacScheduler >', 's')]) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::SetFfrAlgorithm(ns3::Ptr s) [member function] + cls.add_method('SetFfrAlgorithm', + 'void', + [param('ns3::Ptr< ns3::LteFfrAlgorithm >', 's')]) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::SetMac(ns3::Ptr s) [member function] + cls.add_method('SetMac', + 'void', + [param('ns3::Ptr< ns3::LteEnbMac >', 's')]) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::SetPhy(ns3::Ptr s) [member function] + cls.add_method('SetPhy', + 'void', + [param('ns3::Ptr< ns3::LteEnbPhy >', 's')]) + ## component-carrier-enb.h (module 'lte'): void ns3::ComponentCarrierEnb::DoInitialize() [member function] + cls.add_method('DoInitialize', + 'void', + [], + visibility='protected', is_virtual=True) + return + +def register_Ns3ComponentCarrierUe_methods(root_module, cls): + ## component-carrier-ue.h (module 'lte'): ns3::ComponentCarrierUe::ComponentCarrierUe(ns3::ComponentCarrierUe const & arg0) [copy constructor] + cls.add_constructor([param('ns3::ComponentCarrierUe const &', 'arg0')]) + ## component-carrier-ue.h (module 'lte'): ns3::ComponentCarrierUe::ComponentCarrierUe() [constructor] + cls.add_constructor([]) + ## component-carrier-ue.h (module 'lte'): void ns3::ComponentCarrierUe::DoDispose() [member function] + cls.add_method('DoDispose', + 'void', + [], + is_virtual=True) + ## component-carrier-ue.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierUe::GetMac() const [member function] + cls.add_method('GetMac', + 'ns3::Ptr< ns3::LteUeMac >', + [], + is_const=True) + ## component-carrier-ue.h (module 'lte'): ns3::Ptr ns3::ComponentCarrierUe::GetPhy() const [member function] + cls.add_method('GetPhy', + 'ns3::Ptr< ns3::LteUePhy >', + [], + is_const=True) + ## component-carrier-ue.h (module 'lte'): static ns3::TypeId ns3::ComponentCarrierUe::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + ## component-carrier-ue.h (module 'lte'): void ns3::ComponentCarrierUe::SetMac(ns3::Ptr s) [member function] + cls.add_method('SetMac', + 'void', + [param('ns3::Ptr< ns3::LteUeMac >', 's')]) + ## component-carrier-ue.h (module 'lte'): void ns3::ComponentCarrierUe::SetPhy(ns3::Ptr s) [member function] + cls.add_method('SetPhy', + 'void', + [param('ns3::Ptr< ns3::LteUePhy >', 's')]) + ## component-carrier-ue.h (module 'lte'): void ns3::ComponentCarrierUe::DoInitialize() [member function] + cls.add_method('DoInitialize', + 'void', + [], + visibility='protected', is_virtual=True) + return + def register_Ns3ConstantRandomVariable_methods(root_module, cls): ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ConstantRandomVariable::GetTypeId() [member function] cls.add_method('GetTypeId', @@ -15384,6 +15608,10 @@ def register_Ns3LteEnbRrc_methods(root_module, cls): cls.add_method('SetLteMacSapProvider', 'void', [param('ns3::LteMacSapProvider *', 's')]) + ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetNumberOfComponentCarriers(uint16_t numberOfComponentCarriers) [member function] + cls.add_method('SetNumberOfComponentCarriers', + 'void', + [param('uint16_t', 'numberOfComponentCarriers')]) ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetS1SapProvider(ns3::EpcEnbS1SapProvider * s) [member function] cls.add_method('SetS1SapProvider', 'void', @@ -21471,6 +21699,14 @@ def register_Ns3LteUeNetDevice_methods(root_module, cls): cls.add_method('GetTargetEnb', 'ns3::Ptr< ns3::LteEnbNetDevice >', []) + ## lte-ue-net-device.h (module 'lte'): void ns3::LteUeNetDevice::SetCcMap(std::map, std::less, std::allocator > > > ccm) [member function] + cls.add_method('SetCcMap', + 'void', + [param('std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierUe > >', 'ccm')]) + ## lte-ue-net-device.h (module 'lte'): std::map, std::less, std::allocator > > > ns3::LteUeNetDevice::GetCcMap() [member function] + cls.add_method('GetCcMap', + 'std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierUe > >', + []) ## lte-ue-net-device.h (module 'lte'): void ns3::LteUeNetDevice::DoInitialize() [member function] cls.add_method('DoInitialize', 'void', @@ -22017,11 +22253,19 @@ def register_Ns3LteEnbNetDevice_methods(root_module, cls): 'ns3::Ptr< ns3::LteEnbMac >', [], is_const=True) + ## lte-enb-net-device.h (module 'lte'): ns3::Ptr ns3::LteEnbNetDevice::GetMac(uint8_t index) [member function] + cls.add_method('GetMac', + 'ns3::Ptr< ns3::LteEnbMac >', + [param('uint8_t', 'index')]) ## lte-enb-net-device.h (module 'lte'): ns3::Ptr ns3::LteEnbNetDevice::GetPhy() const [member function] cls.add_method('GetPhy', 'ns3::Ptr< ns3::LteEnbPhy >', [], is_const=True) + ## lte-enb-net-device.h (module 'lte'): ns3::Ptr ns3::LteEnbNetDevice::GetPhy(uint8_t index) [member function] + cls.add_method('GetPhy', + 'ns3::Ptr< ns3::LteEnbPhy >', + [param('uint8_t', 'index')]) ## lte-enb-net-device.h (module 'lte'): ns3::Ptr ns3::LteEnbNetDevice::GetRrc() const [member function] cls.add_method('GetRrc', 'ns3::Ptr< ns3::LteEnbRrc >', @@ -22086,6 +22330,14 @@ def register_Ns3LteEnbNetDevice_methods(root_module, cls): cls.add_method('SetCsgIndication', 'void', [param('bool', 'csgIndication')]) + ## lte-enb-net-device.h (module 'lte'): void ns3::LteEnbNetDevice::SetCcMap(std::map, std::less, std::allocator > > > ccm) [member function] + cls.add_method('SetCcMap', + 'void', + [param('std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierEnb > >', 'ccm')]) + ## lte-enb-net-device.h (module 'lte'): std::map, std::less, std::allocator > > > ns3::LteEnbNetDevice::GetCcMap() [member function] + cls.add_method('GetCcMap', + 'std::map< unsigned char, ns3::Ptr< ns3::ComponentCarrierEnb > >', + []) ## lte-enb-net-device.h (module 'lte'): void ns3::LteEnbNetDevice::DoInitialize() [member function] cls.add_method('DoInitialize', 'void', diff --git a/src/lte/model/component-carrier-enb.cc b/src/lte/model/component-carrier-enb.cc new file mode 100644 index 000000000..262ab337c --- /dev/null +++ b/src/lte/model/component-carrier-enb.cc @@ -0,0 +1,176 @@ +/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2015 Danilo Abrignani + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Danilo Abrignani + */ + +#include "component-carrier-enb.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns3 { + +NS_LOG_COMPONENT_DEFINE ("ComponentCarrierEnb"); +NS_OBJECT_ENSURE_REGISTERED (ComponentCarrierEnb); + +TypeId ComponentCarrierEnb::GetTypeId (void) +{ + static TypeId + tid = + TypeId ("ns3::ComponentCarrierEnb") + .SetParent () + .AddConstructor () + .AddAttribute ("LteEnbPhy", + "The PHY associated to this EnbNetDevice", + PointerValue (), + MakePointerAccessor (&ComponentCarrierEnb::m_phy), + MakePointerChecker ()) + .AddAttribute ("LteEnbMac", + "The MAC associated to this EnbNetDevice", + PointerValue (), + MakePointerAccessor (&ComponentCarrierEnb::m_mac), + MakePointerChecker ()) + .AddAttribute ("FfMacScheduler", + "The scheduler associated to this EnbNetDevice", + PointerValue (), + MakePointerAccessor (&ComponentCarrierEnb::m_scheduler), + MakePointerChecker ()) + .AddAttribute ("LteFfrAlgorithm", + "The FFR algorithm associated to this EnbNetDevice", + PointerValue (), + MakePointerAccessor (&ComponentCarrierEnb::m_ffrAlgorithm), + MakePointerChecker ()) + ; + return tid; +} +ComponentCarrierEnb::ComponentCarrierEnb () +{ + NS_LOG_FUNCTION (this); +} + +ComponentCarrierEnb::~ComponentCarrierEnb (void) +{ + NS_LOG_FUNCTION (this); +} + +void +ComponentCarrierEnb::DoDispose () +{ + NS_LOG_FUNCTION (this); + if (m_phy) + { + m_phy->Dispose (); + m_phy = 0; + } + if (m_mac) + { + m_mac->Dispose (); + m_mac = 0; + } + if (m_scheduler) + { + m_scheduler->Dispose (); + m_scheduler = 0; + } + if (m_ffrAlgorithm) + { + m_ffrAlgorithm->Dispose (); + m_ffrAlgorithm = 0; + } + + Object::DoDispose (); +} + + +void +ComponentCarrierEnb::DoInitialize (void) +{ + NS_LOG_FUNCTION (this); + m_isConstructed = true; + m_phy->Initialize (); + m_mac->Initialize (); + m_ffrAlgorithm->Initialize (); + m_scheduler->Initialize(); + +} + +Ptr +ComponentCarrierEnb::GetPhy () +{ + NS_LOG_FUNCTION (this); + return m_phy; +} + +void +ComponentCarrierEnb::SetPhy (Ptr s) +{ + NS_LOG_FUNCTION (this); + m_phy = s; +} + +Ptr +ComponentCarrierEnb::GetMac () +{ + NS_LOG_FUNCTION (this); + return m_mac; +} +void +ComponentCarrierEnb::SetMac (Ptr s) +{ + NS_LOG_FUNCTION (this); + m_mac = s; +} + +Ptr +ComponentCarrierEnb::GetFfrAlgorithm () +{ + NS_LOG_FUNCTION (this); + return m_ffrAlgorithm; +} + +void +ComponentCarrierEnb::SetFfrAlgorithm (Ptr s) +{ + NS_LOG_FUNCTION (this); + m_ffrAlgorithm = s; +} + +Ptr +ComponentCarrierEnb::GetFfMacScheduler () +{ + NS_LOG_FUNCTION (this); + return m_scheduler; +} + +void +ComponentCarrierEnb::SetFfMacScheduler (Ptr s) +{ + NS_LOG_FUNCTION (this); + m_scheduler = s; +} + +} // namespace ns3 + + diff --git a/src/lte/model/component-carrier-enb.h b/src/lte/model/component-carrier-enb.h new file mode 100644 index 000000000..69d94c016 --- /dev/null +++ b/src/lte/model/component-carrier-enb.h @@ -0,0 +1,118 @@ +/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2015 Danilo Abrignani + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Danilo Abrignani + */ + + +#ifndef COMPONENT_CARRIER_ENB_H +#define COMPONENT_CARRIER_ENB_H + +#include "component-carrier.h" +#include +#include +#include +#include "ns3/lte-phy.h" +#include +#include +//#include + + +namespace ns3 { + +class LteEnbMac; +class FfMacScheduler; +class LteFfrAlgorithm; + +/** + * \ingroup lte + * + * Defines a single carrier for enb, and contains pointers to LteEnbPhy, + * LteEnbMac, LteFfrAlgorithm, and FfMacScheduler objects. + * + */ +class ComponentCarrierEnb : public ComponentCarrier +{ +public: + static TypeId GetTypeId (void); + + ComponentCarrierEnb (); + + virtual ~ComponentCarrierEnb (void); + virtual void DoDispose (void); + + /** + * \return a pointer to the physical layer. + */ + Ptr GetPhy (void); + + /** + * \return a pointer to the MAC layer. + */ + Ptr GetMac (void); + + /** + * \return a pointer to the Ffr Algorithm. + */ + Ptr GetFfrAlgorithm (); + + /** + * \return a pointer to the Mac Scheduler. + */ + Ptr GetFfMacScheduler (); + /** + * Set the LteEnbPhy + * \ param s a pointer to the LteEnbPhy + */ + void SetPhy (Ptr s); + /** + * Set the LteEnbMac + * \ param s a pointer to the LteEnbMac + */ + void SetMac (Ptr s); + + /** + * Set the FfMacScheduler Algorithm + * \ param s a pointer to the FfMacScheduler + */ + void SetFfMacScheduler (Ptr s); + + /** + * Set the LteFfrAlgorithm + * \ param s a pointer to the LteFfrAlgorithm + */ + void SetFfrAlgorithm (Ptr s); + +protected: + + virtual void DoInitialize (void); + +private: + + Ptr m_phy; + Ptr m_mac; + Ptr m_scheduler; + Ptr m_ffrAlgorithm; + + +}; + +} // namespace ns3 + + + +#endif /* COMPONENT_CARRIER_H */ diff --git a/src/lte/model/component-carrier-ue.cc b/src/lte/model/component-carrier-ue.cc new file mode 100644 index 000000000..fc438d7d2 --- /dev/null +++ b/src/lte/model/component-carrier-ue.cc @@ -0,0 +1,119 @@ +/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2015 Danilo Abrignani + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Danilo Abrignani + */ + +#include "component-carrier-ue.h" +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns3 { + +NS_LOG_COMPONENT_DEFINE ("ComponentCarrierUe"); + +NS_OBJECT_ENSURE_REGISTERED ( ComponentCarrierUe); + +TypeId ComponentCarrierUe::GetTypeId (void) +{ + static TypeId + tid = + TypeId ("ns3::ComponentCarrierUe") + .SetParent () + .AddConstructor () + .AddAttribute ("LteUePhy", + "The PHY associated to this EnbNetDevice", + PointerValue (), + MakePointerAccessor (&ComponentCarrierUe::m_phy), + MakePointerChecker ()) + .AddAttribute ("LteUeMac", + "The MAC associated to this UeNetDevice", + PointerValue (), + MakePointerAccessor (&ComponentCarrierUe::m_mac), + MakePointerChecker ()) + ; + return tid; +} +ComponentCarrierUe::ComponentCarrierUe () +{ + NS_LOG_FUNCTION (this); +} + +ComponentCarrierUe::~ComponentCarrierUe (void) +{ + NS_LOG_FUNCTION (this); +} + +void +ComponentCarrierUe::DoDispose () +{ + NS_LOG_FUNCTION (this); + m_phy->Dispose (); + m_phy = 0; + m_mac->Dispose (); + m_mac = 0; + Object::DoDispose (); +} + + +void +ComponentCarrierUe::DoInitialize (void) +{ + NS_LOG_FUNCTION (this); + m_isConstructed = true; + m_phy->Initialize (); + m_mac->Initialize(); +} + +void +ComponentCarrierUe::SetPhy (Ptr s) +{ + NS_LOG_FUNCTION (this); + m_phy = s; +} + + +Ptr +ComponentCarrierUe::GetPhy () const +{ + NS_LOG_FUNCTION (this); + return m_phy; +} + +void +ComponentCarrierUe::SetMac (Ptr s) +{ + NS_LOG_FUNCTION (this); + m_mac = s; +} + +Ptr +ComponentCarrierUe::GetMac () const +{ + NS_LOG_FUNCTION (this); + return m_mac; +} + +} // namespace ns3 + + diff --git a/src/lte/model/component-carrier-ue.h b/src/lte/model/component-carrier-ue.h new file mode 100644 index 000000000..3712cb619 --- /dev/null +++ b/src/lte/model/component-carrier-ue.h @@ -0,0 +1,87 @@ +/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2015 Danilo Abrignani + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Danilo Abrignani + */ + + +#ifndef COMPONENT_CARRIER_UE_H +#define COMPONENT_CARRIER_UE_H + +#include +#include +#include +#include "ns3/lte-phy.h" +#include +#include + +namespace ns3 { + +class LteUeMac; +/** + * \ingroup lte + * + * ComponentCarrierUe Object, it defines a single Carrier for the Ue + */ +class ComponentCarrierUe : public ComponentCarrier +{ +public: + static TypeId GetTypeId (void); + + ComponentCarrierUe (); + + virtual ~ComponentCarrierUe (void); + virtual void DoDispose (void); + + + /** + * \return a pointer to the physical layer. + */ + Ptr GetPhy (void) const; + + Ptr GetMac (void) const; + + /** + * Set LteUePhy + * \param s a pointer to the LteUePhy + */ + void SetPhy (Ptr s); + + /** + * Set the LteEnbMac + * \ param s a pointer to the LteEnbMac + */ + void SetMac (Ptr s); + +protected: + // inherited from Object + virtual void DoInitialize (void); + +private: + + Ptr m_phy; + Ptr m_mac; + +}; + + + +} // namespace ns3 + + + +#endif /* COMPONENT_CARRIER_UE_H */ diff --git a/src/lte/model/component-carrier.cc b/src/lte/model/component-carrier.cc new file mode 100644 index 000000000..06c778bd9 --- /dev/null +++ b/src/lte/model/component-carrier.cc @@ -0,0 +1,237 @@ +/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2015 Danilo Abrignani + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Danilo Abrignani + */ + +#include "component-carrier.h" +#include +#include +#include +#include +#include +#include +#include + +namespace ns3 { + +NS_LOG_COMPONENT_DEFINE ("ComponentCarrier"); + +NS_OBJECT_ENSURE_REGISTERED ( ComponentCarrier); + +TypeId ComponentCarrier::GetTypeId (void) +{ + static TypeId + tid = + TypeId ("ns3::ComponentCarrier") + .SetParent () + .AddConstructor () + .AddAttribute ("UlBandwidth", + "Uplink Transmission Bandwidth Configuration in number of Resource Blocks", + UintegerValue (25), + MakeUintegerAccessor (&ComponentCarrier::SetUlBandwidth, + &ComponentCarrier::GetUlBandwidth), + MakeUintegerChecker ()) + .AddAttribute ("DlBandwidth", + "Downlink Transmission Bandwidth Configuration in number of Resource Blocks", + UintegerValue (25), + MakeUintegerAccessor (&ComponentCarrier::SetDlBandwidth, + &ComponentCarrier::GetDlBandwidth), + MakeUintegerChecker ()) + .AddAttribute ("DlEarfcn", + "Downlink E-UTRA Absolute Radio Frequency Channel Number (EARFCN) " + "as per 3GPP 36.101 Section 5.7.3. ", + UintegerValue (100), + MakeUintegerAccessor (&ComponentCarrier::m_dlEarfcn), + MakeUintegerChecker (0, 262143)) + .AddAttribute ("UlEarfcn", + "Uplink E-UTRA Absolute Radio Frequency Channel Number (EARFCN) " + "as per 3GPP 36.101 Section 5.7.3. ", + UintegerValue (18100), + MakeUintegerAccessor (&ComponentCarrier::m_ulEarfcn), + MakeUintegerChecker (18000, 262143)) + .AddAttribute ("CsgId", + "The Closed Subscriber Group (CSG) identity that this eNodeB belongs to", + UintegerValue (0), + MakeUintegerAccessor (&ComponentCarrier::SetCsgId, + &ComponentCarrier::GetCsgId), + MakeUintegerChecker ()) + .AddAttribute ("CsgIndication", + "If true, only UEs which are members of the CSG (i.e. same CSG ID) " + "can gain access to the eNodeB, therefore enforcing closed access mode. " + "Otherwise, the eNodeB operates as a non-CSG cell and implements open access mode.", + BooleanValue (false), + MakeBooleanAccessor (&ComponentCarrier::SetCsgIndication, + &ComponentCarrier::GetCsgIndication), + MakeBooleanChecker ()) + .AddAttribute ("PrimaryCarrier", + "If true, this Carrier Component will be the Primary Carrier Component (PCC) " + "Only one PCC per eNodeB is (currently) allowed", + BooleanValue (false), + MakeBooleanAccessor (&ComponentCarrier::SetAsPrimary, + &ComponentCarrier::IsPrimary), + MakeBooleanChecker ()) + ; + return tid; +} +ComponentCarrier::ComponentCarrier () + : m_isConstructed (false) +{ + NS_LOG_FUNCTION (this); +} + +ComponentCarrier::~ComponentCarrier (void) +{ + NS_LOG_FUNCTION (this); +} + +void +ComponentCarrier::DoDispose () +{ + NS_LOG_FUNCTION (this); + Object::DoDispose (); +} + +uint8_t +ComponentCarrier::GetUlBandwidth () const +{ + return m_ulBandwidth; +} + +void +ComponentCarrier::SetUlBandwidth (uint8_t bw) +{ + NS_LOG_FUNCTION (this << uint16_t (bw)); + switch (bw) + { + case 6: + case 15: + case 25: + case 50: + case 75: + case 100: + m_ulBandwidth = bw; + break; + + default: + NS_FATAL_ERROR ("Invalid bandwidth value " << (uint16_t) bw); + break; + } +} + +uint8_t +ComponentCarrier::GetDlBandwidth () const +{ + return m_dlBandwidth; +} + +void +ComponentCarrier::SetDlBandwidth (uint8_t bw) +{ + NS_LOG_FUNCTION (this << uint16_t (bw)); + switch (bw) + { + case 6: + case 15: + case 25: + case 50: + case 75: + case 100: + m_dlBandwidth = bw; + break; + + default: + NS_FATAL_ERROR ("Invalid bandwidth value " << (uint16_t) bw); + break; + } +} + +uint32_t +ComponentCarrier::GetDlEarfcn () const +{ + return m_dlEarfcn; +} + +void +ComponentCarrier::SetDlEarfcn (uint32_t earfcn) +{ + NS_LOG_FUNCTION (this << earfcn); + m_dlEarfcn = earfcn; +} + +uint32_t +ComponentCarrier::GetUlEarfcn () const +{ + return m_ulEarfcn; +} + +void +ComponentCarrier::SetUlEarfcn (uint32_t earfcn) +{ + NS_LOG_FUNCTION (this << earfcn); + m_ulEarfcn = earfcn; +} + +uint32_t +ComponentCarrier::GetCsgId () const +{ + return m_csgId; +} + +void +ComponentCarrier::SetCsgId (uint32_t csgId) +{ + NS_LOG_FUNCTION (this << csgId); + m_csgId = csgId; +} + +bool +ComponentCarrier::GetCsgIndication () const +{ + return m_csgIndication; +} + +void +ComponentCarrier::SetCsgIndication (bool csgIndication) +{ + NS_LOG_FUNCTION (this << csgIndication); + m_csgIndication = csgIndication; +} + +bool +ComponentCarrier::IsPrimary () const +{ + return m_primaryCarrier; +} + +void +ComponentCarrier::SetAsPrimary (bool primaryCarrier) +{ + NS_LOG_FUNCTION (this << primaryCarrier); + m_primaryCarrier = primaryCarrier; +} + +void +ComponentCarrier::DoInitialize (void) +{ + NS_LOG_FUNCTION (this); + m_isConstructed = true; +} + +} // namespace ns3 + + diff --git a/src/lte/model/component-carrier.h b/src/lte/model/component-carrier.h new file mode 100644 index 000000000..b8405706f --- /dev/null +++ b/src/lte/model/component-carrier.h @@ -0,0 +1,169 @@ +/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2015 Danilo Abrignani + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Danilo Abrignani + */ + + +#ifndef COMPONENT_CARRIER_H +#define COMPONENT_CARRIER_H + +#include +#include +#include +#include "ns3/lte-phy.h" +#include +#include + +namespace ns3 { + +/** + * \ingroup lte + * + * ComponentCarrier Object, it defines a single Carrier + * This is the parent class for both ComponentCarrierEnb + * and ComponentCarrierUe. + * This class contains the main physical configuration + * parameters for a carrier. Does not contain pointers to + * the MAC/PHY objects of the carrier. + + */ +class ComponentCarrier : public Object +{ +public: + static TypeId GetTypeId (void); + + ComponentCarrier (); + + virtual ~ComponentCarrier (void); + virtual void DoDispose (void); + + /** + * \return the uplink bandwidth in RBs + */ + uint8_t GetUlBandwidth () const; + + /** + * \param bw the uplink bandwidth in RBs + */ + void SetUlBandwidth (uint8_t bw); + + /** + * \return the downlink bandwidth in RBs + */ + uint8_t GetDlBandwidth () const; + + /** + * \param bw the downlink bandwidth in RBs + */ + void SetDlBandwidth (uint8_t bw); + + /** + * \return the downlink carrier frequency (EARFCN) + */ + uint32_t GetDlEarfcn () const; + + /** + * \param earfcn the downlink carrier frequency (EARFCN) + */ + void SetDlEarfcn (uint32_t earfcn); + + /** + * \return the uplink carrier frequency (EARFCN) + */ + uint32_t GetUlEarfcn () const; + + /** + * \param earfcn the uplink carrier frequency (EARFCN) + */ + void SetUlEarfcn (uint32_t earfcn); + + /** + * \brief Returns the CSG ID of the eNodeB. + * \return the Closed Subscriber Group identity + * \sa LteEnbNetDevice::SetCsgId + */ + uint32_t GetCsgId () const; + + /** + * \brief Associate the eNodeB device with a particular CSG. + * \param csgId the intended Closed Subscriber Group identity + * + * CSG identity is a number identifying a Closed Subscriber Group which the + * cell belongs to. eNodeB is associated with a single CSG identity. + * + * The same CSG identity can also be associated to several UEs, which is + * equivalent as enlisting these UEs as the members of this particular CSG. + * + * \sa LteEnbNetDevice::SetCsgIndication + */ + void SetCsgId (uint32_t csgId); + + /** + * \brief Returns the CSG indication flag of the eNodeB. + * \return the CSG indication flag + * \sa LteEnbNetDevice::SetCsgIndication + */ + bool GetCsgIndication () const; + + /** + * \brief Enable or disable the CSG indication flag. + * \param csgIndication if TRUE, only CSG members are allowed to access this + * cell + * + * When the CSG indication field is set to TRUE, only UEs which are members of + * the CSG (i.e. same CSG ID) can gain access to the eNodeB, therefore + * enforcing closed access mode. Otherwise, the eNodeB operates as a non-CSG + * cell and implements open access mode. + * + * \note This restriction only applies to initial cell selection and + * EPC-enabled simulation. + * + * \sa LteEnbNetDevice::SetCsgIndication + */ + void SetCsgIndication (bool csgIndication); + + void SetAsPrimary (bool primaryCarrier); + + bool IsPrimary () const; + + + uint8_t m_dlBandwidth; /**< downlink bandwidth in RBs */ + uint8_t m_ulBandwidth; /**< uplink bandwidth in RBs */ + + uint32_t m_dlEarfcn; /**< downlink carrier frequency */ + uint32_t m_ulEarfcn; /**< uplink carrier frequency */ + +protected: + // inherited from Object + virtual void DoInitialize (void); + uint16_t m_csgId; + bool m_csgIndication; + + bool m_primaryCarrier; + bool m_isConstructed; +// bool m_isConfigured; + +}; + + + +} // namespace ns3 + + + +#endif /* COMPONENT_CARRIER_H */ diff --git a/src/lte/model/lte-common.h b/src/lte/model/lte-common.h index 497ccedd9..a8de8974f 100644 --- a/src/lte/model/lte-common.h +++ b/src/lte/model/lte-common.h @@ -166,6 +166,18 @@ struct PhyReceptionStatParameters }; +struct DlSchedulingCallbackInfo +{ + uint32_t frameNo; + uint32_t subframeNo; + uint16_t rnti; + uint8_t mcsTb1; + uint16_t sizeTb1; + uint8_t mcsTb2; + uint16_t sizeTb2; + uint8_t componentCarrierId; +}; + /** * Implements the E-UTRA measurement mappings defined in 3GPP TS * 36.133 section 9.1 E-UTRAN measurements diff --git a/src/lte/model/lte-enb-mac.cc b/src/lte/model/lte-enb-mac.cc index 0218d7bab..6ccb823b5 100644 --- a/src/lte/model/lte-enb-mac.cc +++ b/src/lte/model/lte-enb-mac.cc @@ -942,6 +942,7 @@ LteEnbMac::DoTransmitPdu (LteMacSapProvider::TransmitPduParameters params) NS_LOG_FUNCTION (this); LteRadioBearerTag tag (params.rnti, params.lcid, params.layer); params.pdu->AddPacketTag (tag); + params.componentCarrierId = m_componentCarrierId; // Store pkt in HARQ buffer std::map ::iterator it = m_miDlHarqProcessesPackets.find (params.rnti); NS_ASSERT (it != m_miDlHarqProcessesPackets.end ()); diff --git a/src/lte/model/lte-enb-net-device.cc b/src/lte/model/lte-enb-net-device.cc index eef3da75c..d7d726f7b 100644 --- a/src/lte/model/lte-enb-net-device.cc +++ b/src/lte/model/lte-enb-net-device.cc @@ -18,6 +18,7 @@ * Author: Giuseppe Piro * Author: Marco Miozzo : Update to FF API Architecture * Author: Nicola Baldo : Integrated with new RRC and MAC architecture + * Author: Danilo Abrignani : Integrated with new architecture - GSoC 2015 - Carrier Aggregation */ #include @@ -44,6 +45,8 @@ #include #include #include +#include +#include namespace ns3 { @@ -93,6 +96,10 @@ TypeId LteEnbNetDevice::GetTypeId (void) PointerValue (), MakePointerAccessor (&LteEnbNetDevice::m_phy), MakePointerChecker ()) + .AddAttribute ("ComponentCarrierMap", "List of component carriers.", + ObjectMapValue (), + MakeObjectMapAccessor (&LteEnbNetDevice::m_ccMap), + MakeObjectMapChecker ()) .AddAttribute ("UlBandwidth", "Uplink Transmission Bandwidth Configuration in number of Resource Blocks", UintegerValue (25), @@ -199,6 +206,18 @@ LteEnbNetDevice::GetPhy () const return m_phy; } +Ptr +LteEnbNetDevice::GetMac (uint8_t index) +{ + return m_ccMap.at (index)->GetMac (); +} + +Ptr +LteEnbNetDevice::GetPhy(uint8_t index) +{ + return m_ccMap.at (index)->GetPhy (); +} + Ptr LteEnbNetDevice::GetRrc () const { @@ -319,6 +338,17 @@ LteEnbNetDevice::SetCsgIndication (bool csgIndication) UpdateConfig (); // propagate the change to RRC level } +std::map < uint8_t, Ptr > +LteEnbNetDevice::GetCcMap () +{ + return m_ccMap; +} + +void +LteEnbNetDevice::SetCcMap (std::map< uint8_t, Ptr > ccm) +{ + m_ccMap = ccm; +} void LteEnbNetDevice::DoInitialize (void) diff --git a/src/lte/model/lte-enb-net-device.h b/src/lte/model/lte-enb-net-device.h index 1d41a71b4..9c5972052 100644 --- a/src/lte/model/lte-enb-net-device.h +++ b/src/lte/model/lte-enb-net-device.h @@ -17,6 +17,7 @@ * * Author: Giuseppe Piro * Author: Marco Miozzo : Update to FF API Architecture + * Author: Danilo Abrignani : Integrated with new architecture - GSoC 2015 - Carrier Aggregation */ #ifndef LTE_ENB_NET_DEVICE_H @@ -28,7 +29,9 @@ #include "ns3/traced-callback.h" #include "ns3/nstime.h" #include "ns3/lte-phy.h" +#include "ns3/component-carrier-enb.h" #include +#include namespace ns3 { @@ -63,14 +66,24 @@ public: virtual bool Send (Ptr packet, const Address& dest, uint16_t protocolNumber); /** - * \return a pointer to the MAC + * \return a pointer to the MAC of the PCC. */ Ptr GetMac (void) const; /** - * \return a pointer to the physical layer. + * \return a pointer to the MAC of the CC addressed by index. + */ + Ptr GetMac (uint8_t index); + + /** + * \return a pointer to the physical layer of the PCC. */ Ptr GetPhy (void) const; + + /** + * \return a pointer to the physical layer of the SCC addressed by index. + */ + Ptr GetPhy (uint8_t index); /** * \return a pointer to the Radio Resource Control instance of the eNB @@ -167,6 +180,21 @@ public: */ void SetCsgIndication (bool csgIndication); + /** + * \brief Set the ComponentCarrier Map of the Enb + * \param ccm the map of ComponentCarrierEnb + * + */ + + void SetCcMap (std::map< uint8_t, Ptr > ccm); + + /** + * \returns The Component Carrier Map of the Enb. + * + */ + + std::map< uint8_t, Ptr > GetCcMap (void); + protected: // inherited from Object virtual void DoInitialize (void); @@ -188,31 +216,32 @@ private: */ void UpdateConfig (); - Ptr m_mac; + Ptr m_mac; /**< DEPRECATED - It is maintained for backward compatibility after adding CA feature*/ - Ptr m_phy; + Ptr m_phy; /**< DEPRECATED - It is maintained for backward compatibility after adding CA feature*/ Ptr m_rrc; - Ptr m_scheduler; + Ptr m_scheduler; /**< DEPRECATED - It is maintained for backward compatibility after adding CA feature*/ Ptr m_handoverAlgorithm; Ptr m_anr; - Ptr m_ffrAlgorithm; + Ptr m_ffrAlgorithm; /**< DEPRECATED - It is maintained for backward compatibility after adding CA feature*/ uint16_t m_cellId; /**< Cell Identifer. Part of the CGI, see TS 29.274, section 8.21.1 */ - uint8_t m_dlBandwidth; /**< downlink bandwidth in RBs */ - uint8_t m_ulBandwidth; /**< uplink bandwidth in RBs */ + uint8_t m_dlBandwidth; /** > m_ccMap; /**< ComponentCarrier map */ }; // end of class LteEnbNetDevice } // namespace ns3 diff --git a/src/lte/model/lte-enb-rrc.cc b/src/lte/model/lte-enb-rrc.cc index 501078784..1188bac54 100644 --- a/src/lte/model/lte-enb-rrc.cc +++ b/src/lte/model/lte-enb-rrc.cc @@ -2347,6 +2347,11 @@ LteEnbRrc::SetCsgId (uint32_t csgId, bool csgIndication) m_cphySapProvider->SetSystemInformationBlockType1 (m_sib1); } +void +LteEnbRrc::SetNumberOfComponentCarriers(uint16_t numberOfComponentCarriers) +{ + m_numberOfComponentCarriers = numberOfComponentCarriers; +} /// Number of distinct SRS periodicity plus one. static const uint8_t SRS_ENTRIES = 9; diff --git a/src/lte/model/lte-enb-rrc.h b/src/lte/model/lte-enb-rrc.h index 797319847..04526ad34 100644 --- a/src/lte/model/lte-enb-rrc.h +++ b/src/lte/model/lte-enb-rrc.h @@ -993,6 +993,8 @@ public: */ void SetCsgId (uint32_t csgId, bool csgIndication); + void SetNumberOfComponentCarriers (uint16_t numberOfComponentCarriers); + private: /** @@ -1250,6 +1252,8 @@ private: */ TracedCallback m_recvMeasurementReportTrace; + uint16_t m_numberOfComponentCarriers; + }; // end of `class LteEnbRrc` diff --git a/src/lte/model/lte-ue-net-device.cc b/src/lte/model/lte-ue-net-device.cc index c54c35621..cb0923045 100644 --- a/src/lte/model/lte-ue-net-device.cc +++ b/src/lte/model/lte-ue-net-device.cc @@ -18,6 +18,9 @@ * Author: Giuseppe Piro * Nicola Baldo * Marco Miozzo + * Modified by: + * Danilo Abrignani (Carrier Aggregation - GSoC 2015) + * Biljana Bojovic (Carrier Aggregation) */ #include "ns3/llc-snap-header.h" @@ -43,6 +46,8 @@ #include #include #include "epc-tft.h" +#include +#include namespace ns3 { @@ -78,6 +83,10 @@ TypeId LteUeNetDevice::GetTypeId (void) PointerValue (), MakePointerAccessor (&LteUeNetDevice::m_phy), MakePointerChecker ()) + .AddAttribute ("ComponentCarrierMapUe", "List of all component Carrier.", + ObjectMapValue (), + MakeObjectMapAccessor (&LteUeNetDevice::m_ccMap), + MakeObjectMapChecker ()) .AddAttribute ("Imsi", "International Mobile Subscriber Identity assigned to this UE", UintegerValue (0), @@ -237,6 +246,18 @@ LteUeNetDevice::GetTargetEnb (void) return m_targetEnb; } +std::map < uint8_t, Ptr > +LteUeNetDevice::GetCcMap () +{ + return m_ccMap; +} + +void +LteUeNetDevice::SetCcMap (std::map< uint8_t, Ptr > ccm) +{ + m_ccMap = ccm; +} + void LteUeNetDevice::DoInitialize (void) { diff --git a/src/lte/model/lte-ue-net-device.h b/src/lte/model/lte-ue-net-device.h index cb8cdc5a9..b45c5f59b 100644 --- a/src/lte/model/lte-ue-net-device.h +++ b/src/lte/model/lte-ue-net-device.h @@ -17,6 +17,9 @@ * * Author: Giuseppe Piro * Nicola Baldo + * Modified by: + * Danilo Abrignani (Carrier Aggregation - GSoC 2015) + * Biljana Bojovic (Carrier Aggregation) */ #ifndef LTE_UE_NET_DEVICE_H @@ -29,7 +32,9 @@ #include "ns3/nstime.h" #include "ns3/lte-phy.h" #include "ns3/eps-bearer.h" - +#include "ns3/component-carrier-ue.h" +#include +#include namespace ns3 { @@ -120,6 +125,15 @@ public: */ Ptr GetTargetEnb (void); + /** + * \brief Set the ComponentCarrier Map for the UE + * \param ccm the map of ComponentCarrierUe + */ + void SetCcMap (std::map< uint8_t, Ptr > ccm); + + std::map< uint8_t, Ptr > GetCcMap (void); + + protected: // inherited from Object @@ -153,6 +167,8 @@ private: uint32_t m_csgId; + std::map < uint8_t, Ptr > m_ccMap; + }; // end of class LteUeNetDevice } // namespace ns3 diff --git a/src/lte/wscript b/src/lte/wscript index f040c3fd0..552d24912 100644 --- a/src/lte/wscript +++ b/src/lte/wscript @@ -121,6 +121,9 @@ def build(bld): 'model/lte-ffr-enhanced-algorithm.cc', 'model/lte-ffr-distributed-algorithm.cc', 'model/lte-ue-power-control.cc', + 'model/component-carrier.cc', + 'model/component-carrier-ue.cc', + 'model/component-carrier-enb.cc' ] module_test = bld.create_ns3_module_test_library('lte') @@ -294,8 +297,11 @@ def build(bld): 'model/lte-fr-soft-algorithm.h', 'model/lte-ffr-soft-algorithm.h', 'model/lte-ffr-enhanced-algorithm.h', - 'model/lte-ffr-distributed-algorithm.h', - 'model/lte-ue-power-control.h', + 'model/lte-ffr-distributed-algorithm.h', + 'model/lte-ue-power-control.h', + 'model/component-carrier.h', + 'model/component-carrier-ue.h', + 'model/component-carrier-enb.h' ] if (bld.env['ENABLE_EMU']):