This commit is contained in:
Marco Miozzo
2011-04-13 15:44:13 +02:00
3 changed files with 39 additions and 30 deletions

View File

@@ -95,6 +95,7 @@ RlcStatsCalculator::UlTxPdu (uint16_t rnti, uint8_t lcid, uint32_t packetSize)
{
lteFlowId_t pair (rnti, lcid);
m_ulTxPackets[pair]++;
m_ulTxData[pair] += packetSize;
}
CheckEpoch ();
}
@@ -107,6 +108,7 @@ RlcStatsCalculator::DlTxPdu (uint16_t rnti, uint8_t lcid, uint32_t packetSize)
{
lteFlowId_t pair (rnti, lcid);
m_dlTxPackets[pair]++;
m_dlTxData[pair] += packetSize;
}
CheckEpoch ();
}
@@ -182,13 +184,13 @@ RlcStatsCalculator::ShowResults (void)
return;
}
m_firstWrite = false;
ulOutFile << "# startTime, endTime, RNTI, LCID, nTxPDUs, TxBytes, nRxPDUs, RxBytes, ";
ulOutFile << "delay mean, delay std dev, delay min, delay max, ";
ulOutFile << "PDU size mean, PDU size std dev, PDU size min, PDU size max, ";
ulOutFile << "# start\tend\tRNTI\tLCID\tnTxPDUs\tTxBytes\tnRxPDUs\tRxBytes\t";
ulOutFile << "delay\tstdDev\tmin\tmax\t";
ulOutFile << "PduSize\tstdDev\tmin\tmax";
ulOutFile << std::endl;
dlOutFile << "# startTime, endTime, RNTI, LCID, nTxPDUs, TxBytes, nRxPDUs, RxBytes, ";
dlOutFile << "delay mean, delay std dev, delay min, delay max, ";
dlOutFile << "PDU size mean, PDU size std dev, PDU size min, PDU size max, ";
dlOutFile << "# start\tend\tRNTI\tLCID\tnTxPDUs\tTxBytes\tnRxPDUs\tRxBytes\t";
dlOutFile << "delay\tstdDev\tmin\tmax\t";
dlOutFile << "PduSize\tstdDev\tmin\tmax";
dlOutFile << std::endl;
}
else
@@ -232,23 +234,23 @@ RlcStatsCalculator::WriteUlResults (std::ofstream& outFile)
Time endTime = m_startTime + m_epochDuration;
for ( itFlow = lteFlowIds.begin(); itFlow != lteFlowIds.end(); ++itFlow)
{
outFile << m_startTime.GetNanoSeconds () / 1.0e9 << " ";
outFile << endTime.GetNanoSeconds() / 1.0e9 << " ";
outFile << (*itFlow).m_rnti << " ";
outFile << (uint32_t) (*itFlow).m_lcId << " ";
outFile << GetUlTxPackets (*itFlow) << " ";
outFile << GetUlTxData (*itFlow) << " ";
outFile << GetUlRxPackets (*itFlow) << " ";
outFile << GetUlRxData (*itFlow) << " ";
outFile << m_startTime.GetNanoSeconds () / 1.0e9 << "\t";
outFile << endTime.GetNanoSeconds() / 1.0e9 << "\t";
outFile << (*itFlow).m_rnti << "\t";
outFile << (uint32_t) (*itFlow).m_lcId << "\t";
outFile << GetUlTxPackets (*itFlow) << "\t";
outFile << GetUlTxData (*itFlow) << "\t";
outFile << GetUlRxPackets (*itFlow) << "\t";
outFile << GetUlRxData (*itFlow) << "\t";
std::vector<double> stats = GetUlDelayStats (*itFlow);
for( std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it )
{
outFile << (*it) * 1e-9 << " ";
outFile << (*it) * 1e-9 << "\t";
}
stats = GetUlPduSizeStats (*itFlow);
for( std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it )
{
outFile << (*it) << " ";
outFile << (*it) << "\t";
}
outFile << std::endl;
}
@@ -275,23 +277,23 @@ RlcStatsCalculator::WriteDlResults (std::ofstream& outFile)
Time endTime = m_startTime + m_epochDuration;
for ( itFlow = lteFlowIds.begin(); itFlow != lteFlowIds.end(); ++itFlow)
{
outFile << m_startTime.GetNanoSeconds () / 1.0e9 << " ";
outFile << endTime.GetNanoSeconds() / 1.0e9 << " ";
outFile << (*itFlow).m_rnti << " ";
outFile << (uint32_t) (*itFlow).m_lcId << " ";
outFile << GetDlTxPackets (*itFlow) << " ";
outFile << GetDlTxData (*itFlow) << " ";
outFile << GetDlRxPackets (*itFlow) << " ";
outFile << GetDlRxData (*itFlow) << " ";
outFile << m_startTime.GetNanoSeconds () / 1.0e9 << "\t";
outFile << endTime.GetNanoSeconds() / 1.0e9 << "\t";
outFile << (*itFlow).m_rnti << "\t";
outFile << (uint32_t) (*itFlow).m_lcId << "\t";
outFile << GetDlTxPackets (*itFlow) << "\t";
outFile << GetDlTxData (*itFlow) << "\t";
outFile << GetDlRxPackets (*itFlow) << "\t";
outFile << GetDlRxData (*itFlow) << "\t";
std::vector<double> stats = GetDlDelayStats (*itFlow);
for( std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it )
{
outFile << (*it) * 1e-9 << " ";
outFile << (*it) * 1e-9 << "\t";
}
stats = GetDlPduSizeStats (*itFlow);
for( std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it )
{
outFile << (*it) << " ";
outFile << (*it) << "\t";
}
outFile << std::endl;
}
@@ -304,12 +306,16 @@ RlcStatsCalculator::ResetResults (void)
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 () );
}
void

View File

@@ -32,6 +32,7 @@ namespace ns3 {
SpectrumValue::SpectrumValue ()
: m_values (0)
{
}

View File

@@ -44,15 +44,15 @@ namespace ns3 {
double getMin() const { return m_min; }
double getMax() const { return m_max; }
double getMean() const { return m_total / (double)m_count; }
double getStddev() const { return NaN; } // unsupported
double getVariance() const { return NaN; } // unsupported
double getSqrSum() const { return NaN; } // unsupported
double getStddev() const { return sqrt (getVariance ()); }
double getVariance() const { return ( m_count * m_totalSquare - m_total * m_total ) / (double) (m_count * (m_count - 1) ); }
double getSqrSum() const { return m_totalSquare; }
protected:
virtual void DoDispose(void);
uint32_t m_count;
T m_total, m_min, m_max;
T m_total, m_min, m_max, m_totalSquare;
// end MinMaxAvgTotalCalculator
};
@@ -63,6 +63,7 @@ namespace ns3 {
{
m_count = 0;
m_total = 0;
m_totalSquare = 0;
m_min = ~0;
m_max = 0;
}
@@ -85,6 +86,7 @@ namespace ns3 {
{
if (m_enabled) {
m_total += i;
m_totalSquare += i*i;
if (i < m_min)
m_min = i;