Hello Mutiullah Qureshi,

You need to create getLL procedure.

Node/MobileNode instproc getLL { param0} {
    $self instvar ll_
    return $ll_($param0)
}

Call this procedure with the command:
set ll_src_ [$node_(0) getLL 0]

Urlan

2009/10/26 Mutiullah Qureshi <[email protected]>

>
> Hello.
> Please consider the following script. I have written it for demonstrating
> cross-layering:
>
> # Define options
> set val(chan)           Channel/WirelessChannel    ;# channel type
> set val(prop)           Propagation/TwoRayGround   ;# radio-propagation
> model
> set val(netif)          Phy/WirelessPhy            ;# network interface
> type
> set val(mac)            Mac/802_11                 ;# MAC type
> set val(ifq)            Queue/DropTail/PriQueue    ;# interface queue type
> set val(ll)             LL                         ;# link layer type
> set val(ant)            Antenna/OmniAntenna        ;# antenna model
> set val(ifqlen)         50                         ;# max packet in ifq
> set val(nn)             3                          ;# number of mobilenodes
> set val(rp)             AODV                       ;# routing protocol
> set val(x)              500                  ;# X dimension of topography
> set val(y)              400                  ;# Y dimension of topography
> set val(stop)        150               ;# time of simulation end
>
> set ns          [new Simulator]
> set tracefd       [open cros_ex1_tr.tr w]
> set namtrace      [open cros_ex1_nam.nam w]
>
> $ns trace-all $tracefd
> $ns namtrace-all-wireless $namtrace $val(x) $val(y)
>
> # set up topography object
> set topo       [new Topography]
>
> $topo load_flatgrid $val(x) $val(y)
>
> create-god $val(nn)
>
> #
> #  Create nn mobilenodes [$val(nn)] and attach them to the channel.
> #
>
> set chan_1_ [new $val(chan)]
>
> # configure the nodes
>        $ns node-config -adhocRouting $val(rp) \
>             -llType $val(ll) \
>             -macType $val(mac) \
>             -channel $chan_1_ \
>             -ifqType $val(ifq) \
>             -ifqLen $val(ifqlen) \
>             -antType $val(ant) \
>             -propType $val(prop) \
>             -phyType $val(netif) \
>             -topoInstance $topo \
>             -agentTrace ON \
>             -routerTrace ON \
>             -macTrace OFF \
>             -movementTrace ON \
>
>
>    for {set i 0} {$i < $val(nn) } { incr i } {
>        set node_($i) [$ns node]
>    }
>
> # Provide initial location of mobilenodes
> $node_(0) set X_ 5.0
> $node_(0) set Y_ 5.0
> $node_(0) set Z_ 0.0
>
> $node_(1) set X_ 490.0
> $node_(1) set Y_ 285.0
> $node_(1) set Z_ 0.0
>
> $node_(2) set X_ 150.0
> $node_(2) set Y_ 240.0
> $node_(2) set Z_ 0.0
>
> # Generation of movements
> $ns at 10.0 "$node_(0) setdest 250.0 250.0 3.0"
> $ns at 15.0 "$node_(1) setdest 45.0 285.0 5.0"
> $ns at 110.0 "$node_(0) setdest 480.0 300.0 5.0"
>
> set udp_ [new Agent/UDP]
> $ns attach-agent $node_(0) $udp_
>
> set null [new Agent/Null]
> $ns attach-agent $node_(1) $null
>
> set exp_ [new Application/Traffic/Exponential]
>
> $exp_ set burst_time_ 0.01ms
> $exp_ set idle_time_ 0.04ms
> $exp_ set rate_ 1.5Mbps
> $exp_ attach-agent $udp_
>
> $exp_ attach-agent $udp_
> $ns connect $udp_ $null
>
> set ll_src_ [$node_(0) getLL 0]
> $udp_ target $ll_src_
>
> set ftp [new Application/FTP]
> $ftp attach-agent $udp_
> $ns at 10.0 "$ftp start"
>
> # Define node initial position in nam
> for {set i 0} {$i < $val(nn)} { incr i } {
> # 30 defines the node size for nam
> $ns initial_node_pos $node_($i) 30
> }
>
> # Telling nodes when the simulation ends
> for {set i 0} {$i < $val(nn) } { incr i } {
>    $ns at $val(stop) "$node_($i) reset";
> }
>
> # ending nam and the simulation
> $ns at $val(stop) "$ns nam-end-wireless $val(stop)"
> $ns at $val(stop) "stop"
> $ns at 150.01 "puts \"end simulation\" ; $ns halt"
> proc stop {} {
>    global ns tracefd namtrace
>    $ns flush-trace
>    close $tracefd
>    close $namtrace
> }
>
> $ns run
>
>
> But this is the output:
>
> num_nodes is set 3
> INITIALIZE THE LIST xListHead
>
>    (_o14 cmd line 1)
>    invoked from within
> "_o14 cmd getLL 0"
>    invoked from within
> "catch "$self cmd $args" ret"
>    invoked from within
> "if [catch "$self cmd $args" ret] {
> set cls [$self info class]
> global errorInfo
> set savedInfo $errorInfo
> error "error when calling class $cls: $args" $..."
>    (procedure "_o14" line 2)
>    (SplitObject unknown line 2)
>    invoked from within
> "$node_(0) getLL 0"
>    invoked from within
> "set ll_src_ [$node_(0) getLL 0]"
>    (file "cros_ex1.tcl" line 96)
>
> I have read5th chapter of
> "Introduction to Network Simulator NS2", that explains the Connector
> class
> [
> http://books.google.com/books?id=cD69He_oU60C&pg=PP1&dq=Introduction+to+Network+Simulator+NS2#v=onepage&q=&f=false]
> and also got help from Urlan [
> http://mailman.isi.edu/pipermail/ns-users/2009-October/066621.html]
>
> Please someone point out the mistake(s)  or provide me with  example script
> of your own.
> Thanks in advance.
>
>
>
>
>

Reply via email to