AdaptiveFidelityEntity Class Reference

#include <energy-model.h>

Inheritance diagram for AdaptiveFidelityEntity:

Handler Collaboration diagram for AdaptiveFidelityEntity:

Collaboration graph
[legend]

Detailed Description

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

Public Member Functions

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

Protected Attributes

float idle_time_
Event intr
EnergyModelnid_
float sleep_seed_
float sleep_time_


Constructor & Destructor Documentation

AdaptiveFidelityEntity::AdaptiveFidelityEntity EnergyModel nid  )  [inline]
 

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

00058 : nid_(nid) {} 


Member Function Documentation

void AdaptiveFidelityEntity::adapt_it  )  [virtual]
 

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

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

Referenced by handle().

00320 {
00321     float delay;
00322     // use adaptive fidelity
00323     if (nid_->adaptivefidelity()) {
00324         int neighbors = nid_->getneighbors();
00325         if (!neighbors) 
00326             neighbors = 1;
00327         delay = sleep_seed_ * Random::uniform(1,neighbors); 
00328             set_sleeptime(delay);
00329     }
00330 }

Here is the call graph for this function:

void AdaptiveFidelityEntity::handle Event e  )  [virtual]
 

Implements Handler.

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

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

00273 {
00274     Scheduler &s = Scheduler::instance();
00275     int node_state = nid_->state();
00276     switch (node_state) {
00277     case EnergyModel::POWERSAVING:
00278         if (nid_->sleep()) {
00279             // node is in sleep mode, wake it up
00280             nid_->set_node_sleep(0);
00281             adapt_it();
00282             s.schedule(this, &intr, idle_time_);
00283         } else {
00284             // node is in idle mode, put it into sleep
00285             nid_->set_node_sleep(1);
00286             adapt_it();
00287             s.schedule(this, &intr, sleep_time_);
00288         }
00289         break;
00290     case EnergyModel::INROUTE:
00291         // 100s is the maximum INROUTE time.
00292         if (s.clock()-(nid_->state_start_time()) < 
00293             nid_->max_inroute_time()) {
00294             s.schedule(this, &intr, idle_time_);
00295         } else {
00296             nid_->set_node_state(EnergyModel::POWERSAVING);
00297             adapt_it();
00298             nid_->set_node_sleep(1);
00299             s.schedule(this, &intr, sleep_time_); 
00300         }
00301         break;
00302     case EnergyModel::WAITING:
00303         // 10s is the maximum WAITING time
00304         if (s.clock()-(nid_->state_start_time()) < MAX_WAITING_TIME) {
00305             s.schedule(this, &intr, idle_time_);
00306         } else {
00307             nid_->set_node_state(EnergyModel::POWERSAVING);
00308             adapt_it();
00309             nid_->set_node_sleep(1);
00310             s.schedule(this, &intr, sleep_time_); 
00311         }
00312         break;
00313     default:
00314         fprintf(stderr, "Illegal Node State!");
00315         abort();
00316     }
00317 }

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 262 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().

00263 {
00264     sleep_time_ = 2;
00265     sleep_seed_ = 2;
00266     idle_time_ = 10;
00267     nid_->set_node_sleep(0);
00268     Scheduler::instance().schedule(this, &intr, 
00269                        Random::uniform(0, idle_time_));
00270 }

Here is the call graph for this function:


Field 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(), 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 Mar 6 17:02:36 2007 for ns2 Network Simulator 2.29 by  doxygen 1.4.6