23 #include "ns3/simple-device-energy-model.h" 
   24 #include "ns3/uan-net-device.h" 
   25 #include "ns3/simulator.h" 
   26 #include "ns3/packet.h" 
   28 #include "ns3/uan-helper.h" 
   29 #include "ns3/basic-energy-source-helper.h" 
   30 #include "ns3/acoustic-modem-energy-model-helper.h" 
   31 #include "ns3/acoustic-modem-energy-model.h" 
   32 #include "ns3/constant-position-mobility-model.h" 
   33 #include "ns3/uan-channel.h" 
   34 #include "ns3/uan-noise-model-default.h" 
   35 #include "ns3/uan-prop-model-ideal.h" 
   36 #include "ns3/uan-header-common.h" 
   37 #include "ns3/uan-phy.h" 
   56   uint32_t m_sentPackets;
 
   57   uint32_t m_packetSize;
 
   62 AcousticModemEnergyTestCase::AcousticModemEnergyTestCase ()
 
   63   : 
TestCase (
"Acoustic Modem energy model test case"),
 
   71 AcousticModemEnergyTestCase::~AcousticModemEnergyTestCase ()
 
   78 AcousticModemEnergyTestCase::SendOnePacket (Ptr<Node> node)
 
   81   Ptr<Packet> pkt = Create<Packet> (m_packetSize);
 
   83   Ptr<UanNetDevice> dev = node->
GetDevice (0)->GetObject<UanNetDevice> ();
 
   84   dev->Send (pkt, dev->GetBroadcast (), 0);
 
   89                        &AcousticModemEnergyTestCase::SendOnePacket,
 
   95 AcousticModemEnergyTestCase::RxPacket (Ptr<NetDevice> dev, Ptr<const Packet> pkt, uint16_t mode, 
const Address &sender)
 
   98   m_bytesRx += pkt->GetSize ();
 
  107   m_node = CreateObject<Node> ();
 
  112   channel->SetPropagationModel (CreateObject<UanPropModelIdeal> ());
 
  113   channel->SetNoiseModel (noise);
 
  120   uint32_t datarate = devNode->GetPhy ()->GetMode (0).GetDataRateBps ();
 
  122   double packetDuration = (m_packetSize + hd.
GetSerializedSize ()) * 8.0 / (
double) datarate;
 
  126   eh.
Set (
"BasicEnergySourceInitialEnergyJ", 
DoubleValue (10000000.0));
 
  131   mobility->SetPosition (
Vector (0,0,-500));
 
  145   m_gateway = CreateObject<Node> ();
 
  151   eh.
Set (
"BasicEnergySourceInitialEnergyJ", 
DoubleValue (10000000.0));
 
  156   mobility2->SetPosition (
Vector (0,0,0));
 
  165   dev->SetReceiveCallback (
MakeCallback (&AcousticModemEnergyTestCase::RxPacket,
 
  172   uint32_t receivedPackets = m_bytesRx / m_packetSize;
 
  174   double consumed1 = src1->GetInitialEnergy () - src1->GetRemainingEnergy ();
 
  176     cont2.
Get (0)->GetObject<
AcousticModemEnergyModel> ()->GetIdlePowerW () * (m_simTime - (double) 2.0 / 3.0 - packetDuration * receivedPackets);
 
  178   NS_TEST_ASSERT_MSG_EQ_TOL (consumed1, computed1, 1.0e-5,
 
  179                              "Incorrect gateway consumed energy!");
 
  182   double consumed2 = src2->GetInitialEnergy () - src2->GetRemainingEnergy ();
 
  186   NS_TEST_ASSERT_MSG_EQ_TOL (consumed2, computed2, 1.0e-5,
 
  187                              "Incorrect node consumed energy!");
 
  198   void DepletionHandler (
void);
 
  204   uint32_t m_callbackCount;
 
  205   uint32_t m_packetSize;
 
  209 AcousticModemEnergyDepletionTestCase::AcousticModemEnergyDepletionTestCase ()
 
  210   : 
TestCase (
"Acoustic Modem energy depletion test case"),
 
  217 AcousticModemEnergyDepletionTestCase::~AcousticModemEnergyDepletionTestCase ()
 
  223 AcousticModemEnergyDepletionTestCase::DepletionHandler (
void)
 
  230 AcousticModemEnergyDepletionTestCase::SendOnePacket (Ptr<Node> node)
 
  233   Ptr<Packet> pkt = Create<Packet> (m_packetSize);
 
  235   Ptr<UanNetDevice> dev = node->GetDevice (0)->GetObject<UanNetDevice> ();
 
  236   dev->Send (pkt, dev->GetBroadcast (), 0);
 
  239                        &AcousticModemEnergyDepletionTestCase::SendOnePacket,
 
  248   m_node = CreateObject<Node> ();
 
  253   channel->SetPropagationModel (CreateObject<UanPropModelIdeal> ());
 
  254   channel->SetNoiseModel (noise);
 
  267   mobility->SetPosition (
Vector (0,0,0));
 
  275     MakeCallback (&AcousticModemEnergyDepletionTestCase::DepletionHandler, 
this);
 
  288   NS_TEST_ASSERT_MSG_EQ (m_callbackCount, 1, 
"Callback not invoked");
 
  303 UanEnergyModelTestSuite::UanEnergyModelTestSuite ()
 
  311 static UanEnergyModelTestSuite g_uanEnergyModelTestSuite;
 
DeviceEnergyModelContainer Install(Ptr< NetDevice > device, Ptr< EnergySource > source) const 
smart pointer class similar to boost::intrusive_ptr 
Holds a vector of ns3::EnergySource pointers. 
#define NS_LOG_COMPONENT_DEFINE(name)
Assign AcousticModemEnergyModel to uan devices. 
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Holds a vector of ns3::DeviceEnergyModel pointers. 
a polymophic address class 
WHOI micro-modem energy model. 
Creates a BasicEnergySource object. 
Ptr< NetDevice > GetDevice(uint32_t index) const 
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
void DoRun(void)
Implementation to actually run this test case. 
void AggregateObject(Ptr< Object > other)
static void Destroy(void)
Ptr< DeviceEnergyModel > Get(uint32_t i) const 
Get the i-th Ptr<DeviceEnergyModel> stored in this container. 
EnergySourceContainer Install(Ptr< Node > node) const 
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
void DoRun(void)
Implementation to actually run this test case. 
void AddTestCase(TestCase *testCase) NS_DEPRECATED
Add an individual test case to this test suite. 
Time Seconds(double seconds)
create ns3::Time instances in units of seconds. 
void Set(std::string name, const AttributeValue &v)
void SetDepletionCallback(AcousticModemEnergyModel::AcousticModemEnergyDepletionCallback callback)
NetDeviceContainer Install(NodeContainer c) const 
Hold an floating point type. 
Ptr< T > GetObject(void) const