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.