提交 3ffe0644 编写于 作者: C calin cerchez

old version

上级 849a4e1e
Session Transcript Session Transcript
February 21, 2006 16:45:20.5186 February 21, 2006 16:45:20.5186
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, s tm 0.1000 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, s tm 0.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, s tm 4.1000 $405644f177120000001c4460005000 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, s tm 3.1000 $405644f177120000001c4460005000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, s tm 5.1000 $00000c60fd6c81600a0270022004160013094d52ab4b680001 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, s tm 4.1000 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, s tm 10.1000 $080000 MAC-LTE tm 22.0MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,32,5,7, s tm 22.0 $58000000007adf
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, s tm 20.1000 $080000 MAC-LTE tm 22.0MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,22,4,7, s tm 22.0 $6a00000000916a
MAC-LTE///// tm 22.0 $>> RACH Preamble Request[UE = 5] [RAPID = 24] [Attempt = 1] MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, s tm 39.1000 $080000
MAC-LTE///// tm 22.0 $>> RACH Preamble Request[UE = 4] [RAPID = 20] [Attempt = 1] MAC-LTE tm 42.0MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,322,5,7, s tm 42.0 $5800000000648d
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, s tm 24.1000 $405644f177120000001c4460005000 MAC-LTE tm 42.0MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,222,4,7, s tm 42.0 $6a00000000ecf2
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, s tm 25.1000 $00000c60fd6c81600a0270022004160013094d52ab4b680001 MAC-LTE tm 62.0MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,3222,5,7, s tm 62.0 $5800000000d608
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, s tm 30.1000 $080000 MAC-LTE tm 62.0MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,2222,4,7, s tm 62.0 $6a00000000122f
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, s tm 40.1000 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, s tm 79.1000 $080400
MAC-LTE///// tm 42.0 $>> RACH Preamble Request[UE = 5] [RAPID = 43] [Attempt = 1] MAC-LTE tm 82.0MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,32222,5,7, s tm 82.0 $5800000000565f
MAC-LTE///// tm 42.0 $>> RACH Preamble Request[UE = 4] [RAPID = 17] [Attempt = 1] MAC-LTE tm 82.0MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,22222,4,7, s tm 82.0 $6a00000000164e
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, s tm 44.1000 $405644f177120000001c4460005000 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, s tm 83.1000 $405644f177120000001c4460005000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, s tm 45.1000 $00000c60fd6c81600a0270022004160013094d52ab4b680001 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, s tm 84.1000 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, s tm 50.1000 $080000
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
network = Test1 network = Test1
scheduler-class = cSequentialScheduler scheduler-class = cSequentialScheduler
#sim-time-limit = #sim-time-limit =
sim-time-limit = 60s sim-time-limit = 100s
tkenv-plugin-path = ../../../etc/plugins tkenv-plugin-path = ../../../etc/plugins
#debug-on-errors = true #debug-on-errors = true
......
version 2 version 2
run General-0-20130430-17:24:49-6208 run General-0-20130513-11:59:54-2848
attr configname General attr configname General
attr datetime 20130430-17:24:49 attr datetime 20130513-11:59:54
attr experiment General attr experiment General
attr inifile omnetpp.ini attr inifile omnetpp.ini
attr iterationvars "" attr iterationvars ""
attr iterationvars2 $repetition=0 attr iterationvars2 $repetition=0
attr measurement "" attr measurement ""
attr network Test1 attr network Test1
attr processid 6208 attr processid 2848
attr repetition 0 attr repetition 0
attr replication #0 attr replication #0
attr resultdir results attr resultdir results
......
...@@ -5,12 +5,21 @@ MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 5.0 $405644f177120000001c44600 ...@@ -5,12 +5,21 @@ MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 5.0 $405644f177120000001c44600
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 6.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 6.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 11.0 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 11.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 21.0 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 21.0 $080000
MAC-LTE///// tm 21.1000 $>> RACH Preamble Request[UE = 4] [RAPID = 20] [Attempt = 1]
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 25.0 $405644f177120000001c4460005000 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 25.0 $405644f177120000001c4460005000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 26.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 26.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 31.0 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 31.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 41.0 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 41.0 $080000
MAC-LTE///// tm 41.1000 $>> RACH Preamble Request[UE = 4] [RAPID = 17] [Attempt = 1]
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 45.0 $405644f177120000001c4460005000 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 45.0 $405644f177120000001c4460005000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 46.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 46.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 51.0 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 51.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,22,4,7, r tm 53.0 $6a00000000916a
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 61.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 65.0 $405644f177120000001c4460005000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 66.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 71.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,222,4,7, r tm 73.0 $6a00000000ecf2
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 81.0 $080400
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 85.0 $405644f177120000001c4460005000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 86.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 91.0 $080400
MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,2222,4,7, r tm 93.0 $6a00000000122f
...@@ -5,12 +5,21 @@ MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 5.0 $405644f177120000001c44600 ...@@ -5,12 +5,21 @@ MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 5.0 $405644f177120000001c44600
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 6.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 6.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 11.0 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 11.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 21.0 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 21.0 $080000
MAC-LTE///// tm 21.1000 $>> RACH Preamble Request[UE = 5] [RAPID = 24] [Attempt = 1]
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 25.0 $405644f177120000001c4460005000 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 25.0 $405644f177120000001c4460005000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 26.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 26.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 31.0 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 31.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 41.0 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 41.0 $080000
MAC-LTE///// tm 41.1000 $>> RACH Preamble Request[UE = 5] [RAPID = 43] [Attempt = 1]
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 45.0 $405644f177120000001c4460005000 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 45.0 $405644f177120000001c4460005000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 46.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001 MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 46.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 51.0 $080000 MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 51.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,32,5,7, r tm 52.0 $58000000007adf
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 61.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 65.0 $405644f177120000001c4460005000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 66.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 71.0 $080000
MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,322,5,7, r tm 72.0 $5800000000648d
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 81.0 $080400
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,15, r tm 85.0 $405644f177120000001c4460005000
MAC-LTE.1/mac_r9_lte/1,0,4,1,1,0,65535,3,25, r tm 86.0 $00000c60fd6c81600a0270022004160013094d52ab4b680001
MAC-LTE.1/mac_r9_lte/1,0,0,1,1,0,0,3,3, r tm 91.0 $080400
MAC-LTE.1/mac_r9_lte/1,0,2,1,1,0,3222,5,7, r tm 92.0 $5800000000d608
../out/gcc-debug/src/applications/diameter/DiameterApplication.o ../out/gcc-debug/src/applications/diameter/DiameterBase.o ../out/gcc-debug/src/applications/diameter/DiameterConnection.o ../out/gcc-debug/src/applications/diameter/DiameterMessage.o ../out/gcc-debug/src/applications/diameter/DiameterPeer.o ../out/gcc-debug/src/applications/diameter/DiameterSession.o ../out/gcc-debug/src/applications/diameter/DiameterUtils.o ../out/gcc-debug/src/applications/diameters6a/DiameterS6a.o ../out/gcc-debug/src/applications/ethernet/EtherAppCli.o ../out/gcc-debug/src/applications/ethernet/EtherAppSrv.o ../out/gcc-debug/src/applications/ethernet/EtherTrafGen.o ../out/gcc-debug/src/applications/generic/IPvXTrafGen.o ../out/gcc-debug/src/applications/generic/IPvXTrafSink.o ../out/gcc-debug/src/applications/nas/EMMEntity.o ../out/gcc-debug/src/applications/nas/ESMEntity.o ../out/gcc-debug/src/applications/nas/NAS.o ../out/gcc-debug/src/applications/nas/NASUtils.o ../out/gcc-debug/src/applications/pingapp/PingApp.o ../out/gcc-debug/src/applications/pingapp/PingTestApp.o ../out/gcc-debug/src/applications/s1ap/S1AP.o ../out/gcc-debug/src/applications/s1ap/S1APConnection.o ../out/gcc-debug/src/applications/s1ap/S1APUtils.o ../out/gcc-debug/src/applications/s1ap/message/S1APContainer.o ../out/gcc-debug/src/applications/s1ap/message/S1APIe.o ../out/gcc-debug/src/applications/s1ap/message/S1APPdu.o ../out/gcc-debug/src/applications/sctpapp/SCTPClient.o ../out/gcc-debug/src/applications/sctpapp/SCTPPeer.o ../out/gcc-debug/src/applications/sctpapp/SCTPServer.o ../out/gcc-debug/src/applications/tcpapp/TCPBasicClientApp.o ../out/gcc-debug/src/applications/tcpapp/TCPEchoApp.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericCliAppBase.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericSrvApp.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericSrvThread.o ../out/gcc-debug/src/applications/tcpapp/TCPSessionApp.o ../out/gcc-debug/src/applications/tcpapp/TCPSinkApp.o ../out/gcc-debug/src/applications/tcpapp/TCPSrvHostApp.o ../out/gcc-debug/src/applications/tcpapp/TelnetApp.o ../out/gcc-debug/src/applications/udpapp/UDPBasicApp.o ../out/gcc-debug/src/applications/udpapp/UDPBasicBurst.o ../out/gcc-debug/src/applications/udpapp/UDPEchoApp.o ../out/gcc-debug/src/applications/udpapp/UDPSink.o ../out/gcc-debug/src/applications/udpapp/UDPVideoStreamCli.o ../out/gcc-debug/src/applications/udpapp/UDPVideoStreamSvr.o ../out/gcc-debug/src/base/AbstractQueue.o ../out/gcc-debug/src/base/BasicModule.o ../out/gcc-debug/src/base/ByteArray.o ../out/gcc-debug/src/base/ByteArrayBuffer.o ../out/gcc-debug/src/base/ByteArrayMessage.o ../out/gcc-debug/src/base/Coord.o ../out/gcc-debug/src/base/erfc.o ../out/gcc-debug/src/base/Join.o ../out/gcc-debug/src/base/ModuleAccess.o ../out/gcc-debug/src/base/NedFunctions.o ../out/gcc-debug/src/base/NotificationBoard.o ../out/gcc-debug/src/base/NotifierConsts.o ../out/gcc-debug/src/base/PassiveQueueBase.o ../out/gcc-debug/src/base/ProtocolMap.o ../out/gcc-debug/src/base/QueueBase.o ../out/gcc-debug/src/base/QueueWithQoS.o ../out/gcc-debug/src/base/ReassemblyBuffer.o ../out/gcc-debug/src/base/ResultFilters.o ../out/gcc-debug/src/base/Sink.o ../out/gcc-debug/src/base/Topology.o ../out/gcc-debug/src/base/UnimplementedModule.o ../out/gcc-debug/src/base/WeightedTopology.o ../out/gcc-debug/src/battery/models/BasicBattery.o ../out/gcc-debug/src/battery/models/InetSimpleBattery.o ../out/gcc-debug/src/linklayer/contract/MACAddress.o ../out/gcc-debug/src/linklayer/ethernet/EtherBus.o ../out/gcc-debug/src/linklayer/ethernet/EtherEncap.o ../out/gcc-debug/src/linklayer/ethernet/EtherFrameClassifier.o ../out/gcc-debug/src/linklayer/ethernet/EtherHub.o ../out/gcc-debug/src/linklayer/ethernet/EtherLLC.o ../out/gcc-debug/src/linklayer/ethernet/EtherMAC.o ../out/gcc-debug/src/linklayer/ethernet/EtherMACBase.o ../out/gcc-debug/src/linklayer/ethernet/EtherMACFullDuplex.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitBase.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitNP.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitPP.o ../out/gcc-debug/src/linklayer/ext/cSocketRTScheduler.o ../out/gcc-debug/src/linklayer/ext/ExtInterface.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211eClassifier.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211Mac.o ../out/gcc-debug/src/linklayer/ieee80211/mac/WifiMode.o ../out/gcc-debug/src/linklayer/ieee80211/mac/WirelessMacBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211AgentSTA.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211Etx.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAdhoc.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAdhocWithEtx.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAP.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAPBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAPSimplified.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtSTA.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtSTASimplified.o ../out/gcc-debug/src/linklayer/ieee80211/radio/BerParseFile.o ../out/gcc-debug/src/linklayer/ieee80211/radio/Ieee80211RadioModel.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/dsss-error-rate-model.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/nist-error-rate-model.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/yans-error-rate-model.o ../out/gcc-debug/src/linklayer/lte/LTEConfig.o ../out/gcc-debug/src/linklayer/lte/LTEScheduler.o ../out/gcc-debug/src/linklayer/lte/LTESchedulingInfo.o ../out/gcc-debug/src/linklayer/lte/mac/HARQEntity.o ../out/gcc-debug/src/linklayer/lte/mac/HARQProcess.o ../out/gcc-debug/src/linklayer/lte/mac/MAC.o ../out/gcc-debug/src/linklayer/lte/mac/MACMessage.o ../out/gcc-debug/src/linklayer/lte/mac/MACScheduler.o ../out/gcc-debug/src/linklayer/lte/mac/MACUtils.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCP.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPEntity.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPMessage.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPUtils.o ../out/gcc-debug/src/linklayer/lte/phy/LTEChannelControl.o ../out/gcc-debug/src/linklayer/lte/phy/LTERadio.o ../out/gcc-debug/src/linklayer/lte/phy/LTERadioModel.o ../out/gcc-debug/src/linklayer/lte/rlc/RLC.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCEntity.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCTMEntity.o ../out/gcc-debug/src/linklayer/lte/rrc/RRC.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCEntity.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCUtils.o ../out/gcc-debug/src/linklayer/lte/rrc/message/.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCClassDefinitions.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCInformationElements.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCMessage.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCPDUDefinitions.o ../out/gcc-debug/src/linklayer/ppp/PPP.o ../out/gcc-debug/src/linklayer/queue/AlgorithmicDropperBase.o ../out/gcc-debug/src/linklayer/queue/DropTailQueue.o ../out/gcc-debug/src/linklayer/queue/FIFOQueue.o ../out/gcc-debug/src/linklayer/queue/PriorityScheduler.o ../out/gcc-debug/src/linklayer/queue/REDDropper.o ../out/gcc-debug/src/linklayer/queue/SchedulerBase.o ../out/gcc-debug/src/linklayer/queue/ThresholdDropper.o ../out/gcc-debug/src/linklayer/queue/WRRScheduler.o ../out/gcc-debug/src/linklayer/radio/GenericRadioModel.o ../out/gcc-debug/src/linklayer/radio/Modulation.o ../out/gcc-debug/src/linklayer/radio/Radio.o ../out/gcc-debug/src/linklayer/radio/propagation/FreeSpaceModel.o ../out/gcc-debug/src/linklayer/radio/propagation/LogNormalShadowingModel.o ../out/gcc-debug/src/linklayer/radio/propagation/NakagamiModel.o ../out/gcc-debug/src/linklayer/radio/propagation/RayleighModel.o ../out/gcc-debug/src/linklayer/radio/propagation/RiceModel.o ../out/gcc-debug/src/linklayer/radio/propagation/TwoRayGroundModel.o ../out/gcc-debug/src/mobility/models/ANSimMobility.o ../out/gcc-debug/src/mobility/models/BonnMotionFileCache.o ../out/gcc-debug/src/mobility/models/BonnMotionMobility.o ../out/gcc-debug/src/mobility/models/ChiangMobility.o ../out/gcc-debug/src/mobility/models/CircleMobility.o ../out/gcc-debug/src/mobility/models/ConstSpeedMobility.o ../out/gcc-debug/src/mobility/models/GaussMarkovMobility.o ../out/gcc-debug/src/mobility/models/LinearMobility.o ../out/gcc-debug/src/mobility/models/LinearNodeDistributionMobility.o ../out/gcc-debug/src/mobility/models/LineSegmentsMobilityBase.o ../out/gcc-debug/src/mobility/models/MassMobility.o ../out/gcc-debug/src/mobility/models/MoBANCoordinator.o ../out/gcc-debug/src/mobility/models/MoBANLocal.o ../out/gcc-debug/src/mobility/models/MobilityAccess.o ../out/gcc-debug/src/mobility/models/MobilityBase.o ../out/gcc-debug/src/mobility/models/MovingMobilityBase.o ../out/gcc-debug/src/mobility/models/Ns2MotionMobility.o ../out/gcc-debug/src/mobility/models/Posture.o ../out/gcc-debug/src/mobility/models/PostureTransition.o ../out/gcc-debug/src/mobility/models/RandomWPMobility.o ../out/gcc-debug/src/mobility/models/RectangleMobility.o ../out/gcc-debug/src/mobility/models/StaticGridMobility.o ../out/gcc-debug/src/mobility/models/StationaryMobility.o ../out/gcc-debug/src/mobility/models/TraCIMobility.o ../out/gcc-debug/src/mobility/models/TractorMobility.o ../out/gcc-debug/src/mobility/models/TurtleMobility.o ../out/gcc-debug/src/networklayer/arp/ARP.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/FlatNetworkConfigurator.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/HostAutoConfigurator.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/IPv4NetworkConfigurator.o ../out/gcc-debug/src/networklayer/common/InterfaceEntry.o ../out/gcc-debug/src/networklayer/common/InterfaceTable.o ../out/gcc-debug/src/networklayer/contract/IPv4Address.o ../out/gcc-debug/src/networklayer/contract/IPv4ControlInfo.o ../out/gcc-debug/src/networklayer/contract/IPv6Address.o ../out/gcc-debug/src/networklayer/contract/IPv6ControlInfo.o ../out/gcc-debug/src/networklayer/contract/IPvXAddress.o ../out/gcc-debug/src/networklayer/contract/IPvXAddressResolver.o ../out/gcc-debug/src/networklayer/extras/Dummy.o ../out/gcc-debug/src/networklayer/extras/FailureManager.o ../out/gcc-debug/src/networklayer/gtp/GTP.o ../out/gcc-debug/src/networklayer/gtp/GTPControl.o ../out/gcc-debug/src/networklayer/gtp/GTPMessage.o ../out/gcc-debug/src/networklayer/gtp/GTPUser.o ../out/gcc-debug/src/networklayer/gtp/GTPUtils.o ../out/gcc-debug/src/networklayer/gtp/path/GTPPath.o ../out/gcc-debug/src/networklayer/gtp/path/GTPPathTable.o ../out/gcc-debug/src/networklayer/gtp/tunnel/TunnelEndpoint.o ../out/gcc-debug/src/networklayer/gtp/tunnel/TunnelEndpointTable.o ../out/gcc-debug/src/networklayer/ipv4/ErrorHandling.o ../out/gcc-debug/src/networklayer/ipv4/ICMP.o ../out/gcc-debug/src/networklayer/ipv4/IGMPv2.o ../out/gcc-debug/src/networklayer/ipv4/IPv4.o ../out/gcc-debug/src/networklayer/ipv4/IPv4FragBuf.o ../out/gcc-debug/src/networklayer/ipv4/IPv4InterfaceData.o ../out/gcc-debug/src/networklayer/ipv4/IPv4Route.o ../out/gcc-debug/src/networklayer/ipv4/NetworkInfo.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTable.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTableParser.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTableRecorder.o ../out/gcc-debug/src/transport/contract/SCTPSocket.o ../out/gcc-debug/src/transport/contract/TCPSocket.o ../out/gcc-debug/src/transport/contract/TCPSocketMap.o ../out/gcc-debug/src/transport/contract/UDPSocket.o ../out/gcc-debug/src/transport/sctp/SCTP.o ../out/gcc-debug/src/transport/sctp/SCTPAlg.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationBase.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationEventProc.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationRcvMessage.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationSendAll.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationUtil.o ../out/gcc-debug/src/transport/sctp/SCTPCCFunctions.o ../out/gcc-debug/src/transport/sctp/SCTPMessage.o ../out/gcc-debug/src/transport/sctp/SCTPQueue.o ../out/gcc-debug/src/transport/sctp/SCTPReceiveStream.o ../out/gcc-debug/src/transport/sctp/SCTPSendStream.o ../out/gcc-debug/src/transport/sctp/SCTPSSFunctions.o ../out/gcc-debug/src/transport/tcp/TCP.o ../out/gcc-debug/src/transport/tcp/TCPConnectionBase.o ../out/gcc-debug/src/transport/tcp/TCPConnectionEventProc.o ../out/gcc-debug/src/transport/tcp/TCPConnectionRcvSegment.o ../out/gcc-debug/src/transport/tcp/TCPConnectionSackUtil.o ../out/gcc-debug/src/transport/tcp/TCPConnectionUtil.o ../out/gcc-debug/src/transport/tcp/TCPSACKRexmitQueue.o ../out/gcc-debug/src/transport/tcp/flavours/DumbTCP.o ../out/gcc-debug/src/transport/tcp/flavours/TCPBaseAlg.o ../out/gcc-debug/src/transport/tcp/flavours/TCPNewReno.o ../out/gcc-debug/src/transport/tcp/flavours/TCPNoCongestionControl.o ../out/gcc-debug/src/transport/tcp/flavours/TCPReno.o ../out/gcc-debug/src/transport/tcp/flavours/TCPTahoe.o ../out/gcc-debug/src/transport/tcp/flavours/TCPTahoeRenoFamily.o ../out/gcc-debug/src/transport/tcp/queues/TCPByteStreamRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPByteStreamSendQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPMsgBasedRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPMsgBasedSendQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPVirtualDataRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPVirtualDataSendQueue.o ../out/gcc-debug/src/transport/tcp_common/TCPSegment.o ../out/gcc-debug/src/transport/tcp_common/TCPSpoof.o ../out/gcc-debug/src/transport/udp/UDP.o ../out/gcc-debug/src/util/common.o ../out/gcc-debug/src/util/DCTDump.o ../out/gcc-debug/src/util/Delayer.o ../out/gcc-debug/src/util/int128.o ../out/gcc-debug/src/util/Macho.o ../out/gcc-debug/src/util/MessageChecker.o ../out/gcc-debug/src/util/NetAnimTrace.o ../out/gcc-debug/src/util/opp_utils.o ../out/gcc-debug/src/util/OrdinalBasedDropper.o ../out/gcc-debug/src/util/OrdinalBasedDuplicator.o ../out/gcc-debug/src/util/PacketDump.o ../out/gcc-debug/src/util/PatternMatcher.o ../out/gcc-debug/src/util/PcapDump.o ../out/gcc-debug/src/util/PcapRecorder.o ../out/gcc-debug/src/util/TCPDump.o ../out/gcc-debug/src/util/ThruputMeter.o ../out/gcc-debug/src/util/ThruputMeteringChannel.o ../out/gcc-debug/src/util/uint128.o ../out/gcc-debug/src/util/XMLUtils.o ../out/gcc-debug/src/util/asn/ASNTypes.o ../out/gcc-debug/src/util/asn/PerDecoder.o ../out/gcc-debug/src/util/asn/PerEncoder.o ../out/gcc-debug/src/util/gateway/Gateway.o ../out/gcc-debug/src/util/gateway/GatewayTable.o ../out/gcc-debug/src/util/headerserializers/TCPIPchecksum.o ../out/gcc-debug/src/util/headerserializers/4gsim/DiameterSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/GTPSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/MACSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/NASSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/PDCPSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/RLCSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/RRCSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/ICMPSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/IGMPSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/IPv4Serializer.o ../out/gcc-debug/src/util/headerserializers/sctp/SCTPSerializer.o ../out/gcc-debug/src/util/headerserializers/tcp/TCPSerializer.o ../out/gcc-debug/src/util/headerserializers/udp/UDPSerializer.o ../out/gcc-debug/src/util/subscriber/BearerContext.o ../out/gcc-debug/src/util/subscriber/LTEUtils.o ../out/gcc-debug/src/util/subscriber/PDNConnection.o ../out/gcc-debug/src/util/subscriber/Subscriber.o ../out/gcc-debug/src/util/subscriber/SubscriberTable.o ../out/gcc-debug/src/world/annotations/AnnotationDummy.o ../out/gcc-debug/src/world/annotations/AnnotationManager.o ../out/gcc-debug/src/world/obstacles/Obstacle.o ../out/gcc-debug/src/world/obstacles/ObstacleControl.o ../out/gcc-debug/src/world/powercontrol/PowerControlManager.o ../out/gcc-debug/src/world/radio/ChannelAccess.o ../out/gcc-debug/src/world/radio/ChannelControl.o ../out/gcc-debug/src/world/scenario/ScenarioManager.o ../out/gcc-debug/src/applications/diameter/DiameterMessage_m.o ../out/gcc-debug/src/applications/ethernet/EtherApp_m.o ../out/gcc-debug/src/applications/nas/NASMessage_m.o ../out/gcc-debug/src/applications/pingapp/PingPayload_m.o ../out/gcc-debug/src/applications/s1ap/S1APControlInfo_m.o ../out/gcc-debug/src/applications/tcpapp/GenericAppMsg_m.o ../out/gcc-debug/src/base/ByteArray_m.o ../out/gcc-debug/src/base/ByteArrayMessage_m.o ../out/gcc-debug/src/linklayer/contract/Ieee802Ctrl_m.o ../out/gcc-debug/src/linklayer/contract/PhyControlInfo_m.o ../out/gcc-debug/src/linklayer/ethernet/EtherFrame_m.o ../out/gcc-debug/src/linklayer/ext/ExtFrame_m.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211Frame_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/ETXPacket_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtFrames_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211Primitives_m.o ../out/gcc-debug/src/linklayer/lte/LTEControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/LTESchedulingInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/HARQControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/MACControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/MACMessage_m.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPMessage_m.o ../out/gcc-debug/src/linklayer/lte/phy/LTEFrame_m.o ../out/gcc-debug/src/linklayer/lte/phy/LTEPhyControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCMessage_m.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCMessage_m.o ../out/gcc-debug/src/linklayer/ppp/PPPFrame_m.o ../out/gcc-debug/src/linklayer/radio/AirFrame_m.o ../out/gcc-debug/src/linklayer/radio/Radio80211aControlInfo_m.o ../out/gcc-debug/src/networklayer/arp/ARPPacket_m.o ../out/gcc-debug/src/networklayer/contract/IPProtocolId_m.o ../out/gcc-debug/src/networklayer/contract/IPv4ControlInfo_m.o ../out/gcc-debug/src/networklayer/contract/IPv6ControlInfo_m.o ../out/gcc-debug/src/networklayer/gtp/GTPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/ICMPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/IGMPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/IPv4Datagram_m.o ../out/gcc-debug/src/transport/contract/SCTPCommand_m.o ../out/gcc-debug/src/transport/contract/TCPCommand_m.o ../out/gcc-debug/src/transport/contract/UDPControlInfo_m.o ../out/gcc-debug/src/transport/sctp/SCTPMessage_m.o ../out/gcc-debug/src/transport/tcp_common/TCPSegment_m.o ../out/gcc-debug/src/transport/udp/UDPPacket_m.o ../out/gcc-debug/src/world/powercontrol/PowerControlMessages_m.o
../out/gcc-debug/src/applications/diameter/DiameterApplication.o ../out/gcc-debug/src/applications/diameter/DiameterBase.o ../out/gcc-debug/src/applications/diameter/DiameterConnection.o ../out/gcc-debug/src/applications/diameter/DiameterMessage.o ../out/gcc-debug/src/applications/diameter/DiameterPeer.o ../out/gcc-debug/src/applications/diameter/DiameterSession.o ../out/gcc-debug/src/applications/diameter/DiameterUtils.o ../out/gcc-debug/src/applications/diameters6a/DiameterS6a.o ../out/gcc-debug/src/applications/ethernet/EtherAppCli.o ../out/gcc-debug/src/applications/ethernet/EtherAppSrv.o ../out/gcc-debug/src/applications/ethernet/EtherTrafGen.o ../out/gcc-debug/src/applications/generic/IPvXTrafGen.o ../out/gcc-debug/src/applications/generic/IPvXTrafSink.o ../out/gcc-debug/src/applications/nas/EMMEntity.o ../out/gcc-debug/src/applications/nas/ESMEntity.o ../out/gcc-debug/src/applications/nas/NAS.o ../out/gcc-debug/src/applications/nas/NASUtils.o ../out/gcc-debug/src/applications/pingapp/PingApp.o ../out/gcc-debug/src/applications/pingapp/PingTestApp.o ../out/gcc-debug/src/applications/s1ap/S1AP.o ../out/gcc-debug/src/applications/s1ap/S1APConnection.o ../out/gcc-debug/src/applications/s1ap/S1APUtils.o ../out/gcc-debug/src/applications/s1ap/message/S1APContainer.o ../out/gcc-debug/src/applications/s1ap/message/S1APIe.o ../out/gcc-debug/src/applications/s1ap/message/S1APPdu.o ../out/gcc-debug/src/applications/sctpapp/SCTPClient.o ../out/gcc-debug/src/applications/sctpapp/SCTPPeer.o ../out/gcc-debug/src/applications/sctpapp/SCTPServer.o ../out/gcc-debug/src/applications/tcpapp/TCPBasicClientApp.o ../out/gcc-debug/src/applications/tcpapp/TCPEchoApp.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericCliAppBase.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericSrvApp.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericSrvThread.o ../out/gcc-debug/src/applications/tcpapp/TCPSessionApp.o ../out/gcc-debug/src/applications/tcpapp/TCPSinkApp.o ../out/gcc-debug/src/applications/tcpapp/TCPSrvHostApp.o ../out/gcc-debug/src/applications/tcpapp/TelnetApp.o ../out/gcc-debug/src/applications/udpapp/UDPBasicApp.o ../out/gcc-debug/src/applications/udpapp/UDPBasicBurst.o ../out/gcc-debug/src/applications/udpapp/UDPEchoApp.o ../out/gcc-debug/src/applications/udpapp/UDPSink.o ../out/gcc-debug/src/applications/udpapp/UDPVideoStreamCli.o ../out/gcc-debug/src/applications/udpapp/UDPVideoStreamSvr.o ../out/gcc-debug/src/base/AbstractQueue.o ../out/gcc-debug/src/base/BasicModule.o ../out/gcc-debug/src/base/ByteArray.o ../out/gcc-debug/src/base/ByteArrayBuffer.o ../out/gcc-debug/src/base/ByteArrayMessage.o ../out/gcc-debug/src/base/Coord.o ../out/gcc-debug/src/base/erfc.o ../out/gcc-debug/src/base/Join.o ../out/gcc-debug/src/base/ModuleAccess.o ../out/gcc-debug/src/base/NedFunctions.o ../out/gcc-debug/src/base/NotificationBoard.o ../out/gcc-debug/src/base/NotifierConsts.o ../out/gcc-debug/src/base/PassiveQueueBase.o ../out/gcc-debug/src/base/ProtocolMap.o ../out/gcc-debug/src/base/QueueBase.o ../out/gcc-debug/src/base/QueueWithQoS.o ../out/gcc-debug/src/base/ReassemblyBuffer.o ../out/gcc-debug/src/base/ResultFilters.o ../out/gcc-debug/src/base/Sink.o ../out/gcc-debug/src/base/Topology.o ../out/gcc-debug/src/base/UnimplementedModule.o ../out/gcc-debug/src/base/WeightedTopology.o ../out/gcc-debug/src/battery/models/BasicBattery.o ../out/gcc-debug/src/battery/models/InetSimpleBattery.o ../out/gcc-debug/src/linklayer/contract/MACAddress.o ../out/gcc-debug/src/linklayer/ethernet/EtherBus.o ../out/gcc-debug/src/linklayer/ethernet/EtherEncap.o ../out/gcc-debug/src/linklayer/ethernet/EtherFrameClassifier.o ../out/gcc-debug/src/linklayer/ethernet/EtherHub.o ../out/gcc-debug/src/linklayer/ethernet/EtherLLC.o ../out/gcc-debug/src/linklayer/ethernet/EtherMAC.o ../out/gcc-debug/src/linklayer/ethernet/EtherMACBase.o ../out/gcc-debug/src/linklayer/ethernet/EtherMACFullDuplex.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitBase.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitNP.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitPP.o ../out/gcc-debug/src/linklayer/ext/cSocketRTScheduler.o ../out/gcc-debug/src/linklayer/ext/ExtInterface.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211eClassifier.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211Mac.o ../out/gcc-debug/src/linklayer/ieee80211/mac/WifiMode.o ../out/gcc-debug/src/linklayer/ieee80211/mac/WirelessMacBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211AgentSTA.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211Etx.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAdhoc.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAdhocWithEtx.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAP.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAPBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAPSimplified.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtSTA.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtSTASimplified.o ../out/gcc-debug/src/linklayer/ieee80211/radio/BerParseFile.o ../out/gcc-debug/src/linklayer/ieee80211/radio/Ieee80211RadioModel.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/dsss-error-rate-model.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/nist-error-rate-model.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/yans-error-rate-model.o ../out/gcc-debug/src/linklayer/lte/LTEConfig.o ../out/gcc-debug/src/linklayer/lte/LTEScheduler.o ../out/gcc-debug/src/linklayer/lte/LTESchedulingInfo.o ../out/gcc-debug/src/linklayer/lte/mac/HARQEntity.o ../out/gcc-debug/src/linklayer/lte/mac/HARQProcess.o ../out/gcc-debug/src/linklayer/lte/mac/MAC.o ../out/gcc-debug/src/linklayer/lte/mac/MACMessage.o ../out/gcc-debug/src/linklayer/lte/mac/MACScheduler.o ../out/gcc-debug/src/linklayer/lte/mac/MACUtils.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCP.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPEntity.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPMessage.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPUtils.o ../out/gcc-debug/src/linklayer/lte/phy/LTEChannelControl.o ../out/gcc-debug/src/linklayer/lte/phy/LTERadio.o ../out/gcc-debug/src/linklayer/lte/phy/LTERadioModel.o ../out/gcc-debug/src/linklayer/lte/rlc/RLC.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCEntity.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCTMEntity.o ../out/gcc-debug/src/linklayer/lte/rrc/RRC.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCEntity.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCUtils.o ../out/gcc-debug/src/linklayer/lte/rrc/message/.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCClassDefinitions.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCInformationElements.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCMessage.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCPDUDefinitions.o ../out/gcc-debug/src/linklayer/ppp/PPP.o ../out/gcc-debug/src/linklayer/queue/AlgorithmicDropperBase.o ../out/gcc-debug/src/linklayer/queue/DropTailQueue.o ../out/gcc-debug/src/linklayer/queue/FIFOQueue.o ../out/gcc-debug/src/linklayer/queue/PriorityScheduler.o ../out/gcc-debug/src/linklayer/queue/REDDropper.o ../out/gcc-debug/src/linklayer/queue/SchedulerBase.o ../out/gcc-debug/src/linklayer/queue/ThresholdDropper.o ../out/gcc-debug/src/linklayer/queue/WRRScheduler.o ../out/gcc-debug/src/linklayer/radio/GenericRadioModel.o ../out/gcc-debug/src/linklayer/radio/Modulation.o ../out/gcc-debug/src/linklayer/radio/Radio.o ../out/gcc-debug/src/linklayer/radio/propagation/FreeSpaceModel.o ../out/gcc-debug/src/linklayer/radio/propagation/LogNormalShadowingModel.o ../out/gcc-debug/src/linklayer/radio/propagation/NakagamiModel.o ../out/gcc-debug/src/linklayer/radio/propagation/RayleighModel.o ../out/gcc-debug/src/linklayer/radio/propagation/RiceModel.o ../out/gcc-debug/src/linklayer/radio/propagation/TwoRayGroundModel.o ../out/gcc-debug/src/mobility/models/ANSimMobility.o ../out/gcc-debug/src/mobility/models/BonnMotionFileCache.o ../out/gcc-debug/src/mobility/models/BonnMotionMobility.o ../out/gcc-debug/src/mobility/models/ChiangMobility.o ../out/gcc-debug/src/mobility/models/CircleMobility.o ../out/gcc-debug/src/mobility/models/ConstSpeedMobility.o ../out/gcc-debug/src/mobility/models/GaussMarkovMobility.o ../out/gcc-debug/src/mobility/models/LinearMobility.o ../out/gcc-debug/src/mobility/models/LinearNodeDistributionMobility.o ../out/gcc-debug/src/mobility/models/LineSegmentsMobilityBase.o ../out/gcc-debug/src/mobility/models/MassMobility.o ../out/gcc-debug/src/mobility/models/MoBANCoordinator.o ../out/gcc-debug/src/mobility/models/MoBANLocal.o ../out/gcc-debug/src/mobility/models/MobilityAccess.o ../out/gcc-debug/src/mobility/models/MobilityBase.o ../out/gcc-debug/src/mobility/models/MovingMobilityBase.o ../out/gcc-debug/src/mobility/models/Ns2MotionMobility.o ../out/gcc-debug/src/mobility/models/Posture.o ../out/gcc-debug/src/mobility/models/PostureTransition.o ../out/gcc-debug/src/mobility/models/RandomWPMobility.o ../out/gcc-debug/src/mobility/models/RectangleMobility.o ../out/gcc-debug/src/mobility/models/StaticGridMobility.o ../out/gcc-debug/src/mobility/models/StationaryMobility.o ../out/gcc-debug/src/mobility/models/TraCIMobility.o ../out/gcc-debug/src/mobility/models/TractorMobility.o ../out/gcc-debug/src/mobility/models/TurtleMobility.o ../out/gcc-debug/src/networklayer/arp/ARP.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/FlatNetworkConfigurator.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/HostAutoConfigurator.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/IPv4NetworkConfigurator.o ../out/gcc-debug/src/networklayer/common/InterfaceEntry.o ../out/gcc-debug/src/networklayer/common/InterfaceTable.o ../out/gcc-debug/src/networklayer/contract/IPv4Address.o ../out/gcc-debug/src/networklayer/contract/IPv4ControlInfo.o ../out/gcc-debug/src/networklayer/contract/IPv6Address.o ../out/gcc-debug/src/networklayer/contract/IPv6ControlInfo.o ../out/gcc-debug/src/networklayer/contract/IPvXAddress.o ../out/gcc-debug/src/networklayer/contract/IPvXAddressResolver.o ../out/gcc-debug/src/networklayer/extras/Dummy.o ../out/gcc-debug/src/networklayer/extras/FailureManager.o ../out/gcc-debug/src/networklayer/gtp/GTP.o ../out/gcc-debug/src/networklayer/gtp/GTPControl.o ../out/gcc-debug/src/networklayer/gtp/GTPMessage.o ../out/gcc-debug/src/networklayer/gtp/GTPUser.o ../out/gcc-debug/src/networklayer/gtp/GTPUtils.o ../out/gcc-debug/src/networklayer/gtp/path/GTPPath.o ../out/gcc-debug/src/networklayer/gtp/path/GTPPathTable.o ../out/gcc-debug/src/networklayer/gtp/tunnel/TunnelEndpoint.o ../out/gcc-debug/src/networklayer/gtp/tunnel/TunnelEndpointTable.o ../out/gcc-debug/src/networklayer/ipv4/ErrorHandling.o ../out/gcc-debug/src/networklayer/ipv4/ICMP.o ../out/gcc-debug/src/networklayer/ipv4/IGMPv2.o ../out/gcc-debug/src/networklayer/ipv4/IPv4.o ../out/gcc-debug/src/networklayer/ipv4/IPv4FragBuf.o ../out/gcc-debug/src/networklayer/ipv4/IPv4InterfaceData.o ../out/gcc-debug/src/networklayer/ipv4/IPv4Route.o ../out/gcc-debug/src/networklayer/ipv4/NetworkInfo.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTable.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTableParser.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTableRecorder.o ../out/gcc-debug/src/transport/contract/SCTPSocket.o ../out/gcc-debug/src/transport/contract/TCPSocket.o ../out/gcc-debug/src/transport/contract/TCPSocketMap.o ../out/gcc-debug/src/transport/contract/UDPSocket.o ../out/gcc-debug/src/transport/sctp/SCTP.o ../out/gcc-debug/src/transport/sctp/SCTPAlg.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationBase.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationEventProc.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationRcvMessage.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationSendAll.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationUtil.o ../out/gcc-debug/src/transport/sctp/SCTPCCFunctions.o ../out/gcc-debug/src/transport/sctp/SCTPMessage.o ../out/gcc-debug/src/transport/sctp/SCTPQueue.o ../out/gcc-debug/src/transport/sctp/SCTPReceiveStream.o ../out/gcc-debug/src/transport/sctp/SCTPSendStream.o ../out/gcc-debug/src/transport/sctp/SCTPSSFunctions.o ../out/gcc-debug/src/transport/tcp/TCP.o ../out/gcc-debug/src/transport/tcp/TCPConnectionBase.o ../out/gcc-debug/src/transport/tcp/TCPConnectionEventProc.o ../out/gcc-debug/src/transport/tcp/TCPConnectionRcvSegment.o ../out/gcc-debug/src/transport/tcp/TCPConnectionSackUtil.o ../out/gcc-debug/src/transport/tcp/TCPConnectionUtil.o ../out/gcc-debug/src/transport/tcp/TCPSACKRexmitQueue.o ../out/gcc-debug/src/transport/tcp/flavours/DumbTCP.o ../out/gcc-debug/src/transport/tcp/flavours/TCPBaseAlg.o ../out/gcc-debug/src/transport/tcp/flavours/TCPNewReno.o ../out/gcc-debug/src/transport/tcp/flavours/TCPNoCongestionControl.o ../out/gcc-debug/src/transport/tcp/flavours/TCPReno.o ../out/gcc-debug/src/transport/tcp/flavours/TCPTahoe.o ../out/gcc-debug/src/transport/tcp/flavours/TCPTahoeRenoFamily.o ../out/gcc-debug/src/transport/tcp/queues/TCPByteStreamRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPByteStreamSendQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPMsgBasedRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPMsgBasedSendQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPVirtualDataRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPVirtualDataSendQueue.o ../out/gcc-debug/src/transport/tcp_common/TCPSegment.o ../out/gcc-debug/src/transport/tcp_common/TCPSpoof.o ../out/gcc-debug/src/transport/udp/UDP.o ../out/gcc-debug/src/util/common.o ../out/gcc-debug/src/util/DCTDump.o ../out/gcc-debug/src/util/Delayer.o ../out/gcc-debug/src/util/int128.o ../out/gcc-debug/src/util/Macho.o ../out/gcc-debug/src/util/MessageChecker.o ../out/gcc-debug/src/util/NetAnimTrace.o ../out/gcc-debug/src/util/opp_utils.o ../out/gcc-debug/src/util/OrdinalBasedDropper.o ../out/gcc-debug/src/util/OrdinalBasedDuplicator.o ../out/gcc-debug/src/util/PacketDump.o ../out/gcc-debug/src/util/PatternMatcher.o ../out/gcc-debug/src/util/PcapDump.o ../out/gcc-debug/src/util/PcapRecorder.o ../out/gcc-debug/src/util/TCPDump.o ../out/gcc-debug/src/util/ThruputMeter.o ../out/gcc-debug/src/util/ThruputMeteringChannel.o ../out/gcc-debug/src/util/uint128.o ../out/gcc-debug/src/util/XMLUtils.o ../out/gcc-debug/src/util/asn/ASNTypes.o ../out/gcc-debug/src/util/asn/PerDecoder.o ../out/gcc-debug/src/util/asn/PerEncoder.o ../out/gcc-debug/src/util/gateway/Gateway.o ../out/gcc-debug/src/util/gateway/GatewayTable.o ../out/gcc-debug/src/util/headerserializers/TCPIPchecksum.o ../out/gcc-debug/src/util/headerserializers/4gsim/DiameterSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/GTPSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/MACSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/NASSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/PDCPSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/RLCSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/RRCSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/ICMPSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/IGMPSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/IPv4Serializer.o ../out/gcc-debug/src/util/headerserializers/sctp/SCTPSerializer.o ../out/gcc-debug/src/util/headerserializers/tcp/TCPSerializer.o ../out/gcc-debug/src/util/headerserializers/udp/UDPSerializer.o ../out/gcc-debug/src/util/subscriber/BearerContext.o ../out/gcc-debug/src/util/subscriber/LTEUtils.o ../out/gcc-debug/src/util/subscriber/PDNConnection.o ../out/gcc-debug/src/util/subscriber/Subscriber.o ../out/gcc-debug/src/util/subscriber/SubscriberTable.o ../out/gcc-debug/src/world/annotations/AnnotationDummy.o ../out/gcc-debug/src/world/annotations/AnnotationManager.o ../out/gcc-debug/src/world/obstacles/Obstacle.o ../out/gcc-debug/src/world/obstacles/ObstacleControl.o ../out/gcc-debug/src/world/powercontrol/PowerControlManager.o ../out/gcc-debug/src/world/radio/ChannelAccess.o ../out/gcc-debug/src/world/radio/ChannelControl.o ../out/gcc-debug/src/world/scenario/ScenarioManager.o ../out/gcc-debug/src/applications/diameter/DiameterMessage_m.o ../out/gcc-debug/src/applications/ethernet/EtherApp_m.o ../out/gcc-debug/src/applications/nas/NASMessage_m.o ../out/gcc-debug/src/applications/pingapp/PingPayload_m.o ../out/gcc-debug/src/applications/s1ap/S1APControlInfo_m.o ../out/gcc-debug/src/applications/tcpapp/GenericAppMsg_m.o ../out/gcc-debug/src/base/ByteArray_m.o ../out/gcc-debug/src/base/ByteArrayMessage_m.o ../out/gcc-debug/src/linklayer/contract/Ieee802Ctrl_m.o ../out/gcc-debug/src/linklayer/contract/PhyControlInfo_m.o ../out/gcc-debug/src/linklayer/ethernet/EtherFrame_m.o ../out/gcc-debug/src/linklayer/ext/ExtFrame_m.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211Frame_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/ETXPacket_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtFrames_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211Primitives_m.o ../out/gcc-debug/src/linklayer/lte/LTEControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/LTESchedulingInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/HARQControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/MACControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/MACMessage_m.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPMessage_m.o ../out/gcc-debug/src/linklayer/lte/phy/LTEFrame_m.o ../out/gcc-debug/src/linklayer/lte/phy/LTEPhyControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCMessage_m.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCMessage_m.o ../out/gcc-debug/src/linklayer/ppp/PPPFrame_m.o ../out/gcc-debug/src/linklayer/radio/AirFrame_m.o ../out/gcc-debug/src/linklayer/radio/Radio80211aControlInfo_m.o ../out/gcc-debug/src/networklayer/arp/ARPPacket_m.o ../out/gcc-debug/src/networklayer/contract/IPProtocolId_m.o ../out/gcc-debug/src/networklayer/contract/IPv4ControlInfo_m.o ../out/gcc-debug/src/networklayer/contract/IPv6ControlInfo_m.o ../out/gcc-debug/src/networklayer/gtp/GTPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/ICMPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/IGMPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/IPv4Datagram_m.o ../out/gcc-debug/src/transport/contract/SCTPCommand_m.o ../out/gcc-debug/src/transport/contract/TCPCommand_m.o ../out/gcc-debug/src/transport/contract/UDPControlInfo_m.o ../out/gcc-debug/src/transport/sctp/SCTPMessage_m.o ../out/gcc-debug/src/transport/tcp_common/TCPSegment_m.o ../out/gcc-debug/src/transport/udp/UDPPacket_m.o ../out/gcc-debug/src/world/powercontrol/PowerControlMessages_m.o
../out/gcc-debug/src/applications/diameter/DiameterApplication.o ../out/gcc-debug/src/applications/diameter/DiameterBase.o ../out/gcc-debug/src/applications/diameter/DiameterConnection.o ../out/gcc-debug/src/applications/diameter/DiameterMessage.o ../out/gcc-debug/src/applications/diameter/DiameterPeer.o ../out/gcc-debug/src/applications/diameter/DiameterSession.o ../out/gcc-debug/src/applications/diameter/DiameterUtils.o ../out/gcc-debug/src/applications/diameters6a/DiameterS6a.o ../out/gcc-debug/src/applications/ethernet/EtherAppCli.o ../out/gcc-debug/src/applications/ethernet/EtherAppSrv.o ../out/gcc-debug/src/applications/ethernet/EtherTrafGen.o ../out/gcc-debug/src/applications/generic/IPvXTrafGen.o ../out/gcc-debug/src/applications/generic/IPvXTrafSink.o ../out/gcc-debug/src/applications/nas/EMMEntity.o ../out/gcc-debug/src/applications/nas/ESMEntity.o ../out/gcc-debug/src/applications/nas/NAS.o ../out/gcc-debug/src/applications/nas/NASUtils.o ../out/gcc-debug/src/applications/pingapp/PingApp.o ../out/gcc-debug/src/applications/pingapp/PingTestApp.o ../out/gcc-debug/src/applications/s1ap/S1AP.o ../out/gcc-debug/src/applications/s1ap/S1APConnection.o ../out/gcc-debug/src/applications/s1ap/S1APUtils.o ../out/gcc-debug/src/applications/s1ap/message/S1APContainer.o ../out/gcc-debug/src/applications/s1ap/message/S1APIe.o ../out/gcc-debug/src/applications/s1ap/message/S1APPdu.o ../out/gcc-debug/src/applications/sctpapp/SCTPClient.o ../out/gcc-debug/src/applications/sctpapp/SCTPPeer.o ../out/gcc-debug/src/applications/sctpapp/SCTPServer.o ../out/gcc-debug/src/applications/tcpapp/TCPBasicClientApp.o ../out/gcc-debug/src/applications/tcpapp/TCPEchoApp.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericCliAppBase.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericSrvApp.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericSrvThread.o ../out/gcc-debug/src/applications/tcpapp/TCPSessionApp.o ../out/gcc-debug/src/applications/tcpapp/TCPSinkApp.o ../out/gcc-debug/src/applications/tcpapp/TCPSrvHostApp.o ../out/gcc-debug/src/applications/tcpapp/TelnetApp.o ../out/gcc-debug/src/applications/udpapp/UDPBasicApp.o ../out/gcc-debug/src/applications/udpapp/UDPBasicBurst.o ../out/gcc-debug/src/applications/udpapp/UDPEchoApp.o ../out/gcc-debug/src/applications/udpapp/UDPSink.o ../out/gcc-debug/src/applications/udpapp/UDPVideoStreamCli.o ../out/gcc-debug/src/applications/udpapp/UDPVideoStreamSvr.o ../out/gcc-debug/src/base/AbstractQueue.o ../out/gcc-debug/src/base/BasicModule.o ../out/gcc-debug/src/base/ByteArray.o ../out/gcc-debug/src/base/ByteArrayBuffer.o ../out/gcc-debug/src/base/ByteArrayMessage.o ../out/gcc-debug/src/base/Coord.o ../out/gcc-debug/src/base/erfc.o ../out/gcc-debug/src/base/Join.o ../out/gcc-debug/src/base/ModuleAccess.o ../out/gcc-debug/src/base/NedFunctions.o ../out/gcc-debug/src/base/NotificationBoard.o ../out/gcc-debug/src/base/NotifierConsts.o ../out/gcc-debug/src/base/PassiveQueueBase.o ../out/gcc-debug/src/base/ProtocolMap.o ../out/gcc-debug/src/base/QueueBase.o ../out/gcc-debug/src/base/QueueWithQoS.o ../out/gcc-debug/src/base/ReassemblyBuffer.o ../out/gcc-debug/src/base/ResultFilters.o ../out/gcc-debug/src/base/Sink.o ../out/gcc-debug/src/base/Topology.o ../out/gcc-debug/src/base/UnimplementedModule.o ../out/gcc-debug/src/base/WeightedTopology.o ../out/gcc-debug/src/battery/models/BasicBattery.o ../out/gcc-debug/src/battery/models/InetSimpleBattery.o ../out/gcc-debug/src/linklayer/contract/MACAddress.o ../out/gcc-debug/src/linklayer/ethernet/EtherBus.o ../out/gcc-debug/src/linklayer/ethernet/EtherEncap.o ../out/gcc-debug/src/linklayer/ethernet/EtherFrameClassifier.o ../out/gcc-debug/src/linklayer/ethernet/EtherHub.o ../out/gcc-debug/src/linklayer/ethernet/EtherLLC.o ../out/gcc-debug/src/linklayer/ethernet/EtherMAC.o ../out/gcc-debug/src/linklayer/ethernet/EtherMACBase.o ../out/gcc-debug/src/linklayer/ethernet/EtherMACFullDuplex.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitBase.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitNP.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitPP.o ../out/gcc-debug/src/linklayer/ext/cSocketRTScheduler.o ../out/gcc-debug/src/linklayer/ext/ExtInterface.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211eClassifier.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211Mac.o ../out/gcc-debug/src/linklayer/ieee80211/mac/WifiMode.o ../out/gcc-debug/src/linklayer/ieee80211/mac/WirelessMacBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211AgentSTA.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211Etx.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAdhoc.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAdhocWithEtx.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAP.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAPBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAPSimplified.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtSTA.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtSTASimplified.o ../out/gcc-debug/src/linklayer/ieee80211/radio/BerParseFile.o ../out/gcc-debug/src/linklayer/ieee80211/radio/Ieee80211RadioModel.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/dsss-error-rate-model.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/nist-error-rate-model.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/yans-error-rate-model.o ../out/gcc-debug/src/linklayer/lte/LTEConfig.o ../out/gcc-debug/src/linklayer/lte/LTEScheduler.o ../out/gcc-debug/src/linklayer/lte/LTESchedulingInfo.o ../out/gcc-debug/src/linklayer/lte/mac/HARQEntity.o ../out/gcc-debug/src/linklayer/lte/mac/HARQProcess.o ../out/gcc-debug/src/linklayer/lte/mac/MAC.o ../out/gcc-debug/src/linklayer/lte/mac/MACMessage.o ../out/gcc-debug/src/linklayer/lte/mac/MACScheduler.o ../out/gcc-debug/src/linklayer/lte/mac/MACUtils.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCP.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPEntity.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPMessage.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPUtils.o ../out/gcc-debug/src/linklayer/lte/phy/LTEChannelControl.o ../out/gcc-debug/src/linklayer/lte/phy/LTERadio.o ../out/gcc-debug/src/linklayer/lte/phy/LTERadioModel.o ../out/gcc-debug/src/linklayer/lte/rlc/RLC.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCEntity.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCTMEntity.o ../out/gcc-debug/src/linklayer/lte/rrc/RRC.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCEntity.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCUtils.o ../out/gcc-debug/src/linklayer/lte/rrc/message/.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCClassDefinitions.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCInformationElements.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCMessage.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCPDUDefinitions.o ../out/gcc-debug/src/linklayer/ppp/PPP.o ../out/gcc-debug/src/linklayer/queue/AlgorithmicDropperBase.o ../out/gcc-debug/src/linklayer/queue/DropTailQueue.o ../out/gcc-debug/src/linklayer/queue/FIFOQueue.o ../out/gcc-debug/src/linklayer/queue/PriorityScheduler.o ../out/gcc-debug/src/linklayer/queue/REDDropper.o ../out/gcc-debug/src/linklayer/queue/SchedulerBase.o ../out/gcc-debug/src/linklayer/queue/ThresholdDropper.o ../out/gcc-debug/src/linklayer/queue/WRRScheduler.o ../out/gcc-debug/src/linklayer/radio/GenericRadioModel.o ../out/gcc-debug/src/linklayer/radio/Modulation.o ../out/gcc-debug/src/linklayer/radio/Radio.o ../out/gcc-debug/src/linklayer/radio/propagation/FreeSpaceModel.o ../out/gcc-debug/src/linklayer/radio/propagation/LogNormalShadowingModel.o ../out/gcc-debug/src/linklayer/radio/propagation/NakagamiModel.o ../out/gcc-debug/src/linklayer/radio/propagation/RayleighModel.o ../out/gcc-debug/src/linklayer/radio/propagation/RiceModel.o ../out/gcc-debug/src/linklayer/radio/propagation/TwoRayGroundModel.o ../out/gcc-debug/src/mobility/models/ANSimMobility.o ../out/gcc-debug/src/mobility/models/BonnMotionFileCache.o ../out/gcc-debug/src/mobility/models/BonnMotionMobility.o ../out/gcc-debug/src/mobility/models/ChiangMobility.o ../out/gcc-debug/src/mobility/models/CircleMobility.o ../out/gcc-debug/src/mobility/models/ConstSpeedMobility.o ../out/gcc-debug/src/mobility/models/GaussMarkovMobility.o ../out/gcc-debug/src/mobility/models/LinearMobility.o ../out/gcc-debug/src/mobility/models/LinearNodeDistributionMobility.o ../out/gcc-debug/src/mobility/models/LineSegmentsMobilityBase.o ../out/gcc-debug/src/mobility/models/MassMobility.o ../out/gcc-debug/src/mobility/models/MoBANCoordinator.o ../out/gcc-debug/src/mobility/models/MoBANLocal.o ../out/gcc-debug/src/mobility/models/MobilityAccess.o ../out/gcc-debug/src/mobility/models/MobilityBase.o ../out/gcc-debug/src/mobility/models/MovingMobilityBase.o ../out/gcc-debug/src/mobility/models/Ns2MotionMobility.o ../out/gcc-debug/src/mobility/models/Posture.o ../out/gcc-debug/src/mobility/models/PostureTransition.o ../out/gcc-debug/src/mobility/models/RandomWPMobility.o ../out/gcc-debug/src/mobility/models/RectangleMobility.o ../out/gcc-debug/src/mobility/models/StaticGridMobility.o ../out/gcc-debug/src/mobility/models/StationaryMobility.o ../out/gcc-debug/src/mobility/models/TraCIMobility.o ../out/gcc-debug/src/mobility/models/TractorMobility.o ../out/gcc-debug/src/mobility/models/TurtleMobility.o ../out/gcc-debug/src/networklayer/arp/ARP.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/FlatNetworkConfigurator.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/HostAutoConfigurator.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/IPv4NetworkConfigurator.o ../out/gcc-debug/src/networklayer/common/InterfaceEntry.o ../out/gcc-debug/src/networklayer/common/InterfaceTable.o ../out/gcc-debug/src/networklayer/contract/IPv4Address.o ../out/gcc-debug/src/networklayer/contract/IPv4ControlInfo.o ../out/gcc-debug/src/networklayer/contract/IPv6Address.o ../out/gcc-debug/src/networklayer/contract/IPv6ControlInfo.o ../out/gcc-debug/src/networklayer/contract/IPvXAddress.o ../out/gcc-debug/src/networklayer/contract/IPvXAddressResolver.o ../out/gcc-debug/src/networklayer/extras/Dummy.o ../out/gcc-debug/src/networklayer/extras/FailureManager.o ../out/gcc-debug/src/networklayer/gtp/GTP.o ../out/gcc-debug/src/networklayer/gtp/GTPControl.o ../out/gcc-debug/src/networklayer/gtp/GTPMessage.o ../out/gcc-debug/src/networklayer/gtp/GTPUser.o ../out/gcc-debug/src/networklayer/gtp/GTPUtils.o ../out/gcc-debug/src/networklayer/gtp/path/GTPPath.o ../out/gcc-debug/src/networklayer/gtp/path/GTPPathTable.o ../out/gcc-debug/src/networklayer/gtp/tunnel/TunnelEndpoint.o ../out/gcc-debug/src/networklayer/gtp/tunnel/TunnelEndpointTable.o ../out/gcc-debug/src/networklayer/ipv4/ErrorHandling.o ../out/gcc-debug/src/networklayer/ipv4/ICMP.o ../out/gcc-debug/src/networklayer/ipv4/IGMPv2.o ../out/gcc-debug/src/networklayer/ipv4/IPv4.o ../out/gcc-debug/src/networklayer/ipv4/IPv4FragBuf.o ../out/gcc-debug/src/networklayer/ipv4/IPv4InterfaceData.o ../out/gcc-debug/src/networklayer/ipv4/IPv4Route.o ../out/gcc-debug/src/networklayer/ipv4/NetworkInfo.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTable.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTableParser.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTableRecorder.o ../out/gcc-debug/src/transport/contract/SCTPSocket.o ../out/gcc-debug/src/transport/contract/TCPSocket.o ../out/gcc-debug/src/transport/contract/TCPSocketMap.o ../out/gcc-debug/src/transport/contract/UDPSocket.o ../out/gcc-debug/src/transport/sctp/SCTP.o ../out/gcc-debug/src/transport/sctp/SCTPAlg.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationBase.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationEventProc.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationRcvMessage.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationSendAll.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationUtil.o ../out/gcc-debug/src/transport/sctp/SCTPCCFunctions.o ../out/gcc-debug/src/transport/sctp/SCTPMessage.o ../out/gcc-debug/src/transport/sctp/SCTPQueue.o ../out/gcc-debug/src/transport/sctp/SCTPReceiveStream.o ../out/gcc-debug/src/transport/sctp/SCTPSendStream.o ../out/gcc-debug/src/transport/sctp/SCTPSSFunctions.o ../out/gcc-debug/src/transport/tcp/TCP.o ../out/gcc-debug/src/transport/tcp/TCPConnectionBase.o ../out/gcc-debug/src/transport/tcp/TCPConnectionEventProc.o ../out/gcc-debug/src/transport/tcp/TCPConnectionRcvSegment.o ../out/gcc-debug/src/transport/tcp/TCPConnectionSackUtil.o ../out/gcc-debug/src/transport/tcp/TCPConnectionUtil.o ../out/gcc-debug/src/transport/tcp/TCPSACKRexmitQueue.o ../out/gcc-debug/src/transport/tcp/flavours/DumbTCP.o ../out/gcc-debug/src/transport/tcp/flavours/TCPBaseAlg.o ../out/gcc-debug/src/transport/tcp/flavours/TCPNewReno.o ../out/gcc-debug/src/transport/tcp/flavours/TCPNoCongestionControl.o ../out/gcc-debug/src/transport/tcp/flavours/TCPReno.o ../out/gcc-debug/src/transport/tcp/flavours/TCPTahoe.o ../out/gcc-debug/src/transport/tcp/flavours/TCPTahoeRenoFamily.o ../out/gcc-debug/src/transport/tcp/queues/TCPByteStreamRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPByteStreamSendQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPMsgBasedRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPMsgBasedSendQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPVirtualDataRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPVirtualDataSendQueue.o ../out/gcc-debug/src/transport/tcp_common/TCPSegment.o ../out/gcc-debug/src/transport/tcp_common/TCPSpoof.o ../out/gcc-debug/src/transport/udp/UDP.o ../out/gcc-debug/src/util/common.o ../out/gcc-debug/src/util/DCTDump.o ../out/gcc-debug/src/util/Delayer.o ../out/gcc-debug/src/util/int128.o ../out/gcc-debug/src/util/Macho.o ../out/gcc-debug/src/util/MessageChecker.o ../out/gcc-debug/src/util/NetAnimTrace.o ../out/gcc-debug/src/util/opp_utils.o ../out/gcc-debug/src/util/OrdinalBasedDropper.o ../out/gcc-debug/src/util/OrdinalBasedDuplicator.o ../out/gcc-debug/src/util/PacketDump.o ../out/gcc-debug/src/util/PatternMatcher.o ../out/gcc-debug/src/util/PcapDump.o ../out/gcc-debug/src/util/PcapRecorder.o ../out/gcc-debug/src/util/TCPDump.o ../out/gcc-debug/src/util/ThruputMeter.o ../out/gcc-debug/src/util/ThruputMeteringChannel.o ../out/gcc-debug/src/util/uint128.o ../out/gcc-debug/src/util/XMLUtils.o ../out/gcc-debug/src/util/asn/ASNTypes.o ../out/gcc-debug/src/util/asn/PerDecoder.o ../out/gcc-debug/src/util/asn/PerEncoder.o ../out/gcc-debug/src/util/gateway/Gateway.o ../out/gcc-debug/src/util/gateway/GatewayTable.o ../out/gcc-debug/src/util/headerserializers/TCPIPchecksum.o ../out/gcc-debug/src/util/headerserializers/4gsim/DiameterSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/GTPSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/MACSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/NASSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/PDCPSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/RLCSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/RRCSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/ICMPSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/IGMPSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/IPv4Serializer.o ../out/gcc-debug/src/util/headerserializers/sctp/SCTPSerializer.o ../out/gcc-debug/src/util/headerserializers/tcp/TCPSerializer.o ../out/gcc-debug/src/util/headerserializers/udp/UDPSerializer.o ../out/gcc-debug/src/util/subscriber/BearerContext.o ../out/gcc-debug/src/util/subscriber/LTEUtils.o ../out/gcc-debug/src/util/subscriber/PDNConnection.o ../out/gcc-debug/src/util/subscriber/Subscriber.o ../out/gcc-debug/src/util/subscriber/SubscriberTable.o ../out/gcc-debug/src/world/annotations/AnnotationDummy.o ../out/gcc-debug/src/world/annotations/AnnotationManager.o ../out/gcc-debug/src/world/obstacles/Obstacle.o ../out/gcc-debug/src/world/obstacles/ObstacleControl.o ../out/gcc-debug/src/world/powercontrol/PowerControlManager.o ../out/gcc-debug/src/world/radio/ChannelAccess.o ../out/gcc-debug/src/world/radio/ChannelControl.o ../out/gcc-debug/src/world/scenario/ScenarioManager.o ../out/gcc-debug/src/applications/diameter/DiameterMessage_m.o ../out/gcc-debug/src/applications/ethernet/EtherApp_m.o ../out/gcc-debug/src/applications/nas/NASMessage_m.o ../out/gcc-debug/src/applications/pingapp/PingPayload_m.o ../out/gcc-debug/src/applications/s1ap/S1APControlInfo_m.o ../out/gcc-debug/src/applications/tcpapp/GenericAppMsg_m.o ../out/gcc-debug/src/base/ByteArray_m.o ../out/gcc-debug/src/base/ByteArrayMessage_m.o ../out/gcc-debug/src/linklayer/contract/Ieee802Ctrl_m.o ../out/gcc-debug/src/linklayer/contract/PhyControlInfo_m.o ../out/gcc-debug/src/linklayer/ethernet/EtherFrame_m.o ../out/gcc-debug/src/linklayer/ext/ExtFrame_m.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211Frame_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/ETXPacket_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtFrames_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211Primitives_m.o ../out/gcc-debug/src/linklayer/lte/LTEControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/LTESchedulingInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/HARQControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/MACControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/MACMessage_m.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPMessage_m.o ../out/gcc-debug/src/linklayer/lte/phy/LTEFrame_m.o ../out/gcc-debug/src/linklayer/lte/phy/LTEPhyControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCMessage_m.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCMessage_m.o ../out/gcc-debug/src/linklayer/ppp/PPPFrame_m.o ../out/gcc-debug/src/linklayer/radio/AirFrame_m.o ../out/gcc-debug/src/linklayer/radio/Radio80211aControlInfo_m.o ../out/gcc-debug/src/networklayer/arp/ARPPacket_m.o ../out/gcc-debug/src/networklayer/contract/IPProtocolId_m.o ../out/gcc-debug/src/networklayer/contract/IPv4ControlInfo_m.o ../out/gcc-debug/src/networklayer/contract/IPv6ControlInfo_m.o ../out/gcc-debug/src/networklayer/gtp/GTPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/ICMPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/IGMPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/IPv4Datagram_m.o ../out/gcc-debug/src/transport/contract/SCTPCommand_m.o ../out/gcc-debug/src/transport/contract/TCPCommand_m.o ../out/gcc-debug/src/transport/contract/UDPControlInfo_m.o ../out/gcc-debug/src/transport/sctp/SCTPMessage_m.o ../out/gcc-debug/src/transport/tcp_common/TCPSegment_m.o ../out/gcc-debug/src/transport/udp/UDPPacket_m.o ../out/gcc-debug/src/world/powercontrol/PowerControlMessages_m.o
../out/gcc-debug/src/applications/diameter/DiameterApplication.o ../out/gcc-debug/src/applications/diameter/DiameterBase.o ../out/gcc-debug/src/applications/diameter/DiameterConnection.o ../out/gcc-debug/src/applications/diameter/DiameterMessage.o ../out/gcc-debug/src/applications/diameter/DiameterPeer.o ../out/gcc-debug/src/applications/diameter/DiameterSession.o ../out/gcc-debug/src/applications/diameter/DiameterUtils.o ../out/gcc-debug/src/applications/diameters6a/DiameterS6a.o ../out/gcc-debug/src/applications/ethernet/EtherAppCli.o ../out/gcc-debug/src/applications/ethernet/EtherAppSrv.o ../out/gcc-debug/src/applications/ethernet/EtherTrafGen.o ../out/gcc-debug/src/applications/generic/IPvXTrafGen.o ../out/gcc-debug/src/applications/generic/IPvXTrafSink.o ../out/gcc-debug/src/applications/nas/EMMEntity.o ../out/gcc-debug/src/applications/nas/ESMEntity.o ../out/gcc-debug/src/applications/nas/NAS.o ../out/gcc-debug/src/applications/nas/NASUtils.o ../out/gcc-debug/src/applications/pingapp/PingApp.o ../out/gcc-debug/src/applications/pingapp/PingTestApp.o ../out/gcc-debug/src/applications/s1ap/S1AP.o ../out/gcc-debug/src/applications/s1ap/S1APConnection.o ../out/gcc-debug/src/applications/s1ap/S1APUtils.o ../out/gcc-debug/src/applications/s1ap/message/S1APContainer.o ../out/gcc-debug/src/applications/s1ap/message/S1APIe.o ../out/gcc-debug/src/applications/s1ap/message/S1APPdu.o ../out/gcc-debug/src/applications/sctpapp/SCTPClient.o ../out/gcc-debug/src/applications/sctpapp/SCTPPeer.o ../out/gcc-debug/src/applications/sctpapp/SCTPServer.o ../out/gcc-debug/src/applications/tcpapp/TCPBasicClientApp.o ../out/gcc-debug/src/applications/tcpapp/TCPEchoApp.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericCliAppBase.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericSrvApp.o ../out/gcc-debug/src/applications/tcpapp/TCPGenericSrvThread.o ../out/gcc-debug/src/applications/tcpapp/TCPSessionApp.o ../out/gcc-debug/src/applications/tcpapp/TCPSinkApp.o ../out/gcc-debug/src/applications/tcpapp/TCPSrvHostApp.o ../out/gcc-debug/src/applications/tcpapp/TelnetApp.o ../out/gcc-debug/src/applications/udpapp/UDPBasicApp.o ../out/gcc-debug/src/applications/udpapp/UDPBasicBurst.o ../out/gcc-debug/src/applications/udpapp/UDPEchoApp.o ../out/gcc-debug/src/applications/udpapp/UDPSink.o ../out/gcc-debug/src/applications/udpapp/UDPVideoStreamCli.o ../out/gcc-debug/src/applications/udpapp/UDPVideoStreamSvr.o ../out/gcc-debug/src/base/AbstractQueue.o ../out/gcc-debug/src/base/BasicModule.o ../out/gcc-debug/src/base/ByteArray.o ../out/gcc-debug/src/base/ByteArrayBuffer.o ../out/gcc-debug/src/base/ByteArrayMessage.o ../out/gcc-debug/src/base/Coord.o ../out/gcc-debug/src/base/erfc.o ../out/gcc-debug/src/base/Join.o ../out/gcc-debug/src/base/ModuleAccess.o ../out/gcc-debug/src/base/NedFunctions.o ../out/gcc-debug/src/base/NotificationBoard.o ../out/gcc-debug/src/base/NotifierConsts.o ../out/gcc-debug/src/base/PassiveQueueBase.o ../out/gcc-debug/src/base/ProtocolMap.o ../out/gcc-debug/src/base/QueueBase.o ../out/gcc-debug/src/base/QueueWithQoS.o ../out/gcc-debug/src/base/ReassemblyBuffer.o ../out/gcc-debug/src/base/ResultFilters.o ../out/gcc-debug/src/base/Sink.o ../out/gcc-debug/src/base/Topology.o ../out/gcc-debug/src/base/UnimplementedModule.o ../out/gcc-debug/src/base/WeightedTopology.o ../out/gcc-debug/src/battery/models/BasicBattery.o ../out/gcc-debug/src/battery/models/InetSimpleBattery.o ../out/gcc-debug/src/linklayer/contract/MACAddress.o ../out/gcc-debug/src/linklayer/ethernet/EtherBus.o ../out/gcc-debug/src/linklayer/ethernet/EtherEncap.o ../out/gcc-debug/src/linklayer/ethernet/EtherFrameClassifier.o ../out/gcc-debug/src/linklayer/ethernet/EtherHub.o ../out/gcc-debug/src/linklayer/ethernet/EtherLLC.o ../out/gcc-debug/src/linklayer/ethernet/EtherMAC.o ../out/gcc-debug/src/linklayer/ethernet/EtherMACBase.o ../out/gcc-debug/src/linklayer/ethernet/EtherMACFullDuplex.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitBase.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitNP.o ../out/gcc-debug/src/linklayer/ethernet/switch/MACRelayUnitPP.o ../out/gcc-debug/src/linklayer/ext/cSocketRTScheduler.o ../out/gcc-debug/src/linklayer/ext/ExtInterface.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211eClassifier.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211Mac.o ../out/gcc-debug/src/linklayer/ieee80211/mac/WifiMode.o ../out/gcc-debug/src/linklayer/ieee80211/mac/WirelessMacBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211AgentSTA.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211Etx.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAdhoc.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAdhocWithEtx.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAP.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAPBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtAPSimplified.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtBase.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtSTA.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtSTASimplified.o ../out/gcc-debug/src/linklayer/ieee80211/radio/BerParseFile.o ../out/gcc-debug/src/linklayer/ieee80211/radio/Ieee80211RadioModel.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/dsss-error-rate-model.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/nist-error-rate-model.o ../out/gcc-debug/src/linklayer/ieee80211/radio/errormodel/yans-error-rate-model.o ../out/gcc-debug/src/linklayer/lte/LTEConfig.o ../out/gcc-debug/src/linklayer/lte/LTEScheduler.o ../out/gcc-debug/src/linklayer/lte/LTESchedulingInfo.o ../out/gcc-debug/src/linklayer/lte/mac/HARQEntity.o ../out/gcc-debug/src/linklayer/lte/mac/HARQProcess.o ../out/gcc-debug/src/linklayer/lte/mac/MAC.o ../out/gcc-debug/src/linklayer/lte/mac/MACMessage.o ../out/gcc-debug/src/linklayer/lte/mac/MACScheduler.o ../out/gcc-debug/src/linklayer/lte/mac/MACUtils.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCP.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPEntity.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPMessage.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPUtils.o ../out/gcc-debug/src/linklayer/lte/phy/LTEChannelControl.o ../out/gcc-debug/src/linklayer/lte/phy/LTERadio.o ../out/gcc-debug/src/linklayer/lte/phy/LTERadioModel.o ../out/gcc-debug/src/linklayer/lte/rlc/RLC.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCEntity.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCTMEntity.o ../out/gcc-debug/src/linklayer/lte/rrc/RRC.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCEntity.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCUtils.o ../out/gcc-debug/src/linklayer/lte/rrc/message/.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCClassDefinitions.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCInformationElements.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCMessage.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCPDUDefinitions.o ../out/gcc-debug/src/linklayer/ppp/PPP.o ../out/gcc-debug/src/linklayer/queue/AlgorithmicDropperBase.o ../out/gcc-debug/src/linklayer/queue/DropTailQueue.o ../out/gcc-debug/src/linklayer/queue/FIFOQueue.o ../out/gcc-debug/src/linklayer/queue/PriorityScheduler.o ../out/gcc-debug/src/linklayer/queue/REDDropper.o ../out/gcc-debug/src/linklayer/queue/SchedulerBase.o ../out/gcc-debug/src/linklayer/queue/ThresholdDropper.o ../out/gcc-debug/src/linklayer/queue/WRRScheduler.o ../out/gcc-debug/src/linklayer/radio/GenericRadioModel.o ../out/gcc-debug/src/linklayer/radio/Modulation.o ../out/gcc-debug/src/linklayer/radio/Radio.o ../out/gcc-debug/src/linklayer/radio/propagation/FreeSpaceModel.o ../out/gcc-debug/src/linklayer/radio/propagation/LogNormalShadowingModel.o ../out/gcc-debug/src/linklayer/radio/propagation/NakagamiModel.o ../out/gcc-debug/src/linklayer/radio/propagation/RayleighModel.o ../out/gcc-debug/src/linklayer/radio/propagation/RiceModel.o ../out/gcc-debug/src/linklayer/radio/propagation/TwoRayGroundModel.o ../out/gcc-debug/src/mobility/models/ANSimMobility.o ../out/gcc-debug/src/mobility/models/BonnMotionFileCache.o ../out/gcc-debug/src/mobility/models/BonnMotionMobility.o ../out/gcc-debug/src/mobility/models/ChiangMobility.o ../out/gcc-debug/src/mobility/models/CircleMobility.o ../out/gcc-debug/src/mobility/models/ConstSpeedMobility.o ../out/gcc-debug/src/mobility/models/GaussMarkovMobility.o ../out/gcc-debug/src/mobility/models/LinearMobility.o ../out/gcc-debug/src/mobility/models/LinearNodeDistributionMobility.o ../out/gcc-debug/src/mobility/models/LineSegmentsMobilityBase.o ../out/gcc-debug/src/mobility/models/MassMobility.o ../out/gcc-debug/src/mobility/models/MoBANCoordinator.o ../out/gcc-debug/src/mobility/models/MoBANLocal.o ../out/gcc-debug/src/mobility/models/MobilityAccess.o ../out/gcc-debug/src/mobility/models/MobilityBase.o ../out/gcc-debug/src/mobility/models/MovingMobilityBase.o ../out/gcc-debug/src/mobility/models/Ns2MotionMobility.o ../out/gcc-debug/src/mobility/models/Posture.o ../out/gcc-debug/src/mobility/models/PostureTransition.o ../out/gcc-debug/src/mobility/models/RandomWPMobility.o ../out/gcc-debug/src/mobility/models/RectangleMobility.o ../out/gcc-debug/src/mobility/models/StaticGridMobility.o ../out/gcc-debug/src/mobility/models/StationaryMobility.o ../out/gcc-debug/src/mobility/models/TraCIMobility.o ../out/gcc-debug/src/mobility/models/TractorMobility.o ../out/gcc-debug/src/mobility/models/TurtleMobility.o ../out/gcc-debug/src/networklayer/arp/ARP.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/FlatNetworkConfigurator.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/HostAutoConfigurator.o ../out/gcc-debug/src/networklayer/autorouting/ipv4/IPv4NetworkConfigurator.o ../out/gcc-debug/src/networklayer/common/InterfaceEntry.o ../out/gcc-debug/src/networklayer/common/InterfaceTable.o ../out/gcc-debug/src/networklayer/contract/IPv4Address.o ../out/gcc-debug/src/networklayer/contract/IPv4ControlInfo.o ../out/gcc-debug/src/networklayer/contract/IPv6Address.o ../out/gcc-debug/src/networklayer/contract/IPv6ControlInfo.o ../out/gcc-debug/src/networklayer/contract/IPvXAddress.o ../out/gcc-debug/src/networklayer/contract/IPvXAddressResolver.o ../out/gcc-debug/src/networklayer/extras/Dummy.o ../out/gcc-debug/src/networklayer/extras/FailureManager.o ../out/gcc-debug/src/networklayer/gtp/GTP.o ../out/gcc-debug/src/networklayer/gtp/GTPControl.o ../out/gcc-debug/src/networklayer/gtp/GTPMessage.o ../out/gcc-debug/src/networklayer/gtp/GTPUser.o ../out/gcc-debug/src/networklayer/gtp/GTPUtils.o ../out/gcc-debug/src/networklayer/gtp/path/GTPPath.o ../out/gcc-debug/src/networklayer/gtp/path/GTPPathTable.o ../out/gcc-debug/src/networklayer/gtp/tunnel/TunnelEndpoint.o ../out/gcc-debug/src/networklayer/gtp/tunnel/TunnelEndpointTable.o ../out/gcc-debug/src/networklayer/ipv4/ErrorHandling.o ../out/gcc-debug/src/networklayer/ipv4/ICMP.o ../out/gcc-debug/src/networklayer/ipv4/IGMPv2.o ../out/gcc-debug/src/networklayer/ipv4/IPv4.o ../out/gcc-debug/src/networklayer/ipv4/IPv4FragBuf.o ../out/gcc-debug/src/networklayer/ipv4/IPv4InterfaceData.o ../out/gcc-debug/src/networklayer/ipv4/IPv4Route.o ../out/gcc-debug/src/networklayer/ipv4/NetworkInfo.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTable.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTableParser.o ../out/gcc-debug/src/networklayer/ipv4/RoutingTableRecorder.o ../out/gcc-debug/src/transport/contract/SCTPSocket.o ../out/gcc-debug/src/transport/contract/TCPSocket.o ../out/gcc-debug/src/transport/contract/TCPSocketMap.o ../out/gcc-debug/src/transport/contract/UDPSocket.o ../out/gcc-debug/src/transport/sctp/SCTP.o ../out/gcc-debug/src/transport/sctp/SCTPAlg.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationBase.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationEventProc.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationRcvMessage.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationSendAll.o ../out/gcc-debug/src/transport/sctp/SCTPAssociationUtil.o ../out/gcc-debug/src/transport/sctp/SCTPCCFunctions.o ../out/gcc-debug/src/transport/sctp/SCTPMessage.o ../out/gcc-debug/src/transport/sctp/SCTPQueue.o ../out/gcc-debug/src/transport/sctp/SCTPReceiveStream.o ../out/gcc-debug/src/transport/sctp/SCTPSendStream.o ../out/gcc-debug/src/transport/sctp/SCTPSSFunctions.o ../out/gcc-debug/src/transport/tcp/TCP.o ../out/gcc-debug/src/transport/tcp/TCPConnectionBase.o ../out/gcc-debug/src/transport/tcp/TCPConnectionEventProc.o ../out/gcc-debug/src/transport/tcp/TCPConnectionRcvSegment.o ../out/gcc-debug/src/transport/tcp/TCPConnectionSackUtil.o ../out/gcc-debug/src/transport/tcp/TCPConnectionUtil.o ../out/gcc-debug/src/transport/tcp/TCPSACKRexmitQueue.o ../out/gcc-debug/src/transport/tcp/flavours/DumbTCP.o ../out/gcc-debug/src/transport/tcp/flavours/TCPBaseAlg.o ../out/gcc-debug/src/transport/tcp/flavours/TCPNewReno.o ../out/gcc-debug/src/transport/tcp/flavours/TCPNoCongestionControl.o ../out/gcc-debug/src/transport/tcp/flavours/TCPReno.o ../out/gcc-debug/src/transport/tcp/flavours/TCPTahoe.o ../out/gcc-debug/src/transport/tcp/flavours/TCPTahoeRenoFamily.o ../out/gcc-debug/src/transport/tcp/queues/TCPByteStreamRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPByteStreamSendQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPMsgBasedRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPMsgBasedSendQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPVirtualDataRcvQueue.o ../out/gcc-debug/src/transport/tcp/queues/TCPVirtualDataSendQueue.o ../out/gcc-debug/src/transport/tcp_common/TCPSegment.o ../out/gcc-debug/src/transport/tcp_common/TCPSpoof.o ../out/gcc-debug/src/transport/udp/UDP.o ../out/gcc-debug/src/util/common.o ../out/gcc-debug/src/util/DCTDump.o ../out/gcc-debug/src/util/Delayer.o ../out/gcc-debug/src/util/int128.o ../out/gcc-debug/src/util/Macho.o ../out/gcc-debug/src/util/MessageChecker.o ../out/gcc-debug/src/util/NetAnimTrace.o ../out/gcc-debug/src/util/opp_utils.o ../out/gcc-debug/src/util/OrdinalBasedDropper.o ../out/gcc-debug/src/util/OrdinalBasedDuplicator.o ../out/gcc-debug/src/util/PacketDump.o ../out/gcc-debug/src/util/PatternMatcher.o ../out/gcc-debug/src/util/PcapDump.o ../out/gcc-debug/src/util/PcapRecorder.o ../out/gcc-debug/src/util/TCPDump.o ../out/gcc-debug/src/util/ThruputMeter.o ../out/gcc-debug/src/util/ThruputMeteringChannel.o ../out/gcc-debug/src/util/uint128.o ../out/gcc-debug/src/util/XMLUtils.o ../out/gcc-debug/src/util/asn/ASNTypes.o ../out/gcc-debug/src/util/asn/PerDecoder.o ../out/gcc-debug/src/util/asn/PerEncoder.o ../out/gcc-debug/src/util/gateway/Gateway.o ../out/gcc-debug/src/util/gateway/GatewayTable.o ../out/gcc-debug/src/util/headerserializers/TCPIPchecksum.o ../out/gcc-debug/src/util/headerserializers/4gsim/DiameterSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/GTPSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/MACSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/NASSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/PDCPSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/RLCSerializer.o ../out/gcc-debug/src/util/headerserializers/4gsim/RRCSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/ICMPSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/IGMPSerializer.o ../out/gcc-debug/src/util/headerserializers/ipv4/IPv4Serializer.o ../out/gcc-debug/src/util/headerserializers/sctp/SCTPSerializer.o ../out/gcc-debug/src/util/headerserializers/tcp/TCPSerializer.o ../out/gcc-debug/src/util/headerserializers/udp/UDPSerializer.o ../out/gcc-debug/src/util/subscriber/BearerContext.o ../out/gcc-debug/src/util/subscriber/LTEUtils.o ../out/gcc-debug/src/util/subscriber/PDNConnection.o ../out/gcc-debug/src/util/subscriber/Subscriber.o ../out/gcc-debug/src/util/subscriber/SubscriberTable.o ../out/gcc-debug/src/world/annotations/AnnotationDummy.o ../out/gcc-debug/src/world/annotations/AnnotationManager.o ../out/gcc-debug/src/world/obstacles/Obstacle.o ../out/gcc-debug/src/world/obstacles/ObstacleControl.o ../out/gcc-debug/src/world/powercontrol/PowerControlManager.o ../out/gcc-debug/src/world/radio/ChannelAccess.o ../out/gcc-debug/src/world/radio/ChannelControl.o ../out/gcc-debug/src/world/scenario/ScenarioManager.o ../out/gcc-debug/src/applications/diameter/DiameterMessage_m.o ../out/gcc-debug/src/applications/ethernet/EtherApp_m.o ../out/gcc-debug/src/applications/nas/NASMessage_m.o ../out/gcc-debug/src/applications/pingapp/PingPayload_m.o ../out/gcc-debug/src/applications/s1ap/S1APControlInfo_m.o ../out/gcc-debug/src/applications/tcpapp/GenericAppMsg_m.o ../out/gcc-debug/src/base/ByteArray_m.o ../out/gcc-debug/src/base/ByteArrayMessage_m.o ../out/gcc-debug/src/linklayer/contract/Ieee802Ctrl_m.o ../out/gcc-debug/src/linklayer/contract/PhyControlInfo_m.o ../out/gcc-debug/src/linklayer/ethernet/EtherFrame_m.o ../out/gcc-debug/src/linklayer/ext/ExtFrame_m.o ../out/gcc-debug/src/linklayer/ieee80211/mac/Ieee80211Frame_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/ETXPacket_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211MgmtFrames_m.o ../out/gcc-debug/src/linklayer/ieee80211/mgmt/Ieee80211Primitives_m.o ../out/gcc-debug/src/linklayer/lte/LTEControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/LTESchedulingInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/HARQControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/MACControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/mac/MACMessage_m.o ../out/gcc-debug/src/linklayer/lte/pdcp/PDCPMessage_m.o ../out/gcc-debug/src/linklayer/lte/phy/LTEFrame_m.o ../out/gcc-debug/src/linklayer/lte/phy/LTEPhyControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/rlc/RLCMessage_m.o ../out/gcc-debug/src/linklayer/lte/rrc/RRCControlInfo_m.o ../out/gcc-debug/src/linklayer/lte/rrc/message/RRCMessage_m.o ../out/gcc-debug/src/linklayer/ppp/PPPFrame_m.o ../out/gcc-debug/src/linklayer/radio/AirFrame_m.o ../out/gcc-debug/src/linklayer/radio/Radio80211aControlInfo_m.o ../out/gcc-debug/src/networklayer/arp/ARPPacket_m.o ../out/gcc-debug/src/networklayer/contract/IPProtocolId_m.o ../out/gcc-debug/src/networklayer/contract/IPv4ControlInfo_m.o ../out/gcc-debug/src/networklayer/contract/IPv6ControlInfo_m.o ../out/gcc-debug/src/networklayer/gtp/GTPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/ICMPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/IGMPMessage_m.o ../out/gcc-debug/src/networklayer/ipv4/IPv4Datagram_m.o ../out/gcc-debug/src/transport/contract/SCTPCommand_m.o ../out/gcc-debug/src/transport/contract/TCPCommand_m.o ../out/gcc-debug/src/transport/contract/UDPControlInfo_m.o ../out/gcc-debug/src/transport/sctp/SCTPMessage_m.o ../out/gcc-debug/src/transport/tcp_common/TCPSegment_m.o ../out/gcc-debug/src/transport/udp/UDPPacket_m.o ../out/gcc-debug/src/world/powercontrol/PowerControlMessages_m.o
文件已添加
文件已添加
...@@ -34,35 +34,39 @@ LTEConfig::LTEConfig() { ...@@ -34,35 +34,39 @@ LTEConfig::LTEConfig() {
prachCfgIndex = 0; prachCfgIndex = 0;
prachFreqOff = 0; prachFreqOff = 0;
preambleFmt = 0; preambleFmt = 0;
raSt = -1;
transMode = FDD_MODE; transMode = FDD_MODE;
preambleIndex = 0; preambleIndex = 0;
prachMaskIndex = -1; prachMaskIndex = -1;
} }
void LTEConfig::initialize() { void LTEConfig::initialize(int stage) {
// TODO - Generated method body // TODO - Generated method body
const char *fileName = par("configFile"); if (stage == 4) {
if (fileName == NULL || (!strcmp(fileName, ""))) nb = NotificationBoardAccess().get();
error("LTEConfig: Error reading configuration from file %s", fileName); lteSched = LTESchedulerAccess().get();
this->loadConfigFromXML(fileName);
const char *fileName = par("configFile");
symbNumber = 7; if (fileName == NULL || (!strcmp(fileName, "")))
error("LTEConfig: Error reading configuration from file %s", fileName);
WATCH(dlBandwith); this->loadConfigFromXML(fileName);
WATCH(phichDuration);
WATCH(phichResource); symbNumber = 7;
WATCH(symbNumber);
WATCH(nrOfRAPreambles); WATCH(dlBandwith);
WATCH(sizeOfRAPreamblesGroupA); WATCH(phichDuration);
WATCH(preambleTransMax); WATCH(phichResource);
WATCH(raRespWdwSize); WATCH(symbNumber);
WATCH(macContResolTimer); WATCH(nrOfRAPreambles);
WATCH(maxHARQMsg3Tx); WATCH(sizeOfRAPreamblesGroupA);
WATCH(preambleFmt); WATCH(preambleTransMax);
WATCH(prachCfgIndex); WATCH(raRespWdwSize);
WATCH(prachFreqOff); WATCH(macContResolTimer);
WATCH(maxHARQMsg3Tx);
WATCH(preambleFmt);
WATCH(prachCfgIndex);
WATCH(prachFreqOff);
}
} }
void LTEConfig::handleMessage(cMessage *msg) { void LTEConfig::handleMessage(cMessage *msg) {
......
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
#include <omnetpp.h> #include <omnetpp.h>
#include "RRCClassDefinitions.h" #include "RRCClassDefinitions.h"
#include "NotificationBoard.h"
#include "LTESchedulerAccess.h"
static const unsigned dlBandwiths[6] = { 6, 15, 25, 50, 75, 100 }; static const unsigned dlBandwiths[6] = { 6, 15, 25, 50, 75, 100 };
static const std::string phichDurations[2] = { "normal", "extended" }; static const std::string phichDurations[2] = { "normal", "extended" };
...@@ -29,16 +31,12 @@ static const unsigned preambleTransMaxs[11] = { 3, 4, 5, 6, 7, 8, 10, 20, 50, 10 ...@@ -29,16 +31,12 @@ static const unsigned preambleTransMaxs[11] = { 3, 4, 5, 6, 7, 8, 10, 20, 50, 10
static const unsigned raRespWdwSizes[8] = { 2, 3, 4, 5, 6, 7, 8, 10 }; static const unsigned raRespWdwSizes[8] = { 2, 3, 4, 5, 6, 7, 8, 10 };
static const unsigned macContResolTimers[8] = { 8, 16, 24, 32, 40, 48, 56, 64 }; static const unsigned macContResolTimers[8] = { 8, 16, 24, 32, 40, 48, 56, 64 };
static const unsigned maxHARQMsg3Txs[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; static const unsigned maxHARQMsg3Txs[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
static const int prachCfgIndex0TTIs[1] = { 1 };
#define TDD_MODE 0 #define TDD_MODE 0
#define FDD_MODE 1 #define FDD_MODE 1
//struct LTEResource { class LTEConfig : public cSimpleModule, public INotifiable {
// int msgId;
// int prbId;
//};
class LTEConfig : public cSimpleModule {
private: private:
struct PLMNIdentity { struct PLMNIdentity {
std::string mcc; std::string mcc;
...@@ -65,15 +63,20 @@ private: ...@@ -65,15 +63,20 @@ private:
unsigned preambleIndex; unsigned preambleIndex;
int prachMaskIndex; int prachMaskIndex;
int raSt; LTEScheduler *lteSched;
NotificationBoard *nb;
unsigned find(double value, const double *array, unsigned size); unsigned find(double value, const double *array, unsigned size);
unsigned find(unsigned value, const unsigned *array, unsigned size); unsigned find(unsigned value, const unsigned *array, unsigned size);
unsigned find(std::string value, const std::string *array, unsigned size); unsigned find(std::string value, const std::string *array, unsigned size);
void loadConfigFromXML(const char *filename); void loadConfigFromXML(const char *filename);
virtual void receiveChangeNotification(int category, const cPolymorphic *details) {}
protected: protected:
virtual void initialize(); virtual int numInitStages() const { return 5; }
virtual void initialize(int stage);
virtual void handleMessage(cMessage *msg); virtual void handleMessage(cMessage *msg);
public: public:
...@@ -101,7 +104,6 @@ public: ...@@ -101,7 +104,6 @@ public:
char *getCellId() { return cellId; } char *getCellId() { return cellId; }
unsigned getPRACHFreqOffset() { return prachFreqOff; } unsigned getPRACHFreqOffset() { return prachFreqOff; }
unsigned getPRACHCfgIndex() { return prachCfgIndex; } unsigned getPRACHCfgIndex() { return prachCfgIndex; }
int getRAState() { return raSt; }
bool getTransmissionMode() { return transMode; } bool getTransmissionMode() { return transMode; }
unsigned getPreambleIndex() { return preambleIndex; } unsigned getPreambleIndex() { return preambleIndex; }
int getPRACHMaskIndex() { return prachMaskIndex; } int getPRACHMaskIndex() { return prachMaskIndex; }
...@@ -128,7 +130,6 @@ public: ...@@ -128,7 +130,6 @@ public:
void setMaxHARQMsg3Tx(unsigned maxHARQMsg3Tx) { this->maxHARQMsg3Tx = maxHARQMsg3Txs[find(maxHARQMsg3Tx, maxHARQMsg3Txs, 8)]; } void setMaxHARQMsg3Tx(unsigned maxHARQMsg3Tx) { this->maxHARQMsg3Tx = maxHARQMsg3Txs[find(maxHARQMsg3Tx, maxHARQMsg3Txs, 8)]; }
void setPRACHFreqOffset(unsigned prachFreqOff) { if (prachFreqOff < 95) this->prachFreqOff = prachFreqOff; } void setPRACHFreqOffset(unsigned prachFreqOff) { if (prachFreqOff < 95) this->prachFreqOff = prachFreqOff; }
void setPRACHCfgIndex(unsigned prachCfgIndex) { if (prachCfgIndex < 64) this->prachCfgIndex = prachCfgIndex; } void setPRACHCfgIndex(unsigned prachCfgIndex) { if (prachCfgIndex < 64) this->prachCfgIndex = prachCfgIndex; }
void setRAState(int raSt) { this->raSt = raSt; }
// void schedulePRBs(bool direction, int sfnBegin, int sfnPeriod, int sfnSize, int ttiBegin, int ttiPeriod, int ttiSize, int prbBegin, int prbPeriod, int prbSize); // void schedulePRBs(bool direction, int sfnBegin, int sfnPeriod, int sfnSize, int ttiBegin, int ttiPeriod, int ttiSize, int prbBegin, int prbPeriod, int prbSize);
}; };
......
...@@ -27,20 +27,25 @@ enum LTELogicalChannels ...@@ -27,20 +27,25 @@ enum LTELogicalChannels
enum LTETransportChannels enum LTETransportChannels
{ {
ULSCH = 20; SCH_CCCH = 20;
RACH = 21; SCH_DxCH = 21;
DLSCH0 = 22; SCH_RAR = 22;
DLSCH1 = 23; RACH = 23;
BCH = 24; DLSCH0 = 24;
DLSCH1 = 25;
BCH = 26;
} }
enum LTEPhyChannels enum LTEPhyChannels
{ {
PRACH = 30; PRACH = 30;
PDSCH = 31; PDSCH = 31;
PUSCH = 32; PDSCH0 = 32;
PHICH = 33; PDSCH1 = 33;
PBCH = 34; PUSCH = 34;
PHICH = 35;
PBCH = 36;
PDCCH = 37;
}; };
enum LTEDirection enum LTEDirection
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
// along with this program. If not, see http://www.gnu.org/licenses/. // along with this program. If not, see http://www.gnu.org/licenses/.
// //
#include <algorithm>
#include "LTEScheduler.h" #include "LTEScheduler.h"
Define_Module(LTEScheduler); Define_Module(LTEScheduler);
...@@ -30,14 +31,15 @@ LTEScheduler::LTEScheduler() { ...@@ -30,14 +31,15 @@ LTEScheduler::LTEScheduler() {
} }
LTEScheduler::~LTEScheduler() { LTEScheduler::~LTEScheduler() {
// TODO Auto-generated destructor stub // TODO Auto-generated destructor stub
erase(0, schedulings.size());
} }
void LTEScheduler::initialize() { void LTEScheduler::initialize() {
// TODO - Generated method body // TODO - Generated method body
WATCH(tti); WATCH(tti);
WATCH(sfn); WATCH(sfn);
WATCH_VECTOR(schedulings); WATCH_PTRVECTOR(schedulings);
} }
void LTEScheduler::handleMessage(cMessage *msg) { void LTEScheduler::handleMessage(cMessage *msg) {
...@@ -51,13 +53,14 @@ void LTEScheduler::incrementTTI() { ...@@ -51,13 +53,14 @@ void LTEScheduler::incrementTTI() {
// also clean scheduled messages which have expired // also clean scheduled messages which have expired
tti = 0; tti = 0;
sfn++; sfn++;
// EV << "LTE-Sched: Cleaning expired UL and DL schedulings.\n"; // EV << "LTE-Sched: Cleaning expired UL and DL schedulings.\n";
LTESchedulings::iterator i = schedulings.begin(); LTESchedulings::iterator i = schedulings.begin();
LTESchedulings::iterator last = schedulings.end(); LTESchedulings::iterator last = schedulings.end();
for (;i != last;) { for (;i != last;) {
if ((*i).getSfnEnd() < sfn) { if ((*i)->getSfnEnd() < sfn) {
// EV << "LTE-Sched: Found one expired scheduling. Cleaning it.\n"; // EV << "LTE-Sched: Found one expired scheduling. Cleaning it.\n";
// delete (*i); delete (*i);
i = schedulings.erase(i); i = schedulings.erase(i);
} else } else
++i; ++i;
...@@ -99,33 +102,34 @@ bool LTEScheduler::scheduleMessage(bool direction, int msgId, unsigned sfnBegin, ...@@ -99,33 +102,34 @@ bool LTEScheduler::scheduleMessage(bool direction, int msgId, unsigned sfnBegin,
// TODO check also PRBs // TODO check also PRBs
for (unsigned i = 0; i < schedulings.size(); i++) { for (unsigned i = 0; i < schedulings.size(); i++) {
LTESchedulingInfo schInfo = schedulings.at(i); LTESchedulingInfo *schInfo = schedulings.at(i);
bool checkTTI = false; bool checkTTI = false;
// first check direction // first check direction
if (direction != schInfo.getDirection()) { if (direction != schInfo->getDirection()) {
// the direction of incoming and current scheduling are not the same // the direction of incoming and current scheduling are not the same
continue; continue;
} }
// second check sfn overlap // second check sfn overlap
if (sfnBegin > schInfo.getSfnEnd()) { if (sfnBegin > schInfo->getSfnEnd()) {
// the incoming scheduling info is after the current scheduling info in the queue // the incoming scheduling info is after the current scheduling info in the queue
continue; continue;
} else if (sfnEnd == UINT32_MAX && schInfo.getSfnEnd() == UINT32_MAX) { } else if (sfnEnd == UINT32_MAX && schInfo->getSfnEnd() == UINT32_MAX) {
// incoming and current scheduling info are unlimited, so they are bound to overlap at some point // incoming and current scheduling info are unlimited, so they are bound to overlap at some point
checkTTI = true; checkTTI = true;
} else { } else {
// else find the least common multiplier to see if at some point incoming and current scheduling overlap // else find the least common multiplier to see if at some point incoming and current scheduling overlap
unsigned overlap = lcm(sfnPeriod, schInfo.getSfnPeriod()); unsigned step = lcm(sfnPeriod, schInfo->getSfnPeriod());
while (overlap <= sfnEnd && overlap <= schInfo.getSfnEnd()) { unsigned overlap = step;
while (overlap <= sfnEnd && overlap <= schInfo->getSfnEnd()) {
// must not go over one of the end limit (incoming or current scheduling) // must not go over one of the end limit (incoming or current scheduling)
if ((overlap >= sfnBegin && overlap <= sfnEnd) && (overlap >= schInfo.getSfnBegin() && (overlap <= schInfo.getSfnEnd()))) { if ((overlap >= sfnBegin && overlap <= sfnEnd) && (overlap >= schInfo->getSfnBegin() && (overlap <= schInfo->getSfnEnd()))) {
// found the overlap // found the overlap
checkTTI = true; checkTTI = true;
break; break;
} }
overlap += overlap; overlap += step;
} }
// if no overlap was found checkTTI will remain false // if no overlap was found checkTTI will remain false
} }
...@@ -133,48 +137,95 @@ bool LTEScheduler::scheduleMessage(bool direction, int msgId, unsigned sfnBegin, ...@@ -133,48 +137,95 @@ bool LTEScheduler::scheduleMessage(bool direction, int msgId, unsigned sfnBegin,
// third check tti overlap // third check tti overlap
if (checkTTI) { if (checkTTI) {
for (unsigned j = 0; j < ttiSize; j++) { for (unsigned j = 0; j < ttiSize; j++) {
for (unsigned k = 0; k < schInfo.getTtisArraySize(); k++) { for (unsigned k = 0; k < schInfo->getTtisArraySize(); k++) {
// if at least one tti from incoming and current scheduling is overlapping, no scheduling is possible // if at least one tti from incoming and current scheduling is overlapping, no scheduling is possible
// and no scheduling will be added to the queue // and no scheduling will be added to the queue
if (tti[j] == schInfo.getTtis(k)) if (tti[j] == schInfo->getTtis(k))
return false; return false;
} }
} }
} }
} }
LTESchedulingInfo newSchedInfo; LTESchedulingInfo *newSchedInfo = new LTESchedulingInfo();
newSchedInfo.setDirection(direction); newSchedInfo->setDirection(direction);
newSchedInfo.setMsgId(msgId); newSchedInfo->setMsgId(msgId);
newSchedInfo.setSfnBegin(sfnBegin); newSchedInfo->setSfnBegin(sfnBegin);
newSchedInfo.setSfnPeriod(sfnPeriod); newSchedInfo->setSfnPeriod(sfnPeriod);
newSchedInfo.setSfnEnd(sfnEnd); newSchedInfo->setSfnEnd(sfnEnd);
for (unsigned i = 0; i < ttiSize; i++) { for (unsigned i = 0; i < ttiSize; i++) {
newSchedInfo.pushTti(tti[i]); newSchedInfo->pushTti(tti[i]);
} }
newSchedInfo.setPrbBegin(prbBegin); newSchedInfo->setPrbBegin(prbBegin);
newSchedInfo.setPrbSize(prbSize); newSchedInfo->setPrbSize(prbSize);
schedulings.push_back(newSchedInfo); schedulings.push_back(newSchedInfo);
return true; return true;
} }
int LTEScheduler::scheduleMessage(bool direction, unsigned sfnBegin, unsigned sfnEnd) {
int msgId = msgIds++;
for (unsigned i = sfnBegin; i <= sfnEnd; i++) {
for (int j = 0; j < 10; j++) {
int ttis[1];
ttis[0] = j;
if (scheduleMessage(direction, msgId, i, 1, i, ttis, 1, 0, 0))
return msgId;
}
}
return -1;
}
int LTEScheduler::getMessageId(bool direction) { int LTEScheduler::getMessageId(bool direction) {
// TODO check also prbSize and prbBegin // TODO check also prbSize and prbBegin
// EV << "LTE-Sched: Retrieving message id during SFN = " << sfn << " and TTI = " << tti << ".\n";
for (unsigned i = 0; i < schedulings.size(); i++) { for (unsigned i = 0; i < schedulings.size(); i++) {
LTESchedulingInfo schInfo = schedulings.at(i); LTESchedulingInfo *schInfo = schedulings.at(i);
if (direction == schInfo.getDirection() && sfn % schInfo.getSfnPeriod() == 0) { if ((direction == schInfo->getDirection()) && (sfn % schInfo->getSfnPeriod() == 0)
// EV << "LTE-Sched: SFN period = " << schInfo.getSfnPeriod() << " matches for message id = " << schInfo.getMsgId() << ".\n"; && (sfn >= schInfo->getSfnBegin()) && (sfn <= schInfo->getSfnEnd())) {
for (unsigned j = 0; j < schInfo.getTtisArraySize(); j++) { // EV << "LTE-Sched: SFN period = " << schInfo->getSfnPeriod() << " matches for message id = " << schInfo->getMsgId() << ".\n";
if (tti == schInfo.getTtis(j)) { for (unsigned j = 0; j < schInfo->getTtisArraySize(); j++) {
// EV << "LTE-Sched: TTI = " << schInfo.getTtis(j) << " matches for message id = " << schInfo.getMsgId() << ".\n"; if (tti == schInfo->getTtis(j)) {
return schInfo.getMsgId(); // EV << "LTE-Sched: TTI = " << schInfo->getTtis(j) << " matches for message id = " << schInfo->getMsgId() << ".\n";
return schInfo->getMsgId();
} }
} }
} }
} }
return -1; return -1;
}
int LTEScheduler::getMessageId(bool direction, unsigned tti) {
// TODO check also prbSize and prbBegin
// EV << "LTE-Sched: Retrieving message id during SFN = " << sfn << " and TTI = " << tti << ".\n";
for (unsigned i = 0; i < schedulings.size(); i++) {
LTESchedulingInfo *schInfo = schedulings.at(i);
if ((direction == schInfo->getDirection()) && (sfn % schInfo->getSfnPeriod() == 0)
&& (sfn >= schInfo->getSfnBegin()) && (sfn <= schInfo->getSfnEnd())) {
// EV << "LTE-Sched: SFN period = " << schInfo->getSfnPeriod() << " matches for message id = " << schInfo->getMsgId() << ".\n";
for (unsigned j = 0; j < schInfo->getTtisArraySize(); j++) {
if (tti == schInfo->getTtis(j)) {
// EV << "LTE-Sched: TTI = " << schInfo->getTtis(j) << " matches for message id = " << schInfo->getMsgId() << ".\n";
return schInfo->getMsgId();
}
}
}
}
return -1;
}
void LTEScheduler::erase(unsigned start, unsigned end) {
LTESchedulings::iterator first = schedulings.begin() + start;
LTESchedulings::iterator last = schedulings.begin() + end;
LTESchedulings::iterator i = first;
for (;i != last; ++i) {
delete *i;
}
schedulings.erase(first, last);
} }
...@@ -21,17 +21,19 @@ ...@@ -21,17 +21,19 @@
class LTEScheduler : public cSimpleModule { class LTEScheduler : public cSimpleModule {
private: private:
unsigned short tti; unsigned tti;
unsigned short sfn; unsigned sfn;
typedef std::vector<LTESchedulingInfo> LTESchedulings; typedef std::vector<LTESchedulingInfo*> LTESchedulings;
LTESchedulings schedulings; LTESchedulings schedulings;
int msgIds; int msgIds;
unsigned gcd(unsigned a, unsigned b); unsigned gcd(unsigned a, unsigned b);
unsigned lcm(unsigned a, unsigned b); unsigned lcm(unsigned a, unsigned b);
void erase(unsigned start, unsigned end);
public: public:
LTEScheduler(); LTEScheduler();
virtual ~LTEScheduler(); virtual ~LTEScheduler();
...@@ -39,15 +41,18 @@ public: ...@@ -39,15 +41,18 @@ public:
virtual void initialize(); virtual void initialize();
virtual void handleMessage(cMessage *msg); virtual void handleMessage(cMessage *msg);
unsigned short getTTI() { return tti; } unsigned getTTI() { return tti; }
unsigned short getSFN() { return sfn; } unsigned getSFN() { return sfn; }
int generateMessageId() { return msgIds++; } int generateMessageId() { return msgIds++; }
int getMessageId(bool direction); int getMessageId(bool direction);
int getMessageId(bool direction, unsigned tti);
// void setSFN(unsigned short sfn) { this->sfn = sfn; } // void setSFN(unsigned short sfn) { this->sfn = sfn; }
void incrementTTI(); void incrementTTI();
// void addFixedScheduling(bool direction, int msgId, unsigned sfnPeriod, const int *tti, unsigned ttiSize, int prbId, int prbSize); // void addFixedScheduling(bool direction, int msgId, unsigned sfnPeriod, const int *tti, unsigned ttiSize, int prbId, int prbSize);
bool scheduleMessage(bool direction, int msgId, unsigned sfnBegin, unsigned sfnPeriod, unsigned sfnEnd, const int *tti, unsigned ttiSize, int prbBegin, int prbSize); bool scheduleMessage(bool direction, int msgId, unsigned sfnBegin, unsigned sfnPeriod, unsigned sfnEnd, const int *tti, unsigned ttiSize, int prbBegin, int prbSize);
int scheduleMessage(bool direction, unsigned sfnBegin, unsigned sfnEnd);
}; };
#endif /* LTESCHEDULER_H_ */ #endif /* LTESCHEDULER_H_ */
...@@ -53,7 +53,8 @@ public: ...@@ -53,7 +53,8 @@ public:
*/ */
void pushTti(int tti) { ttis.push_back(tti); } void pushTti(int tti) { ttis.push_back(tti); }
virtual std::string info() const; virtual std::string info() const;
}; };
#endif /* LTESCHEDULINGINFO_H_ */ #endif /* LTESCHEDULINGINFO_H_ */
...@@ -17,7 +17,7 @@ cplusplus {{ ...@@ -17,7 +17,7 @@ cplusplus {{
#define MIB_MSG_ID 0 #define MIB_MSG_ID 0
#define SIB1_MSG_ID 1 #define SIB1_MSG_ID 1
#define SIB2_MSG_ID 2 #define SIB2_MSG_ID 2
#define RA_MSG_ID 3 #define RAP_MSG_ID 3
#define UL_SCHEDULING 0 #define UL_SCHEDULING 0
#define DL_SCHEDULING 1 #define DL_SCHEDULING 1
......
...@@ -31,7 +31,11 @@ MAC::MAC() { ...@@ -31,7 +31,11 @@ MAC::MAC() {
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
// ttiId = 0; // ttiId = 0;
// ueId = 0; // ueId = 0;
// bcchMsg = NULL; // bcchMsg = NULL;
rarLimit = 0;
raFSM = cFSM("fsm-RA");
raFSM.setState(PROC_NULL);
} }
MAC::~MAC() { MAC::~MAC() {
...@@ -91,26 +95,38 @@ void MAC::handleLowerMessage(cMessage *msg) { ...@@ -91,26 +95,38 @@ void MAC::handleLowerMessage(cMessage *msg) {
sendUp(msg, BCCH0); sendUp(msg, BCCH0);
break; break;
} }
case RACH: { case RACH: {
RandomAccessPreamble *rap = check_and_cast<RandomAccessPreamble*>(msg); RandomAccessPreamble *rap = check_and_cast<RandomAccessPreamble*>(msg);
MACSubHeaderRar *header = MACUtils().createHeaderRar(true, rap->getRapid());
// MACServiceDataUnit *sdu = MACUtils().createRAR(0, 0, uniform(0, 65535)); /* TODO UL grant split into bits */ int msgId = lteSched->scheduleMessage(DL_SCHEDULING, lteSched->getSFN() + 3, lteSched->getSFN() + 3 + lteCfg->getRaRespWdwSize());
// MACProtocolDataUnit *pdu = new MACProtocolDataUnit("RandomAccessResponse"); if (msgId != -1) {
// pdu->pushSubHdr(header); MACProtocolDataUnit *pdu = new MACProtocolDataUnit("RandomAccessResponse");
// pdu->pushSdu(sdu); // MACControlInfo *ctrl = new MACControlInfo();
// rnti = ctrl->getRnti();
// rntiType = ctrl->getRntiType(); MACSubHeaderRar *header = MACUtils().createHeaderRar(true, rap->getRapid());
// ueId = ctrl->getUeId(); MACRandomAccessResponse *rar = MACUtils().createRAR(0, 0, uniform(0, 65535)); /* TODO UL grant split into bits */
//// schTtid += TTI_VALUE; pdu->pushSubHdr(header);
// sendDown(pdu, DLSCH); pdu->pushSdu(rar);
break; pdu->setKind(msgId);
}
case DLSCH0: { // ctrl->setChannel(DLSCH1);
if (tb->getRntiType() == SiRnti) { // ctrl->setRnti(rap->getRnti());
// TODO redundancy version // ctrl->setRntiType(rap->getRntiType());
addHarqInformation(tb, HARQ_BCAST_PROC_ID); // ctrl->setUeId(rap->getUeId());
dlEntity->indicateDownlinkAssignment(tb);
sendDown(DLSCH1, rap->getRntiType(), rap->getRnti(), rap->getUeId(), pdu);
// pdu->setControlInfo(ctrl);
// queue[pdu->getKind()] = pdu;
}
break;
} }
case DLSCH0: {
if (tb->getRntiType() == SiRnti) {
// TODO redundancy version
addHarqInformation(tb, HARQ_BCAST_PROC_ID);
dlEntity->indicateDownlinkAssignment(tb);
}
// if (ueId == ctrl->getUeId()) { // if (ueId == ctrl->getUeId()) {
// MACProtocolDataUnit *pdu = check_and_cast<MACProtocolDataUnit*>(msg); // MACProtocolDataUnit *pdu = check_and_cast<MACProtocolDataUnit*>(msg);
// if (ctrl->getRntiType() == RaRnti) { // if (ctrl->getRntiType() == RaRnti) {
...@@ -123,8 +139,20 @@ void MAC::handleLowerMessage(cMessage *msg) { ...@@ -123,8 +139,20 @@ void MAC::handleLowerMessage(cMessage *msg) {
// EV << "LTE-MAC: Message received for incorrect UeId = " << ctrl->getUeId() << ". Discarding message.\n"; // EV << "LTE-MAC: Message received for incorrect UeId = " << ctrl->getUeId() << ". Discarding message.\n";
// } // }
// nb->fireChangeNotification(NF_RAND_ACCESS_COMPL, NULL); // nb->fireChangeNotification(NF_RAND_ACCESS_COMPL, NULL);
break; break;
} }
case DLSCH1: {
MACProtocolDataUnit *pdu = check_and_cast<MACProtocolDataUnit*>(tb->decapsulate());
DCIFormat1A *dci = check_and_cast<DCIFormat1A*>(tb->removeControlInfo());
pdu->setControlInfo(dci);
if (tb->getRntiType() == RaRnti) {
queueUp.push_back(pdu);
performRAStateTransition(ReceiveResp);
}
break;
}
// case ULSCH: { // case ULSCH: {
// MACProtocolDataUnit *pdu = check_and_cast<MACProtocolDataUnit*>(msg); // MACProtocolDataUnit *pdu = check_and_cast<MACProtocolDataUnit*>(msg);
// MACSubHeaderUlDl *header = check_and_cast<MACSubHeaderUlDl*>(pdu->getSubHdrs(0)); // MACSubHeaderUlDl *header = check_and_cast<MACSubHeaderUlDl*>(pdu->getSubHdrs(0));
...@@ -148,31 +176,50 @@ void MAC::handleUpperMessage(cMessage *msg) { ...@@ -148,31 +176,50 @@ void MAC::handleUpperMessage(cMessage *msg) {
LTEControlInfo *lteCtrl = check_and_cast<LTEControlInfo*>(msg->removeControlInfo()); LTEControlInfo *lteCtrl = check_and_cast<LTEControlInfo*>(msg->removeControlInfo());
MACProtocolDataUnit *pdu = new MACProtocolDataUnit(msg->getName()); MACProtocolDataUnit *pdu = new MACProtocolDataUnit(msg->getName());
MACControlInfo *ctrl = new MACControlInfo(); pdu->setKind(msg->getKind());
pdu->encapsulate(PK(msg));
LTEControlInfo *ctrl = new LTEControlInfo();
switch(lteCtrl->getChannel()) { switch(lteCtrl->getChannel()) {
case BCCH0: { case BCCH0: {
pdu->encapsulate(PK(msg)); // pdu->encapsulate(PK(msg));
ctrl->setRnti(NoRnti); // ctrl->setRnti(NoRnti);
ctrl->setChannel(BCH); // ctrl->setChannel(BCH);
// MACControlInfo *ctrl = check_and_cast<MACControlInfo*>(pdu->getControlInfo());
sendDown(BCH, NoRnti, 0, this->getParentModule()->getId(), pdu);
break; break;
} }
case BCCH1: { case BCCH1: {
pdu->encapsulate(PK(msg)); // pdu->encapsulate(PK(msg));
ctrl->setRntiType(SiRnti); // ctrl->setRntiType(SiRnti);
ctrl->setRnti(65535); // ctrl->setRnti(65535);
ctrl->setChannel(DLSCH0); // ctrl->setChannel(DLSCH0);
sendDown(DLSCH0, SiRnti, 65535, this->getParentModule()->getId(), pdu);
break;
}
case ULCCCH: {
// pdu->encapsulate(PK(msg));
// ctrl->setRntiType(CRnti);
ctrl->setChannel(SCH_CCCH);
pdu->setControlInfo(ctrl);
queueUp.push_back(pdu);
if (raFSM.getState() == PROC_NULL)
performRAStateTransition(InitializeProc);
break; break;
} }
default: default:
break; break;
} }
pdu->setKind(msg->getKind()); // pdu->setKind(msg->getKind());
pdu->setControlInfo(ctrl); // pdu->setControlInfo(ctrl);
//
if (pdu->getKind() != -1) { // already scheduled messages // if (pdu->getKind() != -1) { // already scheduled messages
queue[pdu->getKind()] = pdu; // queue[pdu->getKind()] = pdu;
} // } else {
// if (ctrl->getChannel() == ULSCH_CCCH) { // check if
//
// }
// }
// scheduler->addMACProtocolDataUnit(pdu); // scheduler->addMACProtocolDataUnit(pdu);
...@@ -190,6 +237,25 @@ void MAC::handleUpperMessage(cMessage *msg) { ...@@ -190,6 +237,25 @@ void MAC::handleUpperMessage(cMessage *msg) {
// entity->pushMsg3(pdu); // entity->pushMsg3(pdu);
} }
void MAC::sendDown(int channel, unsigned rntiType, unsigned rnti, unsigned ueId, MACProtocolDataUnit *pdu) {
// TransportBlock *tb = new TransportBlock();
// tb->setChannel(channel);
// tb->setRntiType(rntiType);
// tb->setRnti(rnti);
// tb->setUeId(ueId);
// tb->setName(pdu->getName());
// tb->encapsulate(pdu);
// tb->setKind(pdu->getKind());
// queueDown[tb->getKind()] = tb;
MACControlInfo *ctrl = new MACControlInfo();
ctrl->setChannel(channel);
ctrl->setRnti(rnti);
ctrl->setRntiType(rntiType);
ctrl->setUeId(ueId);
pdu->setControlInfo(ctrl);
this->send(pdu, gate("lowerLayerOut"));
}
//void MAC::sendDown(cMessage *msg, int channelNumber, unsigned rntiType, unsigned short rnti) { //void MAC::sendDown(cMessage *msg, int channelNumber, unsigned rntiType, unsigned short rnti) {
// TransportBlock *tb = new TransportBlock(); // TransportBlock *tb = new TransportBlock();
// tb->setName(msg->getName()); // tb->setName(msg->getName());
...@@ -213,24 +279,301 @@ void MAC::handleUpperMessage(cMessage *msg) { ...@@ -213,24 +279,301 @@ void MAC::handleUpperMessage(cMessage *msg) {
//} //}
const char *MAC::channelName(int channelNumber) { const char *MAC::channelName(int channelNumber) {
#define CASE(x) case x: s=#x; break //#define CASE(x) case x: s=#x; break
const char *s = "unknown"; // const char *s = "unknown";
switch (channelNumber) { // switch (channelNumber) {
CASE(ULSCH); // CASE(ULSCH);
CASE(RACH); // CASE(RACH);
CASE(DLSCH0); // CASE(DLSCH0);
} // }
return s; // return s;
#undef CASE //#undef CASE
} }
void MAC::sendUp(cMessage *msg, int channelNumber) { void MAC::sendUp(cMessage *msg, int channel) {
LTEControlInfo *ctrl = new LTEControlInfo(); LTEControlInfo *ctrl = new LTEControlInfo();
ctrl->setChannel(channelNumber); ctrl->setChannel(channel);
msg->setControlInfo(ctrl); msg->setControlInfo(ctrl);
this->send(msg, gate("upperLayerOut")); this->send(msg, gate("upperLayerOut"));
} }
void MAC::performRAStateTransition(RAEvent event) {
int oldState = raFSM.getState();
switch(oldState) {
case PROC_NULL:
switch(event) {
case InitializeProc: {
FSM_Goto(raFSM, PROC_INITIALIZATION);
break;
}
default:
EV << "LTE-MAC: Received unexpected RA event.\n";
break;
}
break;
case PROC_INITIALIZATION:
switch(event) {
case SelectRes: {
FSM_Goto(raFSM, RES_SELECTION);
break;
}
default:
EV << "LTE-MAC: Received unexpected RA event.\n";
break;
}
break;
case RES_SELECTION:
switch(event) {
case TransmitPrbl: {
FSM_Goto(raFSM, PRBL_TRANSMISSION);
break;
}
default:
EV << "LTE-MAC: Received unexpected RA event.\n";
break;
}
break;
case PRBL_TRANSMISSION:
switch(event) {
case ReceiveResp: {
FSM_Goto(raFSM, RESP_RECEPTION);
break;
}
default:
EV << "LTE-MAC: Received unexpected RA event.\n";
break;
}
break;
case RESP_RECEPTION:
switch(event) {
case CorrectResp: {
FSM_Goto(raFSM, RESP_CORRECT);
break;
}
default:
EV << "LTE-MAC: Received unexpected RA event.\n";
break;
}
break;
case RESP_CORRECT:
switch(event) {
case CorrectProc: {
FSM_Goto(raFSM, PROC_DONE);
break;
}
case IncorrectProc: {
FSM_Goto(raFSM, PROC_ERROR);
break;
}
default:
EV << "LTE-MAC: Received unexpected RA event.\n";
break;
}
break;
default:
EV << "LTE-MAC: Unknown RA state.\n";
break;
}
raStateEntered();
}
void MAC::raStateEntered() {
switch(raFSM.getState()) {
case PROC_INITIALIZATION: {
EV << "LTE-MAC: Random Access Procedure initialization.\n";
msg3Buffer.clear();
preambleTransCount = 1;
backoffParam = 0;
// TODO rest of the table 3GPP TS 36211 Table 5.7.1-2 pag. 32
switch (lteCfg->getPRACHCfgIndex() % 16) {
case 0:
lteSched->scheduleMessage(UL_SCHEDULING, RAP_MSG_ID, 0, 2, UINT32_MAX, prachCfgIndex0TTIs, 1, lteCfg->getPRACHFreqOffset(), 6);
break;
default:
break;
}
performRAStateTransition(SelectRes);
break;
}
case RES_SELECTION: {
EV << "LTE-MAC: Random Access Resource selection.\n";
unsigned prachMaskIndex;
if (lteCfg->getPreambleIndex() != 0 && lteCfg->getPRACHMaskIndex() != -1) {
preambleIndex = lteCfg->getPreambleIndex();
// prachMaskIndex = lteCfg->getPRACHMaskIndex();
} else {
if (msg3Buffer.size() == 0) { // msg3 has not been transmitted
if (lteCfg->getNrOfRAPreambles() != lteCfg->getSizeOfRAPreamblesGroupA()) { // TODO select group B
} else { // select group A
preambleIndex = uniform(0, lteCfg->getSizeOfRAPreamblesGroupA());
prachMaskIndex = 0;
// TODO not sure if this is how PRACH selection is done
if (lteCfg->getTransmissionMode() == TDD_MODE && prachMaskIndex == 0) {
if (lteCfg->getPreambleIndex() != 0) {
// randomly select PRACH from determined subframe
prachIndex = uniform(lteCfg->getPRACHFreqOffset(), lteCfg->getPRACHFreqOffset() + 5);
} else {
// TODO randomly select PRACH from determined subframe and next 2 subframes
prachIndex = uniform(lteCfg->getPRACHFreqOffset(), lteCfg->getPRACHFreqOffset() + 5);
}
} else {
// determine PRACH with PRACH Mask Index
if (prachMaskIndex == 0) {
prachIndex = uniform(lteCfg->getPRACHFreqOffset(), lteCfg->getPRACHFreqOffset() + 5);
} else {
// TODO
}
}
}
} else { // TODO select the same group of Random Access Preambles as for previous transmission
}
}
performRAStateTransition(TransmitPrbl);
break;
}
case PRBL_TRANSMISSION: {
EV << "LTE-MAC: Random Access Preamble transmission.\n";
// TODO preambleInitialReceivedTargetPower = ...
// RAPControlInfo *ctrl = check_and_cast<RAPControlInfo*>(pdu->getControlInfo());
// MACProtocolDataUnit *pdu = new MACProtocolDataUnit();
// pdu->setName("RandomAccessPreamble");
// pdu->setKind(RAP_MSG_ID);
// RandomAccessPreamble *rap = new RandomAccessPreamble("RandomAccessPreamble");
// rap->setChannel(RACH);
// rap->setName(pdu->getName());
// rap->setKind(RAP_MSG_ID);
// rap->setRnti(prachIndex);
// rap->setRntiType(RaRnti);
// rap->setRapid(preambleIndex);
// rap->setAttempt(preambleTransCount);
// rap->setUeId(this->getParentModule()->getId());
// RAPControlInfo *ctrl = new RAPControlInfo();
// ctrl->setRapid(preambleIndex);
// ctrl->setAttempt(preambleTransCount);
// ctrl->setRnti(prachIndex);
// ctrl->setUeId(this->getParentModule()->getId());
// msg->setControlInfo(ctrl);
// queueDown[rap->getKind()] = rap;
cMessage *msg = new cMessage("RAPTransmissionCommand");
RAPControlInfo *rap = new RAPControlInfo();
rap->setChannel(RACH);
rap->setRnti(prachIndex);
rap->setRntiType(RaRnti);
rap->setRapid(preambleIndex);
rap->setAttempt(preambleTransCount);
rap->setUeId(this->getParentModule()->getId());
msg->setControlInfo(rap);
this->send(msg, gate("lowerLayerOut"));
break;
}
case RESP_RECEPTION: {
EV << "LTE-MAC: Random Access Response reception.\n";
MACProtocolDataUnit *pdu = queueUp.back();
MACSubHeaderRar *rar = check_and_cast<MACSubHeaderRar*>(pdu->getSubHdrs(0));
DCIFormat1A *dci = check_and_cast<DCIFormat1A*>(pdu->getControlInfo());
if (dci->getAllocation() == lteSched->getTTI()) {
if (rar->getT() == false) { // is backoff indicator present
backoffParam = rar->getRapidOrBi();
} else
backoffParam = 0;
if (preambleIndex == rar->getRapidOrBi()) {
performRAStateTransition(CorrectResp);
}
}
break;
}
case RESP_CORRECT: {
EV << "LTE-MAC: Random Access Response received successfully.\n";
MACProtocolDataUnit *pdu = queueUp.back();
MACRandomAccessResponse *rar = check_and_cast<MACRandomAccessResponse*>(pdu->getSdus(0));
MACSubHeaderRar *header = check_and_cast<MACSubHeaderRar*>(pdu->getSubHdrs(0));
// rars.push_back(rar);
// TODO process Timing Advance Command
// TODO indicate preambleInitialReceivedTargetPower ... to lower layers
// TODO process UL grant and indicate to lower layers
if (lteCfg->getPreambleIndex() != 0) {
performRAStateTransition(CorrectProc);
} else {
unsigned ulGrant = rar->getUlGrant();
unsigned rarNr = 0;
for (unsigned i = 0; i < queueUp.size(); i++) {
MACProtocolDataUnit *pdu = queueUp[i];
MACRandomAccessResponse *queueRar = dynamic_cast<MACRandomAccessResponse*>(pdu->getSdus(0));
if (queueRar) {
rarNr++;
if (ulGrant == queueRar->getUlGrant()) {
// set tempcrnti
}
}
}
if (rarNr == 1) { // first successfully received Random Access Response
bool isCCCHTrans = false;
for (QueueUp::iterator i = queueUp.begin(); i != queueUp.end();) {
LTEControlInfo *ctrl = dynamic_cast<LTEControlInfo*>((*i)->getControlInfo());
if (ctrl && ctrl->getChannel() == SCH_CCCH) {
isCCCHTrans = true;
msg3Buffer[ulGrant] = (*i);
i = queueUp.erase(i);
} else
++i;
}
if (!isCCCHTrans) {
// TODO indicate multiplex and assembly entity to include a C-RNTI MAC control element for
// subsequent transmission
}
}
}
if (lteSched->getSFN() > rarLimit || preambleIndex != header->getRapidOrBi())
performRAStateTransition(IncorrectProc);
else
performRAStateTransition(CorrectProc);
break;
}
case PROC_DONE: {
break;
}
case PROC_ERROR: {
preambleTransCount++;
if (preambleTransCount == lteCfg->getPreambleTransMax() + 1) {
// TODO indicate a random access problem to upper layers
}
// TODO if random access preamble was selected by MAC ...
performRAStateTransition(SelectRes);
break;
}
default:
break;
}
}
void MAC::ulschDataTransfer(int channel, unsigned rnti, unsigned rntiType) {
if (channel == SCH_CCCH || (channel == PDCCH && (rntiType == CRnti || rntiType == TempCRnti))) {
}
}
void MAC::receiveChangeNotification(int category, const cPolymorphic *details) { void MAC::receiveChangeNotification(int category, const cPolymorphic *details) {
Enter_Method_Silent(); Enter_Method_Silent();
if (category == NF_PHY_PER_CB) { if (category == NF_PHY_PER_CB) {
...@@ -247,98 +590,101 @@ void MAC::receiveChangeNotification(int category, const cPolymorphic *details) { ...@@ -247,98 +590,101 @@ void MAC::receiveChangeNotification(int category, const cPolymorphic *details) {
// } // }
// } // }
// continue scheduling // continue scheduling
int msgId = -1; // int msgId = -1;
if (!strncmp(this->getParentModule()->getComponentType()->getName(), "ENB", 3)) { // if (!strncmp(this->getParentModule()->getComponentType()->getName(), "ENB", 3)) {
msgId = lteSched->getMessageId(DL_SCHEDULING); // msgId = lteSched->getMessageId(DL_SCHEDULING);
} else { // } else {
msgId = lteSched->getMessageId(UL_SCHEDULING); // msgId = lteSched->getMessageId(UL_SCHEDULING);
} // }
//
if (msgId != -1) { // if (msgId != -1) {
EV << "LTE-MAC: Sending scheduled message with id " << msgId << ".\n"; // EV << "LTE-MAC: Sending scheduled message with id " << msgId << ".\n";
MACProtocolDataUnit *pdu = queue[msgId]; // MACProtocolDataUnit *pdu = queue[msgId];
TransportBlock *tb = new TransportBlock(); // TransportBlock *tb = queueDown[msgId];
if (msgId == RA_MSG_ID) { // if (msgId == RAP_MSG_ID) {
RAPControlInfo *ctrl = check_and_cast<RAPControlInfo*>(pdu->getControlInfo()); // RAPControlInfo *ctrl = check_and_cast<RAPControlInfo*>(pdu->getControlInfo());
RandomAccessPreamble *rap = new RandomAccessPreamble(); // RandomAccessPreamble *rap = new RandomAccessPreamble();
rap->setChannel(RACH); // rap->setChannel(RACH);
rap->setRnti(1 + lteSched->getTTI() + 10 * ctrl->getRnti()); // tb->setRnti(1 + lteSched->getTTI() + 10 * tb->getRnti());
rap->setRntiType(RaRnti); // rap->setRntiType(RaRnti);
rap->setRapid(ctrl->getRapid()); // rap->setRapid(ctrl->getRapid());
rap->setAttempt(ctrl->getAttempt()); // rap->setAttempt(ctrl->getAttempt());
tb = rap; // rap->setUeId(ctrl->getUeId());
} else { // tb = rap;
MACControlInfo *ctrl = check_and_cast<MACControlInfo*>(pdu->getControlInfo()); // rarLimit = lteSched->getSFN() + 3 + lteCfg->getRaRespWdwSize();
tb->setChannel(ctrl->getChannel()); // }
tb->setRntiType(ctrl->getRntiType()); // else {
tb->setRnti(ctrl->getRnti()); // MACControlInfo *ctrl = check_and_cast<MACControlInfo*>(pdu->getControlInfo());
// tb->setChannel(ctrl->getChannel());
} // tb->setRntiType(ctrl->getRntiType());
tb->setName(pdu->getName()); // tb->setRnti(ctrl->getRnti());
tb->encapsulate(pdu->dup()); // tb->setUeId(ctrl->getUeId());
tb->setUeId(this->getParentModule()->getId()); //
this->send(tb, gate("lowerLayerOut")); // }
} // tb->setName(pdu->getName());
// tb->encapsulate(pdu->dup());
// this->send(tb->dup(), gate("lowerLayerOut"));
// }
// TransportBlock *tb = scheduler->getMessageToBeSent(); // TransportBlock *tb = scheduler->getMessageToBeSent();
// if (tb) // if (tb)
// this->send(tb, gate("lowerLayerOut")); // this->send(tb, gate("lowerLayerOut"));
// ttiId++; // ttiId++;
} else if (category == NF_MAC_BEGIN_RA) { } else if (category == NF_MAC_BEGIN_RA) {
EV << "LTE-MAC: Random Access Procedure intialization.\n"; // EV << "LTE-MAC: Random Access Procedure intialization.\n";
msg3Buffer.clear(); // msg3Buffer.clear();
preambleTransCount = 1; // preambleTransCount = 1;
backoffParam = 0; // backoffParam = 0;
//
EV << "LTE-MAC: Random Access Resource selection.\n"; // EV << "LTE-MAC: Random Access Resource selection.\n";
unsigned preambleIndex; // unsigned prachMaskIndex;
unsigned prachMaskIndex; // unsigned prachIndex;
unsigned prachIndex; //
// if (lteCfg->getPreambleIndex() != 0 && lteCfg->getPRACHMaskIndex() != -1) {
if (lteCfg->getPreambleIndex() != 0 && lteCfg->getPRACHMaskIndex() != -1) { // preambleIndex = lteCfg->getPreambleIndex();
preambleIndex = lteCfg->getPreambleIndex(); //// prachMaskIndex = lteCfg->getPRACHMaskIndex();
// prachMaskIndex = lteCfg->getPRACHMaskIndex(); // } else {
} else { // if (msg3Buffer.size() == 0) { // msg3 has not been transmitted
if (msg3Buffer.size() == 0) { // msg3 has not been transmitted // if (lteCfg->getNrOfRAPreambles() != lteCfg->getSizeOfRAPreamblesGroupA()) { // TODO select group B
if (lteCfg->getNrOfRAPreambles() != lteCfg->getSizeOfRAPreamblesGroupA()) { // TODO select group B //
// } else { // select group A
} else { // select group A // preambleIndex = uniform(0, lteCfg->getSizeOfRAPreamblesGroupA());
preambleIndex = uniform(0, lteCfg->getSizeOfRAPreamblesGroupA()); // prachMaskIndex = 0;
prachMaskIndex = 0; // // TODO not sure if this is how PRACH selection is done
// TODO not sure if this is how PRACH selection is done // if (lteCfg->getTransmissionMode() == TDD_MODE && prachMaskIndex == 0) {
if (lteCfg->getTransmissionMode() == TDD_MODE && prachMaskIndex == 0) { // if (lteCfg->getPreambleIndex() != 0) {
if (lteCfg->getPreambleIndex() != 0) { // // randomly select PRACH from determined subframe
// randomly select PRACH from determined subframe // prachIndex = uniform(lteCfg->getPRACHFreqOffset(), lteCfg->getPRACHFreqOffset() + 5);
prachIndex = uniform(lteCfg->getPRACHFreqOffset(), lteCfg->getPRACHFreqOffset() + 5); // } else {
} else { // // TODO randomly select PRACH from determined subframe and next 2 subframes
// TODO randomly select PRACH from determined subframe and next 2 subframes // prachIndex = uniform(lteCfg->getPRACHFreqOffset(), lteCfg->getPRACHFreqOffset() + 5);
prachIndex = uniform(lteCfg->getPRACHFreqOffset(), lteCfg->getPRACHFreqOffset() + 5); // }
} // } else {
} else { // // determine PRACH with PRACH Mask Index
// determine PRACH with PRACH Mask Index // if (prachMaskIndex == 0) {
if (prachMaskIndex == 0) { // prachIndex = uniform(lteCfg->getPRACHFreqOffset(), lteCfg->getPRACHFreqOffset() + 5);
prachIndex = uniform(lteCfg->getPRACHFreqOffset(), lteCfg->getPRACHFreqOffset() + 5); // } else {
} else { // // TODO
// TODO // }
} // }
} // }
} // } else { // TODO select the same group of Random Access Preambles as for previous transmission
} else { // TODO select the same group of Random Access Preambles as for previous transmission //
// }
} // }
} //
// EV << "LTE-MAC: Random Access Preamble transmission.\n";
EV << "LTE-MAC: Random Access Preamble transmission.\n"; // // TODO preambleInitialReceivedTargetPower = ...
// TODO preambleInitialReceivedTargetPower = ... // RAPControlInfo *ctrl = new RAPControlInfo();
RAPControlInfo *ctrl = new RAPControlInfo(); // ctrl->setRapid(preambleIndex);
ctrl->setRapid(preambleIndex); // ctrl->setAttempt(preambleTransCount);
ctrl->setAttempt(preambleTransCount); // ctrl->setRnti(prachIndex);
ctrl->setRnti(prachIndex); // ctrl->setUeId(this->getParentModule()->getId());
MACProtocolDataUnit *msg = new MACProtocolDataUnit(); // MACProtocolDataUnit *msg = new MACProtocolDataUnit();
msg->setName("RandomAccessPreamble"); // msg->setName("RandomAccessPreamble");
msg->setKind(RA_MSG_ID); // msg->setKind(RAP_MSG_ID);
msg->setControlInfo(ctrl); // msg->setControlInfo(ctrl);
queue[msg->getKind()] = msg; // queue[msg->getKind()] = msg;
} }
} }
......
...@@ -31,6 +31,27 @@ ...@@ -31,6 +31,27 @@
#define C_RNTI_MAX_VALUE 65523 #define C_RNTI_MAX_VALUE 65523
//#define TTI_VALUE 1 //#define TTI_VALUE 1
enum RAState {
PROC_NULL = FSM_Steady(0),
PROC_INITIALIZATION = FSM_Steady(1),
RES_SELECTION = FSM_Steady(2),
PRBL_TRANSMISSION = FSM_Steady(3),
RESP_RECEPTION = FSM_Steady(4),
RESP_CORRECT = FSM_Steady(5),
PROC_DONE = FSM_Steady(6),
PROC_ERROR = FSM_Steady(7)
};
enum RAEvent {
InitializeProc,
SelectRes,
TransmitPrbl,
ReceiveResp,
CorrectResp,
CorrectProc,
IncorrectProc
};
class MAC : public cSimpleModule, public INotifiable { class MAC : public cSimpleModule, public INotifiable {
protected: protected:
// unsigned rntiType; // unsigned rntiType;
...@@ -38,6 +59,9 @@ protected: ...@@ -38,6 +59,9 @@ protected:
// unsigned ueId; // unsigned ueId;
unsigned preambleTransCount; unsigned preambleTransCount;
unsigned backoffParam; unsigned backoffParam;
unsigned rarLimit;
unsigned preambleIndex;
unsigned prachIndex;
cMessage *ttiTimer; cMessage *ttiTimer;
// unsigned ttiId; // unsigned ttiId;
...@@ -48,20 +72,33 @@ protected: ...@@ -48,20 +72,33 @@ protected:
NotificationBoard *nb; NotificationBoard *nb;
cFSM raFSM;
// MACProtocolDataUnit *bcchMsg; // MACProtocolDataUnit *bcchMsg;
LTEConfig *lteCfg; LTEConfig *lteCfg;
LTEScheduler *lteSched; LTEScheduler *lteSched;
typedef std::map<int, MACProtocolDataUnit*> MACBuffer; typedef std::vector<MACProtocolDataUnit*> QueueUp;
MACBuffer queue; QueueUp queueUp;
// std::map<int, TransportBlock*> queueDown;
typedef std::map<unsigned, MACProtocolDataUnit*> MACBuffer;
// MACBuffer queue;
MACBuffer msg3Buffer; MACBuffer msg3Buffer;
// std::vector<MACRandomAccessResponse*> rars;
virtual void receiveChangeNotification(int category, const cPolymorphic *details); virtual void receiveChangeNotification(int category, const cPolymorphic *details);
void addHarqInformation(TransportBlock *tb, int harqProcId); void addHarqInformation(TransportBlock *tb, int harqProcId);
const char *channelName(int channelNumber); const char *channelName(int channelNumber);
void performRAStateTransition(RAEvent event);
void raStateEntered();
public: public:
MAC(); MAC();
virtual ~MAC(); virtual ~MAC();
...@@ -75,8 +112,14 @@ public: ...@@ -75,8 +112,14 @@ public:
void handleUpperMessage(cMessage *msg); void handleUpperMessage(cMessage *msg);
// void sendDown(cMessage *msg, int channelNumber, unsigned rntiType, unsigned short rnti); // void sendDown(cMessage *msg, int channelNumber, unsigned rntiType, unsigned short rnti);
void sendUp(cMessage *msg, int channelNumber); void sendUp(cMessage *msg, int channel);
void sendDown(int channel, unsigned rntiType, unsigned rnti, unsigned ueId, MACProtocolDataUnit *pdu);
// unsigned getUeId() { return ueId; } // unsigned getUeId() { return ueId; }
void ulschDataTransfer(int channel, unsigned rnti, unsigned rntiType);
// void sendRACommand(int channel, int rnti, int rntiType);
}; };
#endif /* MAC_H_ */ #endif /* MAC_H_ */
...@@ -21,8 +21,9 @@ class noncobject LTEControlInfo; ...@@ -21,8 +21,9 @@ class noncobject LTEControlInfo;
class MACControlInfo extends LTEControlInfo class MACControlInfo extends LTEControlInfo
{ {
unsigned int ueId;
unsigned int rntiType; unsigned int rntiType;
unsigned short rnti = 0; unsigned short rnti = 0;
} }
class RAPControlInfo extends MACControlInfo class RAPControlInfo extends MACControlInfo
......
...@@ -78,4 +78,9 @@ packet RandomAccessPreamble extends TransportBlock ...@@ -78,4 +78,9 @@ packet RandomAccessPreamble extends TransportBlock
{ {
unsigned int rapid; unsigned int rapid;
unsigned int attempt; unsigned int attempt;
}
packet DCIFormat1C extends TransportBlock
{
} }
\ No newline at end of file
...@@ -95,6 +95,6 @@ void MACScheduler::initRandomAccessProcedure() { ...@@ -95,6 +95,6 @@ void MACScheduler::initRandomAccessProcedure() {
* determine next available subframe * determine next available subframe
* *
*/ */
lteCfg->setRAState(1); // lteCfg->setRAState(1);
} }
...@@ -28,6 +28,19 @@ message PhysicalResourceBlock extends AirFrame ...@@ -28,6 +28,19 @@ message PhysicalResourceBlock extends AirFrame
// unsigned int tbId = 0; // unsigned int tbId = 0;
} }
message DCIFormat extends PhysicalResourceBlock
{
unsigned int rnti;
unsigned int rntiType;
unsigned int allocation; // should be resource block allocation, but now it is used to signal de tti for DLSCH
}
message DCIFormat1A extends DCIFormat
{
bool ndi;
unsigned char harqNo;
}
enum LTERadioTypes enum LTERadioTypes
{ {
FDDRadioType = 0; FDDRadioType = 0;
...@@ -49,6 +62,7 @@ enum LTERntiTypes ...@@ -49,6 +62,7 @@ enum LTERntiTypes
SiRnti = 4; SiRnti = 4;
SpsRnti = 5; SpsRnti = 5;
MRnti = 6; MRnti = 6;
TempCRnti = 7;
} }
//message RAPreamble extends LTEFrame //message RAPreamble extends LTEFrame
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "IPv4InterfaceData.h" #include "IPv4InterfaceData.h"
#include "LTEChannelControl.h" #include "LTEChannelControl.h"
#include "MACMessage.h" #include "MACMessage.h"
#include "MACControlInfo_m.h"
//#include "HARQProcess.h" //#include "HARQProcess.h"
Define_Module(LTERadio); Define_Module(LTERadio);
...@@ -70,7 +71,7 @@ void LTERadio::initialize(int stage) { ...@@ -70,7 +71,7 @@ void LTERadio::initialize(int stage) {
// TODO rest of the table 3GPP TS 36211 Table 5.7.1-2 pag. 32 // TODO rest of the table 3GPP TS 36211 Table 5.7.1-2 pag. 32
switch (lteCfg->getPRACHCfgIndex() % 16) { switch (lteCfg->getPRACHCfgIndex() % 16) {
case 0: case 0:
lteSched->scheduleMessage(UL_SCHEDULING, RA_MSG_ID, 0, 2, UINT32_MAX, prachCfgIndex0TTIs, 1, lteCfg->getPRACHFreqOffset(), 6); lteSched->scheduleMessage(UL_SCHEDULING, RAP_MSG_ID, 0, 2, UINT32_MAX, prachCfgIndex0TTIs, 1, lteCfg->getPRACHFreqOffset(), 6);
break; break;
default: default:
break; break;
...@@ -79,8 +80,11 @@ void LTERadio::initialize(int stage) { ...@@ -79,8 +80,11 @@ void LTERadio::initialize(int stage) {
} else if (!strncmp(this->getParentModule()->getComponentType()->getName(), "UE", 2)) { } else if (!strncmp(this->getParentModule()->getComponentType()->getName(), "UE", 2)) {
EV << "LTE-Radio: LTE physical module for UE.\n"; EV << "LTE-Radio: LTE physical module for UE.\n";
cc->setRadioChannel(myRadioRef, PDSCH); cc->setRadioChannel(myRadioRef, PDSCH);
cc->setRadioChannel(myRadioRef, PDSCH0);
cc->setRadioChannel(myRadioRef, PDSCH1);
cc->setRadioChannel(myRadioRef, PHICH); cc->setRadioChannel(myRadioRef, PHICH);
cc->setRadioChannel(myRadioRef, PBCH); cc->setRadioChannel(myRadioRef, PBCH);
cc->setRadioChannel(myRadioRef, PDCCH);
// cc->setRadioChannel(myRadioRef, Downlink); // cc->setRadioChannel(myRadioRef, Downlink);
} }
} }
...@@ -115,7 +119,28 @@ void LTERadio::initialize(int stage) { ...@@ -115,7 +119,28 @@ void LTERadio::initialize(int stage) {
void LTERadio::handleMessage(cMessage *msg) { void LTERadio::handleMessage(cMessage *msg) {
if (msg->isSelfMessage()) { if (msg->isSelfMessage()) {
if (msg == ttiTimer) { if (msg == ttiTimer) {
nb->fireChangeNotification(NF_PHY_PER_CB, NULL); // nb->fireChangeNotification(NF_PHY_PER_CB, NULL);
int msgId = -1;
if (!strncmp(this->getParentModule()->getComponentType()->getName(), "ENB", 3)) {
msgId = lteSched->getMessageId(DL_SCHEDULING);
if (lteSched->getTTI() == 0)
sendDCIFormats();
} else {
msgId = lteSched->getMessageId(UL_SCHEDULING);
}
if (msgId != -1) {
EV << "LTE-Radio: Sending scheduled message with id " << msgId << ".\n";
TransportBlock *tb = queue[msgId];
if (msgId == RAP_MSG_ID) {
tb->setRnti(1 + lteSched->getTTI() + 10 * tb->getRnti());
// rarLimit = lteSched->getSFN() + 3 + lteCfg->getRaRespWdwSize();
}
// this->send(tb->dup(), gate("lowerLayerOut"));
sendDown(tb->dup());
}
this->cancelEvent(ttiTimer); this->cancelEvent(ttiTimer);
this->scheduleAt(simTime() + TTI_VALUE, ttiTimer); this->scheduleAt(simTime() + TTI_VALUE, ttiTimer);
lteSched->incrementTTI(); lteSched->incrementTTI();
...@@ -156,6 +181,24 @@ void LTERadio::sendToRadio(cMessage *msg, int channel) { ...@@ -156,6 +181,24 @@ void LTERadio::sendToRadio(cMessage *msg, int channel) {
} }
void LTERadio::sendDCIFormats() {
// bool direction = !strncmp(this->getParentModule()->getComponentType()->getName(), "ENB", 3) ? DL_SCHEDULING : UL_SCHEDULING;
for (unsigned i = 0; i < 10; i++) {
int msgId = lteSched->getMessageId(DL_SCHEDULING, i);
if (msgId != -1 && queue[msgId] != NULL) {
TransportBlock *tb = queue[msgId];
if (tb->getChannel() == DLSCH1) {
EV << "LTE-Radio: Sending DCIFormat1A for message with id = " << msgId <<".\n";
DCIFormat1A *dci = new DCIFormat1A();
dci->setName("DCIFormat1A");
dci->setRnti(tb->getRnti());
dci->setRntiType(tb->getRntiType());
sendToChannel(dci);
}
}
}
}
//AirFrame *LTERadio::encapsulatePacket(cPacket *frame) { //AirFrame *LTERadio::encapsulatePacket(cPacket *frame) {
//// PhyControlInfo *ctrl = dynamic_cast<PhyControlInfo *>(frame->removeControlInfo()); //// PhyControlInfo *ctrl = dynamic_cast<PhyControlInfo *>(frame->removeControlInfo());
//// ////
...@@ -180,12 +223,7 @@ void LTERadio::sendToRadio(cMessage *msg, int channel) { ...@@ -180,12 +223,7 @@ void LTERadio::sendToRadio(cMessage *msg, int channel) {
//// return airframe; //// return airframe;
//} //}
void LTERadio::handleUpperMessage(cMessage* msg) { void LTERadio::sendDown(TransportBlock *tb) {
// no point in sending n Physical Resource Blocks and will send only one Physical Resource
// Block with the Transport Block encapsulated
TransportBlock *tb = check_and_cast<TransportBlock*>(msg);
PhysicalResourceBlock *prb = new PhysicalResourceBlock(); PhysicalResourceBlock *prb = new PhysicalResourceBlock();
switch (tb->getChannel()) { switch (tb->getChannel()) {
case RACH: { case RACH: {
...@@ -197,7 +235,10 @@ void LTERadio::handleUpperMessage(cMessage* msg) { ...@@ -197,7 +235,10 @@ void LTERadio::handleUpperMessage(cMessage* msg) {
break; break;
} }
case DLSCH0: case DLSCH0:
prb->setChannelNumber(PDSCH); prb->setChannelNumber(PDSCH0);
break;
case DLSCH1:
prb->setChannelNumber(PDSCH1);
break; break;
// case ULSCH: // case ULSCH:
// frame->setChannelNumber(PUSCH); // frame->setChannelNumber(PUSCH);
...@@ -212,6 +253,66 @@ void LTERadio::handleUpperMessage(cMessage* msg) { ...@@ -212,6 +253,66 @@ void LTERadio::handleUpperMessage(cMessage* msg) {
prb->encapsulate(tb); prb->encapsulate(tb);
prb->setName(tb->getName()); prb->setName(tb->getName());
sendToChannel(prb); sendToChannel(prb);
}
void LTERadio::handleUpperMessage(cMessage* msg) {
// no point in sending n Physical Resource Blocks and will send only one Physical Resource
// Block with the Transport Block encapsulated
MACProtocolDataUnit *pdu = dynamic_cast<MACProtocolDataUnit*>(msg);
MACControlInfo *ctrl = dynamic_cast<MACControlInfo*>(msg->removeControlInfo());
if (ctrl) {
TransportBlock *tb = new TransportBlock();
if (ctrl->getChannel() == RACH) {
RAPControlInfo *rapCtrl = check_and_cast<RAPControlInfo*>(ctrl);
RandomAccessPreamble *rap = new RandomAccessPreamble();
rap->setRapid(rapCtrl->getRapid());
rap->setAttempt(rapCtrl->getAttempt());
rap->setName("RandomAccessPreamble");
rap->setKind(RAP_MSG_ID);
tb = rap;
} else {
tb->setName(pdu->getName());
tb->encapsulate(pdu);
tb->setKind(pdu->getKind());
}
tb->setChannel(ctrl->getChannel());
tb->setRntiType(ctrl->getRntiType());
tb->setRnti(ctrl->getRnti());
tb->setUeId(ctrl->getUeId());
queue[tb->getKind()] = tb;
}
// switch (ctrl->getChannel()) {
// case RACH: {
// RAPreamble *rap = new RAPreamble();
// rap->setChannelNumber(PRACH);
// rap->setRapid(ctrl->getRapid());
// frame = rap;
// prb->setChannelNumber(PRACH);
// break;
// }
// case DLSCH0:
// prb->setChannelNumber(PDSCH0);
// break;
// case DLSCH1:
// prb->setChannelNumber(PDSCH1);
// break;
// case ULSCH:
// frame->setChannelNumber(PUSCH);
// break;
// case BCH:
// prb->setChannelNumber(PBCH);
// break;
// default:
// break;
// }
// prb->encapsulate(tb);
// prb->setName(tb->getName());
// sendToChannel(prb);
//// lteFrame->setType(ctrl->getType()); //// lteFrame->setType(ctrl->getType());
// frame->setRntiType(ctrl->getRntiType()); // frame->setRntiType(ctrl->getRntiType());
// frame->setRnti(ctrl->getRnti()); // frame->setRnti(ctrl->getRnti());
...@@ -246,10 +347,25 @@ void LTERadio::handleRadioMessage(cMessage *msg) { ...@@ -246,10 +347,25 @@ void LTERadio::handleRadioMessage(cMessage *msg) {
PhysicalResourceBlock *prb = check_and_cast<PhysicalResourceBlock*>(msg); PhysicalResourceBlock *prb = check_and_cast<PhysicalResourceBlock*>(msg);
if (prb->getEncapsulatedPacket()) { if (prb->getEncapsulatedPacket()) {
TransportBlock *tb = check_and_cast<TransportBlock*>(prb->decapsulate()); TransportBlock *tb = check_and_cast<TransportBlock*>(prb->decapsulate());
tb->setTbId(lteSched->getSFN() * 10 + lteSched->getTTI()); if ((tb->getChannel() == BCH) || (tb->getChannel() == DLSCH0)
send(tb, gate("upperLayerOut")); || (tb->getChannel() == RACH) || (tb->getUeId() == this->getParentModule()->getId())) {
if (tb->getChannel() == DLSCH1) {
checkDCIFormats(tb);
}
tb->setTbId(lteSched->getSFN() * 10 + lteSched->getTTI());
send(tb, gate("upperLayerOut"));
} else {
EV << "LTE-Radio: Received unexpected packet on channel = " << tb->getChannel() << ". Dropping it.\n";
}
delete prb;
}
DCIFormat *dci = dynamic_cast<DCIFormat*>(msg);
if (dci) {
dcis.push_back(dci);
} }
delete prb;
// LTESubFrame *subFrame = check_and_cast<LTESubFrame*>(msg); // LTESubFrame *subFrame = check_and_cast<LTESubFrame*>(msg);
// scheduleAt(simTime() + subFrame->getDuration(), subFrame); // scheduleAt(simTime() + subFrame->getDuration(), subFrame);
// if (dynamic_cast<RandomAccessFrame*>(msg)) { // if (dynamic_cast<RandomAccessFrame*>(msg)) {
...@@ -290,6 +406,17 @@ void LTERadio::handleRadioMessage(cMessage *msg) { ...@@ -290,6 +406,17 @@ void LTERadio::handleRadioMessage(cMessage *msg) {
// delete msg; // delete msg;
} }
void LTERadio::checkDCIFormats(TransportBlock *tb) {
for (DCIFormats::iterator i = dcis.begin(); i != dcis.end();) {
if ((*i)->getRntiType() == tb->getRntiType() && (*i)->getRnti() == tb->getRnti()) {
tb->setControlInfo((*i));
i = dcis.erase(i);
} else {
++i;
}
}
}
void LTERadio::sendUp(LTEFrame *frame, LTEPhyControlInfo *ctrl) { void LTERadio::sendUp(LTEFrame *frame, LTEPhyControlInfo *ctrl) {
// // ctrl->setType(lteFrame->getType()); // // ctrl->setType(lteFrame->getType());
// ctrl->setRntiType(frame->getRntiType()); // ctrl->setRntiType(frame->getRntiType());
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "LTEFrame_m.h" #include "LTEFrame_m.h"
#include "LTEConfigAccess.h" #include "LTEConfigAccess.h"
#include "LTESchedulerAccess.h" #include "LTESchedulerAccess.h"
#include "MACMessage.h"
#define HARQ_FEEDBACK_DELAY 1 #define HARQ_FEEDBACK_DELAY 1
#define HARQ_FEEDBACK_ACK 1 #define HARQ_FEEDBACK_ACK 1
...@@ -44,7 +45,6 @@ ...@@ -44,7 +45,6 @@
//}; //};
//static const char *prbNames[PRB_MAX_SIZE] = { "PRB1", "PRB2", "PRB3", "PRB4", "PRB5", "PRB6" }; //static const char *prbNames[PRB_MAX_SIZE] = { "PRB1", "PRB2", "PRB3", "PRB4", "PRB5", "PRB6" };
static const int prachCfgIndex0TTIs[1] = { 1 };
class LTERadio : public ChannelAccess, INotifiable { class LTERadio : public ChannelAccess, INotifiable {
public: public:
...@@ -68,6 +68,10 @@ protected: ...@@ -68,6 +68,10 @@ protected:
LTEConfig *lteCfg; LTEConfig *lteCfg;
LTEScheduler *lteSched; LTEScheduler *lteSched;
std::map<int, TransportBlock*> queue;
typedef std::vector<DCIFormat*> DCIFormats;
DCIFormats dcis;
unsigned dir; unsigned dir;
char *dirStr; char *dirStr;
...@@ -92,6 +96,9 @@ protected: ...@@ -92,6 +96,9 @@ protected:
void scheduleHARQFeedback(bool harqIndicator, unsigned ueId); void scheduleHARQFeedback(bool harqIndicator, unsigned ueId);
virtual void receiveChangeNotification(int category, const cPolymorphic *details) {} virtual void receiveChangeNotification(int category, const cPolymorphic *details) {}
void sendDown(TransportBlock *tb);
void sendDCIFormats();
void checkDCIFormats(TransportBlock *tb);
//virtual void sendDown(AirFrame *airframe); //virtual void sendDown(AirFrame *airframe);
// virtual void sendUp(AirFrame *airframe); // virtual void sendUp(AirFrame *airframe);
}; };
......
...@@ -448,16 +448,11 @@ void RRC::processSIB2(SystemInformationBlockType2 *sib2) { ...@@ -448,16 +448,11 @@ void RRC::processSIB2(SystemInformationBlockType2 *sib2) {
lteCfg->setPRACHCfgIndex(prachCfgInfo.getPRACHConfigInfoPrachConfigIndex().getValue()); lteCfg->setPRACHCfgIndex(prachCfgInfo.getPRACHConfigInfoPrachConfigIndex().getValue());
lteCfg->setPRACHFreqOffset(prachCfgInfo.getPRACHConfigInfoPrachFreqOffset().getValue()); lteCfg->setPRACHFreqOffset(prachCfgInfo.getPRACHConfigInfoPrachFreqOffset().getValue());
// TODO rest of the table 3GPP TS 36211 Table 5.7.1-2 pag. 32 Subscriber *sub = subT->at(0);
switch (lteCfg->getPRACHCfgIndex() % 16) { RRCEntity *rrc = sub->getRrcEntity();
case 0: if (rrc->getState() == UE_RRC_IDLE)
lteSched->scheduleMessage(UL_SCHEDULING, RA_MSG_ID, 0, 2, UINT32_MAX, prachCfgIndex0TTIs, 1, lteCfg->getPRACHFreqOffset(), 6); rrc->performStateTransition(ConnectionEstablishment);
break; // lteCfg->performRAStateTransition(RAInitialization);
default:
break;
}
nb->fireChangeNotification(NF_MAC_BEGIN_RA, NULL);
// lteCfg->setRAState(0); // lteCfg->setRAState(0);
......
...@@ -92,7 +92,7 @@ void RRCEntity::sendRRCConnectionRequest() { ...@@ -92,7 +92,7 @@ void RRCEntity::sendRRCConnectionRequest() {
ULCCCHMessageTypeC1 *c1 = new ULCCCHMessageTypeC1(); ULCCCHMessageTypeC1 *c1 = new ULCCCHMessageTypeC1();
c1->setValue(rrcConnReq, ULCCCHMessageTypeC1::rrcConnectionRequest); c1->setValue(rrcConnReq, ULCCCHMessageTypeC1::rrcConnectionRequest);
// module->sendDown(ULCCCH, ULCCCHMessageType::uLCCCHMessageTypeC1, "RRCConnectionRequest", c1); module->sendDown(-1, ULCCCH, ULCCCHMessageType::uLCCCHMessageTypeC1, "RRCConnectionRequest", c1);
} }
void RRCEntity::sendRRCConnectionSetup() { void RRCEntity::sendRRCConnectionSetup() {
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include "MACSerializer.h" #include "MACSerializer.h"
#include "LTEPhyControlInfo_m.h" #include "LTEPhyControlInfo_m.h"
#include "LTEFrame_m.h" #include "LTEFrame_m.h"
#include "MACControlInfo_m.h"
#define MAXBUFLENGTH 65536 #define MAXBUFLENGTH 65536
#define MAXDCTLENGTH 100 #define MAXDCTLENGTH 100
...@@ -99,7 +100,7 @@ void DCTDump::handleMessage(cMessage *msg) { ...@@ -99,7 +100,7 @@ void DCTDump::handleMessage(cMessage *msg) {
buf_len = IPv4Serializer().serialize(ipPacket, buf, sizeof(buf), true); buf_len = IPv4Serializer().serialize(ipPacket, buf, sizeof(buf), true);
} }
// context name - MACProtocolDataUnit // context name - TransportBlock
TransportBlock *tb = dynamic_cast<TransportBlock*>(msg); TransportBlock *tb = dynamic_cast<TransportBlock*>(msg);
if (tb) { if (tb) {
strncpy(p, "MAC-LTE", 7); strncpy(p, "MAC-LTE", 7);
...@@ -122,6 +123,28 @@ void DCTDump::handleMessage(cMessage *msg) { ...@@ -122,6 +123,28 @@ void DCTDump::handleMessage(cMessage *msg) {
} }
} }
// context name - MACProtocolDataUnit
MACProtocolDataUnit *pdu = dynamic_cast<MACProtocolDataUnit*>(msg);
if (pdu) {
MACControlInfo *ctrl = check_and_cast<MACControlInfo*>(msg->getControlInfo());
strncpy(p, "MAC-LTE", 7);
p += 7;
if (ctrl->getChannel() == RACH) {
// hasComment = true;
//
// writeAscii = true;
} else {
strncpy(p, ".", 1);
p += 1;
writeHex = true;
buf_len = MACSerializer().serialize(pdu, buf, sizeof(buf));
}
}
// context name - MAC Random Access Preamble // context name - MAC Random Access Preamble
// if (dynamic_cast<LTEPhyControlInfo*>(msg->getControlInfo())) { // if (dynamic_cast<LTEPhyControlInfo*>(msg->getControlInfo())) {
// LTEPhyControlInfo *ctrl = check_and_cast<LTEPhyControlInfo*>(msg->getControlInfo()); // LTEPhyControlInfo *ctrl = check_and_cast<LTEPhyControlInfo*>(msg->getControlInfo());
...@@ -136,16 +159,16 @@ void DCTDump::handleMessage(cMessage *msg) { ...@@ -136,16 +159,16 @@ void DCTDump::handleMessage(cMessage *msg) {
// } // }
if (hasComment) { if (hasComment) {
strncpy(p, "/////", 5); // strncpy(p, "/////", 5);
p += 5; // p += 5;
//
RandomAccessPreamble *rap = check_and_cast<RandomAccessPreamble*>(msg); // RandomAccessPreamble *rap = check_and_cast<RandomAccessPreamble*>(msg);
comment << ">> RACH Preamble Request[UE = " // comment << ">> RACH Preamble Request[UE = "
<< rap->getUeId() << "] [RAPID = " // << rap->getUeId() << "] [RAPID = "
<< rap->getRapid() << "] [Attempt = " // << rap->getRapid() << "] [Attempt = "
<< rap->getAttempt() << "]"; // << rap->getAttempt() << "]";
strncpy((char*)buf, comment.str().c_str(), strlen(comment.str().c_str())); // strncpy((char*)buf, comment.str().c_str(), strlen(comment.str().c_str()));
buf_len = strlen(comment.str().c_str()); // buf_len = strlen(comment.str().c_str());
} else { } else {
...@@ -166,8 +189,8 @@ void DCTDump::handleMessage(cMessage *msg) { ...@@ -166,8 +189,8 @@ void DCTDump::handleMessage(cMessage *msg) {
p++; p++;
} }
// protocol - MACProtocolDataUnit // protocol - MACProtocolDataUnit or TransportBlock
if (tb) { if (tb || pdu) {
vers << 1; vers << 1;
strncpy(p, "mac_r9_lte/", 11); strncpy(p, "mac_r9_lte/", 11);
...@@ -182,7 +205,7 @@ void DCTDump::handleMessage(cMessage *msg) { ...@@ -182,7 +205,7 @@ void DCTDump::handleMessage(cMessage *msg) {
// out-header // out-header
if (hasOutHdr) { if (hasOutHdr) {
if (tb) { if (tb || pdu) {
unsigned direction; unsigned direction;
if (!strncmp(this->getParentModule()->getComponentType()->getName(), "UE", 2)) if (!strncmp(this->getParentModule()->getComponentType()->getName(), "UE", 2))
if (msg->getArrivalGate()->isName("lowerLayerIn")) if (msg->getArrivalGate()->isName("lowerLayerIn"))
...@@ -194,15 +217,29 @@ void DCTDump::handleMessage(cMessage *msg) { ...@@ -194,15 +217,29 @@ void DCTDump::handleMessage(cMessage *msg) {
direction = UplinkDirection; direction = UplinkDirection;
else else
direction = DownlinkDirection; direction = DownlinkDirection;
outHdr << ","
<< FDDRadioType << "," if (tb) {
<< tb->getRntiType() << "," outHdr << ","
<< direction << "," << FDDRadioType << ","
<< "1," // Subframe number << tb->getRntiType() << ","
<< "0," // is predefined data << direction << ","
<< tb->getRnti() << "," << "1," // Subframe number
<< tb->getUeId() << "," << "0," // is predefined data
<< buf_len << ","; << tb->getRnti() << ","
<< tb->getUeId() << ","
<< buf_len << ",";
} else {
MACControlInfo *ctrl = check_and_cast<MACControlInfo*>(msg->getControlInfo());
outHdr << ","
<< FDDRadioType << ","
<< ctrl->getRntiType() << ","
<< direction << ","
<< "1," // Subframe number
<< "0," // is predefined data
<< ctrl->getRnti() << ","
<< ctrl->getUeId() << ","
<< buf_len << ",";
}
} }
strncpy(p, outHdr.str().c_str(), strlen(outHdr.str().c_str())); strncpy(p, outHdr.str().c_str(), strlen(outHdr.str().c_str()));
......
...@@ -33,7 +33,7 @@ unsigned MACSerializer::serializeHeader(MACSubHeader *header, bool isExt, bool i ...@@ -33,7 +33,7 @@ unsigned MACSerializer::serializeHeader(MACSubHeader *header, bool isExt, bool i
MACSubHeaderRar *rarHdr = dynamic_cast<MACSubHeaderRar*>(header); MACSubHeaderRar *rarHdr = dynamic_cast<MACSubHeaderRar*>(header);
*((unsigned char*)(p)) = *((unsigned char*)(p)) =
((isExt << 7) & 0x80) | ((rarHdr->getT() << 6) & 0x40); ((isExt << 7) & 0x80) | ((rarHdr->getT() << 6) & 0x40);
if (rarHdr->getT()) // BI if (!rarHdr->getT()) // BI
*((unsigned char*)(p)) += rarHdr->getRapidOrBi() & 0x0f; *((unsigned char*)(p)) += rarHdr->getRapidOrBi() & 0x0f;
else else
*((unsigned char*)(p)) += rarHdr->getRapidOrBi() & 0x3f; *((unsigned char*)(p)) += rarHdr->getRapidOrBi() & 0x3f;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册