diff --git a/src/lte/helper/lte-helper.cc b/src/lte/helper/lte-helper.cc index 018492db2..4ee978789 100644 --- a/src/lte/helper/lte-helper.cc +++ b/src/lte/helper/lte-helper.cc @@ -1068,13 +1068,13 @@ LteHelper::EnablePhyTraces (void) void -ReportCurrentCellRsrpRsrqCallback (Ptr phyStats, +ReportCurrentCellRsrpSinrCallback (Ptr phyStats, std::string path, uint16_t cellId, uint16_t rnti, - double rsrp, double rsrq) + double rsrp, double sinr) { NS_LOG_FUNCTION (phyStats << path); uint64_t imsi = 0; - std::string pathUePhy = path.substr (0, path.find ("/ReportCurrentCellRsrpRsrq")); + std::string pathUePhy = path.substr (0, path.find ("/ReportCurrentCellRsrpSinr")); if (phyStats->ExistsImsiPath (pathUePhy) == true) { imsi = phyStats->GetImsiPath (pathUePhy); @@ -1085,15 +1085,15 @@ ReportCurrentCellRsrpRsrqCallback (Ptr phyStats, phyStats->SetImsiPath (pathUePhy, imsi); } - phyStats->ReportCurrentCellRsrpRsrq (cellId, imsi, rnti, rsrp,rsrq); + phyStats->ReportCurrentCellRsrpSinr (cellId, imsi, rnti, rsrp,sinr); } void LteHelper::EnableDlPhyTraces (void) { NS_LOG_FUNCTION_NOARGS (); - Config::Connect ("/NodeList/*/DeviceList/*/LteUePhy/ReportCurrentCellRsrpRsrq", - MakeBoundCallback (&ReportCurrentCellRsrpRsrqCallback, m_phyStats)); + Config::Connect ("/NodeList/*/DeviceList/*/LteUePhy/ReportCurrentCellRsrpSinr", + MakeBoundCallback (&ReportCurrentCellRsrpSinrCallback, m_phyStats)); } void diff --git a/src/lte/helper/phy-stats-calculator.cc b/src/lte/helper/phy-stats-calculator.cc index bb4e87794..fe873e749 100644 --- a/src/lte/helper/phy-stats-calculator.cc +++ b/src/lte/helper/phy-stats-calculator.cc @@ -30,7 +30,7 @@ NS_LOG_COMPONENT_DEFINE ("PhyStatsCalculator"); NS_OBJECT_ENSURE_REGISTERED (PhyStatsCalculator); PhyStatsCalculator::PhyStatsCalculator () - : m_RsrpRsrqFirstWrite (true), + : m_RsrpSinrFirstWrite (true), m_UeSinrFirstWrite (true), m_InterferenceFirstWrite (true) { @@ -49,10 +49,10 @@ PhyStatsCalculator::GetTypeId (void) static TypeId tid = TypeId ("ns3::PhyStatsCalculator") .SetParent () .AddConstructor () - .AddAttribute ("DlRsrpRsrqFilename", - "Name of the file where the RSRP/RSRQ statistics will be saved.", - StringValue ("DlRsrpRsrqStats.txt"), - MakeStringAccessor (&PhyStatsCalculator::SetCurrentCellRsrpRsrqFilename), + .AddAttribute ("DlRsrpSinrFilename", + "Name of the file where the RSRP/SINR statistics will be saved.", + StringValue ("DlRsrpSinrStats.txt"), + MakeStringAccessor (&PhyStatsCalculator::SetCurrentCellRsrpSinrFilename), MakeStringChecker ()) .AddAttribute ("UlSinrFilename", "Name of the file where the UE SINR statistics will be saved.", @@ -69,15 +69,15 @@ PhyStatsCalculator::GetTypeId (void) } void -PhyStatsCalculator::SetCurrentCellRsrpRsrqFilename (std::string filename) +PhyStatsCalculator::SetCurrentCellRsrpSinrFilename (std::string filename) { - m_RsrpRsrqFilename = filename; + m_RsrpSinrFilename = filename; } std::string -PhyStatsCalculator::GetCurrentCellRsrpRsrqFilename (void) +PhyStatsCalculator::GetCurrentCellRsrpSinrFilename (void) { - return m_RsrpRsrqFilename; + return m_RsrpSinrFilename; } void @@ -107,31 +107,31 @@ PhyStatsCalculator::GetInterferenceFilename (void) void -PhyStatsCalculator::ReportCurrentCellRsrpRsrq (uint16_t cellId, uint64_t imsi, uint16_t rnti, - double rsrp, double rsrq) +PhyStatsCalculator::ReportCurrentCellRsrpSinr (uint16_t cellId, uint64_t imsi, uint16_t rnti, + double rsrp, double sinr) { - NS_LOG_FUNCTION (this << cellId << imsi << rnti << rsrp << rsrq); - NS_LOG_INFO ("Write RSRP/RSRQ Phy Stats in " << GetCurrentCellRsrpRsrqFilename ().c_str ()); + NS_LOG_FUNCTION (this << cellId << imsi << rnti << rsrp << sinr); + NS_LOG_INFO ("Write RSRP/SINR Phy Stats in " << GetCurrentCellRsrpSinrFilename ().c_str ()); std::ofstream outFile; - if ( m_RsrpRsrqFirstWrite == true ) + if ( m_RsrpSinrFirstWrite == true ) { - outFile.open (GetCurrentCellRsrpRsrqFilename ().c_str ()); + outFile.open (GetCurrentCellRsrpSinrFilename ().c_str ()); if (!outFile.is_open ()) { - NS_LOG_ERROR ("Can't open file " << GetCurrentCellRsrpRsrqFilename ().c_str ()); + NS_LOG_ERROR ("Can't open file " << GetCurrentCellRsrpSinrFilename ().c_str ()); return; } - m_RsrpRsrqFirstWrite = false; - outFile << "% time\tcellId\tIMSI\tRNTI\trsrp\trsrq"; + m_RsrpSinrFirstWrite = false; + outFile << "% time\tcellId\tIMSI\tRNTI\trsrp\tsinr"; outFile << std::endl; } else { - outFile.open (GetCurrentCellRsrpRsrqFilename ().c_str (), std::ios_base::app); + outFile.open (GetCurrentCellRsrpSinrFilename ().c_str (), std::ios_base::app); if (!outFile.is_open ()) { - NS_LOG_ERROR ("Can't open file " << GetCurrentCellRsrpRsrqFilename ().c_str ()); + NS_LOG_ERROR ("Can't open file " << GetCurrentCellRsrpSinrFilename ().c_str ()); return; } } @@ -141,7 +141,7 @@ PhyStatsCalculator::ReportCurrentCellRsrpRsrq (uint16_t cellId, uint64_t imsi, u outFile << imsi << "\t"; outFile << rnti << "\t"; outFile << rsrp << "\t"; - outFile << rsrq << std::endl; + outFile << sinr << std::endl; outFile.close (); } diff --git a/src/lte/helper/phy-stats-calculator.h b/src/lte/helper/phy-stats-calculator.h index aebeb322c..433c9ddcc 100644 --- a/src/lte/helper/phy-stats-calculator.h +++ b/src/lte/helper/phy-stats-calculator.h @@ -32,12 +32,12 @@ namespace ns3 { /** * Takes care of storing the information generated at PHY layer. Metrics saved are: - * - RSRP/RSRQ for DL + * - RSRP and average SINR for DL * - Timestamp (in seconds) * - IMSI * - C-RNTI * - RSRP - * - RSRQ + * - SINR * - UE SINR * - Timestamp (in seconds) * - Cell ID of the reported Enb @@ -69,16 +69,16 @@ public: static TypeId GetTypeId (void); /** - * Set the name of the file where the RSRP/RSRQ statistics will be stored. + * Set the name of the file where the RSRP/SINR statistics will be stored. * * \param filename string with the name of the file */ - void SetCurrentCellRsrpRsrqFilename (std::string filename); + void SetCurrentCellRsrpSinrFilename (std::string filename); /** - * Get the name of the file where the RSRP/RSRQ statistics will be stored. + * Get the name of the file where the RSRP/SINR statistics will be stored. */ - std::string GetCurrentCellRsrpRsrqFilename (void); + std::string GetCurrentCellRsrpSinrFilename (void); /** * Set the name of the file where the UE SINR statistics will be stored. @@ -105,13 +105,13 @@ public: std::string GetInterferenceFilename (void); /** - * Notifies the stats calculator that an RSRP and RSRQ report has occurred. + * Notifies the stats calculator that an RSRP and SINR report has occurred. * @param imsi IMSI of the scheduled UE * @param rnti C-RNTI scheduled * @param rsrp Reference Signal Received Power - * @param rsrq Reference Signal Received Quality + * @param sinr SINR averaged among RBs */ - void ReportCurrentCellRsrpRsrq (uint16_t cellId, uint64_t imsi, uint16_t rnti, double rsrp, double rsrq); + void ReportCurrentCellRsrpSinr (uint16_t cellId, uint64_t imsi, uint16_t rnti, double rsrp, double sinr); /** * Notifies the stats calculator that an UE SINR report has occurred. @@ -131,11 +131,11 @@ public: void ReportInterference (uint16_t cellId, Ptr interference); private: - bool m_RsrpRsrqFirstWrite; + bool m_RsrpSinrFirstWrite; bool m_UeSinrFirstWrite; bool m_InterferenceFirstWrite; - std::string m_RsrpRsrqFilename; + std::string m_RsrpSinrFilename; std::string m_ueSinrFilename; std::string m_interferenceFilename; diff --git a/src/lte/model/lte-ue-phy.cc b/src/lte/model/lte-ue-phy.cc index decf3b0a3..5f880b8c7 100644 --- a/src/lte/model/lte-ue-phy.cc +++ b/src/lte/model/lte-ue-phy.cc @@ -129,7 +129,7 @@ LteUePhy::LteUePhy (Ptr dlPhy, Ptr ulPhy) m_rnti (0), m_srsPeriodicity (0), m_rsReceivedPowerUpdated (false), - m_rsrpRsrqSampleCounter (0) + m_rsrpSinrSampleCounter (0) { m_amc = CreateObject (); m_uePhySapProvider = new UeMemberLteUePhySapProvider (this); @@ -226,13 +226,13 @@ LteUePhy::GetTypeId (void) DoubleValue (0.0), MakeDoubleAccessor (&LteUePhy::SetTxMode7Gain ), MakeDoubleChecker ()) - .AddTraceSource ("ReportCurrentCellRsrpRsrq", - "RSRP and RSRQ statistics.", - MakeTraceSourceAccessor (&LteUePhy::m_reportCurrentCellRsrpRsrqTrace)) - .AddAttribute ("RsrpRsrqSamplePeriod", - "The sampling period for reporting RSRP-RSRQ stats (default value 1)", + .AddTraceSource ("ReportCurrentCellRsrpSinr", + "RSRP and SINR statistics.", + MakeTraceSourceAccessor (&LteUePhy::m_reportCurrentCellRsrpSinrTrace)) + .AddAttribute ("RsrpSinrSamplePeriod", + "The sampling period for reporting RSRP-SINR stats (default value 1)", UintegerValue (1), - MakeUintegerAccessor (&LteUePhy::m_rsrpRsrqSamplePeriod), + MakeUintegerAccessor (&LteUePhy::m_rsrpSinrSamplePeriod), MakeUintegerChecker ()) ; return tid; @@ -424,8 +424,8 @@ LteUePhy::CreateDlCqiFeedbackMessage (const SpectrumValue& sinr) SpectrumValue newSinr = sinr; newSinr *= m_txModeGain.at (m_transmissionMode); - m_rsrpRsrqSampleCounter++; - if (m_rsrpRsrqSampleCounter==m_rsrpRsrqSamplePeriod) + m_rsrpSinrSampleCounter++; + if (m_rsrpSinrSampleCounter==m_rsrpSinrSamplePeriod) { NS_ASSERT_MSG (m_rsReceivedPowerUpdated, " RS received power info obsolete"); // RSRP evaluated as averaged received power among RBs @@ -438,17 +438,17 @@ LteUePhy::CreateDlCqiFeedbackMessage (const SpectrumValue& sinr) rbNum++; } double rsrp = sum / (double)rbNum; - // RSRQ evaluated as averaged SINR among RBs + // averaged SINR among RBs for (it = sinr.ConstValuesBegin (); it != sinr.ConstValuesEnd (); it++) { sum += (*it); rbNum++; } - double rsrq = sum / (double)rbNum; - NS_LOG_INFO (this << " cellId " << m_cellId << " rnti " << m_rnti << " RSRP " << rsrp << " RSRQ " << rsrq); + double avSinr = sum / (double)rbNum; + NS_LOG_INFO (this << " cellId " << m_cellId << " rnti " << m_rnti << " RSRP " << rsrp << " SINR " << avSinr); - m_reportCurrentCellRsrpRsrqTrace (m_cellId, m_rnti, rsrp, rsrq); - m_rsrpRsrqSampleCounter = 0; + m_reportCurrentCellRsrpSinrTrace (m_cellId, m_rnti, rsrp, avSinr); + m_rsrpSinrSampleCounter = 0; } diff --git a/src/lte/model/lte-ue-phy.h b/src/lte/model/lte-ue-phy.h index 0e8db157b..7ccb567c6 100644 --- a/src/lte/model/lte-ue-phy.h +++ b/src/lte/model/lte-ue-phy.h @@ -273,12 +273,12 @@ private: Ptr m_harqPhyModule; /** - * Trace information regarding RSRP and RSRQ (see TS 36.214) - * uint16_t cellId, uint16_t rnti, double rsrp, double rsrq + * Trace information regarding RSRP and average SINR (see TS 36.214) + * uint16_t cellId, uint16_t rnti, double rsrp, double sinr */ - TracedCallback m_reportCurrentCellRsrpRsrqTrace; - uint16_t m_rsrpRsrqSamplePeriod; - uint16_t m_rsrpRsrqSampleCounter; + TracedCallback m_reportCurrentCellRsrpSinrTrace; + uint16_t m_rsrpSinrSamplePeriod; + uint16_t m_rsrpSinrSampleCounter; };