1. Get the number of nodes in the network
#include <god.h>
God::instance()->nodes();

2. In order to use God object in C++ code, in your simluation script,
you should have
# Create God
set god_ [create-god $opt(nn)]
for {set i 0} {$i < $opt(nn) } {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;# disable random motion
$god_ new_node $node_($i)
}

3. In order to check that if node j is node i's neighbor, use the
following function.
God::instance()->IsNeighbor(i , j);

4. In order to use IsNeighbor function in C++ code, either add
EnergyModel in simulation script, (please refer to NS Manual Chapter
19 for detail)
$ns_ node-config -energyModel $energymodel \
-rxPower $p_rx \
-txPower $p_tx \
-initialEnergy $initialenergy \
or change the IsNeighbor function in mobile/god.cc (disable energy checking)
bool God::IsNeighbor(int i, int j)
{
assert(i<num_nodes && j<num_nodes);

/*
if (mb_node[i]->energy_model()->node_on() == false ||
mb_node[j]->energy_model()->node_on() == false ||
mb_node[i]->energy_model()->energy() <= 0.0 ||
mb_node[j]->energy_model()->energy() <= 0.0 ) {
return false;
}
*/

vector a(mb_node[i]->X(), mb_node[i]->Y(), mb_node[i]->Z());
vector b(mb_node[j]->X(), mb_node[j]->Y(), mb_node[j]->Z());
vector d = a - b;
if (d.length() < RANGE)
return true;
else
return false;

}

Reply via email to