 Finding Node Position,Velocity and Speed in NS2.34

In this article I would explain the use of three predefined functions in MobileNode.cc to access a nodes position,velocity and speed dynamically. Let me choose the AODV protocol.

1. Include mobilenode.h header in aodv.h

`#include<mobilenode.h>`

2. In protected scope declare the variables you would be using to store the node parameters.

`double xpos;`

`double ypos;`

`double zval;`

`int node_speed;`

`MobileNode *iNode;` 3. In aodv.cc initialize the declared variables.

`xpos = 0.0;`
`ypos = 0.0;`
`val = 0.0;`
`node_speed = 0;`
`MobileNode  *iNode;`

4. Finally access the required functions from mobilenode.h. I am accesing those functions from AODV::forward() function

/***This code retrieves node position*****/

`iNode = (MobileNode*) (Node::get_node_by_address(index));`
`((MobileNode *) iNode)->getLoc(&xpos,&ypos,&zpos);`
`printf("Position of %d,  X=%f,  Y=%f,  Z=%f   \n ", index,  xpos, ypos, zpos);`

/***This code retrieves the nodes velocity*****/
`iNode = (MobileNode*) (Node::get_node_by_address(index));`
`((MobileNode *) iNode)->getVelo(&xpos, &ypos, &zpos);`
`printf("Velocity of %d,  X=%f, Y=%f, Z=%f   \n", index, xpos,  ypos, zpos);`

/***This code retrieves the nodes speed*****/
`iNode = (MobileNode*) (Node::get_node_by_address(index));`
`node_speed = ((MobileNode *) iNode)->speed();`
`printf("Velocity of %d, Speed=%d  \n",  index, node_speed);`

Remember to run
make clean; make all

command after any changes to aodv.cc or aodv.h

After all these steps are done, execute simple-wireless.tcl found at ~/ns-allinone-2.34/ns-2.34/tcl/ex with the protocol mentioned in it changed from DSDV to AODV.
The result would be displayed on the terminal whenever AODV::forward() is invoked(in this case).