Réseaux de Capteurs Sans Fils
CoursOutils transverses

Construction de l'arbre de routage par relais de la requête de construction

Lessons de la version précédente

Vous avez remarqué dans la version précédente que l'arbre construit est réduit à un seul saut.

Pour que la requête de construction parvienne aux autres noeuds, il est nécessaire de la faire relayer à chaque fois qu'elle est reçus par un noeud.

Pour cela, reprenez la version précédente de TreeBuilderM et rajoutez une tâche :

task void relayTreeReq() {

struct TreeReqMsg* ptr;

ptr = (struct TreeReqMsg*)(buffer.data);

ptr->src = TOS_LOCAL_ADDRESS;

dbg(DBG_USR2,"__ROUTE__:mainParent=%d\n",parentId);

call SendTreeReqMsg.send(TOS_BCAST_ADDR,sizeof(struct TreeReqMsg),&buffer);

}

Analysez que fait cette tâche.

Modifier TreeBuilderM pour que cette tâche soit appelée par chaque noeud recevant une requête de construction de l'arbre de routage.

Exécution et analyse

Relancer la compilation et l'exécution de cette nouvelle version.

Analyser le résultat obtenu.

Est ce que tous les noeuds couverts par l'arbre ont un chemin vers la racine (noeuds puis 0) ?

De quoi souffre cette version du protocole ?

Proposez une solution à ce problème.

Loop free routing protocolProtocole de routage "many-to-one" simple
Accueil Yacine CHALLAL creativecommons : by-ncRéalisé avec SCENARI