INET Framework for OMNeT++/OMNEST
BonnMotionMobility Class Reference

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

#include <BonnMotionMobility.h>

Inheritance diagram for BonnMotionMobility:
LineSegmentsMobilityBase BasicMobility BasicModule INotifiable

List of all members.

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

Detailed Description

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

Author:
Andras Varga

Constructor & Destructor Documentation

BonnMotionMobility::~BonnMotionMobility ( ) [protected, virtual]

Member Function Documentation

void BonnMotionMobility::fixIfHostGetsOutside ( ) [protected, virtual]
void BonnMotionMobility::initialize ( int  stage) [protected, virtual]

Initializes mobility model parameters.

Reimplemented from LineSegmentsMobilityBase.

{
    LineSegmentsMobilityBase::initialize(stage);

    EV << "initializing BonnMotionMobility stage " << stage << endl;

    if (stage == 1)
    {
        int nodeId = par("nodeId");
        if (nodeId == -1)
            nodeId = getParentModule()->getIndex();

        const char *fname = par("traceFile");
        const BonnMotionFile *bmFile = BonnMotionFileCache::getInstance()->getFile(fname);

        vecp = bmFile->getLine(nodeId);
        if (!vecp)
            error("invalid nodeId %d -- no such line in file '%s'", nodeId, fname);
        vecpos = 0;

        // obtain initial position
        const BonnMotionFile::Line& vec = *vecp;
        if (vec.size()>=3)
        {
            pos.x = vec[1];
            pos.y = vec[2];
            targetPos = pos;
        }
        updatePosition();
    }
}
void BonnMotionMobility::setTargetPosition ( ) [protected, virtual]

Overridden from LineSegmentsMobilityBase.

Implements LineSegmentsMobilityBase.

{
    const BonnMotionFile::Line& vec = *vecp;

    if (vecpos+2 >= (int)vec.size())
    {
        stationary = true;
        return;
    }

    targetTime = vec[vecpos];
    targetPos.x = vec[vecpos+1];
    targetPos.y = vec[vecpos+2];
    vecpos += 3;

    EV << "TARGET: t=" << targetTime << " (" << targetPos.x << "," << targetPos.y << ")\n";
}

Member Data Documentation

int BonnMotionMobility::vecpos [protected]

Referenced by initialize(), and setTargetPosition().


The documentation for this class was generated from the following files: