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

📄 p802_15_4sscs.h

📁 Low Rate Wireless Personal Area Networks (LR-WPANs)in C
💻 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_4sscs.h// Mode:  C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t// $Header: p802_15_4sscs.h,v 1.1 2004/10/15 17:32:08 zheng Exp $// Functions in this file are out of the scope of 802.15.4.// But they elaborate how a higher layer interfaces with 802.15.4.// You can modify this file at will to fit your need./* * 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_4sscs_h#define p802_15_4sscs_h//enable/disable ZigBee interface//#define ZigBeeIF#include "p802_15_4def.h"#include "p802_15_4mac.h"//task pending (callback)#define sscsTP_startPANCoord		1#define sscsTP_startDevice		2struct sscsTaskPending{	sscsTaskPending()	{		init();	}	inline void init()	{		startPANCoord = false;		startPANCoord_STEP = 0;		startDevice = false;		startDevice_STEP = 0;	}	bool &taskStatus(UINT_8 task)	{		switch (task)		{			case sscsTP_startPANCoord:				return startPANCoord;			case sscsTP_startDevice:				return startDevice;			default:				assert(0);		}	}	UINT_8 &taskStep(UINT_8 task)	{		switch (task)		{			case sscsTP_startPANCoord:				return startPANCoord_STEP;			case sscsTP_startDevice:				return startDevice_STEP;			default:				assert(0);		}	}	//----------------	bool	startPANCoord;	bool	startPANCoord_isCluster_Tree;	UINT_8	startPANCoord_STEP;	bool	startPANCoord_txBeacon;	UINT_8	startPANCoord_BO;	UINT_8	startPANCoord_SO;	UINT_8	startPANCoord_Channel;	//----------------	bool	startDevice;	bool	startDevice_isCluster_Tree;	UINT_8	startDevice_STEP;	bool	startDevice_isFFD;	bool	startDevice_assoPermit;	bool	startDevice_txBeacon;	UINT_8	startDevice_BO;	UINT_8	startDevice_SO;	UINT_8	startDevice_Channel;	PAN_ELE	startDevice_panDes;	//----------------};class SSCS802_15_4;class SSCS802_15_4Timer : public Handler{	friend class SSCS802_15_4;public:	SSCS802_15_4Timer(SSCS802_15_4 *s) : Handler()	{		sscs = s;		active = false;	}	virtual void start(double wtime);	virtual void cancel(void);	virtual void handle(Event* e);protected:	SSCS802_15_4 *sscs;	bool active;	Event nullEvent;};#ifdef ZigBeeIFclass ZBR;#endifclass SSCS802_15_4{	friend class Mac802_15_4;	friend class SSCS802_15_4Timer;public:	SSCS802_15_4(Mac802_15_4 *m);	~SSCS802_15_4();	void MCPS_DATA_confirm(UINT_8 msduHandle,MACenum status);	void MCPS_DATA_indication(UINT_8 SrcAddrMode,UINT_16 SrcPANId,IE3ADDR SrcAddr,				  UINT_8 DstAddrMode,UINT_16 DstPANId,IE3ADDR DstAddr,				  UINT_8 msduLength,Packet *msdu,UINT_8 mpduLinkQuality,				  bool SecurityUse,UINT_8 ACLEntry);	void MCPS_PURGE_confirm(UINT_8 msduHandle,MACenum status);	void MLME_ASSOCIATE_indication(IE3ADDR DeviceAddress,UINT_8 CapabilityInformation,bool SecurityUse,UINT_8 ACLEntry);	void MLME_ASSOCIATE_confirm(UINT_16 AssocShortAddress,MACenum status);	void MLME_DISASSOCIATE_confirm(MACenum status);	void MLME_BEACON_NOTIFY_indication(UINT_8 BSN,PAN_ELE *PANDescriptor,UINT_8 PendAddrSpec,IE3ADDR *AddrList,UINT_8 sduLength,UINT_8 *sdu);	void MLME_GET_confirm(MACenum status,MPIBAenum PIBAttribute,MAC_PIB *PIBAttributeValue);	void MLME_ORPHAN_indication(IE3ADDR OrphanAddress,bool SecurityUse,UINT_8 ACLEntry);	void MLME_RESET_confirm(MACenum status);	void MLME_RX_ENABLE_confirm(MACenum status);	void MLME_SET_confirm(MACenum status,MPIBAenum PIBAttribute);	void MLME_SCAN_confirm(MACenum status,UINT_8 ScanType,UINT_32 UnscannedChannels,			       UINT_8 ResultListSize,UINT_8 *EnergyDetectList,			       PAN_ELE *PANDescriptorList);	void MLME_COMM_STATUS_indication(UINT_16 PANId,UINT_8 SrcAddrMode,IE3ADDR SrcAddr,					 UINT_8 DstAddrMode,IE3ADDR DstAddr,MACenum status);	void MLME_START_confirm(MACenum status);	void MLME_SYNC_LOSS_indication(MACenum LossReason);	void MLME_POLL_confirm(MACenum status);protected:	void checkTaskOverflow(UINT_8 task);	void dispatch(MACenum status,char *frFunc);	void startPANCoord(bool isClusterTree,bool txBeacon,UINT_8 BO,UINT_8 SO,bool firsttime,MACenum status = m_SUCCESS);	void startDevice(bool isClusterTree,bool isFFD,bool assoPermit,bool txBeacon,UINT_8 BO,UINT_8 SO,bool firsttime,MACenum status = m_SUCCESS);	int command(int argc, const char*const* argv);#ifdef ZigBeeIF	//for cluster tree	void assertZBR(void);	int RNType(void);	void setGetClusTreePara(char setGet,Packet *p);#endifprotected:	bool t_isCT,t_txBeacon,t_isFFD,t_assoPermit;	UINT_8 t_BO,t_SO;	//for cluster tree	UINT_16 rt_myDepth;	UINT_16 rt_myNodeID;	UINT_16 rt_myParentNodeID;public:	static UINT_32 ScanChannels;	bool neverAsso;			private:	Mac802_15_4 *mac;#ifdef ZigBeeIF	ZBR *zbr;			#endif	SSCS802_15_4Timer assoH;	sscsTaskPending sscsTaskP;	//--- store results returned from MLME_SCAN_confirm() ---	UINT_32	T_UnscannedChannels;	UINT_8	T_ResultListSize;	UINT_8	*T_EnergyDetectList;	PAN_ELE	*T_PANDescriptorList;	UINT_8	Channel;	//-------------------------------------------------------	HLISTLINK *hlistLink1;	HLISTLINK *hlistLink2;};#endif// End of file: p802_15_4sscs.h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -