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


Public Types | |
| enum | SleepState { WAITING = 0, POWERSAVING = 1, INROUTE = 2 } |
Public Member Functions | |
| EnergyModel (MobileNode *n, double energy, double l1, double l2) | |
| double | energy () const |
| double | initialenergy () const |
| double | level1 () const |
| double | level2 () const |
| void | setenergy (double e) |
| virtual void | DecrTxEnergy (double txtime, double P_tx) |
| virtual void | DecrRcvEnergy (double rcvtime, double P_rcv) |
| virtual void | DecrIdleEnergy (double idletime, double P_idle) |
| virtual double | MaxTxtime (double P_tx) |
| virtual double | MaxRcvtime (double P_rcv) |
| virtual double | MaxIdletime (double P_idle) |
| void | add_neighbor (u_int32_t) |
| void | scan_neighbor () |
| int | getneighbors () |
| double | level1 () |
| double | level2 () |
| int | sleep () |
| int | state () |
| float | state_start_time () |
| float & | max_inroute_time () |
| int & | adaptivefidelity () |
| int & | powersavingflag () |
| bool & | node_on () |
| float & | total_sndtime () |
| float & | total_rcvtime () |
| float & | total_sleeptime () |
| AdaptiveFidelityEntity * | afe () |
| int & | maxttl () |
| virtual void | set_node_sleep (int) |
| virtual void | set_node_state (int) |
| virtual void | add_rcvtime (float t) |
| virtual void | add_sndtime (float t) |
| void | start_powersaving () |
Protected Attributes | |
| double | energy_ |
| double | initialenergy_ |
| double | level1_ |
| double | level2_ |
| MobileNode * | node_ |
| struct { | |
| int neighbor_cnt_ | |
| neighbor_list_item * head | |
| } | neighbor_list |
| SoftNeighborHandler * | snh_ |
| int | sleep_mode_ |
| float | total_sleeptime_ |
| float | total_rcvtime_ |
| float | total_sndtime_ |
| int | powersavingflag_ |
| float | last_time_gosleep |
| float | max_inroute_time_ |
| int | maxttl_ |
| int | state_ |
| float | state_start_time_ |
| int | adaptivefidelity_ |
| AdaptiveFidelityEntity * | afe_ |
| bool | node_on_ |
|
|
Definition at line 148 of file energy-model.h.
00148 { WAITING = 0, POWERSAVING = 1, INROUTE = 2 };
|
|
||||||||||||||||||||
|
Definition at line 90 of file energy-model.h. References adaptivefidelity_, energy_, initialenergy_, last_time_gosleep, level1_, level2_, max_inroute_time_, maxttl_, neighbor_list, node_, node_on_, powersavingflag_, sleep_mode_, total_rcvtime_, total_sleeptime_, and total_sndtime_.
00090 : 00091 energy_(energy), initialenergy_(energy), 00092 level1_(l1), level2_(l2), node_(n), 00093 sleep_mode_(0), total_sleeptime_(0), total_rcvtime_(0), 00094 total_sndtime_(0), powersavingflag_(0), 00095 last_time_gosleep(0), max_inroute_time_(300), maxttl_(5), 00096 adaptivefidelity_(0), node_on_(true) 00097 { 00098 neighbor_list.neighbor_cnt_ = 0; 00099 neighbor_list.head = NULL; 00100 } |
|
|
Definition at line 131 of file energy-model.h. References adaptivefidelity_. Referenced by AdaptiveFidelityEntity::adapt_it(), MobileNode::command(), and Mac802_11::recv_timer().
00131 { return adaptivefidelity_; }
|
|
|
Definition at line 163 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 Mac802_11::recv_timer().
00164 {
00165 neighbor_list_item *np;
00166 np = neighbor_list.head;
00167 for (; np; np = np->next) {
00168 if (np->id == nodeid) {
00169 np->ttl = maxttl_;
00170 break;
00171 }
00172 }
00173 if (!np) { // insert this new entry
00174 np = new neighbor_list_item;
00175 np->id = nodeid;
00176 np->ttl = maxttl_;
00177 np->next = neighbor_list.head;
00178 neighbor_list.head = np;
00179 neighbor_list.neighbor_cnt_++;
00180 }
00181 }
|
|
|
Definition at line 142 of file energy-model.h. References total_rcvtime_.
00142 {total_rcvtime_ += t;}
|
|
|
Definition at line 143 of file energy-model.h. References total_sndtime_.
00143 {total_sndtime_ += t;}
|
|
|
Definition at line 137 of file energy-model.h. References afe_. Referenced by MobileNode::command().
00137 { return afe_; }
|
|
||||||||||||
|
Definition at line 86 of file energy-model.cc. References God::ComputeRoute(), energy_, and God::instance(). Referenced by WirelessPhy::command(), WirelessPhy::node_off(), WirelessPhy::sendDown(), and WirelessPhy::sendUp().
00087 {
00088 double dEng = P_idle * idletime;
00089 if (energy_ <= dEng)
00090 energy_ = 0.0;
00091 else
00092 energy_ = energy_ - dEng;
00093 if (energy_ <= 0.0)
00094 God::instance()->ComputeRoute();
00095 }
|
Here is the call graph for this function:

|
||||||||||||
|
Definition at line 75 of file energy-model.cc. References God::ComputeRoute(), energy_, and God::instance(). Referenced by WirelessPhy::sendUp().
00076 {
00077 double dEng = P_rcv * rcvtime;
00078 if (energy_ <= dEng)
00079 energy_ = 0.0;
00080 else
00081 energy_ = energy_ - dEng;
00082 if (energy_ <= 0.0)
00083 God::instance()->ComputeRoute();
00084 }
|
Here is the call graph for this function:

|
||||||||||||
|
Definition at line 63 of file energy-model.cc. References God::ComputeRoute(), energy_, 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 }
|
Here is the call graph for this function:

|
|
Definition at line 102 of file energy-model.h. References energy_. Referenced by God::CountAliveNode(), EnergyTimer::EnergyTimer(), EnergyTimer::expire(), CMUTrace::format_mac(), God::IsNeighbor(), MobileNode::log_energy(), CMUTrace::nam_format(), CMUTrace::node_energy(), WirelessPhy::sendDown(), WirelessPhy::sendUp(), OmniMcastAgent::Terminate(), FloodingAgent::Terminate(), DiffusionAgent::Terminate(), and WirelessPhy::UpdateIdleEnergy().
00102 { return energy_; }
|
|
|
Definition at line 123 of file energy-model.h. References neighbor_list. Referenced by AdaptiveFidelityEntity::adapt_it().
00123 { return neighbor_list.neighbor_cnt_; }
|
|
|
Definition at line 103 of file energy-model.h. References initialenergy_. Referenced by CMUTrace::nam_format(), OmniMcastAgent::Terminate(), FloodingAgent::Terminate(), and DiffusionAgent::Terminate().
00103 { return initialenergy_; }
|
|
|
Definition at line 125 of file energy-model.h. References level1_.
00125 { return level1_; }
|
|
|
Definition at line 104 of file energy-model.h. References level1_. Referenced by CMUTrace::nam_format().
00104 { return level1_; }
|
|
|
Definition at line 126 of file energy-model.h. References level2_.
00126 { return level2_; }
|
|
|
Definition at line 105 of file energy-model.h. References level2_. Referenced by CMUTrace::nam_format().
00105 { return level2_; }
|
|
|
Definition at line 130 of file energy-model.h. References max_inroute_time_. Referenced by MobileNode::command(), and AdaptiveFidelityEntity::handle().
00130 { return max_inroute_time_; }
|
|
|
Definition at line 117 of file energy-model.h. References energy_.
00117 {
00118 return(energy_/P_idle);
00119 }
|
|
|
Definition at line 114 of file energy-model.h. References energy_.
00114 {
00115 return(energy_/P_rcv);
00116 }
|
|
|
Definition at line 138 of file energy-model.h. References maxttl_. Referenced by MobileNode::command().
00138 { return maxttl_; }
|
|
|
Definition at line 111 of file energy-model.h. References energy_.
00111 {
00112 return(energy_/P_tx);
00113 }
|
|
|
Definition at line 133 of file energy-model.h. References node_on_. Referenced by MobileNode::command(), God::IsNeighbor(), GAFAgent::node_off(), GAFAgent::node_on(), WirelessPhy::sendDown(), WirelessPhy::sendUp(), and WirelessPhy::UpdateIdleEnergy().
00133 { return node_on_; }
|
|
|
Definition at line 132 of file energy-model.h. References powersavingflag_. Referenced by MobileNode::command(), and CMUTrace::format_rtp().
00132 { return powersavingflag_; }
|
|
|
Definition at line 183 of file energy-model.cc. References neighbor_list, EnergyModel::neighbor_list_item::next, and EnergyModel::neighbor_list_item::ttl. Referenced by SoftNeighborHandler::handle().
00184 {
00185 neighbor_list_item *np, *lp;
00186 if (neighbor_list.neighbor_cnt_ > 0) {
00187 lp = neighbor_list.head;
00188 np = lp->next;
00189 for (; np; np = np->next) {
00190 np->ttl--;
00191 if (np->ttl <= 0){
00192 lp->next = np->next;
00193 delete np;
00194 np = lp;
00195 neighbor_list.neighbor_cnt_--;
00196 }
00197 lp = np;
00198 }
00199 // process the first element
00200 np = neighbor_list.head;
00201 np->ttl--;
00202 if (np->ttl <= 0) {
00203 neighbor_list.head = np->next;
00204 delete np;
00205 neighbor_list.neighbor_cnt_--;
00206 }
00207 }
00208 }
|
|
|
Definition at line 111 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(), MacTdma::radioSwitch(), Mac802_11::send(), and AdaptiveFidelityEntity::start().
00112 {
00113 Tcl& tcl=Tcl::instance();
00114 //static float last_time_gosleep;
00115 // status = 1 to set node into sleep mode
00116 // status = 0 to put node back to idle mode.
00117 // time in the sleep mode should be used as credit to idle
00118 // time energy consumption
00119 if (status) {
00120 last_time_gosleep = Scheduler::instance().clock();
00121 //printf("id=%d : put node into sleep at %f\n",
00122 // address_,last_time_gosleep);
00123 sleep_mode_ = status;
00124 if (node_->exist_namchan())
00125 tcl.evalf("%s add-mark m1 blue hexagon",node_->name());
00126 } else {
00127 sleep_mode_ = status;
00128 if (node_->exist_namchan())
00129 tcl.evalf("%s delete-mark m1", node_->name());
00130 //printf("id= %d last_time_sleep = %f\n",
00131 // address_, last_time_gosleep);
00132 if (last_time_gosleep) {
00133 total_sleeptime_ += Scheduler::instance().clock() -
00134 last_time_gosleep;
00135 last_time_gosleep = 0;
00136 }
00137 }
00138 }
|
Here is the call graph for this function:

|
|
Definition at line 140 of file energy-model.cc. References abort(), Scheduler::clock(), INROUTE, Scheduler::instance(), POWERSAVING, state_, state_start_time_, and WAITING. Referenced by CMUTrace::format_rtp(), AdaptiveFidelityEntity::handle(), and Mac802_11::send().
00141 {
00142 switch (state_) {
00143 case POWERSAVING:
00144 case WAITING:
00145 state_ = state;
00146 state_start_time_ = Scheduler::instance().clock();
00147 break;
00148 case INROUTE:
00149 if (state == POWERSAVING) {
00150 state_ = state;
00151 } else if (state == INROUTE) {
00152 // a data packet is forwarded, needs to reset
00153 // state_start_time_
00154 state_start_time_= Scheduler::instance().clock();
00155 }
00156 break;
00157 default:
00158 printf("Wrong state, quit...\n");
00159 abort();
00160 }
00161 }
|
Here is the call graph for this function:

|
|
Definition at line 106 of file energy-model.h. References energy_. Referenced by MobileNode::command(), WirelessPhy::sendDown(), and WirelessPhy::sendUp().
00106 { energy_ = e; }
|
|
|
Definition at line 127 of file energy-model.h. References sleep_mode_. Referenced by AdaptiveFidelityEntity::handle(), MacTdma::radioSwitch(), Mac802_11::send(), WirelessPhy::sendDown(), and WirelessPhy::sendUp().
00127 { return sleep_mode_; }
|
|
|
Definition at line 99 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().
00100 {
00101 snh_ = new SoftNeighborHandler(this);
00102 snh_->start();
00103
00104 afe_ = new AdaptiveFidelityEntity(this);
00105 afe_->start();
00106
00107 state_ = EnergyModel::POWERSAVING;
00108 state_start_time_ = Scheduler::instance().clock();
00109 }
|
Here is the call graph for this function:

|
|
Definition at line 128 of file energy-model.h. References state_. Referenced by AdaptiveFidelityEntity::handle().
00128 { return state_; }
|
|
|
Definition at line 129 of file energy-model.h. References state_start_time_. Referenced by AdaptiveFidelityEntity::handle().
00129 { return state_start_time_; }
|
|
|
Definition at line 135 of file energy-model.h. References total_rcvtime_. Referenced by MobileNode::command().
00135 { return total_rcvtime_; }
|
|
|
Definition at line 136 of file energy-model.h. References total_sleeptime_. Referenced by MobileNode::command().
00136 { return total_sleeptime_; }
|
|
|
Definition at line 134 of file energy-model.h. References total_sndtime_. Referenced by MobileNode::command().
00134 { return total_sndtime_; }
|
|
|
Definition at line 183 of file energy-model.h. Referenced by adaptivefidelity(), and EnergyModel(). |
|
|
Definition at line 184 of file energy-model.h. Referenced by afe(), and start_powersaving(). |
|
|
Definition at line 151 of file energy-model.h. Referenced by DecrIdleEnergy(), DecrRcvEnergy(), DecrTxEnergy(), energy(), EnergyModel(), MaxIdletime(), MaxRcvtime(), MaxTxtime(), and setenergy(). |
|
|
Definition at line 167 of file energy-model.h. |
|
|
Definition at line 152 of file energy-model.h. Referenced by EnergyModel(), and initialenergy(). |
|
|
Definition at line 176 of file energy-model.h. Referenced by EnergyModel(), and set_node_sleep(). |
|
|
Definition at line 153 of file energy-model.h. Referenced by EnergyModel(), and level1(). |
|
|
Definition at line 154 of file energy-model.h. Referenced by EnergyModel(), and level2(). |
|
|
Definition at line 177 of file energy-model.h. Referenced by EnergyModel(), and max_inroute_time(). |
|
|
Definition at line 179 of file energy-model.h. Referenced by add_neighbor(), EnergyModel(), and maxttl(). |
|
|
Definition at line 166 of file energy-model.h. |
|
|
Referenced by add_neighbor(), EnergyModel(), getneighbors(), and scan_neighbor(). |
|
|
Definition at line 156 of file energy-model.h. Referenced by EnergyModel(), and set_node_sleep(). |
|
|
Definition at line 186 of file energy-model.h. Referenced by EnergyModel(), and node_on(). |
|
|
Definition at line 175 of file energy-model.h. Referenced by EnergyModel(), and powersavingflag(). |
|
|
Definition at line 171 of file energy-model.h. Referenced by EnergyModel(), set_node_sleep(), and sleep(). |
|
|
Definition at line 169 of file energy-model.h. Referenced by start_powersaving(). |
|
|
Definition at line 181 of file energy-model.h. Referenced by set_node_state(), start_powersaving(), and state(). |
|
|
Definition at line 182 of file energy-model.h. Referenced by set_node_state(), start_powersaving(), and state_start_time(). |
|
|
Definition at line 173 of file energy-model.h. Referenced by add_rcvtime(), EnergyModel(), and total_rcvtime(). |
|
|
Definition at line 172 of file energy-model.h. Referenced by EnergyModel(), set_node_sleep(), and total_sleeptime(). |
|
|
Definition at line 174 of file energy-model.h. Referenced by add_sndtime(), EnergyModel(), and total_sndtime(). |
1.3.3