|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
23 #include "ns3/assert.h"
24 #include "ns3/double.h"
25 #include "ns3/trace-source-accessor.h"
26 #include "ns3/simulator.h"
41 .SetGroupName (
"Energy")
43 .AddAttribute (
"LiIonEnergySourceInitialEnergyJ",
44 "Initial energy stored in basic energy source.",
48 MakeDoubleChecker<double> ())
49 .AddAttribute (
"LiIonEnergyLowBatteryThreshold",
50 "Low battery threshold for LiIon energy source.",
53 MakeDoubleChecker<double> ())
54 .AddAttribute (
"InitialCellVoltage",
55 "Initial (maximum) voltage of the cell (fully charged).",
59 MakeDoubleChecker<double> ())
60 .AddAttribute (
"NominalCellVoltage",
61 "Nominal voltage of the cell.",
64 MakeDoubleChecker<double> ())
65 .AddAttribute (
"ExpCellVoltage",
66 "Cell voltage at the end of the exponential zone.",
69 MakeDoubleChecker<double> ())
70 .AddAttribute (
"RatedCapacity",
71 "Rated capacity of the cell.",
74 MakeDoubleChecker<double> ())
75 .AddAttribute (
"NomCapacity",
76 "Cell capacity at the end of the nominal zone.",
79 MakeDoubleChecker<double> ())
80 .AddAttribute (
"ExpCapacity",
81 "Cell Capacity at the end of the exponential zone.",
84 MakeDoubleChecker<double> ())
85 .AddAttribute (
"InternalResistance",
86 "Internal resistance of the cell",
89 MakeDoubleChecker<double> ())
90 .AddAttribute (
"TypCurrent",
91 "Typical discharge current used to fit the curves",
94 MakeDoubleChecker<double> ())
95 .AddAttribute (
"ThresholdVoltage",
96 "Minimum threshold voltage to consider the battery depleted.",
99 MakeDoubleChecker<double> ())
100 .AddAttribute (
"PeriodicEnergyUpdateInterval",
101 "Time between two consecutive periodic energy updates.",
106 .AddTraceSource (
"RemainingEnergy",
107 "Remaining energy at BasicEnergySource.",
109 "ns3::TracedValueCallback::Double")
115 : m_drainedCapacity (0.0),
116 m_lastUpdateTime (
Seconds (0.0))
216 NS_LOG_DEBUG (
"LiIonEnergySource:Updating remaining energy at node #" <<
264 NS_LOG_DEBUG (
"LiIonEnergySource:Energy depleted at node #" <<
a unique identifier for an interface.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
void SetEnergyUpdateInterval(Time interval)
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
static Time Now(void)
Return the current simulation virtual time.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
TracedValue< double > m_remainingEnergyJ
double GetVoltage(double current) const
void DoDispose(void)
All child's implementation must call BreakDeviceEnergyModelRefCycle to ensure reference cycles to Dev...
Time m_energyUpdateInterval
static EventId Schedule(Time const &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
Ptr< Node > GetNode(void) const
void NotifyEnergyDrained(void)
This function notifies all DeviceEnergyModel of energy depletion event.
static TypeId GetTypeId(void)
double CalculateTotalCurrent(void)
virtual void DecreaseRemainingEnergy(double energyJ)
double m_internalResistance
void SetInitialSupplyVoltage(double supplyVoltageV)
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method.
Introspection did not find any typical Config paths.
void CalculateRemainingEnergy(void)
Calculates remaining energy.
Simulation virtual time values and global simulation resolution.
void HandleEnergyDrainedEvent(void)
Handles the remaining energy going to zero event.
virtual void IncreaseRemainingEnergy(double energyJ)
Ptr< const AttributeAccessor > MakeDoubleAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
EventId m_energyUpdateEvent
Model a generic Lithium Ion Battery basing on [1][2].
void BreakDeviceEnergyModelRefCycle(void)
This function is called to break reference cycle between EnergySource and DeviceEnergyModel.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
virtual double GetEnergyFraction(void)
Time Seconds(double value)
Construct a Time in the indicated unit.
virtual double GetInitialEnergy(void) const
#define E(name, start, end)
virtual ~LiIonEnergySource()
virtual double GetSupplyVoltage(void) const
AttributeValue implementation for Time.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
static bool IsFinished(void)
Check if the simulation should finish.
Time GetEnergyUpdateInterval(void) const
void DoInitialize(void)
Initialize() implementation.
virtual void UpdateEnergySource(void)
Implements UpdateEnergySource.
virtual double GetRemainingEnergy(void)
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
void SetInitialEnergy(double initialEnergyJ)