Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BonnMotionMobility Class Reference

#include <BonnMotionMobility.h>

Inheritance diagram for BonnMotionMobility:

LineSegmentsMobilityBase BasicMobility BasicModule INotifiable List of all members.

Detailed Description

Uses the BonnMotion native file format. See NED file for more info.

Author:
Andras Varga


Protected Member Functions

virtual ~BonnMotionMobility ()
virtual void initialize (int)
 Initializes mobility model parameters.
virtual void setTargetPosition ()
 Overridden from LineSegmentsMobilityBase.
virtual void fixIfHostGetsOutside ()
 Overridden from LineSegmentsMobilityBase.

Protected Attributes

const BonnMotionFile::Linevecp
int vecpos


Constructor & Destructor Documentation

BonnMotionMobility::~BonnMotionMobility  )  [protected, virtual]
 

00060 {
00061     BonnMotionFileCache::deleteInstance();
00062 }


Member Function Documentation

void BonnMotionMobility::fixIfHostGetsOutside  )  [protected, virtual]
 

Overridden from LineSegmentsMobilityBase.

Implements LineSegmentsMobilityBase.

00083 {
00084     raiseErrorIfOutside();
00085 }

void BonnMotionMobility::initialize int   )  [protected, virtual]
 

Initializes mobility model parameters.

Reimplemented from LineSegmentsMobilityBase.

00028 {
00029     LineSegmentsMobilityBase::initialize(stage);
00030 
00031     EV << "initializing BonnMotionMobility stage " << stage << endl;
00032 
00033     if (stage == 1)
00034     {
00035         int nodeId = par("nodeId");
00036         if (nodeId == -1)
00037             nodeId = parentModule()->index();
00038 
00039         const char *fname = par("traceFile");
00040         const BonnMotionFile *bmFile = BonnMotionFileCache::instance()->getFile(fname);
00041 
00042         vecp = bmFile->getLine(nodeId);
00043         if (!vecp)
00044             error("invalid nodeId %d -- no such line in file '%s'", nodeId, fname);
00045         vecpos = 0;
00046 
00047         // obtain initial position
00048         const BonnMotionFile::Line& vec = *vecp;
00049         if (vec.size()>=3)
00050         {
00051             pos.x = vec[1];
00052             pos.y = vec[2];
00053             targetPos = pos;
00054         }
00055         updatePosition();
00056     }
00057 }

void BonnMotionMobility::setTargetPosition  )  [protected, virtual]
 

Overridden from LineSegmentsMobilityBase.

Implements LineSegmentsMobilityBase.

00065 {
00066     const BonnMotionFile::Line& vec = *vecp;
00067 
00068     if (vecpos+2 >= vec.size())
00069     {
00070         stationary = true;
00071         return;
00072     }
00073 
00074     targetTime = vec[vecpos];
00075     targetPos.x = vec[vecpos+1];
00076     targetPos.y = vec[vecpos+2];
00077     vecpos += 3;
00078 
00079     EV << "TARGET: t=" << targetTime << " (" << targetPos.x << "," << targetPos.y << ")\n";
00080 }


Member Data Documentation

const BonnMotionFile::Line* BonnMotionMobility::vecp [protected]
 

int BonnMotionMobility::vecpos [protected]
 


The documentation for this class was generated from the following files:
Generated on Thu Oct 19 18:22:21 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.0