📄 p802_15_4fail.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_4fail.cc// Mode: C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t// $Header: p802_15_4fail.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 "p802_15_4fail.h"LFAILLINK *lfailLink1 = NULL;LFAILLINK *lfailLink2 = NULL;NFAILLINK *nfailLink1 = NULL;NFAILLINK *nfailLink2 = NULL;int addLFailLink(int s,int d){ LFAILLINK *tmp; if(lfailLink2 == NULL) //not exist yet { lfailLink2 = new LFAILLINK(s,d); if (lfailLink2 == NULL) return 1; lfailLink1 = lfailLink2; } else { tmp=new LFAILLINK(s,d); if (tmp == NULL) return 1; tmp->last = lfailLink2; (lfailLink2)->next = tmp; lfailLink2 = tmp; } return 0;}int updateLFailLink(int oper,int s,int d){ LFAILLINK *tmp; int rt; rt = 1; tmp = lfailLink1; while(tmp != NULL) { if ((tmp->src == s)&&(tmp->dst == d)) { if (oper == fl_oper_del) //delete an element { if(tmp->last != NULL) { tmp->last->next = tmp->next; if(tmp->next != NULL) tmp->next->last = tmp->last; else lfailLink2 = tmp->last; } else if (tmp->next != NULL) { lfailLink1 = tmp->next; tmp->next->last = NULL; } else { lfailLink1 = NULL; lfailLink2 = NULL; } delete tmp; } rt = 0; break; } tmp = tmp->next; } return rt;}int chkAddLFailLink(int s,int d){ int i; i = updateLFailLink(fl_oper_est,s,d); if (i == 0) return 1; i = addLFailLink(s,d); if (i == 0) return 0; else return 2;}int addNFailLink(int a){ NFAILLINK *tmp; if(nfailLink2 == NULL) //not exist yet { nfailLink2 = new NFAILLINK(a); if (nfailLink2 == NULL) return 1; nfailLink1 = nfailLink2; } else { tmp=new NFAILLINK(a); if (tmp == NULL) return 1; tmp->last = nfailLink2; (nfailLink2)->next = tmp; nfailLink2 = tmp; } return 0;}int updateNFailLink(int oper,int a){ NFAILLINK *tmp; int rt; rt = 1; tmp = nfailLink1; while(tmp != NULL) { if (tmp->addr == a) { if (oper == fl_oper_del) //delete an element { if(tmp->last != NULL) { tmp->last->next = tmp->next; if(tmp->next != NULL) tmp->next->last = tmp->last; else nfailLink2 = tmp->last; } else if (tmp->next != NULL) { nfailLink1 = tmp->next; tmp->next->last = NULL; } else { nfailLink1 = NULL; nfailLink2 = NULL; } delete tmp; } rt = 0; break; } tmp = tmp->next; } return rt;}int chkAddNFailLink(int a){ int i; i = updateNFailLink(fl_oper_est,a); if (i == 0) return 1; i = addNFailLink(a); if (i == 0) return 0; else return 2;}// End of file: p802_15_4fail.cc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -