15.04.2013 Views

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

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 />

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();

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

Saved successfully!

Ooh no, something went wrong!