#include <energy-model.h>
Inheritance diagram for AdaptiveFidelityEntity:


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 |
| EnergyModel * | nid_ |
| float | sleep_seed_ |
| float | sleep_time_ |
|
|
Definition at line 58 of file energy-model.h. 00058 : nid_(nid) {}
|
|
|
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: ![]() |
|
|
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: ![]() |
|
|
Definition at line 65 of file energy-model.h. References sleep_seed_. Referenced by MobileNode::command(). 00065 {sleep_seed_ = t;}
|
|
|
Definition at line 64 of file energy-model.h. References sleep_time_. Referenced by adapt_it(), and MobileNode::command(). 00064 {sleep_time_ = t;}
|
|
|
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: ![]() |
|
|
Definition at line 72 of file energy-model.h. |
|
|
Definition at line 69 of file energy-model.h. |
|
|
Definition at line 68 of file energy-model.h. Referenced by adapt_it(), handle(), and start(). |
|
|
Definition at line 71 of file energy-model.h. Referenced by adapt_it(), set_sleepseed(), and start(). |
|
|
Definition at line 70 of file energy-model.h. Referenced by handle(), set_sleeptime(), and start(). |
1.4.6