Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

AdaptiveFidelityEntity Class Reference

#include <energy-model.h>

Inheritance diagram for AdaptiveFidelityEntity:

Inheritance graph
[legend]
Collaboration diagram for AdaptiveFidelityEntity:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 AdaptiveFidelityEntity (EnergyModel *nid)
virtual void start ()
virtual void handle (Event *e)
virtual void adapt_it ()
void set_sleeptime (float t)
void set_sleepseed (float t)

Protected Attributes

EnergyModelnid_
Event intr
float sleep_time_
float sleep_seed_
float idle_time_

Constructor & Destructor Documentation

AdaptiveFidelityEntity::AdaptiveFidelityEntity EnergyModel nid  )  [inline]
 

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

References nid_.

00058 : nid_(nid) {} 


Member Function Documentation

void AdaptiveFidelityEntity::adapt_it  )  [virtual]
 

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

References EnergyModel::adaptivefidelity(), EnergyModel::getneighbors(), nid_, set_sleeptime(), sleep_seed_, and Random::uniform().

Referenced by handle().

00281 {
00282         float delay;
00283         // use adaptive fidelity
00284         if (nid_->adaptivefidelity()) {
00285                 int neighbors = nid_->getneighbors();
00286                 if (!neighbors) 
00287                         neighbors = 1;
00288                 delay = sleep_seed_ * Random::uniform(1,neighbors); 
00289                 set_sleeptime(delay);
00290         }
00291 }

Here is the call graph for this function:

void AdaptiveFidelityEntity::handle Event e  )  [virtual]
 

Implements Handler.

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

References abort(), adapt_it(), Scheduler::clock(), idle_time_, EnergyModel::INROUTE, Scheduler::instance(), intr, EnergyModel::max_inroute_time(), MAX_WAITING_TIME, nid_, EnergyModel::POWERSAVING, Scheduler::schedule(), EnergyModel::set_node_sleep(), EnergyModel::set_node_state(), EnergyModel::sleep(), sleep_time_, EnergyModel::state(), EnergyModel::state_start_time(), and EnergyModel::WAITING.

00234 {
00235         Scheduler &s = Scheduler::instance();
00236         int node_state = nid_->state();
00237         switch (node_state) {
00238         case EnergyModel::POWERSAVING:
00239                 if (nid_->sleep()) {
00240                         // node is in sleep mode, wake it up
00241                         nid_->set_node_sleep(0);
00242                         adapt_it();
00243                         s.schedule(this, &intr, idle_time_);
00244                 } else {
00245                         // node is in idle mode, put it into sleep
00246                         nid_->set_node_sleep(1);
00247                         adapt_it();
00248                         s.schedule(this, &intr, sleep_time_);
00249                 }
00250                 break;
00251         case EnergyModel::INROUTE:
00252                 // 100s is the maximum INROUTE time.
00253                 if (s.clock()-(nid_->state_start_time()) < 
00254                     nid_->max_inroute_time()) {
00255                         s.schedule(this, &intr, idle_time_);
00256                 } else {
00257                         nid_->set_node_state(EnergyModel::POWERSAVING);
00258                         adapt_it();
00259                         nid_->set_node_sleep(1);
00260                         s.schedule(this, &intr, sleep_time_); 
00261                 }
00262                 break;
00263         case EnergyModel::WAITING:
00264                 // 10s is the maximum WAITING time
00265                 if (s.clock()-(nid_->state_start_time()) < MAX_WAITING_TIME) {
00266                         s.schedule(this, &intr, idle_time_);
00267                 } else {
00268                         nid_->set_node_state(EnergyModel::POWERSAVING);
00269                         adapt_it();
00270                         nid_->set_node_sleep(1);
00271                         s.schedule(this, &intr, sleep_time_); 
00272                 }
00273                 break;
00274         default:
00275                 fprintf(stderr, "Illegal Node State!");
00276                 abort();
00277         }
00278 }

Here is the call graph for this function:

void AdaptiveFidelityEntity::set_sleepseed float  t  )  [inline]
 

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

References sleep_seed_.

Referenced by MobileNode::command().

00065 {sleep_seed_ = t;}

void AdaptiveFidelityEntity::set_sleeptime float  t  )  [inline]
 

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

References sleep_time_.

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

00064 {sleep_time_ = t;}

void AdaptiveFidelityEntity::start  )  [virtual]
 

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

References idle_time_, Scheduler::instance(), intr, nid_, Scheduler::schedule(), EnergyModel::set_node_sleep(), sleep_seed_, sleep_time_, and Random::uniform().

Referenced by EnergyModel::start_powersaving().

00224 {
00225         sleep_time_ = 2;
00226         sleep_seed_ = 2;
00227         idle_time_ = 10;
00228         nid_->set_node_sleep(0);
00229         Scheduler::instance().schedule(this, &intr, 
00230                                        Random::uniform(0, idle_time_));
00231 }

Here is the call graph for this function:


Member Data Documentation

float AdaptiveFidelityEntity::idle_time_ [protected]
 

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

Referenced by handle(), and start().

Event AdaptiveFidelityEntity::intr [protected]
 

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

Referenced by handle(), and start().

EnergyModel* AdaptiveFidelityEntity::nid_ [protected]
 

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

Referenced by adapt_it(), AdaptiveFidelityEntity(), handle(), and start().

float AdaptiveFidelityEntity::sleep_seed_ [protected]
 

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

Referenced by adapt_it(), set_sleepseed(), and start().

float AdaptiveFidelityEntity::sleep_time_ [protected]
 

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

Referenced by handle(), set_sleeptime(), and start().


The documentation for this class was generated from the following files:
Generated on Tue Apr 20 12:32:00 2004 for NS2.26SourcesOriginal by doxygen 1.3.3