rts-cts-data-ack.pl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:30k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # Script parses the trace file and using the base nam
  2. # file, it generates a nam file that sets colors to
  3. # nodes and data packets depending on their state.
  4. # When a node is doing carrier sense, it turns red.
  5. # When a node is sending RTS packets, it turns purple.
  6. # RTS packets are purple broadcas packets.
  7. # When a node is sending CTS packets, it turns green.
  8. # CTS packets are green broadcast packets.
  9. # When a node is sending data packets, it turns tan.
  10. # Data packets are tan in color.
  11. # When a node is sending ACK packets, it turns orange.
  12. # ACK packets are orange in color.
  13. sub usage {
  14. print STDERR "usage: $0 <Base trace file> <Base nam trace file> <output nam trace file>n";
  15. exit;
  16. }
  17. #@ARGV[0] - source trace file
  18. #@ARGV[1] - source nam trace file
  19. #@ARGV[2] - output nam trace file
  20. open (Nam, $ARGV[1]) or die "Cannot open $ARGV[1] : $!n";
  21. open (Source, $ARGV[0]) or die "Cannot open $ARGV[0] : $!n";
  22. open (Destination, ">$ARGV[2]") or die "Cannot open $ARGV[2]: $!n";
  23. $line = <Nam>;
  24. $tp =0;
  25. while (($line) && ($tp ==0)) { 
  26. if ($line =~ /-i 3 -n green/) {
  27. print Destination $line;
  28. print Destination 'v -t 0.0 -e set_rate_ext 0.550ms 1', "n";
  29. print Destination 'v -t 0.0 -e sim_annotation 0.0 1 In a Wireless network topology,when not all nodes are within each other's range, ',"n";
  30. print Destination 'v -t 0.01 -e sim_annotation 0.001 2 carrier sense only provides information about collisions at the sender,not at ', "n";
  31. print Destination 'v -t 0.015 -e sim_annotation 0.002 3 the receiver. This leads to problems like hidden terminal where two sender ', "n";
  32. print Destination 'v -t 0.02 -e sim_annotation 0.003 4 nodes out of range of each other transmit packets at the same time, ', "n";
  33. print Destination 'v -t 0.025 -e sim_annotation 0.004 5 to the same receiver, resulting in  collisions at the receiver. To solve ', "n";
  34.   print Destination 'v -t 0.03 -e sim_annotation 0.005 6 such problems, control packets, RTS & CTS are used. When a node wants to ', "n";
  35. print Destination 'v -t 0.035 -e sim_annotation 0.006 7 transmit packets, it first sends a RTS packet to the receiver.All nodes within ', "n";
  36. print Destination 'v -t 0.04 -e sim_annotation 0.007 8 the sender's range receive this RTS packet. Every node hearing this RTS packet ', "n";
  37. print Destination 'v -t 0.045 -e sim_annotation 0.008 9 will defer transmission. If receiver is not receiving data from any other node, ', "n";
  38. print Destination 'v -t 0.05 -e sim_annotation 0.009 10 it responds with a CTS packet.This packet is again received by every node ', "n";
  39. print Destination 'v -t 0.055 -e sim_annotation 0.01 11 within range of receiver. So all nodes in this range defer transmission. ', "n";
  40. print Destination 'v -t 0.06 -e sim_annotation 0.02 12 Sender node sends data packet after receiving CTS. If sender node does not ', "n";
  41. print Destination 'v -t 0.065 -e sim_annotation 0.03 13 hear the CTS, it will time-out and schedule retransmission of RTS. On ', "n";
  42. print Destination 'v -t 0.07 -e sim_annotation 0.04 14 receiving data packet, receiver sends an ACK to sender.  ', "n";
  43. $tp = 1;
  44. }
  45. else
  46. {
  47. print Destination $line;
  48. $line = <Nam>;
  49. }
  50. }
  51. print Destination 'v -t 0.100 -e sim_annotation 0.100 18 COLOR LEGEND : ', "n";
  52. print Destination 'v -t 0.110 -e sim_annotation 0.110 19 RTS packets : Purple color. Node turns purple  while sending an RTS packet ', "n";
  53. print Destination 'v -t 0.120 -e sim_annotation 0.120 20 CTS packets : Green color . Node turns  green while sending CTS packets ', "n";
  54. print Destination 'v -t 0.130 -e sim_annotation 0.130 21 Data packets : Tan color . Node turns tan while sending data packets ', "n";
  55. print Destination 'v -t 0.140 -e sim_annotation 0.140 22 ACK packets : Orange color. Node turns  orange while sending ACK packets ', "n";
  56. $line = <Source>;
  57. @fields = split ' ', $line;
  58. my $temp = @fields[1];
  59. my $i = 23;
  60. my $t = 1;
  61. my $dw = 0;
  62. my $num_mov = 0;
  63. my $come = 0;
  64. my $once = 0;
  65. while($line) {
  66. @fields = split ' ', $line;
  67. @fields[1] = $temp + 0.005;
  68. # This generates movement of node in name file.
  69. if ($line =~ /^M/)
  70. {
  71. @fields[3] =~ m/(d+.d+)/;
  72. @fields[3] = $1;
  73. @fields[4] =~ m/(d+.d+)/;
  74. @fields[4] = $1;
  75. @fields[6] =~ m/(d+.d+)/;
  76. @fields[6] = $1;
  77. $t = (@fields[6] - @fields[3])/@fields[8];
  78. print Destination 'n -t ', @fields[1], ' -s ', @fields[2], ' -x ', @fields[3], ' -y ', @fields[4], ' -U ',@fields[8], ' -V 0.00 -T ', $t,"n";
  79. $num_mov ++;
  80. if($num_mov == 1)
  81. {
  82. print Destination 'v -t ', @fields[1], ' -e sim_annotation ', @fields[1], ' ', $i, ' NODE MOVES : Sender nodes can hear both RTS and CTS ', "n";
  83. $i++;
  84. }
  85. elsif ($num_mov == 2)
  86. {
  87. print Destination 'v -t ', @fields[1], ' -e sim_annotation ', @fields[1], ' ', $i, ' NODE MOVES : Sender nodes can hear CTS but not RTS', "n";
  88. $i++;
  89. }
  90. $line = <Source>;
  91. $temp = @fields[1];
  92. }
  93. elsif( # This parses the trace file for RTS packets before node moves.
  94. ($line =~ /s/) && ($line =~ /MAC/) && ($line =~ /RTS/) && (@fields[2] !~ /1/) && ($num_mov <= 1)
  95.    ) {
  96. @fields[2] =~ m/(d)/;
  97. @fields[2] = $1;
  98. $other_node = 0;
  99. if (@fields[2] == 0)
  100. {
  101. $other_node = 2;
  102. }
  103. if ($come == 0)
  104. {
  105. $come = 1;
  106. print Destination 'v -t ', @fields[1], ' -e sim_annotation ', @fields[1], ' ', $i, ' CASE 1 : NO CONTENTION. ', "n";
  107. $i++;
  108. @fields[1] = @fields[1] + 0.00005;
  109. print Destination 'v -t ', @fields[1], ' -e sim_annotation ', @fields[1], ' ', $i, ' Only one node sends data, it does a simple RTS-CTS_DATA-ACK exchange ', "n";
  110. $i++;
  111. @fields[1] = @fields[1] + 0.00005; 
  112. print Destination 'n -t ', @fields[1], ' -s 0 -S COLOR -c red -o black -i red -I black', "n";
  113. print Destination 'n -t ', @fields[1], ' -s 0 -S DLABEL -l "Carrier sense" -L ""', "n";
  114. $duration = @fields[1] + 0.005;
  115. print Destination 'n -t ', $duration, ' -s ', @fields[2], ' -S COLOR -c purple -o red -i purple -I red', "n";
  116. print Destination 'n -t ', $duration, ' -s ', @fields[2], ' -S DLABEL -l "Sending RTS packet" -L ""', "n";
  117. print Destination '+ -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  118. print Destination '- -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  119. print Destination 'h -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  120. print Destination 'r -t ', $duration, ' -s ', @fields[2], ' -d -1 p message -e 500 -a 7', "n";
  121. $new_duration = $duration + 0.01;
  122. print Destination 'n -t ', $new_duration, ' -s ', @fields[2], ' -S COLOR -c black -o purple -i black -I purple', "n";
  123. print Destination 'n -t ', $new_duration, ' -s ', @fields[2], ' -S DLABEL -l "" -L ""', "n";
  124. $new_duration = $new_duration + 0.01;
  125. print Destination 'n -t ', $new_duration, ' -s 1 -S COLOR -c green -o black -i green -I black', "n";
  126. print Destination 'n -t ', $new_duration, ' -s 1 -S DLABEL -l "Sending CTS packets" -L ""', "n";
  127. print Destination '+ -t ', $new_duration, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  128. print Destination '- -t ', $new_duration, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  129. print Destination 'h -t ', $new_duration, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  130. print Destination 'r -t ', $new_duration, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  131. $new_duration = $new_duration + 0.01;
  132. print Destination 'n -t ', $new_duration, ' -s 1 -S COLOR -c black -o green -i black -I green', "n";
  133. print Destination 'n -t ', $new_duration, ' -s 1 -S DLABEL -l "" -L ""', "n";
  134. $new_duration = $new_duration + 0.01;
  135. print Destination 'n -t ', $new_duration, ' -s ', @fields[2], ' -S COLOR -c tan -o black -i tan -I black', "n";
  136. print Destination 'n -t ', $new_duration, ' -s ', @fields[2], ' -S DLABEL -l "Sending Data Packet" -L ""', "n";
  137. print Destination '+ -t ', $new_duration, ' -s ', @fields[2], ' -d 1 -p message -e 2500 -a 6', "n";
  138. print Destination '- -t ', $new_duration, ' -s ', @fields[2], ' -d 1 -p message -e 2500 -a 6', "n";
  139. print Destination 'h -t ', $new_duration, ' -s ', @fields[2], ' -d 1 -p message -e 2500 -a 6', "n";
  140. print Destination 'r -t ', $new_duration, ' -s ', @fields[2], ' -d 1 -p message -e 2500 -a 6', "n";
  141. $new_duration = $new_duration + 0.01;
  142. print Destination 'n -t ', $new_duration, ' -s ', @fields[2], ' -S COLOR -c black -o tan -i black -I tan', "n";
  143. print Destination 'n -t ', $new_duration, ' -s ', @fields[2], ' -S DLABEL -l "" -L ""', "n";
  144. $new_duration = $new_duration + 0.01;
  145. print Destination 'n -t ', $new_duration, ' -s 1 -S COLOR -c orange -o black -i orange -I black', "n";
  146. print Destination 'n -t ', $new_duration, ' -s 1 -S DLABEL -l "Sending ACK packet" -L ""', "n";
  147. print Destination '+ -t ', $new_duration, ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  148. print Destination '- -t ', $new_duration, ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  149. print Destination 'h -t ', $new_duration, ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  150. print Destination 'r -t ', $new_duration, ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  151. $new_duration = $new_duration + 0.01;
  152. print Destination 'n -t ', $new_duration, ' -s 1 -S COLOR -c black -o orange -i black -I orange', "n";
  153. print Destination 'n -t ', $new_duration, ' -s 1 -S DLABEL -l "" -L ""', "n";
  154. print Destination 'v -t ', $new_duration, ' -e sim_annotation ', $new_duration, ' ', $i, ' CASE 2 : BACKOFF DUE TO RTS', "n"; 
  155. $i++;
  156. $new_duration = $new_duration + 0.005;
  157. print Destination 'v -t ', $new_duration , ' -e sim_annotation ', $new_duration, ' ' , $i, ' Nodes are in RTS range of each other but not in CTS range of the receiver ', "n";
  158. $i++;
  159. $new_duration = $new_duration + 0.005;
  160. print Destination 'v -t ', $new_duration , ' -e sim_annotation ', $new_duration, ' ', $i, ' Node 0 want to send data to Node 1 at the same time that Node 2 wants to send data to Node 0 ', "n";
  161. $i++;
  162. $new_duration = $new_duration + 0.005;
  163. print Destination 'v -t ', $new_duration, ' -e sim_annotation ', $new_duration, ' ', $i, ' thus Node 2 backsoff when it hears the RTS from Node 0', "n";
  164. $i ++;
  165. $temp = $new_duration;
  166. @fields[1] = $new_duration + 0.01;
  167. }
  168. if($num_mov == 1)
  169. {
  170. print Destination 'v -t ', @fields[1], ' -e sim_annotation ', @fields[1], ' ', $i, ' CASE 3 : BACKOFF AGAIN DUE TO RTS', "n";
  171. $i++;
  172. $new_duration = @fields[1] + 0.00005;
  173. print Destination 'v -t ', $new_duration, ' -e sim_annotation ', $new_duration, ' ', $i, ' All nodes are in the RTS and CTS range of each other', "n";
  174. $i++;
  175. $new_duration = $new_duration + 0.00005;
  176. print Destination 'v -t ', $new_duration, ' -e sim_annotation  ', $new_duration, ' ' , $i, ' Nodes 0 and 2 are in range of each other and hence can hear the RTS packet of the other node after hearing RTS packet node backs off', "n";
  177. $i ++;
  178. @fields[1] = $new_duration + 0.01;
  179. }
  180. print Destination 'n -t ', @fields[1], ' -s 0 -S COLOR -c red -o black -i red -I black', "n";
  181. print Destination 'n -t ', @fields[1], ' -s 2 -S COLOR -c red -o black -i red -I black', "n";
  182. print Destination 'n -t ', @fields[1], ' -s 0 -S DLABEL -l "Carrier sense" -L ""', "n";
  183. print Destination 'n -t ', @fields[1], ' -s 2 -S DLABEL -l "Carrier sense" -L ""', "n";
  184. $duration = @fields[1] + 0.005;
  185. print Destination 'n -t ', $duration, ' -s ', @fields[2], ' -S COLOR -c purple -o red -i purple -I red', "n";
  186. print Destination 'n -t ', $duration, ' -s ', @fields[2], ' -S DLABEL -l "Sending RTS packet" -L ""', "n";
  187. print Destination '+ -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  188. print Destination '- -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  189. print Destination 'h -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  190. print Destination 'r -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  191. $new_duration = $duration + 0.01;
  192. print Destination 'n -t ', $new_duration, ' -s ', @fields[2], ' -S COLOR -c black -o purple -i black -I purple', "n";
  193. print Destination 'n -t ', $new_duration, ' -s ', @fields[2], ' -S DLABEL -l "" -L ""', "n";
  194. print Destination 'n -t ', $new_duration, ' -s ', $other_node, ' -S COLOR -c DarkOliveGreen -o red -i DarkOliveGreen -I red', "n";
  195. print Destination 'n -t ', $new_duration, ' -s ', $other_node, ' -S DLABEL -l "Data Waiting" -L ""', "n";
  196. $i ++;
  197. $line = <Source>;
  198. $temp = $new_duration;
  199. }
  200. elsif( # This parses trace file for RTS packets after node moves
  201. ($line =~ /s/) && ($line =~ /MAC/) && ($line =~ /RTS/) && (@fields[2] !~ /1/) && ($num_mov > 1)
  202.   ) {
  203. @fields[2] =~ m/(d)/;
  204. @fields[2] = $1;
  205. $other_node = 0;
  206. if (@fields[2] == 0)
  207. {
  208. $other_node = 2;
  209. }
  210. if ($once == 0) {
  211. print Destination 'v -t ', @fields[1], ' -e sim_annotation  ', @fields[1], ' ' , $i, ' CASE 4 : BACKOFF DUE TO CTS ', "n";
  212. $i++;
  213. @fields[1] = @fields[1] + 0.005;
  214. print Destination 'v -t ', @fields[1], ' -e sim_annotation ', @fields[1], ' ', $i, ' Senders are out of range of RTS of each other but are in  range of CTS of receiver', "n";
  215. $i ++;
  216. @fields[1] = @fields[1] + 0.005;
  217. print Destination 'v -t ', @fields[1], ' -e sim_annotation ', @fields[1], ' ', $i, ' Node 0 sends RTS which Node 2 does not hear but it hears the CTS sent by receiver and thus backsoff after hearing CTS, thus avoiding collision at the receiver', "n";
  218. $i ++;
  219. @fields[1] = @fields[1] + 0.005;
  220. $once ++;
  221. }
  222. if ($dw == 0) {
  223. print Destination 'n -t ', @fields[1], ' -s 0 -S COLOR -c red -o black -i red -I black', "n";
  224. print Destination 'n -t ', @fields[1], ' -s 2 -S COLOR -c red -o black -i red -I black', "n";
  225. print Destination 'n -t ', @fields[1], ' -s 0 -S DLABEL -l "Carrier sense" -L ""', "n";
  226. print Destination 'n -t ', @fields[1], ' -s 2 -S DLABEL -l "Carrier sense" -L ""', "n";
  227. }
  228. if($dw == 1) {
  229. print Destination 'n -t ', @fields[1],' -s ', @fields[2],' -S COLOR -c red -o black -i red -I black', "n";
  230. print Destination 'n -t ', @fields[1],' -s ', @fields[2],' -S DLABEL -l "Carrier sense" -L ""', "n";
  231. }
  232. $duration = @fields[1] + 0.005;
  233. print Destination 'n -t ', $duration, ' -s ', @fields[2], ' -S COLOR -c purple -o red -i purple -I red', "n";
  234. print Destination 'n -t ', $duration, ' -s ', @fields[2], ' -S DLABEL -l "Sending RTS packet" -L ""', "n";
  235. print Destination '+ -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  236. print Destination '- -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  237. print Destination 'h -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  238. print Destination 'r -t ', $duration, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 7', "n";
  239. $new_duration = $duration + 0.005;
  240. print Destination 'n -t ', $new_duration, ' -s ', @fields[2], ' -S COLOR -c black -o purple -i black -I purple', "n";
  241. print Destination 'n -t ', $new_duration, ' -s ', @fields[2], ' -S DLABEL -l "" -L ""', "n";
  242. $temp = $new_duration;
  243. if ($t == 1) {
  244. print Destination 'n -t ', $new_duration, ' -s ', $other_node, ' -S COLOR -c purple -o red -i purple -I red', "n";
  245. print Destination 'n -t ', $new_duration, ' -s ', $other_node, ' -S DLABEL -l "Sending RTS packet" -L ""', "n";
  246. print Destination '+ -t ', $new_duration, ' -s ', $other_node, ' -d  -1 -p message -e 500 -a 7', "n";
  247. print Destination '- -t ', $new_duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  248. print Destination 'h -t ', $new_duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  249. print Destination 'r -t ', $new_duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  250. $final_duration = $new_duration + 0.005;
  251. print Destination 'n -t ', $final_duration, ' -s ', $other_node, ' -S COLOR -c black -o purple -i black -I purple', "n";
  252. print Destination 'n -t ', $final_duration, ' -s ', $other_node, ' -S DLABEL -l "" -L ""', "n";
  253. $t++;
  254. $temp = $final_duration;
  255. }
  256. $line = <Source>;
  257.     }
  258. elsif( # This parses trace file for CTS packets after node moves
  259. ($line =~ /s/) && ($line =~ /MAC/) && ($line =~ /CTS/) && (@fields[2] !~ /0/) && (@fields[2] !~ /2/) && ($num_mov >= 1)
  260.      ) {
  261. @fields[2] =~ m/(d)/;
  262. @fields[2] = $1;
  263. $jitter = @fields[1] + 0.01;
  264. print Destination 'n -t ', $jitter, ' -s 1 -S DLABEL -l "Sending CTS packets" -L ""', "n";
  265. print Destination 'n -t ', $jitter, ' -s 1 -S COLOR -c green -o black -i green -I black', "n";
  266. print Destination '+ -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  267. print Destination '- -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  268. print Destination 'h -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  269. print Destination 'r -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  270. $duration = $jitter + 0.01;
  271. print Destination 'n -t ', $duration, ' -s 1 -S COLOR -c black -o green -i black -I green', "n";
  272. print Destination 'n -t ', $duration, ' -s 1 -S DLABEL -l "" -L ""', "n";
  273. $i++;
  274. $line = <Source>;
  275. $temp = $duration;
  276. }
  277. elsif( # This parses trace file for CTS packets after node moves
  278. ($line =~ /s/) && ($line =~ /MAC/) && ($line =~ /CTS/) && (@fields[2] !~ /0/) && (@fields[2] !~ /2/) && ($num_mov == 0)
  279.      ) {
  280. @fields[2] =~ m/(d)/;
  281. @fields[2] = $1;
  282. $jitter = @fields[1] + 0.01;
  283. print Destination 'n -t ', $jitter, ' -s 1 -S DLABEL -l "Sending CTS packets" -L ""', "n";
  284. print Destination 'n -t ', $jitter, ' -s 1 -S COLOR -c green -o black -i green -I black', "n";
  285. print Destination '+ -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  286. print Destination '- -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  287. print Destination 'h -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  288. print Destination 'r -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  289. $duration = $jitter + 0.01;
  290. print Destination 'n -t ', $duration, ' -s 1 -S COLOR -c black -o green -i black -I green', "n";
  291. print Destination 'n -t ', $duration, ' -s 1 -S DLABEL -l "" -L ""', "n";
  292. $i++;
  293. $line = <Source>;
  294. $temp = $duration;
  295. }
  296. elsif( # This parses trace file for data packets
  297. ($line =~ /s/) && ($line =~ /MAC/) && ($line =~ /message/) && (@fields[2] !~ /1/)
  298.      ) {
  299. @fields[2] =~ m/(d)/;
  300. @fields[2] = $1;
  301. $other_node = 0;
  302. if(@fields[2] == 0) {
  303. $other_node = 2;
  304. }
  305. @fields[1] = @fields[1] +0.01;
  306. print Destination 'n -t ', @fields[1], ' -s ', @fields[2], ' -S DLABEL -l "Sending Data packets" -L ""', "n";
  307. print Destination 'n -t ', @fields[1], ' -s ', @fields[2], ' -S COLOR -c tan -o black -i tan -I black', "n";
  308. if(($num_mov > 1) && ($dw == 0)) {
  309. print Destination 'n -t ', @fields[1], ' -s ', $other_node, ' -S COLOR -c DarkOliveGreen -o black -i DarkOliveGreen -I black', "n";
  310. print Destination 'n -t ', @fields[1], ' -s ', $other_node, ' -S DLABEL -l "Data waiting" -L ""', "n";
  311. }
  312. print Destination '+ -t ', @fields[1], ' -s ', @fields[2], ' -d 1 -p message -e 2500 -a 6', "n";
  313. print Destination '- -t ', @fields[1], ' -s ', @fields[2], ' -d 1 -p message -e 2500 -a 6', "n";
  314. print Destination 'h -t ', @fields[1], ' -s ', @fields[2], ' -d 1 -p message -e 2500 -a 6', "n";
  315. print Destination 'r -t ', @fields[1], ' -s ', @fields[2], ' -d 1 -p message -e 2500 -a 6', "n";
  316. $duration = @fields[1] + 0.01;
  317. print Destination 'n -t ', $duration, ' -s ', @fields[2], ' -S COLOR -c black -o tan -i black -I tan', "n";
  318. print Destination 'n -t ', $duration, ' -s ', @fields[2], ' -S DLABEL -l "" -L "" ', "n";
  319. $i++;
  320. $line = <Source>;
  321. $temp = $duration;
  322. }
  323. elsif( # This parses trace file for ACK packets
  324. ($line =~ /r/) && ($line =~ /MAC/) && ($line =~ /ACK/) && (@fields[2] !~ /1/) && ($num_mov > 1)
  325.      ) {
  326. $dw ++;
  327. @fields[2] =~ m/(d)/;
  328. @fields[2] = $1;
  329. print Destination 'n -t ', @fields[1], ' -s 1 -S DLABEL -l "Sending ACK packets" -L ""', "n";
  330. print Destination 'n -t ', @fields[1], ' -s 1 -S COLOR -c orange -o black -i orange -I black', "n";
  331. print Destination '+ -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  332. print Destination '- -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  333. print Destination 'h -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  334. print Destination 'r -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  335. $duration = @fields[1] + 0.01;
  336. print Destination 'n -t ', $duration, ' -s 1  -S COLOR -c black -o orange -i black -I orange', "n";
  337. print Destination 'n -t ', $duration, ' -s 1 -S DLABEL -l "" -L ""', "n";
  338. $i++;
  339. $line = <Source>;
  340. $temp = $duration;
  341. }
  342. elsif( # This parses trace file for ACK packets.
  343. ($line =~ /r/) && ($line =~ /MAC/) && ($line =~ /ACK/) && (@fields[2] !~ /1/) && ($num_mov == 0)
  344.      ) {
  345. @fields[2] =~ m/(d)/;
  346. @fields[2] = $1;
  347. $other_node = 0;
  348. if(@fields[2] == 0) {
  349. $other_node = 2;
  350. }
  351. print Destination 'n -t ', @fields[1], ' -s 1 -S DLABEL -l "Sending ACK packet" -L ""', "n";
  352. print Destination 'n -t ', @fields[1], ' -s 1 -S COLOR -c orange -o black -i orange -I black', "n";
  353. print Destination '+ -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  354. print Destination '- -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  355. print Destination 'h -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  356. print Destination 'r -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  357. $duration = @fields[1] + 0.01;
  358. print Destination 'n -t ', $duration, ' -s 1  -S COLOR -c black -o orange -i black -I orange', "n";
  359. print Destination 'n -t ', $duration, ' -s 1 -S DLABEL -l "" -L ""', "n";
  360. $i++;
  361. print Destination 'n -t ', $duration, ' -s ', $other_node, ' -S COLOR -c purple -o DarkOliveGreen -i purple -I DarkOliveGreen', "n";
  362. print Destination 'n -t ', $duration, ' -s ', $other_node, ' -S DLABEL -l "Sending RTS packet" -L ""', "n";
  363. print Destination '+ -t ', $duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  364. print Destination '- -t ', $duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  365. print Destination 'h -t ', $duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  366. print Destination 'r -t ', $duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  367. $new_duration = $duration + 0.005;
  368. print Destination 'n -t ', $new_duration, ' -s ', $other_node, ' -S COLOR -c black -o purple -i black -I purple', "n";
  369. print Destination 'n -t ', $new_duration, ' -s ', $other_node, ' -S DLABEL -l "" -L ""', "n";
  370. $i ++;
  371. $jitter = $new_duration + 0.01;
  372. print Destination 'n -t ', $jitter, ' -s ', @fields[2], ' -S DLABEL -l "Sending CTS packets" -L ""', "n";
  373. print Destination 'n -t ', $jitter, ' -s ', @fields[2], ' -S COLOR -c green -o black -i green -I black', "n";
  374. print Destination '+ -t ', $jitter, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 3', "n";
  375. print Destination '- -t ', $jitter, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 3', "n";
  376. print Destination 'h -t ', $jitter, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 3', "n";
  377. print Destination 'r -t ', $jitter, ' -s ', @fields[2], ' -d -1 -p message -e 500 -a 3', "n";
  378. $n_duration = $jitter + 0.01;
  379. print Destination 'n -t ', $n_duration, ' -s ', @fields[2], ' -S COLOR -c black -o green -i black -I green', "n";
  380. print Destination 'n -t ', $n_duration, ' -s ', @fields[2],' -S DLABEL -l "" -L ""', "n";
  381. $i++;
  382. $n_duration = $n_duration + 0.005;
  383. print Destination 'n -t ', $n_duration, ' -s ', $other_node, ' -S DLABEL -l "Sending Data packets" -L ""', "n";
  384. print Destination 'n -t ', $n_duration, ' -s ', $other_node, ' -S COLOR -c tan -o DarkOliveGreen -i tan -I DarkOliveGreen', "n";
  385. print Destination '+ -t ', $n_duration, ' -s ', $other_node, ' -d ', @fields[2], ' -p message -e 2500 -a 6', "n";
  386. print Destination '- -t ', $n_duration, ' -s ', $other_node, ' -d ', @fields[2], ' -p message -e 2500 -a 6', "n";
  387. print Destination 'h -t ', $n_duration, ' -s ', $other_node, ' -d ', @fields[2], ' -p message -e 2500 -a 6', "n";
  388. print Destination 'r -t ', $n_duration, ' -s ', $other_node, ' -d ', @fields[2], ' -p message -e 2500 -a 6', "n";
  389. $n_duration = $n_duration + 0.01;
  390. print Destination 'n -t ', $n_duration, ' -s ', $other_node, ' -S COLOR -c black -o tan -i black -I tan', "n";
  391. print Destination 'n -t ', $n_duration, ' -s ', $other_node, ' -S DLABEL -l "" -L "" ', "n";
  392. $i++;
  393. $n_duration = $n_duration + 0.01;
  394. print Destination 'n -t ', $n_duration, ' -s ', @fields[2],' -S DLABEL -l "Sending ACK packet" -L ""', "n";
  395. print Destination 'n -t ', $n_duration, ' -s ', @fields[2],' -S COLOR -c orange -o black -i orange -I black', "n";
  396. print Destination '+ -t ', $n_duration, ' -s ', @fields[2],' -d ', $other_node, ' -p message -e 500 -a 2', "n";
  397. print Destination '- -t ', $n_duration, ' -s ', @fields[2],' -d ', $other_node, ' -p message -e 500 -a 2', "n";
  398. print Destination 'h -t ', $n_duration, ' -s ', @fields[2],' -d ', $other_node, ' -p message -e 500 -a 2', "n";
  399. print Destination 'r -t ', $n_duration, ' -s ', @fields[2],' -d ', $other_node, ' -p message -e 500 -a 2', "n";
  400. $duration = $n_duration + 0.01;
  401. print Destination 'n -t ', $duration, ' -s ', @fields[2],'  -S COLOR -c black -o orange -i black -I orange', "n";
  402. print Destination 'n -t ', $duration, ' -s ', @fields[2],' -S DLABEL -l "" -L ""', "n";
  403. $i++;
  404. $line = <Source>;
  405. $temp = $duration;
  406. }
  407. elsif(
  408. ($line =~ /r/) && ($line =~ /MAC/) && ($line =~ /ACK/) && (@fields[2] !~ /1/) && ($num_mov == 1)
  409.      ) {
  410. @fields[2] =~ m/(d)/;
  411. @fields[2] = $1;
  412. $other_node = 0;
  413. if(@fields[2] == 0) {
  414. $other_node = 2;
  415. }
  416. print Destination 'n -t ', @fields[1], ' -s 1 -S DLABEL -l "Sending ACK packet" -L ""', "n";
  417. print Destination 'n -t ', @fields[1], ' -s 1 -S COLOR -c orange -o black -i orange -I black', "n";
  418. print Destination '+ -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  419. print Destination '- -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  420. print Destination 'h -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  421. print Destination 'r -t ', @fields[1], ' -s 1 -d ', @fields[2], ' -p message -e 500 -a 2', "n";
  422. $duration = @fields[1] + 0.01;
  423. print Destination 'n -t ', $duration, ' -s 1  -S COLOR -c black -o orange -i black -I orange', "n";
  424. print Destination 'n -t ', $duration, ' -s 1 -S DLABEL -l "" -L ""', "n";
  425. $i++;
  426. print Destination 'n -t ', $duration, ' -s ', $other_node, ' -S COLOR -c purple -o DarkOliveGreen -i purple -I DarkOliveGreen', "n";
  427. print Destination 'n -t ', $duration, ' -s ', $other_node, ' -S DLABEL -l "Sending RTS packet" -L ""', "n";
  428. print Destination '+ -t ', $duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  429. print Destination '- -t ', $duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  430. print Destination 'h -t ', $duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  431. print Destination 'r -t ', $duration, ' -s ', $other_node, ' -d -1 -p message -e 500 -a 7', "n";
  432. $new_duration = $duration + 0.005;
  433. print Destination 'n -t ', $new_duration, ' -s ', $other_node, ' -S COLOR -c black -o purple -i black -I purple', "n";
  434. print Destination 'n -t ', $new_duration, ' -s ', $other_node, ' -S DLABEL -l "" -L ""', "n";
  435. $i ++;
  436. $jitter = $new_duration + 0.01;
  437. print Destination 'n -t ', $jitter, ' -s 1 -S DLABEL -l "Sending CTS packets" -L ""', "n";
  438. print Destination 'n -t ', $jitter, ' -s 1 -S COLOR -c green -o black -i green -I black', "n";
  439. print Destination '+ -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  440. print Destination '- -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  441. print Destination 'h -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  442. print Destination 'r -t ', $jitter, ' -s 1 -d -1 -p message -e 500 -a 3', "n";
  443. $n_duration = $jitter + 0.01;
  444. print Destination 'n -t ', $n_duration, ' -s 1 -S COLOR -c black -o green -i black -I green', "n";
  445. print Destination 'n -t ', $n_duration, ' -s 1 -S DLABEL -l "" -L ""', "n";
  446. $n_duration = $n_duration + 0.005;
  447. print Destination 'n -t ', $n_duration, ' -s ', $other_node, ' -S DLABEL -l "Sending Data packets" -L ""', "n";
  448. print Destination 'n -t ', $n_duration, ' -s ', $other_node, ' -S COLOR -c tan -o DarkOliveGreen -i tan -I DarkOliveGreen', "n";
  449. print Destination '+ -t ', $n_duration, ' -s ', $other_node, ' -d 1 -p message -e 2500 -a 6', "n";
  450. print Destination '- -t ', $n_duration, ' -s ', $other_node, ' -d 1 -p message -e 2500 -a 6', "n";
  451. print Destination 'h -t ', $n_duration, ' -s ', $other_node, ' -d 1 -p message -e 2500 -a 6', "n";
  452. print Destination 'r -t ', $n_duration, ' -s ', $other_node, ' -d 1 -p message -e 2500 -a 6', "n";
  453. $n_duration = $n_duration + 0.01;
  454. print Destination 'n -t ', $n_duration, ' -s ', $other_node, ' -S COLOR -c black -o tan -i black -I tan', "n";
  455. print Destination 'n -t ', $n_duration, ' -s ', $other_node, ' -S DLABEL -l "" -L "" ', "n";
  456. $i++;
  457. $n_duration = $n_duration + 0.01;
  458. print Destination 'n -t ', $n_duration, ' -s 1 -S DLABEL -l "Sending ACK packet" -L ""', "n";
  459. print Destination 'n -t ', $n_duration, ' -s 1 -S COLOR -c orange -o black -i orange -I black', "n";
  460. print Destination '+ -t ', $n_duration, ' -s 1 -d ', $other_node, ' -p message -e 500 -a 2', "n";
  461. print Destination '- -t ', $n_duration, ' -s 1 -d ', $other_node, ' -p message -e 500 -a 2', "n";
  462. print Destination 'h -t ', $n_duration, ' -s 1 -d ', $other_node, ' -p message -e 500 -a 2', "n";
  463. print Destination 'r -t ', $n_duration, ' -s 1 -d ', $other_node, ' -p message -e 500 -a 2', "n";
  464. $duration = $n_duration + 0.01;
  465. print Destination 'n -t ', $duration, ' -s 1  -S COLOR -c black -o orange -i black -I orange', "n";
  466. print Destination 'n -t ', $duration, ' -s 1 -S DLABEL -l "" -L ""', "n";
  467. $i++;
  468. $line = <Source>;
  469. $temp = $duration;
  470. }
  471. else {
  472. $line = <Source>;
  473. $temp = @fields[1];
  474.      }
  475. }
  476. close Source;
  477. close Destination;
  478. close Nam;