14#include "ns3/simulator.h" 
   15#include "ns3/string.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.