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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? acbasem.nc

?? 主要用于無線傳感網(wǎng)絡(luò)的編寫的書籍.對于初學者有著很大的用處
?? NC
字號:
/* Anycast/Marzullo Base Implmentation. *//* Modified by Kin Sun Ho (ksho@cse) *//* Last Modified: 06 September 2005 *//* Modified from TOSBase *//* * @author Phil Buonadonna * @author Gilman Tolle *//* leds       red: sending broadcast packets   green: sending to UART   yellow: receving data packets*/includes Sasha;#ifndef TOSBASE_BLINK_ON_DROP#define TOSBASE_BLINK_ON_DROP#endifmodule ACBaseM {  provides interface StdControl;  uses {    interface StdControl as UARTControl;    interface BareSendMsg as UARTSend;    interface ReceiveMsg as UARTReceive;    interface TokenReceiveMsg as UARTTokenReceive;        interface StdControl as RadioControl;    interface BareSendMsg as RadioSend;    interface ReceiveMsg as RadioReceive;    interface Leds;    interface Timer as JTimer;    interface Timer as MTimer;    interface Timer as RTimer;    interface Marzullolib;    interface StdControl as MarzulloControl;  }}implementation{  enum {    UART_QUEUE_LEN = 12,    RADIO_QUEUE_LEN = 12,  };   TOS_Msg    marzullo_result;  TOS_Msg    uartQueueBufs[UART_QUEUE_LEN];  TOS_MsgPtr uartQueue[UART_QUEUE_LEN];  uint8_t    uartIn, uartOut;  bool       uartBusy, uartFull;    TOS_Msg    radioQueueBufs[RADIO_QUEUE_LEN];  TOS_MsgPtr radioQueue[RADIO_QUEUE_LEN];  uint8_t    radioIn, radioOut;  bool       radioBusy, radioFull;  uint8_t    sequences;  uint8_t    state;  uint8_t    repeat;  uint16_t   record[MAX_MOTES]; // resizeable array of Mote Info  struct Cluster_Msg *result;  uint8_t  fault_mote;  uint8_t  nrecord;    task void UARTSendTask();  task void RadioSendTask();    void failBlink();  void dropBlink();    command result_t StdControl.init() {    result_t ok1, ok2, ok3;    uint8_t i;    atomic {      sequences = 0;      state = TRAINING;      repeat = REPEAT_MSG;    }    for (i = 0; i < UART_QUEUE_LEN; i++) {      uartQueue[i] = &uartQueueBufs[i];    }    uartIn = uartOut = 0;    uartBusy = FALSE;    uartFull = FALSE;        for (i = 0; i < RADIO_QUEUE_LEN; i++) {      radioQueue[i] = &radioQueueBufs[i];    }    radioIn = radioOut = 0;    radioBusy = FALSE;    radioFull = FALSE;        ok1 = call UARTControl.init();    ok2 = call RadioControl.init();    ok3 = call Leds.init();        dbg(DBG_BOOT, "TOSBase initialized\n");        return rcombine3(ok1, ok2, ok3);  }    command result_t StdControl.start() {       call JTimer.start(TIMER_REPEAT,DISCOVERY);    call UARTControl.start();    call RadioControl.start();    return SUCCESS;  }    command result_t StdControl.stop() {        call UARTControl.stop();    call RadioControl.stop();    call JTimer.stop();    call MTimer.stop();    return SUCCESS;  }    /*Broadcast Join packet*/  task void BroadcastJoin() {    struct Anycast *m;    dbg(DBG_USR1, "Monitoring Node broadcasting Join packet.\n");            atomic {       m= (Anycast *) (radioQueue[radioOut])->data;      m->type   = JOIN; // setting general data      m->src = TOS_LOCAL_ADDRESS;      m->parent = TOS_LOCAL_ADDRESS;      m->seqNum = sequences++;      m->hop    = 0;            if(state == TRAINING || state == VERIFY) {	m->request = state;	if(state == VERIFY) {	  m->min = result->min1; // setting general data	  m->max = result->max1;	  m->min1 = result->min2;	  m->max1 = result->max2;	  m->min2 = result->min3;	  m->max2 = result->max3;	  m->min3 = result->min4;	  m->max3 = result->max4;	  m->nintervals = result->src;	}	repeat--;	if(repeat == 0) { // end of repeat	  if(state == TRAINING)	    state = MARZULLO; // state: TRAINING -> MARZULLO	  if(state == VERIFY)	    state = WAIT; // state: VERIFY -> WAIT	  call MTimer.start(TIMER_ONE_SHOT,TEN_MIN); // 10 min timeout	}      }      else	m->request = 0;            radioQueue[radioOut]->group = TOS_AM_GROUP;      radioQueue[radioOut]->addr = TOS_BCAST_ADDR;      radioQueue[radioOut]->length = TOSH_DATA_LENGTH;            if (!radioBusy) {	call RadioSend.send(radioQueue[radioOut]);	radioBusy = TRUE;      }    }//end atomic     }//end Broadcast Join    // what to do when a mote cluster packet arrive  result_t doData(TOS_MsgPtr rmsg) {    struct Cluster_Msg *datat;    result_t r;        datat = (struct Cluster_Msg *)rmsg->data;    // stop timer    call MTimer.stop();    // store mote data    r = call Marzullolib.add_mote(datat);    // start timer again    call MTimer.start(TIMER_ONE_SHOT,TIMEOUT);    return r;  }  // when a verify packet arrives  result_t doOnce(TOS_MsgPtr rmsg) {    struct Cluster_Msg *datat;    int16_t mote_id;    int16_t fault;    int8_t i;        datat = (struct Cluster_Msg *)rmsg->data;        // stop timer    call MTimer.stop();        // record mote data    mote_id = datat->src; // mote_id    fault = datat->train; // number of faults        for(i=0; i<nrecord; i++) { // check if we have hear this mote before      if(mote_id == record[i])	break;    }        if(i != nrecord)      return FAIL; // drop if not new pkt        if(nrecord == MAX_MOTES)      return FAIL; // drop if the MAX_MOTES limit has arrived        record[nrecord] = mote_id; // record the mote_id in the buffer    nrecord++; // increase the count    if(fault >= MAX_FAULTS)      fault_mote++; // the mote is a fault mote if its fault > theshold    datat->type = FAULT; // setting other values for debug    datat->win3 = fault_mote; // setting other values for debug    /* [KS] Make sure the ADC are not over writed */        /* The format of the packet is the following       datat->win1     = c_min; // ADC minimum reading       datat->win2     = c_max; // ADC maximum reading             // below is the latest 10 reading from the ADC      datat->win3     = nrecord;//number of faulty modes counted so far      datat->win4     = c_buffer[1];      datat->min1     = c_buffer[2];      datat->min2     = c_buffer[3];      datat->min3     = c_buffer[4];      datat->min4     = c_buffer[5];            datat->max1     = c_buffer[6];      datat->max2     = c_buffer[7];      datat->max3     = c_buffer[8];      datat->max4     = c_buffer[9];    */          /*      datat->win1 = fault_mote;      datat->win2 = THRESHOLD;      datat->win3 = nrecord;      datat->win4 = result->src;    */        call MTimer.start(TIMER_ONE_SHOT,TIMEOUT);    return SUCCESS;  }  // receive a pkt from radio  event TOS_MsgPtr RadioReceive.receive(TOS_MsgPtr Msg) {    result_t print;    uint8_t t= Msg->data[0];//type of the packet    TOS_MsgPtr pBuf = Msg;    print = FAIL;        dbg(DBG_USR1, "TOSBase received radio packet.\n");        if(Msg->addr != TOS_LOCAL_ADDRESS)      return Msg;    if(Msg->length != TOSH_DATA_LENGTH)      return Msg;    if ((!Msg->crc) || (Msg->group != TOS_AM_GROUP))      return Msg;        /*What Kind of message is it*/    switch (t){    case(DATA):      if(state == MARZULLO) {        print = doData(Msg); // on recving clusters from the mote      }      if(state == WAIT) {       		print = doOnce(Msg); // on recving fault pkt from the mote	call MTimer.stop();	call MTimer.start(TIMER_ONE_SHOT,TIMEOUT);      }      if(print == SUCCESS) {	call Leds.greenToggle();	atomic {	  if (!uartFull) {	    pBuf = uartQueue[uartIn];	    uartQueue[uartIn] = Msg;	    	    if( ++uartIn >= UART_QUEUE_LEN ) uartIn = 0;	    	    if (uartIn == uartOut) {	      uartFull = TRUE;	    }	  	    if (!uartBusy) {	      if (post UARTSendTask()) {		uartBusy = TRUE;	      }	    }	  } 	  else {	    dropBlink();	  }	}      }      break;    default:      break;    }    return pBuf;  }    task void UARTSendTask() {    bool noWork = FALSE;        dbg (DBG_USR1, "TOSBase forwarding Radio packet to UART\n");        atomic {      if (uartIn == uartOut && uartFull == FALSE) {	uartBusy = FALSE;	noWork = TRUE;      }    }    if (noWork) {      return;    }        if(uartQueue[uartOut]->length != TOSH_DATA_LENGTH)      return;    if (call UARTSend.send(uartQueue[uartOut]) == SUCCESS) {      //call Leds.greenToggle();    } else {      failBlink();      post UARTSendTask();    }  }    event result_t UARTSend.sendDone(TOS_MsgPtr msg, result_t success) {        if (!success) {      failBlink();    } else {            atomic {	if (msg == uartQueue[uartOut]) {	  if( ++uartOut >= UART_QUEUE_LEN ) uartOut = 0;	  if (uartFull) {      	    uartFull = FALSE;	  }	}      }    }        post UARTSendTask();    return SUCCESS;  }    event TOS_MsgPtr UARTReceive.receive(TOS_MsgPtr Msg) {    return Msg;  }    event TOS_MsgPtr UARTTokenReceive.receive(TOS_MsgPtr Msg, uint8_t Token) {    TOS_MsgPtr  pBuf = Msg;    bool reflectToken = FALSE;        dbg(DBG_USR1, "TOSBase received UART token packet.\n");        atomic {      if (!radioFull) {	reflectToken = TRUE;	pBuf = radioQueue[radioIn];	radioQueue[radioIn] = Msg;	if( ++radioIn >= RADIO_QUEUE_LEN ) radioIn = 0;	if (radioIn == radioOut)	  radioFull = TRUE;		if (!radioBusy) {	  if (post RadioSendTask()) {	    radioBusy = TRUE;	  }	}      } else {	dropBlink();      }    }    if (reflectToken) {      call UARTTokenReceive.ReflectToken(Token);    }        return pBuf;  }  task void RadioSendTask() {    bool noWork = FALSE;    dbg (DBG_USR1, "TOSBase forwarding UART packet to Radio\n");    atomic {      if (radioIn == radioOut && radioFull == FALSE) {	radioBusy = FALSE;	noWork = TRUE;      }    }    if (noWork)      return;    radioQueue[radioOut]->group = TOS_AM_GROUP;        if (call RadioSend.send(radioQueue[radioOut]) == SUCCESS) {      call Leds.redToggle();    } else {      failBlink();      post RadioSendTask();    }  }  event result_t RadioSend.sendDone(TOS_MsgPtr msg, result_t success) {    if (!success) {      failBlink();    } else {      atomic {	if (msg == radioQueue[radioOut]) {	  if( ++radioOut >= RADIO_QUEUE_LEN ) radioOut = 0;	  if (radioFull)	    radioFull = FALSE;	}      }    }        post RadioSendTask();    return SUCCESS;  }/* Time to rebrodcast Join Message */  event result_t JTimer.fired() {    post BroadcastJoin();    return SUCCESS;  }    task void send_uart() {    call UARTSend.send(&marzullo_result);  }  /* send final Marzullo result to UART */  event result_t RTimer.fired() {    result = (struct Cluster_Msg *)marzullo_result.data;    result->type = INTERVAL; // set the pkt as INTERVAL    atomic {      result = call Marzullolib.getfinal(result);       // request result from Marzullolib      post send_uart(); // send to UART port    }        // clear variables    call Marzullolib.reset();    state = VERIFY;    repeat = REPEAT_MSG;    fault_mote = 0;    nrecord = 0;        return SUCCESS;  }  // Marzullo Timeout or Verify Timeout  event result_t MTimer.fired() {    uint8_t Nfinals;        // Verify Timeout    if(state == WAIT) {      // call retraining of > 1/2 of mote faulty      /*result->src(number of nodes replied)       fault_mote (number of nodes replied with faulty message)*/      if(nrecord > 0 && result->src - fault_mote < fault_mote) {	atomic {	  state = TRAINING;	  repeat = REPEAT_MSG;	}	return SUCCESS;      }      atomic {	nrecord = 0;	fault_mote = 0;	state = VERIFY;	repeat = REPEAT_MSG;      }      return SUCCESS;    }    // else if state == MARZULLO    // its time to doMarzullo    marzullo_result.group = TOS_AM_GROUP;    marzullo_result.addr = TOS_UART_ADDR;    marzullo_result.length = TOSH_DATA_LENGTH;            // do marzullo    Nfinals = call Marzullolib.doMarzullo();    // if no Marzullo was done...    if(Nfinals < 1) {      atomic {	state = TRAINING;	repeat = REPEAT_MSG;      }    }    else {      atomic {	radioQueue[radioOut]->group = TOS_AM_GROUP;	radioQueue[radioOut]->addr = TOS_BCAST_ADDR;	radioQueue[radioOut]->length = TOSH_DATA_LENGTH;		// send result uart	call RTimer.start(TIMER_ONE_SHOT,1000);      }    }    return SUCCESS;  }  void dropBlink() {#ifdef TOSBASE_BLINK_ON_DROP    call Leds.yellowToggle();#endif  }  void failBlink() {#ifdef TOSBASE_BLINK_ON_FAIL    call Leds.yellowToggle();#endif  }}  

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品尤物av久久免费看| 亚洲一区二区综合| 中文在线免费一区三区高中清不卡| 欧美日韩小视频| 91精品国产色综合久久| 日韩精品资源二区在线| 精品美女在线观看| 国产欧美一区二区三区在线老狼| 精品少妇一区二区三区在线视频 | 激情综合色综合久久综合| 免费人成网站在线观看欧美高清| 亚洲精品一区二区三区香蕉| 国产精品一级片在线观看| 天天综合色天天综合色h| 久久国产精品一区二区| 91在线播放网址| 精品视频全国免费看| 欧美白人最猛性xxxxx69交| 国产精品色哟哟| 蜜臀a∨国产成人精品| 成人av免费在线| 欧美成人三级电影在线| √…a在线天堂一区| 蜜桃传媒麻豆第一区在线观看| 成人免费看视频| 欧美精品一区二区蜜臀亚洲| 亚洲综合色噜噜狠狠| 国产美女主播视频一区| 欧美一区日韩一区| 亚洲国产视频一区| 97精品国产露脸对白| 久久久国产一区二区三区四区小说| 亚洲国产精品一区二区www在线| 国产成人精品一区二区三区四区| 欧美日韩国产免费| 午夜国产精品一区| 欧美私模裸体表演在线观看| 亚洲视频电影在线| 91亚洲精品乱码久久久久久蜜桃| 精品福利二区三区| 美女视频黄免费的久久| 日韩欧美亚洲国产精品字幕久久久 | 成人av网址在线| 综合中文字幕亚洲| 色综合天天综合给合国产| 国产精品久久精品日日| eeuss鲁片一区二区三区在线看| 久久综合九色综合欧美亚洲| 国产精品12区| 最新国产の精品合集bt伙计| 91农村精品一区二区在线| 亚洲人成影院在线观看| 欧美在线一区二区三区| 青青草国产精品97视觉盛宴 | 午夜视频一区二区| 欧美mv日韩mv| 色综合视频在线观看| 日韩在线a电影| 国产精品乱码妇女bbbb| 欧美日韩大陆一区二区| 国产精品一二三| 亚洲一区二区在线视频| 精品久久久久99| 国产精品12区| 婷婷综合五月天| 日本一区二区不卡视频| 日韩一区二区不卡| 色先锋aa成人| 大美女一区二区三区| 日韩av在线播放中文字幕| 中文欧美字幕免费| 日韩精品最新网址| 91精品蜜臀在线一区尤物| a在线播放不卡| 成人黄色av网站在线| 国产亚洲精品7777| 亚洲国产精品久久人人爱蜜臀| 欧美日韩一级二级三级| 色呦呦网站一区| 国产精品亚洲一区二区三区妖精 | 丁香天五香天堂综合| 精品夜夜嗨av一区二区三区| 亚洲电影你懂得| 日韩av午夜在线观看| 日韩综合一区二区| 亚洲一区二区三区四区在线免费观看| 国产欧美一区二区在线观看| 久久伊人中文字幕| 久久一夜天堂av一区二区三区| 精品免费一区二区三区| 久久一日本道色综合| 国产精品久久国产精麻豆99网站| 国产视频一区二区在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩精品一区二区三区老鸭窝| 日韩欧美一二三四区| 精品成人免费观看| 国产精品无圣光一区二区| 国产精品电影院| 亚洲电影在线免费观看| 美女国产一区二区三区| 国产成人av自拍| 欧美午夜片在线看| 久久久亚洲午夜电影| 亚洲人成伊人成综合网小说| 国产欧美日韩在线视频| 五月天激情小说综合| 国产精品一区二区三区网站| www..com久久爱| 日韩欧美国产1| 亚洲综合一区二区三区| 精品一区二区三区视频在线观看| 99久久久久免费精品国产 | 亚洲免费三区一区二区| 久久精品99久久久| 欧美揉bbbbb揉bbbbb| 国产日韩精品一区二区三区| 亚洲免费av高清| 成人av网在线| 亚洲国产精品成人综合| 老司机免费视频一区二区| 色哟哟日韩精品| 国产精品国产三级国产普通话99 | 亚洲图片激情小说| 国产一区二区三区在线观看免费| 欧美日韩和欧美的一区二区| 国产精品女主播av| 国产经典欧美精品| 国产精品免费视频一区| 国产一区二区三区电影在线观看| 欧美一区二区精品| 蜜桃av一区二区| 久久久久久久久久久电影| 国产一区在线视频| 精品福利视频一区二区三区| 国产麻豆精品久久一二三| 久久品道一品道久久精品| 国产a区久久久| 亚洲黄色录像片| 91精品国产综合久久久久久漫画 | 日韩欧美你懂的| 久久成人麻豆午夜电影| 精品久久五月天| 成人av在线电影| 亚洲一区二区三区自拍| 日韩一区二区三区在线观看| 日韩精品一级中文字幕精品视频免费观看 | 国产精品欧美综合在线| 欧美色图一区二区三区| 日本美女一区二区三区| 久久综合五月天婷婷伊人| 成人毛片视频在线观看| 亚洲午夜在线电影| 久久久国产综合精品女国产盗摄| 色综合一个色综合亚洲| 美腿丝袜在线亚洲一区| 1024成人网| 久久久久88色偷偷免费| 欧美日韩成人在线一区| 成人精品视频网站| 久久国产精品无码网站| 亚洲免费成人av| 国产日韩综合av| 欧美xfplay| 欧美一区午夜精品| 3d成人动漫网站| 欧美亚洲综合久久| 一本久道中文字幕精品亚洲嫩| 美腿丝袜亚洲一区| 日韩精品一二区| 偷拍与自拍一区| 一区二区三区在线观看网站| 国产精品国产自产拍在线| 精品对白一区国产伦| 久久综合色婷婷| 国产亚洲欧洲997久久综合 | 久草这里只有精品视频| 奇米777欧美一区二区| 另类小说图片综合网| 玖玖九九国产精品| 国产在线一区观看| 国产69精品久久久久毛片 | 久久久精品欧美丰满| 中文字幕一区二区三区四区不卡| 日韩视频在线一区二区| 欧美变态tickle挠乳网站| 精品少妇一区二区三区免费观看 | 成人av在线电影| 欧美在线视频全部完| 69精品人人人人| 国产欧美一区二区三区沐欲| 亚洲欧美一区二区三区久本道91| 亚洲日本丝袜连裤袜办公室| 视频精品一区二区| 国产成人啪免费观看软件| 奇米影视7777精品一区二区| 久久99国产乱子伦精品免费| 成人sese在线| 久久影院午夜论| 爽好久久久欧美精品|