EnergyModel Class Reference

#include <energy-model.h>

Inheritance diagram for EnergyModel:

TclObject Collaboration diagram for EnergyModel:

Collaboration graph
[legend]

Detailed Description

Definition at line 88 of file energy-model.h.

Public Types

enum  SleepState { WAITING = 0, POWERSAVING = 1, INROUTE = 2 }

Public Member Functions

int & adaptivefidelity ()
void add_neighbor (u_int32_t)
virtual void add_rcvtime (float t)
virtual void add_sleeptime (float t)
virtual void add_sndtime (float t)
AdaptiveFidelityEntityafe ()
virtual void DecrIdleEnergy (double idletime, double P_idle)
virtual void DecrRcvEnergy (double rcvtime, double P_rcv)
virtual void DecrSleepEnergy (double sleeptime, double P_sleep)
virtual void DecrTransitionEnergy (double transitiontime, double P_transition)
virtual void DecrTxEnergy (double txtime, double P_tx)
double ei () const
double energy () const
 EnergyModel (MobileNode *n, double energy, double l1, double l2)
double er () const
double es () const
double et () const
int getneighbors ()
double initialenergy () const
double level1 ()
double level1 () const
double level2 ()
double level2 () const
float & max_inroute_time ()
virtual double MaxIdletime (double P_idle)
virtual double MaxRcvtime (double P_rcv)
int & maxttl ()
virtual double MaxTxtime (double P_tx)
bool & node_on ()
int & powersavingflag ()
void scan_neighbor ()
virtual void set_node_sleep (int)
virtual void set_node_state (int)
void setenergy (double e)
int sleep ()
void start_powersaving ()
int state ()
float state_start_time ()
float & total_idletime ()
float & total_rcvtime ()
float & total_sleeptime ()
float & total_sndtime ()

Protected Attributes

int adaptivefidelity_
AdaptiveFidelityEntityafe_
double ei_
double energy_
double er_
double es_
double et_
double initialenergy_
float last_time_gosleep
double level1_
double level2_
float max_inroute_time_
int maxttl_
struct {
   neighbor_list_item *   head
   int   neighbor_cnt_
neighbor_list
MobileNodenode_
bool node_on_
int powersavingflag_
int sleep_mode_
SoftNeighborHandlersnh_
int state_
float state_start_time_
float total_idletime_
float total_rcvtime_
float total_sleeptime_
float total_sndtime_

Data Structures

struct  neighbor_list_item


Member Enumeration Documentation

enum EnergyModel::SleepState
 

Enumerator:
WAITING 
POWERSAVING 
INROUTE 

Definition at line 164 of file energy-model.h.

00164 { WAITING = 0, POWERSAVING = 1, INROUTE = 2 };


Constructor & Destructor Documentation

EnergyModel::EnergyModel MobileNode n,
double  energy,
double  l1,
double  l2
[inline]
 

Definition at line 90 of file energy-model.h.

References neighbor_list.

00090                                                                     :
00091         energy_(energy), er_(0), et_(0),ei_(0), es_(0), 
00092         initialenergy_(energy), 
00093         level1_(l1), level2_(l2), node_(n), 
00094         sleep_mode_(0), total_sleeptime_(0), total_rcvtime_(0), 
00095         total_sndtime_(0), powersavingflag_(0), 
00096         last_time_gosleep(0), max_inroute_time_(300), maxttl_(5), 
00097         adaptivefidelity_(1),  node_on_(true)
00098     {
00099         neighbor_list.neighbor_cnt_ = 0;
00100         neighbor_list.head = NULL;
00101     }


Member Function Documentation

int& EnergyModel::adaptivefidelity  )  [inline]
 

Definition at line 142 of file energy-model.h.

References adaptivefidelity_.

Referenced by AdaptiveFidelityEntity::adapt_it(), and MobileNode::command().

00142 { return adaptivefidelity_; }

void EnergyModel::add_neighbor u_int32_t   ) 
 

Definition at line 202 of file energy-model.cc.

References EnergyModel::neighbor_list_item::id, maxttl_, neighbor_list, EnergyModel::neighbor_list_item::next, and EnergyModel::neighbor_list_item::ttl.

Referenced by Phy802_15_4::recv().

00203 {
00204     neighbor_list_item *np;
00205     np = neighbor_list.head;
00206     for (; np; np = np->next) {
00207         if (np->id == nodeid) {
00208             np->ttl = maxttl_;
00209             break;
00210         }
00211     }
00212     if (!np) {      // insert this new entry
00213         np = new neighbor_list_item;
00214         np->id = nodeid;
00215         np->ttl = maxttl_;
00216         np->next = neighbor_list.head;
00217         neighbor_list.head = np;
00218         neighbor_list.neighbor_cnt_++;
00219     }
00220 }

virtual void EnergyModel::add_rcvtime float  t  )  [inline, virtual]
 

Definition at line 156 of file energy-model.h.

References total_rcvtime_.

00156 {total_rcvtime_ += t;}

virtual void EnergyModel::add_sleeptime float  t  )  [inline, virtual]
 

Definition at line 159 of file energy-model.h.

References total_sleeptime_.

00159 {total_sleeptime_ += t;};

virtual void EnergyModel::add_sndtime float  t  )  [inline, virtual]
 

Definition at line 157 of file energy-model.h.

References total_sndtime_.

00157 {total_sndtime_ += t;}

AdaptiveFidelityEntity* EnergyModel::afe  )  [inline]
 

Definition at line 151 of file energy-model.h.

References afe_.

Referenced by MobileNode::command().

00151 { return afe_; }

void EnergyModel::DecrIdleEnergy double  idletime,
double  P_idle
[virtual]
 

Definition at line 94 of file energy-model.cc.

References God::ComputeRoute(), ei_, energy_, and God::instance().

Referenced by WirelessPhy::command(), WirelessPhy::node_off(), WirelessPhy::node_sleep(), WirelessPhy::sendDown(), and WirelessPhy::sendUp().

00095 {
00096     double dEng = P_idle * idletime;
00097     if (energy_ <= dEng)
00098         energy_ = 0.0;
00099     else
00100         energy_ = energy_ - dEng;
00101     if (energy_ <= 0.0)
00102         God::instance()->ComputeRoute();
00103 //
00104     // This variable keeps track of total energy consumption in IDLE mode..
00105     ei_=ei_+dEng;
00106 //
00107 }

Here is the call graph for this function:

void EnergyModel::DecrRcvEnergy double  rcvtime,
double  P_rcv
[virtual]
 

Definition at line 79 of file energy-model.cc.

References God::ComputeRoute(), energy_, er_, and God::instance().

Referenced by WirelessPhy::sendUp().

00080 {
00081     double dEng = P_rcv * rcvtime;
00082     if (energy_ <= dEng)
00083         energy_ = 0.0;
00084     else
00085         energy_ = energy_ - dEng;
00086     if (energy_ <= 0.0)
00087         God::instance()->ComputeRoute();
00088 //
00089     // This variable keeps track of total energy consumption in RECV mode..
00090     er_=er_+dEng;
00091 //
00092 }

Here is the call graph for this function:

void EnergyModel::DecrSleepEnergy double  sleeptime,
double  P_sleep
[virtual]
 

Definition at line 110 of file energy-model.cc.

References God::ComputeRoute(), energy_, es_, and God::instance().

Referenced by WirelessPhy::node_wakeup().

00111 {
00112     double dEng = P_sleep * sleeptime;
00113     if (energy_ <= dEng)
00114         energy_ = 0.0;
00115     else
00116         energy_ = energy_ - dEng;
00117     if (energy_ <= 0.0)
00118         God::instance()->ComputeRoute();
00119 
00120     // This variable keeps track of total energy consumption in SLEEP mode..
00121     es_=es_+dEng;
00122 }

Here is the call graph for this function:

void EnergyModel::DecrTransitionEnergy double  transitiontime,
double  P_transition
[virtual]
 

Definition at line 124 of file energy-model.cc.

References God::ComputeRoute(), energy_, and God::instance().

Referenced by WirelessPhy::node_sleep(), and WirelessPhy::node_wakeup().

00125 {
00126     double dEng = P_transition * transitiontime;
00127     if (energy_ <= dEng)
00128         energy_ = 0.0;
00129     else
00130         energy_ = energy_ - dEng;
00131     if (energy_ <= 0.0)
00132         God::instance()->ComputeRoute();
00133 }

Here is the call graph for this function:

void EnergyModel::DecrTxEnergy double  txtime,
double  P_tx
[virtual]
 

Definition at line 63 of file energy-model.cc.

References God::ComputeRoute(), energy_, et_, and God::instance().

Referenced by WirelessPhy::sendDown().

00064 {
00065     double dEng = P_tx * txtime;
00066     if (energy_ <= dEng)
00067         energy_ = 0.0;
00068     else
00069         energy_ = energy_ - dEng;
00070     if (energy_ <= 0.0)
00071         God::instance()->ComputeRoute();
00072 //
00073     // This variable keeps track of total energy consumption in Transmission..
00074     et_=et_+dEng;
00075 //
00076 }

Here is the call graph for this function:

double EnergyModel::ei  )  const [inline]
 

Definition at line 107 of file energy-model.h.

References ei_.

00107 { return ei_; }

double EnergyModel::energy  )  const [inline]
 

Definition at line 103 of file energy-model.h.

References energy_.

Referenced by EnergyTimer::EnergyTimer(), EnergyTimer::expire(), CMUTrace::format_mac_common(), MobileNode::log_energy(), CMUTrace::nam_format(), CMUTrace::node_energy(), Mac802_15_4::recv(), and Mac802_15_4::sendDown().

00103 { return energy_; }

double EnergyModel::er  )  const [inline]
 

Definition at line 106 of file energy-model.h.

References er_.

00106 { return er_; }

double EnergyModel::es  )  const [inline]
 

Definition at line 108 of file energy-model.h.

References es_.

00108 { return es_; }

double EnergyModel::et  )  const [inline]
 

Definition at line 105 of file energy-model.h.

References et_.

00105 { return et_; }

int EnergyModel::getneighbors  )  [inline]
 

Definition at line 134 of file energy-model.h.

References neighbor_list.

Referenced by AdaptiveFidelityEntity::adapt_it().

00134 { return neighbor_list.neighbor_cnt_; }

double EnergyModel::initialenergy  )  const [inline]
 

Definition at line 110 of file energy-model.h.

References initialenergy_.

Referenced by CMUTrace::nam_format().

00110 { return initialenergy_; }

double EnergyModel::level1  )  [inline]
 

Definition at line 136 of file energy-model.h.

References level1_.

00136 { return level1_; }

double EnergyModel::level1  )  const [inline]
 

Definition at line 111 of file energy-model.h.

References level1_.

Referenced by CMUTrace::nam_format().

00111 { return level1_; }

double EnergyModel::level2  )  [inline]
 

Definition at line 137 of file energy-model.h.

References level2_.

00137 { return level2_; }

double EnergyModel::level2  )  const [inline]
 

Definition at line 112 of file energy-model.h.

References level2_.

Referenced by CMUTrace::nam_format().

00112 { return level2_; }

float& EnergyModel::max_inroute_time  )  [inline]
 

Definition at line 141 of file energy-model.h.

References max_inroute_time_.

Referenced by MobileNode::command(), and AdaptiveFidelityEntity::handle().

00141 { return max_inroute_time_; }

virtual double EnergyModel::MaxIdletime double  P_idle  )  [inline, virtual]
 

Definition at line 128 of file energy-model.h.

References energy_.

00128                                                      {
00129         return(energy_/P_idle);
00130     }

virtual double EnergyModel::MaxRcvtime double  P_rcv  )  [inline, virtual]
 

Definition at line 125 of file energy-model.h.

References energy_.

00125                                                    {
00126         return(energy_/P_rcv);
00127     }

int& EnergyModel::maxttl  )  [inline]
 

Definition at line 152 of file energy-model.h.

References maxttl_.

Referenced by MobileNode::command().

00152 { return maxttl_; }

virtual double EnergyModel::MaxTxtime double  P_tx  )  [inline, virtual]
 

Definition at line 122 of file energy-model.h.

References energy_.

00122                                                  {
00123         return(energy_/P_tx);
00124     }

bool& EnergyModel::node_on  )  [inline]
 

Definition at line 144 of file energy-model.h.

References node_on_.

Referenced by MobileNode::command(), GAFAgent::node_off(), and GAFAgent::node_on().

00144 { return node_on_; }

int& EnergyModel::powersavingflag  )  [inline]
 

Definition at line 143 of file energy-model.h.

References powersavingflag_.

Referenced by MobileNode::command(), and CMUTrace::format_rtp().

00143 { return powersavingflag_; }

void EnergyModel::scan_neighbor  ) 
 

Definition at line 222 of file energy-model.cc.

References neighbor_list, EnergyModel::neighbor_list_item::next, and EnergyModel::neighbor_list_item::ttl.

Referenced by SoftNeighborHandler::handle().

00223 {
00224     neighbor_list_item *np, *lp;
00225     if (neighbor_list.neighbor_cnt_ > 0) {
00226         lp = neighbor_list.head;
00227         np = lp->next;
00228         for (; np; np = np->next) {
00229             np->ttl--;
00230             if (np->ttl <= 0){
00231                 lp->next = np->next;
00232                 delete np;
00233                 np = lp;
00234                 neighbor_list.neighbor_cnt_--;
00235             } 
00236             lp = np;
00237         }
00238         // process the first element
00239         np = neighbor_list.head;
00240         np->ttl--;
00241         if (np->ttl <= 0) {
00242             neighbor_list.head = np->next;
00243             delete np;
00244             neighbor_list.neighbor_cnt_--;
00245         }
00246     }
00247 }

void EnergyModel::set_node_sleep int   )  [virtual]
 

Definition at line 150 of file energy-model.cc.

References Scheduler::clock(), Node::exist_namchan(), Scheduler::instance(), last_time_gosleep, node_, sleep_mode_, and total_sleeptime_.

Referenced by AdaptiveFidelityEntity::handle(), Mac802_15_4::recv(), Mac802_11::send(), and AdaptiveFidelityEntity::start().

00151 {
00152     Tcl& tcl=Tcl::instance();
00153     //static float last_time_gosleep;
00154     // status = 1 to set node into sleep mode
00155     // status = 0 to put node back to idle mode.
00156     // time in the sleep mode should be used as credit to idle 
00157     // time energy consumption
00158     if (status) {
00159         last_time_gosleep = Scheduler::instance().clock();
00160         //printf("id=%d : put node into sleep at %f\n",
00161         // address_,last_time_gosleep);
00162         sleep_mode_ = status;
00163         if (node_->exist_namchan()) 
00164             tcl.evalf("%s add-mark m1 blue hexagon",node_->name());
00165     } else {
00166         sleep_mode_ = status;
00167         if (node_->exist_namchan()) 
00168             tcl.evalf("%s delete-mark m1", node_->name()); 
00169         //printf("id= %d last_time_sleep = %f\n",
00170         // address_, last_time_gosleep);
00171         if (last_time_gosleep) {
00172             total_sleeptime_ += Scheduler::instance().clock() -
00173                 last_time_gosleep;
00174             last_time_gosleep = 0;
00175         }
00176     }   
00177 }

Here is the call graph for this function:

void EnergyModel::set_node_state int   )  [virtual]
 

Definition at line 179 of file energy-model.cc.

References abort(), Scheduler::clock(), INROUTE, Scheduler::instance(), POWERSAVING, state_, state_start_time_, and WAITING.

Referenced by CMUTrace::format_rtp(), Mac802_15_4::recv(), and Mac802_11::send().

00180 {
00181     switch (state_) { 
00182     case POWERSAVING:
00183     case WAITING:
00184         state_ = state;
00185         state_start_time_ = Scheduler::instance().clock();
00186         break;
00187     case INROUTE:
00188         if (state == POWERSAVING) {
00189             state_ = state;
00190         } else if (state == INROUTE) {
00191             // a data packet is forwarded, needs to reset 
00192             // state_start_time_
00193             state_start_time_= Scheduler::instance().clock();
00194         }
00195         break;
00196     default:
00197         printf("Wrong state, quit...\n");
00198         abort();
00199     }
00200 }

Here is the call graph for this function:

void EnergyModel::setenergy double  e  )  [inline]
 

Definition at line 113 of file energy-model.h.

References energy_.

Referenced by MobileNode::command(), WirelessPhy::sendDown(), and WirelessPhy::sendUp().

00113 { energy_ = e; }

int EnergyModel::sleep  )  [inline]
 

Definition at line 138 of file energy-model.h.

References sleep_mode_.

Referenced by AdaptiveFidelityEntity::handle(), Mac802_15_4::recv(), Mac802_11::send(), and WirelessPhy::UpdateSleepEnergy().

00138 { return sleep_mode_; }

void EnergyModel::start_powersaving  ) 
 

Definition at line 138 of file energy-model.cc.

References afe_, Scheduler::clock(), Scheduler::instance(), POWERSAVING, snh_, AdaptiveFidelityEntity::start(), SoftNeighborHandler::start(), state_, and state_start_time_.

Referenced by MobileNode::command().

00139 {
00140     snh_ = new SoftNeighborHandler(this);
00141     snh_->start();
00142     
00143     afe_ = new AdaptiveFidelityEntity(this);
00144     afe_->start();
00145 
00146     state_ = EnergyModel::POWERSAVING;
00147     state_start_time_ = Scheduler::instance().clock();
00148 }

Here is the call graph for this function:

int EnergyModel::state  )  [inline]
 

Definition at line 139 of file energy-model.h.

References state_.

Referenced by AdaptiveFidelityEntity::handle().

00139 { return state_; }

float EnergyModel::state_start_time  )  [inline]
 

Definition at line 140 of file energy-model.h.

References state_start_time_.

Referenced by AdaptiveFidelityEntity::handle().

00140 { return state_start_time_; }

float& EnergyModel::total_idletime  )  [inline]
 

Definition at line 149 of file energy-model.h.

References total_idletime_.

00149 {   return total_idletime_;}

float& EnergyModel::total_rcvtime  )  [inline]
 

Definition at line 146 of file energy-model.h.

References total_rcvtime_.

Referenced by MobileNode::command().

00146 { return total_rcvtime_; }

float& EnergyModel::total_sleeptime  )  [inline]
 

Definition at line 147 of file energy-model.h.

References total_sleeptime_.

Referenced by MobileNode::command().

00147 { return total_sleeptime_; }

float& EnergyModel::total_sndtime  )  [inline]
 

Definition at line 145 of file energy-model.h.

References total_sndtime_.

Referenced by MobileNode::command().

00145 { return total_sndtime_; }


Field Documentation

int EnergyModel::adaptivefidelity_ [protected]
 

Definition at line 208 of file energy-model.h.

Referenced by adaptivefidelity().

AdaptiveFidelityEntity* EnergyModel::afe_ [protected]
 

Definition at line 209 of file energy-model.h.

Referenced by afe(), and start_powersaving().

double EnergyModel::ei_ [protected]
 

Definition at line 171 of file energy-model.h.

Referenced by DecrIdleEnergy(), and ei().

double EnergyModel::energy_ [protected]
 

Definition at line 167 of file energy-model.h.

Referenced by DecrIdleEnergy(), DecrRcvEnergy(), DecrSleepEnergy(), DecrTransitionEnergy(), DecrTxEnergy(), energy(), MaxIdletime(), MaxRcvtime(), MaxTxtime(), and setenergy().

double EnergyModel::er_ [protected]
 

Definition at line 169 of file energy-model.h.

Referenced by DecrRcvEnergy(), and er().

double EnergyModel::es_ [protected]
 

Definition at line 172 of file energy-model.h.

Referenced by DecrSleepEnergy(), and es().

double EnergyModel::et_ [protected]
 

Definition at line 170 of file energy-model.h.

Referenced by DecrTxEnergy(), and et().

neighbor_list_item* EnergyModel::head [protected]
 

Definition at line 189 of file energy-model.h.

double EnergyModel::initialenergy_ [protected]
 

Definition at line 174 of file energy-model.h.

Referenced by initialenergy().

float EnergyModel::last_time_gosleep [protected]
 

Definition at line 201 of file energy-model.h.

Referenced by set_node_sleep().

double EnergyModel::level1_ [protected]
 

Definition at line 175 of file energy-model.h.

Referenced by level1().

double EnergyModel::level2_ [protected]
 

Definition at line 176 of file energy-model.h.

Referenced by level2().

float EnergyModel::max_inroute_time_ [protected]
 

Definition at line 202 of file energy-model.h.

Referenced by max_inroute_time().

int EnergyModel::maxttl_ [protected]
 

Definition at line 204 of file energy-model.h.

Referenced by add_neighbor(), and maxttl().

int EnergyModel::neighbor_cnt_ [protected]
 

Definition at line 188 of file energy-model.h.

struct { ... } EnergyModel::neighbor_list [protected]
 

Referenced by add_neighbor(), EnergyModel(), getneighbors(), and scan_neighbor().

MobileNode* EnergyModel::node_ [protected]
 

Definition at line 178 of file energy-model.h.

Referenced by set_node_sleep().

bool EnergyModel::node_on_ [protected]
 

Definition at line 211 of file energy-model.h.

Referenced by node_on().

int EnergyModel::powersavingflag_ [protected]
 

Definition at line 200 of file energy-model.h.

Referenced by powersavingflag().

int EnergyModel::sleep_mode_ [protected]
 

Definition at line 193 of file energy-model.h.

Referenced by set_node_sleep(), and sleep().

SoftNeighborHandler* EnergyModel::snh_ [protected]
 

Definition at line 191 of file energy-model.h.

Referenced by start_powersaving().

int EnergyModel::state_ [protected]
 

Definition at line 206 of file energy-model.h.

Referenced by set_node_state(), start_powersaving(), and state().

float EnergyModel::state_start_time_ [protected]
 

Definition at line 207 of file energy-model.h.

Referenced by set_node_state(), start_powersaving(), and state_start_time().

float EnergyModel::total_idletime_ [protected]
 

Definition at line 198 of file energy-model.h.

Referenced by total_idletime().

float EnergyModel::total_rcvtime_ [protected]
 

Definition at line 195 of file energy-model.h.

Referenced by add_rcvtime(), and total_rcvtime().

float EnergyModel::total_sleeptime_ [protected]
 

Definition at line 194 of file energy-model.h.

Referenced by add_sleeptime(), set_node_sleep(), and total_sleeptime().

float EnergyModel::total_sndtime_ [protected]
 

Definition at line 196 of file energy-model.h.

Referenced by add_sndtime(), and total_sndtime().


The documentation for this class was generated from the following files:
Generated on Tue Mar 6 17:07:26 2007 for ns2 Network Simulator 2.29 by  doxygen 1.4.6