30.11.2012 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!