Dans la version précédente, la couverture du réseau est très faible.
Ceci signifie que la requête ne parvient pas à tous les noeuds du réseau.
Comme les noeuds propagent la requête de construction simultanément, des collisions sont provoquées et donc des requêtes sont perdues durant la propagation par "broadcast".
Pour éliminer ce phénomène, une solution consisterait à introduire un délai aléatoire avant le relayage de la requête par les noeuds qui reçoivent cette requête.
Pour mettre en oeuvre cette solution nous aurons besoins de deux nouveaux éléments dans notre application HTC :
1/ Attendre un délai avant de relayer la requête
2/ Ce délai doit être aléatoire
Pour tirer profit de la programmation par composant utilisée dans TinyOS nous allons utiliser deux composants de TinyOS qui permettent d'implémenter ces deux comportement :
1/ TimerC : ce composant implémente une interface qui permet d'attendre et lancer un événement après le délai d'attente
2/ RandomLSFR : permet de générer des nombres aléatoires.
Etudiez ces deux composants en prenant connaissance de leurs fonctionnalités dans la libraire de TinyOS
Rajouter ces composants dans la configuration de l'application HTC.nc
Rajouter les liaisons nécessaires entre ces composants et notre composant TreeBuilderM
Rajouter dans le module TreeBuilderM le fait que le composant nécessite les interfaces Timer et Random
Mettre à jours l'implémentation de TreeBuilderM de telle sorte que chaque noeud attende un délai aléatoire à la réception de la requête de construction avant de faire appel à la tâche relayTreeReq pour relayer la requête à d'autres noeuds.
Relancer la compilation et l'exécution de HTC
Quel est le nouveau taux de couverture du réseau par l'arbre ainsi construit