wireless-shadowing-vis-test.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:6k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # Copyright (c) 2000 University of Southern California.
  2. #  All rights reserved.                                            
  3. #                                                                
  4. #  Redistribution and use in source and binary forms are permitted
  5. #  provided that the above copyright notice and this paragraph are
  6. #  duplicated in all such forms and that any documentation, advertising
  7. #  materials, and other materials related to such distribution and use
  8. #  acknowledge that the software was developed by the University of
  9. #  Southern California, Information Sciences Institute.  The name of the
  10. #  University may not be used to endorse or promote products derived from
  11. #  this software without specific prior written permission.
  12. #  
  13. #  THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  14. #  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  15. #  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16. #
  17. #  Example test program for the visibility-based shadowing propagation model
  18. #  Wei Ye, weiye@isi.edu, 2000
  19. # ======================================================================
  20. # Define options
  21. # ======================================================================
  22. set opt(chan) Channel/WirelessChannel
  23. #set opt(prop) Propagation/Shadowing
  24. set opt(netif) Phy/WirelessPhy
  25. set opt(mac) Mac/802_11
  26. set opt(ifq) Queue/DropTail/PriQueue
  27. set opt(ll) LL
  28. set opt(ant) Antenna/OmniAntenna
  29. set opt(adhocRouting)   DSDV
  30. set opt(x) 100   ;# X dimension of the topography
  31. set opt(y) 100   ;# Y dimension of the topography
  32. set opt(ifqlen) 50       ;# max packet in ifq
  33. set opt(seed) 0.0
  34. set opt(tr)  shadowing-vis.tr    ;# trace file
  35. set opt(nam) shadowing-vis.nam   ;# nam trace file
  36. set opt(nn)  2             ;# how many nodes are simulated
  37. set opt(stop) 200.0 ;# simulation time
  38. # =====================================================================
  39. # Other default settings
  40. LL set mindelay_ 50us
  41. LL set delay_ 25us
  42. LL set bandwidth_ 0 ;# not used
  43. Agent/Null set sport_ 0
  44. Agent/Null set dport_ 0
  45. Agent/CBR set sport_ 0
  46. Agent/CBR set dport_ 0
  47. Queue/DropTail/PriQueue set Prefer_Routing_Protocols    1
  48. # unity gain, omni-directional antennas
  49. # set up the antennas to be centered in the node and 1.5 meters above it
  50. Antenna/OmniAntenna set X_ 0
  51. Antenna/OmniAntenna set Y_ 0
  52. Antenna/OmniAntenna set Z_ 0.5
  53. Antenna/OmniAntenna set Gt_ 1.0
  54. Antenna/OmniAntenna set Gr_ 1.0
  55. # Initialize the SharedMedia interface with parameters to make
  56. # it work like the 914MHz Lucent WaveLAN DSSS radio interface
  57. Phy/WirelessPhy set CPThresh_ 10.0
  58. Phy/WirelessPhy set CSThresh_ 1.559e-11
  59. # below is original
  60. #Phy/WirelessPhy set RXThresh_ 3.652e-10
  61. # 95% pkts can be correctly received at 20m for 3/5.
  62. Phy/WirelessPhy set RXThresh_ 3.61705e-09
  63. Phy/WirelessPhy set bandwidth_ 2e6
  64. Phy/WirelessPhy set Pt_ 0.2818
  65. Phy/WirelessPhy set freq_ 914e+6 
  66. Phy/WirelessPhy set L_ 1.0
  67. # Pt_ is transmitted signal power. The propagation model and Pt_ determines
  68. # the received signal power of each packet. The packet can not be correctly
  69. # received if received power is below RXThresh_.
  70. # ======================================================================
  71. # Main Program
  72. # ======================================================================
  73. #
  74. # Initialize Global Variables
  75. #
  76. # create simulator instance
  77. set ns_ [new Simulator]
  78. # set wireless channel
  79. #set wchan [new $opt(chan)]
  80. #define propagation models
  81. # pathlossExp_ is path-loss exponent, for predicting mean received power
  82. # std_db_ is shadowing deviation (dB), reflecting how large the propagation
  83. # property changes within the environment.
  84. # dist0_ is a close-in reference distance
  85. #
  86. set goodProp [new Propagation/Shadowing]
  87. $goodProp set pathlossExp_ 2.0
  88. $goodProp set std_db_ 3.0
  89. $goodProp set dist0_ 30.0
  90. $goodProp seed predef 0
  91. set badProp [new Propagation/Shadowing]
  92. $badProp set pathlossExp_ 3.0
  93. $badProp set std_db_ 5.0
  94. $badProp set dist0_ 1.0
  95. $badProp seed predef 1
  96. #visibility-based shadowing model: line of sight or not using a bitmap
  97. set prop [new Propagation/ShadowingVis]
  98. $prop get-bitmap environment.pnm
  99. # set number of pixels per meter
  100. $prop set-ppm 5
  101. # add previously defined models
  102. $prop add-models $goodProp $badProp
  103. # define topology
  104. set wtopo [new Topography]
  105. $wtopo load_flatgrid $opt(x) $opt(y)
  106. # create trace object for ns and nam
  107. set tracefd [open $opt(tr) w]
  108. set namtrace    [open $opt(nam) w]
  109. $ns_ trace-all $tracefd
  110. $ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y)
  111. # use new trace file format
  112. $ns_ use-newtrace 
  113. #
  114. # Create God
  115. #
  116. set god_ [create-god $opt(nn)]
  117. #
  118. # define how node should be created
  119. #
  120. #global node setting
  121. $ns_ node-config  -adhocRouting $opt(adhocRouting) 
  122.  -llType $opt(ll) 
  123.  -macType $opt(mac) 
  124.  -ifqType $opt(ifq) 
  125.  -ifqLen $opt(ifqlen) 
  126.  -antType $opt(ant) 
  127.  -propInstance $prop 
  128.  -phyType $opt(netif) 
  129.  -channel [new $opt(chan)] 
  130.  -topoInstance $wtopo 
  131.  -agentTrace OFF 
  132.  -routerTrace OFF 
  133.  -macTrace ON
  134. #
  135. #  Create the specified number of nodes [$opt(nn)] and "attach" them
  136. #  to the channel. 
  137. for {set i 0} {$i < $opt(nn) } {incr i} {
  138. set node_($i) [$ns_ node]
  139. }
  140. # Define node positions
  141. #
  142. # line of sight
  143. $node_(0) set X_ 0.0
  144. $node_(0) set Y_ 50.0
  145. $node_(0) set Z_ 0.0
  146. $node_(1) set X_ 0.0
  147. $node_(1) set Y_ 100.0
  148. $node_(1) set Z_ 0.0
  149. # obstructed
  150. $ns_ at 50.0 "$node_(1) set X_ 70.0"
  151. $ns_ at 50.0 "$node_(1) set Y_ 80.0"
  152. # line of sight
  153. $ns_ at 100.0 "$node_(1) set X_ 20.0"
  154. $ns_ at 100.0 "$node_(1) set Y_ 50.0"
  155. # obstructed
  156. $ns_ at 150.0 "$node_(1) set X_ 60.0"
  157. $ns_ at 150.0 "$node_(1) set Y_ 5.0"
  158. set udp_(0) [new Agent/UDP]
  159. $ns_ attach-agent $node_(0) $udp_(0)
  160. set null_(0) [new Agent/Null]
  161. $ns_ attach-agent $node_(1) $null_(0)
  162. set cbr_(0) [new Application/Traffic/CBR]
  163. $cbr_(0) set packetSize_ 128
  164. $cbr_(0) set interval_ 5.0
  165. $cbr_(0) set random_ 1
  166. $cbr_(0) set maxpkts_ 100
  167. $cbr_(0) attach-agent $udp_(0)
  168. $ns_ connect $udp_(0) $null_(0)
  169. $ns_ at 1.0 "$cbr_(0) start"
  170. # Define node initial position in nam
  171. for {set i 0} {$i < $opt(nn)} {incr i} {
  172.     # 20 defines the node size in nam, must adjust it according to your scenario
  173.     # The function must be called after mobility model is defined
  174.     
  175.     $ns_ initial_node_pos $node_($i) 20
  176. }
  177. #
  178. # Tell nodes when the simulation ends
  179. #
  180. for {set i 0} {$i < $opt(nn) } {incr i} {
  181.     $ns_ at $opt(stop).000000001 "$node_($i) reset";
  182. }
  183. # tell nam the simulation stop time
  184. $ns_ at  $opt(stop) "$ns_ nam-end-wireless $opt(stop)"
  185. $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  186. puts "Starting Simulation..."
  187. $ns_ run