亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? multihopenginem.nc

?? tinyos2.0版本驅動
?? NC
字號:
// $Id: MultiHopEngineM.nc,v 1.4 2008/06/11 00:46:25 razvanm Exp $/* * "Copyright (c) 2000-2003 The Regents of the University  of California.   * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice, the following * two paragraphs and the author appear in all copies of this software. *  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." * * Copyright (c) 2002-2003 Intel Corporation * All rights reserved. * * This file is distributed under the terms in the attached INTEL-LICENSE      * file. If you do not find these files, copies can be found by writing to * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA,  * 94704.  Attention:  Intel License Inquiry. *//*  * A simple module that handles multihop packet movement.  It accepts  * messages from both applications and the network and does the necessary * interception and forwarding. * It interfaces to an algorithmic componenet via RouteSelect. It also acts * as a front end for RouteControl *//* * Authors:          Philip Buonadonna, Alec Woo, Crossbow Inc. * */#include "AM.h"#include "MultiHop.h"module MultiHopEngineM {  provides {    interface Init;    interface Receive;    interface Send;    interface Packet;    interface CollectionPacket;    interface RouteControl;    interface LqiRouteStats;  }  uses {    interface Receive as SubReceive;    interface AMSend as SubSend;    interface RouteControl as RouteSelectCntl;    interface RouteSelect;    interface Leds;    interface Packet as SubPacket;    interface AMPacket;    interface RootControl;    interface PacketAcknowledgements;  }}implementation {  enum {    FWD_QUEUE_SIZE = MHOP_QUEUE_SIZE, // Forwarding Queue    EMPTY = 0xff  };  /* Internal storage and scheduling state */  message_t FwdBuffers[FWD_QUEUE_SIZE];  message_t *FwdBufList[FWD_QUEUE_SIZE];  uint8_t FwdBufBusy[FWD_QUEUE_SIZE];  uint8_t iFwdBufHead, iFwdBufTail;  uint16_t sendFailures = 0;  uint8_t fail_count = 0;  lqi_header_t* getHeader(message_t* msg) {    return (lqi_header_t*) call SubPacket.getPayload(msg, NULL);  }    /***********************************************************************   * Initialization    ***********************************************************************/  static void initialize() {    int n;    for (n=0; n < FWD_QUEUE_SIZE; n++) {      FwdBufList[n] = &FwdBuffers[n];      FwdBufBusy[n] = 0;    }     iFwdBufHead = iFwdBufTail = 0;    sendFailures = 0;  }  command error_t Init.init() {    initialize();    return SUCCESS;  }  /***********************************************************************   * Commands and events   ***********************************************************************/  command error_t Send.send(message_t* pMsg, uint8_t len) {    len += sizeof(lqi_header_t);    if (len > call SubPacket.maxPayloadLength()) {      call Leds.led0On();      return ESIZE;    }    if (call RootControl.isRoot()) {      call Leds.led1On();      return FAIL;    }    call RouteSelect.initializeFields(pMsg);        if (call RouteSelect.selectRoute(pMsg, 0) != SUCCESS) {      call Leds.led2On();      return FAIL;    }    call PacketAcknowledgements.requestAck(pMsg);    if (call SubSend.send(call AMPacket.destination(pMsg), pMsg, len) != SUCCESS) {      sendFailures++;      return FAIL;    }    return SUCCESS;  }     int8_t get_buff(){    uint8_t n;    for (n=0; n < FWD_QUEUE_SIZE; n++) {	uint8_t done = 0;        atomic{	  if(FwdBufBusy[n] == 0){	    FwdBufBusy[n] = 1;	    done = 1;	  }        }	if(done == 1) return n;          }     return -1;  }  int8_t is_ours(message_t* ptr){    uint8_t n;    for (n=0; n < FWD_QUEUE_SIZE; n++) {       if(FwdBufList[n] == ptr){		return n;       }    }     return -1;  }    static message_t* mForward(message_t* msg) {    message_t* newMsg = msg;    int8_t buf = get_buff();    call Leds.led2Toggle();        if (call RootControl.isRoot()) {      return signal Receive.receive(msg, call Packet.getPayload(msg, NULL), call Packet.payloadLength(msg));    }        if (buf == -1) {      dbg("LQI", "Dropped packet due to no space in queue.\n");      return msg;    }        if ((call RouteSelect.selectRoute(msg, 0)) != SUCCESS) {      FwdBufBusy[(uint8_t)buf] = 0;      return msg;    }     // Failures at the send level do not cause the seq. number space to be     // rolled back properly.  This is somewhat broken.    call PacketAcknowledgements.requestAck(msg);    if (call SubSend.send(call AMPacket.destination(msg),			  msg,			  call SubPacket.payloadLength(msg) == SUCCESS)) {      newMsg = FwdBufList[(uint8_t)buf];      FwdBufList[(uint8_t)buf] = msg;    }    else{      FwdBufBusy[(uint8_t)buf] = 0;      sendFailures++;    }    return newMsg;      }  event message_t* SubReceive.receive(message_t* msg, void* payload, uint8_t len) {    return mForward(msg);  }    event void SubSend.sendDone(message_t* msg, error_t success) {    int8_t buf;    if (!call PacketAcknowledgements.wasAcked(msg) &&	call AMPacket.destination(msg) != TOS_BCAST_ADDR &&	fail_count < 5){      call RouteSelect.selectRoute(msg, 1);      if (call SubSend.send(call AMPacket.destination(msg),			    msg,			    call SubPacket.payloadLength(msg)) == SUCCESS) {	fail_count ++;      } else {	sendFailures++;      }    }        fail_count = 0;    buf = is_ours(msg);    if (buf != -1) { // Msg was from forwarding queue      FwdBufBusy[(uint8_t)buf] = 0;    } else {      signal Send.sendDone(msg, success);    }   }  command uint16_t RouteControl.getParent() {    return call RouteSelectCntl.getParent();  }  command uint8_t RouteControl.getQuality() {    return call RouteSelectCntl.getQuality();  }  command uint8_t RouteControl.getDepth() {    return call RouteSelectCntl.getDepth();  }  command uint8_t RouteControl.getOccupancy() {    uint16_t uiOutstanding = (uint16_t)iFwdBufTail - (uint16_t)iFwdBufHead;    uiOutstanding %= FWD_QUEUE_SIZE;    return (uint8_t)uiOutstanding;  }  command error_t RouteControl.setUpdateInterval(uint16_t Interval) {    return call RouteSelectCntl.setUpdateInterval(Interval);  }  command error_t RouteControl.manualUpdate() {    return call RouteSelectCntl.manualUpdate();  }  command uint16_t LqiRouteStats.getSendFailures() {    return sendFailures;  }  command void Packet.clear(message_t* msg) {      }  command void* Send.getPayload(message_t* m) {    return call Packet.getPayload(m, NULL);  }  command uint8_t Send.maxPayloadLength() {    return call Packet.maxPayloadLength();  }  command error_t Send.cancel(message_t* m) {    return FAIL;  }  command void* Receive.getPayload(message_t* m, uint8_t* len) {    return call Packet.getPayload(m, len);  }  command uint8_t Receive.payloadLength(message_t* m) {    return call Packet.payloadLength(m);  }    command uint8_t Packet.payloadLength(message_t* msg) {    return call SubPacket.payloadLength(msg) - sizeof(lqi_header_t);  }  command void Packet.setPayloadLength(message_t* msg, uint8_t len) {    call SubPacket.setPayloadLength(msg, len + sizeof(lqi_header_t));  }  command uint8_t Packet.maxPayloadLength() {    return (call SubPacket.maxPayloadLength() - sizeof(lqi_header_t));  }  command void* Packet.getPayload(message_t* msg, uint8_t* len) {    void* rval = call SubPacket.getPayload(msg, len);    *len -= sizeof(lqi_header_t);    rval += sizeof(lqi_header_t);    return rval;  }  command am_addr_t CollectionPacket.getOrigin(message_t* msg) {    lqi_header_t* hdr = getHeader(msg);    return hdr->originaddr;    }  command void CollectionPacket.setOrigin(message_t* msg, am_addr_t addr) {    lqi_header_t* hdr = getHeader(msg);    hdr->originaddr = addr;  }  command collection_id_t CollectionPacket.getType(message_t* msg) {    return 0;  }  command void CollectionPacket.setType(message_t* msg, collection_id_t id) {}    command uint8_t CollectionPacket.getSequenceNumber(message_t* msg) {    lqi_header_t* hdr = getHeader(msg);    return hdr->originseqno;  }    command void CollectionPacket.setSequenceNumber(message_t* msg, uint8_t seqno) {    lqi_header_t* hdr = getHeader(msg);    hdr->originseqno = seqno;  }    default event void Send.sendDone(message_t* pMsg, error_t success) {}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
大胆亚洲人体视频| 青青草97国产精品免费观看无弹窗版| 日本亚洲天堂网| 国产欧美日本一区二区三区| 国产成人免费在线观看| 国产精品一区专区| 国产成人av影院| 国产精品1024| 国产传媒日韩欧美成人| 国产成人综合精品三级| 狠狠色丁香九九婷婷综合五月| 久久激五月天综合精品| 国产精品亚洲第一区在线暖暖韩国| 美女网站一区二区| 国产精品一区在线观看乱码| 国产99久久久久| 色综合久久天天综合网| 日韩视频一区二区| 欧美唯美清纯偷拍| 国产精品伦一区| 亚洲国产日韩综合久久精品| 麻豆91在线看| 91婷婷韩国欧美一区二区| 在线观看网站黄不卡| 欧美精品一区二区在线观看| 亚洲人一二三区| 精品在线亚洲视频| 欧美在线视频全部完| 欧美xxxx在线观看| 亚洲电影你懂得| 不卡免费追剧大全电视剧网站| 国产精品一二三四五| 欧美色窝79yyyycom| 久久久精品黄色| 日韩精品免费专区| 成人av网站在线观看免费| 精品国产乱码久久久久久夜甘婷婷| 欧美国产日韩一二三区| 国产精品女上位| 国产高清精品网站| 精品久久久久久亚洲综合网| 国产精品看片你懂得| 日韩电影在线免费观看| 91麻豆成人久久精品二区三区| 精品久久久网站| 婷婷久久综合九色国产成人 | www国产成人| 亚洲第一激情av| 日韩在线一二三区| 91在线视频官网| 日韩欧美一区二区在线视频| 国产精品短视频| 国产一区二区电影| 精品国产制服丝袜高跟| 精品成人在线观看| 青椒成人免费视频| 欧美区视频在线观看| 一区二区三区不卡视频 | 久久久www成人免费毛片麻豆| 一区二区三区精品| 丁香天五香天堂综合| 欧美精品一区二区在线观看| **欧美大码日韩| 色av成人天堂桃色av| 久久一夜天堂av一区二区三区| 亚洲第一激情av| 91丨九色porny丨蝌蚪| 亚洲视频一区二区免费在线观看 | 欧美系列一区二区| 自拍视频在线观看一区二区| 国产精品一区二区果冻传媒| 精品国一区二区三区| 毛片av一区二区| 日韩精品一区二区三区四区| 亚洲精品高清视频在线观看| av成人免费在线观看| 一区二区久久久久久| 欧美日韩视频在线第一区| 亚洲成人免费视频| 日韩欧美在线综合网| 国产精品一线二线三线精华| 国产精品传媒在线| 日本道色综合久久| 蜜臀久久久久久久| 在线播放中文字幕一区| 五月综合激情网| 精品日韩欧美在线| 成人一区二区视频| 亚洲一区二区3| 这里只有精品免费| 国产精一区二区三区| 欧美激情综合在线| 久久不见久久见免费视频1| 精品国产伦一区二区三区观看方式| 极品销魂美女一区二区三区| 国产精品免费av| 欧美日韩国产成人在线91| 水蜜桃久久夜色精品一区的特点| 欧美一级日韩免费不卡| 国产在线麻豆精品观看| 亚洲靠逼com| 日韩三级.com| 91日韩在线专区| 亚洲嫩草精品久久| 久久亚洲欧美国产精品乐播 | 亚洲一区二区在线视频| 日韩免费高清电影| 成人av资源在线观看| 亚洲成av人影院| 精品免费日韩av| 激情图片小说一区| 亚洲色大成网站www久久九九| 欧美日韩另类一区| 国产精品亚洲人在线观看| 亚洲国产精品尤物yw在线观看| 久久99深爱久久99精品| 精品美女一区二区三区| 欧美日韩国产色站一区二区三区| 日韩电影在线一区二区| 依依成人综合视频| 国产欧美一区二区精品秋霞影院| 欧美精品三级在线观看| 波多野结衣亚洲| 免费成人美女在线观看.| 亚洲欧美欧美一区二区三区| 国产精品视频一二三区| 欧美精品一区二区蜜臀亚洲| 欧美日韩精品专区| 99久久er热在这里只有精品15| 中文字幕+乱码+中文字幕一区| 欧美一级片在线观看| 欧美天堂一区二区三区| 99久久精品免费观看| 国产久卡久卡久卡久卡视频精品| 亚洲一区在线观看网站| 亚洲人成在线观看一区二区| 国产亚洲女人久久久久毛片| 91精品国产综合久久蜜臀| 欧洲另类一二三四区| 99久久精品国产毛片| 国产99一区视频免费| 国产露脸91国语对白| 久久99久久99| 国产精品你懂的在线欣赏| 91精品国产入口在线| 正在播放亚洲一区| 欧美色涩在线第一页| 欧美视频在线播放| 欧美在线视频不卡| 91久久精品一区二区二区| 色综合天天综合网天天看片| www.欧美精品一二区| 91亚洲精华国产精华精华液| 国内精品自线一区二区三区视频| 亚洲综合精品自拍| 亚洲五月六月丁香激情| 亚洲成人免费影院| 免费av成人在线| 激情五月播播久久久精品| 久久99国产精品麻豆| 国产中文一区二区三区| 国模娜娜一区二区三区| 丰满放荡岳乱妇91ww| 国产一区在线看| 7777精品伊人久久久大香线蕉超级流畅| 在线不卡的av| 2欧美一区二区三区在线观看视频| 国产午夜三级一区二区三| 国产女人aaa级久久久级| 国产精品嫩草久久久久| 亚洲毛片av在线| 亚洲高清中文字幕| 日韩中文字幕1| 在线亚洲高清视频| 欧美日韩在线亚洲一区蜜芽| 日韩精品综合一本久道在线视频| 欧美一区二区三区爱爱| 久久久久久久久久久电影| 国产视频一区二区三区在线观看| 亚洲欧美视频在线观看视频| 亚洲观看高清完整版在线观看 | 色婷婷av一区二区| 在线视频国内自拍亚洲视频| 欧美综合一区二区三区| 日韩欧美国产综合一区| 国产精品久久久久久福利一牛影视| 久久久.com| 椎名由奈av一区二区三区| 亚洲高清不卡在线| 美女久久久精品| 91浏览器在线视频| 欧美精品久久99久久在免费线| 日本韩国欧美三级| 日韩中文字幕不卡| 欧美亚州韩日在线看免费版国语版| 精品成a人在线观看| 一区二区三区精品| 国产二区国产一区在线观看| 精品视频在线视频| 中日韩av电影|