24 #include "ns3/string.h"
25 #include <ns3/simulator.h>
35 : m_dlRxFirstWrite (true),
36 m_ulRxFirstWrite (true)
52 .AddConstructor<PhyRxStatsCalculator> ()
53 .AddAttribute (
"DlRxOutputFilename",
54 "Name of the file where the downlink results will be saved.",
58 .AddAttribute (
"UlRxOutputFilename",
59 "Name of the file where the uplink results will be saved.",
97 std::ofstream outFile;
101 if (!outFile.is_open ())
107 outFile <<
"% time\tcellId\tIMSI\tRNTI\ttxMode\tlayer\tmcs\tsize\trv\tndi\tcorrect";
108 outFile << std::endl;
113 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";
141 std::ofstream outFile;
145 if (!outFile.is_open ())
151 outFile <<
"% time\tcellId\tIMSI\tRNTI\tlayer\tmcs\tsize\trv\tndi\tcorrect";
152 outFile << std::endl;
157 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";
184 std::ostringstream pathAndRnti;
185 pathAndRnti << path <<
"/" << params.
m_rnti;
186 if (phyRxStats->ExistsImsiPath (pathAndRnti.str ()) ==
true)
188 imsi = phyRxStats->GetImsiPath (pathAndRnti.str ());
193 phyRxStats->SetImsiPath (pathAndRnti.str (), imsi);
197 phyRxStats->DlPhyReception (params);
206 std::ostringstream pathAndRnti;
207 pathAndRnti << path <<
"/" << params.
m_rnti;
208 if (phyRxStats->ExistsImsiPath (pathAndRnti.str ()) ==
true)
210 imsi = phyRxStats->GetImsiPath (pathAndRnti.str ());
215 phyRxStats->SetImsiPath (pathAndRnti.str (), imsi);
219 phyRxStats->UlPhyReception (params);
Ptr< const AttributeChecker > MakeStringChecker(void)
Base class for ***StatsCalculator classes.
Smart pointer class similar to boost::intrusive_ptr.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
uint8_t m_mcs
MCS for transport block.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Hold variables of type string.
bool m_dlRxFirstWrite
When writing DL RX PHY statistics first time to file, columns description is added.
uint8_t m_rv
the redundancy version (HARQ)
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
void DlPhyReception(PhyReceptionStatParameters params)
Notifies the stats calculator that an downlink reception has occurred.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
std::string GetUlRxOutputFilename(void)
Get the name of the file where the UL RX PHY statistics will be stored.
void SetUlOutputFilename(std::string outputFilename)
Set the name of the file where the uplink statistics will be stored.
virtual ~PhyRxStatsCalculator()
Destructor.
static uint64_t FindImsiForEnb(std::string path, uint16_t rnti)
Retrieves IMSI from path for Enb in the attribute system.
void UlPhyReception(PhyReceptionStatParameters params)
Notifies the stats calculator that an uplink reception has occurred.
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.
uint8_t m_ndi
new data indicator flag
Every class exported by the ns3 library is enclosed in the ns3 namespace.
PhyRxStatsCalculator()
Constructor.
void SetDlOutputFilename(std::string outputFilename)
Set the name of the file where the downlink statistics will be stored.
static uint64_t FindImsiForUe(std::string path, uint16_t rnti)
Retrieves IMSI from path for Ue in the attribute system.
uint8_t m_txMode
the transmission Mode
uint16_t m_size
Size of transport block.
static void DlPhyReceptionCallback(Ptr< PhyRxStatsCalculator > phyRxStats, std::string path, PhyReceptionStatParameters params)
trace sink
static void UlPhyReceptionCallback(Ptr< PhyRxStatsCalculator > phyRxStats, std::string path, PhyReceptionStatParameters params)
trace sink
uint8_t m_correctness
correctness of the TB received
uint16_t m_rnti
C-RNTI scheduled.
uint16_t m_cellId
Cell ID of the attached Enb.
std::string GetDlRxOutputFilename(void)
Get the name of the file where the DL RX PHY statistics will be stored.
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR.
Ptr< const AttributeAccessor > MakeStringAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
void SetUlRxOutputFilename(std::string outputFilename)
Set the name of the file where the UL Rx PHY statistics will be stored.
void SetDlRxOutputFilename(std::string outputFilename)
Set the name of the file where the DL RX PHY statistics will be stored.
uint64_t m_imsi
IMSI of the scheduled UE.
static TypeId GetTypeId(void)
Register this type.
a unique identifier for an interface.
bool m_ulRxFirstWrite
When writing UL RX PHY statistics first time to file, columns description is added.
TypeId SetParent(TypeId tid)
std::string GetDlOutputFilename(void)
Get the name of the file where the downlink statistics will be stored.