A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
energy-model-helper.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2010 Network Security Lab, University of Washington, Seattle.
3
*
4
* SPDX-License-Identifier: GPL-2.0-only
5
*
6
* Authors: Sidharth Nabar <snabar@uw.edu>, He Wu <mdzz@u.washington.edu>
7
*/
8
9
#include "
energy-model-helper.h
"
10
11
#include "ns3/config.h"
12
#include "ns3/names.h"
13
14
namespace
ns3
15
{
16
17
/*
18
* EnergySourceHelper
19
*/
20
EnergySourceHelper::~EnergySourceHelper
()
21
{
22
}
23
24
energy::EnergySourceContainer
25
EnergySourceHelper::Install
(
Ptr<Node>
node)
const
26
{
27
return
Install
(
NodeContainer
(node));
28
}
29
30
energy::EnergySourceContainer
31
EnergySourceHelper::Install
(
NodeContainer
c
)
const
32
{
33
energy::EnergySourceContainer
container;
34
for
(
auto
i
=
c
.Begin();
i
!=
c
.End(); ++
i
)
35
{
36
Ptr<energy::EnergySource>
src =
DoInstall
(*
i
);
37
container.Add(src);
38
/*
39
* Check if EnergySourceContainer is already aggregated to target node. If
40
* not, create a new EnergySourceContainer and aggregate it to node.
41
*/
42
Ptr<energy::EnergySourceContainer>
EnergySourceContainerOnNode
=
43
(*i)->GetObject<
energy::EnergySourceContainer
>();
44
if
(!
EnergySourceContainerOnNode
)
45
{
46
ObjectFactory
fac
;
47
fac
.
SetTypeId
(
"ns3::energy::EnergySourceContainer"
);
48
EnergySourceContainerOnNode
=
fac
.Create<
energy::EnergySourceContainer
>();
49
EnergySourceContainerOnNode
->
Add
(src);
50
(*i)->AggregateObject(
EnergySourceContainerOnNode
);
51
}
52
else
53
{
54
EnergySourceContainerOnNode
->Add(src);
// append new EnergySource
55
}
56
}
57
return
container;
58
}
59
60
energy::EnergySourceContainer
61
EnergySourceHelper::Install
(std::string
nodeName
)
const
62
{
63
Ptr<Node>
node = Names::Find<Node>(
nodeName
);
64
return
Install
(node);
65
}
66
67
energy::EnergySourceContainer
68
EnergySourceHelper::InstallAll
()
const
69
{
70
return
Install
(
NodeContainer::GetGlobal
());
71
}
72
73
/*
74
* DeviceEnergyModelHelper
75
*/
76
DeviceEnergyModelHelper::~DeviceEnergyModelHelper
()
77
{
78
}
79
80
energy::DeviceEnergyModelContainer
81
DeviceEnergyModelHelper::Install
(
Ptr<NetDevice>
device,
Ptr<energy::EnergySource>
source
)
const
82
{
83
NS_ASSERT
(device);
84
NS_ASSERT
(
source
);
85
// check to make sure source and net device are on the same node
86
NS_ASSERT
(device->GetNode() ==
source
->GetNode());
87
energy::DeviceEnergyModelContainer
container(
DoInstall
(device,
source
));
88
return
container;
89
}
90
91
energy::DeviceEnergyModelContainer
92
DeviceEnergyModelHelper::Install
(
NetDeviceContainer
deviceContainer
,
93
energy::EnergySourceContainer
sourceContainer
)
const
94
{
95
NS_ASSERT
(
deviceContainer
.GetN() <=
sourceContainer
.GetN());
96
energy::DeviceEnergyModelContainer
container;
97
auto
dev =
deviceContainer
.Begin();
98
auto
src =
sourceContainer
.Begin();
99
while
(dev !=
deviceContainer
.End())
100
{
101
// check to make sure source and net device are on the same node
102
NS_ASSERT
((*dev)->GetNode() == (*src)->GetNode());
103
Ptr<energy::DeviceEnergyModel>
model
=
DoInstall
(*dev, *src);
104
container.Add(
model
);
105
dev++;
106
src++;
107
}
108
return
container;
109
}
110
111
}
// namespace ns3
ns3::DeviceEnergyModelHelper::Install
energy::DeviceEnergyModelContainer Install(Ptr< NetDevice > device, Ptr< energy::EnergySource > source) const
Definition
energy-model-helper.cc:81
ns3::DeviceEnergyModelHelper::DoInstall
virtual Ptr< energy::DeviceEnergyModel > DoInstall(Ptr< NetDevice > device, Ptr< energy::EnergySource > source) const =0
ns3::DeviceEnergyModelHelper::~DeviceEnergyModelHelper
virtual ~DeviceEnergyModelHelper()
Definition
energy-model-helper.cc:76
ns3::EnergySourceHelper::~EnergySourceHelper
virtual ~EnergySourceHelper()
Definition
energy-model-helper.cc:20
ns3::EnergySourceHelper::InstallAll
energy::EnergySourceContainer InstallAll() const
This function installs an EnergySource on all nodes in simulation.
Definition
energy-model-helper.cc:68
ns3::EnergySourceHelper::Install
energy::EnergySourceContainer Install(Ptr< Node > node) const
Definition
energy-model-helper.cc:25
ns3::EnergySourceHelper::DoInstall
virtual Ptr< energy::EnergySource > DoInstall(Ptr< Node > node) const =0
ns3::NetDeviceContainer
holds a vector of ns3::NetDevice pointers
Definition
net-device-container.h:32
ns3::NodeContainer
keep track of a set of node pointers.
Definition
node-container.h:29
ns3::NodeContainer::GetGlobal
static NodeContainer GetGlobal()
Create a NodeContainer that contains a list of all nodes created through NodeContainer::Create() and ...
Definition
node-container.cc:17
ns3::ObjectFactory
Instantiate subclasses of ns3::Object.
Definition
object-factory.h:37
ns3::ObjectFactory::SetTypeId
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
Definition
object-factory.cc:31
ns3::Ptr
Smart pointer class similar to boost::intrusive_ptr.
Definition
ptr.h:66
ns3::energy::DeviceEnergyModelContainer
Holds a vector of ns3::DeviceEnergyModel pointers.
Definition
device-energy-model-container.h:36
ns3::energy::EnergySourceContainer
Holds a vector of ns3::EnergySource pointers.
Definition
energy-source-container.h:37
ns3::energy::EnergySourceContainer::Add
void Add(EnergySourceContainer container)
Definition
energy-source-container.cc:86
energy-model-helper.h
NS_ASSERT
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Definition
assert.h:55
ns3::Create
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition
ptr.h:436
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
src
energy
helper
energy-model-helper.cc
Generated on Mon Dec 15 2025 15:21:52 for ns-3 by
1.9.8