Merge branch 'energy-update' into 'master'

BasicEnergySource::UpdateEnergySource

See merge request nsnam/ns-3-dev!48
This commit is contained in:
Alexander Krotov
2019-04-04 13:16:07 +00:00
4 changed files with 10 additions and 15 deletions

View File

@@ -74,7 +74,7 @@ private:
BasicEnergyUpdateTest::BasicEnergyUpdateTest ()
{
m_timeS = 15.5; // idle for 15 seconds before changing state
m_tolerance = 1.0e-13; //
m_tolerance = 1.0e-5; //
}
BasicEnergyUpdateTest::~BasicEnergyUpdateTest ()

View File

@@ -154,14 +154,6 @@ BasicEnergySource::UpdateEnergySource (void)
NS_LOG_FUNCTION (this);
NS_LOG_DEBUG ("BasicEnergySource:Updating remaining energy.");
// do not update if simulation has finished
if (Simulator::IsFinished ())
{
return;
}
m_energyUpdateEvent.Cancel ();
double remainingEnergy = m_remainingEnergyJ;
CalculateRemainingEnergy ();
@@ -182,9 +174,12 @@ BasicEnergySource::UpdateEnergySource (void)
NotifyEnergyChanged ();
}
m_energyUpdateEvent = Simulator::Schedule (m_energyUpdateInterval,
&BasicEnergySource::UpdateEnergySource,
this);
if (m_energyUpdateEvent.IsExpired ())
{
m_energyUpdateEvent = Simulator::Schedule (m_energyUpdateInterval,
&BasicEnergySource::UpdateEnergySource,
this);
}
}
/*

View File

@@ -238,7 +238,7 @@ AnimationRemainingEnergyTestCase::PrepareNetwork (void)
// aggregate energy source to node
m_nodes.Get (0)->AggregateObject (m_energySource);
// once node's energy will be depleted according to the model
Simulator::Stop (Seconds (2));
Simulator::Stop (Seconds (1));
}
void

View File

@@ -199,7 +199,7 @@ AcousticModemEnergyTestCase::DoRun ()
Ptr<EnergySource> src1 = m_gateway->GetObject<EnergySourceContainer> ()->Get (0);
double consumed1 = src1->GetInitialEnergy () - src1->GetRemainingEnergy ();
double computed1 = cont2.Get (0)->GetObject<AcousticModemEnergyModel> ()->GetRxPowerW () * packetDuration * receivedPackets +
cont2.Get (0)->GetObject<AcousticModemEnergyModel> ()->GetIdlePowerW () * (m_simTime - (double) 2.0 / 3.0 - packetDuration * receivedPackets);
cont2.Get (0)->GetObject<AcousticModemEnergyModel> ()->GetIdlePowerW () * (m_simTime - packetDuration * receivedPackets);
NS_TEST_ASSERT_MSG_EQ_TOL (consumed1, computed1, 1.0e-5,
"Incorrect gateway consumed energy!");
@@ -207,7 +207,7 @@ AcousticModemEnergyTestCase::DoRun ()
Ptr<EnergySource> src2 = m_node->GetObject<EnergySourceContainer> ()->Get (0);
double consumed2 = src2->GetInitialEnergy () - src2->GetRemainingEnergy ();
double computed2 = cont.Get (0)->GetObject<AcousticModemEnergyModel> ()->GetTxPowerW () * packetDuration * m_sentPackets +
cont.Get (0)->GetObject<AcousticModemEnergyModel> ()->GetIdlePowerW () * (m_simTime - 1 - packetDuration * m_sentPackets);
cont.Get (0)->GetObject<AcousticModemEnergyModel> ()->GetIdlePowerW () * (m_simTime - packetDuration * m_sentPackets);
NS_TEST_ASSERT_MSG_EQ_TOL (consumed2, computed2, 1.0e-5,
"Incorrect node consumed energy!");