--- a/src/contrib/energy/model/energy-source.h Tue Mar 22 16:21:35 2011 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,205 +0,0 @@
-/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2010 Network Security Lab, University of Washington, Seattle.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Authors: Sidharth Nabar <snabar@uw.edu>, He Wu <mdzz@u.washington.edu>
- */
-
-#ifndef ENERGY_SOURCE_H
-#define ENERGY_SOURCE_H
-
-#include "ns3/object.h"
-#include "ns3/ptr.h"
-#include "ns3/type-id.h"
-#include "ns3/node.h"
-#include "device-energy-model-container.h" // #include "device-energy-model.h"
-
-namespace ns3 {
-
-/**
- * \brief Energy source base class.
- *
- * This is the base class for energy sources. Energy sources keep track of
- * remaining energy. Device energy models will be updating the remaining energy
- * in the energy source. The energy source itself does not update the remaining
- * energy. Energy source also keeps a list of device energy models installed on
- * the same node. When the remaining energy level reaches 0, the energy source
- * will notify all device energy models stored in the list.
- *
- * EnergySource provides 2 types of interfaces for DeviceEnergyModels to update
- * the remaining energy stored in EnergySource:
- * -Direct energy update interface (Joules):
- * DecreaseRemainingEnergy
- * IncreaseRemainingEnergy
- * -Indirect energy update interface (Current):
- * UpdateEnergySource
- * Direct energy update interface will decrease/increase energy from the source
- * directly (in Joules). Direct energy update interface is typically used by
- * simple DeviceEnergyModel which knows only average power consumption for each
- * of its state.
- * Indirect energy update interface uses the total current cumulated from all
- * DeviceEnergyModel to calculate energy to decrease from the source. Indirect
- * energy update interface is typically used by DeviceEnergyModel who knows its
- * current draw for each of its states. Nonlinear EnergySource also uses this
- * interface.
- *
- * Unit of energy is chosen as Joules since energy models typically calculate
- * energy as (time in seconds * power in Watts). If the energy source stores
- * energy in different units (eg. kWh), a simple converter function should
- * suffice.
- */
-class EnergySource : public Object
-{
-public:
- static TypeId GetTypeId (void);
- EnergySource ();
- virtual ~EnergySource ();
-
- /**
- * \returns Supply voltage of the energy source.
- *
- * Set method is to be defined in child class only if necessary. For sources
- * with a fixed supply voltage, set method is not needed.
- */
- virtual double GetSupplyVoltage (void) const = 0;
-
- /**
- * \returns Initial energy (capacity) of the energy source.
- *
- * Set method is to be defined in child class only if necessary. For sources
- * with a fixed initial energy (energy capacity), set method is not needed.
- */
- virtual double GetInitialEnergy (void) const = 0;
-
- /**
- * \returns Remaining energy at the energy source.
- */
- virtual double GetRemainingEnergy (void) = 0;
-
- /**
- * \return Energy fraction = remaining energy / initial energy [0, 1]
- *
- * This function returns the percentage of energy left in the energy source.
- */
- virtual double GetEnergyFraction (void) = 0;
-
- /**
- * This function goes through the list of DeviceEnergyModels to obtain total
- * current draw at the energy source and updates remaining energy. Called by
- * DeviceEnergyModels to inform EnergySource of a state change.
- */
- virtual void UpdateEnergySource (void) = 0;
-
- /**
- * \brief Sets pointer to node containing this EnergySource.
- *
- * \param node Pointer to node containing this EnergySource.
- */
- void SetNode (Ptr<Node> node);
-
- /**
- * \returns Pointer to node containing this EnergySource.
- *
- * When a subclass needs to get access to the underlying node base class to
- * print the nodeId for example, it can invoke this method.
- */
- Ptr<Node> GetNode (void) const;
-
- /**
- * \param deviceEnergyModelPtr Pointer to device energy model.
- *
- * This function appends a device energy model to the end of a list of
- * DeviceEnergyModelInfo structs.
- */
- void AppendDeviceEnergyModel (Ptr<DeviceEnergyModel> deviceEnergyModelPtr);
-
- /**
- * \param tid TypeId of the DeviceEnergyModel we are searching for.
- * \returns List of pointers to DeviceEnergyModel objects installed on node.
- */
- DeviceEnergyModelContainer FindDeviceEnergyModels (TypeId tid);
-
- /**
- * \param name name of the DeviceEnergyModel we are searching for.
- * \returns List of pointers to DeviceEnergyModel objects installed on node.
- */
- DeviceEnergyModelContainer FindDeviceEnergyModels (std::string name);
-
- /**
- * Calls Start () method of the device energy models. Device energy models are
- * not aggregated to the node, therefore we need to manually start them here.
- * Called by EnergySourceContainer, which is aggregated to the node.
- */
- void StartDeviceModels (void);
-
- /**
- * Calls Dispose () method of the device energy models. Device energy models
- * are not aggregated to the node, therefore we need to manually start them
- * here. Called by EnergySourceContainer, which is aggregated to the node.
- */
- void DisposeDeviceModels (void);
-
-
-private:
- /**
- * All child's implementation must call BreakDeviceEnergyModelRefCycle to
- * ensure reference cycles to DeviceEnergyModel objects are broken.
- *
- * Defined in ns3::Object
- */
- virtual void DoDispose (void);
-
-private:
- /**
- * List of device energy models installed on the same node.
- */
- DeviceEnergyModelContainer m_models;
-
- /**
- * Pointer to node containing this EnergySource. Used by helper class to make
- * sure device models are installed onto the corresponding node.
- */
- Ptr<Node> m_node;
-
-
-protected:
- /**
- * \returns Total current draw from all DeviceEnergyModels.
- */
- double CalculateTotalCurrent (void);
-
- /**
- * This function notifies all DeviceEnergyModel of energy depletion event. It
- * is called by the child EnergySource class when energy depletion happens.
- */
- void NotifyEnergyDrained (void);
-
- /**
- * This function is called to break reference cycle between EnergySource and
- * DeviceEnergyModel. Child of the EnergySource base class must call this
- * function in their implementation of DoDispose to make sure the reference
- * cycle is broken.
- *
- * Normally this work will be completed by the DoDispose function. However it
- * will be overridden in the child class. Hence we introduced this function.
- */
- void BreakDeviceEnergyModelRefCycle (void);
-
-};
-
-} // namespace ns3
-
-#endif /* ENERGY_SOURCE_H */