您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ rpl_process_parent_event函数代码示例

51自学网 2021-06-02 11:56:12
  C++
这篇教程C++ rpl_process_parent_event函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中rpl_process_parent_event函数的典型用法代码示例。如果您正苦于以下问题:C++ rpl_process_parent_event函数的具体用法?C++ rpl_process_parent_event怎么用?C++ rpl_process_parent_event使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了rpl_process_parent_event函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: global_repair

/*---------------------------------------------------------------------------*/static voidglobal_repair(uip_ipaddr_t *from, rpl_dag_t *dag, rpl_dio_t *dio){  rpl_parent_t *p;  remove_parents(dag, 0);  dag->version = dio->version;  dag->instance->of->reset(dag);  dag->min_rank = INFINITE_RANK;  RPL_LOLLIPOP_INCREMENT(dag->instance->dtsn_out);  p = rpl_add_parent(dag, dio, from);  if(p == NULL) {    PRINTF("RPL: Failed to add a parent during the global repair/n");    dag->rank = INFINITE_RANK;  } else {    dag->rank = dag->instance->of->calculate_rank(p, 0);    dag->min_rank = dag->rank;    PRINTF("RPL: rpl_process_parent_event global repair/n");    rpl_process_parent_event(dag->instance, p);  }  PRINTF("RPL: Participating in a global repair (version=%u, rank=%hu)/n",         dag->version, dag->rank);  RPL_STAT(rpl_stats.global_repairs++);}
开发者ID:Johnyren,项目名称:orpl,代码行数:28,


示例2: rpl_recalculate_ranks

/*---------------------------------------------------------------------------*/voidrpl_recalculate_ranks(void){  rpl_parent_t *p;  /*   * We recalculate ranks when we receive feedback from the system rather   * than RPL protocol messages. This periodical recalculation is called   * from a timer in order to keep the stack depth reasonably low.   */  p = nbr_table_head(rpl_parents);  while(p != NULL) {#if WITH_ORPL    /* In ORPL the rank is not bound to a particular parent.     * We just want to calculate it once. */    if(p->dag != NULL && p->dag->instance) {      p->dag->instance->of->calculate_rank(p, 0);      break;    }#else /* WITH_ORPL */    if(p->dag != NULL && p->dag->instance && p->updated) {      p->updated = 0;      PRINTF("RPL: rpl_process_parent_event recalculate_ranks/n");      if(!rpl_process_parent_event(p->dag->instance, p)) {        PRINTF("RPL: A parent was dropped/n");      }    }#endif /* WITH_ORPL */    p = nbr_table_next(rpl_parents, p);  }}
开发者ID:Johnyren,项目名称:orpl,代码行数:32,


示例3: rpl_recalculate_ranks

voidrpl_recalculate_ranks(void){  rpl_dag_t *dag;  rpl_parent_t *p;  /*   * We recalculate ranks when we receive feedback from the system rather   * than RPL protocol messages. This periodical recalculation is called   * from a timer in order to keep the stack depth reasonably low.   */  dag = rpl_get_dag(RPL_ANY_INSTANCE);  if(dag != NULL) {    for(p = list_head(dag->parents); p != NULL; p = p->next) {      if(p->updated) {	p->updated = 0;	rpl_process_parent_event(dag, p);	/*	 * Stop calculating here because the parent list may have changed.	 * If more ranks need to be recalculated, it will be taken care of	 * in subsequent calls to this functions.	 */	break;      }    }  }}
开发者ID:lepton-distribution,项目名称:lepton-root.scions,代码行数:27,


示例4: rpl_recalculate_ranks

/*---------------------------------------------------------------------------*/voidrpl_recalculate_ranks(void){  rpl_instance_t *instance, *end;  rpl_parent_t *p;  int i;  /*   * We recalculate ranks when we receive feedback from the system rather   * than RPL protocol messages. This periodical recalculation is called   * from a timer in order to keep the stack depth reasonably low.   */  for(instance = &instance_table[0], end = instance + RPL_MAX_INSTANCES; instance < end; ++instance) {    if(instance->used) {      for(i = 0; i < RPL_MAX_DAG_PER_INSTANCE; i++) {        if(instance->dag_table[i].used) {          for(p = list_head(instance->dag_table[i].parents); p != NULL; p = p->next) {            if(p->updated) {              p->updated = 0;              if(!rpl_process_parent_event(instance, p)) {                PRINTF("RPL: A parent was dropped/n");              }	      /*	       * Stop calculating here because the parent list may have changed.	       * If more ranks need to be recalculated, it will be taken care of	       * in subsequent calls to this functions.	       */              break;            }          }        }      }    }  }}
开发者ID:denghongcai,项目名称:6lbr,代码行数:36,


示例5: rpl_recalculate_ranks

/*---------------------------------------------------------------------------*/voidrpl_recalculate_ranks(void){  rpl_parent_t *p;  rpl_instance_t *instance;  rpl_instance_t *end;  int i;  int updated = 0;  /*   * We recalculate ranks when we receive feedback from the system rather   * than RPL protocol messages. This periodical recalculation is called   * from a timer in order to keep the stack depth reasonably low.   */  p = nbr_table_head(rpl_parents);  while(p != NULL) {    if(p->dag != NULL && p->dag->instance && (p->flags & RPL_PARENT_FLAG_UPDATED)) {      p->flags &= ~RPL_PARENT_FLAG_UPDATED;      updated = 1;      PRINTF("RPL: rpl_process_parent_event recalculate_ranks/n");      if(!rpl_process_parent_event(p->dag->instance, p)) {        PRINTF("RPL: A parent was dropped/n");      }    }    p = nbr_table_next(rpl_parents, p);  }  if (!updated) {    for(instance = &instance_table[0], end = instance + RPL_MAX_INSTANCES;        instance < end; ++instance) {      if(instance->used) {        for(i = 0; i < RPL_MAX_DAG_PER_INSTANCE; i++) {          if(instance->dag_table[i].used && instance->dag_table[i].preferred_parent != NULL) {            rpl_process_parent_event(instance, instance->dag_table[i].preferred_parent);          }        }      }    }  }}
开发者ID:Jakl555,项目名称:6lbr,代码行数:41,


示例6: rpl_recalculate_ranks

/*---------------------------------------------------------------------------*/voidrpl_recalculate_ranks(void){  rpl_parent_t *p;//uip_ipaddr_t *x; //rpl_parent_t *pref_parent =(&instance_table[0])->current_dag->preferred_parent;//mark  /*   * We recalculate ranks when we receive feedback from the system rather   * than RPL protocol messages. This periodical recalculation is called   * from a timer in order to keep the stack depth reasonably low.   */  p = nbr_table_head(rpl_parents);//printf("rank= %u:{", (((&instance_table[0])->current_dag->rank)/256));//,list_length((&instance_table[0])->current_dag->parents));//256);//mark  while(p != NULL) {	/*x=rpl_get_parent_ipaddr(p);	printf("(");//mark	if(p==pref_parent)//mark		printf("pref-prnt ");//mark	printf(" %02x%02x ",((uint8_t *)x)[14], ((uint8_t *)x)[15]);//mark	printf("etx=%d.%d, rssi=%d, rank=%u", p->link_metric/128, p->link_metric%128 ,p->rssi, p->rank/256);//mark*/	/* if(p->rssi > RSSI_THRESHOLD && (clock_seconds()-p->update_time)<AGE_THRESHOLD && p->flag==PRNT)		{p->flag= Pt_PRNT;		PRINTF("P_t prnt=");		PRINT6ADDR(rpl_get_parent_ipaddr(p));		PRINTF(",");		}*/    if(p->dag != NULL && p->dag->instance && p->updated) {      p->updated = 0;//      PRINTF("RPL: rpl_process_parent_event recalculate_ranks/n");      if(!rpl_process_parent_event(p->dag->instance, p)) {//        PRINTF("RPL: A parent was dropped/n");      }	    }//printf(")");//mark    p = nbr_table_next(rpl_parents, p);  }//printf("}/n");//mark}
开发者ID:e2rezaei,项目名称:set-Tx,代码行数:45,


示例7: rpl_process_dio

//.........这里部分代码省略.........    PRINTF("RPL: Ignoring DIO with too low rank: %u/n",           (unsigned)dio->rank);    return;  } else if(dio->rank == INFINITE_RANK && dag->joined) {    rpl_reset_dio_timer(instance);  }    /* Prefix Information Option treated to add new prefix */  if(dio->prefix_info.length != 0) {    if(dio->prefix_info.flags & UIP_ND6_RA_FLAG_AUTONOMOUS) {      PRINTF("RPL : Prefix announced in DIO/n");      rpl_set_prefix(dag, &dio->prefix_info.prefix, dio->prefix_info.length);    }  }  if(dag->rank == ROOT_RANK(instance)) {    if(dio->rank != INFINITE_RANK) {      instance->dio_counter++;    }#if !WITH_ORPL    return; /* With ORPL we want to have neighbors in the "rpl_parents"    table as we need their rank and ackcount for routing set. */#endif  }  /*   * At this point, we know that this DIO pertains to a DAG that   * we are already part of. We consider the sender of the DIO to be   * a candidate parent, and let rpl_process_parent_event decide   * whether to keep it in the set.   */  p = rpl_find_parent(dag, from);  if(p == NULL) {    previous_dag = find_parent_dag(instance, from);    if(previous_dag == NULL) {      /* Add the DIO sender as a candidate parent. */      p = rpl_add_parent(dag, dio, from);      if(p == NULL) {        PRINTF("RPL: Failed to add a new parent (");        PRINT6ADDR(from);        PRINTF(")/n");        return;      }      PRINTF("RPL: New candidate parent with rank %u: ", (unsigned)p->rank);      PRINT6ADDR(from);      PRINTF("/n");    } else {      p = rpl_find_parent(previous_dag, from);      if(p != NULL) {        rpl_move_parent(previous_dag, dag, p);      }    }  } else {    if(p->rank == dio->rank) {      PRINTF("RPL: Received consistent DIO/n");      if(dag->joined) {        instance->dio_counter++;      }    } else {      p->rank=dio->rank;    }  }#if WITH_ORPL  if(dag->rank == ROOT_RANK(instance)) {    /* We have added the parent, now return if we are root */    return;  }#endif  PRINTF("RPL: preferred DAG ");  PRINT6ADDR(&instance->current_dag->dag_id);  PRINTF(", rank %u, min_rank %u, ",	 instance->current_dag->rank, instance->current_dag->min_rank);  PRINTF("parent rank %u, parent etx %u, link metric %u, instance etx %u/n",	 p->rank, -1/*p->mc.obj.etx*/, p->link_metric, instance->mc.obj.etx);  /* We have allocated a candidate parent; process the DIO further. */#if RPL_DAG_MC != RPL_DAG_MC_NONE  memcpy(&p->mc, &dio->mc, sizeof(p->mc));#endif /* RPL_DAG_MC != RPL_DAG_MC_NONE */  if(rpl_process_parent_event(instance, p) == 0) {    PRINTF("RPL: The candidate parent is rejected/n");    return;  }  /* We don't use route control, so we can have only one official parent. */  if(dag->joined && p == dag->preferred_parent) {    if(should_send_dao(instance, dio, p)) {      RPL_LOLLIPOP_INCREMENT(instance->dtsn_out);      rpl_schedule_dao(instance);    }    /* We received a new DIO from our preferred parent.     * Call uip_ds6_defrt_add to set a fresh value for the lifetime counter */    uip_ds6_defrt_add(from, RPL_LIFETIME(instance, instance->default_lifetime));  }  p->dtsn = dio->dtsn;}
开发者ID:Johnyren,项目名称:orpl,代码行数:101,


示例8: rpl_process_dio

//.........这里部分代码省略.........    PRINT6ADDR(from);    PRINTF("/n");    return;  }  if(instance == NULL) {    PRINTF("RPL: New instance detected: Joining.../n");    rpl_join_instance(from, dio);    return;  }  if(dag == NULL) {    PRINTF("RPL: Adding new DAG to known instance./n");    rpl_add_dag(from, dio);    return;  }  if(dio->rank < ROOT_RANK(instance)) {    PRINTF("RPL: Ignoring DIO with too low rank: %u/n",           (unsigned)dio->rank);    return;  } else if(dio->rank == INFINITE_RANK && dag->joined) {    rpl_reset_dio_timer(instance);  }  if(dag->rank == ROOT_RANK(instance)) {    if(dio->rank != INFINITE_RANK) {      instance->dio_counter++;    }    return;  }  /*   * At this point, we know that this DIO pertains to a DAG that   * we are already part of. We consider the sender of the DIO to be   * a candidate parent, and let rpl_process_parent_event decide   * whether to keep it in the set.   */  p = rpl_find_parent(dag, from);  if(p == NULL) {    previous_dag = find_parent_dag(instance, from);    if(previous_dag == NULL) {      if(RPL_PARENT_COUNT(dag) == RPL_MAX_PARENTS_PER_DAG) {        /* Make room for a new parent. */        remove_worst_parent(dag, dio->rank);      }      /* Add the DIO sender as a candidate parent. */      p = rpl_add_parent(dag, dio, from);      if(p == NULL) {        PRINTF("RPL: Failed to add a new parent (");        PRINT6ADDR(from);        PRINTF(")/n");        return;      }      PRINTF("RPL: New candidate parent with rank %u: ", (unsigned)p->rank);      PRINT6ADDR(from);      PRINTF("/n");    } else {      p = rpl_find_parent(previous_dag, from);      if(p != NULL) {        rpl_move_parent(previous_dag, dag, p);      }    }  } else {    if(p->rank == dio->rank) {      PRINTF("RPL: Received consistent DIO/n");      if(dag->joined) {        instance->dio_counter++;      }    } else {      p->rank=dio->rank;    }  }  PRINTF("RPL: preferred DAG ");  PRINT6ADDR(&instance->current_dag->dag_id);  PRINTF(", rank %u, min_rank %u, ",	 instance->current_dag->rank, instance->current_dag->min_rank);  PRINTF("parent rank %u, parent etx %u, link metric %u, instance etx %u/n",	 p->rank, p->mc.obj.etx, p->link_metric, instance->mc.obj.etx);  /* We have allocated a candidate parent; process the DIO further. */  memcpy(&p->mc, &dio->mc, sizeof(p->mc));  if(rpl_process_parent_event(instance, p) == 0) {    PRINTF("RPL: The candidate parent is rejected/n");    return;  }  /* We don't use route control, so we can have only one official parent. */  if(dag->joined && p == dag->preferred_parent) {    if(should_send_dao(instance, dio, p)) {      RPL_LOLLIPOP_INCREMENT(instance->dtsn_out);      rpl_schedule_dao(instance);    }  }  p->dtsn = dio->dtsn;}
开发者ID:Johnyren,项目名称:orpl,代码行数:101,


示例9: rpl_process_dio

voidrpl_process_dio(uip_ipaddr_t *from, rpl_dio_t *dio){  rpl_dag_t *dag;  rpl_parent_t *p;  if(dio->mop != RPL_MOP_DEFAULT) {    PRINTF("RPL: Ignoring a DIO with an unsupported MOP: %d/n", dio->mop);    return;  }// LVD 24/03/2011  instanceID = dio->instance_id;    dag = rpl_get_dag(dio->instance_id);  if(dag == NULL) {    /* Join the first possible DAG of this RPL instance. */    if(dio->rank != INFINITE_RANK) {      join_dag(from, dio);    } else {      PRINTF("RPL: Ignoring DIO from node with infinite rank: ");      PRINT6ADDR(from);      PRINTF("/n");    }    return;  }  if(memcmp(&dag->dag_id, &dio->dag_id, sizeof(dag->dag_id))) {    PRINTF("RPL: Ignoring DIO for another DAG within our instance/n");    return;  }  if(dio->version > dag->version) {    if(dag->rank == ROOT_RANK(dag)) {      PRINTF("RPL: Root received inconsistent DIO version number/n");      dag->version = dio->version + 1;      rpl_reset_dio_timer(dag, 1);    } else {      global_repair(from, dag, dio);    }    return;  } else if(dio->version < dag->version) {    /* Inconsistency detected - someone is still on old version */    PRINTF("RPL: old version received => inconsistency detected/n");    rpl_reset_dio_timer(dag, 1);    return;  }  if(dio->rank == INFINITE_RANK) {    rpl_reset_dio_timer(dag, 1);  } else if(dio->rank < ROOT_RANK(dag)) {    PRINTF("RPL: Ignoring DIO with too low rank: %u/n",           (unsigned)dio->rank);    return;  }  if(dag->rank == ROOT_RANK(dag)) {    if(dio->rank != INFINITE_RANK) {      dag->dio_counter++;    }    return;  }  /*   * At this point, we know that this DIO pertains to a DAG that   * we are already part of. We consider the sender of the DIO to be   * a candidate parent, and let rpl_process_parent_event decide   * whether to keep it in the set.   */  p = rpl_find_parent(dag, from);  if(p == NULL) {    if(RPL_PARENT_COUNT(dag) == RPL_MAX_PARENTS) {      /* Make room for a new parent. */      remove_worst_parent(dag, dio->rank);    }        /* Add the DIO sender as a candidate parent. */    p = rpl_add_parent(dag, dio, from);    if(p == NULL) {      PRINTF("RPL: Failed to add a new parent (");      PRINT6ADDR(from);      PRINTF(")/n");      return;    }    PRINTF("RPL: New candidate parent with rank %u: ", (unsigned)p->rank);    PRINT6ADDR(from);    PRINTF("/n");  } else if(DAG_RANK(p->rank, dag) == DAG_RANK(dio->rank, dag)) {    PRINTF("RPL: Received consistent DIO/n");    dag->dio_counter++;  }    /* We have allocated a candidate parent; process the DIO further. */  memcpy(&p->mc, &dio->mc, sizeof(p->mc));      p->rank = dio->rank;  if(rpl_process_parent_event(dag, p) == 0) {    /* The candidate parent no longer exists. *///.........这里部分代码省略.........
开发者ID:lepton-distribution,项目名称:lepton-root.scions,代码行数:101,


示例10: rpl_process_dio

//.........这里部分代码省略.........      rpl_set_prefix(dag, &dio->prefix_info.prefix, dio->prefix_info.length);    }  }  if(dag->rank == ROOT_RANK(instance)) {    if(dio->rank != INFINITE_RANK) {      instance->dio_counter++;    }    return;  }  /*   * At this point, we know that this DIO pertains to a DAG that   * we are already part of. We consider the sender of the DIO to be   * a candidate parent, and let rpl_process_parent_event decide   * whether to keep it in the set.   */  p = rpl_find_parent(dag, from);  if(p == NULL) {    previous_dag = find_parent_dag(instance, from);    if(previous_dag == NULL) {      /* Add the DIO sender as a candidate parent. */      p = rpl_add_parent(dag, dio, from);      if(p == NULL) {        PRINTF("RPL: Failed to add a new parent (");        PRINT6ADDR(from);        PRINTF(")/n");        return;      }      PRINTF("RPL: New candidate parent with rank %u: ", (unsigned)p->rank);      PRINT6ADDR(from);      PRINTF("/n");    } else {      p = rpl_find_parent(previous_dag, from);      if(p != NULL) {        rpl_move_parent(previous_dag, dag, p);      }    }  } else {    if(p->rank == dio->rank) {      PRINTF("RPL: Received consistent DIO/n");      if(dag->joined) {        instance->dio_counter++;      }    } else {      p->rank = dio->rank;    }  }  PRINTF("RPL: preferred DAG ");  PRINT6ADDR(&instance->current_dag->dag_id);  PRINTF(", rank %u, min_rank %u, ",         instance->current_dag->rank, instance->current_dag->min_rank);  PRINTF("parent rank %u, parent etx %u, link metric %u, instance etx %u/n",         p->rank, -1 /*p->mc.obj.etx */, p->link_metric,         instance->mc.obj.etx);  /*   * If the DIO being processed came from smart-HOP decision, change default route,   * schedule DAO and finish the mobility process.   */  if(mobility) {    rpl_remove_parent(previous_preferred);    rpl_set_preferred_parent(dag, p);    RPL_LOLLIPOP_INCREMENT(instance->dtsn_out);    /*dao_output(p, 255);*/    /* We received a new DIO from our preferred parent.     * Call uip_ds6_defrt_add to set a fresh value for the lifetime counter */    PRINTF("adding default route/n");	current_t = clock_time() * 1000 / CLOCK_SECOND;	 printf("End %u/n", current_t);    rpl_set_default_route(instance, from);    rpl_schedule_dao(instance);    /*check_dao_ack = 1;*/    process_post(&tcpip_process, RESET_MOBILITY_FLAG, NULL);    return;  }  if(mobility == 0) {#if RPL_DAG_MC != RPL_DAG_MC_NONE    memcpy(&p->mc, &dio->mc, sizeof(p->mc));#endif /* RPL_DAG_MC != RPL_DAG_MC_NONE */    if(rpl_process_parent_event(instance, p) == 0) {      PRINTF("RPL: The candidate parent is rejected/n");      return;    }  }  /* We don't use route control, so we can have only one official parent. */  if(dag->joined && p == dag->preferred_parent) {    if(should_send_dao(instance, dio, p)) {      RPL_LOLLIPOP_INCREMENT(instance->dtsn_out);      rpl_schedule_dao(instance);    }    /* We received a new DIO from our preferred parent.     * Call uip_ds6_defrt_add to set a fresh value for the lifetime counter */    uip_ds6_defrt_add(from,                      RPL_LIFETIME(instance, instance->default_lifetime));  }  p->dtsn = dio->dtsn;}
开发者ID:jiangxianliang,项目名称:smart-HOP,代码行数:101,



注:本文中的rpl_process_parent_event函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ rpl_remove_parent函数代码示例
C++ rpl_get_parent_ipaddr函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。