|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
24 #include "ns3/string.h"
25 #include <ns3/simulator.h>
35 : m_dlRxFirstWrite (true),
36 m_ulRxFirstWrite (true)
54 .AddAttribute (
"DlRxOutputFilename",
55 "Name of the file where the downlink results will be saved.",
59 .AddAttribute (
"UlRxOutputFilename",
60 "Name of the file where the uplink results will be saved.",
98 std::ofstream outFile;
102 if (!outFile.is_open ())
108 outFile <<
"% time\tcellId\tIMSI\tRNTI\ttxMode\tlayer\tmcs\tsize\trv\tndi\tcorrect\tccId";
109 outFile << std::endl;
114 if (!outFile.is_open ())
122 outFile << (uint32_t) params.
m_cellId <<
"\t";
123 outFile << params.
m_imsi <<
"\t";
124 outFile << params.
m_rnti <<
"\t";
125 outFile << (uint32_t) params.
m_txMode <<
"\t";
126 outFile << (uint32_t) params.
m_layer <<
"\t";
127 outFile << (uint32_t) params.
m_mcs <<
"\t";
128 outFile << params.
m_size <<
"\t";
129 outFile << (uint32_t) params.
m_rv <<
"\t";
130 outFile << (uint32_t) params.
m_ndi <<
"\t";
132 outFile << (uint32_t) params.
m_ccId << std::endl;
142 std::ofstream outFile;
146 if (!outFile.is_open ())
152 outFile <<
"% time\tcellId\tIMSI\tRNTI\tlayer\tmcs\tsize\trv\tndi\tcorrect\tccId";
153 outFile << std::endl;
158 if (!outFile.is_open ())
166 outFile << (uint32_t) params.
m_cellId <<
"\t";
167 outFile << params.
m_imsi <<
"\t";
168 outFile << params.
m_rnti <<
"\t";
169 outFile << (uint32_t) params.
m_layer <<
"\t";
170 outFile << (uint32_t) params.
m_mcs <<
"\t";
171 outFile << params.
m_size <<
"\t";
172 outFile << (uint32_t) params.
m_rv <<
"\t";
173 outFile << (uint32_t) params.
m_ndi <<
"\t";
175 outFile << (uint32_t) params.
m_ccId << std::endl;
185 std::ostringstream pathAndRnti;
186 pathAndRnti << path <<
"/" << params.
m_rnti;
187 std::string pathUePhy = path.substr (0, path.find (
"/ComponentCarrierMapUe"));
188 if (phyRxStats->ExistsImsiPath (pathAndRnti.str ()) ==
true)
190 imsi = phyRxStats->GetImsiPath (pathAndRnti.str ());
195 phyRxStats->SetImsiPath (pathAndRnti.str (), imsi);
199 phyRxStats->DlPhyReception (params);
208 std::ostringstream pathAndRnti;
209 std::string pathEnb = path.substr (0, path.find (
"/ComponentCarrierMap"));
210 pathAndRnti << pathEnb <<
"/LteEnbRrc/UeMap/" << params.
m_rnti;
211 if (phyRxStats->ExistsImsiPath (pathAndRnti.str ()) ==
true)
213 imsi = phyRxStats->GetImsiPath (pathAndRnti.str ());
218 phyRxStats->SetImsiPath (pathAndRnti.str (), imsi);
222 phyRxStats->UlPhyReception (params);
a unique identifier for an interface.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
uint64_t m_imsi
IMSI of the scheduled UE.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
uint8_t m_rv
the redundancy version (HARQ)
Takes care of storing the information generated at PHY layer regarding reception.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void SetDlOutputFilename(std::string outputFilename)
Set the name of the file where the downlink statistics will be stored.
uint8_t m_mcs
MCS for transport block.
void SetDlRxOutputFilename(std::string outputFilename)
Set the name of the file where the DL RX PHY statistics will be stored.
static uint64_t FindImsiFromLteNetDevice(std::string path)
Retrieves IMSI from LteNetDevice path in the attribute system.
void SetUlRxOutputFilename(std::string outputFilename)
Set the name of the file where the UL Rx PHY statistics will be stored.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
int64_t m_timestamp
in millisecond
PhyRxStatsCalculator()
Constructor.
Base class for ***StatsCalculator classes.
Smart pointer class similar to boost::intrusive_ptr.
virtual ~PhyRxStatsCalculator()
Destructor.
void DlPhyReception(PhyReceptionStatParameters params)
Notifies the stats calculator that an downlink reception has occurred.
std::string GetDlRxOutputFilename(void)
Get the name of the file where the DL RX PHY statistics will be stored.
bool m_ulRxFirstWrite
When writing UL RX PHY statistics first time to file, columns description is added.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
static TypeId GetTypeId(void)
Register this type.
uint8_t m_ndi
new data indicator flag
bool m_dlRxFirstWrite
When writing DL RX PHY statistics first time to file, columns description is added.
void UlPhyReception(PhyReceptionStatParameters params)
Notifies the stats calculator that an uplink reception has occurred.
static void DlPhyReceptionCallback(Ptr< PhyRxStatsCalculator > phyRxStats, std::string path, PhyReceptionStatParameters params)
trace sink
uint8_t m_layer
the layer (cw) of the transmission
std::string GetUlOutputFilename(void)
Get the name of the file where the uplink statistics will be stored.
static void UlPhyReceptionCallback(Ptr< PhyRxStatsCalculator > phyRxStats, std::string path, PhyReceptionStatParameters params)
trace sink
uint8_t m_ccId
component carrier id
Hold variables of type string.
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR.
std::string GetDlOutputFilename(void)
Get the name of the file where the downlink statistics will be stored.
uint16_t m_size
Size of transport block.
uint16_t m_rnti
C-RNTI scheduled.
uint8_t m_correctness
correctness of the TB received
std::string GetUlRxOutputFilename(void)
Get the name of the file where the UL RX PHY statistics will be stored.
uint8_t m_txMode
the transmission Mode
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
static uint64_t FindImsiFromEnbRlcPath(std::string path)
Retrieves IMSI from Enb RLC path in the attribute system.
Ptr< const AttributeChecker > MakeStringChecker(void)
PhyReceptionStatParameters structure.
void SetUlOutputFilename(std::string outputFilename)
Set the name of the file where the uplink statistics will be stored.
uint16_t m_cellId
Cell ID of the attached Enb.
Ptr< const AttributeAccessor > MakeStringAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.