README
上传用户:joranyuan
上传日期:2022-06-23
资源大小:3306k
文件大小:4k
源码类别:

网络

开发平台:

Others

  1. This is a simple multi-hop application displaying the use of Z-MAC. Nodes
  2. send packets evert SEND_RATE ms to a sink node.
  3. Working
  4. -------
  5. A rough sketch of how the application works is as follows:
  6.   0. Application is initialized in B-MAC mode.
  7.   1. Upon starting, routing is initiated for ROUTE_TIME ms
  8.   2. At the end of routing, if DRAND_ENABLE is defined,
  9.   DRAND is initiated for DRAND_TIME ms, else MAC is switched
  10.   to Z-MAC and nodes start sending at once.
  11.   3. if DRAND_ENABLE is defined, at the end of DRAND, the
  12.   mac is switched to Z-MAC, and nodes start sending.
  13.   4. Statistics is printed out every STAT_TIME ms
  14. DRAND
  15. -----
  16. As explained in the top level README, Z-MAC need DRAND information. This
  17. can be supplied in two ways, DRAND can be made to run during initialization,
  18. or it can be run separately, and the information may be stored in a file
  19. and supplied statically. The first is the default way to run Z-MAC, the
  20. second is useful when testing.
  21. To run DRAND separately:
  22.    - use the application apps/TestBedTopology and run
  23. it on your testbed with options -DDEBUG and -DES_DEBUG.
  24.    - The output from each node should be stored using telnet sessions.
  25.    A sample script used for our testbed is included in this directory,
  26.    called runDrand.py. You will need to edit for your environment.
  27. [Note, the program loadlistTB is a local program we use to upload our
  28. mica2 images onto the testbed motes. It is included for reference,
  29. telmoteTB is another small script to open telnet sessions to each
  30. mote and log the
  31. output to separate files, it is also included.]
  32.    - Run a simple script to convert the DRAND neighbor information into
  33.    a file 'nbrTable.h', a sample can be found in tos/platform/mica2. A
  34.    script to perform this conversion is also included, called
  35.    getNbrTableForZMAC.py. You will need to edit it for your own environment.
  36.    The script takes only one parameter, the node id of the sink.
  37.    - Finally put this file nbrTable.h into tos/platform/mica2 and 
  38.    DO NOT use -DDRAND_ENABLE in your Makefile
  39. To run DRAND on initialization:
  40.    - compile application with -DDRAND_ENABLE in the Makefile
  41. Z-MAC
  42. -----
  43. Once DRAND is over, Z-MAC begins transmission. Note that Z-MAC being
  44. built on top of B-MAC executes in B-MAC mode till it gets DRAND 
  45. information. The switch from B-MAC to Z-MAC mode is performed by
  46. calling the command
  47.   command result_t SetDrand.Set(nodeInfo *myInfo, uint8_t nHop,
  48.   nodeInfo *nInfo, uint16_t sSize);
  49. The first parameter is a pointer to a structure of type nodeInfo, defined in
  50. tos/system/DrandMSG.h, which contains neighbor information (slot/frame,etc.)
  51. myInfo contains my own slot/frame information.
  52. The second information is the current next hop towards the sink, as
  53. determined from routing.
  54. The third parameter is again of type pointer to nodeInfo - nInfo is a pointer
  55. to an array of type nodeInfo containing neighbor information.
  56. The fourth parameter is the current TDMA slot size, default is 50ms.
  57. Once DRAND is over, myInfo can be obtained by calling Drand.getMyInfo(),
  58. and nInfo can be obtained by calling Drand.getNeighborInfo() [see the
  59. code in MultiHopThroughput for more details].
  60. Clearly, if you are using the static method (above) for DRAND, then
  61. you can pass NULL for both nInfo and myInfo, since the nbrTable.h
  62. should contain the relevant information.
  63. A simple script to run Z-MAC applicatin is included called runExp.py.
  64. Makefile Options
  65. ----------------
  66.  - SLEEPTIME is the time for sleep in LPL mode (unit is ms). If it is
  67.  0, then Z-MAC operates in full 100% duty cycle mode.
  68.  - PREAMBELELEN is the length of the preamble in bytes
  69.  - SELECTHCL is the boolean variable deciding whether you are in HCL mode
  70.  or LCL mode (see paper for HCL/LCL description)
  71.  - SEND_RATE is the inter-packet time (unit ms), or 1/SEND_RATE is the
  72.  transmission rate in packets/second