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.

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

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

Saved successfully!

Ooh no, something went wrong!