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


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 | |
| EnergyModel * | nid_ |
| Event | intr |
| float | sleep_time_ |
| float | sleep_seed_ |
| float | idle_time_ |
|
|
Definition at line 58 of file energy-model.h. References nid_.
00058 : nid_(nid) {} |
|
|
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:

|
|
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:

|
|
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 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:

|
|
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(), AdaptiveFidelityEntity(), 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.3.3