Skip to content

Commit

Permalink
energy: Adds energy namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
Alberto Gallegos Ramonet authored and Gabrielcarvfer committed May 19, 2024
1 parent 2fcfe2a commit 314c58a
Show file tree
Hide file tree
Showing 69 changed files with 218 additions and 131 deletions.
1 change: 1 addition & 0 deletions examples/energy/energy-model-example.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#include <vector>

using namespace ns3;
using namespace ns3::energy;

NS_LOG_COMPONENT_DEFINE("EnergyExample");

Expand Down
1 change: 1 addition & 0 deletions examples/energy/energy-model-with-harvesting-example.cc
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
#include <vector>

using namespace ns3;
using namespace ns3::energy;

NS_LOG_COMPONENT_DEFINE("EnergyWithHarvestingExample");

Expand Down
1 change: 1 addition & 0 deletions examples/wireless/wifi-sleep.cc
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
#include "ns3/yans-wifi-helper.h"

using namespace ns3;
using namespace ns3::energy;

NS_LOG_COMPONENT_DEFINE("WifiSleep");

Expand Down
1 change: 1 addition & 0 deletions src/energy/examples/basic-energy-model-test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include <cmath>

using namespace ns3;
using namespace ns3::energy;

NS_LOG_COMPONENT_DEFINE("BasicEnergyModelTestSuite");

Expand Down
1 change: 1 addition & 0 deletions src/energy/examples/generic-battery-discharge-example.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include <string>

using namespace ns3;
using namespace ns3::energy;

/**
* This example shows the use of batteries in ns-3.
Expand Down
1 change: 1 addition & 0 deletions src/energy/examples/generic-battery-wifiradio-example.cc
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
#include <string>

using namespace ns3;
using namespace ns3::energy;

NS_LOG_COMPONENT_DEFINE("GenericBatteryWifiRadioExample");

Expand Down
1 change: 1 addition & 0 deletions src/energy/examples/li-ion-energy-source-example.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "ns3/simulator.h"

using namespace ns3;
using namespace ns3::energy;

/**
* In this simple example, we show how to create and drain energy from a
Expand Down
1 change: 1 addition & 0 deletions src/energy/examples/rv-battery-model-test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include <cmath>

using namespace ns3;
using namespace ns3::energy;

NS_LOG_COMPONENT_DEFINE("RvBatteryModelTestSuite");

Expand Down
7 changes: 4 additions & 3 deletions src/energy/helper/basic-energy-harvester-helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,15 @@ BasicEnergyHarvesterHelper::Set(std::string name, const AttributeValue& v)
m_basicEnergyHarvester.Set(name, v);
}

Ptr<EnergyHarvester>
BasicEnergyHarvesterHelper::DoInstall(Ptr<EnergySource> source) const
Ptr<energy::EnergyHarvester>
BasicEnergyHarvesterHelper::DoInstall(Ptr<energy::EnergySource> source) const
{
NS_ASSERT(source);
Ptr<Node> node = source->GetNode();

// Create a new Basic Energy Harvester
Ptr<EnergyHarvester> harvester = m_basicEnergyHarvester.Create<EnergyHarvester>();
Ptr<energy::EnergyHarvester> harvester =
m_basicEnergyHarvester.Create<energy::EnergyHarvester>();
NS_ASSERT(harvester);

// Connect the Basic Energy Harvester to the Energy Source
Expand Down
2 changes: 1 addition & 1 deletion src/energy/helper/basic-energy-harvester-helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class BasicEnergyHarvesterHelper : public EnergyHarvesterHelper
void Set(std::string name, const AttributeValue& v) override;

private:
Ptr<EnergyHarvester> DoInstall(Ptr<EnergySource> source) const override;
Ptr<energy::EnergyHarvester> DoInstall(Ptr<energy::EnergySource> source) const override;

private:
ObjectFactory m_basicEnergyHarvester; //!< Energy source factory
Expand Down
4 changes: 2 additions & 2 deletions src/energy/helper/basic-energy-source-helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@ BasicEnergySourceHelper::Set(std::string name, const AttributeValue& v)
m_basicEnergySource.Set(name, v);
}

Ptr<EnergySource>
Ptr<energy::EnergySource>
BasicEnergySourceHelper::DoInstall(Ptr<Node> node) const
{
NS_ASSERT(node);
Ptr<EnergySource> source = m_basicEnergySource.Create<EnergySource>();
Ptr<energy::EnergySource> source = m_basicEnergySource.Create<energy::EnergySource>();
NS_ASSERT(source);
source->SetNode(node);
return source;
Expand Down
2 changes: 1 addition & 1 deletion src/energy/helper/basic-energy-source-helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class BasicEnergySourceHelper : public EnergySourceHelper
void Set(std::string name, const AttributeValue& v) override;

private:
Ptr<EnergySource> DoInstall(Ptr<Node> node) const override;
Ptr<energy::EnergySource> DoInstall(Ptr<Node> node) const override;

private:
ObjectFactory m_basicEnergySource; //!< Energy source factory
Expand Down
4 changes: 3 additions & 1 deletion src/energy/helper/energy-harvester-container.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@

namespace ns3
{
namespace energy
{

NS_LOG_COMPONENT_DEFINE("EnergyHarvesterContainer");

NS_OBJECT_ENSURE_REGISTERED(EnergyHarvesterContainer);

TypeId
Expand Down Expand Up @@ -160,4 +161,5 @@ EnergyHarvesterContainer::DoInitialize()
}
}

} // namespace energy
} // namespace ns3
3 changes: 3 additions & 0 deletions src/energy/helper/energy-harvester-container.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@

namespace ns3
{
namespace energy
{

class EnergyHarvester;

Expand Down Expand Up @@ -188,6 +190,7 @@ class EnergyHarvesterContainer : public Object
std::vector<Ptr<EnergyHarvester>> m_harvesters; //!< Harvester container
};

} // namespace energy
} // namespace ns3

#endif /* defined(ENERGY_HARVESTER_CONTAINER_H) */
24 changes: 12 additions & 12 deletions src/energy/helper/energy-harvester-helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -33,32 +33,32 @@ EnergyHarvesterHelper::~EnergyHarvesterHelper()
{
}

EnergyHarvesterContainer
EnergyHarvesterHelper::Install(Ptr<EnergySource> source) const
energy::EnergyHarvesterContainer
EnergyHarvesterHelper::Install(Ptr<energy::EnergySource> source) const
{
return Install(EnergySourceContainer(source));
return Install(energy::EnergySourceContainer(source));
}

EnergyHarvesterContainer
EnergyHarvesterHelper::Install(EnergySourceContainer sourceContainer) const
energy::EnergyHarvesterContainer
EnergyHarvesterHelper::Install(energy::EnergySourceContainer sourceContainer) const
{
EnergyHarvesterContainer container;
energy::EnergyHarvesterContainer container;
for (auto i = sourceContainer.Begin(); i != sourceContainer.End(); ++i)
{
Ptr<EnergyHarvester> harvester = DoInstall(*i);
Ptr<energy::EnergyHarvester> harvester = DoInstall(*i);
container.Add(harvester);
Ptr<Node> node = (*i)->GetNode();
/*
* Check if EnergyHarvesterContainer is already aggregated to target node. If
* not, create a new EnergyHarvesterContainer and aggregate it to the node.
*/
Ptr<EnergyHarvesterContainer> EnergyHarvesterContainerOnNode =
node->GetObject<EnergyHarvesterContainer>();
Ptr<energy::EnergyHarvesterContainer> EnergyHarvesterContainerOnNode =
node->GetObject<energy::EnergyHarvesterContainer>();
if (!EnergyHarvesterContainerOnNode)
{
ObjectFactory fac;
fac.SetTypeId("ns3::EnergyHarvesterContainer");
EnergyHarvesterContainerOnNode = fac.Create<EnergyHarvesterContainer>();
EnergyHarvesterContainerOnNode = fac.Create<energy::EnergyHarvesterContainer>();
EnergyHarvesterContainerOnNode->Add(harvester);
node->AggregateObject(EnergyHarvesterContainerOnNode);
}
Expand All @@ -70,10 +70,10 @@ EnergyHarvesterHelper::Install(EnergySourceContainer sourceContainer) const
return container;
}

EnergyHarvesterContainer
energy::EnergyHarvesterContainer
EnergyHarvesterHelper::Install(std::string sourceName) const
{
Ptr<EnergySource> source = Names::Find<EnergySource>(sourceName);
Ptr<energy::EnergySource> source = Names::Find<energy::EnergySource>(sourceName);
return Install(source);
}

Expand Down
8 changes: 4 additions & 4 deletions src/energy/helper/energy-harvester-helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,23 +60,23 @@ class EnergyHarvesterHelper
*
* This function installs an EnergyHarvester onto an energy source.
*/
EnergyHarvesterContainer Install(Ptr<EnergySource> source) const;
energy::EnergyHarvesterContainer Install(Ptr<energy::EnergySource> source) const;

/**
* \param sourceContainer List of nodes where EnergyHarvester will be installed.
* \returns An EnergyHarvesterContainer which contains all the EnergyHarvester.
*
* This function installs an EnergyHarvester onto a list of energy sources.
*/
EnergyHarvesterContainer Install(EnergySourceContainer sourceContainer) const;
energy::EnergyHarvesterContainer Install(energy::EnergySourceContainer sourceContainer) const;

/**
* \param sourceName Name of node where EnergyHarvester will be installed.
* \returns An EnergyHarvesterContainer which contains all the EnergyHarvesters.
*
* This function installs an EnergyHarvester onto a node.
*/
EnergyHarvesterContainer Install(std::string sourceName) const;
energy::EnergyHarvesterContainer Install(std::string sourceName) const;

private:
/**
Expand All @@ -88,7 +88,7 @@ class EnergyHarvesterHelper
* the installation process (eg. installing EnergyHarvester on set of nodes) is
* implemented in the EnergyHarvesterHelper base class.
*/
virtual Ptr<EnergyHarvester> DoInstall(Ptr<EnergySource> source) const = 0;
virtual Ptr<energy::EnergyHarvester> DoInstall(Ptr<energy::EnergySource> source) const = 0;
};

} // namespace ns3
Expand Down
32 changes: 16 additions & 16 deletions src/energy/helper/energy-model-helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,31 +32,31 @@ EnergySourceHelper::~EnergySourceHelper()
{
}

EnergySourceContainer
energy::EnergySourceContainer
EnergySourceHelper::Install(Ptr<Node> node) const
{
return Install(NodeContainer(node));
}

EnergySourceContainer
energy::EnergySourceContainer
EnergySourceHelper::Install(NodeContainer c) const
{
EnergySourceContainer container;
energy::EnergySourceContainer container;
for (auto i = c.Begin(); i != c.End(); ++i)
{
Ptr<EnergySource> src = DoInstall(*i);
Ptr<energy::EnergySource> src = DoInstall(*i);
container.Add(src);
/*
* Check if EnergySourceContainer is already aggregated to target node. If
* not, create a new EnergySourceContainer and aggregate it to node.
*/
Ptr<EnergySourceContainer> EnergySourceContainerOnNode =
(*i)->GetObject<EnergySourceContainer>();
Ptr<energy::EnergySourceContainer> EnergySourceContainerOnNode =
(*i)->GetObject<energy::EnergySourceContainer>();
if (!EnergySourceContainerOnNode)
{
ObjectFactory fac;
fac.SetTypeId("ns3::EnergySourceContainer");
EnergySourceContainerOnNode = fac.Create<EnergySourceContainer>();
EnergySourceContainerOnNode = fac.Create<energy::EnergySourceContainer>();
EnergySourceContainerOnNode->Add(src);
(*i)->AggregateObject(EnergySourceContainerOnNode);
}
Expand All @@ -68,14 +68,14 @@ EnergySourceHelper::Install(NodeContainer c) const
return container;
}

EnergySourceContainer
energy::EnergySourceContainer
EnergySourceHelper::Install(std::string nodeName) const
{
Ptr<Node> node = Names::Find<Node>(nodeName);
return Install(node);
}

EnergySourceContainer
energy::EnergySourceContainer
EnergySourceHelper::InstallAll() const
{
return Install(NodeContainer::GetGlobal());
Expand All @@ -88,30 +88,30 @@ DeviceEnergyModelHelper::~DeviceEnergyModelHelper()
{
}

DeviceEnergyModelContainer
DeviceEnergyModelHelper::Install(Ptr<NetDevice> device, Ptr<EnergySource> source) const
energy::DeviceEnergyModelContainer
DeviceEnergyModelHelper::Install(Ptr<NetDevice> device, Ptr<energy::EnergySource> source) const
{
NS_ASSERT(device);
NS_ASSERT(source);
// check to make sure source and net device are on the same node
NS_ASSERT(device->GetNode() == source->GetNode());
DeviceEnergyModelContainer container(DoInstall(device, source));
energy::DeviceEnergyModelContainer container(DoInstall(device, source));
return container;
}

DeviceEnergyModelContainer
energy::DeviceEnergyModelContainer
DeviceEnergyModelHelper::Install(NetDeviceContainer deviceContainer,
EnergySourceContainer sourceContainer) const
energy::EnergySourceContainer sourceContainer) const
{
NS_ASSERT(deviceContainer.GetN() <= sourceContainer.GetN());
DeviceEnergyModelContainer container;
energy::DeviceEnergyModelContainer container;
auto dev = deviceContainer.Begin();
auto src = sourceContainer.Begin();
while (dev != deviceContainer.End())
{
// check to make sure source and net device are on the same node
NS_ASSERT((*dev)->GetNode() == (*src)->GetNode());
Ptr<DeviceEnergyModel> model = DoInstall(*dev, *src);
Ptr<energy::DeviceEnergyModel> model = DoInstall(*dev, *src);
container.Add(model);
dev++;
src++;
Expand Down
Loading

0 comments on commit 314c58a

Please sign in to comment.