13#include "ns3/string.h"
15#include <ns3/simulator.h>
25 : m_dlTxFirstWrite(true),
26 m_ulTxFirstWrite(true)
49 TypeId(
"ns3::PhyTxStatsCalculator")
53 .AddAttribute(
"DlTxOutputFilename",
54 "Name of the file where the downlink results will be saved.",
58 .AddAttribute(
"UlTxOutputFilename",
59 "Name of the file where the uplink results will be saved.",
93 NS_LOG_FUNCTION(
this << params.m_cellId << params.m_imsi << params.m_timestamp << params.m_rnti
94 << params.m_layer << params.m_mcs << params.m_size << params.m_rv
107 m_dlTxOutFile <<
"% time\tcellId\tIMSI\tRNTI\tlayer\tmcs\tsize\trv\tndi\tccId";
127 NS_LOG_FUNCTION(
this << params.m_cellId << params.m_imsi << params.m_timestamp << params.m_rnti
128 << params.m_layer << params.m_mcs << params.m_size << params.m_rv
142 m_ulTxOutFile <<
"% time\tcellId\tIMSI\tRNTI\tlayer\tmcs\tsize\trv\tndi\tccId";
166 std::ostringstream pathAndRnti;
167 std::string pathEnb = path.substr(0, path.find(
"/ComponentCarrierMap"));
168 pathAndRnti << pathEnb <<
"/LteEnbRrc/UeMap/" << params.m_rnti;
169 if (phyTxStats->ExistsImsiPath(pathAndRnti.str()))
171 imsi = phyTxStats->GetImsiPath(pathAndRnti.str());
176 phyTxStats->SetImsiPath(pathAndRnti.str(), imsi);
179 params.m_imsi = imsi;
180 phyTxStats->DlPhyTransmission(params);
190 std::ostringstream pathAndRnti;
191 pathAndRnti << path <<
"/" << params.m_rnti;
192 std::string pathUePhy = path.substr(0, path.find(
"/ComponentCarrierMapUe"));
193 if (phyTxStats->ExistsImsiPath(pathAndRnti.str()))
195 imsi = phyTxStats->GetImsiPath(pathAndRnti.str());
200 phyTxStats->SetImsiPath(pathAndRnti.str(), imsi);
203 params.m_imsi = imsi;
204 phyTxStats->UlPhyTransmission(params);
Base class for ***StatsCalculator classes.
std::string GetUlOutputFilename()
Get the name of the file where the uplink statistics will be stored.
void SetDlOutputFilename(std::string outputFilename)
Set the name of the file where the downlink statistics will be stored.
static uint64_t FindImsiFromEnbRlcPath(std::string path)
Retrieves IMSI from Enb RLC path in the attribute system.
void SetUlOutputFilename(std::string outputFilename)
Set the name of the file where the uplink statistics will be stored.
std::string GetDlOutputFilename()
Get the name of the file where the downlink statistics will be stored.
static uint64_t FindImsiFromLteNetDevice(std::string path)
Retrieves IMSI from LteNetDevice path in the attribute system.
Takes care of storing the information generated at PHY layer regarding transmission.
bool m_ulTxFirstWrite
When writing UL TX PHY statistics first time to file, columns description is added.
void SetDlTxOutputFilename(std::string outputFilename)
Set the name of the file where the DL TX PHY statistics will be stored.
void SetUlTxOutputFilename(std::string outputFilename)
Set the name of the file where the UL Tx PHY statistics will be stored.
bool m_dlTxFirstWrite
When writing DL TX PHY statistics first time to file, columns description is added.
static void DlPhyTransmissionCallback(Ptr< PhyTxStatsCalculator > phyTxStats, std::string path, PhyTransmissionStatParameters params)
trace sink
PhyTxStatsCalculator()
Constructor.
std::ofstream m_ulTxOutFile
UL TX PHY statistics output trace file.
void DlPhyTransmission(PhyTransmissionStatParameters params)
Notifies the stats calculator that an downlink transmission has occurred.
std::string GetDlTxOutputFilename()
Get the name of the file where the DL TX PHY statistics will be stored.
std::ofstream m_dlTxOutFile
DL TX PHY statistics output trace file.
void UlPhyTransmission(PhyTransmissionStatParameters params)
Notifies the stats calculator that an uplink transmission has occurred.
std::string GetUlTxOutputFilename()
Get the name of the file where the UL RX PHY statistics will be stored.
static TypeId GetTypeId()
Register this type.
static void UlPhyTransmissionCallback(Ptr< PhyTxStatsCalculator > phyTxStats, std::string path, PhyTransmissionStatParameters params)
trace sink
~PhyTxStatsCalculator() override
Destructor.
Smart pointer class similar to boost::intrusive_ptr.
Hold variables of type string.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Ptr< const AttributeChecker > MakeStringChecker()
Ptr< const AttributeAccessor > MakeStringAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
PhyTransmissionStatParameters structure.