Dear all,
As my name implies i am new to both ns and tcl. I am trying to develop a WSN simulator using zigbee protocol instead of MAC 802.11 as my final year project. I was trying to give the user of the simulator to choose to enter the number of nodes so before getting my hands dirty with all the coding i decided to run a code which has been written by someone else. I have been told that the code does work however while running it i kept getting the following error message [EMAIL PROTECTED]:~/Documents$ ns wireless1-orig1.tcl num_nodes is set 1 INITIALIZE THE LIST xListHead Agent/TCP B0 with pktsize 1500 flows from Node0 to Node0 Starting Simulation... Segmentation fault I would really really appreciate all the help i can get as i need to get this code working which means i will understand what i am doing or supposed to be doing. For your reference and subsequent correction or comment or explanation here i have attached the code. http://www.nabble.com/file/p20722366/wireless1-orig1.tcl wireless1-orig1.tcl if there is gonna be an error to open here it is again: #============================================== # ====================================================================== # Define options # ====================================================================== set val(chan) Channel/WirelessChannel set val(prop) Propagation/TwoRayGround set val(netif) Phy/WirelessPhy/802_15_4 ;#network interface type set val(mac) Mac/802_15_4 set val(ifq) Queue/DropTail/PriQueue set val(ll) LL set val(ant) Antenna/OmniAntenna set val(x) 670 ;# X dimension of the topography set val(y) 670 ;# Y dimension of the topography set val(ifqlen) 2000 ;# max packet in ifq set val(seed) 0.0 set val(adhocRouting) AODV set val(traffic) cbr ;# cbr/poisson/ftp #set val(nn) 10 ;# how many nodes are simulated #set val(cp) "../Documents/scene/cbr-3-test" #set val(sc) "../Documents/scene/scen-3-test" set opt(stop) 50.0 ;# simulation time set num_nodes [lindex $argv 0] puts "$num_nodes"; set nodes [expr $num_nodes + 1] set epsilon 0.00005 set ppktsize 160 set pinterval 0.020 set pktsize 1500 set transport both set sink 0 set vsrc 1 Phy/WirelessPhy set CSThresh_ 3.981e-13; #carrier sensing threshold Phy/WirelessPhy set RXThresh_ 3.981e-13; #receiver threshold Phy/WirelessPhy set CPThresh_ 10; #capture threshold Phy/WirelessPhy set freq_ 2.4e+9; #Operating Freq Phy/WirelessPhy set L_ 1.0; #System loss factor Phy/WirelessPhy set pt_ 0.001; #======================================================================= # Main Program # ====================================================================== # # Initialize Global Variables # # create simulator instance set ns_ [new Simulator] # setup topography object set topo [new Topography] # create trace object for ns and nam set tracefd [open wireless1-out.tr w] ; #opens the file out.tr set namtrace [open wireless1-out.nam w] ; #opens the file out.nam $ns_ trace-all $tracefd $ns_ namtrace-all-wireless $namtrace $val(x) $val(y) # define topology $topo load_flatgrid $val(x) $val(y) # Create God set god_ [create-god $nodes] # define how node should be created set chan_1_ [new $val(chan)] #================================================== #Global node setting #================================================== $ns_ node-config -adhocRouting $val(adhocRouting) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channel $chan_1_ \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -macTrace ON # Create the specified number of nodes [$val(nn)] and "attach" them # to the channel. for {set i 0} {$i < $nodes } {incr i} { set node_($i) [$ns_ node] $node_($i) random-motion 0 ;# disable random motion $node_($i) shape hexagon $node_($i) color red } for {set i 1} {$i < $nodes} {incr i} { set P [new Application/Traffic/CBR] set P_src [new Agent/UDP] set P_sink [new Agent/UDP] $P set random_ 0 $P set packetSize_ $ppktsize $P set interval_ $pinterval $P_src set packetSize_ $ppktsize $P_src set class_ [expr $i + 1] # $P_src set prio_ $pri if {[expr $i % 2] == 0} { set node_src $i set node_sink 0 } else { set node_src 0 set node_sink $i } $ns_ attach-agent $node_($node_src) $P_src $ns_ attach-agent $node_($node_sink) $P_sink $ns_ connect $P_src $P_sink $P attach-agent $P_src puts "P$i with pktsize $ppktsize flows from Node$node_src to Node$node_sink every $pinterval" # $ns_ at [expr 3.0 * $i] "$P start" # $ns_ at [expr 3.0 * ($i + $num_nodes) + $soaktime - 6] "$P stop" $ns_ at 0.0 "$P start" $ns_ at $val(stop) "$P stop" } # Define node movement model #puts "Loading connection pattern..." #source $val(cp) # Define traffic model #puts "Loading scenario file..." #source $val(sc) # Define node initial position in nam # 20 defines the node size in nam, must adjust it according to your scenario # The function must be called after mobility model is defined for {set i 0} {$i < $nodes} {incr i} { $ns_ initial_node_pos $node_($i) 20 } for {set i 0} {$i < $nodes/2 } {incr i} { $node_($i) set X_ 750.0 $node_($i) set Y_ [expr $i*20+5] $node_($i) set Z_ 0.0 } for {set i $nodes/2} {$i < $nodes } {incr i} { $node_($i) set X_ 250.0 $node_($i) set Y_ [expr ($i-10)*250+5] $node_($i) set Z_ 0.0 } #set udp [new Agent/UDP] #$udp set fid_ 2 #set sink [new Agent/Null] #$ns_ attach-agent $node_(1) $udp #$ns_ attach-agent $node_(6) $sink #$ns_ connect $udp $sink # TCP connections between node_(0) and node_(1) and also between node_(2) and node_(3) for {set i 0} {$i < $nodes} {incr i} { set agent_src Agent/TCP set agent_sink Agent/TCPSink/DelAck set B [new Application/FTP] set B_src [new $agent_src] set B_sink [new $agent_sink] $B_src set packetSize_ $pktsize $B_src set class_ [expr $i + 1] if { $i%2 == 0} { set sink $i set src 0 } else { set src $i set sink 0 } $ns_ attach-agent $node_($src) $B_src $ns_ attach-agent $node_($sink) $B_sink $ns_ connect $B_src $B_sink $B attach-agent $B_src puts "$agent_src B$i with pktsize $pktsize flows from Node$src to Node$sink" $ns_ at 0.0 "$B start" $ns_ at $opt(stop) "$B stop" } #for {set i 0} {$i < $nodes } {incr i} { #set cbr [new Application/Traffic/CBR] #$cbr attach-agent $tcp #$cbr set type_ CBR #$cbr set packet_size_ 100 #$cbr set rate_ 10kb #$cbr set random_ false #$ns_ at 10.0 "$cbr start" #$ns_ at 300.0 "$cbr stop" #} #informative headers for the CMUTrace file puts $tracefd "M 0.0 nn $nodes x $val(x) y $val(y) rp $val(adhocRouting)" #puts $tracefd "M 0.0 sc $val(sc) cp $val(cp) seed $val(seed)" puts $tracefd "M 0.0 prop $val(prop) ant $val(ant)" #========================================================== #End of simulation #========================================================== #Tell nodes when the simulation ends for {set i 0} {$i < $nodes } {incr i} { $ns_ at 600.0 "$node_($i) reset"; } $ns_ at 600.001 "stop" $ns_ at 600.01 "puts \"NS EXITING...\" ; $ns_ halt" #Creates the stop procedure to close the nam and trace files opened proc stop {} { global ns_ tracefd namtrace $ns_ flush-trace close $tracefd close $namtrace exec nam wireless1-out.nam & } proc do_halt {} { global ns_ puts "NS EXITING..." $ns_halt } puts "Starting Simulation..." $ns_ run #====================================================================== #THE END #====================================================================== Looking forward for your kind and positive reply, I would like to thank you all in advance. Best regards, new2ns -- View this message in context: http://www.nabble.com/building-simulator-using-MAC-802_15_4%21-help-needed%21-tp20722366p20722366.html Sent from the ns-users mailing list archive at Nabble.com.
