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

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

?? acbasem.nc

?? 主要用于無線傳感網(wǎng)絡(luò)的編寫的書籍.對于初學(xué)者有著很大的用處
?? NC
字號:
/* Anycast/Marzullo Base Implmentation. *//* Modified by Kin Sun Ho (ksho@cse) *//* Last Modified: 07 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 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; // sequences number  uint8_t    state;     // current state   uint8_t    repeat;    // number of repeat for request broadcast  uint16_t   min;       //  - | used to do the verify  uint16_t   max;       //  - |  uint16_t   record[MAX_MOTES]; // resizeable array of Mote Info  uint8_t    nrecord;   // number of mote heard  uint8_t    fault_mote;// number of fault mote    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;      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 = min;	  m->max = max;	}	repeat--;	if(repeat == 0) {	  if(state == TRAINING)	    state = MARZULLO;	  if(state == VERIFY)	    state = WAIT;	  call MTimer.start(TIMER_ONE_SHOT,TEN_MIN);	}      }      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    // Operation when a DATA packet arrive  // Add Data to the Marzullo structure  result_t doData(TOS_MsgPtr rmsg) {    struct CLNNMsg *datat;    result_t r;        datat = (struct CLNNMsg *)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;  }  // Operation when a FAILT packet arrive  // Check if this is a fault mote  result_t doOnce(TOS_MsgPtr rmsg) {    struct CLNNMsg *datat;    int16_t mote_id;    int16_t fault;    int8_t i;        datat = (struct CLNNMsg *)rmsg->data;    call MTimer.stop();        mote_id = datat->src;    fault = datat->f;    for(i=0; i<nrecord; i++) {      if(mote_id == record[i])	break;    }        if(i != nrecord)      return FAIL; // drop if not new pkt        if(nrecord == MAX_MOTES)      return FAIL;        record[nrecord] = mote_id;    nrecord++;    if(fault > MAX_FAULTS)      fault_mote++;        call MTimer.start(TIMER_ONE_SHOT,TIMEOUT);    return SUCCESS;  }  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) {        call Leds.greenToggle();        print = doData(Msg); // on recving result from mote      }      if(state == WAIT) {       		print = doOnce(Msg);	call Leds.yellowToggle();	call MTimer.stop();	call MTimer.start(TIMER_ONE_SHOT,TIMEOUT);      }      if(print == SUCCESS) {	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;  }    // Marzullo Timeout  event result_t MTimer.fired() {    CLNNMsg *result;    // The Verification Stage    // Check # of fault mote, if > half -> retraining    // else verify again    if(state == WAIT) {      if(nrecord == 0) {	atomic {	  state = TRAINING;	  repeat = REPEAT_MSG;	}	return SUCCESS;      }      if(nrecord > 0 && nrecord-fault_mote >= fault_mote) {	atomic {	  nrecord = 0;	  fault_mote = 0;	  state = VERIFY;	  repeat = REPEAT_MSG;	}	return SUCCESS;      }      atomic {	state = TRAINING;	repeat = REPEAT_MSG;      }      return SUCCESS;    }    // else if state == MARZULLO    // doMarzullo and start verify    marzullo_result.group = TOS_AM_GROUP;    marzullo_result.addr = TOS_UART_ADDR;    marzullo_result.length = TOSH_DATA_LENGTH;        result = (struct CLNNMsg *)marzullo_result.data;    // do marzullo    result = call Marzullolib.doMarzullo(result);        // if no Marzullo was done...    if(result == NULL) {      atomic {	state = TRAINING;	repeat = REPEAT_MSG;      }    }        else {      // set state to verify      atomic {	state = VERIFY;	repeat = REPEAT_MSG;	nrecord = 0;	fault_mote = 0;	min = result->min;	max = result->max;	radioQueue[radioOut]->group = TOS_AM_GROUP;	radioQueue[radioOut]->addr = TOS_BCAST_ADDR;	radioQueue[radioOut]->length = TOSH_DATA_LENGTH;		// send result uart	call UARTSend.send(&marzullo_result);      }    }        // clear variables    call Marzullolib.reset();        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一区二区三区免费野_久草精品视频
久久综合色综合88| 欧美日韩美女一区二区| 国产欧美视频一区二区三区| 精品在线观看视频| 2017欧美狠狠色| 国产不卡视频在线观看| 中文字幕一区二区三区色视频| 成人黄色小视频在线观看| 一区精品在线播放| 91福利精品视频| 欧美aⅴ一区二区三区视频| 日韩欧美一级片| 国产精品一区二区久久不卡| 中文字幕免费观看一区| 99久久精品情趣| 亚洲午夜激情网站| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品一二三四| 亚洲色图欧美激情| 欧美高清一级片在线| 激情图片小说一区| 国产精品三级av在线播放| 一本大道久久精品懂色aⅴ| 亚洲成人动漫精品| 久久精品一区蜜桃臀影院| av爱爱亚洲一区| 日韩vs国产vs欧美| 欧美国产一区二区| 欧美日韩一区二区在线观看| 国产一区二区中文字幕| 亚洲精选免费视频| 日韩精品一区国产麻豆| 97国产精品videossex| 日本亚洲最大的色成网站www| 欧美国产1区2区| 欧美高清视频不卡网| 风间由美一区二区av101| 亚洲网友自拍偷拍| 中文字幕精品一区二区三区精品| 欧美日韩国产123区| 国产激情偷乱视频一区二区三区| 一区二区久久久| 国产亚洲欧美在线| 91精品国产综合久久福利软件| 成人激情av网| 经典三级在线一区| 午夜精品久久久久久久久久| 日本一区二区视频在线| 6080午夜不卡| 91传媒视频在线播放| 风流少妇一区二区| 久久国产剧场电影| 午夜精品久久久久| 亚洲色图制服诱惑| 国产精品视频一二| 日韩精品资源二区在线| 欧美二区在线观看| 在线精品视频一区二区三四| 成人av在线一区二区三区| 久久精品久久99精品久久| 亚洲一区二区三区爽爽爽爽爽| 国产女人水真多18毛片18精品视频| 日韩一级黄色大片| 欧美美女网站色| 欧美专区亚洲专区| 99re热这里只有精品免费视频| 国产精品自产自拍| 国产一区视频网站| 精品一区二区在线视频| 日韩av电影一区| 日韩精品一级二级| 亚洲mv在线观看| 亚洲电影欧美电影有声小说| 亚洲一区二区三区中文字幕在线| 亚洲欧美偷拍另类a∨色屁股| www欧美成人18+| 久久免费电影网| www久久精品| 久久午夜国产精品| 久久久精品人体av艺术| 久久人人超碰精品| 久久久久国产成人精品亚洲午夜| 欧美sm美女调教| 久久天天做天天爱综合色| 精品福利一二区| ww亚洲ww在线观看国产| 欧美激情综合五月色丁香| 国产日韩精品一区二区浪潮av| 国产嫩草影院久久久久| 亚洲欧美在线aaa| 亚洲视频免费观看| 亚洲综合免费观看高清完整版| 亚洲图片自拍偷拍| 麻豆精品久久精品色综合| 久久av老司机精品网站导航| 国产在线播放一区三区四| 国产乱色国产精品免费视频| 国产91在线|亚洲| 色噜噜狠狠色综合欧洲selulu | 久久66热偷产精品| 国产高清精品网站| 91热门视频在线观看| 欧美另类z0zxhd电影| 精品少妇一区二区| 中文字幕不卡一区| 亚洲成人在线观看视频| 老司机精品视频导航| 国产成人av一区| 欧美中文字幕亚洲一区二区va在线 | 成人免费视频网站在线观看| 99视频一区二区三区| 欧美日韩日日夜夜| 国产亚洲一本大道中文在线| 亚洲激情五月婷婷| 毛片av一区二区| 91免费版pro下载短视频| 欧美日韩电影一区| 国产欧美一区二区精品性色超碰| 亚洲乱码中文字幕综合| 成人动漫一区二区| 欧美日韩一区三区| 国产精品免费久久| 爽好久久久欧美精品| 波多野结衣亚洲一区| 欧美伦理影视网| 亚洲视频中文字幕| 久久不见久久见免费视频7| 99精品热视频| 久久欧美中文字幕| 亚洲大片精品永久免费| 国产九九视频一区二区三区| 在线影视一区二区三区| 久久综合久久综合九色| 亚洲高清免费一级二级三级| 成人午夜电影久久影院| 日韩欧美国产wwwww| 一区二区三区欧美在线观看| 丁香婷婷综合网| 精品久久五月天| 亚洲高清免费观看高清完整版在线观看 | 制服丝袜中文字幕一区| 综合久久综合久久| 国产一区二区三区在线看麻豆| 在线观看免费视频综合| 亚洲国产成人私人影院tom| 国内一区二区视频| 欧美精品一卡两卡| 亚洲va欧美va人人爽午夜| 97久久精品人人做人人爽| 久久综合999| 美日韩一区二区三区| 欧美日韩高清一区二区三区| 怡红院av一区二区三区| 99久久免费视频.com| 中文字幕免费在线观看视频一区| 久久99精品一区二区三区| 日韩美女视频在线| 免费观看在线色综合| 91麻豆精品91久久久久同性| 亚洲曰韩产成在线| 在线视频亚洲一区| 亚洲天堂2014| 色婷婷av一区| 亚洲综合色视频| 欧美色综合久久| 亚洲国产欧美在线| 亚洲精选免费视频| 91欧美一区二区| 亚洲精品视频免费看| 91福利在线观看| 亚洲大片精品永久免费| 欧美高清视频www夜色资源网| 三级一区在线视频先锋| 欧美一卡二卡三卡| 九九**精品视频免费播放| 日韩精品一区二区三区视频播放 | 国产精品麻豆网站| eeuss鲁片一区二区三区| 国产精品国产三级国产a| 成人免费福利片| 国产精品久久久久永久免费观看| 成人a区在线观看| 伊人性伊人情综合网| 欧美三级韩国三级日本三斤| 亚洲高清三级视频| 91精品国产福利| 狠狠久久亚洲欧美| 国产精品免费av| 欧美视频一区二区三区在线观看 | 亚洲天堂a在线| 欧美午夜电影网| 日本不卡一二三区黄网| 久久精品国产精品亚洲综合| 精品国产精品网麻豆系列| 成人免费电影视频| 亚洲五码中文字幕| 精品国产乱子伦一区| 成人av电影在线网| 亚洲福利视频导航| 国产亚洲综合av|