├── .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 |
--------------------------------------------------------------------------------