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.
Progetto e valutazione <strong>di</strong> algoritmi per la raccolta<br />
dati affidabili su reti <strong>di</strong> sensori senza cavo<br />
base della seconda simulazione). Lo sviluppo della applicazione ha ricalcato<br />
l’approccio descritto nel paragrafo 9 e in figura 4.6 viene riportato uno<br />
stralcio della procedura seguita dal nodo sink per assicurarsi <strong>di</strong> ricevere le<br />
misurazioni dai no<strong>di</strong> sensori.<br />
Come si può intuire scatta un controllo del livello <strong>di</strong> copertura (riquadro 1)<br />
che mira ad in<strong>di</strong>viduare i no<strong>di</strong> che non sono stati in grado <strong>di</strong> recapitare le<br />
loro informazioni al nodo sink e nel caso in cui non si è ancora raggiunto il<br />
numero massimo <strong>di</strong> richieste possibili per ricercare una copertura completa<br />
della rete (riquadro 2) si provvede ad una nuova richiesta <strong>di</strong> misurazione. Il<br />
protocollo opera secondo uno schema <strong>di</strong> ritrasmissione end-to-end ma è<br />
attivato solo nel momento in cui il nodo sink si accorge <strong>di</strong> non avere a<br />
<strong>di</strong>sposizione misurazioni provenienti da determinati no<strong>di</strong> sensori; la<br />
event result_t TimerControlCoverage.fired() {<br />
…//<strong>di</strong>chiarazioni iniziali omissis<br />
//controllo livello <strong>di</strong> copertura<br />
for(i=1;iunavailable_mote[i]=FALSE;<br />
if(!measure_coverage[i]){ //compongo la nuova richiesta<br />
payload_cov->unavailable_mote[i]=TRUE; must_send=TRUE; }<br />
}<br />
//significa che ho trovato cluster non coperti dalla misurazione<br />
if(must_send && max_request_coveragevalue=SpecificMeasure; count_msg++;<br />
if(count_msg==0xFFFF) count_msg=1;<br />
payload_cov->count = count_msg;<br />
if(call SendMeasureMsg.send(TOS_BCAST_ADDR, sizeof(Measure_Msg),<br />
&message)!=SUCCESS)<br />
dbg(DBG_TEMP, "FALLITO\n"); }<br />
elseif(must_send&&max_request_coverage>=NRO_MAX_REQUEST_COVERAGE)<br />
{FailedCoverage++; max_request_coverage=0; }<br />
else if(!must_send)<br />
{max_request_coverage=0; }<br />
return SUCCESS;<br />
}<br />
Figura 4.6: Stralcio procedura seguita dal nodo sink per assicurarsi la ricezione<br />
delle misurazioni da parte dei no<strong>di</strong> sensori<br />
92<br />
1<br />
2<br />
3