Arquiteturas para Redes de Sensores Sem Fio - DCC/UFMG
Arquiteturas para Redes de Sensores Sem Fio - DCC/UFMG
Arquiteturas para Redes de Sensores Sem Fio - DCC/UFMG
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
}<br />
uses {<br />
interface Timer;<br />
interface Leds;<br />
}<br />
}//Continua abaixo<br />
A primeira parte do código indica que este é um módulo chamado BlinkM e <strong>de</strong>clara as<br />
interfaces fornecidas e utilizadas. O módulo BlinkM fornece a interface StdControl, o que<br />
significa que BlinkM implementa a interfaces <strong>de</strong> StdControl. Como explicado anteriormente,<br />
isto é necessário <strong>para</strong> iniciar o componente Blink e executá-lo. O módulo BlinkM também utiliza<br />
duas interfaces: Leds (diôdos emissores <strong>de</strong> luz) e Timer (temporizador). Isto significa que<br />
BlinkM po<strong>de</strong> chamar qualquer comando <strong>de</strong>clarado nestas interfaces, e <strong>de</strong>ve também implementar<br />
quaisquer eventos <strong>de</strong>clarados por estas interfaces.<br />
A interface Leds <strong>de</strong>fine alguns comandos, como redOn() e redOff(), que acen<strong>de</strong>m<br />
ou <strong>de</strong>sligam os diferentes LEDs (vermelho, ver<strong>de</strong>, ou amarelo) do mote. BlinkM po<strong>de</strong> invocar<br />
qualquer um <strong>de</strong>sses comandos porque ele usa a interface Leds.<br />
Timer é um temporizador. O comando start() é usado <strong>para</strong> especificar o tipo <strong>de</strong><br />
temporizador e o seu intervalo, especificados em milisegundos. O tipo TIMER REPEAT indica<br />
que o temporizador continua enquanto não for <strong>para</strong>do pelo comando stop(). Quando o timer<br />
expira, ele gera um evento que é recebido pela aplicação. A interface Timer fornece o evento:<br />
event result_t fired();<br />
Eventos po<strong>de</strong>m ser vistos como uma função <strong>de</strong> retorno que a implementação <strong>de</strong> uma interface<br />
irá invocar. Um módulo que usa uma interface <strong>de</strong>ve implementar os eventos que esta interface<br />
usa.<br />
BlinkM.nc, continuação<br />
implementation {<br />
command result_t StdControl.init() {<br />
call Leds.init();<br />
return SUCCESS;<br />
}<br />
command result_t StdControl.start() {<br />
return call Timer.start(TIMER_REPEAT, 1000) ;<br />
}<br />
command result_t StdControl.stop() {<br />
return call Timer.stop();<br />
}<br />
event result_t Timer.fired() {<br />
call Leds.redToggle();