📄 p802_15_4mac.h
字号:
/********************************************//* NS2 Simulator for IEEE 802.15.4 *//* (per P802.15.4/D18) *//*------------------------------------------*//* by: Jianliang Zheng *//* (zheng@ee.ccny.cuny.edu) *//* Myung J. Lee *//* (lee@ccny.cuny.edu) *//* ~~~~~~~~~~~~~~~~~~~~~~~~~ *//* SAIT-CUNY Joint Lab *//********************************************/// File: p802_15_4mac.h// Mode: C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t// $Header: p802_15_4mac.h,v 1.1 2004/10/15 17:32:08 zheng Exp $/* * Copyright (c) 2003-2004 Samsung Advanced Institute of Technology and * The City University of New York. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the Joint Lab of Samsung * Advanced Institute of Technology and The City University of New York. * 4. Neither the name of Samsung Advanced Institute of Technology nor of * The City University of New York may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY THE JOINT LAB OF SAMSUNG ADVANCED INSTITUTE * OF TECHNOLOGY AND THE CITY UNIVERSITY OF NEW YORK ``AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL SAMSUNG ADVANCED INSTITUTE OR THE CITY UNIVERSITY OF NEW YORK * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */#ifndef p802_15_4mac_h#define p802_15_4mac_h#include "p802_15_4pkt.h"#include "p802_15_4phy.h"#include "p802_15_4timer.h"#include "p802_15_4hlist.h"#include "p802_15_4transac.h"//Elements of PAN descriptor (Table 41)struct PAN_ELE{ UINT_8 CoordAddrMode; UINT_16 CoordPANId; union { UINT_16 CoordAddress_16; IE3ADDR CoordAddress_64; }; UINT_8 LogicalChannel; UINT_16 SuperframeSpec; bool GTSPermit; UINT_8 LinkQuality; UINT_32 TimeStamp:24; bool SecurityUse; UINT_8 ACLEntry; bool SecurityFailure; //add one field for cluster tree UINT_16 clusTreeDepth;};//task pending (callback)#define TP_mcps_data_request 1#define TP_mlme_associate_request 2#define TP_mlme_associate_response 3#define TP_mlme_disassociate_request 4#define TP_mlme_orphan_response 5#define TP_mlme_reset_request 6#define TP_mlme_rx_enable_request 7#define TP_mlme_scan_request 8#define TP_mlme_start_request 9#define TP_mlme_sync_request 10#define TP_mlme_poll_request 11#define TP_CCA_csmaca 12#define TP_RX_ON_csmaca 13struct taskPending{ taskPending() { init(); } inline void init() { mcps_data_request = false; mcps_data_request_STEP = 0; mlme_associate_request = false; mlme_associate_request_STEP = 0; mlme_associate_response = false; mlme_associate_response_STEP = 0; mlme_disassociate_request = false; mlme_disassociate_request_STEP = 0; mlme_orphan_response = false; mlme_orphan_response_STEP = 0; mlme_reset_request = false; mlme_reset_request_STEP = 0; mlme_rx_enable_request = false; mlme_rx_enable_request_STEP = 0; mlme_scan_request = false; mlme_scan_request_STEP = 0; mlme_start_request = false; mlme_start_request_STEP = 0; mlme_sync_request = false; mlme_sync_request_STEP = 0; mlme_sync_request_tracking = false; mlme_poll_request = false; mlme_poll_request_STEP = 0; CCA_csmaca = false; CCA_csmaca_STEP = 0; RX_ON_csmaca = false; RX_ON_csmaca_STEP = 0; } bool &taskStatus(UINT_8 task) { switch (task) { case TP_mcps_data_request: return mcps_data_request; case TP_mlme_associate_request: return mlme_associate_request; case TP_mlme_associate_response: return mlme_associate_response; case TP_mlme_disassociate_request: return mlme_disassociate_request; case TP_mlme_orphan_response: return mlme_orphan_response; case TP_mlme_reset_request: return mlme_reset_request; case TP_mlme_rx_enable_request: return mlme_rx_enable_request; case TP_mlme_scan_request: return mlme_scan_request; case TP_mlme_start_request: return mlme_start_request; case TP_mlme_sync_request: return mlme_sync_request; case TP_mlme_poll_request: return mlme_poll_request; case TP_CCA_csmaca: return CCA_csmaca; case TP_RX_ON_csmaca: return RX_ON_csmaca; default: assert(0); } } UINT_8 &taskStep(UINT_8 task) { switch (task) { case TP_mcps_data_request: return mcps_data_request_STEP; case TP_mlme_associate_request: return mlme_associate_request_STEP; case TP_mlme_associate_response: return mlme_associate_response_STEP; case TP_mlme_disassociate_request: return mlme_disassociate_request_STEP; case TP_mlme_orphan_response: return mlme_orphan_response_STEP; case TP_mlme_reset_request: return mlme_reset_request_STEP; case TP_mlme_rx_enable_request: return mlme_rx_enable_request_STEP; case TP_mlme_scan_request: return mlme_scan_request_STEP; case TP_mlme_start_request: return mlme_start_request_STEP; case TP_mlme_sync_request: return mlme_sync_request_STEP; case TP_mlme_poll_request: return mlme_poll_request_STEP; case TP_CCA_csmaca: return CCA_csmaca_STEP; case TP_RX_ON_csmaca: return RX_ON_csmaca_STEP; default: assert(0); } } char *taskFrFunc(UINT_8 task) { switch (task) { case TP_mcps_data_request: return mcps_data_request_frFunc; case TP_mlme_associate_request: return mlme_associate_request_frFunc; case TP_mlme_associate_response: return mlme_associate_response_frFunc; case TP_mlme_disassociate_request: return mlme_disassociate_request_frFunc; case TP_mlme_orphan_response: return mlme_orphan_response_frFunc; case TP_mlme_reset_request: return mlme_reset_request_frFunc; case TP_mlme_rx_enable_request: return mlme_rx_enable_request_frFunc; case TP_mlme_scan_request: return mlme_scan_request_frFunc; case TP_mlme_start_request: return mlme_start_request_frFunc; case TP_mlme_sync_request: return mlme_sync_request_frFunc; case TP_mlme_poll_request: return mlme_poll_request_frFunc; default: assert(0); } } //---------------- bool mcps_data_request; UINT_8 mcps_data_request_STEP; char mcps_data_request_frFunc[81]; UINT_8 mcps_data_request_TxOptions; Packet *mcps_data_request_pendPkt; //---------------- bool mlme_associate_request; UINT_8 mlme_associate_request_STEP; char mlme_associate_request_frFunc[81]; bool mlme_associate_request_SecurityEnable; UINT_8 mlme_associate_request_CoordAddrMode; Packet *mlme_associate_request_pendPkt; //---------------- bool mlme_associate_response; UINT_8 mlme_associate_response_STEP; char mlme_associate_response_frFunc[81]; IE3ADDR mlme_associate_response_DeviceAddress; Packet *mlme_associate_response_pendPkt; //---------------- bool mlme_disassociate_request; UINT_8 mlme_disassociate_request_STEP; char mlme_disassociate_request_frFunc[81]; bool mlme_disassociate_request_toCoor; Packet *mlme_disassociate_request_pendPkt; //---------------- bool mlme_orphan_response; UINT_8 mlme_orphan_response_STEP; char mlme_orphan_response_frFunc[81]; IE3ADDR mlme_orphan_response_OrphanAddress; //---------------- bool mlme_reset_request; UINT_8 mlme_reset_request_STEP; char mlme_reset_request_frFunc[81]; bool mlme_reset_request_SetDefaultPIB; //---------------- bool mlme_rx_enable_request; UINT_8 mlme_rx_enable_request_STEP; char mlme_rx_enable_request_frFunc[81]; UINT_32 mlme_rx_enable_request_RxOnTime; UINT_32 mlme_rx_enable_request_RxOnDuration; double mlme_rx_enable_request_currentTime; //---------------- bool mlme_scan_request; UINT_8 mlme_scan_request_STEP; char mlme_scan_request_frFunc[81]; UINT_8 mlme_scan_request_ScanType; UINT_8 mlme_scan_request_orig_macBeaconOrder; UINT_8 mlme_scan_request_orig_macBeaconOrder2; UINT_8 mlme_scan_request_orig_macBeaconOrder3; UINT_16 mlme_scan_request_orig_macPANId; UINT_32 mlme_scan_request_ScanChannels; UINT_8 mlme_scan_request_ScanDuration; UINT_8 mlme_scan_request_CurrentChannel; UINT_8 mlme_scan_request_ListNum; UINT_8 mlme_scan_request_EnergyDetectList[27]; PAN_ELE mlme_scan_request_PANDescriptorList[27]; //---------------- bool mlme_start_request; UINT_8 mlme_start_request_STEP; char mlme_start_request_frFunc[81]; UINT_8 mlme_start_request_BeaconOrder; UINT_8 mlme_start_request_SuperframeOrder; bool mlme_start_request_BatteryLifeExtension; bool mlme_start_request_SecurityEnable; bool mlme_start_request_PANCoordinator; UINT_16 mlme_start_request_PANId; UINT_8 mlme_start_request_LogicalChannel; //---------------- bool mlme_sync_request; UINT_8 mlme_sync_request_STEP; char mlme_sync_request_frFunc[81]; UINT_8 mlme_sync_request_numSearchRetry; bool mlme_sync_request_tracking; //---------------- bool mlme_poll_request; UINT_8 mlme_poll_request_STEP; char mlme_poll_request_frFunc[81]; UINT_8 mlme_poll_request_CoordAddrMode; UINT_16 mlme_poll_request_CoordPANId; IE3ADDR mlme_poll_request_CoordAddress; bool mlme_poll_request_SecurityEnable; bool mlme_poll_request_autoRequest; bool mlme_poll_request_pending; //---------------- bool CCA_csmaca; UINT_8 CCA_csmaca_STEP; //---------------- bool RX_ON_csmaca; UINT_8 RX_ON_csmaca_STEP; //----------------};//Elements of ACL entry descriptor (Table 73)struct MAC_ACL{ IE3ADDR ACLExtendedAddress; UINT_16 ACLShortAddress; UINT_16 ACLPANId; UINT_8 ACLSecurityMaterialLength; UINT_8 *ACLSecurityMaterial; UINT_8 ACLSecuritySuite;};//MAC enumerations description (Table 64)typedef enum{ m_SUCCESS = 0, //--- following from Table 68) --- m_PAN_at_capacity, m_PAN_access_denied, //-------------------------------- m_BEACON_LOSS = 0xe0, m_CHANNEL_ACCESS_FAILURE, m_DENIED, m_DISABLE_TRX_FAILURE, m_FAILED_SECURITY_CHECK, m_FRAME_TOO_LONG, m_INVALID_GTS, m_INVALID_HANDLE, m_INVALID_PARAMETER, m_NO_ACK, m_NO_BEACON, m_NO_DATA, m_NO_SHORT_ADDRESS, m_OUT_OF_CAP, m_PAN_ID_CONFLICT, m_REALIGNMENT, m_TRANSACTION_EXPIRED, m_TRANSACTION_OVERFLOW,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -