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

通讯编程

开发平台:

Visual C++

  1. /********************************************/
  2. /*     NS2 Simulator for IEEE 802.15.4      */
  3. /*           (per P802.15.4/D18)            */
  4. /*------------------------------------------*/
  5. /* by:        Jianliang Zheng               */
  6. /*        (zheng@ee.ccny.cuny.edu)          */
  7. /*              Myung J. Lee                */
  8. /*          (lee@ccny.cuny.edu)             */
  9. /*        ~~~~~~~~~~~~~~~~~~~~~~~~~         */
  10. /*           SAIT-CUNY Joint Lab            */
  11. /********************************************/
  12. // File:  p802_15_4pkt.h
  13. // Mode:  C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t
  14. // $Header: /cvsroot/nsnam/ns-2/wpan/p802_15_4pkt.h,v 1.1 2005/01/24 18:35:35 haldar Exp $
  15. /*
  16.  * Copyright (c) 2003-2004 Samsung Advanced Institute of Technology and
  17.  * The City University of New York. All rights reserved.
  18.  *
  19.  * Redistribution and use in source and binary forms, with or without
  20.  * modification, are permitted provided that the following conditions
  21.  * are met:
  22.  * 1. Redistributions of source code must retain the above copyright
  23.  *    notice, this list of conditions and the following disclaimer.
  24.  * 2. Redistributions in binary form must reproduce the above copyright
  25.  *    notice, this list of conditions and the following disclaimer in the
  26.  *    documentation and/or other materials provided with the distribution.
  27.  * 3. All advertising materials mentioning features or use of this software
  28.  *    must display the following acknowledgement:
  29.  * This product includes software developed by the Joint Lab of Samsung 
  30.  *      Advanced Institute of Technology and The City University of New York.
  31.  * 4. Neither the name of Samsung Advanced Institute of Technology nor of 
  32.  *    The City University of New York may be used to endorse or promote 
  33.  *    products derived from this software without specific prior written 
  34.  *    permission.
  35.  *
  36.  * THIS SOFTWARE IS PROVIDED BY THE JOINT LAB OF SAMSUNG ADVANCED INSTITUTE
  37.  * OF TECHNOLOGY AND THE CITY UNIVERSITY OF NEW YORK ``AS IS'' AND ANY EXPRESS 
  38.  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
  39.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 
  40.  * NO EVENT SHALL SAMSUNG ADVANCED INSTITUTE OR THE CITY UNIVERSITY OF NEW YORK 
  41.  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
  42.  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
  43.  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
  44.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
  45.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
  46.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  47.  */
  48. #ifndef p802_15_4pkt_h
  49. #define p802_15_4pkt_h
  50. #include <packet.h>
  51. #include "p802_15_4const.h"
  52. #include "p802_15_4field.h"
  53. #define HDR_LRWPAN(p) (hdr_lrwpan::access(p))
  54. struct panAddrInfo
  55. {
  56. UINT_16 panID;
  57. union
  58. {
  59. UINT_16 addr_16;
  60. IE3ADDR addr_64;
  61. };
  62. };
  63. //---PHY header---
  64. #define defSHR_PreSeq 0x00000000
  65. #define defSHR_SFD 0xe5
  66. #define defPHY_HEADER_LEN 6
  67. struct lrwpan_beacon_frame
  68. {
  69. //---beacon frame (Figures 10,37)---
  70. UINT_32 SHR_PreSeq; //(PPDU) Preamble Sequence (const 0x00000000)(sec. 6.3.1.1)
  71. UINT_8 SHR_SFD; //(PPDU) Start of Frame Delimiter (const 0xe5)(sec 6.3.1.2)
  72. UINT_8 PHR_FrmLen; //(PPDU) Frame Length (sec. 6.3.1.3)
  73. UINT_16 MHR_FrmCtrl; //(PSDU/MPDU) Frame Control (Figure 35)
  74. // --leftmost bit numbered 0 and transmitted first
  75. // --(012): Frame type (Table 65)
  76. //  --(210)=000: Beacon
  77. //  --(210)=001: Data
  78. //  --(210)=010: Ack.
  79. //  --(210)=011: MAC command
  80. //  --(210)=others: Reserved
  81. // --(3): Security enabled
  82. // --(4): Frame pending
  83. // --(5): Ack. req.
  84. // --(6): Intra PAN
  85. // --(789): Reserved
  86. // --(ab): Dest. addressing mode (Table 66)
  87. //  --(ba)=00: PAN ID and Addr. field not present
  88. //  --(ba)=01: Reserved
  89. //  --(ba)=10: 16-bit short address
  90. //  --(ba)=11: 64-bit extended address
  91. // --(cd): Reserved
  92. // --(ef): Source addressing mode (see Dest. addressing mode)
  93. UINT_8 MHR_BSN; //(PSDU/MPDU) Beacon Sequence Number
  94. panAddrInfo MHR_SrcAddrInfo; //(PSDU/MPDU) Source Address Information
  95. UINT_16 MSDU_SuperSpec; //(MSDU) Superframe Specification (Figures 40,59)
  96. // --(0123): Beacon order
  97. // --(4567): Superframe order
  98. // --(89ab): Final CAP slot
  99. // --(c): Battery life extension
  100. // --(d): Reserved
  101. // --(e): PAN Coordinator
  102. // --(f): Association permit
  103. GTSFields MSDU_GTSFields; //GTS Fields (Figure 38)
  104. PendAddrFields MSDU_PendAddrFields; //(MSDU) Address Fields (Figure 39)
  105. // --(012): # of short addressing pending
  106. // --(3): Reserved
  107. // --(456): # of extended addressing pending
  108. // --(7): Reserved
  109. //MSDU_BeaconPL; //(MSDU) Beacon Payload
  110. UINT_16 MFR_FCS; //(PSDU/MPDU) FCS
  111. };
  112. struct lrwpan_data_frame
  113. {
  114. //---data frame (Figures 11,45)---
  115. UINT_32 SHR_PreSeq; //same as above
  116. UINT_8 SHR_SFD; //same as above
  117. UINT_8 PHR_FrmLen; //same as above
  118. UINT_16 MHR_FrmCtrl; //same as above
  119. UINT_8 MHR_DSN; //Date Sequence Number
  120. panAddrInfo MHR_DstAddrInfo; //(PSDU/MPDU) Source Address Information
  121. panAddrInfo MHR_SrcAddrInfo; //(PSDU/MPDU) Destination Address Information
  122. //MSDU_DataPL; //(MSDU) Data Payload
  123. UINT_16 MFR_FCS; //same as above
  124. };
  125. struct lrwpan_ack_frame
  126. {
  127. //---acknowledgement frame (Figures 12,46)---
  128. UINT_32 SHR_PreSeq; //same as above
  129. UINT_8 SHR_SFD; //same as above
  130. UINT_8 PHR_FrmLen; //same as above
  131. UINT_16 MHR_FrmCtrl; //same as above
  132. UINT_8 MHR_DSN; //same as above
  133. UINT_16 MFR_FCS; //same as above
  134. };
  135. struct lrwpan_command_frame
  136. {
  137. //---MAC command frame (Figures 13,47)---
  138. UINT_32 SHR_PreSeq; //same as above
  139. UINT_8 SHR_SFD; //same as above
  140. UINT_8 PHR_FrmLen; //same as above
  141. UINT_16 MHR_FrmCtrl; //same as above
  142. UINT_8 MHR_DSN; //same as above
  143. panAddrInfo MHR_DstAddrInfo; //same as above
  144. panAddrInfo MHR_SrcAddrInfo; //same as above
  145. UINT_8 MSDU_CmdType; //(MSDU) Command Type/Command frame identifier (Table 67)
  146. // --0x01: Association request (Figures 48 -> 49)
  147. // --0x02: Association response (Figure 50;Table 68)
  148. // --0x03: Disassociation notification (Figure 51;Table 69)
  149. // --0x04: Data request (Figure 52)
  150. // --0x05: PAN ID conflict notification (Figure 53)
  151. // --0x06: Orphan notification (Figure 54)
  152. // --0x07: Beacon request (Figure 55)
  153. // --0x08: Coordinator realignment (Figure 56
  154. // --0x09: GTS request (Figures 57 -> 58)
  155. // --0x0a-0xff: Reserved
  156. //MSDU_CmdPL; //(MSDU) Command Payload
  157. UINT_16 MFR_FCS; //same as above
  158. };
  159. struct hdr_lrwpan
  160. {
  161. //---PHY header---
  162. UINT_32 SHR_PreSeq;
  163. UINT_8 SHR_SFD;
  164. UINT_8 PHR_FrmLen;
  165. //---MAC header---
  166. UINT_16 MHR_FrmCtrl;
  167. UINT_8 MHR_BDSN;
  168. panAddrInfo MHR_DstAddrInfo;
  169. panAddrInfo MHR_SrcAddrInfo;
  170. //---PHY layer---
  171. UINT_8 ppduLinkQuality;
  172. double rxTotPower;
  173. //---MAC sublayer---
  174. UINT_16 MFR_FCS;
  175. UINT_16 MSDU_SuperSpec;
  176. GTSFields MSDU_GTSFields;
  177. PendAddrFields MSDU_PendAddrFields;
  178. UINT_8 MSDU_CmdType;
  179. UINT_8 MSDU_PayloadLen;
  180. UINT_16 pad;
  181. UINT_8 MSDU_Payload[aMaxMACFrameSize]; //MSDU_BeaconPL/MSDU_DataPL/MSDU_CmdPL
  182. bool SecurityUse;
  183. UINT_8 ACLEntry;
  184. //---SSCS entity---
  185. UINT_8 msduHandle;
  186. //---Other---
  187. bool setSN; //SN already been set
  188. UINT_8 phyCurrentChannel;
  189. bool indirect; //this is a pending packet (indirect transmission)
  190. UINT_32 uid; //for debug purpose
  191. UINT_16 clusTreeDepth;
  192. UINT_16 clusTreeParentNodeID;
  193. bool colFlag; //for nam purpose
  194. int attribute; //for nam purpose
  195. //---Packet header access functions---
  196. static int offset_;
  197. inline static int& offset() {return offset_;}
  198. inline static hdr_lrwpan* access(const Packet* p)
  199. {
  200. return (hdr_lrwpan*) p->access(offset_);
  201. }
  202. };
  203. #endif
  204. // End of file: p802_15_4pkt.h