Bugfix: select the best parent if current parent is NULL
This commit is contained in:
parent
8d1680fed5
commit
2647f879c2
1 changed files with 4 additions and 3 deletions
|
@ -33,7 +33,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: collect.c,v 1.47 2010/04/30 07:33:51 adamdunkels Exp $
|
* $Id: collect.c,v 1.48 2010/06/14 06:54:47 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -138,8 +138,6 @@ update_rtmetric(struct collect_conn *tc)
|
||||||
/* Pick the neighbor to use as a parent. We normally use
|
/* Pick the neighbor to use as a parent. We normally use
|
||||||
the parent in the n->parent. */
|
the parent in the n->parent. */
|
||||||
n = collect_neighbor_find(&tc->parent);
|
n = collect_neighbor_find(&tc->parent);
|
||||||
/* Find the neighbor with the lowest rtmetric. */
|
|
||||||
best = collect_neighbor_best();
|
|
||||||
|
|
||||||
/* If we do not have a parent in n->parent, we use the best
|
/* If we do not have a parent in n->parent, we use the best
|
||||||
neighbor that we have as a new parent. Also, if the best
|
neighbor that we have as a new parent. Also, if the best
|
||||||
|
@ -157,6 +155,8 @@ update_rtmetric(struct collect_conn *tc)
|
||||||
PRINTF("#L %d 0\n", tc->parent.u8[0]);
|
PRINTF("#L %d 0\n", tc->parent.u8[0]);
|
||||||
PRINTF("#L %d 1\n", best->addr.u8[0]);
|
PRINTF("#L %d 1\n", best->addr.u8[0]);
|
||||||
rimeaddr_copy(&tc->parent, &best->addr);
|
rimeaddr_copy(&tc->parent, &best->addr);
|
||||||
|
|
||||||
|
n = best;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If n is NULL, we have no best neighbor. */
|
/* If n is NULL, we have no best neighbor. */
|
||||||
|
@ -613,6 +613,7 @@ node_packet_sent(struct unicast_conn *c, int status, int transmissions)
|
||||||
// PRINTF("Updating ETX with %d transmissions (punished %d)\n", tc->transmissions,
|
// PRINTF("Updating ETX with %d transmissions (punished %d)\n", tc->transmissions,
|
||||||
// tx);
|
// tx);
|
||||||
collect_neighbor_update_etx(collect_neighbor_find(&tc->parent), tx);
|
collect_neighbor_update_etx(collect_neighbor_find(&tc->parent), tx);
|
||||||
|
|
||||||
update_rtmetric(tc);
|
update_rtmetric(tc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue