wpan.tex
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:6k
源码类别:

通讯编程

开发平台:

Visual C++

  1. chapter{Changes made to the IEEE 802.15.4 Implementation in NS-2.31}
  2. label{chap:wpan}
  3. In the following, changes made to the IEEE 802.15.4 WPAN module in as
  4. of ns release 2.31
  5. are described along with the reasons for the modifications and a list
  6. of files affected.  This file was authored by Iyappan Ramachandran.
  7. section{Radio shutdown}
  8. Ability to put a WPAN node to sleep has been added in this release. 
  9. \
  10. begin{enumerate}
  11. item{A macro called SHUTDOWN has been defined in ./wpan/p802_15_4def.h
  12. that provides the capability to shut a node down when it does not
  13. have any packet to transmit. Currently, there is no provision to enable/disable radio shutdown from the tcl interface directly, but an indirect way exists (see point ref{point_shutdown_from_tcl}). }
  14. item{Two functions mbox{Phy802_15_4::wakeupNode()} and
  15. mbox{Phy802_15_4::putNodeToSleep()} have been added that can be
  16. called to shutdown and wake up the radio. These functions primarily
  17. serve to decrement the correct amount of energy consumed in sleep
  18. state. \
  19. File affected: ./wpan/p802_15_4phy.cc,  ./wpan/p802_15_4phy.h}
  20. item{A new timer called macWakeupTimer has been added to serve as an alarm clock
  21. for the node to wake itself up (for beacon reception, etc.) before it shuts down. The timer on expiry calls
  22. mbox{Phy802_15_4::wakeupNode()}.\
  23. Files changed: ./wpan/p802_15_4mac.cc, ./wpan/p802_15_4mac.h,
  24. ./wpan/p802_15_4timer.cc, ./wpan/p802_15_4timer.h,
  25. ./wpan/p802_15_4csmaca.h}
  26. item{label{point_shutdown_from_tcl}Variables P_sleep_ (sleep state power consumption), P_transition_ (power consumption in sleep-wakeup transition) and T_transition_ (time taken for sleep-wakeup transition)
  27. already exist in mac/wireless-phy.h. T_transition_ was not initialized earlier and now has been.
  28. In addition, a new vew variable named T_sleep_ has been added to wireless-phy to indicate the time at which radio shutdown is to be enabled. This can be set from the tcl interface using the variable name sleepTime (see mbox{./tcl/ex/wpan_demo_sleep.tcl}). Thus, it is possible to keep the SHUTDOWN macro #defined, but set sleepTime to a  very large value to keep radio shutdown disabled throughout the simulations. This provides a means to turn on/off radio shutdown from the tcl interface.\
  29. Files affected: mac/wireless-phy.h}
  30. item{The radio if asleep should be woken up when MAC receives a packet to
  31. transmit. Similarly, a sleeping radio needs to be woken up to
  32. receive beacons whenever they are expected to arrive. If radio
  33. shutdown is activated, the radio needs to be put to sleep after
  34. transmission of a packet. mbox{Mac802_15_4::recv()} does this by
  35. calling functions mbox{Phy802_15_4::wakeupNode()} and
  36. mbox{Phy802_15_4::putNodeToSleep()}, which decrement energy spent sleeping.\
  37. Files affected: ./wpan/p802_15_4mac.cc}
  38. item{After every beacon reception, the node can shut itself down if it doesn't
  39. have a packet pending to be transmitted when radio shutdown has been
  40. activated. This is done by mbox{Mac802_15_4::recvBeacon()} by
  41. calling mbox{Phy802_15_4::putNodeToSleep()}.\
  42. Files affected:  ./wpan/p802_15_4mac.cc}
  43. item{If the node is being put to sleep when not in use, the sleep-to-idle transition
  44. needs to be accounted for. This is done in mbox{CsmaCA802_15_4::start()}. The backoff time 
  45. for the first backoff stage is calculated as mbox{wtime=MAX(wtime,ceil(phy$rightarrow$T_transition_local_/bPeriod)*bPeriod)}.\
  46. Files affected:  ./wpan/p802_15_4csmaca.cc}
  47. end{enumerate}
  48. section{Other changes}
  49. begin{enumerate}
  50. item{After backing off textit{macMaxCSMABackoffs} and being unable to transmit a packet,
  51. the MAC has to report a channel access failure. The older implementation kept attempting to
  52. transmit the packet indefinitely, instead of reporting channel access failure.
  53. This has been fixed in the mbox{Mac802_15_4::mcps_data_request()} function.
  54. Also the node is put to sleep (if need be) at this stage.\
  55. Files affected: ./wpan/p802_15_4mac.cc}
  56. item{A new constant called aCCATime has been added, which indicates the CCA
  57. duration in symbol periods.\
  58. Files affected:  ./wpan/p802_15_4const.h}
  59. item{CCA duration has been specified to be 8 symbol durations. In the older implementation,
  60. CCA was being done right at the end of the 8th symbol duration to determine
  61. channel idleness. As a result, if the channel is busy for the first
  62. 8 symbol durations and goes idle after that (which is likely), the
  63. implementation would indicate channel idle while in reality it
  64. shouldn't. This has been fixed by doing the CCA at the end of the
  65. 4th symbol duration, but reporting channel status at the 8th. For
  66. this purpose, a new timer CCAReportH has been added which on expiry calls
  67. CCAReportHandler that does the reporting.
  68. Files affected:  ./wpan/p802_15_4phy.cc,  ./wpan/p802_15_4phy.h}
  69. item{The mbox{Phy802_15_4::PD_DATA_indication()} function calls
  70. mbox{WirelessChannel::sendUp()} to check if the packet has been received correctly and
  71. to decrement the energy consumed in the packet reception. The SendUp() function is already
  72. being called by recv() and calling it a second time causes energy to be decremented twice.
  73. This bug has been fixed in mbox{Phy802_15_4::PD_DATA_indication()}.\
  74. Files affected: ./wpan/p802_15_4phy.cc}
  75. item{mbox{Phy802_15_4::recv()} function that receives packets from the channel checks
  76. if the packet has been received correctly using
  77. mbox{WirelessPhy::sendUp()}, failing which the packet is freed.
  78. sendUp() returns a 0 either when the node is asleep or when the
  79. packets received power is less than the CS threshold. In the former
  80. case, the variables rxTotPower and rxTotNum need to be updated for
  81. CS purposes before dropping the packet, while in the latter case the
  82. packet simply needs to be dropped. Zheng's implementation was
  83. dropping all packets without updating the variables. This has been
  84. fixed in
  85. mbox{Phy802_15_4::recv()}.\
  86. Files affected: ./wpan/p802_15_4phy.cc}
  87. item{The receiver has to be turned on for the carrier sensing operation and therefore
  88. receive power $P_r$ is consumed during this period. The earlier implementation did not
  89. decrement receive energy due to carrier sensing. This has been added in function
  90. mbox{Phy802_15_4::CarrierSenser()}. Also, energy is spent during the tx-rx
  91. turnaround. This has been accounted for as well.\
  92. Files affected:  ./wpan/p802_15_4phy.cc}
  93. end{enumerate}
  94. endinput