⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p802_15_4mac.h

📁 802.15.4 mac 协议源程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/********************************************//*     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 + -