diff --git a/src/lte/helper/radio-bearer-stats-calculator.cc b/src/lte/helper/radio-bearer-stats-calculator.cc index b84000a84..6a685ebac 100644 --- a/src/lte/helper/radio-bearer-stats-calculator.cc +++ b/src/lte/helper/radio-bearer-stats-calculator.cc @@ -33,114 +33,105 @@ NS_LOG_COMPONENT_DEFINE ("RadioBearerStatsCalculator"); NS_OBJECT_ENSURE_REGISTERED ( RadioBearerStatsCalculator); RadioBearerStatsCalculator::RadioBearerStatsCalculator () : - m_firstWrite(true) + m_firstWrite (true) { - NS_LOG_FUNCTION(this); + NS_LOG_FUNCTION (this); } RadioBearerStatsCalculator::~RadioBearerStatsCalculator () { - NS_LOG_FUNCTION(this); - ShowResults(); + NS_LOG_FUNCTION (this); + ShowResults (); } TypeId RadioBearerStatsCalculator::GetTypeId (void) { - static TypeId tid = TypeId("ns3::RadioBearerStatsCalculator") .SetParent< - Object> () .AddConstructor () .AddAttribute( - "StartTime", "Start time of the on going epoch.", TimeValue(Seconds(0.)), - MakeTimeAccessor(&RadioBearerStatsCalculator::m_startTime), - MakeTimeChecker()) .AddAttribute("EpochDuration", "Epoch duration.", - TimeValue(Seconds(0.25)), - MakeTimeAccessor(&RadioBearerStatsCalculator::m_epochDuration), - MakeTimeChecker()); + static TypeId tid = + TypeId ("ns3::RadioBearerStatsCalculator").SetParent ().AddConstructor ().AddAttribute ( + "StartTime", "Start time of the on going epoch.", TimeValue (Seconds (0.)), + MakeTimeAccessor (&RadioBearerStatsCalculator::m_startTime), MakeTimeChecker ()).AddAttribute ("EpochDuration", + "Epoch duration.", TimeValue (Seconds (0.25)), MakeTimeAccessor (&RadioBearerStatsCalculator::m_epochDuration), + MakeTimeChecker ()); return tid; } void -RadioBearerStatsCalculator::UlTxPdu (uint64_t imsi, uint16_t rnti, - uint8_t lcid, uint32_t packetSize) +RadioBearerStatsCalculator::UlTxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize) { - NS_LOG_FUNCTION(this << "UlTxPDU" << imsi << rnti << (uint32_t) lcid << packetSize); - CheckEpoch(); - ImsiLcidPair_t p(imsi, lcid); - if (Simulator::Now() > m_startTime) + NS_LOG_FUNCTION (this << "UlTxPDU" << imsi << rnti << (uint32_t) lcid << packetSize); + CheckEpoch (); + ImsiLcidPair_t p (imsi, lcid); + if (Simulator::Now () > m_startTime) { - m_flowId[p] = LteFlowId_t(rnti, lcid); + m_flowId[p] = LteFlowId_t (rnti, lcid); m_ulTxPackets[p]++; m_ulTxData[p] += packetSize; } } void -RadioBearerStatsCalculator::DlTxPdu (uint16_t cellId, uint64_t imsi, - uint16_t rnti, uint8_t lcid, uint32_t packetSize) +RadioBearerStatsCalculator::DlTxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize) { - NS_LOG_FUNCTION(this << "DlTxPDU" << imsi << rnti << (uint32_t) lcid << packetSize); - CheckEpoch(); - ImsiLcidPair_t p(imsi, lcid); - if (Simulator::Now() > m_startTime) + NS_LOG_FUNCTION (this << "DlTxPDU" << imsi << rnti << (uint32_t) lcid << packetSize); + CheckEpoch (); + ImsiLcidPair_t p (imsi, lcid); + if (Simulator::Now () > m_startTime) { m_dlCellId[p] = cellId; - m_flowId[p] = LteFlowId_t(rnti, lcid); + m_flowId[p] = LteFlowId_t (rnti, lcid); m_dlTxPackets[p]++; m_dlTxData[p] += packetSize; } } void -RadioBearerStatsCalculator::UlRxPdu (uint16_t cellId, uint64_t imsi, - uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay) +RadioBearerStatsCalculator::UlRxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, + uint64_t delay) { - NS_LOG_FUNCTION(this << "UlRxPDU" << imsi << rnti << (uint32_t) lcid << packetSize << delay); - ImsiLcidPair_t p(imsi, lcid); - CheckEpoch(); + NS_LOG_FUNCTION (this << "UlRxPDU" << imsi << rnti << (uint32_t) lcid << packetSize << delay); + ImsiLcidPair_t p (imsi, lcid); + CheckEpoch (); - if (Simulator::Now() > m_startTime) + if (Simulator::Now () > m_startTime) { m_ulCellId[p] = cellId; m_ulRxPackets[p]++; m_ulRxData[p] += packetSize; - Uint64StatsMap::iterator it = m_ulDelay.find(p); - if (it == m_ulDelay.end()) + Uint64StatsMap::iterator it = m_ulDelay.find (p); + if (it == m_ulDelay.end ()) { - NS_LOG_DEBUG( - this << " Creating UL stats calculators for IMSI " << p.m_imsi - << " and LCID " << (uint32_t) p.m_lcId); + NS_LOG_DEBUG (this << " Creating UL stats calculators for IMSI " << p.m_imsi << " and LCID " << (uint32_t) p.m_lcId); m_ulDelay[p] = CreateObject > (); m_ulPduSize[p] = CreateObject > (); } - m_ulDelay[p]->Update(delay); - m_ulPduSize[p]->Update(packetSize); + m_ulDelay[p]->Update (delay); + m_ulPduSize[p]->Update (packetSize); } } void -RadioBearerStatsCalculator::DlRxPdu (uint64_t imsi, uint16_t rnti, - uint8_t lcid, uint32_t packetSize, uint64_t delay) +RadioBearerStatsCalculator::DlRxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay) { - NS_LOG_FUNCTION(this << "DlRxPDU" << imsi << rnti << (uint32_t) lcid << packetSize << delay); - CheckEpoch(); - ImsiLcidPair_t p(imsi, lcid); - if (Simulator::Now() > m_startTime) + NS_LOG_FUNCTION (this << "DlRxPDU" << imsi << rnti << (uint32_t) lcid << packetSize << delay); + CheckEpoch (); + ImsiLcidPair_t p (imsi, lcid); + if (Simulator::Now () > m_startTime) { m_dlRxPackets[p]++; m_dlRxData[p] += packetSize; - Uint64StatsMap::iterator it = m_dlDelay.find(p); - if (it == m_dlDelay.end()) + Uint64StatsMap::iterator it = m_dlDelay.find (p); + if (it == m_dlDelay.end ()) { - NS_LOG_DEBUG( - this << " Creating DL stats calculators for IMSI " << p.m_imsi - << " and LCID " << (uint32_t) p.m_lcId); + NS_LOG_DEBUG (this << " Creating DL stats calculators for IMSI " << p.m_imsi << " and LCID " << (uint32_t) p.m_lcId); m_dlDelay[p] = CreateObject > (); m_dlPduSize[p] = CreateObject > (); } - m_dlDelay[p]->Update(delay); - m_dlPduSize[p]->Update(packetSize); + m_dlDelay[p]->Update (delay); + m_dlPduSize[p]->Update (packetSize); } } @@ -148,199 +139,188 @@ void RadioBearerStatsCalculator::ShowResults (void) { - NS_LOG_FUNCTION( - this << GetUlOutputFilename().c_str() << GetDlOutputFilename().c_str()); - NS_LOG_INFO( - "Write Rlc Stats in " << GetUlOutputFilename().c_str() << " and in " - << GetDlOutputFilename().c_str()); + NS_LOG_FUNCTION (this << GetUlOutputFilename ().c_str () << GetDlOutputFilename ().c_str ()); + NS_LOG_INFO ("Write Rlc Stats in " << GetUlOutputFilename ().c_str () << " and in " << GetDlOutputFilename ().c_str ()); std::ofstream ulOutFile; std::ofstream dlOutFile; if (m_firstWrite == true) { - ulOutFile.open(GetUlOutputFilename().c_str()); - if (!ulOutFile.is_open()) + ulOutFile.open (GetUlOutputFilename ().c_str ()); + if (!ulOutFile.is_open ()) { - NS_LOG_ERROR("Can't open file " << GetUlOutputFilename().c_str()); + NS_LOG_ERROR ("Can't open file " << GetUlOutputFilename ().c_str ()); return; } - dlOutFile.open(GetDlOutputFilename().c_str()); - if (!dlOutFile.is_open()) + dlOutFile.open (GetDlOutputFilename ().c_str ()); + if (!dlOutFile.is_open ()) { - NS_LOG_ERROR("Can't open file " << GetDlOutputFilename().c_str()); + NS_LOG_ERROR ("Can't open file " << GetDlOutputFilename ().c_str ()); return; } m_firstWrite = false; - ulOutFile - << "% start\tend\tCellId\tIMSI\tRNTI\tLCID\tnTxPDUs\tTxBytes\tnRxPDUs\tRxBytes\t"; + ulOutFile << "% start\tend\tCellId\tIMSI\tRNTI\tLCID\tnTxPDUs\tTxBytes\tnRxPDUs\tRxBytes\t"; ulOutFile << "delay\tstdDev\tmin\tmax\t"; ulOutFile << "PduSize\tstdDev\tmin\tmax"; ulOutFile << std::endl; - dlOutFile - << "% start\tend\tCellId\tIMSI\tRNTI\tLCID\tnTxPDUs\tTxBytes\tnRxPDUs\tRxBytes\t"; + dlOutFile << "% start\tend\tCellId\tIMSI\tRNTI\tLCID\tnTxPDUs\tTxBytes\tnRxPDUs\tRxBytes\t"; dlOutFile << "delay\tstdDev\tmin\tmax\t"; dlOutFile << "PduSize\tstdDev\tmin\tmax"; dlOutFile << std::endl; } else { - ulOutFile.open(GetUlOutputFilename().c_str(), std::ios_base::app); - if (!ulOutFile.is_open()) + ulOutFile.open (GetUlOutputFilename ().c_str (), std::ios_base::app); + if (!ulOutFile.is_open ()) { - NS_LOG_ERROR("Can't open file " << GetUlOutputFilename().c_str()); + NS_LOG_ERROR ("Can't open file " << GetUlOutputFilename ().c_str ()); return; } - dlOutFile.open(GetDlOutputFilename().c_str(), std::ios_base::app); - if (!dlOutFile.is_open()) + dlOutFile.open (GetDlOutputFilename ().c_str (), std::ios_base::app); + if (!dlOutFile.is_open ()) { - NS_LOG_ERROR("Can't open file " << GetDlOutputFilename().c_str()); + NS_LOG_ERROR ("Can't open file " << GetDlOutputFilename ().c_str ()); return; } } - WriteUlResults(ulOutFile); - WriteDlResults(dlOutFile); + WriteUlResults (ulOutFile); + WriteDlResults (dlOutFile); } void RadioBearerStatsCalculator::WriteUlResults (std::ofstream& outFile) { - NS_LOG_FUNCTION(this); + NS_LOG_FUNCTION (this); // Get the unique IMSI / LCID list std::vector < ImsiLcidPair_t > pairVector; - for (Uint32Map::iterator it = m_ulTxPackets.begin(); it - != m_ulTxPackets.end(); ++it) + for (Uint32Map::iterator it = m_ulTxPackets.begin (); it != m_ulTxPackets.end (); ++it) { - if (find(pairVector.begin(), pairVector.end(), (*it).first) - == pairVector.end()) + if (find (pairVector.begin (), pairVector.end (), (*it).first) == pairVector.end ()) { - pairVector.push_back((*it).first); + pairVector.push_back ((*it).first); } } Time endTime = m_startTime + m_epochDuration; - for (std::vector::iterator it = pairVector.begin(); it - != pairVector.end(); ++it) + for (std::vector::iterator it = pairVector.begin (); it != pairVector.end (); ++it) { ImsiLcidPair_t p = *it; - outFile << m_startTime.GetNanoSeconds() / 1.0e9 << "\t"; - outFile << endTime.GetNanoSeconds() / 1.0e9 << "\t"; - outFile << GetUlCellId(p.m_imsi, p.m_lcId) << "\t"; + outFile << m_startTime.GetNanoSeconds () / 1.0e9 << "\t"; + outFile << endTime.GetNanoSeconds () / 1.0e9 << "\t"; + outFile << GetUlCellId (p.m_imsi, p.m_lcId) << "\t"; outFile << p.m_imsi << "\t"; outFile << m_flowId[p].m_rnti << "\t"; outFile << (uint32_t) m_flowId[p].m_lcId << "\t"; - outFile << GetUlTxPackets(p.m_imsi, p.m_lcId) << "\t"; - outFile << GetUlTxData(p.m_imsi, p.m_lcId) << "\t"; - outFile << GetUlRxPackets(p.m_imsi, p.m_lcId) << "\t"; - outFile << GetUlRxData(p.m_imsi, p.m_lcId) << "\t"; - std::vector stats = GetUlDelayStats(p.m_imsi, p.m_lcId); - for (std::vector::iterator it = stats.begin(); it != stats.end(); ++it) + outFile << GetUlTxPackets (p.m_imsi, p.m_lcId) << "\t"; + outFile << GetUlTxData (p.m_imsi, p.m_lcId) << "\t"; + outFile << GetUlRxPackets (p.m_imsi, p.m_lcId) << "\t"; + outFile << GetUlRxData (p.m_imsi, p.m_lcId) << "\t"; + std::vector stats = GetUlDelayStats (p.m_imsi, p.m_lcId); + for (std::vector::iterator it = stats.begin (); it != stats.end (); ++it) { outFile << (*it) * 1e-9 << "\t"; } - stats = GetUlPduSizeStats(p.m_imsi, p.m_lcId); - for (std::vector::iterator it = stats.begin(); it != stats.end(); ++it) + stats = GetUlPduSizeStats (p.m_imsi, p.m_lcId); + for (std::vector::iterator it = stats.begin (); it != stats.end (); ++it) { outFile << (*it) << "\t"; } outFile << std::endl; } - outFile.close(); + outFile.close (); } void RadioBearerStatsCalculator::WriteDlResults (std::ofstream& outFile) { - NS_LOG_FUNCTION(this); + NS_LOG_FUNCTION (this); // Get the unique IMSI list std::vector < ImsiLcidPair_t > pairVector; - for (Uint32Map::iterator it = m_dlTxPackets.begin(); it - != m_dlTxPackets.end(); ++it) + for (Uint32Map::iterator it = m_dlTxPackets.begin (); it != m_dlTxPackets.end (); ++it) { - if (find(pairVector.begin(), pairVector.end(), (*it).first) - == pairVector.end()) + if (find (pairVector.begin (), pairVector.end (), (*it).first) == pairVector.end ()) { - pairVector.push_back((*it).first); + pairVector.push_back ((*it).first); } } Time endTime = m_startTime + m_epochDuration; - for (std::vector::iterator pair = pairVector.begin(); pair - != pairVector.end(); ++pair) + for (std::vector::iterator pair = pairVector.begin (); pair != pairVector.end (); ++pair) { ImsiLcidPair_t p = *pair; - outFile << m_startTime.GetNanoSeconds() / 1.0e9 << "\t"; - outFile << endTime.GetNanoSeconds() / 1.0e9 << "\t"; - outFile << GetDlCellId(p.m_imsi, p.m_lcId) << "\t"; + outFile << m_startTime.GetNanoSeconds () / 1.0e9 << "\t"; + outFile << endTime.GetNanoSeconds () / 1.0e9 << "\t"; + outFile << GetDlCellId (p.m_imsi, p.m_lcId) << "\t"; outFile << p.m_imsi << "\t"; outFile << m_flowId[p].m_rnti << "\t"; outFile << (uint32_t) m_flowId[p].m_lcId << "\t"; - outFile << GetDlTxPackets(p.m_imsi, p.m_lcId) << "\t"; - outFile << GetDlTxData(p.m_imsi, p.m_lcId) << "\t"; - outFile << GetDlRxPackets(p.m_imsi, p.m_lcId) << "\t"; - outFile << GetDlRxData(p.m_imsi, p.m_lcId) << "\t"; - std::vector stats = GetDlDelayStats(p.m_imsi, p.m_lcId); - for (std::vector::iterator it = stats.begin(); it != stats.end(); ++it) + outFile << GetDlTxPackets (p.m_imsi, p.m_lcId) << "\t"; + outFile << GetDlTxData (p.m_imsi, p.m_lcId) << "\t"; + outFile << GetDlRxPackets (p.m_imsi, p.m_lcId) << "\t"; + outFile << GetDlRxData (p.m_imsi, p.m_lcId) << "\t"; + std::vector stats = GetDlDelayStats (p.m_imsi, p.m_lcId); + for (std::vector::iterator it = stats.begin (); it != stats.end (); ++it) { outFile << (*it) * 1e-9 << "\t"; } - stats = GetDlPduSizeStats(p.m_imsi, p.m_lcId); - for (std::vector::iterator it = stats.begin(); it != stats.end(); ++it) + stats = GetDlPduSizeStats (p.m_imsi, p.m_lcId); + for (std::vector::iterator it = stats.begin (); it != stats.end (); ++it) { outFile << (*it) << "\t"; } outFile << std::endl; } - outFile.close(); + outFile.close (); } void RadioBearerStatsCalculator::ResetResults (void) { - NS_LOG_FUNCTION(this); + NS_LOG_FUNCTION (this); - m_ulTxPackets.erase(m_ulTxPackets.begin(), m_ulTxPackets.end()); - m_ulRxPackets.erase(m_ulRxPackets.begin(), m_ulRxPackets.end()); - m_ulRxData.erase(m_ulRxData.begin(), m_ulRxData.end()); - m_ulTxData.erase(m_ulTxData.begin(), m_ulTxData.end()); - m_ulDelay.erase(m_ulDelay.begin(), m_ulDelay.end()); - m_ulPduSize.erase(m_ulPduSize.begin(), m_ulPduSize.end()); + m_ulTxPackets.erase (m_ulTxPackets.begin (), m_ulTxPackets.end ()); + m_ulRxPackets.erase (m_ulRxPackets.begin (), m_ulRxPackets.end ()); + m_ulRxData.erase (m_ulRxData.begin (), m_ulRxData.end ()); + m_ulTxData.erase (m_ulTxData.begin (), m_ulTxData.end ()); + m_ulDelay.erase (m_ulDelay.begin (), m_ulDelay.end ()); + m_ulPduSize.erase (m_ulPduSize.begin (), m_ulPduSize.end ()); - m_dlTxPackets.erase(m_dlTxPackets.begin(), m_dlTxPackets.end()); - m_dlRxPackets.erase(m_dlRxPackets.begin(), m_dlRxPackets.end()); - m_dlRxData.erase(m_dlRxData.begin(), m_dlRxData.end()); - m_dlTxData.erase(m_dlTxData.begin(), m_dlTxData.end()); - m_dlDelay.erase(m_dlDelay.begin(), m_dlDelay.end()); - m_dlPduSize.erase(m_dlPduSize.begin(), m_dlPduSize.end()); + m_dlTxPackets.erase (m_dlTxPackets.begin (), m_dlTxPackets.end ()); + m_dlRxPackets.erase (m_dlRxPackets.begin (), m_dlRxPackets.end ()); + m_dlRxData.erase (m_dlRxData.begin (), m_dlRxData.end ()); + m_dlTxData.erase (m_dlTxData.begin (), m_dlTxData.end ()); + m_dlDelay.erase (m_dlDelay.begin (), m_dlDelay.end ()); + m_dlPduSize.erase (m_dlPduSize.begin (), m_dlPduSize.end ()); } void RadioBearerStatsCalculator::CheckEpoch (void) { - NS_LOG_FUNCTION(this); + NS_LOG_FUNCTION (this); - if (Simulator::Now() > m_startTime + m_epochDuration) + if (Simulator::Now () > m_startTime + m_epochDuration) { - ShowResults(); - ResetResults(); - StartEpoch(); + ShowResults (); + ResetResults (); + StartEpoch (); } } void RadioBearerStatsCalculator::StartEpoch (void) { - NS_LOG_FUNCTION(this); - while (Simulator::Now() > m_startTime + m_epochDuration) + NS_LOG_FUNCTION (this); + while (Simulator::Now () > m_startTime + m_epochDuration) { m_startTime += m_epochDuration; } @@ -349,195 +329,191 @@ RadioBearerStatsCalculator::StartEpoch (void) uint32_t RadioBearerStatsCalculator::GetUlTxPackets (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); return m_ulTxPackets[p]; } uint32_t RadioBearerStatsCalculator::GetUlRxPackets (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); return m_ulRxPackets[p]; } uint64_t RadioBearerStatsCalculator::GetUlTxData (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); return m_ulTxData[p]; } uint64_t RadioBearerStatsCalculator::GetUlRxData (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); return m_ulRxData[p]; } double RadioBearerStatsCalculator::GetUlDelay (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); - Uint64StatsMap::iterator it = m_ulDelay.find(p); - if (it == m_ulDelay.end()) + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); + Uint64StatsMap::iterator it = m_ulDelay.find (p); + if (it == m_ulDelay.end ()) { - NS_LOG_ERROR( - "UL delay for " << imsi << " - " << (uint16_t) lcid << " not found"); + NS_LOG_ERROR ("UL delay for " << imsi << " - " << (uint16_t) lcid << " not found"); return 0; } - return m_ulDelay[p]->getMean(); + return m_ulDelay[p]->getMean (); } std::vector RadioBearerStatsCalculator::GetUlDelayStats (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); std::vector stats; - Uint64StatsMap::iterator it = m_ulDelay.find(p); - if (it == m_ulDelay.end()) + Uint64StatsMap::iterator it = m_ulDelay.find (p); + if (it == m_ulDelay.end ()) { - NS_LOG_ERROR( - "UL delay for " << imsi << " - " << (uint16_t) lcid << " not found"); + NS_LOG_ERROR ("UL delay for " << imsi << " - " << (uint16_t) lcid << " not found"); return stats; } - stats.push_back(m_ulDelay[p]->getMean()); - stats.push_back(m_ulDelay[p]->getStddev()); - stats.push_back(m_ulDelay[p]->getMin()); - stats.push_back(m_ulDelay[p]->getMax()); + stats.push_back (m_ulDelay[p]->getMean ()); + stats.push_back (m_ulDelay[p]->getStddev ()); + stats.push_back (m_ulDelay[p]->getMin ()); + stats.push_back (m_ulDelay[p]->getMax ()); return stats; } std::vector RadioBearerStatsCalculator::GetUlPduSizeStats (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); std::vector stats; - Uint32StatsMap::iterator it = m_ulPduSize.find(p); - if (it == m_ulPduSize.end()) + Uint32StatsMap::iterator it = m_ulPduSize.find (p); + if (it == m_ulPduSize.end ()) { - NS_LOG_ERROR( - "UL PDU Size for " << imsi << " - " << (uint16_t) lcid - << " not found"); + NS_LOG_ERROR ("UL PDU Size for " << imsi << " - " << (uint16_t) lcid << " not found"); return stats; } - stats.push_back(m_ulPduSize[p]->getMean()); - stats.push_back(m_ulPduSize[p]->getStddev()); - stats.push_back(m_ulPduSize[p]->getMin()); - stats.push_back(m_ulPduSize[p]->getMax()); + stats.push_back (m_ulPduSize[p]->getMean ()); + stats.push_back (m_ulPduSize[p]->getStddev ()); + stats.push_back (m_ulPduSize[p]->getMin ()); + stats.push_back (m_ulPduSize[p]->getMax ()); return stats; } uint32_t RadioBearerStatsCalculator::GetDlTxPackets (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); return m_dlTxPackets[p]; } uint32_t RadioBearerStatsCalculator::GetDlRxPackets (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); return m_dlRxPackets[p]; } uint64_t RadioBearerStatsCalculator::GetDlTxData (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); return m_dlTxData[p]; } uint64_t RadioBearerStatsCalculator::GetDlRxData (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); return m_dlRxData[p]; } uint32_t RadioBearerStatsCalculator::GetUlCellId (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); return m_ulCellId[p]; } uint32_t RadioBearerStatsCalculator::GetDlCellId (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); return m_dlCellId[p]; } double RadioBearerStatsCalculator::GetDlDelay (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); - Uint64StatsMap::iterator it = m_dlDelay.find(p); - if (it == m_dlDelay.end()) + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); + Uint64StatsMap::iterator it = m_dlDelay.find (p); + if (it == m_dlDelay.end ()) { - NS_LOG_ERROR("DL delay for " << imsi << " not found"); + NS_LOG_ERROR ("DL delay for " << imsi << " not found"); return 0; } - return m_dlDelay[p]->getMean(); + return m_dlDelay[p]->getMean (); } std::vector RadioBearerStatsCalculator::GetDlDelayStats (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); std::vector stats; - Uint64StatsMap::iterator it = m_dlDelay.find(p); - if (it == m_dlDelay.end()) + Uint64StatsMap::iterator it = m_dlDelay.find (p); + if (it == m_dlDelay.end ()) { - NS_LOG_ERROR("DL delay for " << imsi << " not found"); + NS_LOG_ERROR ("DL delay for " << imsi << " not found"); return stats; } - stats.push_back(m_dlDelay[p]->getMean()); - stats.push_back(m_dlDelay[p]->getStddev()); - stats.push_back(m_dlDelay[p]->getMin()); - stats.push_back(m_dlDelay[p]->getMax()); + stats.push_back (m_dlDelay[p]->getMean ()); + stats.push_back (m_dlDelay[p]->getStddev ()); + stats.push_back (m_dlDelay[p]->getMin ()); + stats.push_back (m_dlDelay[p]->getMax ()); return stats; } std::vector RadioBearerStatsCalculator::GetDlPduSizeStats (uint64_t imsi, uint8_t lcid) { - NS_LOG_FUNCTION(this << imsi << (uint16_t) lcid); - ImsiLcidPair_t p(imsi, lcid); + NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); + ImsiLcidPair_t p (imsi, lcid); std::vector stats; - Uint32StatsMap::iterator it = m_dlPduSize.find(p); - if (it == m_dlPduSize.end()) + Uint32StatsMap::iterator it = m_dlPduSize.find (p); + if (it == m_dlPduSize.end ()) { - NS_LOG_ERROR("DL delay for " << imsi << " not found"); + NS_LOG_ERROR ("DL delay for " << imsi << " not found"); return stats; } - stats.push_back(m_dlPduSize[p]->getMean()); - stats.push_back(m_dlPduSize[p]->getStddev()); - stats.push_back(m_dlPduSize[p]->getMin()); - stats.push_back(m_dlPduSize[p]->getMax()); + stats.push_back (m_dlPduSize[p]->getMean ()); + stats.push_back (m_dlPduSize[p]->getStddev ()); + stats.push_back (m_dlPduSize[p]->getMin ()); + stats.push_back (m_dlPduSize[p]->getMax ()); return stats; } diff --git a/src/lte/helper/radio-bearer-stats-calculator.h b/src/lte/helper/radio-bearer-stats-calculator.h index c7a7e4a99..96248b509 100644 --- a/src/lte/helper/radio-bearer-stats-calculator.h +++ b/src/lte/helper/radio-bearer-stats-calculator.h @@ -31,8 +31,8 @@ #include #include -namespace ns3 { - +namespace ns3 +{ typedef std::map Uint32Map; typedef std::map Uint64Map; @@ -41,8 +41,6 @@ typedef std::map > > Uint typedef std::map DoubleMap; typedef std::map FlowIdMap; - - /** * Calculation of statistics from the RLC layer for uplink and downlink, the data is dumped into a file periodically. Metrics considered are: * - Number of transmitted PDUs @@ -65,12 +63,14 @@ public: /** * Class destructor */ - virtual ~RadioBearerStatsCalculator (); + virtual + ~RadioBearerStatsCalculator (); /** * Inherited from ns3::Object */ - static TypeId GetTypeId (void); + static TypeId + GetTypeId (void); /** * Notifies the stats calculator that an uplink transmission has occurred. @@ -79,7 +79,8 @@ public: * @param lcid LCID through which the PDU has been transmitted * @param packetSize size of the PDU in bytes */ - void UlTxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize); + void + UlTxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize); /** * Notifies the stats calculator that an uplink reception has occurred. @@ -90,7 +91,8 @@ public: * @param packetSize size of the PDU in bytes * @param delay RLC to RLC delay in nanoseconds */ - void UlRxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay); + void + UlRxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay); /** * Notifies the stats calculator that an downlink transmission has occurred. @@ -100,7 +102,8 @@ public: * @param lcid LCID through which the PDU has been transmitted * @param packetSize size of the PDU in bytes */ - void DlTxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize); + void + DlTxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize); /** * Notifies the stats calculator that an downlink reception has occurred. @@ -110,7 +113,8 @@ public: * @param packetSize size of the PDU in bytes * @param delay RLC to RLC delay in nanoseconds */ - void DlRxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay); + void + DlRxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay); /** * Gets the number of transmitted uplink packets. @@ -118,7 +122,8 @@ public: * @param lcid LCID * @return number of transmitted uplink packets */ - uint32_t GetUlTxPackets (uint64_t imsi, uint8_t lcid); + uint32_t + GetUlTxPackets (uint64_t imsi, uint8_t lcid); /** * Gets the number of received uplink packets. @@ -126,7 +131,8 @@ public: * @param lcid LCID * @return number of received uplink packets */ - uint32_t GetUlRxPackets (uint64_t imsi, uint8_t lcid); + uint32_t + GetUlRxPackets (uint64_t imsi, uint8_t lcid); /** * Gets the number of transmitted uplink data bytes. @@ -134,7 +140,8 @@ public: * @param lcid LCID * @return number of transmitted data bytes */ - uint64_t GetUlTxData (uint64_t imsi, uint8_t lcid); + uint64_t + GetUlTxData (uint64_t imsi, uint8_t lcid); /** * Gets the number of received uplink data bytes. @@ -142,7 +149,8 @@ public: * @param lcid LCID * @return number of received data bytes */ - uint64_t GetUlRxData (uint64_t imsi, uint8_t lcid); + uint64_t + GetUlRxData (uint64_t imsi, uint8_t lcid); /** * Gets the attached Enb cellId. @@ -150,7 +158,8 @@ public: * @param lcid LCID * @return Enb cellId */ - uint32_t GetUlCellId (uint64_t imsi, uint8_t lcid); + uint32_t + GetUlCellId (uint64_t imsi, uint8_t lcid); /** * Gets the uplink RLC to RLC delay @@ -158,7 +167,8 @@ public: * @param lcid LCID * @return RLC to RLC delay in seconds */ - double GetUlDelay (uint64_t imsi, uint8_t lcid); + double + GetUlDelay (uint64_t imsi, uint8_t lcid); /** * Gets the uplink RLC to RLC statistics: average, min, max and standard deviation. @@ -166,7 +176,8 @@ public: * @param lcid LCID * @return RLC to RLC delay statistics average, min, max and standard deviation in seconds */ - std::vector GetUlDelayStats (uint64_t imsi, uint8_t lcid); + std::vector + GetUlDelayStats (uint64_t imsi, uint8_t lcid); /** * Gets the uplink PDU size statistics: average, min, max and standard deviation. @@ -174,7 +185,8 @@ public: * @param lcid LCID * @return PDU size statistics average, min, max and standard deviation in seconds */ - std::vector GetUlPduSizeStats (uint64_t imsi, uint8_t lcid); + std::vector + GetUlPduSizeStats (uint64_t imsi, uint8_t lcid); /** * Gets the number of transmitted downlink data bytes. @@ -182,7 +194,8 @@ public: * @param lcid LCID * @return number of transmitted data bytes */ - uint32_t GetDlTxPackets (uint64_t imsi, uint8_t lcid); + uint32_t + GetDlTxPackets (uint64_t imsi, uint8_t lcid); /** * Gets the number of received downlink data bytes. @@ -190,7 +203,8 @@ public: * @param lcid LCID * @return number of received data bytes */ - uint32_t GetDlRxPackets (uint64_t imsi, uint8_t lcid); + uint32_t + GetDlRxPackets (uint64_t imsi, uint8_t lcid); /** * Gets the number of transmitted downlink data bytes. @@ -198,7 +212,8 @@ public: * @param lcid LCID * @return number of transmitted data bytes */ - uint64_t GetDlTxData (uint64_t imsi, uint8_t lcid); + uint64_t + GetDlTxData (uint64_t imsi, uint8_t lcid); /** * Gets the number of received downlink data bytes. @@ -206,7 +221,8 @@ public: * @param lcid LCID * @return number of received data bytes */ - uint64_t GetDlRxData (uint64_t imsi, uint8_t lcid); + uint64_t + GetDlRxData (uint64_t imsi, uint8_t lcid); /** * Gets the attached Enb cellId. @@ -214,7 +230,8 @@ public: * @param lcid LCID * @return Enb cellId */ - uint32_t GetDlCellId (uint64_t imsi, uint8_t lcid); + uint32_t + GetDlCellId (uint64_t imsi, uint8_t lcid); /** * Gets the downlink RLC to RLC delay @@ -222,7 +239,8 @@ public: * @param lcid LCID * @return RLC to RLC delay in seconds */ - double GetDlDelay (uint64_t imsi, uint8_t lcid); + double + GetDlDelay (uint64_t imsi, uint8_t lcid); /** * Gets the downlink RLC to RLC statistics: average, min, max and standard deviation. @@ -230,7 +248,8 @@ public: * @param lcid LCID * @return RLC to RLC delay statistics average, min, max and standard deviation in seconds */ - std::vector GetDlDelayStats (uint64_t imsi, uint8_t lcid); + std::vector + GetDlDelayStats (uint64_t imsi, uint8_t lcid); /** * Gets the downlink PDU size statistics: average, min, max and standard deviation. @@ -238,16 +257,23 @@ public: * @param lcid LCID * @return PDU size statistics average, min, max and standard deviation in seconds */ - std::vector GetDlPduSizeStats (uint64_t imsi, uint8_t lcid); + std::vector + GetDlPduSizeStats (uint64_t imsi, uint8_t lcid); private: - void ShowResults (void); - void WriteUlResults (std::ofstream& outFile); - void WriteDlResults (std::ofstream& outFile); - void ResetResults (void); + void + ShowResults (void); + void + WriteUlResults (std::ofstream& outFile); + void + WriteDlResults (std::ofstream& outFile); + void + ResetResults (void); - void StartEpoch (void); - void CheckEpoch (void); + void + StartEpoch (void); + void + CheckEpoch (void); FlowIdMap m_flowId;