#include <BonnMotionMobility.h>
Inheritance diagram for BonnMotionMobility:
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::Line * | vecp |
int | vecpos |
BonnMotionMobility::~BonnMotionMobility | ( | ) | [protected, virtual] |
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 }
const BonnMotionFile::Line* BonnMotionMobility::vecp [protected] |
int BonnMotionMobility::vecpos [protected] |