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

📄 p802_15_4trace.cc

📁 ZigBee路由协议指的是ZigBee规范中规定的与路由相关的功能和算法部分
💻 CC
字号:
/********************************************//*     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_4trace.cc// Mode:  C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t// $Header: p802_15_4trace.cc,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. */#include <packet.h>#include <mac.h>#include <mac-802_11.h>#include "p802_15_4trace.h"//ns-2.27 changed 'dh_sa' to 'dh_ta' and 'dh_da' to 'dh_ra' in mac-802_11.h/cc#define dh_sa dh_ta#define dh_da dh_ra#define use_hdr_802_11_for_trace#ifndef use_hdr_802_11_for_traceint p802_15_4macSA(Packet *p){	struct hdr_mac *mh = HDR_MAC(p);	return mh->macSA();}int p802_15_4macDA(Packet *p){	struct hdr_mac *mh = HDR_MAC(p);	return mh->macDA();}u_int16_t p802_15_4hdr_type(Packet *p){	struct hdr_mac *mh = HDR_MAC(p);	return mh->hdr_type();}int p802_15_4hdr_dst(char* hdr,int dst){	struct hdr_mac *mh = (struct hdr_mac*) hdr;	if(dst > -2)		mh->macDA_ = dst;	return mh->macDA();}int p802_15_4hdr_src(char* hdr,int src){	struct hdr_mac *mh = (struct hdr_mac*) hdr;	if(src > -2)		mh->macSA_ = src;	return mh->macSA();}int p802_15_4hdr_type(char* hdr, u_int16_t type){	struct hdr_mac *mh = (struct hdr_mac*) hdr;	if (type)		mh->hdr_type_ = type;	return mh->hdr_type();}void p802_15_4hdrDATA(Packet *p){	;	//nothing to do}void p802_15_4hdrACK(Packet *p){	;	//nothing to do}void p802_15_4hdrBeacon(Packet *p){	;	//nothing to do}void p802_15_4hdrCommand(Packet *p, u_int16_t type){	;	//nothing to do}#elseint p802_15_4macSA(Packet *p){	struct hdr_mac802_11 *mh = HDR_MAC802_11(p);	return ETHER_ADDR(mh->dh_sa);	}int p802_15_4macDA(Packet *p){	struct hdr_mac802_11 *mh = HDR_MAC802_11(p);	return ETHER_ADDR(mh->dh_da);}u_int16_t p802_15_4hdr_type(Packet *p){	struct hdr_mac802_11 *mh = HDR_MAC802_11(p);	return GET2BYTE(mh->dh_body);}int p802_15_4hdr_dst(char* hdr,int dst){	struct hdr_mac802_11 *mh = (struct hdr_mac802_11*) hdr;	if(dst > -2)		STORE4BYTE(&dst, (mh->dh_da));	return ETHER_ADDR(mh->dh_da);}int p802_15_4hdr_src(char* hdr,int src){	struct hdr_mac802_11 *mh = (struct hdr_mac802_11*) hdr;	if(src > -2)		STORE4BYTE(&src, (mh->dh_sa));	return ETHER_ADDR(mh->dh_sa);}int p802_15_4hdr_type(char* hdr, u_int16_t type){	struct hdr_mac802_11 *mh = (struct hdr_mac802_11*) hdr;	if(type)		STORE2BYTE(&type,(mh->dh_body));	return GET2BYTE(mh->dh_body);}void p802_15_4hdrDATA(Packet *p){	struct hdr_mac802_11* mh = HDR_MAC802_11(p);	//ch->size() += ETHER_HDR_LEN11;	mh->dh_fc.fc_protocol_version = MAC_ProtocolVersion;	mh->dh_fc.fc_type = MAC_Type_Data;	mh->dh_fc.fc_subtype = MAC_Subtype_Data;}void p802_15_4hdrACK(Packet *p){	struct ack_frame *af = (struct ack_frame*)p->access(hdr_mac::offset_);	af->af_fc.fc_protocol_version = MAC_ProtocolVersion; 	af->af_fc.fc_type = MAC_Type_Control; 	af->af_fc.fc_subtype = MAC_Subtype_ACK;}void p802_15_4hdrBeacon(Packet *p){	struct hdr_mac802_11* mh = HDR_MAC802_11(p);	mh->dh_fc.fc_protocol_version = MAC_ProtocolVersion;	mh->dh_fc.fc_type = MAC_Type_Control;		//doesn't really matter	mh->dh_fc.fc_subtype = MAC_Subtype_Beacon;}void p802_15_4hdrCommand(Packet *p, u_int16_t type){	struct hdr_mac802_11* mh = HDR_MAC802_11(p);	mh->dh_fc.fc_protocol_version = MAC_ProtocolVersion;	mh->dh_fc.fc_type = MAC_Type_Control;		//doesn't really matter	mh->dh_fc.fc_subtype = type;}#endifconst char *wpan_pName(Packet *p){	struct hdr_cmn *ch = HDR_CMN(p);	struct hdr_mac802_11 *mh = HDR_MAC802_11(p);	return	((ch->ptype() == PT_MAC) ? (	  (mh->dh_fc.fc_subtype == MAC_Subtype_Beacon) ? "M_BEACON"  :			//Beacon	  (mh->dh_fc.fc_subtype == MAC_Subtype_Command_AssoReq) ? "M_CM1_AssoReq"  :	//CMD: Association request	  (mh->dh_fc.fc_subtype == MAC_Subtype_Command_AssoRsp) ? "M_CM2_AssoRsp"  :	//CMD: Association response	  (mh->dh_fc.fc_subtype == MAC_Subtype_Command_DAssNtf) ? "M_CM3_DisaNtf"  :	//CMD: Disassociation notification	  (mh->dh_fc.fc_subtype == MAC_Subtype_Command_DataReq) ? "M_CM4_DataReq"  :	//CMD: Data request	  (mh->dh_fc.fc_subtype == MAC_Subtype_Command_PIDCNtf) ? "M_CM5_PidCNtf"  :	//CMD: PAN ID conflict notification	  (mh->dh_fc.fc_subtype == MAC_Subtype_Command_OrphNtf) ? "M_CM6_OrphNtf"  :	//CMD: Orphan notification	  (mh->dh_fc.fc_subtype == MAC_Subtype_Command_BconReq) ? "M_CM7_Bcn-Req"  :	//CMD: Beacon request	  (mh->dh_fc.fc_subtype == MAC_Subtype_Command_CoorRea) ? "M_CM8_CoorRal"  :	//CMD: Coordinator realignment	  (mh->dh_fc.fc_subtype == MAC_Subtype_Command_GTSReq) ?  "M_CM9_GTS-Req"  :	//CMD: GTS request	  (mh->dh_fc.fc_subtype == MAC_Subtype_ACK) ? "M_ACK"  :			//Acknowledgement	  "M_UNKN"	  ) : packet_info.name(ch->ptype()));}// End of file: p802_15_4trace.cc

⌨️ 快捷键说明

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