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

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

?? lqiforwardingenginep.nc

?? tinyos-2.x.rar
?? NC
?? 第 1 頁 / 共 2 頁
字號:
					 call CollectionPacket.getOrigin(msg), 
					 call AMPacket.destination(msg));
	dbg("LQI", "%s: Send to %hu success.\n", __FUNCTION__, call AMPacket.destination(msg));
        fwdbusy = TRUE;
      }
    }
  }

  event message_t* SubReceive.receive(message_t* ONE msg, void* COUNT_NOK(len) payload, uint8_t len) {
    collection_id_t id = call CollectionPacket.getType(msg);
    payload += sizeof(lqi_header_t);
    len -= sizeof(lqi_header_t);

    call CollectionDebug.logEventMsg(NET_C_FE_RCV_MSG, 
				     call CollectionPacket.getSequenceNumber(msg), 
				     call CollectionPacket.getOrigin(msg), 
				     call AMPacket.destination(msg));
    if (call RootControl.isRoot()) {
      dbg("LQI,LQIDeliver", "LQI Root is receiving packet from node %hu @%s\n", getHeader(msg)->originaddr, sim_time_string());
      return signal Receive.receive[id](msg, payload, len);
    }
    else if (call AMPacket.destination(msg) != call AMPacket.address()) {
      return msg;
    }
    else if (signal Intercept.forward[id](msg, payload, len)) {
      dbg("LQI,LQIDeliver", "LQI fwd is forwarding packet from node %hu @%s\n", getHeader(msg)->originaddr, sim_time_string());
      return mForward(msg);
    }
    else {
      return msg;
    }
  }
  
  message_t* nextMsg() {
    int i;
    uint16_t inc = call Random.rand16() & 0xfff;
    for (i = 0; i < FWD_QUEUE_SIZE; i++) {
      int pindex = (i + inc) % FWD_QUEUE_SIZE;
      if (FwdBufBusy[pindex]) {
	return FwdBufList[pindex];
      }
    }
    return NULL;
  }
  
  event void SubSend.sendDone(message_t* msg, error_t success) {
    int8_t buf;
    message_t* nextToSend;
    if (!call PacketAcknowledgements.wasAcked(msg) &&
	call AMPacket.destination(msg) != TOS_BCAST_ADDR &&
	fwd_fail_count < MAX_RETRIES){
      call RouteSelect.selectRoute(msg, 1);
      call PacketAcknowledgements.requestAck(msg);
      if (call SubSend.send(call AMPacket.destination(msg),
			    msg,
			    call SubPacket.payloadLength(msg)) == SUCCESS) {
	dbg("LQI", "Packet not acked, retransmit @%s:\n\t%s\n", sim_time_string(), fields(msg));
        call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_WAITACK, 
					 call CollectionPacket.getSequenceNumber(msg), 
					 call CollectionPacket.getOrigin(msg), 
                                         call AMPacket.destination(msg));
	fwd_fail_count ++;
	return;
      } else {
	call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_FAIL, 
					 call CollectionPacket.getSequenceNumber(msg), 
					 call CollectionPacket.getOrigin(msg), 
                                         call AMPacket.destination(msg));
	dbg("LQI", "Packet not acked, retransmit fail @%s:\n\t%s\n", sim_time_string(), fields(msg));
	sendFailures++;
	return;
      }
    }
    else if (fwd_fail_count >= MAX_RETRIES) {
      call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_FAIL_ACK_FWD, 
				       call CollectionPacket.getSequenceNumber(msg), 
				       call CollectionPacket.getOrigin(msg), 
				       call AMPacket.destination(msg));
      dbg("LQI", "Packet failed:\t%s\n", fields(msg));
    }
    else if (call PacketAcknowledgements.wasAcked(msg)) {
      dbg("LQI", "Packet acked:\t%s\n", fields(msg));
      call CollectionDebug.logEventMsg(NET_C_FE_FWD_MSG, 
				       call CollectionPacket.getSequenceNumber(msg), 
				       call CollectionPacket.getOrigin(msg), 
				       call AMPacket.destination(msg));
    }
    
    fwd_fail_count = 0;
    buf = is_ours(msg);
    if (buf != -1) {
      FwdBufBusy[(uint8_t)buf] = 0;
    }
    
    nextToSend = nextMsg();
    fwdbusy = FALSE;
	  
    if (nextToSend != NULL) {
      forward(nextToSend);
    }
    
    dbg("LQI", "Packet not longer busy:\t%s\n", fields(msg));
  }

  event void SubSendMine.sendDone(message_t* msg, error_t success) {
    if (!call PacketAcknowledgements.wasAcked(msg) &&
	call AMPacket.destination(msg) != TOS_BCAST_ADDR &&
	my_fail_count < MAX_RETRIES){
      call RouteSelect.selectRoute(msg, 1);
      call PacketAcknowledgements.requestAck(msg);
      if (call SubSendMine.send(call AMPacket.destination(msg),
			    msg,
			    call SubPacket.payloadLength(msg)) == SUCCESS) {
	dbg("LQI", "Local packet not acked, retransmit (%hhu) @%s:\n\t%s\n", my_fail_count, sim_time_string(), fields(msg));
	call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_WAITACK, 
					 call CollectionPacket.getSequenceNumber(msg), 
					 call CollectionPacket.getOrigin(msg), 
                                         call AMPacket.destination(msg));
	my_fail_count ++;
	return;
      } else {
	call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_FAIL, 
					 call CollectionPacket.getSequenceNumber(msg), 
					 call CollectionPacket.getOrigin(msg), 
                                         call AMPacket.destination(msg));
	dbg("LQI", "Local packet not acked, retransmit fail @%s:\n\t%s\n", sim_time_string(), fields(msg));
	sendFailures++;
	signal Send.sendDone(msg, FAIL);
	return;
      }
    }
    else if (my_fail_count >= MAX_RETRIES) {
      call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_FAIL_ACK_SEND, 
				       call CollectionPacket.getSequenceNumber(msg), 
				       call CollectionPacket.getOrigin(msg), 
				       call AMPacket.destination(msg));
      dbg("LQI", "Local packet failed:\t%s\n", fields(msg));
    }
    else if (call PacketAcknowledgements.wasAcked(msg)) {
      dbg("LQI", "Local packet acked:\t%s\n", fields(msg));
      call CollectionDebug.logEventMsg(NET_C_FE_SENT_MSG, 
				       call CollectionPacket.getSequenceNumber(msg), 
				       call CollectionPacket.getOrigin(msg), 
				       call AMPacket.destination(msg));
    }

    my_fail_count = 0;
    dbg("LQI", "Local send done with success %d\n", success);
    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, uint8_t len) {
    return call Packet.getPayload(m, len);
  }

  command uint8_t Send.maxPayloadLength() {
    return call Packet.maxPayloadLength();
  }

  command error_t Send.cancel(message_t* m) {
    return FAIL;
  }

  
  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 + sizeof(lqi_header_t));
    if (rval != NULL) {
      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 getHeader(msg)->collectId;
  }

  command void CollectionPacket.setType(message_t* msg, collection_id_t id) {
    getHeader(msg)->collectId = 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) {}
 default event message_t* Snoop.receive[collection_id_t id](message_t* pMsg, void* payload, uint8_t len) {return pMsg;}
 default event message_t* Receive.receive[collection_id_t id](message_t* pMsg, void* payload, uint8_t len) {
   return pMsg;
 }
 default event bool Intercept.forward[collection_id_t id](message_t* pMsg, void* payload, uint8_t len) {
   return 1;
 }

  /* Default implementations for CollectionDebug calls.
   * These allow CollectionDebug not to be wired to anything if debugging
   * is not desired. */
    
  default command error_t CollectionDebug.logEvent(uint8_t type) {
    return SUCCESS;
  }
  default command error_t CollectionDebug.logEventSimple(uint8_t type, uint16_t arg) {
    return SUCCESS;
  }
  default command error_t CollectionDebug.logEventDbg(uint8_t type, uint16_t arg1, uint16_t arg2, uint16_t arg3) {
    return SUCCESS;
  }
  default command error_t CollectionDebug.logEventMsg(uint8_t type, uint16_t msg, am_addr_t origin, am_addr_t node) {
    return SUCCESS;
  }
  default command error_t CollectionDebug.logEventRoute(uint8_t type, am_addr_t parent, uint8_t hopcount, uint16_t metric) {
    return SUCCESS;
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一区二区三区在线| 91欧美一区二区| 亚洲欧美一区二区三区国产精品| 欧美优质美女网站| 国产成人无遮挡在线视频| 亚洲电影第三页| 中文字幕中文字幕在线一区 | 日韩高清电影一区| 国产精品视频一二| 精品国产一区二区在线观看| 欧美午夜精品理论片a级按摩| 岛国精品在线播放| 国产精品一区专区| 美女脱光内衣内裤视频久久网站 | 国产精品久久久爽爽爽麻豆色哟哟 | 日韩午夜激情电影| 在线视频观看一区| av一区二区久久| 国产一级精品在线| 精品亚洲国内自在自线福利| 视频一区视频二区在线观看| 悠悠色在线精品| 国产精品日韩精品欧美在线| 精品播放一区二区| 日韩一区二区影院| 欧美日韩一级黄| 91极品视觉盛宴| 97se亚洲国产综合自在线| 国产不卡视频在线观看| 韩国欧美国产一区| 久草中文综合在线| 久久99精品国产麻豆婷婷| 日韩福利视频导航| 日韩精品福利网| 人人超碰91尤物精品国产| 首页国产欧美久久| 奇米色777欧美一区二区| 日韩国产欧美视频| 男女性色大片免费观看一区二区| 丝袜a∨在线一区二区三区不卡| 性久久久久久久久久久久| 婷婷亚洲久悠悠色悠在线播放| 日韩精品一卡二卡三卡四卡无卡| 亚洲123区在线观看| 视频一区中文字幕| 久久国产精品99精品国产| 精品在线你懂的| 国产激情视频一区二区在线观看| 国产乱理伦片在线观看夜一区| 国产麻豆日韩欧美久久| 成人美女视频在线观看18| 99久久久无码国产精品| 欧美特级限制片免费在线观看| 欧美午夜免费电影| 日韩一区二区三区视频| 久久免费偷拍视频| 中文字幕在线一区免费| 亚洲精品成人精品456| 午夜一区二区三区在线观看| 日本aⅴ精品一区二区三区| 精品一区二区av| 99国内精品久久| 欧美日韩一区二区三区在线| 精品国产伦一区二区三区观看体验 | 色婷婷av一区二区| 欧美高清视频一二三区 | 日韩欧美一二区| 久久久久国产精品人| 亚洲欧洲日产国产综合网| 亚洲一区二区中文在线| 乱中年女人伦av一区二区| 高潮精品一区videoshd| 欧美性做爰猛烈叫床潮| 精品日产卡一卡二卡麻豆| 国产精品初高中害羞小美女文| 亚洲a一区二区| 国产精品白丝jk白祙喷水网站| 91福利国产成人精品照片| 日韩女同互慰一区二区| 中文字幕中文在线不卡住| 青青草国产精品亚洲专区无| 国产成人aaa| 欧美精品一二三| 国产精品视频你懂的| 男人操女人的视频在线观看欧美 | 亚洲精品在线免费播放| 亚洲特级片在线| 国内精品自线一区二区三区视频| 99国产精品视频免费观看| 日韩一区二区麻豆国产| 国产精品女主播av| 久久99精品国产麻豆不卡| 一本色道久久加勒比精品| 欧美精品一区二区高清在线观看| 亚洲精品成人a在线观看| 国产传媒欧美日韩成人| 欧美日韩成人综合| 日韩伦理av电影| 国产精品自拍三区| 欧美一区二区三区白人| 亚洲精品欧美二区三区中文字幕| 激情欧美一区二区| 欧美精品v国产精品v日韩精品 | 欧美精选一区二区| 国产精品伦一区| 国产美女视频91| 欧美日韩美女一区二区| 亚洲三级视频在线观看| 国产精品一区不卡| 日韩欧美国产一区二区在线播放| 一区二区成人在线视频| 成人天堂资源www在线| 欧美电视剧免费观看| 午夜精品免费在线| 欧美在线播放高清精品| 亚洲三级电影全部在线观看高清| 国产不卡在线视频| 国产午夜精品一区二区三区嫩草 | 日韩电影一二三区| 欧美在线免费播放| 亚洲精品午夜久久久| www.性欧美| 国产精品视频第一区| 处破女av一区二区| 日本一区二区成人在线| 国产精品一区二区在线看| 日韩欧美色电影| 美女视频黄 久久| 欧美一级黄色片| 奇米色一区二区| 日韩色视频在线观看| 日本亚洲三级在线| 91麻豆精品91久久久久久清纯 | 亚洲一区二区欧美激情| 色av一区二区| 亚洲综合清纯丝袜自拍| 在线亚洲欧美专区二区| 亚洲精品国产成人久久av盗摄| 一本到一区二区三区| 一区二区三区在线影院| 在线欧美小视频| 三级欧美在线一区| 日韩午夜激情视频| 国产成人三级在线观看| 国产精品久久久久一区二区三区共| 成人午夜免费电影| 一区二区三区欧美日| 欧美日韩一区二区电影| 麻豆久久一区二区| 国产亚洲欧美日韩日本| av中文字幕亚洲| 亚洲国产精品麻豆| 日韩一区二区电影网| 国产一区二区三区电影在线观看 | 成人精品免费视频| 亚洲伦理在线免费看| 欧美日韩成人高清| 国内精品久久久久影院一蜜桃| 亚洲国产精品成人综合| 色综合天天性综合| 蜜臀99久久精品久久久久久软件| 久久综合国产精品| av激情综合网| 天天影视涩香欲综合网| 欧美精品一区二| 色噜噜久久综合| 蜜臀av一级做a爰片久久| 国产精品视频一二| 欧美日本精品一区二区三区| 精品在线观看免费| **欧美大码日韩| 欧美一区二区三区免费大片| 成人免费福利片| 日本中文一区二区三区| 欧美韩国日本综合| 欧美日韩三级一区| 国产福利91精品一区| 亚洲第一狼人社区| 久久久精品蜜桃| 欧美日韩久久不卡| 国产91丝袜在线18| 视频一区二区三区中文字幕| 国产精品午夜春色av| 欧美一区二区三区四区在线观看| 成人av网站大全| 欧美aaaaaa午夜精品| 亚洲乱码国产乱码精品精可以看 | 亚洲另类色综合网站| 欧美精品一区二区三区在线| 色素色在线综合| 国产乱码精品一品二品| 亚洲成在人线在线播放| 欧美激情资源网| 日韩视频免费观看高清完整版 | 日韩女优电影在线观看| 色天使色偷偷av一区二区| 国产精品一区二区x88av| 日本在线播放一区二区三区| 玉足女爽爽91| 亚洲天天做日日做天天谢日日欢|