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

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

?? shr.h

?? 大名鼎鼎的傳感器網絡仿真實驗室平臺SENSE
?? H
?? 第 1 頁 / 共 4 頁
字號:
  newPkt->hdr.src_addr = MyEtherAddr;  newPkt->hdr.pre_addr = MyEtherAddr;  newPkt->hdr.dst_addr = dst;  newPkt->hdr.cur_addr = MyEtherAddr;  newPkt->hdr.newSeqNumber = true;  return newPkt;}template <class PLD>void *SHR<PLD>::createReplyPkt(  ether_addr_t	src,  unsigned int	expectedHop){  packet_t	*newPkt = (packet_t *) createBasicPkt();  newPkt->hdr.type = REPLY;  newPkt->hdr.size = REPLY_SIZE;  newPkt->hdr.expected_hop = expectedHop;  newPkt->hdr.max_hop = expectedHop + AdditionalHop;  newPkt->hdr.src_addr = MyEtherAddr;  newPkt->hdr.dst_addr = src;  newPkt->hdr.cur_addr = MyEtherAddr;  newPkt->hdr.pre_addr = MyEtherAddr;  newPkt->hdr.newSeqNumber = true;  return newPkt;}template <class PLD>void *SHR<PLD>::createAckPkt(  ether_addr_t	src_addr,  ether_addr_t	cur_addr,  ether_addr_t	pre_addr,  unsigned int	seq_number,  simtime_t	delay,  bool		fromDest){  packet_t	*newPkt = (packet_t *) createBasicPkt();  newPkt->hdr.type = ACK;  newPkt->hdr.ackType = fromDest == true ? AT_Destination : AT_Intermediate;  newPkt->hdr.size = ACK_SIZE;  newPkt->hdr.src_addr = src_addr;  newPkt->hdr.cur_addr = cur_addr;  newPkt->hdr.pre_addr = pre_addr;  newPkt->hdr.seq_number = seq_number;  newPkt->hdr.delay = delay;  newPkt->hdr.max_hop = 0;  return newPkt;}//mwl: transfer changes here to SSRv02template <class PLD>void *SHR<PLD>::createHelloPkt(  ether_addr_t	destAddr,  int		hopCount){  packet_t	*newPkt = (packet_t *) createBasicPkt();  newPkt->hdr.type = HELLO;  newPkt->hdr.size = HELLO_SIZE;  newPkt->hdr.expected_hop = 1;  newPkt->hdr.src_addr = MyEtherAddr;  newPkt->hdr.dst_addr = destAddr;  newPkt->hdr.cur_addr = MyEtherAddr;  newPkt->hdr.pre_addr = MyEtherAddr;  newPkt->hdr.helloData = hopCount;  newPkt->hdr.delay = Random( ForwardDelay);  newPkt->hdr.newSeqNumber = true;  return newPkt;}#define	makeiS	char iS[81]; for( int i = indent-1; i >= 0; i--) iS[i] = ' '; iS[indent] = 0#define	pIndent	fputs( iS, fp)template <class PLD>void SHR<PLD>::seq_number_t::dumpStatic(  FILE		*fp,  int		indent,  int		offset) const{  indent += offset;  makeiS;  pIndent;  fprintf( fp, "maxCounter %d\n", maxCounter);  return;}template <class PLD>void SHR<PLD>::seq_number_t::dump(  FILE		*fp,  int		dest,  int		indent,  int		offset) const{  makeiS;  pIndent;  fprintf( fp, "%3d { ", dest);  switch( state)  {    case Initial:      fprintf( fp, "currentHC 0, state Initial");      break;    case Steady:      fprintf( fp, "currentHC %d, state Steady", currentHC);      break;    case Changing:      fprintf( fp, "currentHC %d, state Changing, pendingHC %d, updateCtr %d",	       currentHC, pendingHC, updateCtr);      break;  }  fprintf( fp, " }\n");  return;}template <class PLD>void SHR<PLD>::dumpStatic(  FILE		*fp,  int		indent,  int		offset) const{  indent += offset;  makeiS;  pIndent;  fprintf( fp, "backOff %s, continuous %s, routeRepair %s,\n",	   backOff == SHRBackOff_SSR ? "SSR" :	   backOff == SHRBackOff_Incorrect ? "Incorrect" : "SHR",	   continuousBackOff == true ? "true" : "false",	   RouteRepairEnabled == true ? "true" : "false");  if( continuousBackOff == false)  {    pIndent;    fprintf( fp, "slotWidth %f, transitionTime %f,\n", slotWidth, transitionTime);  }  pIndent;  fprintf( fp, "hopCounts %d\n", HCArraySize);  return;}template <class PLD>void SHR<PLD>::dumpCacheStatic(  FILE		*fp,  int		indent,  int		offset) const{  m_seq_cache.begin()->second.dumpStatic( fp, indent, offset);  return;}template <class PLD>void SHR<PLD>::dump(  FILE		*fp,  int		indent,  int		offset) const{//  cache_t::const_iterator	iter;  indent += offset;  makeiS;  pIndent;  fprintf( fp, "addr %d, seqNumber %d, ForwardDelay %f,\n",	   (int) MyEtherAddr, m_seq_number, ForwardDelay);  pIndent;  fprintf( fp, "RXThresh %f, AckWindow %f, MaxResend %d, TimeToLive %d,\n",	   RXThresh, AckWindow, MaxResend, TimeToLive);  pIndent;  fprintf( fp, "AdditionalHop %d, TotalDelay %f, TotalSamples %d, "	   "TotalHop %d,\n", AdditionalHop, TotalDelay, TotalSamples,TotalHop);  pIndent;  fprintf( fp, "SentPackets %d, RecvPackets %d, RecvUniPackets %d, "	   "RecvDataPackets %d,\n", SentPackets, RecvPackets, RecvUniPackets,	   RecvDataPackets);  pIndent;  fprintf( fp, "SentSuboptimal %d, CanceledPackets %d, CanceledSuboptimal %d\n",	   SentSuboptimal, CanceledPackets, CanceledSuboptimal);  return;}template <class PLD>void SHR<PLD>::dumpCostTable(  FILE		*fp,  int		indent,  int		offset) const{  cache_t::const_iterator	iter;  indent += offset;  makeiS;//  pIndent;  for( iter = m_seq_cache.begin(); iter != m_seq_cache.end(); iter++)    iter->second.dump( fp, (int) iter->first, indent+offset, offset);  return;}template <class PLD>void SHR<PLD>::setSlotWidth(  double	sw){  slotWidth = sw;  return;}template <class PLD>double SHR<PLD>::getSlotWidth(){  return slotWidth;}template <class PLD>void SHR<PLD>::setTransitionTime(  double	tt){  transitionTime = tt;  return;}template <class PLD>double SHR<PLD>::getTransitionTime(){  return transitionTime;}template <class PLD>void SHR<PLD>::setBackOff(  SHRBackOff	bot){  backOff = bot;  return;}template <class PLD>SHRBackOff SHR<PLD>::getBackOff(){  return backOff;}template <class PLD>void SHR<PLD>::setContinuousBackOff(  bool		flag){  continuousBackOff = flag;  return;}template <class PLD>bool SHR<PLD>::getContinuousBackOff(){  return continuousBackOff;}template <class PLD>void SHR<PLD>::setRouteRepair(  int	numSteps){  if( numSteps == 0)    RouteRepairEnabled = false;  else  {    RouteRepairEnabled = true;    seq_number_t::setCounter( numSteps);  }  return;}template <class PLD>SHR<PLD>::SHR(){  connect ackTimer.to_component, AckTimer;  connect pktDelayTimer.to_component, PktDelayTimer;  connect transitionTimer.to_component, TransitionTimer;  connect helloTimer.to_component, HelloTimer;  return;}template <class PLD>SHR<PLD>::~SHR(){  return;}template <class PLD>void SHR<PLD>::Start() {  if( doubleMsgPrinted == false)  {    printf( "Timeout multiplier: %d\n", MWLTimeoutMultiplier);#ifdef	MWL_DOUBLE_DELAY    printf( "Doubling Lambda on retries\n");#else	// MWL_DOUBLE_DELAY    printf( "Lambda constant on retries\n");#endif	// MWL_DOUBLE_DELAY    doubleMsgPrinted = true;  }  m_mac_busy=false;  m_seq_number = (int) MyEtherAddr << 16;  m_seq_cache.insert(make_pair(MyEtherAddr,seq_number_t()));  SentPackets=RecvPackets=RecvUniPackets=0l;  SentSuboptimal = 0;  CanceledPackets = 0;  CanceledSuboptimal = 0;  TotalDelay=0.0;  TotalHop=0;  TotalSamples=0;  RecvDataPackets=0;  for( int i = HCArraySize-1; i >= 0; i--)    HopCounts[i] = 0;}template <class PLD>void SHR<PLD>::clearStats(){  SentPackets = 0;  SentSuboptimal = 0;  CanceledPackets = 0;  CanceledSuboptimal = 0;  RecvPackets = 0;  RecvUniPackets = 0;  RecvDataPackets = 0;  TotalDelay = 0;  TotalSamples = 0;  TotalHop = 0;  for( int i = HCArraySize-1; i >= 0; i--)    HopCounts[ i] = 0;  return;}template <class PLD>void SHR<PLD>::Stop() {  //printf("%s: sent %d, recv %d\n",GetName(),SentPackets,RecvPackets);  //printf("%s: %f \n", GetName(), (double)RecvPackets/RecvUniPackets);  return;}template <class PLD>void SHR<PLD>::from_transport(  payload_t	&pld,  ether_addr_t	&dst,  unsigned int	size){  if( size > 1510)    printf( "ft: ea%3d; Oversize packet (%d) to %3d\n", (int) MyEtherAddr,	    size, (int) dst);  //create the data packet  packet_t	*pkt = (packet_t *) createDataPkt( pld, dst, size);  Printf((DumpPackets, "%d SHR: %d->%d *%s\n", (int) MyEtherAddr,	  (int) MyEtherAddr, (int) dst, pkt->dump().c_str()));  shrPrint( ("ft: %3d->%3d *%s @ %f ea %3d\n", (int) MyEtherAddr, (int) dst,	     pkt->dump().c_str(), SimTime(), (int) MyEtherAddr));  // look up destination in the cost table  cache_t::iterator iter = m_seq_cache.find(dst);  // If destination wasn't found, send a DREQ packet and put the data packet  // on the queue of packets to be sent.  if( iter == m_seq_cache.end())  {    // the destination is not in the active node table    // must send a REQUEST packet first;    packet_t	*rp = (packet_t *) createRequestPkt( dst);    Printf( (DumpPackets, "%d SHR: %d->%d %s\n", (int) MyEtherAddr,	    (int) MyEtherAddr, (int) dst, rp->dump().c_str()));    SendPacket( rp);    m_data_buffer.push_back( pkt);  }  // otherwise, set the expected and maximum hops from the cost table  else  {    // The SSR/SHR specs call for decrementing expected_hop before transmitting.    // In SENSE, >1 nodes reference same packet in memory, so can't decrement    pkt->hdr.expected_hop = (*iter).second.hopCount();    pkt->hdr.max_hop = pkt->hdr.expected_hop + AdditionalHop;    pkt->hdr.delay = 0;		// send without delay    SendPacket( pkt);  }}template <class PLD>void SHR<PLD>::AddToSendQueue(  packet_t	*pkt){  packet_queue_t::iterator	iter = m_send_queue.begin();  while( iter != m_send_queue.end() && (*iter)->hdr.delay <= pkt->hdr.delay)    iter++;  m_send_queue.insert( iter, pkt);  return;}/*** Sending a packet from the network (SHR) layer to the MAC layer consists of** calling four methods in order:** 1. SendPacket: Packets without a delay are forwarded to AssignSeqNumber.**    Packets with a delay are set aside until the delay has elapsed. The timer**    routine, PktDelayTimer, forwards the packet to AssignSeqNumber. Because**    this method may reorder the packets, sequence numbers should not be**    assigned yet.** 2. AssignSeqNumber: The packets can no longer be reordered. If applicable,**    assign a sequence number to the packet. Either forward the packet to**    SendToMac (MAC is idle) or put it on the send queue. from_mac_ack will**    remove packets from the send queue and forward them to SendToMac.** 3. SendToMac: If the simulation does not include a transition time, forward**    the packet to to_mac. Otherwise, start the transition timer and let its**    routine, TransitionTimer, forward the packet to to_mac** 4. to_mac: The outport that connects the network and MAC layers. This**    function should always be called with a delay of 0.*//*** Schedule a packet for transmission.** If the packet doesn't have a delay, send the packet to the MAC layer.** Otherwise, add the packet to the list of delayed packets and schedule an** event for the end of the packet's delay.*/template <class PLD>void SHR<PLD>::SendPacket(  packet_t	*pkt){  if( pkt->hdr.delay == 0.0)    AssignSeqNumber( pkt);  else  {    shrPrint( ( "SPT: ea %3d; 0x%08X; sn%08X; %f + %f seconds\n",	    (int) MyEtherAddr, (int) pkt, pkt->hdr.seq_number, SimTime(),	    pkt->hdr.delay));    // add packet to delay list    m_delay_list.push_back( pkt);    // schedule event    pkt->hdr.pktDelayIndex = pktDelayTimer.Set( pkt, SimTime() + pkt->hdr.delay);  }  return;}/*** This method is called when the delay for a packet has expired.** Remove the packet from the list and send it to the MAC layer.*/template <class PLD>void SHR<PLD>::PktDelayTimer(  packet_t	*pkt,  unsigned int){  shrPrint( ( "PDT: ea %3d; 0x%08X; sn%08X; %f\n", (int) MyEtherAddr,	      (unsigned int) pkt, pkt->hdr.seq_number, SimTime()));  m_delay_list.remove( pkt);  AssignSeqNumber( pkt);  return;}/*** High level method to send a packet to the MAC layer.** Assign a new sequence number if one is needed.** If the MAC is idle, send the packet. Otherwise, put the packet on the send** queue.*/template <class PLD>void SHR<PLD>::AssignSeqNumber(  packet_t	*pkt){  pkt->hdr.canceled = false;  if( pkt->hdr.newSeqNumber == true && pkt->hdr.src_addr == MyEtherAddr)  {    m_seq_number++;    m_seq_cache[ MyEtherAddr].check( m_seq_number);    pkt->hdr.seq_number = m_seq_number;#ifdef VISUAL_ROUTE    // this printf is used by the compareHC and checkHC utilities

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色产综合色产在线视频| 国产日韩av一区二区| 国产精品国产三级国产aⅴ中文| 丝瓜av网站精品一区二区| aaa欧美日韩| 国产亚洲综合在线| 美女精品一区二区| 欧美日韩成人一区二区| 中文字幕色av一区二区三区| 麻豆成人91精品二区三区| 欧美日韩高清在线播放| 中文字幕一区二区三| 国产91在线看| 久久中文娱乐网| 青青草国产精品97视觉盛宴 | 一区在线观看视频| 韩国女主播成人在线观看| 91.com视频| 亚洲一级二级三级| 一本久道久久综合中文字幕 | 欧美精品一区二区三区视频| 亚洲18女电影在线观看| 日本高清不卡在线观看| 国产精品久久久久7777按摩 | 天堂蜜桃91精品| 欧美中文字幕一区二区三区亚洲 | 久久综合色鬼综合色| 秋霞电影一区二区| 欧美一区二区三区公司| 亚洲成人久久影院| 欧美人狂配大交3d怪物一区| 亚洲国产一区二区a毛片| 日本韩国一区二区三区视频| 亚洲精品成人精品456| 99精品视频中文字幕| 中文字幕一区二| 99精品视频在线播放观看| 最近日韩中文字幕| 不卡的av在线| 亚洲柠檬福利资源导航| 色爱区综合激月婷婷| 一区二区高清视频在线观看| 91官网在线免费观看| 亚洲香肠在线观看| 欧美精三区欧美精三区| 日韩电影在线免费观看| 日韩欧美一区二区久久婷婷| 精品一区二区三区欧美| 久久亚洲春色中文字幕久久久| 国产精品主播直播| 国产精品久久久久久久久久久免费看 | 中文字幕国产精品一区二区| www.亚洲免费av| 玉足女爽爽91| 欧美日韩国产经典色站一区二区三区| 石原莉奈在线亚洲三区| 日韩免费视频一区二区| 国产精品996| 亚洲免费在线观看视频| 欧美性猛交xxxx黑人交| 日本欧美久久久久免费播放网| 日韩欧美一级特黄在线播放| 国产精品一线二线三线| 亚洲视频一区在线观看| 欧美日韩一区不卡| 韩国欧美国产1区| 中文字幕一区二区不卡| 欧美日本在线播放| 精品一区二区在线视频| 国产精品久久久久久亚洲伦 | 色综合久久66| 视频在线观看一区| 久久久亚洲精品石原莉奈| 91在线一区二区| 日本女优在线视频一区二区| 久久久久成人黄色影片| 色综合久久综合网欧美综合网| 日韩中文字幕不卡| 精品盗摄一区二区三区| a在线欧美一区| 婷婷丁香久久五月婷婷| 久久伊人中文字幕| 色一区在线观看| 狠狠网亚洲精品| 亚洲乱码国产乱码精品精的特点| 欧美一级xxx| 不卡av在线免费观看| 日韩电影在线免费| 国产精品国产三级国产普通话三级| 欧美日韩国产乱码电影| 成人午夜在线播放| 丝袜美腿一区二区三区| 国产精品久久看| 日韩一级大片在线| 91免费国产视频网站| 黑人巨大精品欧美黑白配亚洲| 亚洲美女少妇撒尿| 精品国产乱码久久久久久蜜臀 | 国产一区二区调教| 亚洲综合一区在线| 国产亚洲欧美日韩俺去了| 欧美三级资源在线| 成人免费黄色在线| 奇米777欧美一区二区| 亚洲人成亚洲人成在线观看图片| 欧美xxxxxxxx| 欧美性大战久久久| 成人亚洲一区二区一| 免费成人在线视频观看| 亚洲伦理在线免费看| 久久精品一区二区三区四区| 欧美美女黄视频| 色婷婷综合久久久久中文 | 亚洲大片精品永久免费| 日本一区二区不卡视频| 精品伦理精品一区| 欧美二区乱c少妇| 91免费视频观看| 北条麻妃一区二区三区| 国产精品一二三区| 麻豆91精品91久久久的内涵| 亚洲愉拍自拍另类高清精品| 国产精品久久久久久户外露出| www一区二区| 国产91精品露脸国语对白| 麻豆免费精品视频| 午夜国产不卡在线观看视频| 中文字幕一区二| 国产精品视频在线看| www国产亚洲精品久久麻豆| 日韩情涩欧美日韩视频| 欧美日本乱大交xxxxx| 91电影在线观看| 91社区在线播放| 成人福利视频网站| 国产成人高清视频| 韩国一区二区在线观看| 久久精品99国产精品| 蜜桃视频一区二区三区在线观看| 天天操天天干天天综合网| 亚洲午夜精品17c| 一区二区成人在线视频| 一区二区三区美女视频| 亚洲激情第一区| 一区二区欧美精品| 亚洲激情欧美激情| 一区二区三区中文字幕精品精品| 亚洲欧洲三级电影| 中文字幕一区二区5566日韩| 国产精品久久久久久一区二区三区 | 99精品在线免费| 91天堂素人约啪| 色婷婷久久久综合中文字幕| 色综合久久久久久久久久久| 91免费观看视频| 色吊一区二区三区| 欧美视频完全免费看| 欧美日韩一区视频| 91精品国产日韩91久久久久久| 日韩一区二区三区精品视频 | 91老司机福利 在线| 色域天天综合网| 欧美视频一区二区在线观看| 欧美日韩国产综合一区二区三区 | av一区二区不卡| 91蜜桃免费观看视频| 在线一区二区三区四区五区| 欧洲亚洲精品在线| 在线播放亚洲一区| 精品国产一区二区三区久久影院 | 国产精品久久看| 亚洲老妇xxxxxx| 亚洲国产aⅴ成人精品无吗| 五月天欧美精品| 精品一区二区在线播放| 国产91精品一区二区麻豆亚洲| av中文字幕亚洲| 欧美日韩一区成人| 欧美大片一区二区三区| 国产日韩欧美综合在线| ㊣最新国产の精品bt伙计久久| 一区二区三区欧美日韩| 日韩av一区二| 懂色av一区二区三区免费看| 91丨九色丨尤物| 69堂亚洲精品首页| 欧美精品一区二区蜜臀亚洲| 国产精品久久久久影视| 午夜在线成人av| 国产一区二区不卡在线 | 久久99精品久久久久婷婷| 国产成人亚洲综合色影视| 91免费观看视频| 欧美一区二区视频在线观看2022| 久久精品日产第一区二区三区高清版| 亚洲另类一区二区| 精品亚洲国内自在自线福利| av福利精品导航| 91精品中文字幕一区二区三区| 久久精品日韩一区二区三区|