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

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

?? marzullom.nc

?? 主要用于無線傳感網絡的編寫的書籍.對于初學者有著很大的用處
?? NC
字號:
/* Marzullo implmentation *//* Written by Kin Sun Ho (ksho@cse) *//* Algorithms by Tatiana Bokareva (tbokareva@cse) *//* Last Modified: 06 September 2005 */includes Sasha;module MarzulloM{  provides interface Marzullolib;  provides interface StdControl;  uses {    interface Leds;  }}implementation{  uint16_t id[MAX_MOTES]; // a array of mote_id  struct Interval *input[2*4*MAX_MOTES]; // input intervals from the mote  struct Interval *final[2*4*MAX_MOTES]; // final intervals after Marzullo  uint8_t Nmotes;             // number of motes received  uint8_t Mmotes;             // number of space allocated in memory  uint8_t Mintervals;         // MAX intervals we can have  uint8_t Nintervals;         // # of intervals we have  uint8_t Mfinals;            // MAX final intervals we can have  uint8_t Nfinals;            // # of final intervals we have  uint32_t sum_of_prob;       // tmp parameter  // copy intervals from raw pkt to structure we want  void copyIntervals(Cluster_Msg *info) {        atomic {      input[Nintervals]->pt1  = info->min1;      input[Nintervals]->pt2  = info->max1;      input[Nintervals]->type = 0;      input[Nintervals]->prob = info->win1*100;            input[Nintervals+1]->pt1  = info->max1;      input[Nintervals+1]->pt2  = info->min1;      input[Nintervals+1]->type = 1;      input[Nintervals+1]->prob = 0;            Nintervals+=2;            input[Nintervals]->pt1  = info->min2;      input[Nintervals]->pt2  = info->max2;      input[Nintervals]->type = 0;      input[Nintervals]->prob = info->win2*100;            input[Nintervals+1]->pt1  = info->max2;      input[Nintervals+1]->pt2  = info->min2;      input[Nintervals+1]->type = 1;      input[Nintervals+1]->prob = 0;            Nintervals+=2;            input[Nintervals]->pt1  = info->min3;      input[Nintervals]->pt2  = info->max3;      input[Nintervals]->type = 0;      input[Nintervals]->prob = info->win3*100;            input[Nintervals+1]->pt1  = info->max3;      input[Nintervals+1]->pt2  = info->min3;      input[Nintervals+1]->type = 1;      input[Nintervals+1]->prob = 0;            Nintervals+=2;            input[Nintervals]->pt1  = info->min4;      input[Nintervals]->pt2  = info->max4;      input[Nintervals]->type = 0;      input[Nintervals]->prob = info->win4*100;            input[Nintervals+1]->pt1  = info->max4;      input[Nintervals+1]->pt2  = info->min4;      input[Nintervals+1]->type = 1;      input[Nintervals+1]->prob = 0;            Nintervals+=2;    }  }    // add the data of a mote into MarzulloM  command result_t Marzullolib.add_mote(Cluster_Msg *rmsg) {    int16_t mote_id;    int8_t i;    sum_of_prob = 0;    // find if a pck from a new mote    mote_id = rmsg->src;    for(i=0; i<Nmotes; i++) {      if(mote_id == id[i])	break;    }    if(i != Nmotes) return FAIL; // drop if not a new pkt       // drop pkt when full    if(Nmotes == Mmotes) return FAIL;        // if new store result    atomic {      id[Nmotes] = mote_id;      sum_of_prob = rmsg->win1 + rmsg->win2 + rmsg->win3 + rmsg->win4;      rmsg->win1 = (rmsg->win1*100)/(sum_of_prob); // normalize the probability      rmsg->win2 = (rmsg->win2*100)/(sum_of_prob);      rmsg->win3 = (rmsg->win3*100)/(sum_of_prob);      rmsg->win4 = (rmsg->win4*100)/(sum_of_prob);      copyIntervals(rmsg);      Nmotes++; // store the data and increase the Nmote count    }    dbg(DBG_USR1,"Mote %d is added\n",id[Nmotes-1]);       return SUCCESS;  }  /* The Bubble sort for the input array */  void bubbleSort(uint8_t length) {    uint8_t i,j;    for(i=length; i>=1;i--) {      for(j=0;j<i-1;j++){ 	if (input[j]->pt1 > input[j+1]->pt1){	  /*Swap the elements*/	  uint16_t pt1  = input[j]->pt1;	  uint16_t pt2  = input[j]->pt2;	  uint8_t  type = input[j]->type;	  uint32_t prob = input[j]->prob;	  	  input[j]->pt1  = input[j+1]->pt1;	  input[j]->pt2  = input[j+1]->pt2;	  input[j]->type = input[j+1]->type;	  input[j]->prob = input[j+1]->prob;	  	  input[j+1]->pt1 = pt1;	  input[j+1]->pt2 = pt2;	  input[j+1]->type = type;	  input[j+1]->prob = prob;	}      }    }  }  /*Bubble sort for the final array */  void bubbleSort2(uint8_t length) {    uint8_t i,j;    for(i=length; i>=1;i--) {      for(j=0;j<i-1;j++){ 	if (final[j]->prob <= final[j+1]->prob){	  /*Swap the elements*/	  uint16_t pt1  = final[j]->pt1;	  uint16_t pt2  = final[j]->pt2;	  uint32_t prob = final[j]->prob;	  	  final[j]->pt1  = final[j+1]->pt1;	  final[j]->pt2  = final[j+1]->pt2;	  final[j]->prob = final[j+1]->prob;	  	  final[j+1]->pt1 = pt1;	  final[j+1]->pt2 = pt2;	  final[j+1]->prob = prob;	}      }    }  }  // add a final interval  void addInterval(uint16_t low, uint16_t upper, uint32_t prob){    uint8_t i;    if(low == upper) return;    for(i=0; i<Nfinals; i++) {      /*check if the interval is already existes*/      if((final[i]->pt1  == low) &&	 (final[i]->pt2  == upper) && 	 (final[i]->prob == prob))	return;    }    if(Nfinals == Mfinals) return;        atomic {      final[Nfinals]->pt1 = low;      final[Nfinals]->pt2 = upper;      final[Nfinals]->prob = prob;      Nfinals++;    }  }    // return the final result to Anycast  command Cluster_Msg * Marzullolib.getfinal(Cluster_Msg *pt) {    pt->train = Nfinals;    pt->src   = Nmotes;        // the storing depend on the number of final intervals    if(Nfinals < 1) return pt;    if(Nfinals >= 1) {      pt->min1 = final[0]->pt1;      pt->max1 = final[0]->pt2;      pt->win1 = final[0]->prob;    }        if(Nfinals >= 2) {      pt->min2 = final[1]->pt1;      pt->max2 = final[1]->pt2;      pt->win2 = final[1]->prob;    }    if(Nfinals >= 3) {      pt->min3 = final[2]->pt1;      pt->max3 = final[2]->pt2;      pt->win3 = final[2]->prob;    }        if(Nfinals >= 4) {      pt->min4 = final[3]->pt1;      pt->max4 = final[3]->pt2;      pt->win4 = final[3]->prob;    }    return pt;  }   // calculate the probability  uint32_t calculateProb(uint16_t low, uint16_t upper, uint8_t c) {    uint8_t j;    uint32_t prob      = 0;    uint16_t l_inte = upper-low; /*length of an intersection*/           for(j=0; j<=c; j++) {      if((input[j]->type == 0) && (input[j]->pt2 > low)) {	prob += (input[j]->prob*l_inte)/(input[j]->pt2-input[j]->pt1);      }    }    return prob/Nmotes;  }  // do the Marzullo Business  command uint8_t Marzullolib.doMarzullo() {    uint8_t i,c,j;    uint16_t low, upper;    uint32_t prob;    uint32_t sum;    uint8_t tosend;    c=0; // initalize the parameters    low=0;    upper=0;    sum = 0;    dbg(DBG_USR1,"Nintervals is %d\n",Nintervals);    bubbleSort(Nintervals); // sort the intervals    for(i=0; i<Nintervals; i++) {      dbg(DBG_USR1,"%d %d %d %d %d\n",i,input[i]->type,	  input[i]->pt1,input[i]->pt2,input[i]->prob);    }    for(i=0; i<Nintervals; i++){      dbg(DBG_USR1,"i is %d\n",i);      if(input[i]->type == 0){	low   = input[i]->pt1;	upper = input[i+1]->pt1;	c = i;      }      else if((input[i]->type == 1) && (input[i-1]->type == 0)){	dbg(DBG_USR1,"low %d, upper %d\n",low,upper);	if(upper <= low){	  /*we encounter the joint intersection  	  min1|------max1|min2-------|max2*/	  low  = input[i]->pt2; upper = input[i]->pt1;  	  //find the bigest minimum for this instesection	  for(j=0;j<Nintervals;j++){	    if(input[j]->type == 0 && input[j]->pt1>=low && 	       input[j]->pt1 < upper)	      low=input[j]->pt1;	  }	  prob = calculateProb(low,upper,c-1);	  dbg(DBG_USR1,"1 New final: %d %d %d\n",low, upper,prob);	  addInterval(low,upper,prob);	  	  low  = input[i-1]->pt1; upper = input[i-1]->pt2; 	  prob = calculateProb(low,upper,c);	  dbg(DBG_USR1,"2 New final: %d %d %d\n",low, upper,prob);	  addInterval(low,upper,prob);	}	else{	  prob = calculateProb(low,upper,c);	  dbg(DBG_USR1,"3 New final: %d %d %d\n",low, upper,prob);	  addInterval(low, upper, prob);	}	prob=0;      }    }    bubbleSort2(Nfinals);    dbg(DBG_USR1,"Nfinal is %d\n",Nfinals);    if(Nfinals > 4) tosend = 4;    else tosend = Nfinals;    // Normalize the probabilities of the sending intervals    for(i=0; i<tosend; i++) sum += final[i]->prob;    for(i=0; i<tosend; i++) final[i]->prob = (final[i]->prob*100)/sum;    //call Leds.greenToggle();    return Nfinals;  }  // Reset all parameters  command result_t Marzullolib.reset() {    uint8_t i;    Mmotes     = MAX_MOTES;    Nmotes     = 0;    Mintervals = 4*MAX_MOTES*2;    Nintervals = 0;    Mfinals    = 4*MAX_MOTES*2;    Nfinals    = 0;    sum_of_prob = 0;    //[tb] clear the final intervals structure    for(i=0; i<Nfinals; i++){      final[i]->prob = 0;      final[i]->pt1 = final[i]->pt2=0;    }    return SUCCESS;  }  // Add a mote for simulation  void add_mote_sim() {    Cluster_Msg *c1;    //Cluster_Msg *c2;    //Cluster_Msg *c3;    c1 = (struct Cluster_Msg *)malloc(sizeof(struct Cluster_Msg));    //c2 = (struct Cluster_Msg *)malloc(sizeof(struct Cluster_Msg));    //c3 = (struct Cluster_Msg *)malloc(sizeof(struct Cluster_Msg));    c1->src  = 7;    c1->win1 = 25;    c1->win2 = 25;    c1->win3 = 25;    c1->win4 = 25;    c1->min1 = 20;    c1->min2 = 22;    c1->min3 = 26;    c1->min4 = 28;    c1->max1 = 24;    c1->max2 = 26;    c1->max3 = 30;    c1->max4 = 34;    /*c2->src  = 13;    c2->win1 = 29;    c2->win2 = 25;    c2->win3 = 22;    c2->win4 = 22;    c2->min1 = 934;    c2->min2 = 939;    c2->min3 = 933;    c2->min4 = 933;    c2->max1 = 939;    c2->max2 = 939;    c2->max3 = 939;    c2->max4 = 939;        c3->src  = 6;    c3->win1 = 42;    c3->win2 = 21;    c3->win3 = 17;    c3->win4 = 17;    c3->min1 = 839;    c3->min2 = 837;    c3->min3 = 839;    c3->min4 = 840;    c3->max1 = 842;    c3->max2 = 842;    c3->max3 = 842;    c3->max4 = 842;*/    call Marzullolib.add_mote(c1);    //call Marzullolib.add_mote(c2);    //call Marzullolib.add_mote(c3);  }    // init the application  command result_t StdControl.init() {    int8_t i;    dbg(DBG_USR1,"Marzullo init called\n");    call Leds.init();        Mmotes = MAX_MOTES;    Nmotes = 0;    Mintervals = 4*MAX_MOTES*2;    Nintervals = 0;    Mfinals = 4*MAX_MOTES*2;    Nfinals = 0;    sum_of_prob = 0;        for(i=0; i<Mintervals; i++)      input[i] = (struct Interval*) malloc(sizeof(struct Interval));    for(i=0; i<Mfinals; i++)      final[i] = (struct Interval*) malloc(sizeof(struct Interval));        // uncomment for simulation in tossim    // comment when deploy on mote    //[tb] testing for tossim    //add_mote_sim();        //call Marzullolib.doMarzullo();    return SUCCESS;  }  command result_t StdControl.start() {    return SUCCESS;  }    command result_t StdControl.stop() {    return SUCCESS;  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品欧美福利在线观看| 午夜视频一区在线观看| 国产成人无遮挡在线视频| www国产成人| 风间由美性色一区二区三区| 国产欧美日韩另类一区| jizzjizzjizz欧美| 一区二区三区久久| 欧美日韩国产另类不卡| 蜜桃av噜噜一区二区三区小说| 欧美一级片在线看| 狠狠色丁香久久婷婷综合_中| 久久综合九色欧美综合狠狠| 成人精品在线视频观看| 亚洲欧洲色图综合| 欧美日韩欧美一区二区| 黄页视频在线91| 亚洲色图丝袜美腿| 日韩欧美一级二级三级久久久| 国产成人三级在线观看| 亚洲午夜影视影院在线观看| 91精品久久久久久久91蜜桃| 国产另类ts人妖一区二区| 亚洲精品日韩一| 日韩一区二区免费高清| 成人亚洲一区二区一| 亚洲无线码一区二区三区| 精品国产乱码久久久久久牛牛| 成人av在线一区二区三区| 亚洲成人综合网站| 国产亚洲美州欧州综合国| 91国偷自产一区二区三区观看| 麻豆91在线播放免费| 国产精品久久影院| 欧美一区二区免费| 一道本成人在线| 国产精品综合网| 五月天婷婷综合| 18涩涩午夜精品.www| 欧美一区二区三区爱爱| 色婷婷综合激情| 国产精品18久久久久久久网站| 亚洲高清免费一级二级三级| 国产欧美日韩在线视频| 91精品免费在线| 色综合天天综合狠狠| 韩国视频一区二区| 日日摸夜夜添夜夜添精品视频| 国产精品每日更新| 久久老女人爱爱| 91精品国产一区二区人妖| 色婷婷精品久久二区二区蜜臂av| 国产精品一品二品| 精东粉嫩av免费一区二区三区 | 中文字幕av一区二区三区| 日本韩国精品一区二区在线观看| 国模冰冰炮一区二区| 图片区日韩欧美亚洲| 亚洲女同一区二区| 国产精品久久一级| 欧美高清在线精品一区| 精品福利一区二区三区 | 色婷婷综合中文久久一本| 国产高清精品网站| 久久99精品久久久久久久久久久久| 一区二区三区中文字幕精品精品| 中文字幕 久热精品 视频在线| 精品少妇一区二区| 日韩欧美国产wwwww| 欧美一区二区三区在线视频| 欧美精品欧美精品系列| 欧美日韩精品一二三区| 欧美制服丝袜第一页| 在线观看免费成人| 色激情天天射综合网| 欧洲视频一区二区| 在线观看网站黄不卡| 91久久精品一区二区三| 欧美综合一区二区| 欧美在线观看一区| 欧美情侣在线播放| 欧美一级国产精品| 日韩美女主播在线视频一区二区三区| 欧美伦理电影网| 在线不卡的av| 欧美不卡视频一区| 久久久久久麻豆| 国产精品免费视频一区| 中文字幕中文乱码欧美一区二区 | 亚洲私人影院在线观看| 亚洲乱码国产乱码精品精的特点| 亚洲伦理在线精品| 亚洲成人综合网站| 久久99精品国产.久久久久久| 国产永久精品大片wwwapp| 丁香五精品蜜臀久久久久99网站| 99国产麻豆精品| 精品视频在线看| 欧美一区二区三区影视| 国产三区在线成人av| 国产精品第一页第二页第三页| 亚洲精品美腿丝袜| 蜜臀av一区二区在线观看| 韩国一区二区三区| 91网页版在线| 制服丝袜中文字幕一区| 国产亚洲精品资源在线26u| 亚洲欧美福利一区二区| 日韩激情视频网站| 丰满少妇久久久久久久| 91久久精品午夜一区二区| 91精品婷婷国产综合久久性色 | 99久久伊人精品| 欧美片在线播放| 国产喂奶挤奶一区二区三区| 亚洲欧美经典视频| 久久精品国产亚洲高清剧情介绍| 国产91精品免费| 欧美一区二区在线不卡| 国产精品传媒在线| 久久99国产精品麻豆| 色久综合一二码| 久久久久久久久久久久久久久99| 亚洲黄色录像片| 国产麻豆视频一区| 欧美日韩精品一区二区天天拍小说| 国产亚洲午夜高清国产拍精品 | 国产精品二三区| 免费日本视频一区| 91在线观看一区二区| 日韩欧美久久久| 亚洲午夜一区二区三区| 丁香婷婷综合色啪| 欧美r级电影在线观看| 亚洲一二三区在线观看| 国产高清亚洲一区| 日韩欧美中文一区| 亚洲亚洲人成综合网络| 91在线精品一区二区| 久久久久久久久97黄色工厂| 日韩中文字幕麻豆| 色哟哟国产精品免费观看| 中文字幕的久久| 国产一区二区不卡在线| 日韩视频一区二区在线观看| 亚洲国产中文字幕| 91在线精品一区二区| 国产精品午夜电影| 精品一区二区三区免费毛片爱| 在线一区二区三区四区五区| 国产精品午夜久久| 国产a精品视频| 久久久亚洲午夜电影| 蜜桃一区二区三区四区| 欧美顶级少妇做爰| 亚洲电影在线播放| 欧美性一级生活| 悠悠色在线精品| 色哟哟亚洲精品| 一区二区三区不卡视频| 99视频精品在线| 亚洲欧美在线另类| 国产69精品一区二区亚洲孕妇| 久久亚洲一区二区三区明星换脸| 国产主播一区二区| 26uuuu精品一区二区| 激情综合网最新| 久久这里只有精品首页| 国产在线精品一区二区夜色 | 国产精品伦理在线| 不卡视频在线观看| 亚洲欧洲日韩女同| 色呦呦国产精品| 亚洲h在线观看| 欧美一区日韩一区| 久久国产精品72免费观看| 久久综合久久久久88| 国产成人在线影院| 国产精品无人区| 91污在线观看| 天堂va蜜桃一区二区三区| 日韩一区二区三区免费观看| 男人的天堂久久精品| 亚洲精品一区二区三区四区高清| 国产精品白丝jk白祙喷水网站| 国产三级精品视频| 97精品国产露脸对白| 亚洲.国产.中文慕字在线| 欧美一级片在线| 福利一区福利二区| 亚洲欧洲制服丝袜| 欧美一级免费观看| 丁香激情综合五月| 一区二区视频免费在线观看| 91精品国产综合久久久蜜臀图片| 九九国产精品视频| 亚洲欧洲国产日韩| 制服视频三区第一页精品| 精品亚洲免费视频| 亚洲精品国产a|