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

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

?? mac-sensor.cc

?? 這個市一個ns環境下的leach算法!大家可以多下在啊!我想要一個matlab環境下的概算法!
?? CC
字號:
/****************************************************************** * This code was developed as part of the MIT uAMPS project.      * ******************************************************************/#ifdef MIT_uAMPS#include "mac-sensor.h"/* ======================================================================   Macros   ====================================================================== */#define SET_RX_STATE(x)                \{                                      \  rx_state_ = (x);                    \}#define SET_TX_STATE(x)                \{                                      \  tx_state_ = (x);                    \}/* ======================================================================   TCL Hooks for the simulator   ====================================================================== */static class MacSensorClass : public TclClass {public:  MacSensorClass() : TclClass("Mac/Sensor") {}  TclObject* create(int, const char*const*) {    return (new MacSensor());  }} class_macSensor;/* ======================================================================   Mac Class Functions   ====================================================================== */MacSensor::MacSensor() : Mac(), mhDefer_(this, 0.005), mhTx_(this),   mhRx_(this), code_(0), node_num_(0), ss_(0), CHheard_(0), myADVnum_(0){  tx_state_ = rx_state_ = MAC_IDLE;  sta_seqno_ = 1;  cache_ = 0;  cache_node_count_ = 0;  bind("code_",&code_);  bind("node_num_",&node_num_);  bind("ss_",&ss_);  bind("CHheard_",&CHheard_);  bind("myADVnum_",&myADVnum_);}intMacSensor::command(int argc, const char*const* argv){  if (argc == 3) {    if (strcmp(argv[1], "log-target") == 0) {      logtarget_ = (NsObject*) TclObject::lookup(argv[2]);      if(logtarget_ == 0)        return TCL_ERROR;      return TCL_OK;    }    if(strcmp(argv[1], "nodes") == 0) {      if(cache_) return TCL_ERROR;      cache_node_count_ = atoi(argv[2]) + 1;      cache_ = new Host[cache_node_count_ + 1];      printf("Asserting the Cache is present\n");       assert(cache_);      bzero(cache_, sizeof(Host) * (cache_node_count_+1 ));      return TCL_OK;          }  }  return Mac::command(argc, argv);}/* ======================================================================   Misc Routines   ====================================================================== */inline intMacSensor::is_idle(){  if(rx_state_ != MAC_IDLE)    return 0;  if(tx_state_ != MAC_IDLE)    return 0;  return 1;}/* ======================================================================   Outgoing Packet Routines   ====================================================================== */voidMacSensor::send(Packet *p, Handler *h){  struct hdr_macSensor* dh = HDR_MACSensor(p);  if (h != 0)    callback_ = h;  hdr_rca *rca_hdr = HDR_RCA(p);  int code = rca_hdr->get_code();  /*    * Perform carrier sence.  If the channel is busy, backoff.    */  if(!is_idle() || netif_->csEnd(code) > Scheduler::instance().clock()) {    /*    printf("CSMA: Node %d defering %s for time %f: code = %d ...\n",             rca_hdr->rca_src(),rca_hdr->meta(),TX_Time(p),code);    fflush(stdout);    */    //mhDefer_.start(p, Random::uniform(TX_Time(p)));    mhDefer_.start(p, TX_Time(p));    return;  }  pktTx_ = p;  /*   * Determine how many ADV messages have been heard to determine   * spreading code to use for each cluster.   */  myADVnum_ = CHheard_;  /*   * Assign the data packet a sequence number.   */  dh->dh_scontrol = sta_seqno_++;  SET_TX_STATE(MAC_SEND);                /*    * Start a timer that expires when the packet transmission is complete.   */  mhTx_.start(p->copy(), TX_Time(p));  downtarget_->recv(pktTx_, this);          /*  struct hdr_mac *mh = HDR_MAC(pktTx_);  printf("%d sending data to %d at time %f\n", mh->macSA(), mh->macDA(),  Scheduler::instance().clock());  fflush(stdout);  */  if(callback_) {    Handler *h = callback_;    callback_ = 0;    h->handle((Event*) 0);  } }/* ======================================================================   Incoming Packet Routines   ====================================================================== */voidMacSensor::recv(Packet *p, Handler *h){  struct hdr_cmn *hdr = HDR_CMN(p);  /*   * Sanity Check   */  assert(initialized());  /*   * Handle outgoing packets.   */  if(hdr->direction() == -1) {    /*      * Update the MAC header      */    hdr->size() += ETHER_HDR_LEN;    send(p, h);    return;  }  /*   * Handle incoming packets.   * We just received the 1st bit of a packet on the interface.   */  hdr_rca *rca_hdr = HDR_RCA(p);  if (rca_hdr->msg_type() == ADV_TYPE)     CHheard_++;  /*   * If I am not receiving the code of the incoming packet, drop it.   */  int new_code = rca_hdr->get_code();  if (new_code != code_) {      /*      printf("In MAC_IDLE %d: %d is not a code I am currently receiving               %d.\n", node_num_, new_code, code_);      fflush(stdout);      */        Packet::free(p);      return;  }  /*   *  If the interface is currently in transmit mode, then   *  it probably won't even see this packet.  However, the   *  "air" around me is BUSY so I need to let the packet   *  proceed.  Just set the error flag in the common header   *  so that the packet gets thrown away.   */  if(tx_state_ && hdr->error() == 0) {    printf("Warning! %d: Cannot receive while transmitting.\n",node_num_);    fflush(stdout);    hdr->error() = 1;  }  /*    * If more than ss_ simultaneous transmissions occur, there is a   * collision and I cannot receive the packet.   */   int num_codes = 0;  for (int i = 0; i < 1000; i++)     if (netif_->csEnd(i) > Scheduler::instance().clock())       num_codes++;  if (num_codes > ss_) {    printf("I can hear %d different packets ==> collision.\n", num_codes);    fflush(stdout);    /******* Added by Jason Pamplin to fix bug where rx_state_ was not       set prior to calling a collision.  If a collission has occurred       then we should se the packet type to be MAC_COLL *******/    //SET_RX_STATE(MAC_COLL);    collision(p);    return;  }  if(rx_state_ == MAC_IDLE) {    SET_RX_STATE(MAC_RECV);    pktRx_ = p;    /*     * Schedule the reception of this packet, in txtime seconds.     */    double rtime = TX_Time(p);    assert(rtime >= 0.0);    mhRx_.start(p, rtime);  }  else {    /*     *  If the power of the incoming packet is smaller than the     *  power of the packet currently being received by at least     *  the capture threshold, then we ignore the new packet.     */      if(hdr->error() == 0) {      hdr->error() = 1;    }     if(pktRx_->txinfo_.RxPr / p->txinfo_.RxPr >= p->txinfo_.CPThresh) {        capture(p);     } else {      collision(p);     }  }}voidMacSensor::capture(Packet *p){  printf("CAPTURE!!!!\n");  fflush(stdout);  Packet::free(p);  //p = 0;}voidMacSensor::collision(Packet *p){  printf("COLLISION!!!! rx_state_ = %d\n", rx_state_);  fflush(stdout);  switch(rx_state_) {  case MAC_RECV:    SET_RX_STATE(MAC_COLL);    /* fall through */  case MAC_COLL:    assert(pktRx_);    //assert(mhRecv_.busy);    /*     *  Since a collision has occurred, figure out     *  which packet that caused the collision will     *  "last" the longest.  Make this packet,     *  pktRx_ and reset the Recv Timer if necessary.     */    if(TX_Time(p) > mhRx_.expire()) {      mhRx_.stop(pktRx_);      Packet::free(pktRx_);      pktRx_ = p;      mhRx_.start(pktRx_,TX_Time(pktRx_));    }    else {      Packet::free(p);    }    break;  /*********Jason A. Pamplin     Adding this code to prevent failure if a collision registers   when the node is idle anyway.  In this case, it should do nothing    just throw the packet away.***/  case MAC_IDLE:    Packet::free(p);   break;   default:    assert(0);  }}voidMacSensor::recvDATA(Packet *p){  /*   * Adjust the MAC packet size - ie, strip off the mac header.   */  struct hdr_cmn *ch = HDR_CMN(p);  ch->size() -= ETHER_HDR_LEN;  ch->num_forwards() += 1;  /*   *  Pass the packet up to the link-layer.   */  uptarget_->recv(p, (Handler*) 0);}voidMacSensor::deferHandler(Event *e){  /*  hdr_rca *rca_hdr = HDR_RCA((Packet *)e);  printf("Node %d trying to send %s again at time %f.\n", node_num_,           rca_hdr->meta(), Scheduler::instance().clock());  fflush(stdout);  */  /*   * After timer expires, try to transmit the packet (i.e., perform   * carrier sense again to see if the channel is now free).   */  send((Packet *)e,(Handler*) 0);}voidMacSensor::recvHandler(Event *e){  if (rx_state_ == MAC_COLL) {    struct hdr_cmn *ch = HDR_CMN(pktRx_);    ch->error() = 1;  }  SET_RX_STATE(MAC_IDLE);  /*   * If this packet was unicast and not intended for me, drop it.   */     struct hdr_mac *mh = HDR_MAC(pktRx_);  int dst = mh->macDA();  if (dst != index_ && (u_int32_t) dst != MAC_BROADCAST)       Packet::free(pktRx_);  else     recvDATA(pktRx_);}voidMacSensor::sendHandler(Event *e){  /*    * Once transmission is complete, drop the packet.   */  SET_TX_STATE(MAC_IDLE);  Packet::free((Packet *)e);}#endif /* MIT_uAMPS */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕电影一区| 国产精品无遮挡| 在线视频欧美精品| 欧美精品黑人性xxxx| 欧美va天堂va视频va在线| 国产日韩影视精品| 亚洲一区二区影院| 韩国女主播成人在线观看| 日本韩国欧美国产| 日韩视频在线永久播放| 中文字幕一区在线观看视频| 偷拍亚洲欧洲综合| k8久久久一区二区三区| 日韩欧美一区在线观看| 亚洲色图另类专区| 久久电影国产免费久久电影 | 欧美va亚洲va在线观看蝴蝶网| 欧美一级片在线看| 综合久久综合久久| 精品亚洲成av人在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美日韩高清一区| 亚洲免费色视频| 国产成人av一区二区三区在线| 欧美综合在线视频| 日韩毛片精品高清免费| 国产精品456露脸| 91精品国产免费| 亚洲一区二区美女| 91在线国产福利| 国产午夜精品美女毛片视频| 久久精品国产亚洲5555| 99re8在线精品视频免费播放| 欧美色综合影院| 亚洲人成网站精品片在线观看 | 亚洲午夜精品17c| 成人性视频网站| 久久夜色精品一区| 久久不见久久见中文字幕免费| 777xxx欧美| 亚洲欧美日韩国产另类专区| 国产成人免费视频一区| 精品国产精品网麻豆系列| 视频一区二区不卡| 欧美性色aⅴ视频一区日韩精品| 国产精品久久久久久久久动漫| 国产麻豆成人传媒免费观看| 精品女同一区二区| 国产一区三区三区| 久久久精品综合| 国产一区二区三区高清播放| 精品日韩在线一区| 国产剧情一区二区三区| 久久久高清一区二区三区| 国产精品 日产精品 欧美精品| 亚洲午夜精品网| 国产成人综合在线播放| 欧美草草影院在线视频| 国产精品亚洲专一区二区三区| www国产成人免费观看视频 深夜成人网| 免费成人在线观看视频| 日韩美女在线视频| 国产69精品久久久久毛片| 精品国产伦一区二区三区免费 | 亚洲色图视频免费播放| 在线免费观看日本欧美| 亚洲成人激情自拍| 欧美成人女星排行榜| 久久激情五月婷婷| 国产精品拍天天在线| 在线观看日韩毛片| 日本成人在线网站| 久久久午夜精品| 97精品电影院| 日本欧美在线观看| 欧美成人精精品一区二区频| 国产伦精品一区二区三区免费| 中文字幕精品一区二区精品绿巨人 | 亚洲日本va午夜在线电影| 色琪琪一区二区三区亚洲区| 午夜久久电影网| 26uuu国产在线精品一区二区| 毛片不卡一区二区| 亚洲国产精品精华液ab| 欧美中文字幕一区二区三区| 久久精品国产99国产| 亚洲天堂福利av| 欧美亚洲一区二区在线| 韩国av一区二区三区四区| ...av二区三区久久精品| 国产精品国产三级国产| 欧美午夜一区二区三区| 国产精品影视网| 亚洲永久精品国产| 国产视频一区二区三区在线观看| 色综合色综合色综合| 麻豆专区一区二区三区四区五区| 欧美精品一区二区不卡| 91猫先生在线| 国内精品久久久久影院色| 一区二区三区四区精品在线视频| 日韩精品中文字幕一区| 日本韩国一区二区三区| 久久超碰97人人做人人爱| 亚洲免费在线视频一区 二区| 欧美成人在线直播| 国产黄色精品视频| 久久99精品国产麻豆婷婷洗澡| 亚洲免费在线电影| 国产欧美1区2区3区| 欧美日韩情趣电影| 91影院在线观看| 国产电影一区二区三区| 久久精品国产99久久6| 亚洲国产成人tv| 国产精品欧美极品| 成人av网址在线| 国产精品456露脸| 久草中文综合在线| 韩国女主播一区| 国模娜娜一区二区三区| 蜜臀久久99精品久久久久久9 | 国产一区二区中文字幕| 麻豆一区二区99久久久久| 日韩精品视频网站| 久久99热国产| 国产精品一区二区在线看| 国产精品66部| av综合在线播放| aaa欧美大片| 欧美伊人久久大香线蕉综合69 | 26uuu国产在线精品一区二区| 精品奇米国产一区二区三区| 精品国内二区三区| 国产欧美日韩三级| 日韩美女久久久| 视频一区欧美精品| 国产一区在线看| 91在线观看下载| 欧美男男青年gay1069videost| 91精品国产综合久久蜜臀| 欧美电影精品一区二区| 国产午夜一区二区三区| 亚洲黄色小视频| 日日骚欧美日韩| 国产在线视视频有精品| 成人免费看黄yyy456| 欧美在线|欧美| 日韩午夜精品电影| 日韩一区欧美小说| 日本中文在线一区| 成人av先锋影音| 91精品国产综合久久久久久漫画 | 欧美日韩一区二区电影| 精品日韩在线观看| 亚洲免费电影在线| 激情综合一区二区三区| 91国在线观看| 精品福利在线导航| 亚洲国产成人porn| 国产精品一区二区黑丝| 色哟哟在线观看一区二区三区| 日韩欧美中文字幕制服| 亚洲乱码国产乱码精品精可以看| 免费亚洲电影在线| 色婷婷精品久久二区二区蜜臂av | 国产一区二区三区| 欧美亚州韩日在线看免费版国语版| 精品国产a毛片| 午夜一区二区三区视频| 国产精品一区三区| 欧美一区二区三级| 日韩色在线观看| 一区二区三区小说| 国产不卡在线播放| 精品少妇一区二区三区| 亚洲一区二区av在线| av成人免费在线观看| 久久色视频免费观看| 日日摸夜夜添夜夜添精品视频| 不卡电影一区二区三区| 久久理论电影网| 麻豆精品久久久| 欧美一区二区私人影院日本| 亚洲国产一区二区三区青草影视| 91在线视频播放地址| 国产欧美一区二区三区网站| 激情欧美一区二区| 日韩精品自拍偷拍| 天天av天天翘天天综合网色鬼国产| 91久久一区二区| 亚洲精品第1页| 91麻豆国产精品久久| 国产精品每日更新在线播放网址| 国产盗摄精品一区二区三区在线| 久久久久久久一区| 国产成人精品影视| 国产精品麻豆视频| 91麻豆国产在线观看| 一区二区三区视频在线看|