24 #include "ns3/string.h"
25 #include <ns3/simulator.h>
35 : m_dlFirstWrite (true),
54 .AddAttribute (
"DlOutputFilename",
55 "Name of the file where the downlink results will be saved.",
59 .AddAttribute (
"UlOutputFilename",
60 "Name of the file where the uplink results will be saved.",
96 dlSchedulingCallbackInfo.
rnti << (uint32_t) dlSchedulingCallbackInfo.
mcsTb1 << dlSchedulingCallbackInfo.
sizeTb1 << (uint32_t) dlSchedulingCallbackInfo.
mcsTb2 << dlSchedulingCallbackInfo.
sizeTb2);
99 std::ofstream outFile;
103 if (!outFile.is_open ())
109 outFile <<
"% time\tcellId\tIMSI\tframe\tsframe\tRNTI\tmcsTb1\tsizeTb1\tmcsTb2\tsizeTb2\tccId";
110 outFile << std::endl;
115 if (!outFile.is_open ())
123 outFile << (uint32_t) cellId <<
"\t";
124 outFile << imsi <<
"\t";
125 outFile << dlSchedulingCallbackInfo.
frameNo <<
"\t";
126 outFile << dlSchedulingCallbackInfo.
subframeNo <<
"\t";
127 outFile << dlSchedulingCallbackInfo.
rnti <<
"\t";
128 outFile << (uint32_t) dlSchedulingCallbackInfo.
mcsTb1 <<
"\t";
129 outFile << dlSchedulingCallbackInfo.
sizeTb1 <<
"\t";
130 outFile << (uint32_t) dlSchedulingCallbackInfo.
mcsTb2 <<
"\t";
131 outFile << dlSchedulingCallbackInfo.
sizeTb2 <<
"\t";
138 uint32_t subframeNo, uint16_t rnti,uint8_t mcsTb, uint16_t size, uint8_t componentCarrierId)
140 NS_LOG_FUNCTION (
this << cellId << imsi << frameNo << subframeNo << rnti << (uint32_t) mcsTb << size);
143 std::ofstream outFile;
147 if (!outFile.is_open ())
153 outFile <<
"% time\tcellId\tIMSI\tframe\tsframe\tRNTI\tmcs\tsize\tccId";
154 outFile << std::endl;
159 if (!outFile.is_open ())
167 outFile << (uint32_t) cellId <<
"\t";
168 outFile << imsi <<
"\t";
169 outFile << frameNo <<
"\t";
170 outFile << subframeNo <<
"\t";
171 outFile << rnti <<
"\t";
172 outFile << (uint32_t) mcsTb <<
"\t";
173 outFile << size <<
"\t";
174 outFile << (uint32_t) componentCarrierId << std::endl;
183 std::ostringstream pathAndRnti;
184 std::string pathEnb = path.substr (0, path.find (
"/ComponentCarrierMap"));
185 pathAndRnti << pathEnb <<
"/LteEnbRrc/UeMap/" << dlSchedulingCallbackInfo.
rnti;
186 if (macStats->ExistsImsiPath (pathAndRnti.str ()) ==
true)
188 imsi = macStats->GetImsiPath (pathAndRnti.str ());
193 macStats->SetImsiPath (pathAndRnti.str (), imsi);
196 if (macStats->ExistsCellIdPath (pathAndRnti.str ()) ==
true)
198 cellId = macStats->GetCellIdPath (pathAndRnti.str ());
203 macStats->SetCellIdPath (pathAndRnti.str (), cellId);
206 macStats->DlScheduling (cellId, imsi, dlSchedulingCallbackInfo);
211 uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
212 uint8_t mcs, uint16_t size, uint8_t componentCarrierId)
217 std::ostringstream pathAndRnti;
218 std::string pathEnb = path.substr (0, path.find (
"/ComponentCarrierMap"));
219 pathAndRnti << pathEnb <<
"/LteEnbRrc/UeMap/" << rnti;
220 if (macStats->ExistsImsiPath (pathAndRnti.str ()) ==
true)
222 imsi = macStats->GetImsiPath (pathAndRnti.str ());
227 macStats->SetImsiPath (pathAndRnti.str (), imsi);
230 if (macStats->ExistsCellIdPath (pathAndRnti.str ()) ==
true)
232 cellId = macStats->GetCellIdPath (pathAndRnti.str ());
237 macStats->SetCellIdPath (pathAndRnti.str (), cellId);
240 macStats->UlScheduling (cellId, imsi, frameNo, subframeNo, rnti, mcs, size, componentCarrierId);