├── .cproject ├── .gitignore ├── .nedexclusions ├── .nedfolders ├── .oppbuildspec ├── .oppfeatures ├── .oppfeaturestate ├── .project ├── INSTALL.md ├── LICENSE.md ├── Makefile ├── README.md ├── Version ├── __TODO ├── images ├── background │ └── budapest.png └── car.png ├── license.pdf ├── plugins └── com.simulte.configeditor_1.0.0.jar ├── simulations ├── Mode4 │ ├── Highway.ned │ ├── README.md │ ├── config_channel.xml │ ├── highway │ │ ├── 006vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ ├── 009vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ ├── 012vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ ├── 016vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ ├── 025vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ ├── 02vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ └── 03vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ ├── omnetpp.ini │ ├── run │ └── sidelink_configuration.xml ├── Mode4Validation │ ├── README.md │ ├── highway.ned │ ├── highway │ │ ├── 006vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ ├── 009vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ ├── 012vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ ├── 016vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ ├── 025vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ ├── 02vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ │ └── 03vpm │ │ │ ├── highway.launchd.xml │ │ │ ├── highway.net.xml │ │ │ ├── highway.rou.xml │ │ │ ├── highway.sumo.cfg │ │ │ └── rerouters.add.xml │ ├── mcs7_config_channel.xml │ ├── mcs7_sidelink_config.xml │ ├── mcs9_config_channel.xml │ ├── mcs9_sidelink_config.xml │ ├── omnetpp.ini │ ├── rerouters.add.xml │ └── run ├── advanced │ ├── config_channel.xml │ ├── demo.xml │ ├── omnetpp.ini │ └── run ├── cars │ ├── Highway.ned │ ├── config_channel.xml │ ├── demo.xml │ ├── gui-settings.xml │ ├── heterogeneous.add.xml │ ├── heterogeneous.launchd.xml │ ├── heterogeneous.net.xml │ ├── heterogeneous.rou.xml │ ├── heterogeneous.sumocfg │ ├── heterogeneous.trips.xml │ ├── omnetpp.ini │ ├── run │ ├── sidelink_configuration.xml │ └── topology-config.xml ├── d2d │ ├── README.txt │ ├── config_channel.xml │ ├── config_channel_nofadshad.xml │ ├── demo.xml │ └── omnetpp.ini ├── d2d_multicast │ ├── README.txt │ ├── config_channel.xml │ ├── config_channel_nofadshad.xml │ ├── demo.xml │ └── omnetpp.ini ├── demo │ ├── config_channel.xml │ ├── demo.xml │ ├── omnetpp.ini │ └── run ├── eutran_epc │ ├── config_channel.xml │ ├── demo.xml │ ├── lteCoreConfigFiles │ │ ├── enb1.xml │ │ ├── enb2.xml │ │ ├── enb3.xml │ │ ├── lteIpAddresses.xml │ │ ├── pgw.xml │ │ ├── sgw1.xml │ │ ├── sgw2.xml │ │ └── sgw3.xml │ ├── omnetpp.ini │ └── run ├── gtpNetwork │ ├── ipAddresses.xml │ ├── lteCoreConfigFiles │ │ ├── enb1.xml │ │ ├── enb2.xml │ │ ├── enb3.xml │ │ ├── lteIpAddresses.xml │ │ ├── pgw.xml │ │ ├── sgw1.xml │ │ ├── sgw2.xml │ │ └── sgw3.xml │ ├── lteCoreExample.ini │ ├── omnetpp.ini │ ├── run │ ├── s1.xml │ ├── s2.xml │ └── s3.xml ├── multicell │ ├── config_channel.xml │ ├── demo.xml │ ├── omnetpp.ini │ └── run ├── networks │ ├── MultiCell.ned │ ├── MultiCell_X2Mesh.ned │ ├── MultiCell_X2Star.ned │ ├── SingleCell.ned │ ├── SingleCell_D2D.ned │ ├── SingleCell_D2DMulticast.ned │ ├── eutran_epcNetwork.ned │ ├── gtpNetwork.ned │ └── lteCoreNetwork.ned ├── package.ned ├── schedulingTest │ ├── config_channel.xml │ ├── demo.xml │ ├── omnetpp.ini │ ├── optFile.lp │ ├── run │ └── solution.sol ├── test_handover │ ├── config_channel.xml │ ├── demo.xml │ ├── gui.ini │ ├── husten.mp3 │ ├── omnetpp.ini │ └── run ├── tutorial │ ├── config_channel.xml │ ├── demo.xml │ ├── gui.ini │ ├── husten.mp3 │ ├── omnetpp.ini │ └── run └── x2 │ ├── balancedScenario.ini │ ├── config_channel.xml │ ├── demo.xml │ ├── omnetpp.ini │ ├── readme │ ├── run │ └── unbalancedScenario.ini ├── src ├── apps │ ├── alert │ │ ├── AlertPacket.msg │ │ ├── AlertReceiver.cc │ │ ├── AlertReceiver.h │ │ ├── AlertReceiver.ned │ │ ├── AlertSender.cc │ │ ├── AlertSender.h │ │ └── AlertSender.ned │ ├── cbr │ │ ├── CbrPacket.msg │ │ ├── CbrReceiver.cc │ │ ├── CbrReceiver.h │ │ ├── CbrReceiver.ned │ │ ├── CbrSender.cc │ │ ├── CbrSender.h │ │ └── CbrSender.ned │ ├── geoNet │ │ └── GeoNetworking.msg │ ├── mode4App │ │ ├── Mode4App.cc │ │ ├── Mode4App.h │ │ ├── Mode4BaseApp.cc │ │ ├── Mode4BaseApp.h │ │ ├── mode4App.ned │ │ └── mode4BaseApp.ned │ ├── vod │ │ ├── M1Message.msg │ │ ├── VoDPacket.msg │ │ ├── VoDUDPClient.cc │ │ ├── VoDUDPClient.h │ │ ├── VoDUDPClient.ned │ │ ├── VoDUDPServer.cc │ │ ├── VoDUDPServer.h │ │ ├── VoDUDPServer.ned │ │ └── VoDUDPStruct.h │ └── voip │ │ ├── VoIPReceiver.cc │ │ ├── VoIPReceiver.h │ │ ├── VoIPReceiver.ned │ │ ├── VoIPSender.cc │ │ ├── VoIPSender.h │ │ ├── VoIPSender.ned │ │ └── VoipPacket.msg ├── common │ ├── Circular.h │ ├── LteCommon.cc │ ├── LteCommon.h │ ├── LteControlInfo.cc │ ├── LteControlInfo.h │ ├── LteControlInfo.msg │ ├── features.h │ └── timer │ │ ├── TMultiTimerMsg.msg │ │ ├── TTimer.cc │ │ ├── TTimer.h │ │ └── TTimerMsg.msg ├── corenetwork │ ├── binder │ │ ├── LteBinder.cc │ │ ├── LteBinder.h │ │ ├── LteBinder.ned │ │ ├── PhyPisaData.cc │ │ └── PhyPisaData.h │ ├── deployer │ │ ├── LteDeployer.cc │ │ ├── LteDeployer.h │ │ └── LteDeployer.ned │ ├── lteip │ │ ├── IP2lte.cc │ │ ├── IP2lte.h │ │ ├── IP2lte.ned │ │ ├── InternetQueue.cc │ │ ├── InternetQueue.h │ │ ├── InternetQueue.ned │ │ ├── LteIp.cc │ │ ├── LteIp.h │ │ └── LteIp.ned │ └── nodes │ │ ├── ExtCell.cc │ │ ├── ExtCell.h │ │ ├── ExtCell.ned │ │ ├── InternetMux.cc │ │ ├── InternetMux.h │ │ ├── LteInternet.ned │ │ ├── Relay.ned │ │ ├── Ue.ned │ │ ├── UnUuMux.cc │ │ ├── UnUuMux.h │ │ ├── cars │ │ ├── Car.ned │ │ └── CarNonIp.ned │ │ ├── eNBpp.ned │ │ └── eNodeB.ned ├── epc │ ├── PgwStandard.ned │ ├── README │ ├── SgwStandard.ned │ ├── TrafficFlowFilter.cc │ ├── TrafficFlowFilter.h │ ├── TrafficFlowFilter.ned │ ├── TrafficFlowFilterSimplified.cc │ ├── TrafficFlowFilterSimplified.h │ ├── gtp │ │ ├── GtpUser.cc │ │ ├── GtpUser.h │ │ ├── GtpUser.ned │ │ ├── GtpUserMsg.msg │ │ ├── GtpUserSimplified.cc │ │ ├── GtpUserSimplified.h │ │ ├── GtpUserX2.cc │ │ ├── GtpUserX2.h │ │ ├── TftControlInfo.cc │ │ └── TftControlInfo.h │ ├── gtp_common.cc │ └── gtp_common.h ├── makefrag ├── package.ned ├── run_lte ├── stack │ ├── compManager │ │ ├── LteCompManager.ned │ │ ├── LteCompManagerBase.cc │ │ ├── LteCompManagerBase.h │ │ ├── X2CompMsg.h │ │ ├── X2CompReplyIE.h │ │ ├── X2CompRequestIE.h │ │ └── compManagerProportional │ │ │ ├── LteCompManagerProportional.cc │ │ │ ├── LteCompManagerProportional.h │ │ │ ├── LteCompManagerProportional.ned │ │ │ ├── X2CompProportionalReplyIE.h │ │ │ └── X2CompProportionalRequestIE.h │ ├── d2dModeSelection │ │ ├── D2DModeSelection.ned │ │ ├── D2DModeSelectionBase.cc │ │ ├── D2DModeSelectionBase.h │ │ ├── D2DModeSwitchNotification.msg │ │ └── d2dModeSelectionBestCqi │ │ │ ├── D2DModeSelectionBestCqi.cc │ │ │ └── D2DModeSelectionBestCqi.h │ ├── handoverManager │ │ ├── LteHandoverManager.cc │ │ ├── LteHandoverManager.h │ │ ├── LteHandoverManager.ned │ │ ├── X2HandoverCommandIE.h │ │ ├── X2HandoverControlMsg.h │ │ └── X2HandoverDataMsg.h │ ├── mac │ │ ├── LteMac.ned │ │ ├── allocator │ │ │ ├── LteAllocationModule.cc │ │ │ ├── LteAllocationModule.h │ │ │ ├── LteAllocationModuleFrequencyReuse.cc │ │ │ ├── LteAllocationModuleFrequencyReuse.h │ │ │ └── LteAllocatorUtils.h │ │ ├── amc │ │ │ ├── AmcPilot.h │ │ │ ├── AmcPilotAuto.cc │ │ │ ├── AmcPilotAuto.h │ │ │ ├── AmcPilotD2D.cc │ │ │ ├── AmcPilotD2D.h │ │ │ ├── LteAmc.cc │ │ │ ├── LteAmc.h │ │ │ ├── LteMcs.cc │ │ │ ├── LteMcs.h │ │ │ └── UserTxParams.h │ │ ├── buffer │ │ │ ├── LteMacBuffer.cc │ │ │ ├── LteMacBuffer.h │ │ │ ├── LteMacQueue.cc │ │ │ ├── LteMacQueue.h │ │ │ ├── harq │ │ │ │ ├── LteHarqBufferRx.cc │ │ │ │ ├── LteHarqBufferRx.h │ │ │ │ ├── LteHarqBufferTx.cc │ │ │ │ ├── LteHarqBufferTx.h │ │ │ │ ├── LteHarqProcessRx.cc │ │ │ │ ├── LteHarqProcessRx.h │ │ │ │ ├── LteHarqProcessTx.cc │ │ │ │ ├── LteHarqProcessTx.h │ │ │ │ ├── LteHarqUnitTx.cc │ │ │ │ └── LteHarqUnitTx.h │ │ │ └── harq_d2d │ │ │ │ ├── LteHarqBufferRxD2D.cc │ │ │ │ ├── LteHarqBufferRxD2D.h │ │ │ │ ├── LteHarqBufferRxD2DMirror.cc │ │ │ │ ├── LteHarqBufferRxD2DMirror.h │ │ │ │ ├── LteHarqBufferTxD2D.cc │ │ │ │ ├── LteHarqBufferTxD2D.h │ │ │ │ ├── LteHarqProcessRxD2D.cc │ │ │ │ ├── LteHarqProcessRxD2D.h │ │ │ │ ├── LteHarqProcessRxD2DMirror.cc │ │ │ │ ├── LteHarqProcessRxD2DMirror.h │ │ │ │ ├── LteHarqProcessRxMode4.cc │ │ │ │ ├── LteHarqProcessRxMode4.h │ │ │ │ ├── LteHarqProcessTxD2D.cc │ │ │ │ ├── LteHarqProcessTxD2D.h │ │ │ │ ├── LteHarqUnitTxD2D.cc │ │ │ │ └── LteHarqUnitTxD2D.h │ │ ├── conflict_graph_utilities │ │ │ ├── meshMaster.cc │ │ │ ├── meshMaster.h │ │ │ ├── utilities.cc │ │ │ └── utilities.h │ │ ├── layer │ │ │ ├── LteMacBase.cc │ │ │ ├── LteMacBase.h │ │ │ ├── LteMacEnb.cc │ │ │ ├── LteMacEnb.h │ │ │ ├── LteMacEnbD2D.cc │ │ │ ├── LteMacEnbD2D.h │ │ │ ├── LteMacEnbRealistic.cc │ │ │ ├── LteMacEnbRealistic.h │ │ │ ├── LteMacEnbRealisticD2D.cc │ │ │ ├── LteMacEnbRealisticD2D.h │ │ │ ├── LteMacRelayEnb.cc │ │ │ ├── LteMacRelayEnb.h │ │ │ ├── LteMacRelayUe.cc │ │ │ ├── LteMacRelayUe.h │ │ │ ├── LteMacUe.cc │ │ │ ├── LteMacUe.h │ │ │ ├── LteMacUeD2D.cc │ │ │ ├── LteMacUeD2D.h │ │ │ ├── LteMacUeRealistic.cc │ │ │ ├── LteMacUeRealistic.h │ │ │ ├── LteMacUeRealisticD2D.cc │ │ │ ├── LteMacUeRealisticD2D.h │ │ │ ├── LteMacVUeMode4.cc │ │ │ └── LteMacVUeMode4.h │ │ ├── packet │ │ │ ├── LteHarqFeedback.msg │ │ │ ├── LteMacPdu.h │ │ │ ├── LteMacPdu.msg │ │ │ ├── LteMacSduRequest.h │ │ │ ├── LteMacSduRequest.msg │ │ │ ├── LteRac.msg │ │ │ ├── LteSchedulingGrant.h │ │ │ └── LteSchedulingGrant.msg │ │ ├── scheduler │ │ │ ├── LcgScheduler.cc │ │ │ ├── LcgScheduler.h │ │ │ ├── LcgSchedulerRealistic.cc │ │ │ ├── LcgSchedulerRealistic.h │ │ │ ├── LteScheduler.cc │ │ │ ├── LteScheduler.h │ │ │ ├── LteSchedulerEnb.cc │ │ │ ├── LteSchedulerEnb.h │ │ │ ├── LteSchedulerEnbDl.cc │ │ │ ├── LteSchedulerEnbDl.h │ │ │ ├── LteSchedulerEnbDlRealistic.cc │ │ │ ├── LteSchedulerEnbDlRealistic.h │ │ │ ├── LteSchedulerEnbUl.cc │ │ │ ├── LteSchedulerEnbUl.h │ │ │ ├── LteSchedulerUeUl.cc │ │ │ └── LteSchedulerUeUl.h │ │ └── scheduling_modules │ │ │ ├── LteAllocatorBestFit.cc │ │ │ ├── LteAllocatorBestFit.h │ │ │ ├── LteDrr.cc │ │ │ ├── LteDrr.h │ │ │ ├── LteMaxCi.cc │ │ │ ├── LteMaxCi.h │ │ │ ├── LteMaxCiComp.cc │ │ │ ├── LteMaxCiComp.h │ │ │ ├── LteMaxCiMultiband.cc │ │ │ ├── LteMaxCiMultiband.h │ │ │ ├── LteMaxCiOptMB.cc │ │ │ ├── LteMaxCiOptMB.h │ │ │ ├── LtePf.cc │ │ │ └── LtePf.h │ ├── pdcp_rrc │ │ ├── ConnectionsTable.cc │ │ ├── ConnectionsTable.h │ │ ├── LtePdcpRrc.ned │ │ ├── NonIpConnectionsTable.cc │ │ ├── NonIpConnectionsTable.h │ │ ├── layer │ │ │ ├── LtePdcpRrc.cc │ │ │ ├── LtePdcpRrc.h │ │ │ ├── LtePdcpRrcEnbD2D.cc │ │ │ ├── LtePdcpRrcEnbD2D.h │ │ │ ├── LtePdcpRrcUeD2D.cc │ │ │ ├── LtePdcpRrcUeD2D.h │ │ │ └── entity │ │ │ │ ├── LtePdcpEntity.cc │ │ │ │ └── LtePdcpEntity.h │ │ └── packet │ │ │ └── LtePdcpPdu.msg │ ├── phy │ │ ├── ChannelModel │ │ │ ├── LteChannelModel.cc │ │ │ ├── LteChannelModel.h │ │ │ ├── LteDummyChannelModel.cc │ │ │ ├── LteDummyChannelModel.h │ │ │ ├── LteRealisticChannelModel.cc │ │ │ └── LteRealisticChannelModel.h │ │ ├── LteNic.ned │ │ ├── LtePhy.ned │ │ ├── das │ │ │ ├── DasFilter.cc │ │ │ ├── DasFilter.h │ │ │ ├── RemoteAntennaSet.cc │ │ │ └── RemoteAntennaSet.h │ │ ├── feedback │ │ │ ├── LteDlFeedbackGenerator.cc │ │ │ ├── LteDlFeedbackGenerator.h │ │ │ ├── LteFeedback.cc │ │ │ ├── LteFeedback.h │ │ │ ├── LteFeedbackComputation.cc │ │ │ ├── LteFeedbackComputation.h │ │ │ ├── LteFeedbackComputationDummy.cc │ │ │ ├── LteFeedbackComputationDummy.h │ │ │ ├── LteFeedbackComputationRealistic.cc │ │ │ ├── LteFeedbackComputationRealistic.h │ │ │ ├── LteFeedbackGenerator.ned │ │ │ └── testFeedback │ │ │ │ ├── FeedbackTester.cc │ │ │ │ ├── FeedbackTester.h │ │ │ │ ├── FeedbackTester.ned │ │ │ │ ├── TestFeedback.ned │ │ │ │ └── omnetpp.ini │ │ ├── layer │ │ │ ├── LtePhyBase.cc │ │ │ ├── LtePhyBase.h │ │ │ ├── LtePhyEnb.cc │ │ │ ├── LtePhyEnb.h │ │ │ ├── LtePhyEnbD2D.cc │ │ │ ├── LtePhyEnbD2D.h │ │ │ ├── LtePhyRelay.cc │ │ │ ├── LtePhyRelay.h │ │ │ ├── LtePhyUe.cc │ │ │ ├── LtePhyUe.h │ │ │ ├── LtePhyUeD2D.cc │ │ │ ├── LtePhyUeD2D.h │ │ │ ├── LtePhyVUeMode4.cc │ │ │ ├── LtePhyVUeMode4.h │ │ │ └── Subchannel.h │ │ └── packet │ │ │ ├── AirFrame.msg │ │ │ ├── LteAirFrame.cc │ │ │ ├── LteAirFrame.h │ │ │ ├── LteAirFrame.msg │ │ │ ├── LteFeedbackPkt.cc │ │ │ ├── LteFeedbackPkt.h │ │ │ ├── LteFeedbackPkt.msg │ │ │ ├── ModulationType.h │ │ │ ├── SidelinkControlInformation.msg │ │ │ ├── SpsCandidateResources.h │ │ │ ├── SpsCandidateResources.msg │ │ │ └── cbr.msg │ └── rlc │ │ ├── LteRlc.ned │ │ ├── LteRlcDefs.h │ │ ├── LteRlcMux.cc │ │ ├── LteRlcMux.h │ │ ├── am │ │ ├── LteRlcAm.cc │ │ ├── LteRlcAm.h │ │ ├── buffer │ │ │ ├── AmRxQueue.cc │ │ │ ├── AmRxQueue.h │ │ │ ├── AmTxQueue.cc │ │ │ └── AmTxQueue.h │ │ └── packet │ │ │ ├── LteRlcAmPdu.cc │ │ │ ├── LteRlcAmPdu.h │ │ │ ├── LteRlcAmPdu.msg │ │ │ └── LteRlcAmSdu.msg │ │ ├── packet │ │ ├── LteRlcDataPdu.cc │ │ ├── LteRlcDataPdu.h │ │ ├── LteRlcDataPdu.msg │ │ ├── LteRlcPdu.h │ │ ├── LteRlcPdu.msg │ │ ├── LteRlcSdu.h │ │ └── LteRlcSdu.msg │ │ ├── tm │ │ ├── LteRlcTm.cc │ │ └── LteRlcTm.h │ │ └── um │ │ ├── LteRlcUm.cc │ │ ├── LteRlcUm.h │ │ ├── LteRlcUmRealistic.cc │ │ ├── LteRlcUmRealistic.h │ │ ├── LteRlcUmRealisticD2D.cc │ │ ├── LteRlcUmRealisticD2D.h │ │ ├── buffer │ │ ├── UmFragbuf.cc │ │ ├── UmFragbuf.h │ │ ├── UmRxQueue.cc │ │ ├── UmRxQueue.h │ │ ├── UmTxQueue.cc │ │ └── UmTxQueue.h │ │ └── entity │ │ ├── UmRxEntity.cc │ │ ├── UmRxEntity.h │ │ ├── UmTxEntity.cc │ │ └── UmTxEntity.h ├── world │ └── radio │ │ ├── ChannelAccess.cc │ │ ├── ChannelAccess.h │ │ ├── ChannelControl.cc │ │ ├── ChannelControl.h │ │ ├── ChannelControl.ned │ │ ├── IChannelControl.h │ │ ├── LteChannelControl.cc │ │ ├── LteChannelControl.h │ │ └── LteChannelControl.ned └── x2 │ ├── LteX2App.ned │ ├── LteX2Manager.cc │ ├── LteX2Manager.h │ ├── LteX2Manager.ned │ ├── X2AppClient.cc │ ├── X2AppClient.h │ ├── X2AppClient.ned │ ├── X2AppServer.cc │ ├── X2AppServer.h │ ├── X2AppServer.ned │ ├── X2User.ned │ └── packet │ ├── LteX2Message.h │ ├── LteX2Message.msg │ ├── X2ControlInfo.msg │ └── X2InformationElement.h ├── tests └── fingerprint │ ├── README │ ├── examples.csv │ ├── fingerprints │ └── test-branch-x └── ui └── com.simulte.configeditor ├── .classpath ├── .project ├── META-INF └── MANIFEST.MF ├── build.properties ├── icons ├── full │ └── wizban │ │ └── newinifile.png └── simulte.png ├── plugin.xml └── src └── com └── simulte └── configeditor ├── SimuLTEPlugin.java ├── editors ├── AbstractIniEditor.java ├── SimplifiedInifileDocument.java └── SimuLTEConfigEditor.java ├── fieldeditors ├── AbstractFieldEditor.java ├── ComboFieldEditor.java ├── IFieldEditor.java ├── SpinnerFieldEditor.java └── TextFieldEditor.java ├── propertysources ├── IPropertySource.java ├── IXmlAttributeProvider.java ├── IniConfigOptionPropertySource.java ├── IniParameterPropertySource.java ├── MultiPropertySource.java ├── ParsedXmlIniParameter.java └── XmlAttributePropertySource.java └── wizards ├── NewLteConfigWizard.java └── NewLteConfigWizardPage1.java /.gitignore: -------------------------------------------------------------------------------- 1 | # ignore generated files 2 | *_m.h 3 | *_m.cc 4 | src/Makefile 5 | src/Makefile.vc 6 | /doc/doxy/ 7 | /doc/neddoc/ 8 | *.pcap 9 | *.sca 10 | *.vec 11 | *.anf 12 | *.qtenvrc 13 | .settings/ 14 | 15 | # ignore binary files 16 | out/ 17 | *.so 18 | *.dylib 19 | *.dll 20 | *.a 21 | *.lib 22 | *.exe 23 | *.o 24 | *.obj 25 | *.pdb 26 | *.idb 27 | *.manifest 28 | .tkenvrc 29 | .tkenvlog 30 | *.out 31 | .computed 32 | 33 | # ignore backup and temp files 34 | *.bak 35 | backups 36 | *~ 37 | *.log 38 | 39 | 40 | *.FAILED 41 | .cproject 42 | .project 43 | ui/com.simulte.configeditor/bin/ 44 | 45 | # ignore result folders 46 | /simulations/gtpNetwork/ResultLteCoreNetwork/ 47 | /simulations/*/results*/ 48 | /simulations/*/*/results*/ 49 | /simulations/*/*/*/results*/ 50 | /simulations/*/scenario*/ 51 | /simulations/*/eval*/ 52 | /simulations/*/.cmdenv-log 53 | 54 | # ignore cLion editor 55 | .idea/ -------------------------------------------------------------------------------- /.nedexclusions: -------------------------------------------------------------------------------- 1 | lte.corenetwork.nodes.cars 2 | lte.simulations.cars 3 | -------------------------------------------------------------------------------- /.nedfolders: -------------------------------------------------------------------------------- 1 | simulations 2 | src 3 | -------------------------------------------------------------------------------- /.oppbuildspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.oppfeatures: -------------------------------------------------------------------------------- 1 | 2 | 15 | -------------------------------------------------------------------------------- /.oppfeaturestate: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: checkmakefiles 2 | @cd src && $(MAKE) 3 | 4 | clean: checkmakefiles 5 | @cd src && $(MAKE) clean 6 | 7 | cleanall: checkmakefiles 8 | @cd src && $(MAKE) MODE=release clean 9 | @cd src && $(MAKE) MODE=debug clean 10 | @rm -f src/Makefile 11 | 12 | makefiles: 13 | @cd src && opp_makemake --make-so -f --deep -o lte -O out -KINET_PROJ=../../inet -DINET_IMPORT -I. -I$$\(INET_PROJ\)/src -L$$\(INET_PROJ\)/out/$$\(CONFIGNAME\)/src -lINET 14 | 15 | checkmakefiles: 16 | @if [ ! -f src/Makefile ]; then \ 17 | echo; \ 18 | echo '======================================================================='; \ 19 | echo 'src/Makefile does not exist. Please use "make makefiles" to generate it!'; \ 20 | echo '======================================================================='; \ 21 | echo; \ 22 | exit 1; \ 23 | fi 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OpenCV2X - SimuLTE only i.e. Veins based simulations 2 | OpenCV2X enables simulation of V2X scenarios based on the 3GPP CV2X Mode 4 standard through an extension of the SimuLTE framework. It also allows for simulation with the ETSI ITS-G5 standard application layers through an integration with Artery which implements these standards for OMNeT++. 3 | 4 | More information can be found in the documentation page [here](http://www.cs.ucc.ie/~bm18/cv2x) 5 | -------------------------------------------------------------------------------- /Version: -------------------------------------------------------------------------------- 1 | v1.0.1 2 | -------------------------------------------------------------------------------- /__TODO: -------------------------------------------------------------------------------- 1 | - remove the dependence of the LTE model from the lte-apps project. code dependence is in LtePdcpRrcBase 2 | 3 | - use signal based statistics. In some places forwarded/dropped packets are counted inside a module. 4 | These can be replaced by simply emitting the given packet. 5 | 6 | - In LteBinder parameters for QCI 3 4 and 6 7 seems to be swapped ??? 7 | 8 | - LteBinder: lteInternet is not checked for NULLness. Will crash if no lteInternet module present 9 | 10 | - FeedbackTester should be moved to a separate directory. -------------------------------------------------------------------------------- /images/background/budapest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brianmc95/simulte/4b5d33d28aa1ec3ca108b5ba3a3be1b38e10cf5e/images/background/budapest.png -------------------------------------------------------------------------------- /images/car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brianmc95/simulte/4b5d33d28aa1ec3ca108b5ba3a3be1b38e10cf5e/images/car.png -------------------------------------------------------------------------------- /license.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brianmc95/simulte/4b5d33d28aa1ec3ca108b5ba3a3be1b38e10cf5e/license.pdf -------------------------------------------------------------------------------- /plugins/com.simulte.configeditor_1.0.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brianmc95/simulte/4b5d33d28aa1ec3ca108b5ba3a3be1b38e10cf5e/plugins/com.simulte.configeditor_1.0.0.jar -------------------------------------------------------------------------------- /simulations/Mode4/README.md: -------------------------------------------------------------------------------- 1 | # Mode 4 simulation 2 | 3 | ```bash 4 | opp_run_release -n /home/brian/artery/src/artery:/home/brian/artery/src/traci:/home/brian/artery/extern/veins/examples/veins:/home/brian/artery/extern/veins/src/veins:/home/brian/artery/extern/inet/src:/home/brian/artery/extern/inet/examples:/home/brian/artery/extern/inet/tutorials:/home/brian/artery/extern/inet/showcases:/home/brian/artery/extern/simulte/simulations:/home/brian/artery/extern/simulte/src -l /home/brian/artery/extern/inet/out/clang-release/src/libINET.so -l /home/brian/artery/extern/simulte/out/clang-release/src/liblte.so -l /home/brian/artery/cmake-build-release/src/artery/envmod/libartery_envmod.so -l /home/brian/artery/cmake-build-release/scenarios/highway-police/libartery_police.so -l /home/brian/artery/cmake-build-release/src/artery/envmod/libartery_envmod.so -l /home/brian/artery/cmake-build-release/src/artery/storyboard/libartery_storyboard.so -l /home/brian/artery/extern/inet/out/clang-release/src/libINET.so -l /home/brian/artery/extern/simulte/out/clang-release/src/liblte.so -l /home/brian/artery/extern/inet/out/clang-release/src/libINET.so -l /home/brian/artery/extern/veins/out/clang-release/src/libveins.so -l /home/brian/artery/cmake-build-release/src/artery/libartery_core.so omnetpp.ini -u Cmdenv -c Mode4-A 5 | ``` -------------------------------------------------------------------------------- /simulations/Mode4/highway/006vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/006vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/006vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/006vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/009vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/009vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/009vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/009vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/012vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/012vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/012vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/012vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/016vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/016vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/016vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/016vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/025vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/025vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/025vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/025vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/02vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/02vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/02vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/02vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/03vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/03vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/03vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4/highway/03vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/README.md: -------------------------------------------------------------------------------- 1 | # Mode 4 simulation 2 | 3 | ```bash 4 | opp_run_release -n /home/brian/artery/src/artery:/home/brian/artery/src/traci:/home/brian/artery/extern/veins/examples/veins:/home/brian/artery/extern/veins/src/veins:/home/brian/artery/extern/inet/src:/home/brian/artery/extern/inet/examples:/home/brian/artery/extern/inet/tutorials:/home/brian/artery/extern/inet/showcases:/home/brian/artery/extern/simulte/simulations:/home/brian/artery/extern/simulte/src -l /home/brian/artery/extern/inet/out/clang-release/src/libINET.so -l /home/brian/artery/extern/simulte/out/clang-release/src/liblte.so -l /home/brian/artery/cmake-build-release/src/artery/envmod/libartery_envmod.so -l /home/brian/artery/cmake-build-release/scenarios/highway-police/libartery_police.so -l /home/brian/artery/cmake-build-release/src/artery/envmod/libartery_envmod.so -l /home/brian/artery/cmake-build-release/src/artery/storyboard/libartery_storyboard.so -l /home/brian/artery/extern/inet/out/clang-release/src/libINET.so -l /home/brian/artery/extern/simulte/out/clang-release/src/liblte.so -l /home/brian/artery/extern/inet/out/clang-release/src/libINET.so -l /home/brian/artery/extern/veins/out/clang-release/src/libveins.so -l /home/brian/artery/cmake-build-release/src/artery/libartery_core.so omnetpp.ini -u Cmdenv -c Mode4-A 5 | ``` -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/006vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/006vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/006vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/006vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/009vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/009vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/009vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/009vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/012vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/012vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/012vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/012vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/016vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/016vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/016vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/016vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/025vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/025vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/025vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/025vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/02vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/02vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/02vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/02vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/03vpm/highway.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/03vpm/highway.rou.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/03vpm/highway.sumo.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/highway/03vpm/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/rerouters.add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/Mode4Validation/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/advanced/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /simulations/advanced/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/cars/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simulations/cars/heterogeneous.launchd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /simulations/cars/heterogeneous.sumocfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /simulations/cars/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/cars/topology-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /simulations/d2d/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /simulations/d2d_multicast/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /simulations/demo/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /simulations/demo/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/eutran_epc/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /simulations/eutran_epc/lteCoreConfigFiles/enb1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 22 | 23 | 24 | 25 | 26 | 31 | 32 | -------------------------------------------------------------------------------- /simulations/eutran_epc/lteCoreConfigFiles/enb2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 22 | 27 | 28 | 29 | 30 | 31 | 36 | 41 | 42 | -------------------------------------------------------------------------------- /simulations/eutran_epc/lteCoreConfigFiles/enb3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 22 | 27 | 28 | 29 | 30 | 31 | 36 | 41 | 42 | -------------------------------------------------------------------------------- /simulations/eutran_epc/lteCoreConfigFiles/lteIpAddresses.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /simulations/eutran_epc/lteCoreConfigFiles/pgw.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | -------------------------------------------------------------------------------- /simulations/eutran_epc/lteCoreConfigFiles/sgw1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /simulations/eutran_epc/lteCoreConfigFiles/sgw2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 16 | 21 | 26 | 27 | 28 | 33 | 38 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /simulations/eutran_epc/lteCoreConfigFiles/sgw3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /simulations/eutran_epc/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/ipAddresses.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/lteCoreConfigFiles/enb1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 22 | 27 | 32 | 33 | 34 | 35 | 36 | 41 | 46 | 51 | 52 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/lteCoreConfigFiles/enb2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 22 | 27 | 28 | 29 | 30 | 31 | 36 | 41 | 42 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/lteCoreConfigFiles/enb3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 22 | 27 | 28 | 29 | 30 | 31 | 36 | 41 | 42 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/lteCoreConfigFiles/lteIpAddresses.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/lteCoreConfigFiles/pgw.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 20 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 41 | 46 | 51 | 52 | 53 | 54 | 55 | 59 | 64 | 69 | 70 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/lteCoreConfigFiles/sgw1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 16 | 17 | 18 | 23 | 28 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/lteCoreConfigFiles/sgw2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 16 | 21 | 26 | 27 | 28 | 33 | 38 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/lteCoreConfigFiles/sgw3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/omnetpp.ini: -------------------------------------------------------------------------------- 1 | 2 | # two PING applications in the Host1 send pings to Host3 and Host4 respectively. 3 | # The first connection (Host1-Host3) is configured for being 1-hop 4 | # The second connection (Host1-Host4) is configured for being 2-hops, i.e. every packet is forced to pass through pgw2. 5 | [General] 6 | network = lte.simulations.networks.GtpNetwork 7 | record-eventlog = true 8 | result-dir = ResultGtpNetwork 9 | sim-time-limit = 10s 10 | 11 | **.Host1.numPingApps = 2 12 | **.Host1.pingApp[*].stopTime = 9s 13 | 14 | **.Host1.pingApp[0].destAddr = "Host4" 15 | **.Host1.pingApp[0].startTime = 1s 16 | 17 | **.Host1.pingApp[1].destAddr = "Host3" 18 | **.Host1.pingApp[1].startTime = 1.5s 19 | 20 | **.pgwStandard1.gtp_user.teidFileName = "s1.xml" 21 | **.pgwStandard1.gtp_user.tftFileName = "s1.xml" 22 | **.pgwStandard1.trafficFlowFilter.filterFileName = "s1.xml" 23 | 24 | **.pgwStandard2.gtp_user.teidFileName = "s2.xml" 25 | **.pgwStandard2.gtp_user.tftFileName = "s2.xml" 26 | **.pgwStandard2.trafficFlowFilter.filterFileName = "s2.xml" 27 | 28 | **.pgwStandard3.gtp_user.teidFileName = "s3.xml" 29 | **.pgwStandard3.gtp_user.tftFileName = "s3.xml" 30 | **.pgwStandard3.trafficFlowFilter.filterFileName = "s3.xml" 31 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/s1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 21 | 26 | 31 | 32 | 33 | 34 | 35 | 40 | 45 | 50 | 51 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/s2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /simulations/gtpNetwork/s3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 21 | 26 | 27 | 28 | 29 | 30 | 35 | 40 | 45 | 46 | -------------------------------------------------------------------------------- /simulations/multicell/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /simulations/multicell/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/package.ned: -------------------------------------------------------------------------------- 1 | package lte.simulations; 2 | 3 | @license(APL); 4 | -------------------------------------------------------------------------------- /simulations/schedulingTest/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /simulations/schedulingTest/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/test_handover/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /simulations/test_handover/husten.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brianmc95/simulte/4b5d33d28aa1ec3ca108b5ba3a3be1b38e10cf5e/simulations/test_handover/husten.mp3 -------------------------------------------------------------------------------- /simulations/test_handover/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/tutorial/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /simulations/tutorial/husten.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brianmc95/simulte/4b5d33d28aa1ec3ca108b5ba3a3be1b38e10cf5e/simulations/tutorial/husten.mp3 -------------------------------------------------------------------------------- /simulations/tutorial/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /simulations/x2/demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /simulations/x2/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ../../src/run_lte $* 3 | -------------------------------------------------------------------------------- /src/apps/alert/AlertPacket.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | // 12 | // Packet used by the ~AlertSender and ~AlertReceiver modules. 13 | // 14 | packet AlertPacket 15 | { 16 | unsigned int sno; 17 | simtime_t timestamp; 18 | } 19 | -------------------------------------------------------------------------------- /src/apps/alert/AlertReceiver.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_AlertReceiver_H_ 11 | #define _LTE_AlertReceiver_H_ 12 | 13 | #include 14 | #include 15 | 16 | #include "inet/networklayer/common/L3AddressResolver.h" 17 | #include "inet/transportlayer/contract/udp/UDPSocket.h" 18 | #include "apps/alert/AlertPacket_m.h" 19 | 20 | class AlertReceiver : public cSimpleModule 21 | { 22 | inet::UDPSocket socket; 23 | 24 | simsignal_t alertDelay_; 25 | simsignal_t alertRcvdMsg_; 26 | 27 | protected: 28 | 29 | virtual int numInitStages() const { return inet::NUM_INIT_STAGES; } 30 | void initialize(int stage); 31 | void handleMessage(cMessage *msg); 32 | }; 33 | 34 | #endif 35 | 36 | -------------------------------------------------------------------------------- /src/apps/alert/AlertReceiver.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.apps.alert; 11 | 12 | import inet.applications.contract.IUDPApp; 13 | 14 | 15 | simple AlertReceiver like IUDPApp 16 | { 17 | parameters: 18 | int localPort = default(3000); 19 | string interfaceTableModule; 20 | @signal[alertDelay]; 21 | @statistic[alertDelay](title="Alert Message Delay"; unit="s"; source="alertDelay"; record=mean,vector); 22 | @signal[alertRcvdMsg]; 23 | @statistic[alertRcvdMsg](title="Alert Messages Received"; unit="s"; source="alertRcvdMsg"; record=sum,vector); 24 | @display("i=block/source"); 25 | gates: 26 | output udpOut; 27 | input udpIn; 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/apps/alert/AlertSender.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_ALERTSENDER_H_ 11 | #define _LTE_ALERTSENDER_H_ 12 | 13 | #include 14 | #include 15 | #include "inet/transportlayer/contract/udp/UDPSocket.h" 16 | #include "inet/networklayer/common/L3Address.h" 17 | #include "inet/networklayer/common/L3AddressResolver.h" 18 | #include "apps/alert/AlertPacket_m.h" 19 | 20 | class AlertSender : public cSimpleModule 21 | { 22 | inet::UDPSocket socket; 23 | 24 | //sender 25 | int nextSno_; 26 | int size_; 27 | simtime_t period_; 28 | 29 | simsignal_t alertSentMsg_; 30 | // ---------------------------- 31 | 32 | cMessage *selfSender_; 33 | 34 | int localPort_; 35 | int destPort_; 36 | inet::L3Address destAddress_; 37 | 38 | void sendAlertPacket(); 39 | 40 | public: 41 | ~AlertSender(); 42 | AlertSender(); 43 | 44 | protected: 45 | 46 | virtual int numInitStages() const { return inet::NUM_INIT_STAGES; } 47 | void initialize(int stage); 48 | void handleMessage(cMessage *msg); 49 | }; 50 | 51 | #endif 52 | 53 | -------------------------------------------------------------------------------- /src/apps/alert/AlertSender.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.apps.alert; 11 | 12 | import inet.applications.contract.IUDPApp; 13 | 14 | simple AlertSender like IUDPApp 15 | { 16 | parameters: 17 | int localPort = default(-1); 18 | int destPort = default(3000); 19 | string destAddress; 20 | int packetSize = default(10); 21 | double period @unit("s") = default(0.02s); 22 | double startTime @unit("s") = default(0s); 23 | string interfaceTableModule; 24 | 25 | @signal[alertSentMsg]; 26 | @statistic[alertSentMsg](title="Alert messages sent"; unit=""; source="alertSentMsg"; record=sum,vector); 27 | 28 | @display("i=block/source"); 29 | gates: 30 | output udpOut; 31 | input udpIn; 32 | } 33 | -------------------------------------------------------------------------------- /src/apps/cbr/CbrPacket.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | namespace inet; 11 | 12 | // 13 | // Packet used by the ~VoPSender and ~VoIPReceiver modules. 14 | // 15 | packet CbrPacket 16 | { 17 | unsigned int nframes; 18 | unsigned int IDframe; 19 | simtime_t timestamp; 20 | simtime_t arrivalTime; 21 | unsigned int size; 22 | } 23 | -------------------------------------------------------------------------------- /src/apps/cbr/CbrReceiver.h: -------------------------------------------------------------------------------- 1 | #ifndef _CBRRECEIVER_H_ 2 | #define _CBRRECEIVER_H_ 3 | 4 | #include 5 | #include 6 | 7 | #include "inet/common/INETDefs.h" 8 | #include "inet/transportlayer/contract/udp/UDPSocket.h" 9 | #include "inet/networklayer/common/L3AddressResolver.h" 10 | 11 | #include "CbrPacket_m.h" 12 | 13 | using namespace inet; 14 | 15 | class CbrReceiver : public cSimpleModule 16 | { 17 | UDPSocket socket; 18 | 19 | ~CbrReceiver(); 20 | 21 | int numReceived_; 22 | int totFrames_; 23 | 24 | int recvBytes_; 25 | 26 | 27 | bool mInit_; 28 | 29 | static simsignal_t cbrFrameLossSignal_; 30 | static simsignal_t cbrFrameDelaySignal_; 31 | static simsignal_t cbrJitterSignal_; 32 | static simsignal_t cbrReceivedThroughtput_; 33 | // static simsignal_t cbrReceivedThroughtput_rate_; 34 | 35 | protected: 36 | 37 | virtual int numInitStages() const override { return NUM_INIT_STAGES; } 38 | void initialize(int stage); 39 | void handleMessage(cMessage *msg); 40 | virtual void finish() override; 41 | }; 42 | 43 | #endif 44 | 45 | -------------------------------------------------------------------------------- /src/apps/cbr/CbrReceiver.ned: -------------------------------------------------------------------------------- 1 | 2 | 3 | package lte.apps.cbr; 4 | 5 | import inet.applications.contract.IUDPApp; 6 | 7 | 8 | simple CbrReceiver like IUDPApp 9 | { 10 | parameters: 11 | int localPort = default(3000); 12 | 13 | @signal[cbrFrameDelaySignal](type="simtime_t"); 14 | @signal[cbrJitterSignal](type="simtime_t"); 15 | @signal[cbrFrameLossSignal](type="double"); 16 | @signal[cbrReceivedThroughtputSignal]; 17 | 18 | 19 | @statistic[cbrFrameDelay](title="Cbr Frame Delay"; unit="s"; source="cbrFrameDelaySignal"; record=mean,vector); 20 | @statistic[cbrJitter](title="Cbr Playout Loss"; unit="s"; source="cbrJitterSignal"; record=mean,vector); 21 | @statistic[cbrFrameLoss](title="Cbr Frame Loss"; unit="ratio"; source="cbrFrameLossSignal"; record=mean,vector); 22 | 23 | @statistic[cbrReceivedThroughtput](title="Throughput received at the application level"; unit="Bps"; source="cbrReceivedThroughtputSignal"; record=timeavg,mean,vector,sum); 24 | @display("i=block/source"); 25 | gates: 26 | output udpOut; 27 | input udpIn; 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/apps/cbr/CbrSender.h: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | 4 | #ifndef _CBRSENDER_H_ 5 | #define _CBRSENDER_H_ 6 | 7 | #include 8 | #include 9 | 10 | #include "inet/common/INETDefs.h" 11 | #include "inet/transportlayer/contract/udp/UDPSocket.h" 12 | #include "inet/networklayer/common/L3AddressResolver.h" 13 | 14 | #include "CbrPacket_m.h" 15 | 16 | using namespace inet; 17 | 18 | class CbrSender : public cSimpleModule 19 | { 20 | UDPSocket socket; 21 | //has the sender been initialized? 22 | bool initialized_; 23 | 24 | cMessage* selfSource_; 25 | //sender 26 | int iDtalk_; 27 | int nframes_; 28 | int iDframe_; 29 | int nframesTmp_; 30 | int size_; 31 | simtime_t sampling_time; 32 | simtime_t startTime_; 33 | simtime_t finishTime_; 34 | 35 | bool silences_; 36 | 37 | simsignal_t cbrGeneratedThroughtput_; 38 | // ---------------------------- 39 | 40 | cMessage *selfSender_; 41 | cMessage *initTraffic_; 42 | 43 | simtime_t timestamp_; 44 | int localPort_; 45 | int destPort_; 46 | L3Address destAddress_; 47 | 48 | void initTraffic(); 49 | void sendCbrPacket(); 50 | 51 | public: 52 | ~CbrSender(); 53 | CbrSender(); 54 | 55 | protected: 56 | 57 | virtual int numInitStages() const override { return NUM_INIT_STAGES; } 58 | void initialize(int stage); 59 | void handleMessage(cMessage *msg); 60 | }; 61 | 62 | #endif 63 | 64 | -------------------------------------------------------------------------------- /src/apps/cbr/CbrSender.ned: -------------------------------------------------------------------------------- 1 | 2 | package lte.apps.cbr; 3 | 4 | import inet.applications.contract.IUDPApp; 5 | 6 | 7 | simple CbrSender like IUDPApp 8 | { 9 | parameters: 10 | int localPort = default(-1); 11 | int destPort = default(3000); 12 | string destAddress; 13 | int PacketSize = default(40); 14 | double sampling_time @unit("s") = default(0.02s); 15 | double startTime @unit("s") = default(0s); 16 | double finishTime @unit("s") = default(0s); 17 | 18 | @statistic[cbrGeneratedThroughtput](title="Throughput generated by the application"; unit="Bps"; source="cbrGeneratedThroughtput"; record=timeavg,mean,vector,"last(sumPerDuration)",sum); 19 | 20 | @display("i=block/source"); 21 | gates: 22 | output udpOut; 23 | input udpIn; 24 | } 25 | -------------------------------------------------------------------------------- /src/apps/geoNet/GeoNetworking.msg: -------------------------------------------------------------------------------- 1 | // 2 | // This program is free software: you can redistribute it and/or modify 3 | // it under the terms of the GNU Lesser General Public License as published by 4 | // the Free Software Foundation, either version 3 of the License, or 5 | // (at your option) any later version. 6 | // 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU Lesser General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU Lesser General Public License 13 | // along with this program. If not, see http://www.gnu.org/licenses/. 14 | // 15 | 16 | packet GeoNetworkingPacket 17 | { 18 | unsigned int maximumLatency; 19 | unsigned int priority; 20 | unsigned int sourceAddress; 21 | unsigned int destinationAddress; 22 | unsigned int direction; 23 | } -------------------------------------------------------------------------------- /src/apps/mode4App/mode4BaseApp.ned: -------------------------------------------------------------------------------- 1 | // 2 | // This program is free software: you can redistribute it and/or modify 3 | // it under the terms of the GNU Lesser General Public License as published by 4 | // the Free Software Foundation, either version 3 of the License, or 5 | // (at your option) any later version. 6 | // 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU Lesser General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU Lesser General Public License 13 | // along with this program. If not, see http://www.gnu.org/licenses/. 14 | // 15 | 16 | package lte.apps.mode4App; 17 | 18 | 19 | moduleinterface Mode4BaseApp 20 | { 21 | parameters: 22 | 23 | gates: 24 | input lowerGateIn; // FROM NIC 25 | output lowerGateOut; // TO NIC 26 | } 27 | -------------------------------------------------------------------------------- /src/apps/vod/M1Message.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | cplusplus {{ 11 | #include "inet/networklayer/common/L3Address.h" 12 | }}; 13 | 14 | struct inet::L3Address; 15 | 16 | message M1Message { 17 | inet::L3Address clientAddr; // client address 18 | int clientPort; // client UDP port 19 | long numPkSent; // number of packets sent 20 | } 21 | -------------------------------------------------------------------------------- /src/apps/vod/VoDPacket.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | // 11 | // Packet used by the video-on-demand application (~VoDUDPServer, ~VoDUDPClient) 12 | // 13 | packet VoDPacket { 14 | int frameSeqNum; 15 | int frameLength; 16 | // temporal scalability layer 17 | int tid; 18 | // SNR scalability layer 19 | int qid; 20 | } 21 | -------------------------------------------------------------------------------- /src/apps/vod/VoDUDPClient.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | // 10 | 11 | #ifndef _LTE_VODUDPCLIENT_H_ 12 | #define _LTE_VODUDPCLIENT_H_ 13 | 14 | #include 15 | #include 16 | #include 17 | 18 | #include "apps/vod/VoDPacket_m.h" 19 | #include "apps/vod/VoDUDPStruct.h" 20 | #include "inet/transportlayer/contract/udp/UDPControlInfo_m.h" 21 | #include "inet/transportlayer/contract/udp/UDPSocket.h" 22 | #include "inet/networklayer/common/L3AddressResolver.h" 23 | 24 | using namespace std; 25 | 26 | class VoDUDPClient : public cSimpleModule 27 | { 28 | inet::UDPSocket socket; 29 | fstream outfile; 30 | unsigned int totalRcvdBytes_; 31 | 32 | public: 33 | simsignal_t tptLayer0_; 34 | simsignal_t tptLayer1_; 35 | simsignal_t tptLayer2_; 36 | simsignal_t tptLayer3_; 37 | simsignal_t delayLayer0_; 38 | simsignal_t delayLayer1_; 39 | simsignal_t delayLayer2_; 40 | simsignal_t delayLayer3_; 41 | 42 | protected: 43 | 44 | virtual void initialize(int stage); 45 | virtual int numInitStages() const { return inet::NUM_INIT_STAGES; } 46 | virtual void finish(); 47 | virtual void handleMessage(cMessage *msg); 48 | virtual void receiveStream(VoDPacket *msg); 49 | }; 50 | 51 | #endif 52 | 53 | -------------------------------------------------------------------------------- /src/apps/vod/VoDUDPServer.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.apps.vod; 11 | import inet.applications.contract.IUDPApp; 12 | 13 | 14 | simple VoDUDPServer like IUDPApp 15 | { 16 | parameters: 17 | int localPort; // port to listen on 18 | string vod_trace_file; 19 | int fps = default(25); 20 | string traceType = default("NS2"); 21 | 22 | // clients parameters 23 | string destAddresses; 24 | int destPort; 25 | volatile double clientsStartStreamTime = default(0); 26 | string clientsReqTime = default(""); 27 | double startTime @unit("s") = default(0); 28 | 29 | @display("i=block/app"); 30 | gates: 31 | input udpIn @labels(UDPControlInfo/up); 32 | output udpOut @labels(UDPControlInfo/down); 33 | } 34 | -------------------------------------------------------------------------------- /src/apps/vod/VoDUDPStruct.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_VODUDPSTRUCT_H_ 11 | #define _LTE_VODUDPSTRUCT_H_ 12 | 13 | #include "inet/networklayer/common/L3Address.h" 14 | 15 | /** 16 | * Stores information on a video stream 17 | */ 18 | struct Media1 19 | { 20 | inet::L3Address clientAddr; // client address 21 | int clientPort; // client UDP port 22 | long numPkSent; // number of packets sent 23 | }; 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /src/apps/voip/VoIPSender.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.apps.voip; 11 | 12 | import inet.applications.contract.IUDPApp; 13 | 14 | 15 | simple VoIPSender like IUDPApp 16 | { 17 | parameters: 18 | int localPort = default(-1); 19 | int destPort = default(3000); 20 | string destAddress; 21 | int PacketSize = default(40); 22 | double shape_talk = default(0.824); 23 | double scale_talk = default(1.423); 24 | double shape_sil = default(1.089); 25 | double scale_sil = default(0.899); 26 | bool is_talk = default(true); 27 | double sampling_time @unit("s") = default(0.02s); 28 | double startTime @unit("s") = default(0s); 29 | 30 | bool silences = default(true); 31 | 32 | @signal[voIPGeneratedThroughtput]; 33 | @statistic[voIPGeneratedThroughtput](title="Throughput generated by the application"; unit="Bps"; source="voIPGeneratedThroughtput"; record=timeavg,mean,vector,"last(sumPerDuration)",sum); 34 | 35 | @display("i=block/source"); 36 | gates: 37 | output udpOut; 38 | input udpIn; 39 | } 40 | -------------------------------------------------------------------------------- /src/apps/voip/VoipPacket.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | 12 | // 13 | // Packet used by the ~VoPSender and ~VoIPReceiver modules. 14 | // 15 | packet VoipPacket 16 | { 17 | unsigned int IDtalk; 18 | unsigned int nframes; 19 | unsigned int IDframe; 20 | simtime_t timestamp; 21 | simtime_t arrivalTime; 22 | simtime_t playoutTime; 23 | unsigned int size; 24 | } 25 | -------------------------------------------------------------------------------- /src/common/features.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file, do not edit! 3 | // 4 | // This file defines symbols contributed by the currently active project features, 5 | // and it is regenerated every time a project feature is enabled or disabled. 6 | // See the Project Features dialog in the IDE, and opp_featuretool. 7 | // 8 | -------------------------------------------------------------------------------- /src/common/timer/TMultiTimerMsg.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | cplusplus {{ 11 | #include "common/timer/TTimerMsg_m.h" 12 | }}; 13 | 14 | class TTimerMsg; 15 | 16 | packet TMultiTimerMsg extends TTimerMsg 17 | { 18 | unsigned int event; 19 | } 20 | -------------------------------------------------------------------------------- /src/common/timer/TTimerMsg.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | cplusplus {{ 11 | #include "common/LteCommon.h" 12 | 13 | /** 14 | * Timer type 15 | */ 16 | enum TTimerType 17 | { 18 | TTSIMPLE, TTMULTI 19 | }; 20 | }}; 21 | 22 | enum TTimerType; 23 | 24 | packet TTimerMsg 25 | { 26 | unsigned int timerId; 27 | unsigned short type enum(TTimerType); 28 | } 29 | -------------------------------------------------------------------------------- /src/corenetwork/binder/LteBinder.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | package lte.corenetwork.binder; 12 | 13 | // 14 | // This is the LTE Binder. At the moment it stores a table containing 15 | // for each ip address the corresponding node id. It is used by the sender 16 | // to find out the Id of the destination node 17 | // 18 | simple LteBinder 19 | { 20 | parameters: 21 | 22 | // number of logical bands 23 | int numBands = default(6); 24 | 25 | //QoS Parameters (strings) 26 | string priority = "2 4 3 5 1 6 7 8 9"; 27 | string packetDelayBudget = "0.1 0.15 0.05 0.3 0.1 0.3 0.1 0.3 0.3"; // @unit(s) 28 | string packetErrorLossRate = "1e-2 1e-3 1e-3 1e-6 1e-6 1e-6 1e-3 1e-6 1e-6"; 29 | 30 | @display("i=block/cogwheel"); 31 | 32 | 33 | //# XML scenario configuration support 34 | //# 35 | //# 36 | // xml traffic = default(xmldoc("traffic.xml")); 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/corenetwork/lteip/IP2lte.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | package lte.corenetwork.lteip; 10 | 11 | // 12 | // IP2lte module performs as a bridge between the network layer and the LTE protocol stack 13 | // It has a slightly different behavior in the UE rather than in the eNB 14 | // It basically: 15 | // - Registers itself as an interface for being accessible from upper layers (e.g. IP Layer) 16 | // - In the downstream direction adds control information to IP packets (5-tuple). Moreover in the ENb 17 | // module it adds the destination id to the control information, in order to send packets to the correct UE 18 | // 19 | simple IP2lte 20 | { 21 | parameters: 22 | string nodeType; 23 | string interfaceTableModule; 24 | string routingTableModule; 25 | @display("i=block/layer"); 26 | gates: 27 | // connection to network layer. 28 | // These gate names are recognized by the network layer (same as the ones in the INic interface) 29 | input upperLayerIn; 30 | output upperLayerOut; 31 | 32 | // connection to the lte stack 33 | output toStackLte @labels(IPDatagram); 34 | input fromStackLte; 35 | } 36 | -------------------------------------------------------------------------------- /src/corenetwork/lteip/InternetQueue.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | package lte.corenetwork.lteip; 12 | 13 | // 14 | // This module implements a queue used to transmit packet 15 | // over a finite bandwidth channel. 16 | // 17 | // The module should be attached to the LteIp 18 | // output gate towards the LteIp peer (peerLteIp$o). 19 | // The module sends a packet over the internet 20 | // channel only if the channel is not busy transmitting 21 | // a previous packet. 22 | // If the channel is busy, the packet is stored in a queue. 23 | // The size of the queue is configurable through queueSize 24 | // parameter ( 0 = infinite ). 25 | // 26 | simple InternetQueue { 27 | parameters: 28 | @display("i=block/queue"); 29 | int queueSize = default(100); // 0 means infinite 30 | 31 | gates: 32 | input lteIpIn; // input gate to receive packets from LteIP 33 | output internetChannelOut; // output gate towards datarate channel 34 | } 35 | -------------------------------------------------------------------------------- /src/corenetwork/nodes/ExtCell.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.corenetwork.nodes; 11 | 12 | // 13 | // ExtCell Module 14 | // 15 | simple ExtCell 16 | { 17 | parameters: 18 | @display("i=device/antennatower;bgb=300,300"); 19 | 20 | // coordinates 21 | int position_x @unit("m") = default(0m); 22 | int position_y @unit("m") = default(0m); 23 | 24 | // transmission power 25 | double txPower = default(46); 26 | 27 | // transmission direction 28 | string txDirection = default("OMNI"); 29 | 30 | // transmission angle 31 | double txAngle = default(0); 32 | 33 | // number of logical bands 34 | int numBands = default(1); 35 | 36 | // --- ALLOCATION MANAGEMENT --- // 37 | string bandAllocationType = default("FULL_ALLOC"); 38 | double bandUtilization = default(0.5); 39 | int startingOffset = default(0); 40 | // ----------------------------- // 41 | } 42 | -------------------------------------------------------------------------------- /src/corenetwork/nodes/InternetMux.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "corenetwork/nodes/InternetMux.h" 11 | #include "corenetwork/binder/LteBinder.h" 12 | #include "common/LteControlInfo_m.h" 13 | 14 | Define_Module(InternetMux); 15 | 16 | InternetMux::InternetMux() 17 | { 18 | // TODO Auto-generated constructor stub 19 | } 20 | 21 | InternetMux::~InternetMux() 22 | { 23 | // TODO Auto-generated destructor stub 24 | } 25 | 26 | void 27 | InternetMux::initialize() 28 | { 29 | } 30 | 31 | void 32 | InternetMux::handleMessage(cMessage *msg) 33 | { 34 | cGate* incoming = msg->getArrivalGate(); 35 | if (incoming == gate("inMux")) 36 | { 37 | // message coming from LteIP; 38 | // finding next hop for destination node 39 | FlowControlInfo* controlInfo = check_and_cast(msg->getControlInfo()); 40 | 41 | MacNodeId dest = getBinder()->getMacNodeId(IPv4Address(controlInfo->getDstAddr())); 42 | 43 | MacNodeId nextHop = getBinder()->getNextHop(dest); 44 | 45 | send(msg, routingTable_.at(nextHop)); // send either to nodeB or relay node. 46 | } 47 | else 48 | { 49 | // message coming from any connected nodeB 50 | send(msg, gate("outMux")); // send to LteIP 51 | } 52 | return; 53 | } 54 | -------------------------------------------------------------------------------- /src/corenetwork/nodes/InternetMux.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_INTERNETMUX_H_ 11 | #define _LTE_INTERNETMUX_H_ 12 | 13 | #include 14 | #include "common/LteCommon.h" 15 | 16 | class InternetMux : public cSimpleModule 17 | { 18 | protected: 19 | 20 | //* maps destination id to output gate. 21 | std::map routingTable_; 22 | 23 | cGate* muxGate_[2]; 24 | 25 | virtual void initialize(); 26 | virtual void handleMessage(cMessage *msg); 27 | 28 | public: 29 | 30 | InternetMux(); 31 | 32 | void setRoutingEntry(const MacNodeId id, cGate* gate) 33 | { 34 | routingTable_[id] = gate; 35 | } 36 | 37 | virtual ~InternetMux(); 38 | }; 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/corenetwork/nodes/UnUuMux.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "corenetwork/nodes/UnUuMux.h" 11 | 12 | Define_Module(UnUuMux); 13 | 14 | void UnUuMux::handleUpperMessage(cMessage *msg) 15 | { 16 | send(msg, down_[OUT]); 17 | } 18 | 19 | void UnUuMux::handleLowerMessage(cMessage *msg) 20 | { 21 | UserControlInfo *ci = check_and_cast(msg->getControlInfo()); 22 | MacNodeId src = ci->getSourceId(); 23 | if (getNodeTypeById(src) == ENODEB) 24 | { 25 | // message from DeNB --> send to Un interface 26 | send(msg, upUn_[OUT]); 27 | } 28 | else 29 | { 30 | send(msg, upUu_[OUT]); 31 | } 32 | } 33 | 34 | void UnUuMux::initialize() 35 | { 36 | upUn_[IN] = gate("Un$i"); 37 | upUn_[OUT] = gate("Un$o"); 38 | upUu_[IN] = gate("Uu$o"); 39 | upUu_[OUT] = gate("Uu$o"); 40 | down_[IN] = gate("lowerGate$i"); 41 | down_[OUT] = gate("lowerGate$o"); 42 | } 43 | 44 | void UnUuMux::handleMessage(cMessage *msg) 45 | { 46 | cGate* incoming = msg->getArrivalGate(); 47 | if (incoming == down_[IN]) 48 | { 49 | handleLowerMessage(msg); 50 | } 51 | else 52 | { 53 | handleUpperMessage(msg); 54 | } 55 | return; 56 | } 57 | -------------------------------------------------------------------------------- /src/corenetwork/nodes/UnUuMux.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_UNUUMUX_H_ 11 | #define _LTE_UNUUMUX_H_ 12 | 13 | #include 14 | #include "common/LteControlInfo.h" 15 | 16 | /** 17 | * @class UnUuMux 18 | * @brief Muxer for relay 19 | * 20 | */ 21 | class UnUuMux : public cSimpleModule 22 | { 23 | protected: 24 | virtual void initialize(); 25 | virtual void handleMessage(cMessage *msg); 26 | 27 | private: 28 | void handleUpperMessage(cMessage *msg); 29 | void handleLowerMessage(cMessage *msg); 30 | 31 | /** 32 | * Data structures 33 | */ 34 | 35 | cGate* upUn_[2]; 36 | cGate* upUu_[2]; 37 | cGate* down_[2]; 38 | }; 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/epc/SgwStandard.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | package lte.epc; 10 | 11 | import lte.epc.gtp.GtpUser; 12 | import inet.linklayer.ppp.PPPInterface; 13 | import inet.node.inet.NodeBase; 14 | import inet.transportlayer.udp.UDP; 15 | 16 | // 17 | // Implements an EPC Serving Gateway (S-GW) 18 | // 19 | module SgwStandard extends NodeBase 20 | { 21 | @display("bgb=920,462;i=device/server2"); 22 | 23 | submodules: 24 | udp: UDP { 25 | @display("p=329,206"); 26 | } 27 | gtp_user: GtpUser { 28 | @display("p=727,206"); 29 | filter = false; // the sgw has no traffic flow filter 30 | tftFileName = ""; 31 | } 32 | connections: 33 | udp.ipOut --> networkLayer.transportIn++; 34 | udp.ipIn <-- networkLayer.transportOut++; 35 | 36 | udp.appOut++ --> gtp_user.udpIn; 37 | gtp_user.udpOut --> udp.appIn++; 38 | } 39 | -------------------------------------------------------------------------------- /src/epc/TrafficFlowFilter.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.epc; 11 | 12 | // 13 | // TODO auto-generated module 14 | // 15 | simple TrafficFlowFilter 16 | { 17 | parameters: 18 | @display("i=block/filter"); 19 | 20 | string filterFileName; 21 | string ownerType; // must be one between ENODEB or PGW 22 | gates: 23 | input internetFilterGateIn; 24 | 25 | output gtpUserGateOut; 26 | } 27 | 28 | simple TrafficFlowFilterSimplified 29 | { 30 | parameters: 31 | @display("i=block/filter"); 32 | 33 | string ownerType; // must be one between ENODEB or GW 34 | bool fastForwarding = default(true); 35 | gates: 36 | input internetFilterGateIn; 37 | output gtpUserGateOut; 38 | } -------------------------------------------------------------------------------- /src/epc/gtp/GtpUserMsg.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | packet GtpUserMsg 11 | { 12 | unsigned int teid; 13 | } -------------------------------------------------------------------------------- /src/epc/gtp/TftControlInfo.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "epc/gtp/TftControlInfo.h" 11 | 12 | TftControlInfo::TftControlInfo() 13 | { 14 | } 15 | 16 | TftControlInfo::~TftControlInfo() 17 | { 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/epc/gtp/TftControlInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_TFTCONTROLINFO_H_ 11 | #define _LTE_TFTCONTROLINFO_H_ 12 | 13 | #include 14 | 15 | using namespace omnetpp; 16 | 17 | class TftControlInfo : public cObject 18 | { 19 | unsigned int tft_; 20 | 21 | public: 22 | TftControlInfo(); 23 | virtual ~TftControlInfo(); 24 | 25 | void setTft(unsigned int tft) 26 | { 27 | tft_ = tft; 28 | } 29 | unsigned int getTft() 30 | { 31 | return tft_; 32 | } 33 | }; 34 | 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /src/epc/gtp_common.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "epc/gtp_common.h" 11 | 12 | // TODO use this function as a basis for general xml reading 13 | char * const * loadXmlTable(char const * attributes[], unsigned int numAttributes) 14 | { 15 | return NULL; 16 | } 17 | -------------------------------------------------------------------------------- /src/makefrag: -------------------------------------------------------------------------------- 1 | # 2 | # on Windows we have to link with the winsock2 library as it is no longer added 3 | # to the omnetpp system libraries by default (as of OMNeT++ 5.1) 4 | # 5 | ifeq ($(PLATFORM),win32.x86_64) 6 | LIBS += -lws2_32 7 | endif 8 | -------------------------------------------------------------------------------- /src/package.ned: -------------------------------------------------------------------------------- 1 | // 2 | // @titlepage 3 | //

OMNET++ LTE Model

4 | // 5 | // This documents the implementation of LTE in OMNET++ 6 | // 7 | // Use the links in the left frame to navigate around. 8 | // 9 | 10 | package lte; 11 | 12 | @license(APL); 13 | 14 | -------------------------------------------------------------------------------- /src/run_lte: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | DIR=`dirname $0` 3 | DIR=`(cd $DIR ; pwd)` 4 | INET_DIR=`(cd $DIR/../../inet/src ; pwd)` 5 | COMMAND_LINE_OPTIONS="-l $INET_DIR/INET -n $DIR/../simulations:$DIR:$INET_DIR" 6 | 7 | if [ -x $DIR/lte -o -x $DIR/lte.exe ]; then 8 | $DIR/lte $COMMAND_LINE_OPTIONS $* 9 | else 10 | opp_run -l $DIR/lte $COMMAND_LINE_OPTIONS $* 11 | fi 12 | -------------------------------------------------------------------------------- /src/stack/compManager/LteCompManager.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.stack.compManager; 11 | 12 | import lte.x2.X2User; 13 | 14 | // 15 | // Interface for the Comp Manager 16 | // 17 | moduleinterface LteCompManager extends X2User { 18 | parameters: 19 | @display("i=block/cogwheel"); 20 | } 21 | 22 | simple LteCompManagerBase like LteCompManager 23 | { 24 | parameters: 25 | @display("i=block/cogwheel"); 26 | @class("LteCompManagerBase"); 27 | 28 | string compNodeType = default("COMP_CLIENT"); // one of COMP_CLIENT, COMP_CLIENT_COORDINATOR, COMP_COORDINATOR 29 | int coordinatorId; // id of the coordinator node 30 | string clientList = default(""); // list of ids of client nodes, separated by blank spaces 31 | double coordinationPeriod @unit(s) = default(0.001s); 32 | 33 | @signal[compReservedBlocks]; 34 | @statistic[compReservedBlocks](title="CoMP Reserved Blocks"; unit=""; source="compReservedBlocks"; record=mean, vector); 35 | 36 | gates: 37 | //# connections to the X2 Manager 38 | input x2ManagerIn; 39 | output x2ManagerOut; 40 | } 41 | -------------------------------------------------------------------------------- /src/stack/compManager/X2CompMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_X2COMPMSG_H_ 11 | #define _LTE_X2COMPMSG_H_ 12 | 13 | #include "x2/packet/LteX2Message.h" 14 | #include "common/LteCommon.h" 15 | 16 | /** 17 | * @class X2CompMsg 18 | * 19 | * Class derived from LteX2Message 20 | * It defines the message exchanged between CoMP managers 21 | */ 22 | class X2CompMsg : public LteX2Message 23 | { 24 | 25 | public: 26 | 27 | X2CompMsg(const char* name = NULL, int kind = 0) : 28 | LteX2Message(name, kind) 29 | { 30 | type_ = X2_COMP_MSG; 31 | } 32 | 33 | X2CompMsg(const X2CompMsg& other) : LteX2Message() { operator=(other); } 34 | 35 | X2CompMsg& operator=(const X2CompMsg& other) 36 | { 37 | if (&other == this) 38 | return *this; 39 | LteX2Message::operator=(other); 40 | return *this; 41 | } 42 | 43 | virtual X2CompMsg* dup() const { return new X2CompMsg(*this); } 44 | 45 | virtual ~X2CompMsg() { } 46 | }; 47 | 48 | Register_Class(X2CompMsg); 49 | 50 | #endif 51 | 52 | -------------------------------------------------------------------------------- /src/stack/compManager/X2CompReplyIE.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_X2COMPREPLYIE_H_ 11 | #define _LTE_X2COMPREPLYIE_H_ 12 | 13 | #include "x2/packet/X2InformationElement.h" 14 | 15 | 16 | // 17 | // X2CompReplyIE 18 | // Base class for CoMP reply messages 19 | // 20 | class X2CompReplyIE : public X2InformationElement 21 | { 22 | protected: 23 | 24 | public: 25 | X2CompReplyIE() 26 | { 27 | type_ = COMP_REPLY_IE; 28 | length_ = 0; 29 | } 30 | X2CompReplyIE(const X2CompReplyIE& other) : 31 | X2InformationElement() 32 | { 33 | operator=(other); 34 | } 35 | 36 | X2CompReplyIE& operator=(const X2CompReplyIE& other) 37 | { 38 | if (&other == this) 39 | return *this; 40 | X2InformationElement::operator=(other); 41 | return *this; 42 | } 43 | virtual X2CompReplyIE *dup() const 44 | { 45 | return new X2CompReplyIE(*this); 46 | } 47 | virtual ~X2CompReplyIE() {} 48 | }; 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /src/stack/compManager/X2CompRequestIE.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_X2COMPREQUESTIE_H_ 11 | #define _LTE_X2COMPREQUESTIE_H_ 12 | 13 | #include "x2/packet/X2InformationElement.h" 14 | 15 | // 16 | // X2CompRequestIE 17 | // Base class for CoMP request messages 18 | // 19 | class X2CompRequestIE : public X2InformationElement 20 | { 21 | protected: 22 | 23 | public: 24 | X2CompRequestIE() 25 | { 26 | type_ = COMP_REQUEST_IE; 27 | length_ = 0; 28 | } 29 | X2CompRequestIE(const X2CompRequestIE& other) : 30 | X2InformationElement() 31 | { 32 | operator=(other); 33 | } 34 | 35 | X2CompRequestIE& operator=(const X2CompRequestIE& other) 36 | { 37 | if (&other == this) 38 | return *this; 39 | X2InformationElement::operator=(other); 40 | return *this; 41 | } 42 | virtual X2CompRequestIE *dup() const 43 | { 44 | return new X2CompRequestIE(*this); 45 | } 46 | virtual ~X2CompRequestIE() {} 47 | }; 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /src/stack/compManager/compManagerProportional/LteCompManagerProportional.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.stack.compManager.compManagerProportional; 11 | 12 | import lte.stack.compManager.LteCompManagerBase; 13 | 14 | // 15 | // LteCompManagerProportional 16 | // 17 | // This module implements a simple CoMP Coordinated Scheduling algorithm. 18 | // A CompManager module inside an eNodeB can be either a master or a slave. 19 | // Slave nodes send to the master node the amount of RBs required to satisfy 20 | // their users' load. The master node partitions the bandwidth based on these 21 | // requests and sends back the indication of which RBs are available for 22 | // transmission and which not. 23 | simple LteCompManagerProportional extends LteCompManagerBase 24 | { 25 | parameters: 26 | @display("i=block/cogwheel"); 27 | @class("LteCompManagerProportional"); 28 | } 29 | -------------------------------------------------------------------------------- /src/stack/d2dModeSelection/D2DModeSelection.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.stack.d2dModeSelection; 11 | 12 | // 13 | // Interface for D2D Mode Selection module 14 | // 15 | moduleinterface D2DModeSelection { 16 | parameters: 17 | @display("i=block/cogwheel"); 18 | } 19 | 20 | // 21 | // Base module for the D2D Mode Selection 22 | // 23 | // Extends this module for implementing new mode selection policies. 24 | // It runs periodically the mode selection algorithm and, for flows 25 | // that must be switched, sends a notification to the transmitting 26 | // endpoint of those flows 27 | // 28 | simple D2DModeSelectionBase like D2DModeSelection 29 | { 30 | parameters: 31 | double modeSelectionPeriod @unit(s) = default(1s); 32 | } 33 | 34 | // 35 | // D2DModeSelectionBestCqi module 36 | // 37 | // For each D2D pair, selects the mode having the best CQI 38 | // 39 | simple D2DModeSelectionBestCqi extends D2DModeSelectionBase 40 | { 41 | parameters: 42 | @class("D2DModeSelectionBestCqi"); 43 | } -------------------------------------------------------------------------------- /src/stack/d2dModeSelection/D2DModeSwitchNotification.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | cplusplus {{ 11 | #include "common/LteCommon.h" 12 | }} 13 | 14 | class noncobject LteD2DMode; 15 | 16 | packet D2DModeSwitchNotification 17 | { 18 | unsigned int peerId; 19 | bool txSide; 20 | LteD2DMode oldMode; 21 | LteD2DMode newMode; 22 | bool oldConnection; 23 | } 24 | -------------------------------------------------------------------------------- /src/stack/d2dModeSelection/d2dModeSelectionBestCqi/D2DModeSelectionBestCqi.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef LTE_D2DMODESELECTIONBESTCQI_H_ 11 | #define LTE_D2DMODESELECTIONBESTCQI_H_ 12 | 13 | #include "stack/d2dModeSelection/D2DModeSelectionBase.h" 14 | 15 | // 16 | // D2DModeSelectionBestCqi 17 | // 18 | // For each D2D-capable flow, select the mode having the best CQI 19 | // 20 | class D2DModeSelectionBestCqi : public D2DModeSelectionBase 21 | { 22 | 23 | protected: 24 | 25 | // run the mode selection algorithm 26 | virtual void doModeSelection(); 27 | 28 | public: 29 | D2DModeSelectionBestCqi() {} 30 | virtual ~D2DModeSelectionBestCqi() {} 31 | 32 | virtual void initialize(int stage); 33 | virtual void doModeSwitchAtHandover(MacNodeId nodeId, bool handoverCompleted); 34 | }; 35 | 36 | #endif /* LTE_D2DMODESELECTIONBESTCQI_H_ */ 37 | -------------------------------------------------------------------------------- /src/stack/handoverManager/LteHandoverManager.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.stack.handoverManager; 11 | 12 | import lte.x2.X2User; 13 | 14 | // 15 | // Interface for the Handover Manager 16 | // 17 | moduleinterface ILteHandoverManager extends X2User { 18 | parameters: 19 | @display("i=block/cogwheel"); 20 | } 21 | 22 | simple LteHandoverManager like ILteHandoverManager 23 | { 24 | parameters: 25 | @display("i=block/cogwheel"); 26 | @class("LteHandoverManager"); 27 | 28 | bool losslessHandover = default(false); 29 | 30 | gates: 31 | //# connections to the X2 Manager 32 | input x2ManagerIn; 33 | output x2ManagerOut; 34 | } 35 | -------------------------------------------------------------------------------- /src/stack/handoverManager/X2HandoverCommandIE.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_X2HANDOVERCOMMAND_H_ 11 | #define _LTE_X2HANDOVERCOMMAND_H_ 12 | 13 | #include "x2/packet/X2InformationElement.h" 14 | 15 | // 16 | // X2HandoverCommandIE 17 | // 18 | class X2HandoverCommandIE : public X2InformationElement 19 | { 20 | protected: 21 | 22 | bool startHandover_; 23 | MacNodeId ueId_; // ID of the user performing handover 24 | 25 | public: 26 | X2HandoverCommandIE() 27 | { 28 | type_ = X2_HANDOVER_CMD_IE; 29 | length_ = sizeof(MacNodeId); 30 | startHandover_ = false; 31 | } 32 | X2HandoverCommandIE(const X2HandoverCommandIE& other) : 33 | X2InformationElement() 34 | { 35 | operator=(other); 36 | } 37 | 38 | X2HandoverCommandIE& operator=(const X2HandoverCommandIE& other) 39 | { 40 | if (&other == this) 41 | return *this; 42 | X2InformationElement::operator=(other); 43 | return *this; 44 | } 45 | virtual X2HandoverCommandIE *dup() const 46 | { 47 | return new X2HandoverCommandIE(*this); 48 | } 49 | virtual ~X2HandoverCommandIE() {} 50 | 51 | // getter/setter methods 52 | void setStartHandover() { startHandover_ = true; } 53 | bool isStartHandover() { return startHandover_; } 54 | void setUeId(MacNodeId ueId) { ueId_ = ueId; } 55 | MacNodeId getUeId() { return ueId_; } 56 | }; 57 | 58 | #endif 59 | -------------------------------------------------------------------------------- /src/stack/handoverManager/X2HandoverControlMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_X2HANDOVERCONTROLMSG_H_ 11 | #define _LTE_X2HANDOVERCONTROLMSG_H_ 12 | 13 | #include "x2/packet/LteX2Message.h" 14 | #include "common/LteCommon.h" 15 | 16 | /** 17 | * @class X2HandoverControlMsg 18 | * 19 | * Class derived from LteX2Message 20 | * It defines the message exchanged between Handover managers 21 | */ 22 | class X2HandoverControlMsg : public LteX2Message 23 | { 24 | 25 | public: 26 | 27 | X2HandoverControlMsg(const char* name = NULL, int kind = 0) : 28 | LteX2Message(name, kind) 29 | { 30 | type_ = X2_HANDOVER_CONTROL_MSG; 31 | } 32 | 33 | X2HandoverControlMsg(const X2HandoverControlMsg& other) : LteX2Message() { operator=(other); } 34 | 35 | X2HandoverControlMsg& operator=(const X2HandoverControlMsg& other) 36 | { 37 | if (&other == this) 38 | return *this; 39 | LteX2Message::operator=(other); 40 | return *this; 41 | } 42 | 43 | virtual X2HandoverControlMsg* dup() const { return new X2HandoverControlMsg(*this); } 44 | 45 | virtual ~X2HandoverControlMsg() { } 46 | }; 47 | 48 | //Register_Class(X2HandoverControlMsg); 49 | 50 | #endif 51 | 52 | -------------------------------------------------------------------------------- /src/stack/handoverManager/X2HandoverDataMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_X2HANDOVERDATAMSG_H_ 11 | #define _LTE_X2HANDOVERDATAMSG_H_ 12 | 13 | #include "x2/packet/LteX2Message.h" 14 | #include "common/LteCommon.h" 15 | 16 | /** 17 | * @class X2HandoverDataMsg 18 | * 19 | * Class derived from LteX2Message 20 | * It defines the message that encapsulata datagram to be exchanged between Handover managers 21 | */ 22 | class X2HandoverDataMsg : public LteX2Message 23 | { 24 | 25 | public: 26 | 27 | X2HandoverDataMsg(const char* name = NULL, int kind = 0) : 28 | LteX2Message(name, kind) 29 | { 30 | type_ = X2_HANDOVER_DATA_MSG; 31 | } 32 | 33 | X2HandoverDataMsg(const X2HandoverDataMsg& other) : LteX2Message() { operator=(other); } 34 | 35 | X2HandoverDataMsg& operator=(const X2HandoverDataMsg& other) 36 | { 37 | if (&other == this) 38 | return *this; 39 | LteX2Message::operator=(other); 40 | return *this; 41 | } 42 | 43 | virtual X2HandoverDataMsg* dup() const { return new X2HandoverDataMsg(*this); } 44 | 45 | virtual ~X2HandoverDataMsg() { } 46 | }; 47 | 48 | //Register_Class(X2HandoverDataMsg); 49 | 50 | #endif 51 | 52 | -------------------------------------------------------------------------------- /src/stack/mac/allocator/LteAllocationModuleFrequencyReuse.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEALLOCATIONMODULEFREQUENCYREUSE_H_ 11 | #define _LTE_LTEALLOCATIONMODULEFREQUENCYREUSE_H_ 12 | 13 | #include "common/LteCommon.h" 14 | #include "stack/mac/allocator/LteAllocationModule.h" 15 | 16 | class LteAllocationModuleFrequencyReuse : public LteAllocationModule 17 | { 18 | public: 19 | /// Default constructor. 20 | LteAllocationModuleFrequencyReuse(LteMacBase *mac, const Direction direction); 21 | // Store the Allocation based on passed paremeter 22 | virtual void storeAllocation( std::vector > allocatedRbsPerBand,std::set* untouchableBands = NULL); 23 | // Get the bands already allocated by RAC and RTX ( Debug purpose) 24 | virtual std::set getAllocatorOccupiedBands(); 25 | // Check if the allocation respects the allocation constraints 26 | virtual void checkAllocation(std::set* untouchableBands); 27 | 28 | 29 | }; 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/stack/mac/buffer/harq_d2d/LteHarqBufferTxD2D.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEHARQBUFFERTXD2D_H_ 11 | #define _LTE_LTEHARQBUFFERTXD2D_H_ 12 | 13 | #include "stack/mac/buffer/harq/LteHarqBufferTx.h" 14 | #include "stack/mac/buffer/harq_d2d/LteHarqProcessTxD2D.h" 15 | 16 | /* 17 | * NOTA: e' compito del mac ul usare solo il processo di turno, non c'e' nessun controllo. 18 | * TODO: aggiungere supporto all'uplink: funzioni in cui si specifica il processo da usare 19 | * TODO: commenti 20 | */ 21 | 22 | class LteHarqBufferTxD2D : public LteHarqBufferTx 23 | { 24 | 25 | public: 26 | 27 | /** 28 | * Constructor. 29 | * 30 | * @param numProc number of H-ARQ processes in the buffer. 31 | * @param owner simple module instantiating an H-ARQ TX buffer 32 | * @param nodeId UE nodeId for which this buffer has been created 33 | */ 34 | LteHarqBufferTxD2D(unsigned int numProc, LteMacBase *owner, LteMacBase *dstMac); 35 | 36 | /** 37 | * Manages H-ARQ feedback sent to a certain H-ARQ unit and checks if 38 | * the corresponding process becomes empty. 39 | * 40 | * @param fbpkt received feedback packet 41 | */ 42 | virtual void receiveHarqFeedback(LteHarqFeedback *fbpkt); 43 | 44 | virtual ~LteHarqBufferTxD2D(); 45 | }; 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /src/stack/mac/buffer/harq_d2d/LteHarqProcessRxD2D.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEHARQPROCESSRXD2D_H_ 11 | #define _LTE_LTEHARQPROCESSRXD2D_H_ 12 | 13 | #include "stack/mac/buffer/harq/LteHarqProcessRx.h" 14 | 15 | /** 16 | * H-ARQ RX processes contain pdus received from phy layer for which 17 | * H-ARQ feedback must be sent. 18 | * These pdus must be evaluated using H-ARQ correction functions. 19 | * H-ARQ RX process state machine has three states: 20 | * RXHARQ_PDU_EMPTY 21 | * RXHARQ_PDU_EVALUATING 22 | * RXHARQ_PDU_CORRECT 23 | */ 24 | class LteHarqProcessRxD2D : public LteHarqProcessRx 25 | { 26 | public: 27 | 28 | /** 29 | * Constructor. 30 | * 31 | * @param acid process identifier 32 | * @param 33 | */ 34 | LteHarqProcessRxD2D(unsigned char acid, LteMacBase *owner); 35 | 36 | /** 37 | * Creates a feedback message based on the evaluation result for this pdu. 38 | * 39 | * @return feedback message to be sent. 40 | */ 41 | virtual LteHarqFeedback *createFeedback(Codeword cw); 42 | 43 | virtual ~LteHarqProcessRxD2D(); 44 | }; 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /src/stack/mac/buffer/harq_d2d/LteHarqProcessRxD2DMirror.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | #include "stack/mac/buffer/harq_d2d/LteHarqProcessRxD2DMirror.h" 10 | 11 | LteHarqProcessRxD2DMirror::LteHarqProcessRxD2DMirror(unsigned char acid,unsigned char maxharq){ 12 | pdu_length_.resize(MAX_CODEWORDS,0); 13 | status_.resize(MAX_CODEWORDS, RXHARQ_PDU_EMPTY); 14 | acid_ = acid; 15 | transmissions_ = 0; 16 | maxHarqRtx_ = maxharq; 17 | }; 18 | 19 | std::vector LteHarqProcessRxD2DMirror::getProcessStatus() 20 | { 21 | std::vector ret(MAX_CODEWORDS); 22 | 23 | for (unsigned int j = 0; j < MAX_CODEWORDS; j++) 24 | { 25 | ret[j].first = j; 26 | ret[j].second = getStatus(j); 27 | } 28 | return ret; 29 | } 30 | -------------------------------------------------------------------------------- /src/stack/mac/buffer/harq_d2d/LteHarqProcessRxMode4.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEHARQPROCESSRXMODE4_H_ 11 | #define _LTE_LTEHARQPROCESSRXMODE4_H_ 12 | 13 | #include "stack/mac/buffer/harq/LteHarqProcessRx.h" 14 | 15 | /** 16 | * H-ARQ RX processes contain pdus received from phy layer for which 17 | * H-ARQ feedback must be sent. 18 | * These pdus must be evaluated using H-ARQ correction functions. 19 | * H-ARQ RX process state machine has three states: 20 | * RXHARQ_PDU_EMPTY 21 | * RXHARQ_PDU_EVALUATING 22 | * RXHARQ_PDU_CORRECT 23 | */ 24 | class LteHarqProcessRxMode4 : public LteHarqProcessRx 25 | { 26 | public: 27 | 28 | /** 29 | * Constructor. 30 | * 31 | * @param acid process identifier 32 | * @param 33 | */ 34 | LteHarqProcessRxMode4(unsigned char acid, LteMacBase *owner); 35 | 36 | /** 37 | * Inserts a pdu into the process and evaluates it (corrupted or correct). 38 | * 39 | * @param pdu pdu to be inserted 40 | */ 41 | virtual void insertPdu(Codeword cw, LteMacPdu *pdu); 42 | 43 | virtual ~LteHarqProcessRxMode4(); 44 | }; 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /src/stack/mac/buffer/harq_d2d/LteHarqProcessTxD2D.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEHARQPROCESSTXD2D_H_ 11 | #define _LTE_LTEHARQPROCESSTXD2D_H_ 12 | 13 | #include "stack/mac/buffer/harq/LteHarqProcessTx.h" 14 | #include "stack/mac/buffer/harq_d2d/LteHarqUnitTxD2D.h" 15 | 16 | /** 17 | * Container of H-ARQ units. 18 | * An H-ARQ process contains the units with id (acid + totalNumberOfProcesses * cw[i]), for each i. 19 | * 20 | * An H-ARQ buffer is made of H-ARQ processes. 21 | * An H-ARQ process is atomic for transmission, while H-ARQ units are atomic for 22 | * H-ARQ feedback. 23 | */ 24 | class LteHarqProcessTxD2D : public LteHarqProcessTx 25 | { 26 | public: 27 | 28 | /** 29 | * Crates a new H-ARQ process, which is a container of H-ARQ units. 30 | * 31 | * @param acid H-ARQ process identifier 32 | * @param numUnits number of units contained in this process (MAX_CODEWORDS) 33 | * @param numProcesses number of processes contained in the H-ARQ buffer. 34 | * @return 35 | */ 36 | LteHarqProcessTxD2D(unsigned char acid, unsigned int numUnits, unsigned int numProcesses, LteMacBase *macOwner, LteMacBase *dstMac); 37 | virtual LteMacPdu *extractPdu(Codeword cw); 38 | virtual ~LteHarqProcessTxD2D(); 39 | }; 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /src/stack/mac/conflict_graph_utilities/utilities.cc: -------------------------------------------------------------------------------- 1 | 2 | /** \file utilities.cc 3 | * \brief Definition of utility function 4 | */ 5 | 6 | #include "stack/mac/conflict_graph_utilities/utilities.h" 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | 14 | MacNodeId indexToNodeId(int index) 15 | { 16 | return 1025+index; 17 | } 18 | 19 | int nodeIdToIndex(MacNodeId nodeId) 20 | { 21 | return nodeId-1025; 22 | } 23 | 24 | -------------------------------------------------------------------------------- /src/stack/mac/layer/LteMacRelayEnb.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "stack/mac/layer/LteMacRelayEnb.h" 11 | 12 | Define_Module(LteMacRelayEnb); 13 | 14 | LteMacRelayEnb::LteMacRelayEnb() 15 | { 16 | // TODO Auto-generated constructor stub 17 | nodeType_ = RELAY; 18 | } 19 | LteMacRelayEnb::~LteMacRelayEnb() 20 | { 21 | // TODO Auto-generated destructor stub 22 | } 23 | 24 | LteDeployer* LteMacRelayEnb::getDeployer() 25 | { 26 | MacNodeId masterId = getAncestorPar("masterId"); 27 | OmnetId masterOmnetId = binder_->getOmnetId(masterId); 28 | return check_and_cast(getSimulation()->getModule(masterOmnetId)->getSubmodule("deployer")); 29 | } 30 | 31 | int LteMacRelayEnb::getNumAntennas() 32 | { 33 | return 1; 34 | } 35 | -------------------------------------------------------------------------------- /src/stack/mac/layer/LteMacRelayEnb.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEMACRELAYENB_H_ 11 | #define _LTE_LTEMACRELAYENB_H_ 12 | 13 | #include "stack/mac/layer/LteMacEnb.h" 14 | 15 | class LteAmc; 16 | 17 | class LteMacRelayEnb : public LteMacEnb 18 | { 19 | protected: 20 | virtual LteDeployer* getDeployer(); 21 | virtual int getNumAntennas(); 22 | 23 | public: 24 | LteMacRelayEnb(); 25 | virtual ~LteMacRelayEnb(); 26 | }; 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /src/stack/mac/layer/LteMacRelayUe.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "stack/mac/layer/LteMacRelayUe.h" 11 | 12 | Define_Module(LteMacRelayUe); 13 | 14 | LteMacRelayUe::LteMacRelayUe() 15 | { 16 | // TODO Auto-generated constructor stub 17 | nodeType_ = RELAY; 18 | } 19 | 20 | LteMacRelayUe::~LteMacRelayUe() 21 | { 22 | // TODO Auto-generated destructor stub 23 | } 24 | -------------------------------------------------------------------------------- /src/stack/mac/layer/LteMacRelayUe.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEMACRELAYUE_H_ 11 | #define _LTE_LTEMACRELAYUE_H_ 12 | 13 | #include "stack/mac/layer/LteMacUe.h" 14 | 15 | class LteMacRelayUe : public LteMacUe 16 | { 17 | public: 18 | LteMacRelayUe(); 19 | virtual ~LteMacRelayUe(); 20 | }; 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /src/stack/mac/packet/LteHarqFeedback.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | packet LteHarqFeedback 11 | { 12 | // H-ARQ acid to which this fb is addressed 13 | unsigned char acid; 14 | // H-ARQ cw id to which this fb is addressed 15 | unsigned char cw; 16 | // H-ARQ feedback: true for ACK, false for NACK 17 | bool result; 18 | // Id of the pdu to which the feedback is addressed 19 | long fbMacPduId; 20 | } 21 | -------------------------------------------------------------------------------- /src/stack/mac/packet/LteMacPdu.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | cplusplus {{ 11 | using namespace omnetpp; 12 | }} 13 | 14 | // 15 | // This is the MAC message flowing through LTE stack. 16 | // 17 | packet LteMacPdu 18 | { 19 | @customize(true); 20 | abstract cPacket sdu[]; 21 | unsigned int headerLength = 0; 22 | // need separate macPduId (e.g. for feedback packets) since OMNET PDU id is automatically updated 23 | // whenever a new packet is created, e.g. when this PDU is duplicated 24 | long macPduId = 0; 25 | 26 | //# 27 | //# Follows a list of elements only present in 28 | //# the customized class (see LteMacPdu.h): 29 | //# 30 | //# MacSduList sduList; 31 | //# MacControlElementsList ceList; 32 | //# 33 | } 34 | 35 | // 36 | // Mac Control Element 37 | // 38 | class MacControlElement 39 | { 40 | double timestamp; 41 | } 42 | 43 | // 44 | // Mac Buffer Status Report 45 | // 46 | class MacBsr extends MacControlElement 47 | { 48 | int size; 49 | } 50 | -------------------------------------------------------------------------------- /src/stack/mac/packet/LteMacSduRequest.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | // 11 | // This is the message that asks the RLC layer for a new MAC SDU. 12 | // 13 | packet LteMacSduRequest 14 | { 15 | @customize(true); 16 | unsigned int sduSize; // size of the requested SDU 17 | } -------------------------------------------------------------------------------- /src/stack/mac/packet/LteRac.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | packet LteRac 11 | { 12 | // meaningful only for DL (response) RAC packets : if true RAC request has been admitted. 13 | bool success; 14 | } -------------------------------------------------------------------------------- /src/stack/mac/packet/LteSchedulingGrant.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | // 12 | // TODO generated message class 13 | // 14 | packet LteSchedulingGrant 15 | { 16 | @customize(true); // see the generated C++ header for more info 17 | unsigned int period; 18 | unsigned int expiration; 19 | // blocks granted on all Remotes, all Bands 20 | unsigned int totalGrantedBlocks; 21 | // number of codewords 22 | unsigned int codewords; 23 | // granted bytes per codeword 24 | abstract unsigned int grantedCwBytes[]; 25 | 26 | //# in LteSchedulingGrant.h 27 | //# const UserTxParams* userTxParams; 28 | //# RbMap grantedBlocks; 29 | //# 30 | } -------------------------------------------------------------------------------- /src/stack/mac/scheduler/LcgSchedulerRealistic.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // Copyright (C) 2015 Giovanni Nardini 4 | // 5 | // This file is part of a software released under the license included in file 6 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 7 | // The above file and the present reference are part of the software itself, 8 | // and cannot be removed from it. 9 | // 10 | 11 | #ifndef _LTE_LCGSCHEDULERREALISTIC_H_ 12 | #define _LTE_LCGSCHEDULERREALISTIC_H_ 13 | 14 | #include "stack/mac/scheduler/LcgScheduler.h" 15 | 16 | /** 17 | * @class LcgSchedulerRealistic 18 | */ 19 | class LcgSchedulerRealistic : public LcgScheduler 20 | { 21 | public: 22 | 23 | /** 24 | * Default constructor. 25 | */ 26 | LcgSchedulerRealistic(LteMacUe * mac); 27 | 28 | /** 29 | * Destructor. 30 | */ 31 | virtual ~LcgSchedulerRealistic(); 32 | 33 | /* Executes the LCG scheduling algorithm 34 | * @param availableBytes 35 | * @return # of scheduled sdus per cid 36 | */ 37 | virtual ScheduleList& schedule(unsigned int availableBytes, Direction grantDir = UL); 38 | }; 39 | #endif 40 | 41 | -------------------------------------------------------------------------------- /src/stack/mac/scheduler/LteSchedulerUeUl.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTE_SCHEDULER_UE_UL_H_ 11 | #define _LTE_LTE_SCHEDULER_UE_UL_H_ 12 | 13 | #include "common/LteCommon.h" 14 | 15 | class LteMacUe; 16 | class LcgScheduler; 17 | 18 | /** 19 | * LTE Ue uplink scheduler. 20 | */ 21 | class LteSchedulerUeUl 22 | { 23 | protected: 24 | 25 | // MAC module, queried for parameters 26 | LteMacUe *mac_; 27 | 28 | // Schedule List 29 | LteMacScheduleList scheduleList_; 30 | 31 | // Inner Scheduler - default to Standard LCG 32 | LcgScheduler* lcgScheduler_; 33 | 34 | public: 35 | 36 | /* Performs the standard LCG scheduling algorithm 37 | * @returns reference to scheduling list 38 | */ 39 | 40 | LteMacScheduleList* schedule(); 41 | 42 | /* 43 | * constructor 44 | */ 45 | LteSchedulerUeUl(LteMacUe * mac); 46 | /* 47 | * destructor 48 | */ 49 | ~LteSchedulerUeUl(); 50 | }; 51 | 52 | #endif // _LTE_LTE_SCHEDULER_UE_UL_H_ 53 | -------------------------------------------------------------------------------- /src/stack/mac/scheduling_modules/LteMaxCi.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEMAXCI_H_ 11 | #define _LTE_LTEMAXCI_H_ 12 | 13 | #include "stack/mac/scheduler/LteScheduler.h" 14 | 15 | class LteMaxCi : public virtual LteScheduler 16 | { 17 | protected: 18 | 19 | typedef SortedDesc ScoreDesc; 20 | typedef std::priority_queue ScoreList; 21 | 22 | public: 23 | 24 | virtual void prepareSchedule(); 25 | 26 | virtual void commitSchedule(); 27 | 28 | // ***************************************************************************************** 29 | 30 | void notifyActiveConnection(MacCid cid); 31 | 32 | void removeActiveConnection(MacCid cid); 33 | 34 | void updateSchedulingInfo(); 35 | }; 36 | 37 | #endif // _LTE_LTEMAXCI_H_ 38 | -------------------------------------------------------------------------------- /src/stack/mac/scheduling_modules/LteMaxCiComp.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEMAXCICOMP_H_ 11 | #define _LTE_LTEMAXCICOMP_H_ 12 | 13 | #include "stack/mac/scheduler/LteScheduler.h" 14 | #include "common/LteCommon.h" 15 | 16 | class LteMaxCiComp : public virtual LteScheduler 17 | { 18 | protected: 19 | 20 | typedef SortedDesc ScoreDesc; 21 | typedef std::priority_queue ScoreList; 22 | 23 | // get the bandLimit for the given user 24 | void getBandLimit(std::vector* bandLimit, MacNodeId ueId); 25 | 26 | public: 27 | 28 | virtual void prepareSchedule(); 29 | 30 | virtual void commitSchedule(); 31 | 32 | // ***************************************************************************************** 33 | 34 | void notifyActiveConnection(MacCid cid); 35 | 36 | void removeActiveConnection(MacCid cid); 37 | 38 | void updateSchedulingInfo(); 39 | }; 40 | 41 | #endif // _LTE_LTEMAXCICOMP_H_ 42 | -------------------------------------------------------------------------------- /src/stack/mac/scheduling_modules/LteMaxCiMultiband.h: -------------------------------------------------------------------------------- 1 | /* 2 | * LteMaxCiMultiband.h 3 | * 4 | * Created on: Apr 16, 2014 5 | * Author: antonio 6 | */ 7 | 8 | #ifndef LTEMAXCIMULTIBAND_H_ 9 | #define LTEMAXCIMULTIBAND_H_ 10 | 11 | #include "stack/mac/scheduler/LteScheduler.h" 12 | 13 | typedef SortedDesc ScoreDesc; 14 | typedef std::priority_queue ScoreList; 15 | 16 | class LteMaxCiMultiband : public virtual LteScheduler 17 | { 18 | 19 | 20 | public: 21 | LteMaxCiMultiband(){ } 22 | virtual ~LteMaxCiMultiband() {}; 23 | 24 | virtual void prepareSchedule(); 25 | 26 | virtual void commitSchedule(); 27 | 28 | 29 | 30 | // ***************************************************************************************** 31 | 32 | 33 | void notifyActiveConnection(MacCid cid); 34 | 35 | void removeActiveConnection(MacCid cid); 36 | 37 | void updateSchedulingInfo(); 38 | }; 39 | 40 | 41 | #endif /* LTEMAXCIMULTIBAND_H_ */ 42 | -------------------------------------------------------------------------------- /src/stack/mac/scheduling_modules/LteMaxCiOptMB.h: -------------------------------------------------------------------------------- 1 | /* 2 | * LteMaxCiOptMB.h 3 | * 4 | * Created on: Apr 22, 2014 5 | * Author: antonio 6 | */ 7 | 8 | #ifndef LTEMAXCIOPTMB_H_ 9 | #define LTEMAXCIOPTMB_H_ 10 | 11 | #include "stack/mac/scheduler/LteScheduler.h" 12 | #include 13 | #include "stack/mac/amc/AmcPilot.h" 14 | 15 | using namespace std; 16 | 17 | typedef std::map< MacNodeId,std::vector > SchedulingDecision; 18 | typedef map UsableBandList; 19 | 20 | class LteMaxCiOptMB : public virtual LteScheduler 21 | { 22 | 23 | string problemFile_; 24 | string solutionFile_; 25 | 26 | 27 | vector ueList_; 28 | vector cidList_; 29 | SchedulingDecision schedulingDecision_; 30 | 31 | UsableBandList usableBands_; 32 | 33 | // read the CQIs and queue infos for each user and build an optimization problem 34 | void generateProblem(); 35 | 36 | // call the interactive solver 37 | void launchProblem(); 38 | 39 | // parse the solution 40 | void readSolution(); 41 | 42 | // apply the scheduling decision in the allocator (occupies the Resource blocks) 43 | void applyScheduling(); 44 | public: 45 | LteMaxCiOptMB(); 46 | virtual ~LteMaxCiOptMB(){}; 47 | 48 | virtual void prepareSchedule(); 49 | 50 | virtual void commitSchedule(); 51 | 52 | 53 | 54 | // ***************************************************************************************** 55 | 56 | 57 | void notifyActiveConnection(MacCid cid); 58 | 59 | void removeActiveConnection(MacCid cid); 60 | 61 | void updateSchedulingInfo(); 62 | 63 | }; 64 | 65 | #endif /* LTEMAXCIOPTMB_H_ */ 66 | -------------------------------------------------------------------------------- /src/stack/pdcp_rrc/layer/LtePdcpRrcEnbD2D.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEPDCPRRCENBD2D_H_ 11 | #define _LTE_LTEPDCPRRCENBD2D_H_ 12 | 13 | #include 14 | #include "stack/pdcp_rrc/layer/LtePdcpRrc.h" 15 | 16 | /** 17 | * @class LtePdcp 18 | * @brief PDCP Layer 19 | * 20 | * This is the PDCP/RRC layer of LTE Stack (with D2D support). 21 | * 22 | */ 23 | class LtePdcpRrcEnbD2D : public LtePdcpRrcEnb 24 | { 25 | 26 | protected: 27 | 28 | virtual void initialize(int stage); 29 | virtual void handleMessage(cMessage* msg); 30 | 31 | void handleControlInfo(cPacket* upPkt, FlowControlInfo* lteInfo) 32 | { 33 | delete lteInfo; 34 | } 35 | 36 | void handleControlInfo(cPacket* upPkt, FlowControlInfoNonIp* lteInfo) 37 | { 38 | delete lteInfo; 39 | } 40 | 41 | /** 42 | * handler for data port 43 | * @param pkt incoming packet 44 | */ 45 | virtual void fromDataIn(cPacket *pkt); 46 | 47 | void pdcpHandleD2DModeSwitch(MacNodeId peerId, LteD2DMode newMode); 48 | 49 | public: 50 | 51 | }; 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /src/stack/pdcp_rrc/layer/entity/LtePdcpEntity.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "stack/pdcp_rrc/layer/entity/LtePdcpEntity.h" 11 | 12 | LtePdcpEntity::LtePdcpEntity() 13 | { 14 | sequenceNumber_ = 0; 15 | } 16 | 17 | LtePdcpEntity::~LtePdcpEntity() 18 | { 19 | } 20 | 21 | unsigned int LtePdcpEntity::nextSequenceNumber() 22 | { 23 | return sequenceNumber_++; 24 | } 25 | -------------------------------------------------------------------------------- /src/stack/pdcp_rrc/layer/entity/LtePdcpEntity.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTEPDCPENTITY_H_ 11 | #define _LTE_LTEPDCPENTITY_H_ 12 | 13 | #include "common/LteCommon.h" 14 | #include "common/LteControlInfo.h" 15 | 16 | /** 17 | * @class LtePdcpEntity 18 | * @brief Entity for PDCP Layer 19 | * 20 | * This is the PDCP entity of LTE Stack. 21 | * 22 | * PDCP entity performs the following tasks: 23 | * - mantain numbering of one logical connection 24 | * 25 | */ 26 | class LtePdcpEntity 27 | { 28 | // next sequence number to be assigned 29 | unsigned int sequenceNumber_; 30 | 31 | public: 32 | 33 | LtePdcpEntity(); 34 | virtual ~LtePdcpEntity(); 35 | 36 | // returns the current sno and increment the next sno 37 | unsigned int nextSequenceNumber(); 38 | 39 | // set the value of the next sequence number 40 | void setNextSequenceNumber(unsigned int nextSno) { sequenceNumber_ = nextSno; } 41 | 42 | // reset numbering 43 | void resetSequenceNumber() { sequenceNumber_ = 0; } 44 | }; 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /src/stack/pdcp_rrc/packet/LtePdcpPdu.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | // 12 | // This is the PDCP message flowing through LTE stack. 13 | // 14 | packet LtePdcpPdu 15 | { 16 | } 17 | -------------------------------------------------------------------------------- /src/stack/phy/ChannelModel/LteChannelModel.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "stack/phy/ChannelModel/LteChannelModel.h" 11 | 12 | LteChannelModel::LteChannelModel(unsigned int band) 13 | { 14 | band_ = band; 15 | } 16 | 17 | LteChannelModel::~LteChannelModel() 18 | { 19 | // TODO Auto-generated destructor stub 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/stack/phy/feedback/LteFeedbackComputation.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "stack/phy/feedback/LteFeedbackComputation.h" 11 | 12 | LteFeedbackComputation::LteFeedbackComputation() 13 | { 14 | } 15 | 16 | LteFeedbackComputation::~LteFeedbackComputation() 17 | { 18 | // TODO Auto-generated destructor stub 19 | } 20 | -------------------------------------------------------------------------------- /src/stack/phy/feedback/testFeedback/FeedbackTester.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "stack/phy/feedback/testFeedback/FeedbackTester.h" 11 | 12 | Define_Module(FeedbackTester); 13 | 14 | void FeedbackTester::initialize() 15 | { 16 | interval_ = par("interval"); 17 | generator_ = check_and_cast(getSimulation()->getModuleByPath("lteDlFbGenerator")); 18 | aperiodic_ = new cMessage("aperiodic"); 19 | scheduleAt(simTime(), aperiodic_); 20 | } 21 | 22 | void FeedbackTester::handleMessage(cMessage *msg) 23 | { 24 | if (msg == aperiodic_) 25 | { 26 | scheduleAt(simTime() + interval_, aperiodic_); 27 | generator_->aperiodicRequest(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/stack/phy/feedback/testFeedback/FeedbackTester.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_FEEDBACKTESTER_H_ 11 | #define _LTE_FEEDBACKTESTER_H_ 12 | 13 | #include 14 | #include "stack/phy/feedback/LteDlFeedbackGenerator.h" 15 | 16 | /** 17 | * TODO 18 | */ 19 | class FeedbackTester : public cSimpleModule 20 | { 21 | simtime_t interval_; 22 | cMessage *aperiodic_; 23 | LteDlFeedbackGenerator *generator_; 24 | 25 | protected: 26 | virtual void initialize(); 27 | virtual void handleMessage(cMessage *msg); 28 | }; 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/stack/phy/feedback/testFeedback/FeedbackTester.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | package lte.stack.phy.feedback.testFeedback; 12 | 13 | // 14 | // TODO auto-generated module 15 | // 16 | simple FeedbackTester 17 | { 18 | double interval @unit(s)= default(1ms); 19 | } 20 | -------------------------------------------------------------------------------- /src/stack/phy/feedback/testFeedback/TestFeedback.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | package lte.stack.phy.feedback.testFeedback; 12 | 13 | import lte.stack.phy.feedback.*; 14 | 15 | 16 | network TestFeedback 17 | { 18 | submodules: 19 | lteDlFbGenerator: LteDlFeedbackGenerator { 20 | @display("p=96,71"); 21 | } 22 | feedbackTester: FeedbackTester { 23 | @display("p=237,71"); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/stack/phy/feedback/testFeedback/omnetpp.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | network = lte.stack.phy.feedback.testFeedback.TestFeedback 3 | **.fbPeriod = 6 4 | **.fbDelay = 4 5 | **.initialTxMode = "SINGLE_ANTENNA_PORT0" 6 | **.usePeriodic = true 7 | 8 | #Tester 9 | **.interval = 7ms -------------------------------------------------------------------------------- /src/stack/phy/layer/LtePhyEnbD2D.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_AIRPHYENBD2D_H_ 11 | #define _LTE_AIRPHYENBD2D_H_ 12 | 13 | #include "stack/phy/layer/LtePhyEnb.h" 14 | 15 | class LtePhyEnbD2D : public LtePhyEnb 16 | { 17 | friend class DasFilter; 18 | 19 | bool enableD2DCqiReporting_; 20 | 21 | protected: 22 | 23 | virtual void initialize(int stage); 24 | virtual void requestFeedback(UserControlInfo* lteinfo, LteAirFrame* frame, LteFeedbackPkt* pkt); 25 | virtual void handleAirFrame(cMessage* msg); 26 | 27 | public: 28 | LtePhyEnbD2D(); 29 | virtual ~LtePhyEnbD2D(); 30 | 31 | }; 32 | 33 | #endif /* _LTE_AIRPHYENBD2D_H_ */ 34 | -------------------------------------------------------------------------------- /src/stack/phy/layer/LtePhyRelay.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_AIRPHYRELAY_H_ 11 | #define _LTE_AIRPHYRELAY_H_ 12 | 13 | #include "stack/phy/layer/LtePhyBase.h" 14 | 15 | class LtePhyRelay : public LtePhyBase 16 | { 17 | private: 18 | /** Broadcast messages interval (equal to updatePos interval for mobility) */ 19 | double bdcUpdateInterval_; 20 | 21 | /** Self message to trigger broadcast message sending for handover purposes */ 22 | cMessage *bdcStarter_; 23 | 24 | /** Master MacNodeId */ 25 | MacNodeId masterId_; 26 | 27 | protected: 28 | virtual void initialize(int stage); 29 | 30 | void handleSelfMessage(cMessage *msg); 31 | void handleAirFrame(cMessage* msg); 32 | public: 33 | virtual ~LtePhyRelay(); 34 | }; 35 | 36 | #endif /* _LTE_AIRPHYRELAY_H_ */ 37 | -------------------------------------------------------------------------------- /src/stack/phy/packet/LteAirFrame.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "stack/phy/packet/LteAirFrame.h" 11 | 12 | void LteAirFrame::addRemoteUnitPhyDataVector(RemoteUnitPhyData data) 13 | { 14 | remoteUnitPhyDataVector.push_back(data); 15 | } 16 | RemoteUnitPhyDataVector LteAirFrame::getRemoteUnitPhyDataVector() 17 | { 18 | return remoteUnitPhyDataVector; 19 | } 20 | -------------------------------------------------------------------------------- /src/stack/phy/packet/LteAirFrame.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | cplusplus {{ 12 | #include "stack/phy/packet/AirFrame_m.h" 13 | }} 14 | 15 | packet AirFrame; 16 | 17 | // 18 | // This is LteAirFrame. 19 | // 20 | packet LteAirFrame extends AirFrame { 21 | @customize(true); 22 | //TODO: add txmode for MIMO operations 23 | } 24 | -------------------------------------------------------------------------------- /src/stack/phy/packet/LteFeedbackPkt.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "stack/phy/packet/LteFeedbackPkt.h" 11 | 12 | LteFeedbackDoubleVector LteFeedbackPkt::getLteFeedbackDoubleVectorDl() 13 | { 14 | return lteFeedbackDoubleVectorDl_; 15 | } 16 | LteFeedbackDoubleVector LteFeedbackPkt::getLteFeedbackDoubleVectorUl() 17 | { 18 | return lteFeedbackDoubleVectorUl_; 19 | } 20 | std::map LteFeedbackPkt::getLteFeedbackDoubleVectorD2D() 21 | { 22 | return lteFeedbackMapDoubleVectorD2D_; 23 | } 24 | void LteFeedbackPkt::setLteFeedbackDoubleVectorDl(LteFeedbackDoubleVector lteFeedbackDoubleVector) 25 | { 26 | lteFeedbackDoubleVectorDl_ = lteFeedbackDoubleVector; 27 | } 28 | void LteFeedbackPkt::setLteFeedbackDoubleVectorUl(LteFeedbackDoubleVector lteFeedbackDoubleVector) 29 | { 30 | lteFeedbackDoubleVectorUl_ = lteFeedbackDoubleVector; 31 | } 32 | void LteFeedbackPkt::setLteFeedbackDoubleVectorD2D(MacNodeId peerId, LteFeedbackDoubleVector lteFeedbackDoubleVector) 33 | { 34 | lteFeedbackMapDoubleVectorD2D_[peerId] = lteFeedbackDoubleVector; 35 | } 36 | void LteFeedbackPkt::setSourceNodeId(MacNodeId id) 37 | { 38 | sourceNodeId_ = id; 39 | } 40 | MacNodeId LteFeedbackPkt::getSourceNodeId() 41 | { 42 | return sourceNodeId_; 43 | } 44 | -------------------------------------------------------------------------------- /src/stack/phy/packet/LteFeedbackPkt.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | packet LteFeedbackPkt { 11 | @customize(true); // see the generated C++ header for more info 12 | } 13 | -------------------------------------------------------------------------------- /src/stack/phy/packet/SidelinkControlInformation.msg: -------------------------------------------------------------------------------- 1 | // 2 | // This program is free software: you can redistribute it and/or modify 3 | // it under the terms of the GNU Lesser General Public License as published by 4 | // the Free Software Foundation, either version 3 of the License, or 5 | // (at your option) any later version. 6 | // 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU Lesser General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU Lesser General Public License 13 | // along with this program. If not, see http://www.gnu.org/licenses/. 14 | // 15 | 16 | // 17 | // Sidelink Control Information (SCI) message, used in LTE Mode 4. 18 | // 19 | packet SidelinkControlInformation { 20 | unsigned int priority; 21 | unsigned int resourceReservationInterval; 22 | unsigned int frequencyResourceLocation; 23 | unsigned int timeGapRetrans; 24 | unsigned int mcs; 25 | unsigned int oneShotLocation; 26 | unsigned int retransmissionIndex; 27 | } 28 | -------------------------------------------------------------------------------- /src/stack/phy/packet/SpsCandidateResources.msg: -------------------------------------------------------------------------------- 1 | // 2 | // This program is free software: you can redistribute it and/or modify 3 | // it under the terms of the GNU Lesser General Public License as published by 4 | // the Free Software Foundation, either version 3 of the License, or 5 | // (at your option) any later version. 6 | // 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU Lesser General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU Lesser General Public License 13 | // along with this program. If not, see http://www.gnu.org/licenses/. 14 | // 15 | 16 | // 17 | // TODO generated message class 18 | // 19 | packet SpsCandidateResources { 20 | @customize(true); 21 | } 22 | -------------------------------------------------------------------------------- /src/stack/phy/packet/cbr.msg: -------------------------------------------------------------------------------- 1 | // 2 | // This program is free software: you can redistribute it and/or modify 3 | // it under the terms of the GNU Lesser General Public License as published by 4 | // the Free Software Foundation, either version 3 of the License, or 5 | // (at your option) any later version. 6 | // 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU Lesser General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU Lesser General Public License 13 | // along with this program. If not, see http://www.gnu.org/licenses/. 14 | // 15 | 16 | // 17 | // TODO generated message class 18 | // 19 | packet Cbr { 20 | double cbr; 21 | } 22 | -------------------------------------------------------------------------------- /src/stack/rlc/am/packet/LteRlcAmPdu.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "stack/rlc/am/packet/LteRlcAmPdu.h" 11 | 12 | void 13 | LteRlcAmPdu::setBitmapArraySize(unsigned int size) 14 | { 15 | this->bitmap_.resize(size); 16 | } 17 | 18 | unsigned int 19 | LteRlcAmPdu::getBitmapArraySize() const 20 | { 21 | return this->bitmap_.size(); 22 | } 23 | 24 | bool 25 | LteRlcAmPdu::getBitmap(unsigned int k) const 26 | { 27 | return this->bitmap_.at(k); 28 | } 29 | 30 | void 31 | LteRlcAmPdu::setBitmap(unsigned int k, bool bitmap_) 32 | { 33 | this->bitmap_[k] = bitmap_; 34 | } 35 | 36 | void 37 | LteRlcAmPdu::setBitmapVec(std::vector bitmap_vec) 38 | { 39 | this->bitmap_ = bitmap_vec; 40 | } 41 | 42 | std::vector 43 | LteRlcAmPdu::getBitmapVec() 44 | { 45 | return this->bitmap_; 46 | } 47 | 48 | bool 49 | LteRlcAmPdu::isWhole() 50 | { 51 | return (firstSn == lastSn); 52 | } 53 | 54 | bool 55 | LteRlcAmPdu::isFirst() 56 | { 57 | return (firstSn == snoFragment); 58 | } 59 | 60 | bool 61 | LteRlcAmPdu::isMiddle() 62 | { 63 | return ((!isFirst()) && (!isLast())); 64 | } 65 | 66 | bool 67 | LteRlcAmPdu::isLast() 68 | { 69 | return (lastSn == snoFragment); 70 | } 71 | -------------------------------------------------------------------------------- /src/stack/rlc/am/packet/LteRlcAmPdu.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | cplusplus {{ 12 | #include "stack/rlc/packet/LteRlcPdu.h" 13 | #include "stack/rlc/LteRlcDefs.h" 14 | }} 15 | 16 | packet LteRlcPdu; 17 | enum LteAmType; 18 | 19 | 20 | // Rlc Am Control fields for AM control PDUs 21 | //class LteRlcAmControlInfo 22 | //{ 23 | // @customize(true); 24 | // unsigned int firstSn; 25 | // unsigned int lastSn; 26 | // abstract bool bitmap[]; 27 | //} 28 | 29 | packet LteRlcAmPdu extends LteRlcPdu 30 | { 31 | @customize(true); 32 | unsigned short amType enum(LteAmType); 33 | unsigned short txNumber; 34 | int firstSn; 35 | int lastSn; 36 | abstract bool bitmap[]; 37 | } -------------------------------------------------------------------------------- /src/stack/rlc/am/packet/LteRlcAmSdu.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | cplusplus {{ 11 | #include "stack/rlc/packet/LteRlcSdu.h" 12 | }} 13 | 14 | packet LteRlcSdu; 15 | 16 | packet LteRlcAmSdu extends LteRlcSdu 17 | { 18 | } -------------------------------------------------------------------------------- /src/stack/rlc/packet/LteRlcDataPdu.cc: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #include "stack/rlc/packet/LteRlcDataPdu.h" 11 | 12 | void LteRlcDataPdu::setPduSequenceNumber(unsigned int sno) 13 | { 14 | pduSequenceNumber_ = sno; 15 | } 16 | 17 | unsigned int LteRlcDataPdu::getPduSequenceNumber() 18 | { 19 | return pduSequenceNumber_; 20 | } 21 | 22 | void LteRlcDataPdu::setFramingInfo(FramingInfo fi) 23 | { 24 | fi_ = fi; 25 | } 26 | 27 | FramingInfo LteRlcDataPdu::getFramingInfo() 28 | { 29 | return fi_; 30 | } 31 | -------------------------------------------------------------------------------- /src/stack/rlc/packet/LteRlcDataPdu.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | // 11 | // This is the RLC Data Pdu (base for all RLC modes) 12 | // flowing through LTE stack: basically 13 | // it contains the fields 14 | // that receiver needs in order to 15 | // correctly decode the original packets 16 | // 17 | packet LteRlcDataPdu 18 | { 19 | @customize(true); 20 | } 21 | -------------------------------------------------------------------------------- /src/stack/rlc/packet/LteRlcPdu.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | // 11 | // This is the RLC Pdu 12 | // flowing through LTE stack: basically 13 | // it contains the fields of a fragment 14 | // that receiver needs in order to 15 | // correctly decode the original packet 16 | // 17 | packet LteRlcPdu 18 | { 19 | @customize(true); 20 | unsigned int totalFragments; // Total number of fragments 21 | unsigned int snoFragment; // Sequence number of this fragment 22 | unsigned int snoMainPacket; // ID of packet (sequence number) 23 | } 24 | -------------------------------------------------------------------------------- /src/stack/rlc/packet/LteRlcSdu.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef LTERLCSDU_H_ 11 | #define LTERLCSDU_H_ 12 | 13 | #include "stack/rlc/packet/LteRlcSdu_m.h" 14 | #include "common/LteControlInfo.h" 15 | 16 | class LteRlcSdu : public LteRlcSdu_Base 17 | { 18 | 19 | private: 20 | void copy(const LteRlcSdu& other) 21 | { 22 | this->snoMainPacket = other.snoMainPacket; 23 | 24 | // copy the attached control info, if any 25 | if (other.getControlInfo() != NULL) 26 | { 27 | LteControlInfo* info = check_and_cast(other.getControlInfo()); 28 | LteControlInfo* info_dup = info->dup(); 29 | this->setControlInfo(info_dup); 30 | } 31 | } 32 | 33 | public: 34 | LteRlcSdu(const char *name=NULL, int kind=0) : LteRlcSdu_Base(name,kind) {} 35 | LteRlcSdu(const LteRlcSdu& other) : LteRlcSdu_Base(other) {copy(other);} 36 | LteRlcSdu& operator=(const LteRlcSdu& other) {if (this==&other) return *this; LteRlcSdu_Base::operator=(other); copy(other); return *this;} 37 | virtual LteRlcSdu *dup() const {return new LteRlcSdu(*this);} 38 | }; 39 | 40 | Register_Class(LteRlcSdu); 41 | 42 | #endif /* LTERLCSDU_H_ */ 43 | -------------------------------------------------------------------------------- /src/stack/rlc/packet/LteRlcSdu.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | // 12 | // This is the RLC message flowing through LTE stack. 13 | // The relevant field is the Main Packet Sequence Number 14 | // 15 | packet LteRlcSdu 16 | { 17 | @customize(true); 18 | unsigned int snoMainPacket; // ID of packet (sequence number) 19 | unsigned int lengthMainPacket; 20 | } 21 | -------------------------------------------------------------------------------- /src/stack/rlc/um/LteRlcUmRealisticD2D.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef _LTE_LTERLCUMREALISTICD2D_H_ 11 | #define _LTE_LTERLCUMREALISTICD2D_H_ 12 | 13 | #include "stack/rlc/um/LteRlcUmRealistic.h" 14 | 15 | /** 16 | * @class LteRlcUmRealisticD2D 17 | * @brief UM Module 18 | * 19 | * This is the UM Module of RLC (with support for D2D) 20 | * 21 | */ 22 | class LteRlcUmRealisticD2D : public LteRlcUmRealistic 23 | { 24 | public: 25 | LteRlcUmRealisticD2D() 26 | { 27 | } 28 | virtual ~LteRlcUmRealisticD2D() 29 | { 30 | } 31 | 32 | protected: 33 | 34 | LteNodeType nodeType_; 35 | 36 | virtual int numInitStages() const { return inet::NUM_INIT_STAGES; } 37 | virtual void initialize(int stage); 38 | virtual void handleMessage(cMessage *msg); 39 | 40 | /** 41 | * UM Mode 42 | * 43 | * handler for traffic coming from 44 | * lower layer (DTCH, MTCH, MCCH). 45 | * 46 | * handleLowerMessage() performs the following task: 47 | * 48 | * - Search (or add) the proper RXBuffer, depending 49 | * on the packet CID 50 | * - Calls the RXBuffer, that from now on takes 51 | * care of the packet 52 | * 53 | * @param pkt packet to process 54 | */ 55 | virtual void handleLowerMessage(cPacket *pkt); 56 | }; 57 | 58 | #endif 59 | -------------------------------------------------------------------------------- /src/world/radio/LteChannelControl.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef LTECHANNELCONTROL_H 11 | #define LTECHANNELCONTROL_H 12 | 13 | #include "world/radio/ChannelControl.h" 14 | 15 | /** 16 | * Monitors which radios are "in range" 17 | * 18 | * @ingroup LteChannelControl 19 | * @see ChannelAccess 20 | */ 21 | class LteChannelControl : public ChannelControl 22 | { 23 | protected: 24 | 25 | /** Calculate interference distance*/ 26 | virtual double calcInterfDist(); 27 | 28 | /** Reads init parameters and calculates a maximal interference distance*/ 29 | virtual void initialize(); 30 | 31 | public: 32 | LteChannelControl(); 33 | virtual ~LteChannelControl(); 34 | 35 | /** Called from ChannelAccess, to transmit a frame to all the radios in range, on the frame's channel */ 36 | virtual void sendToChannel(RadioRef srcRadio, AirFrame *airFrame); 37 | }; 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/world/radio/LteChannelControl.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.world.radio; 11 | 12 | import lte.world.radio.ChannelControl; 13 | 14 | simple LteChannelControl extends ChannelControl 15 | { 16 | parameters: 17 | @display("i=misc/sun"); 18 | @labels(node); 19 | @class(LteChannelControl); 20 | } -------------------------------------------------------------------------------- /src/x2/LteX2Manager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef LTE_LTEX2MANAGER_H_ 11 | #define LTE_LTEX2MANAGER_H_ 12 | 13 | #include "common/LteCommon.h" 14 | #include "x2/packet/LteX2Message.h" 15 | #include "x2/packet/X2ControlInfo_m.h" 16 | #include "inet/networklayer/common/L3AddressResolver.h" 17 | #include "x2/X2AppClient.h" 18 | #include "corenetwork/binder/LteBinder.h" 19 | 20 | class LteX2Manager : public cSimpleModule { 21 | 22 | // X2 identifier 23 | X2NodeId nodeId_; 24 | 25 | // "interface table" for data gates 26 | // for each X2 message type, this map stores the index of the gate vector data 27 | // where the destination of that msg is connected to 28 | std::map dataInterfaceTable_; 29 | 30 | // "interface table" for x2 gates 31 | // for each destination ID, this map stores the index of the gate vector x2 32 | // where the X2AP for that destination is connected to 33 | std::map x2InterfaceTable_; 34 | 35 | protected: 36 | 37 | void initialize(int stage); 38 | virtual int numInitStages() const { return inet::NUM_INIT_STAGES; } 39 | void handleMessage(cMessage *msg); 40 | 41 | virtual void fromStack(cPacket* pkt); 42 | virtual void fromX2(cPacket* pkt); 43 | 44 | public: 45 | LteX2Manager(); 46 | virtual ~LteX2Manager(); 47 | }; 48 | 49 | #endif /* LTE_LTEX2MANAGER_H_ */ 50 | -------------------------------------------------------------------------------- /src/x2/LteX2Manager.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.x2; 11 | 12 | // 13 | // LteX2Manager 14 | // 15 | // The task of this module is to allow communications between eNodeBs via the X2 interface. 16 | // It acts as a bridge between the X2 user modules and the X2Apps that are responsible 17 | // for communication with the X2Apps on the peering eNodeBs. 18 | // If you want to implement a new module that needs to exploit the X2 interface, you must 19 | // connect the module to the dataPort gate of the LteX2Manager. 20 | // 21 | simple LteX2Manager 22 | { 23 | parameters: 24 | @display("i=block/cogwheel"); 25 | 26 | gates: 27 | inout dataPort[]; // connection to X2 user modules 28 | inout x2[]; // connections to X2App modules 29 | inout x2Gtp; // connections to GtpUserX2 module 30 | } -------------------------------------------------------------------------------- /src/x2/X2AppClient.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef __X2APPCLIENT_H_ 11 | #define __X2APPCLIENT_H_ 12 | 13 | #include "inet/applications/sctpapp/SCTPClient.h" 14 | #include "common/LteCommon.h" 15 | 16 | class SCTPAssociation; 17 | 18 | /** 19 | * Implements the X2AppClient simple module. See the NED file for more info. 20 | */ 21 | class X2AppClient : public inet::SCTPClient 22 | { 23 | // reference to the gates 24 | cGate* x2ManagerOut_; 25 | 26 | protected: 27 | 28 | void initialize(int stage); 29 | virtual int numInitStages() const { return inet::NUM_INIT_STAGES; } 30 | void socketEstablished(int32_t connId, void *yourPtr, unsigned long int buffer); 31 | void socketDataArrived(int32_t connId, void *yourPtr, cPacket *msg, bool urgent); 32 | }; 33 | 34 | #endif 35 | 36 | -------------------------------------------------------------------------------- /src/x2/X2AppClient.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.x2; 11 | 12 | import inet.applications.sctpapp.SCTPClient; 13 | 14 | // X2AppClient 15 | // 16 | // This module extends the SCTPClient application, by adding 17 | // an output gate to send messages to the X2 Manager 18 | // 19 | simple X2AppClient extends SCTPClient 20 | { 21 | parameters: 22 | @class("X2AppClient"); 23 | connectPort = default(5000); // it will be overwritten by the initialization procedure 24 | startTime = default(0s); 25 | gates: 26 | output x2ManagerOut @labels(X2Msg); 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/x2/X2AppServer.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | #ifndef __X2APPSERVER_H_ 11 | #define __X2APPSERVER_H_ 12 | 13 | #include "inet/applications/sctpapp/SCTPServer.h" 14 | #include "common/LteCommon.h" 15 | #include "corenetwork/binder/LteBinder.h" 16 | 17 | 18 | /** 19 | * Implements the X2AppServer simple module. See the NED file for more info. 20 | */ 21 | class X2AppServer : public SCTPServer 22 | { 23 | // reference to the gate 24 | cGate* x2ManagerIn_; 25 | 26 | protected: 27 | virtual void initialize(int stage); 28 | virtual void handleMessage(cMessage *msg); 29 | void handleTimer(cMessage *msg); 30 | void generateAndSend(cPacket* pkt); 31 | }; 32 | 33 | #endif 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/x2/X2AppServer.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.x2; 11 | 12 | import inet.applications.sctpapp.SCTPServer; 13 | 14 | // X2AppServer 15 | // 16 | // This module extends the SCTPServer application, by adding 17 | // an input gate to receive messages from the X2 Manager module 18 | // 19 | simple X2AppServer extends SCTPServer 20 | { 21 | parameters: 22 | @class("X2AppServer"); 23 | 24 | gates: 25 | input x2ManagerIn @labels(X2Msg); 26 | } 27 | 28 | -------------------------------------------------------------------------------- /src/x2/X2User.ned: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | package lte.x2; 11 | 12 | // 13 | // Interface X2 User modules 14 | // 15 | moduleinterface X2User { 16 | parameters: 17 | @display("i=block/cogwheel"); 18 | gates: 19 | //# connections to the X2 Manager 20 | input x2ManagerIn; 21 | output x2ManagerOut; 22 | } 23 | -------------------------------------------------------------------------------- /src/x2/packet/LteX2Message.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | // 11 | // This is the X2 message flowing through X2 interface. 12 | // It contains a vector of Information Elements (see LteX2Message.h), 13 | // the total length of the message and the type of the message 14 | // 15 | packet LteX2Message 16 | { 17 | @customize(true); 18 | unsigned int sourceId; 19 | unsigned int destinationId; 20 | } 21 | 22 | packet X2InformationElement 23 | { 24 | @customize(true); 25 | } -------------------------------------------------------------------------------- /src/x2/packet/X2ControlInfo.msg: -------------------------------------------------------------------------------- 1 | // 2 | // SimuLTE 3 | // 4 | // This file is part of a software released under the license included in file 5 | // "license.pdf". This license can be also found at http://www.ltesimulator.com/ 6 | // The above file and the present reference are part of the software itself, 7 | // and cannot be removed from it. 8 | // 9 | 10 | 11 | cplusplus {{ 12 | #include "common/LteCommon.h" 13 | typedef std::list DestinationIdList; 14 | }} 15 | 16 | class noncobject DestinationIdList; 17 | 18 | // 19 | // X2 Control Info usage: 20 | // 21 | // The X2 Control Info handles communication between the X2 Manager and its users. 22 | // It is attached to the X2InformationElement and contains: 23 | // - The X2 ID of the source eNodeB 24 | // - The X2 IDs of the destination eNodeBs (as a user can send an InformationElement to several peers) 25 | // - a 'init' flag: if set, the X2 Manager uses the IE and the incoming gate to register the user module 26 | // into its internal data structures. This allows the X2 Manager to know which user is 27 | // connected to which gate, so as to forward messages coming from X2 to the correct 28 | // user module. 29 | 30 | // 31 | // @class LteX2ControlInfo 32 | // 33 | // This class contains: 34 | // - Source X2 ID 35 | // - List of destionation IDs 36 | // - init flag 37 | // 38 | class X2ControlInfo { 39 | uint16 sourceId; // Source X2NodeId 40 | DestinationIdList destIdList; // List of destination X2NodeId 41 | 42 | bool init = false; 43 | } -------------------------------------------------------------------------------- /tests/fingerprint/README: -------------------------------------------------------------------------------- 1 | This folder contains fingerprint-based tests for various models. 2 | 3 | When a fingerprint test passes, that indicates that with very high 4 | probability, the simulation has followed the same trajectory as when 5 | the fingerprint was recorded, i.e. the times and modules of the events 6 | were the same. That is, a passing fingerprint tests means that the 7 | simulation model logic works the same as before. 8 | 9 | However, a passing test does not guarantee that e.g. result recording 10 | has not changed. 11 | 12 | Fingerprints are fragile to NED changes and parameter value changes. 13 | 14 | When a fingerprint test fails, the simulation's correctness has to be 15 | verified by some other means, and the fingerprints in the tests 16 | updated. 17 | -------------------------------------------------------------------------------- /tests/fingerprint/examples.csv: -------------------------------------------------------------------------------- 1 | # workingdir, args, simtimelimit, fingerprint 2 | /simulations/demo/, -f omnetpp.ini -c VideoStreaming -r 0, 5s, 1dbf-54ae 3 | /simulations/demo/, -f omnetpp.ini -c MixedTraffic -r 0, 5s, e9e0-0df5 4 | /simulations/demo/, -f omnetpp.ini -c VoIP -r 0, 5s, fb2b-651e 5 | /simulations/demo/, -f omnetpp.ini -c VoIP_PF -r 0, 5s, 584d-6781 6 | /simulations/demo/, -f omnetpp.ini -c Large-VoIP_PF -r 0, 5s, a0bf-f7e0 7 | /simulations/demo/, -f omnetpp.ini -c Large-VoIP_MaxCI -r 0, 5s, 8ab4-d454 8 | /simulations/demo/, -f omnetpp.ini -c VoIP_DL-UL -r 0, 5s, 146a-dca0 9 | -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.simulte.configeditor 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.pde.ManifestBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.pde.SchemaBuilder 20 | 21 | 22 | 23 | 24 | 25 | org.eclipse.pde.PluginNature 26 | org.eclipse.jdt.core.javanature 27 | 28 | 29 | -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Bundle-ManifestVersion: 2 3 | Bundle-Name: SimuLTE Configuration Editor 4 | Bundle-SymbolicName: com.simulte.configeditor;singleton:=true 5 | Bundle-Version: 1.0.0 6 | Bundle-Activator: com.simulte.configeditor.SimuLTEPlugin 7 | Require-Bundle: org.eclipse.ui, 8 | org.eclipse.core.runtime, 9 | org.eclipse.core.resources, 10 | org.eclipse.jface.text, 11 | org.eclipse.ui.editors, 12 | org.eclipse.ui.ide, 13 | org.eclipse.ui.forms, 14 | org.omnetpp.common, 15 | org.omnetpp.inifile.editor, 16 | org.omnetpp.ned.core, 17 | org.omnetpp.ned.model 18 | Bundle-ActivationPolicy: lazy 19 | Bundle-RequiredExecutionEnvironment: JavaSE-1.6 20 | -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/build.properties: -------------------------------------------------------------------------------- 1 | source.. = src/ 2 | output.. = bin/ 3 | bin.includes = plugin.xml,\ 4 | META-INF/,\ 5 | .,\ 6 | icons/ 7 | -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/icons/full/wizban/newinifile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brianmc95/simulte/4b5d33d28aa1ec3ca108b5ba3a3be1b38e10cf5e/ui/com.simulte.configeditor/icons/full/wizban/newinifile.png -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/icons/simulte.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brianmc95/simulte/4b5d33d28aa1ec3ca108b5ba3a3be1b38e10cf5e/ui/com.simulte.configeditor/icons/simulte.png -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 13 | 14 | 15 | 17 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/src/com/simulte/configeditor/fieldeditors/ComboFieldEditor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2012 Opensim Ltd. All rights reserved. 3 | */ 4 | 5 | package com.simulte.configeditor.fieldeditors; 6 | 7 | import org.eclipse.swt.events.ModifyListener; 8 | import org.eclipse.swt.widgets.Combo; 9 | import org.eclipse.swt.widgets.Control; 10 | import org.omnetpp.common.ui.HoverSupport; 11 | 12 | import com.simulte.configeditor.propertysources.IPropertySource; 13 | 14 | /** 15 | * A field editor that wraps a combo widget. 16 | * 17 | * @author Andras 18 | */ 19 | public class ComboFieldEditor extends AbstractFieldEditor { 20 | protected Combo combo; 21 | 22 | public ComboFieldEditor(Combo combo, IPropertySource propertySource, HoverSupport hoverSupport) { 23 | super(propertySource, hoverSupport); 24 | this.combo = combo; 25 | addFocusListenerTo(combo); 26 | } 27 | 28 | @Override 29 | public void addModifyListener(ModifyListener listener) { 30 | combo.addModifyListener(listener); 31 | } 32 | 33 | @Override 34 | public Control getControlForLayouting() { 35 | return combo; 36 | } 37 | 38 | @Override 39 | public void initialize() { 40 | super.initialize(); 41 | addHoverSupport(combo); 42 | 43 | String value = propertySource.getValueForEditing(); 44 | combo.setText(value); 45 | } 46 | 47 | @Override 48 | public void commit() { 49 | String value = combo.getText(); 50 | propertySource.setValue(value); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/src/com/simulte/configeditor/fieldeditors/TextFieldEditor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2012 Opensim Ltd. All rights reserved. 3 | */ 4 | 5 | package com.simulte.configeditor.fieldeditors; 6 | 7 | import org.eclipse.swt.events.ModifyListener; 8 | import org.eclipse.swt.widgets.Control; 9 | import org.eclipse.swt.widgets.Text; 10 | import org.omnetpp.common.ui.HoverSupport; 11 | 12 | import com.simulte.configeditor.propertysources.IPropertySource; 13 | 14 | /** 15 | * A field editor that wraps a textedit widget. 16 | * 17 | * @author Andras 18 | */ 19 | public class TextFieldEditor extends AbstractFieldEditor { 20 | protected Text text; 21 | 22 | public TextFieldEditor(Text text, IPropertySource propertySource, HoverSupport hoverSupport) { 23 | super(propertySource, hoverSupport); 24 | this.text = text; 25 | addFocusListenerTo(text); 26 | } 27 | 28 | @Override 29 | public void addModifyListener(ModifyListener listener) { 30 | text.addModifyListener(listener); 31 | } 32 | 33 | @Override 34 | public Control getControlForLayouting() { 35 | return text; 36 | } 37 | 38 | @Override 39 | public void initialize() { 40 | super.initialize(); 41 | addHoverSupport(text); 42 | 43 | String value = propertySource.getValueForEditing(); 44 | text.setText(value); 45 | text.selectAll(); 46 | } 47 | 48 | @Override 49 | public void commit() { 50 | String value = text.getText(); 51 | propertySource.setValue(value); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/src/com/simulte/configeditor/propertysources/IPropertySource.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2012 Opensim Ltd. All rights reserved. 3 | */ 4 | 5 | package com.simulte.configeditor.propertysources; 6 | 7 | /** 8 | * Interface for property sources. A property source represents a value edited 9 | * by a field editor (see IFieldEditor), and provides get/set methods for use by 10 | * the field editor. 11 | * 12 | * @author Andras 13 | */ 14 | public interface IPropertySource { 15 | /** 16 | * Needs to be called before the first use, but after NedResources has been 17 | * fully loaded. 18 | */ 19 | public void initialize(); 20 | 21 | /** 22 | * Returns a value that a field editor can display for immediate editing, 23 | * e.g. in a Text widget. This method is responsible for converting between 24 | * the internal (storage) format and the editing format; this conversion may 25 | * include adding/removing quotes, escaping/unescaping, etc. 26 | */ 27 | public String getValueForEditing(); 28 | 29 | /** 30 | * Writes back the edited value into the property source. 31 | */ 32 | public void setValue(String value); 33 | 34 | /** 35 | * Should return HTML text. 36 | */ 37 | public String getHoverText(); 38 | 39 | } -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/src/com/simulte/configeditor/propertysources/IXmlAttributeProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2012 Opensim Ltd. All rights reserved. 3 | */ 4 | 5 | package com.simulte.configeditor.propertysources; 6 | 7 | import org.w3c.dom.Attr; 8 | import org.w3c.dom.Document; 9 | 10 | /** 11 | * Interface for classes that return an attribute in a DOM tree. Used for 12 | * providing input for XmlAttributePropertySource. 13 | * 14 | * @author Andras 15 | */ 16 | public interface IXmlAttributeProvider { 17 | /** 18 | * Returns the attribute. 19 | */ 20 | Attr getEditedAttr(Document xmlDoc); 21 | 22 | /** 23 | * Returns the path of the attribute in the XML, for displaying to the user. 24 | * (Note: this method is needed because Attr.getParentNode() always return null.) 25 | */ 26 | String getAttrPathInfo(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/src/com/simulte/configeditor/propertysources/MultiPropertySource.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2012 Opensim Ltd. All rights reserved. 3 | */ 4 | 5 | package com.simulte.configeditor.propertysources; 6 | 7 | import org.eclipse.core.runtime.Assert; 8 | 9 | /** 10 | * A property source that wraps multiple property sources. Setting the property 11 | * will write the value into all sub-propertysources; getting will return the 12 | * value from the first one. 13 | * 14 | * Can be used if the parameterization of a model is redundant, i.e. the same 15 | * value must be assigned to multiple parameters. 16 | * 17 | * @author Andras 18 | */ 19 | public class MultiPropertySource implements IPropertySource { 20 | private IPropertySource[] propertySources; 21 | 22 | public MultiPropertySource(IPropertySource[] propertySources) { 23 | Assert.isTrue(propertySources != null && propertySources.length > 0); 24 | this.propertySources = propertySources; 25 | } 26 | 27 | public void initialize() { 28 | for (IPropertySource p : propertySources) 29 | p.initialize(); 30 | } 31 | 32 | public String getValueForEditing() { 33 | return propertySources[0].getValueForEditing(); 34 | } 35 | 36 | public void setValue(String value) { 37 | for (IPropertySource p : propertySources) 38 | p.setValue(value); 39 | } 40 | 41 | public String getHoverText() { 42 | return propertySources[0].getHoverText(); 43 | } 44 | 45 | } -------------------------------------------------------------------------------- /ui/com.simulte.configeditor/src/com/simulte/configeditor/wizards/NewLteConfigWizard.java: -------------------------------------------------------------------------------- 1 | package com.simulte.configeditor.wizards; 2 | 3 | import org.eclipse.jface.viewers.IStructuredSelection; 4 | import org.eclipse.jface.wizard.Wizard; 5 | import org.eclipse.ui.INewWizard; 6 | import org.eclipse.ui.IWorkbench; 7 | 8 | /** 9 | * Wizard for SimuLTE config files. The wizard creates one file with the extension "ini" 10 | * and launches the editor. 11 | */ 12 | public class NewLteConfigWizard extends Wizard implements INewWizard { 13 | private NewLteConfigWizardPage1 page1 = null; 14 | private IStructuredSelection selection; 15 | private IWorkbench workbench; 16 | 17 | @Override 18 | public void addPages() { 19 | page1 = new NewLteConfigWizardPage1(workbench, selection); 20 | addPage(page1); 21 | } 22 | 23 | public void init(IWorkbench aWorkbench, IStructuredSelection currentSelection) { 24 | workbench = aWorkbench; 25 | selection = currentSelection; 26 | setWindowTitle("New Ini File"); 27 | } 28 | 29 | @Override 30 | public boolean performFinish() { 31 | return page1.finish(); 32 | } 33 | } 34 | --------------------------------------------------------------------------------