download tesi - MobiLab - Università degli Studi di Napoli Federico II
download tesi - MobiLab - Università degli Studi di Napoli Federico II
download tesi - MobiLab - Università degli Studi di Napoli Federico II
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
}<br />
Progetto e valutazione <strong>di</strong> algoritmi per la raccolta<br />
dati affidabili su reti <strong>di</strong> sensori senza cavo<br />
task void SendMasterMessage()<br />
{Master_Msg * payload; payload = (Master_Msg *)master_message.data;<br />
payload->becomeMaster =TRUE; payload->id actual master=TOS LOCAL ADDRESS;<br />
if(NroSen<strong>di</strong>ngnext_master=designed_address; atomic rcv_ack=FALSE;<br />
//mando messaggio a nuovo master<br />
if(call SendMasterMsg.send(designed_address, sizeof(Master_Msg),<br />
&master_message)!=FAIL)<br />
{NroSen<strong>di</strong>ng++;<br />
//Attivo timer e aspetto ack PER 5SEC (ack timer).<br />
call TimerAck.start(TIMER_ONE_SHOT, ACK_TIMER); }<br />
else { NroSen<strong>di</strong>ng++; post SendMasterMessage();}<br />
}<br />
else<br />
{dbg(DBG_TEMP,"Rimango master - %d -\n",TOS_LOCAL_ADDRESS);<br />
NroSen<strong>di</strong>ng=0; Risveglio=NroAck;<br />
dbg(DBG_TEMP, "IMCLUSTERHEAD\n"); }<br />
2<br />
Figura 4.11: Procedura <strong>di</strong> invio <strong>di</strong> un messaggio Master<br />
comunicazione ra<strong>di</strong>o, oppure che esso abbia esaurito le sue riserve<br />
energetiche e quin<strong>di</strong> non sia eleggibile. In questo caso si prevede che, dopo<br />
un NRO_MAX_SENDING (riquadro 2), il nodo opti per rimanere cluster-<br />
head. (chiaramente questa procedura può essere variata e più in dettaglio si<br />
può prevedere che si contatti il nodo successivo nell’anello logico formato<br />
dai no<strong>di</strong> sensori appartenenti allo stesso cluster). Riguardo le azioni svolte<br />
dai no<strong>di</strong> che ricevono un messaggio <strong>di</strong> elezione queste sono esplicitate in<br />
figura 4.12. Lo scenario banale prevede che i no<strong>di</strong> che ricevono un<br />
messaggio master_msg compongano un messaggio <strong>di</strong> ack e lo inviano al<br />
vecchio leader. Nel caso in cui si verifichi una per<strong>di</strong>ta <strong>di</strong> un messaggio <strong>di</strong><br />
ack (riquadro 2) l’evento viene isolato e gestito facilmente in quanto il nodo<br />
si sarà già settato a master e quin<strong>di</strong> la ricezione <strong>di</strong> un nuovo messaggio<br />
97<br />
1