Reading from Scenario file to C++ (aodv.cc)
Scenario File test.tcl
$ns_ change-numifs 2
#Calling add-channel in ns-lib.tcl
$ns_ add-channel 0 $chan_(0) 0
$ns_ add-channel 1 $chan_(1) 1
set node_(0) [$ns_ node]
$node_(0) random-motion 0
# In ns-lib.tcl takes indexch ch and intchan (see above)
Simulator instproc add-channel {indexch ch intchan} {
$self instvar chan arrchan
set chan($indexch) $ch #chan takes NSObject
set arrchan($indexch) $intchan #arrchan takes integer
}
# In ns-lib.tcl write get-arrchan to be called from ns-mobilenode.tcl, returns array
Simulator instproc get-arrchan {} {
$self instvar numifs_ arrchan
if [ info exists numifs_ ] {
return [array get arrchan]
}
}
#in ns-mobilenode.tcl in add-target function I call get-arrchan
Node/MobileNode instproc add-target { agent port } {
---
#use array to retrieve array
array set intchanlist [$ns get-arrchan]
#teaching aodv routing agent about values in the inchanlist
if { $port == [Node set rtagent_port_] } {
for {set i 0} {$i < $numIfsSimulator} {incr i} {
$agent setchanlist $i $intchanlist($i)
}
---
---
}
Finally in command() of aodv.cc
else if (strcmp(argv[1], "setchanlist") == 0) {
int index_ch = atoi(argv[2]);
intchanList[index_ch] = atoi(argv[3]);
printf("%d:: channel %d\n", index, intchanList[index_ch]); //prints node-id and channel value
return TCL_OK; //dont' forget this!!!
}
No comments:
Post a Comment