A Discrete-Event Network Simulator
API
basic-energy-harvester.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
4  * University of Rochester, Rochester, NY, USA.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation;
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
20  */
21 
22 #ifndef BASIC_ENERGY_HARVESTER
23 #define BASIC_ENERGY_HARVESTER
24 
25 #include <iostream>
26 
27 // include from ns-3
28 #include "ns3/traced-value.h"
29 #include "ns3/nstime.h"
30 #include "ns3/event-id.h"
31 #include "energy-harvester.h"
32 #include "ns3/random-variable-stream.h"
33 #include "ns3/device-energy-model.h"
34 
35 namespace ns3 {
36 
49 {
50 public:
51  static TypeId GetTypeId (void);
52 
54 
62  BasicEnergyHarvester (Time updateInterval);
63 
64  virtual ~BasicEnergyHarvester ();
65 
72  void SetHarvestedPowerUpdateInterval (Time updateInterval);
73 
81 
89  int64_t AssignStreams (int64_t stream);
90 
91 private:
93  void DoInitialize (void);
94 
96  void DoDispose (void);
97 
101  void CalculateHarvestedPower (void);
102 
107  virtual double DoGetPower (void) const;
108 
114  void UpdateHarvestedPower (void);
115 
116 private:
117 
118  Ptr<RandomVariableStream> m_harvestablePower; // Random variable for the harvestable power
119 
120  TracedValue<double> m_harvestedPower; // current harvested power, in Watt
121  TracedValue<double> m_totalEnergyHarvestedJ; // total harvested energy, in Joule
122 
123  EventId m_energyHarvestingUpdateEvent; // energy harvesting event
124  Time m_lastHarvestingUpdateTime; // last harvesting time
125  Time m_harvestedPowerUpdateInterval; // harvestable energy update interval
126 
127 };
128 
129 } // namespace ns3
130 
131 #endif /* defined(BASIC_ENERGY_HARVESTER) */
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:102
void SetHarvestedPowerUpdateInterval(Time updateInterval)
TracedValue< double > m_harvestedPower
virtual double DoGetPower(void) const
void DoInitialize(void)
Defined in ns3::Object.
TracedValue< double > m_totalEnergyHarvestedJ
void CalculateHarvestedPower(void)
Calculates harvested Power.
void UpdateHarvestedPower(void)
This function is called every m_energyHarvestingUpdateInterval in order to update the amount of power...
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Time GetHarvestedPowerUpdateInterval(void) const
Energy harvester base class.
An identifier for simulation events.
Definition: event-id.h:53
Ptr< RandomVariableStream > m_harvestablePower
void DoDispose(void)
Defined in ns3::Object.
int64_t AssignStreams(int64_t stream)
BasicEnergyHarvester increases remaining energy stored in an associated Energy Source.
a unique identifier for an interface.
Definition: type-id.h:58