{{template>:doctable | name=ELISA | version=0.1 | accountable=Andre Mac Dowell | depdency= [[ClientLib]], Android }} ====== ELISA ====== A Energy-aware cLIent Services for Andrioid (ELISA) é uma biblioteca multi-thread para aplicações Android, que consiste de um par de serviços Android, o LocationService e o ConnectivityService e um conjunto de Broadcast Receivers (Android) que conjuntamente registram a posição geográfica do nó (p.ex. usando GPS), e realizam o envio de mensagens da aplicação carregando a posição corrente do nó,. ELISA verifica o nível da bateria do dispositivo a cada T minutos (usando o Android AlarmManager) e de acordo com a classificação em um de três níveis de energia - alta, média e baixa - define as frequências da leitura de posição e do envio dos dados, de modo a minimizar o consumo de energia do dispositivo. O ConnectivityService utiliza a ClientLib para bufferizacão, envio e recebimento das mensagens para o SDDL Core. ===== Usage ===== Explicar aqui como utilizar. Quais são as principais interfaces, elementos etc. Dar um rápido exemplo de como utilizar. Se possível e aplicável fazer um breve "hello world". public class Hello { public static void main(String args[]) { // Teste double x = 2; } } * ''getService()'' Returns Service * ''myMethod()'' Returns Service ===== Architecture ===== ELISA consiste de dois Android Services, que executam em treads independentes (vide Figura) O **LocationService** periodicamente verifica a posição do dispostivo (usando o Location Manager do Android), e caso esta tenha mudado, gera o broadcast NEW_LOCATION. Possui também um Broadcast Receiver, CHG_LOCATION_INTERVAL, que escuta por broadcasts do Battery Receiver e modifica o intervalo de polling da localização a depender do nível de bateria. O **Connection Service** gerencia uma lista de mensagens (MsgList), que acumula mensagens a serem enviadas para o Gateway através da ClientLib. Possui um Broadcast Receiver que ouve pelos broadcasts: NEW_LOCATION, NEW_MSG e CHG_SEND_MSG_INTERVAL. Para o primeiro tipo de broadcast, insere uma nova coordenada geografica na MsgList. Ao receber o broadcast NEW_MSG - de qualquer outra componente da app mobile - adiciona a mensagem na MsgLIst para envio pela ClientLib. Quando recebe o terceiro tipo de broadcast, aumenta ou diminui o sendAllMsgInterval, a periodicidade de envio de todas as mensagens acumuladas em MsgList através da ClientLib. Ao ser notificado do recebimento de uma nova mensagem pela ClientLib, o callback onNewMsgReceived() gera um Broadcast NEW_MSG_RECVD, que deve ser captado e processado por alguma componente da mobile app. Além disso, ELISA usa o AlarmManager do Android para periodicamente gerar o Intent (CHECK_BATTERY_LEVEL) para verificar o nível de energia, e classifica-lo em "LOW", "MEDIUM" ou "HIGH") pelo Battery Receiver. Já o PowerReceiver verifica se o dispositivo está conectado a uma fonte de energia ou se está sendo alimentado pela bateria. {{:elisa-arch.png?750|}} ===== Implementation Details ===== Detalhes de implementação, por exemplo, descrevendo as principais rotinas e os seus fluxos de execução, por onde o desenvolvedor deveria olhar para modificar esse componente. ===== References ===== Bibtex/PDF entry dos papers sobre esse componente.