#include <mobilenode.h>
Inheritance diagram for MobileNode:


Definition at line 120 of file mobilenode.h.
Public Member Functions | |
| void | add_route (char *dst, NsObject *target) |
| virtual void | AddAdj (nodeid_t a, int w=1) |
| void | addNeighbor (Node *node) |
| int | address () |
| int | base_stn () |
| virtual int | command (int argc, const char *const *argv) |
| void | delete_route (char *dst, NsObject *nullagent) |
| double | destX () |
| double | destY () |
| double | distance (MobileNode *) |
| void | Dump (void) |
| void | dump (void) |
| double | dX () |
| double | dY () |
| double | dZ () |
| EnergyModel * | energy_model () |
| bool | exist_namchan () const |
| void | getLoc (double *x, double *y, double *z) |
| virtual nodeid_t | GetNeighbor (Nix_t) |
| virtual NixPair_t | GetNix (nodeid_t) |
| virtual Nixl_t | GetNixl () |
| double | getUpdateTime () |
| void | getVelo (double *dx, double *dy, double *dz) |
| virtual void | idle_energy_patch (float, float) |
| const struct if_head & | ifhead () const |
| void | insert (struct node_head *head) |
| NsObject * | intf_to_target (int32_t) |
| const struct linklist_head & | linklisthead () const |
| Location * | location () |
| void | log_energy (int) |
| MobileNode () | |
| virtual void | namlog (const char *fmt,...) |
| MobileNode *& | next () |
| virtual const NodeWeight_t | NextAdj (const NodeWeight_t &) |
| MobileNode * | nextnode () |
| int | nodeid () |
| double | propdelay (MobileNode *) |
| double | radius () |
| void | route_notify (RoutingModule *rtm) |
| void | set_base_stn (int addr) |
| void | set_table_size (int level, int csize) |
| void | set_table_size (int nn) |
| double | speed () |
| void | start (void) |
| void | unreg_route_notify (RoutingModule *rtm) |
| void | Update (void) |
| void | update_position () |
| void | UpdateNeighbors (void) |
| double | X () |
| double | Y () |
| double | Z () |
Static Public Member Functions | |
| static Node * | get_node_by_address (nsaddr_t) |
Data Fields | |
| int | link_changes |
| EdgeVec_t | m_Adj |
| nodeid_t | m_id |
| Neighbor * | neighbor |
| neighbor_list_node * | neighbor_list_ |
| MobileNode * | nextX_ |
| MobileNode * | prevX_ |
| int | route_changes |
| double | time_arrival |
| double | time_transition |
Static Public Attributes | |
| static struct node_head | nodehead_ |
Protected Member Functions | |
| LIST_ENTRY (Node) entry | |
| void | log_movement () |
| void | namdump () |
| void | random_destination () |
| void | random_direction () |
| void | random_speed () |
| int | set_destination (double x, double y, double speed) |
Protected Attributes | |
| int | address_ |
| double | destX_ |
| double | destY_ |
| double | dX_ |
| double | dY_ |
| double | dZ_ |
| EnergyModel * | energy_model_ |
| if_head | ifhead_ |
| linklist_head | linklisthead_ |
| Location * | location_ |
| Tcl_Channel | namChan_ |
| MobileNode * | next_ |
| int | nodeid_ |
| PositionHandler | pos_handle_ |
| Event | pos_intr_ |
| double | position_update_interval_ |
| double | position_update_time_ |
| double | radius_ |
| RoutingModule * | rtnotif_ |
| double | speed_ |
| double | X_ |
| double | Y_ |
| double | Z_ |
Static Protected Attributes | |
| static char | nwrk_ [NODE_NAMLOG_BUFSZ] |
Private Member Functions | |
| void | bound_position () |
| int | initialized () |
| LIST_ENTRY (MobileNode) link_ | |
| void | random_position () |
Private Attributes | |
| int | base_stn_ |
| Trace * | log_target_ |
| int | random_motion_ |
| Topography * | T_ |
Friends | |
| class | PositionHandler |
|
|
Definition at line 118 of file mobilenode.cc. References base_stn_, destX_, destY_, dX_, dY_, dZ_, Node::ifhead_, LIST_INIT, LIST_INSERT_HEAD, log_target_, MN_POSITION_UPDATE_INTERVAL, next_, position_update_interval_, position_update_time_, radius_, random_motion_, speed_, T_, X_, Y_, and Z_. 00118 : 00119 pos_handle_(this) 00120 { 00121 X_ = Y_ = Z_ = speed_ = 0.0; 00122 dX_ = dY_ = dZ_ = 0.0; 00123 destX_ = destY_ = 0.0; 00124 00125 random_motion_ = 0; 00126 base_stn_ = -1; 00127 T_ = 0; 00128 00129 log_target_ = 0; 00130 next_ = 0; 00131 radius_ = 0; 00132 00133 position_update_interval_ = MN_POSITION_UPDATE_INTERVAL; 00134 position_update_time_ = 0.0; 00135 00136 00137 LIST_INSERT_HEAD(&nodehead, this, link_); // node list 00138 LIST_INIT(&ifhead_); // interface list 00139 bind("X_", &X_); 00140 bind("Y_", &Y_); 00141 bind("Z_", &Z_); 00142 bind("speed_", &speed_); 00143 00144 }
|
|
||||||||||||
|
Reimplemented from ParentNode. Definition at line 241 of file node.cc. References RoutingModule::add_route(), and Node::rtnotif_. 00241 { 00242 if (rtnotif_) 00243 rtnotif_->add_route(dst, target); 00244 }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Reimplemented from RNode. |
|
|
Definition at line 262 of file node.cc. References Node::neighbor, Node::neighbor_list_, neighbor_list_node::next, and neighbor_list_node::nodeid. Referenced by Node::command(). 00262 { 00263 00264 neighbor_list_node* nlistItem = (neighbor_list_node *)malloc(sizeof(neighbor_list_node)); 00265 nlistItem->nodeid = neighbor->nodeid(); 00266 nlistItem->next = neighbor_list_; 00267 neighbor_list_=nlistItem; 00268 }
|
|
|
Reimplemented from ParentNode. Definition at line 131 of file node.h. Referenced by ARPTable::arpinput(), ARPTable::arpresolve(), SctpAgent::command(), PushbackAgent::command(), God::command(), SatRouteObject::compute_topology(), GridKeeper::dump(), SatNode::dumpSats(), GridKeeper::get_neighbors(), LinkHandoffMgr::get_peer_linkhead(), GridHandler::handle(), WebTrafPool::launchReq(), SatRouteObject::populate_routing_tables(), and EmpFtpTrafSession::sendFile(). 00131 { return address_;}
|
|
|
Definition at line 137 of file mobilenode.h. References base_stn_. Referenced by DSDV_Agent::forwardPacket(), DSRAgent::handlePktWithoutSR(), and DSRAgent::sendOutPacketWithRoute(). 00137 { return base_stn_;}
|
|
|
Definition at line 367 of file mobilenode.cc. References Node::address_, Topography::lowerX(), Topography::lowerY(), T_, Topography::upperX(), Topography::upperY(), X_, and Y_. 00368 { 00369 double minX; 00370 double maxX; 00371 double minY; 00372 double maxY; 00373 int recheck = 1; 00374 00375 assert(T_ != 0); 00376 00377 minX = T_->lowerX(); 00378 maxX = T_->upperX(); 00379 minY = T_->lowerY(); 00380 maxY = T_->upperY(); 00381 00382 while (recheck) { 00383 recheck = 0; 00384 if (X_ < minX) { 00385 X_ = minX + (minX - X_); 00386 recheck = 1; 00387 } 00388 if (X_ > maxX) { 00389 X_ = maxX - (X_ - maxX); 00390 recheck = 1; 00391 } 00392 if (Y_ < minY) { 00393 Y_ = minY + (minY - Y_); 00394 recheck = 1; 00395 } 00396 if (Y_ > maxY) { 00397 Y_ = maxY- (Y_ - maxY); 00398 recheck = 1; 00399 } 00400 if (recheck) { 00401 fprintf(stderr, "Adjust position of node %d\n",address_); 00402 } 00403 } 00404 }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Reimplemented from Node. Definition at line 147 of file mobilenode.cc. References __PRETTY_FUNCTION__, EnergyModel::adaptivefidelity(), Node::address_, EnergyModel::afe(), base_stn_, Node::command(), God::ComputeRoute(), Node::energy_model(), idle_energy_patch(), Node::ifhead_, Phy::insertnode(), God::instance(), log_energy(), log_movement(), log_target_, EnergyModel::max_inroute_time(), EnergyModel::maxttl(), EnergyModel::node_on(), EnergyModel::powersavingflag(), radius_, random_motion_, set_destination(), AdaptiveFidelityEntity::set_sleepseed(), AdaptiveFidelityEntity::set_sleeptime(), EnergyModel::setenergy(), Phy::setnode(), start(), EnergyModel::start_powersaving(), T_, EnergyModel::total_rcvtime(), EnergyModel::total_sleeptime(), EnergyModel::total_sndtime(), and update_position(). 00148 { 00149 Tcl& tcl = Tcl::instance(); 00150 if(argc == 2) { 00151 if(strcmp(argv[1], "start") == 0) { 00152 start(); 00153 return TCL_OK; 00154 } else if(strcmp(argv[1], "log-movement") == 0) { 00155 #ifdef DEBUG 00156 fprintf(stderr, 00157 "%d - %s: calling update_position()\n", 00158 address_, __PRETTY_FUNCTION__); 00159 #endif 00160 update_position(); 00161 log_movement(); 00162 return TCL_OK; 00163 } else if(strcmp(argv[1], "log-energy") == 0) { 00164 log_energy(1); 00165 return TCL_OK; 00166 } else if(strcmp(argv[1], "powersaving") == 0) { 00167 energy_model()->powersavingflag() = 1; 00168 energy_model()->start_powersaving(); 00169 return TCL_OK; 00170 } else if(strcmp(argv[1], "adaptivefidelity") == 0) { 00171 energy_model()->adaptivefidelity() = 1; 00172 energy_model()->powersavingflag() = 1; 00173 energy_model()->start_powersaving(); 00174 return TCL_OK; 00175 } else if (strcmp(argv[1], "energy") == 0) { 00176 Tcl& tcl = Tcl::instance(); 00177 tcl.resultf("%f", energy_model()->energy()); 00178 return TCL_OK; 00179 } else if (strcmp(argv[1], "adjustenergy") == 0) { 00180 // assume every 10 sec schedule and 1.15 W 00181 // idle energy consumption. needs to be 00182 // parameterized. 00183 idle_energy_patch(10, 1.15); 00184 energy_model()->total_sndtime() = 0; 00185 energy_model()->total_rcvtime() = 0; 00186 energy_model()->total_sleeptime() = 0; 00187 return TCL_OK; 00188 } else if (strcmp(argv[1], "on") == 0) { 00189 energy_model()->node_on() = true; 00190 tcl.evalf("%s set netif_(0)", name_); 00191 const char *str = tcl.result(); 00192 tcl.evalf("%s NodeOn", str); 00193 God::instance()->ComputeRoute(); 00194 return TCL_OK; 00195 } else if (strcmp(argv[1], "off") == 0) { 00196 energy_model()->node_on() = false; 00197 tcl.evalf("%s set netif_(0)", name_); 00198 const char *str = tcl.result(); 00199 tcl.evalf("%s NodeOff", str); 00200 tcl.evalf("%s set ragent_", name_); 00201 str = tcl.result(); 00202 tcl.evalf("%s reset-state", str); 00203 God::instance()->ComputeRoute(); 00204 return TCL_OK; 00205 } else if (strcmp(argv[1], "shutdown") == 0) { 00206 // set node state 00207 //Phy *p; 00208 energy_model()->node_on() = false; 00209 00210 //p = ifhead().lh_first; 00211 //if (p) ((WirelessPhy *)p)->node_off(); 00212 return TCL_OK; 00213 } else if (strcmp(argv[1], "startup") == 0) { 00214 energy_model()->node_on() = true; 00215 return TCL_OK; 00216 } 00217 00218 } else if(argc == 3) { 00219 if(strcmp(argv[1], "addif") == 0) { 00220 WiredPhy* phyp = (WiredPhy*)TclObject::lookup(argv[2]); 00221 if(phyp == 0) 00222 return TCL_ERROR; 00223 phyp->insertnode(&ifhead_); 00224 phyp->setnode(this); 00225 return TCL_OK; 00226 } else if (strcmp(argv[1], "setsleeptime") == 0) { 00227 energy_model()->afe()->set_sleeptime(atof(argv[2])); 00228 energy_model()->afe()->set_sleepseed(atof(argv[2])); 00229 return TCL_OK; 00230 } else if (strcmp(argv[1], "setenergy") == 0) { 00231 energy_model()->setenergy(atof(argv[2])); 00232 return TCL_OK; 00233 } else if (strcmp(argv[1], "settalive") == 0) { 00234 energy_model()->max_inroute_time() = atof(argv[2]); 00235 return TCL_OK; 00236 } else if (strcmp(argv[1], "maxttl") == 0) { 00237 energy_model()->maxttl() = atoi(argv[2]); 00238 return TCL_OK; 00239 } else if(strcmp(argv[1], "radius") == 0) { 00240 radius_ = strtod(argv[2],NULL); 00241 return TCL_OK; 00242 } else if(strcmp(argv[1], "random-motion") == 0) { 00243 random_motion_ = atoi(argv[2]); 00244 return TCL_OK; 00245 } else if(strcmp(argv[1], "addif") == 0) { 00246 WirelessPhy *n = (WirelessPhy*) 00247 TclObject::lookup(argv[2]); 00248 if(n == 0) 00249 return TCL_ERROR; 00250 n->insertnode(&ifhead_); 00251 n->setnode(this); 00252 return TCL_OK; 00253 } else if(strcmp(argv[1], "topography") == 0) { 00254 T_ = (Topography*) TclObject::lookup(argv[2]); 00255 if (T_ == 0) 00256 return TCL_ERROR; 00257 return TCL_OK; 00258 } else if(strcmp(argv[1], "log-target") == 0) { 00259 log_target_ = (Trace*) TclObject::lookup(argv[2]); 00260 if (log_target_ == 0) 00261 return TCL_ERROR; 00262 return TCL_OK; 00263 } else if (strcmp(argv[1],"base-station") == 0) { 00264 base_stn_ = atoi(argv[2]); 00265 if(base_stn_ == -1) 00266 return TCL_ERROR; 00267 return TCL_OK; 00268 } 00269 } else if (argc == 4) { 00270 if (strcmp(argv[1], "idleenergy") == 0) { 00271 idle_energy_patch(atof(argv[2]),atof(argv[3])); 00272 return TCL_OK; 00273 } 00274 } else if (argc == 5) { 00275 if (strcmp(argv[1], "setdest") == 0) { 00276 /* <mobilenode> setdest <X> <Y> <speed> */ 00277 #ifdef DEBUG 00278 fprintf(stderr, "%d - %s: calling set_destination()\n", 00279 address_, __FUNCTION__); 00280 #endif 00281 00282 if (set_destination(atof(argv[2]), atof(argv[3]), 00283 atof(argv[4])) < 0) 00284 return TCL_ERROR; 00285 return TCL_OK; 00286 } 00287 } 00288 return Node::command(argc, argv); 00289 }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Reimplemented from ParentNode. Definition at line 247 of file node.cc. References RoutingModule::delete_route(), and Node::rtnotif_. 00247 { 00248 if (rtnotif_) 00249 rtnotif_->delete_route(dst, nullagent); 00250 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 150 of file mobilenode.h. References destX_. Referenced by GridKeeper::new_moves(). 00150 { return destX_; }
|
|
|
Definition at line 151 of file mobilenode.h. References destY_. Referenced by GridKeeper::new_moves(). 00151 { return destY_; }
|
|
|
Definition at line 584 of file mobilenode.cc. References update_position(), X_, Y_, and Z_. Referenced by propdelay(). 00585 { 00586 update_position(); // update my position 00587 m->update_position(); // update m's position 00588 00589 double Xpos = (X_ - m->X_) * (X_ - m->X_); 00590 double Ypos = (Y_ - m->Y_) * (Y_ - m->Y_); 00591 double Zpos = (Z_ - m->Z_) * (Z_ - m->Z_); 00592 00593 return sqrt(Xpos + Ypos + Zpos); 00594 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 624 of file calcdest.cc. References Node::destination, Node::direction, Neighbor::index, Node::index, Node::neighbor, Node::position, Neighbor::reachable, Node::speed, Node::time_arrival, Node::time_transition, Node::time_update, vector::X, vector::Y, and vector::Z. 00625 { 00626 Neighbor *m; 00627 u_int32_t i; 00628 00629 fprintf(stdout, 00630 "Node: %d\tpos: (%.2f, %.2f, %.2f) dst: (%.2f, %.2f, %.2f)\n", 00631 index, position.X, position.Y, position.Z, 00632 destination.X, destination.Y, destination.Z); 00633 fprintf(stdout, "\tdir: (%.2f, %.2f, %.2f) speed: %.2f\n", 00634 direction.X, direction.Y, direction.Z, speed); 00635 fprintf(stdout, "\tArrival: %.2f, Update: %.2f, Transition: %.2f\n", 00636 time_arrival, time_update, time_transition); 00637 00638 for(i = 1; i < NODES; i++) { 00639 m = &neighbor[i]; 00640 fprintf(stdout, "\tNeighbor: %d (%lx), Reachable: %d, Transition Time: %.2f\n", 00641 m->index, (long) m, m->reachable, m->time_transition); 00642 } 00643 }
|
|
|
Definition at line 296 of file mobilenode.cc. References Node::address_, Phy::dump(), Node::ifhead_, and Phy::nextnode(). 00297 { 00298 Phy *n; 00299 fprintf(stdout, "Index: %d\n", address_); 00300 fprintf(stdout, "Network Interface List\n"); 00301 for(n = ifhead_.lh_first; n; n = n->nextnode() ) 00302 n->dump(); 00303 fprintf(stdout, "--------------------------------------------------\n"); 00304 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 147 of file mobilenode.h. References dX_. Referenced by GridKeeper::new_moves(). 00147 { return dX_; }
|
|
|
Definition at line 148 of file mobilenode.h. References dY_. Referenced by GridKeeper::new_moves(). 00148 { return dY_; }
|
|
|
Definition at line 149 of file mobilenode.h. References dZ_. 00149 { return dZ_; }
|
|
|
Definition at line 192 of file node.h. Referenced by command(), WirelessPhy::em(), EnergyTimer::EnergyTimer(), EnergyTimer::expire(), CMUTrace::format_mac_common(), CMUTrace::format_rtp(), GAFAgent::myttl(), CMUTrace::nam_format(), CMUTrace::node_energy(), GAFAgent::node_off(), GAFAgent::node_on(), Phy802_15_4::recv(), Mac802_15_4::recv(), Mac802_11::send(), and Mac802_15_4::sendDown(). 00192 { return energy_model_; }
|
|
|
Definition at line 133 of file node.h. Referenced by EnergyModel::set_node_sleep(). 00133 { return (namChan_ != 0); }
|
|
|
Definition at line 315 of file node.cc. References Node::address_, Node::nextnode(), and Node::Node(). Referenced by CMUTrace::format_mac_common(), CMUTrace::format_rtp(), GAFAgent::GAFAgent(), CMUTrace::nam_format(), and CMUTrace::node_energy(). 00316 { 00317 Node * tnode = nodehead_.lh_first; 00318 for (; tnode; tnode = tnode->nextnode()) { 00319 if (tnode->address_ == id ) { 00320 return (tnode); 00321 } 00322 } 00323 return NULL; 00324 }
Here is the call graph for this function: ![]() |
|
||||||||||||||||
|
Definition at line 130 of file mobilenode.h. References update_position(), X_, Y_, and Z_. Referenced by GeoRoutingFilter::getNodeLocation(), TwoRayGround::Pr(), Shadowing::Pr(), ShadowingVis::Pr(), FreeSpace::Pr(), LandmarkAgent::startUp(), and FloodAgent::startUp(). 00130 { 00131 update_position(); *x = X_; *y = Y_; *z = Z_; 00132 }
Here is the call graph for this function: ![]() |
|
|
|
|
|
Reimplemented from RNode. |
|
|
Reimplemented in NixNode. |
|
|
Definition at line 153 of file mobilenode.h. References position_update_time_. 00153 { return position_update_time_; }
|
|
||||||||||||||||
|
Definition at line 133 of file mobilenode.h. References dX_, dY_, and speed_.
|
|
||||||||||||
|
Definition at line 603 of file mobilenode.cc. Referenced by command().
|
|
|
Definition at line 148 of file node.h. Referenced by GAFAgent::myttl(), GAFAgent::node_off(), GAFAgent::node_on(), and WirelessChannel::sendUp(). 00148 { return ifhead_; }
|
|
|
Definition at line 211 of file mobilenode.h. References log_target_, Topography::lowerX(), Topography::lowerY(), T_, Topography::upperX(), Topography::upperY(), X_, and Y_. Referenced by set_destination(), and start(). 00211 { 00212 return (T_ && log_target_ && 00213 X_ >= T_->lowerX() && X_ <= T_->upperX() && 00214 Y_ >= T_->lowerY() && Y_ <= T_->upperY()); 00215 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 141 of file node.h. References LIST_INSERT_HEAD. Referenced by Node::Node(). 00141 { 00142 LIST_INSERT_HEAD(head, this, entry); 00143 }
|
|
|
Definition at line 305 of file node.cc. References LinkHead::label(), Node::linklisthead_, and LinkHead::nextlinkhead(). 00306 { 00307 LinkHead *lhp = linklisthead_.lh_first; 00308 for (; lhp; lhp = lhp->nextlinkhead()) 00309 if (label == lhp->label()) 00310 return ((NsObject*) lhp); 00311 return NULL; 00312 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 149 of file node.h. Referenced by SatRouteObject::compute_topology(), LinkHandoffMgr::get_peer_next_linkhead(), SatLinkHandoffMgr::handoff(), and TermLinkHandoffMgr::handoff(). 00149 { 00150 return linklisthead_; 00151 }
|
|
|
|
|
|
|
|
|
Definition at line 193 of file node.h. 00193 { return location_; }
|
|
|
Definition at line 345 of file mobilenode.cc. References Node::address_, BaseTrace::buffer(), Scheduler::clock(), BaseTrace::dump(), EnergyModel::energy(), Node::energy_model_, Scheduler::instance(), log_target_, and Trace::pt_. Referenced by command(). 00346 { 00347 if (!log_target_) 00348 return; 00349 Scheduler &s = Scheduler::instance(); 00350 if (flag) { 00351 sprintf(log_target_->pt_->buffer(),"N -t %f -n %d -e %f", s.clock(), 00352 address_, energy_model_->energy()); 00353 } else { 00354 sprintf(log_target_->pt_->buffer(),"N -t %f -n %d -e 0 ", s.clock(), 00355 address_); 00356 } 00357 log_target_->pt_->dump(); 00358 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 331 of file mobilenode.cc. References Node::address_, BaseTrace::buffer(), Scheduler::clock(), destX_, destY_, BaseTrace::dump(), Scheduler::instance(), log_target_, Trace::pt_, speed_, X_, Y_, and Z_. Referenced by command(), set_destination(), and start(). 00332 { 00333 if (!log_target_) 00334 return; 00335 00336 Scheduler& s = Scheduler::instance(); 00337 sprintf(log_target_->pt_->buffer(), 00338 "M %.5f %d (%.2f, %.2f, %.2f), (%.2f, %.2f), %.2f", 00339 s.clock(), address_, X_, Y_, Z_, destX_, destY_, speed_); 00340 log_target_->pt_->dump(); 00341 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 281 of file node.cc. References abort(), Node::namChan_, NODE_NAMLOG_BUFSZ, and Node::nwrk_. Referenced by Node::namlog(), and set_destination(). 00282 { 00283 int n = 0; 00284 /* Otherwise nwrk_ isn't initialized */ 00285 n = strlen(nwrk_); 00286 if (n >= NODE_NAMLOG_BUFSZ-1) { 00287 fprintf(stderr, 00288 "Node::namdump() exceeds buffer size. Bail out.\n"); 00289 abort(); 00290 } 00291 if (n > 0) { 00292 /* 00293 * tack on a newline (temporarily) instead 00294 * of doing two writes 00295 */ 00296 nwrk_[n] = '\n'; 00297 nwrk_[n + 1] = 0; 00298 (void)Tcl_Write(namChan_, nwrk_, n + 1); 00299 nwrk_[n] = 0; 00300 } 00301 }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Definition at line 270 of file node.cc. References Node::namChan_, Node::namdump(), and Node::nwrk_. 00271 { 00272 // Don't do anything if we don't have a log file. 00273 if (namChan_ == 0) 00274 return; 00275 va_list ap; 00276 va_start(ap, fmt); 00277 vsprintf(nwrk_, fmt, ap); 00278 namdump(); 00279 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 142 of file mobilenode.h. References next_. Referenced by GridKeeper::command(), GridKeeper::dump(), GridKeeper::get_neighbors(), and GridHandler::handle(). 00142 { return next_; }
|
|
|
Reimplemented from RNode. |
|
|
Reimplemented from Node. Definition at line 136 of file mobilenode.h.
|
|
|
Reimplemented from ParentNode. Definition at line 132 of file node.h. Referenced by PushbackAgent::calculateLowerBound(), PushbackAgent::command(), PushbackAgent::getQID(), LoggingDataStruct::LoggingDataStruct(), CMUTrace::nam_format(), PushbackAgent::printMsg(), PushbackAgent::processPushbackStatus(), PushbackAgent::pushbackCancel(), PushbackAgent::pushbackCheck(), PushbackAgent::pushbackRefresh(), PushbackAgent::pushbackStatus(), PushbackAgent::refreshUpstreamLimits(), and PushbackQueue::timeout(). 00132 { return nodeid_;}
|
|
|
Definition at line 597 of file mobilenode.cc. References distance(), and SPEED_OF_LIGHT. Referenced by WirelessChannel::get_pdelay(), CMUTrace::nam_format(), and WirelessChannel::sendUp(). 00598 { 00599 return distance(m) / SPEED_OF_LIGHT; 00600 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 152 of file mobilenode.h. References radius_. Referenced by GridKeeper::get_neighbors(). 00152 { return radius_; }
|
|
|
Definition at line 516 of file mobilenode.cc. References Node::address_, random_speed(), set_destination(), speed_, T_, Random::uniform(), Topography::upperX(), and Topography::upperY(). Referenced by start(). 00517 { 00518 if (T_ == 0) { 00519 fprintf(stderr, "No TOPOLOGY assigned\n"); 00520 exit(1); 00521 } 00522 00523 random_speed(); 00524 #ifdef DEBUG 00525 fprintf(stderr, "%d - %s: calling set_destination()\n", 00526 address_, __FUNCTION__); 00527 #endif 00528 (void) set_destination(Random::uniform() * T_->upperX(), 00529 Random::uniform() * T_->upperY(), 00530 speed_); 00531 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 534 of file mobilenode.cc. References dX_, dY_, dZ_, Topography::lowerX(), Topography::lowerY(), Random::random(), Topography::resol(), T_, Random::uniform(), Topography::upperX(), Topography::upperY(), X_, and Y_. 00535 { 00536 /* this code isn't used anymore -dam 1/22/98 */ 00537 double len; 00538 00539 dX_ = (double) Random::random(); 00540 dY_ = (double) Random::random(); 00541 00542 len = sqrt( (dX_ * dX_) + (dY_ * dY_) ); 00543 00544 dX_ /= len; 00545 dY_ /= len; 00546 dZ_ = 0.0; // we're not flying... 00547 00548 /* 00549 * Determine the sign of each component of the 00550 * direction vector. 00551 */ 00552 if (X_ > (T_->upperX() - 2*T_->resol())) { 00553 if (dX_ > 0) 00554 dX_ = -dX_; 00555 } else if (X_ < (T_->lowerX() + 2*T_->resol())) { 00556 if (dX_ < 0) 00557 dX_ = -dX_; 00558 } else if (Random::uniform() <= 0.5) { 00559 dX_ = -dX_; 00560 } 00561 00562 if (Y_ > (T_->upperY() - 2*T_->resol())) { 00563 if (dY_ > 0) 00564 dY_ = -dY_; 00565 } else if (Y_ < (T_->lowerY() + 2*T_->resol())) { 00566 if (dY_ < 0) 00567 dY_ = -dY_; 00568 } else if(Random::uniform() <= 0.5) { 00569 dY_ = -dY_; 00570 } 00571 #if 0 00572 fprintf(stderr, "Location: (%f, %f), Direction: (%f, %f)\n", 00573 X_, Y_, dX_, dY_); 00574 #endif 00575 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 501 of file mobilenode.cc. References Topography::height(), position_update_time_, T_, Random::uniform(), Topography::upperX(), Topography::upperY(), X_, Y_, and Z_. Referenced by start(). 00502 { 00503 if (T_ == 0) { 00504 fprintf(stderr, "No TOPOLOGY assigned\n"); 00505 exit(1); 00506 } 00507 00508 X_ = Random::uniform() * T_->upperX(); 00509 Y_ = Random::uniform() * T_->upperY(); 00510 Z_ = T_->height(X_, Y_); 00511 00512 position_update_time_ = 0.0; 00513 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 578 of file mobilenode.cc. References MAX_SPEED, speed_, and Random::uniform(). Referenced by random_destination(). 00579 { 00580 speed_ = Random::uniform() * MAX_SPEED; 00581 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 222 of file node.cc. References RoutingModule::route_notify(), and Node::rtnotif_. Referenced by VcRoutingModule::command(), ManualRoutingModule::command(), HierRoutingModule::command(), McastRoutingModule::command(), QSRoutingModule::command(), SourceRoutingModule::command(), BaseRoutingModule::command(), and MPLSModule::command(). 00222 { 00223 if (rtnotif_ == NULL) 00224 rtnotif_ = rtm; 00225 else 00226 rtnotif_->route_notify(rtm); 00227 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 138 of file mobilenode.h. References base_stn_. Referenced by MIPMHAgent::recv(). 00138 { base_stn_ = addr; }
|
|
||||||||||||||||
|
Definition at line 407 of file mobilenode.cc. References Node::address_, Scheduler::clock(), destX_, destY_, dX_, dY_, dZ_, initialized(), GridKeeper::instance(), Scheduler::instance(), log_movement(), Topography::lowerX(), Topography::lowerY(), Node::namChan_, Node::namdump(), Node::nodeid_, Node::nwrk_, position_update_time_, speed_, T_, update_position(), Topography::upperX(), Topography::upperY(), X_, and Y_. Referenced by command(), and random_destination(). 00408 { 00409 assert(initialized()); 00410 00411 if(x >= T_->upperX() || x <= T_->lowerX()) 00412 return -1; 00413 if(y >= T_->upperY() || y <= T_->lowerY()) 00414 return -1; 00415 00416 update_position(); // figure out where we are now 00417 00418 destX_ = x; 00419 destY_ = y; 00420 speed_ = s; 00421 00422 dX_ = destX_ - X_; 00423 dY_ = destY_ - Y_; 00424 dZ_ = 0.0; // this isn't used, since flying isn't allowed 00425 00426 if (destX_ != X_ || destY_ != Y_) { 00427 // normalize dx, dy to unit len 00428 double len = sqrt( (dX_ * dX_) + (dY_ * dY_) ); 00429 dX_ /= len; 00430 dY_ /= len; 00431 } 00432 00433 position_update_time_ = Scheduler::instance().clock(); 00434 00435 #ifdef DEBUG 00436 fprintf(stderr, "%d - %s: calling log_movement()\n", 00437 address_, __FUNCTION__); 00438 #endif 00439 log_movement(); 00440 00441 /* update gridkeeper */ 00442 if (GridKeeper::instance()){ 00443 GridKeeper* gp = GridKeeper::instance(); 00444 gp-> new_moves(this); 00445 } 00446 00447 if (namChan_ != 0) { 00448 sprintf(nwrk_, 00449 "n -t %f -s %d -x %f -y %f -U %f -V %f -T %f", 00450 Scheduler::instance().clock(), 00451 nodeid_, 00452 X_, Y_, 00453 speed_ * dX_, speed_ * dY_, 00454 ((speed_*dX_) != 0) ? 00455 (destX_-X_)/(speed_*dX_) : speed_*dX_ 00456 ); 00457 namdump(); 00458 } 00459 return 0; 00460 }
Here is the call graph for this function: ![]() |
|
||||||||||||
|
Reimplemented from ParentNode. Definition at line 257 of file node.cc. References Node::rtnotif_, and RoutingModule::set_table_size(). 00257 { 00258 if (rtnotif_) 00259 rtnotif_->set_table_size(level, csize); 00260 }
Here is the call graph for this function: ![]() |
|
|
Reimplemented from ParentNode. Definition at line 252 of file node.cc. References Node::rtnotif_, and RoutingModule::set_table_size(). 00252 { 00253 if (rtnotif_) 00254 rtnotif_->set_table_size(nn); 00255 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 146 of file mobilenode.h. References speed_. Referenced by GridKeeper::new_moves(). 00146 { return speed_; }
|
|
|
Definition at line 310 of file mobilenode.cc. References __PRETTY_FUNCTION__, Node::address_, initialized(), Scheduler::instance(), log_movement(), pos_handle_, pos_intr_, position_update_interval_, random_destination(), random_motion_, random_position(), and Scheduler::schedule(). Referenced by command(). 00311 { 00312 Scheduler& s = Scheduler::instance(); 00313 00314 if(random_motion_ == 0) { 00315 log_movement(); 00316 return; 00317 } 00318 00319 assert(initialized()); 00320 00321 random_position(); 00322 #ifdef DEBUG 00323 fprintf(stderr, "%d - %s: calling random_destination()\n", 00324 address_, __PRETTY_FUNCTION__); 00325 #endif 00326 random_destination(); 00327 s.schedule(&pos_handle_, &pos_intr_, position_update_interval_); 00328 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 229 of file node.cc. References RoutingModule::next_rtm_, Node::rtnotif_, and RoutingModule::unreg_route_notify(). Referenced by VcRoutingModule::command(), ManualRoutingModule::command(), HierRoutingModule::command(), McastRoutingModule::command(), QSRoutingModule::command(), SourceRoutingModule::command(), BaseRoutingModule::command(), and MPLSModule::command(). 00229 { 00230 if (rtnotif_) { 00231 if (rtnotif_ == rtm) { 00232 //RoutingModule *tmp = rtnotif_; 00233 rtnotif_= rtnotif_->next_rtm_; 00234 //free (tmp); 00235 } 00236 else 00237 rtnotif_->unreg_route_notify(rtm); 00238 } 00239 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 427 of file calcdest.cc. References Node::destination, Node::direction, vector::length(), LIST_NEXT, LIST_REMOVE, MAXTIME, Node::position, setdest::speed, Node::speed, TIME, Node::time_arrival, Node::time_transition, Node::time_update, setdest::X, vector::X, setdest::Y, vector::Y, and vector::Z. 00428 { 00429 struct setdest *setdest = traj.lh_first; 00430 00431 position += (speed * (TIME - time_update)) * direction; 00432 00433 if(TIME == time_arrival) { 00434 00435 if (NULL == setdest) 00436 { 00437 destination = position; 00438 direction.X = direction.Y = direction.Z = 0.0; 00439 speed = 0.0; 00440 time_arrival = MAXTIME + 1; 00441 } 00442 else 00443 { 00444 vector v; 00445 destination.X = setdest->X; 00446 destination.Y = setdest->Y; 00447 speed = setdest->speed; 00448 if (0.0 == speed) 00449 { // it's a pause at the current location 00450 if (LIST_NEXT(setdest,traj)) 00451 time_arrival = LIST_NEXT(setdest,traj)->time; 00452 else 00453 time_arrival = MAXTIME + 1; 00454 } 00455 else 00456 { // we're moving somewhere, when do we get there? 00457 v = destination - position; 00458 direction = v / v.length(); 00459 time_arrival = TIME + v.length() / speed; 00460 } 00461 LIST_REMOVE(setdest,traj); 00462 free(setdest); 00463 } 00464 } 00465 00466 time_update = TIME; 00467 time_transition = 0.0; 00468 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 465 of file mobilenode.cc. References Node::address_, Scheduler::clock(), destX_, destY_, dX_, dY_, Scheduler::instance(), position_update_time_, speed_, T_, Topography::updateNodesList(), X_, Y_, and Z_. Referenced by command(), distance(), GridKeeper::get_neighbors(), getLoc(), and set_destination(). 00466 { 00467 double now = Scheduler::instance().clock(); 00468 double interval = now - position_update_time_; 00469 double oldX = X_; 00470 //double oldY = Y_; 00471 00472 if ((interval == 0.0)&&(position_update_time_!=0)) 00473 return; // ^^^ for list-based imprvmnt 00474 00475 00476 // CHECK, IF THE SPEED IS 0, THEN SKIP, but usually it's not 0 00477 X_ += dX_ * (speed_ * interval); 00478 Y_ += dY_ * (speed_ * interval); 00479 00480 if ((dX_ > 0 && X_ > destX_) || (dX_ < 0 && X_ < destX_)) 00481 X_ = destX_; // correct overshoot (slow? XXX) 00482 if ((dY_ > 0 && Y_ > destY_) || (dY_ < 0 && Y_ < destY_)) 00483 Y_ = destY_; // correct overshoot (slow? XXX) 00484 00485 /* list based improvement */ 00486 if(oldX != X_)// || oldY != Y_) 00487 T_->updateNodesList(this, oldX);//, oldY); 00488 // COMMENTED BY -VAL- // bound_position(); 00489 00490 // COMMENTED BY -VAL- // Z_ = T_->height(X_, Y_); 00491 00492 #if 0 00493 fprintf(stderr, "Node: %d, X: %6.2f, Y: %6.2f, Z: %6.2f, time: %f\n", 00494 address_, X_, Y_, Z_, now); 00495 #endif 00496 position_update_time_ = now; 00497 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 472 of file calcdest.cc. References a, b, Node::direction, Node::index, vector::length(), m1, m2, Node::neighbor, NodeList, Node::position, RANGE, ROUND_ERROR, SANITY_CHECKS, Node::speed, and TIME. 00473 { 00474 static Node *n2; 00475 static Neighbor *m1, *m2; 00476 static vector D, B, v1, v2; 00477 static double a, b, c, t1, t2, Q; 00478 static u_int32_t i, reachable; 00479 00480 v1 = speed * direction; 00481 00482 /* 00483 * Only need to go from INDEX --> N for each one since links 00484 * are symmetric. 00485 */ 00486 for(i = index+1; i < NODES; i++) { 00487 00488 m1 = &neighbor[i]; 00489 n2 = &NodeList[i]; 00490 m2 = &n2->neighbor[index]; 00491 00492 assert(i == m1->index); 00493 assert(m1->index == n2->index); 00494 assert(index == m2->index); 00495 assert(m1->reachable == m2->reachable); 00496 00497 reachable = m1->reachable; 00498 00499 /* ================================================== 00500 Determine Reachability 00501 ================================================== */ 00502 { vector d = position - n2->position; 00503 00504 if(d.length() < RANGE) { 00505 #ifdef SANITY_CHECKS 00506 if(TIME > 0.0 && m1->reachable == 0) 00507 assert(RANGE - d.length() < ROUND_ERROR); 00508 #endif 00509 m1->reachable = m2->reachable = 1; 00510 } 00511 // Boundary condition handled below. 00512 else { 00513 #ifdef SANITY_CHECKS 00514 if(TIME > 0.0 && m1->reachable == 1) 00515 assert(d.length() - RANGE < ROUND_ERROR); 00516 #endif 00517 m1->reachable = m2->reachable = 0; 00518 } 00519 #ifdef DEBUG 00520 fprintf(stdout, "# %.6f (%d, %d) %.2fm\n", 00521 TIME, index, m1->index, d.length()); 00522 #endif 00523 } 00524 00525 /* ================================================== 00526 Determine Next Event Time 00527 ================================================== */ 00528 v2 = n2->speed * n2->direction; 00529 00530 D = v2 - v1; 00531 B = n2->position - position; 00532 00533 a = (D.X * D.X) + (D.Y * D.Y) + (D.Z * D.Z); 00534 b = 2 * ((D.X * B.X) + (D.Y * B.Y) + (D.Z * B.Z)); 00535 c = (B.X * B.X) + (B.Y * B.Y) + (B.Z * B.Z) - (RANGE * RANGE); 00536 00537 if(a == 0.0) { 00538 /* 00539 * No Finite Solution 00540 */ 00541 m1->time_transition= 0.0; 00542 m2->time_transition= 0.0; 00543 goto next; 00544 } 00545 00546 Q = b * b - 4 * a * c; 00547 if(Q < 0.0) { 00548 /* 00549 * No real roots. 00550 */ 00551 m1->time_transition = 0.0; 00552 m2->time_transition = 0.0; 00553 goto next; 00554 } 00555 Q = sqrt(Q); 00556 00557 t1 = (-b + Q) / (2 * a); 00558 t2 = (-b - Q) / (2 * a); 00559 00560 // Stupid Rounding/Boundary Cases 00561 if(t1 > 0.0 && t1 < ROUND_ERROR) t1 = 0.0; 00562 if(t1 < 0.0 && -t1 < ROUND_ERROR) t1 = 0.0; 00563 if(t2 > 0.0 && t2 < ROUND_ERROR) t2 = 0.0; 00564 if(t2 < 0.0 && -t2 < ROUND_ERROR) t2 = 0.0; 00565 00566 if(t1 < 0.0 && t2 < 0.0) { 00567 /* 00568 * No "future" time solution. 00569 */ 00570 m1->time_transition = 0.0; 00571 m2->time_transition = 0.0; 00572 goto next; 00573 } 00574 00575 /* 00576 * Boundary conditions. 00577 */ 00578 if((t1 == 0.0 && t2 > 0.0) || (t2 == 0.0 && t1 > 0.0)) { 00579 m1->reachable = m2->reachable = 1; 00580 m1->time_transition = m2->time_transition = TIME + max(t1, t2); 00581 } 00582 else if((t1 == 0.0 && t2 < 0.0) || (t2 == 0.0 && t1 < 0.0)) { 00583 m1->reachable = m2->reachable = 0; 00584 m1->time_transition = m2->time_transition = 0.0; 00585 } 00586 00587 /* 00588 * Non-boundary conditions. 00589 */ 00590 else if(t1 > 0.0 && t2 > 0.0) { 00591 m1->time_transition = TIME + min(t1, t2); 00592 m2->time_transition = TIME + min(t1, t2); 00593 } 00594 else if(t1 > 0.0) { 00595 m1->time_transition = TIME + t1; 00596 m2->time_transition = TIME + t1; 00597 } 00598 else { 00599 m1->time_transition = TIME + t2; 00600 m2->time_transition = TIME + t2; 00601 } 00602 00603 /* ================================================== 00604 Update the transition times for both NODEs. 00605 ================================================== */ 00606 if(time_transition == 0.0 || (m1->time_transition && 00607 time_transition > m1->time_transition)) { 00608 time_transition = m1->time_transition; 00609 } 00610 if(n2->time_transition == 0.0 || (m2->time_transition && 00611 n2->time_transition > m2->time_transition)) { 00612 n2->time_transition = m2->time_transition; 00613 } 00614 next: 00615 if(reachable != m1->reachable && TIME > 0.0) { 00616 LinkChangeCount++; 00617 link_changes++; 00618 n2->link_changes++; 00619 } 00620 } 00621 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 143 of file mobilenode.h. References X_. Referenced by GridKeeper::command(), GridKeeper::get_neighbors(), WirelessChannel::getAffectedNodes(), GridKeeper::new_moves(), WirelessChannel::sortLists(), and WirelessChannel::updateNodesList(). 00143 { return X_; }
|
|
|
Definition at line 144 of file mobilenode.h. References Y_. Referenced by GridKeeper::command(), GridKeeper::get_neighbors(), WirelessChannel::getAffectedNodes(), and GridKeeper::new_moves(). 00144 { return Y_; }
|
|
|
Definition at line 145 of file mobilenode.h. References Z_. 00145 { return Z_; }
|
|
|
Definition at line 122 of file mobilenode.h. |
|
|
Reimplemented from ParentNode. Definition at line 169 of file node.h. Referenced by bound_position(), Node::command(), command(), dump(), Node::get_node_by_address(), log_energy(), log_movement(), random_destination(), set_destination(), start(), and update_position(). |
|
|
Definition at line 237 of file mobilenode.h. Referenced by base_stn(), command(), MobileNode(), and set_base_stn(). |
|
|
Definition at line 191 of file mobilenode.h. Referenced by destX(), log_movement(), MobileNode(), set_destination(), and update_position(). |
|
|
Definition at line 192 of file mobilenode.h. Referenced by destY(), log_movement(), MobileNode(), set_destination(), and update_position(). |
|
|
Definition at line 186 of file mobilenode.h. Referenced by dX(), getVelo(), MobileNode(), random_direction(), set_destination(), and update_position(). |
|
|
Definition at line 187 of file mobilenode.h. Referenced by dY(), getVelo(), MobileNode(), random_direction(), set_destination(), and update_position(). |
|
|
Definition at line 188 of file mobilenode.h. Referenced by dZ(), MobileNode(), random_direction(), and set_destination(). |
|
|
Definition at line 195 of file node.h. Referenced by Node::command(), and log_energy(). |
|
|
Definition at line 179 of file node.h. Referenced by SatNode::command(), command(), dump(), MobileNode(), and Node::Node(). |
|
|
|
|
|
Definition at line 180 of file node.h. Referenced by Node::command(), Node::intf_to_target(), and Node::Node(). |
|
|
|
|
|
Definition at line 233 of file mobilenode.h. Referenced by command(), initialized(), log_energy(), log_movement(), and MobileNode(). |
|
|
|
|
|
Definition at line 42 of file rnode.h. Referenced by NixNode::Id(). |
|
|
Definition at line 173 of file node.h. Referenced by Node::command(), Node::namdump(), Node::namlog(), and set_destination(). |
|
|
Definition at line 109 of file setdest.h. Referenced by Node::addNeighbor(), Node::Dump(), and Node::UpdateNeighbors(). |
|
|
Definition at line 154 of file node.h. Referenced by Node::addNeighbor(), LoggingDataStruct::LoggingDataStruct(), and Node::Node(). |
|
|
Definition at line 197 of file mobilenode.h. Referenced by MobileNode(), and next(). |
|
|
Definition at line 162 of file mobilenode.h. Referenced by WirelessChannel::addNodeToList(), WirelessChannel::getAffectedNodes(), WirelessChannel::removeNodeFromList(), WirelessChannel::sortLists(), and WirelessChannel::updateNodesList(). |
|
|
Definition at line 140 of file node.h. Referenced by SatRouteObject::compute_topology(), SatNode::dumpSats(), Node::Node(), and SatRouteObject::populate_routing_tables(). |
|
|
Reimplemented from ParentNode. Definition at line 170 of file node.h. Referenced by Node::command(), and set_destination(). |
|
|
Definition at line 176 of file node.h. Referenced by Node::namdump(), Node::namlog(), and set_destination(). |
|
|
Definition at line 201 of file mobilenode.h. Referenced by start(). |
|
|
Definition at line 202 of file mobilenode.h. Referenced by start(). |
|
|
Definition at line 170 of file mobilenode.h. Referenced by MobileNode(), and start(). |
|
|
Definition at line 169 of file mobilenode.h. Referenced by getUpdateTime(), MobileNode(), random_position(), set_destination(), and update_position(). |
|
|
Definition at line 163 of file mobilenode.h. Referenced by WirelessChannel::addNodeToList(), WirelessChannel::getAffectedNodes(), WirelessChannel::removeNodeFromList(), WirelessChannel::sortLists(), and WirelessChannel::updateNodesList(). |
|
|
Definition at line 198 of file mobilenode.h. Referenced by command(), MobileNode(), and radius(). |
|
|
Definition at line 218 of file mobilenode.h. Referenced by command(), MobileNode(), and start(). |
|
|
Definition at line 85 of file setdest.h. Referenced by show_diffs(). |
|
|
Definition at line 183 of file node.h. Referenced by Node::add_route(), Node::delete_route(), Node::route_notify(), Node::set_table_size(), and Node::unreg_route_notify(). |
|
|
Definition at line 179 of file mobilenode.h. Referenced by getVelo(), log_movement(), MobileNode(), random_destination(), random_speed(), set_destination(), speed(), and update_position(). |
|
|
Definition at line 229 of file mobilenode.h. Referenced by bound_position(), command(), initialized(), MobileNode(), random_destination(), random_direction(), random_position(), set_destination(), and update_position(). |
|
|
Definition at line 81 of file setdest.h. Referenced by Node::Dump(), and Node::Update(). |
|
|
Definition at line 82 of file setdest.h. Referenced by Node::Dump(), main(), and Node::Update(). |
|
|
Definition at line 176 of file mobilenode.h. Referenced by bound_position(), distance(), getLoc(), initialized(), log_movement(), MobileNode(), random_direction(), random_position(), set_destination(), update_position(), and X(). |
|
|
Definition at line 177 of file mobilenode.h. Referenced by bound_position(), distance(), getLoc(), initialized(), log_movement(), MobileNode(), random_direction(), random_position(), set_destination(), update_position(), and Y(). |
|
|
Definition at line 178 of file mobilenode.h. Referenced by distance(), getLoc(), log_movement(), MobileNode(), random_position(), update_position(), and Z(). |
1.4.6