A Discrete-Event Network Simulator
API
acoustic-modem-energy-model-helper.cc
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2010 Andrea Sacco
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Author: Andrea Sacco <andrea.sacco85@gmail.com>
19  */
20 
22 #include "ns3/basic-energy-source-helper.h"
23 #include "ns3/uan-phy.h"
24 #include "ns3/uan-net-device.h"
25 #include "ns3/config.h"
26 #include "ns3/names.h"
27 
28 namespace ns3 {
29 
31 {
32  m_modemEnergy.SetTypeId ("ns3::AcousticModemEnergyModel");
34 }
35 
37 {
38 }
39 
40 void
42 {
43  m_modemEnergy.Set (name, v);
44 }
45 
46 void
49 {
50  m_depletionCallback = callback;
51 }
52 
53 /*
54  * Private function starts here.
55  */
56 
59  Ptr<EnergySource> source) const
60 {
61  NS_ASSERT (device != NULL);
62  NS_ASSERT (source != NULL);
63  // check if device is UanNetDevice
64  std::string deviceName = device->GetInstanceTypeId ().GetName ();
65  if (deviceName.compare ("ns3::UanNetDevice") != 0)
66  {
67  NS_FATAL_ERROR ("NetDevice type is not UanNetDevice!");
68  }
69  Ptr<Node> node = device->GetNode ();
71  NS_ASSERT (model != NULL);
72  // set node pointer
73  model->SetNode (node);
74  // set energy source pointer
75  model->SetEnergySource (source);
76  // get phy layer
77  Ptr<UanNetDevice> uanDevice = DynamicCast<UanNetDevice> (device);
78  Ptr<UanPhy> uanPhy = uanDevice->GetPhy ();
79  // set energy depletion callback
80  model->SetEnergyDepletionCallback (m_depletionCallback);
81  // add model to device model list in energy source
82  source->AppendDeviceEnergyModel (model);
83  // set node pointer
84  source->SetNode (node);
85  // create and install energy model callback
88  uanPhy->SetEnergyModelCallback (cb);
89 
90  return model;
91 }
92 
93 } // namespace ns3
ObjectFactory m_modemEnergy
Energy model factory.
AcousticModemEnergyModel::AcousticModemEnergyDepletionCallback m_depletionCallback
Callback for energy depletion.
virtual Ptr< DeviceEnergyModel > DoInstall(Ptr< NetDevice > device, Ptr< EnergySource > source) const
Implements DeviceEnergyModel::Install.
void SetDepletionCallback(AcousticModemEnergyModel::AcousticModemEnergyDepletionCallback callback)
Sets the callback to be invoked when energy is depleted.
void Set(std::string name, const AttributeValue &v)
Sets an attribute of the underlying energy model object.
~AcousticModemEnergyModelHelper()
Destroy an AcousticModemEnergy Helper.
AcousticModemEnergyModelHelper()
Construct a helper which is used to add a radio energy model to a node.
WHOI micro-modem energy model.
Hold a value for an Attribute.
Definition: attribute.h:69
void Nullify(void)
Discard the implementation, set it to null.
Definition: callback.h:1391
virtual void ChangeState(int newState)=0
virtual Ptr< Node > GetNode(void) const =0
void Set(const std::string &name, const AttributeValue &value, Args &&... args)
Set an attribute to be set during construction.
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
Definition: object.cc:79
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:74
std::string GetName(void) const
Get the name.
Definition: type-id.cc:976
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Definition: assert.h:67
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Definition: fatal-error.h:165
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Callback< R, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
Definition: callback.h:1648