Programa Teste para monitoramento de ativos eletricos

Dependencies:   logger

Committer:
AndersonIctus (anderson.ictus@gmail.com)
Date:
Tue May 14 22:34:36 2019 -0300
Revision:
5:1b0cd3a1f3c7
Parent:
3:213ab6bbf852
* Incluindo eventos ao Giroscopio
(Talvez um Girocospio Observer seria legal aqui !!)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndersonIctus 3:213ab6bbf852 1 #include "Logger.h"
AndersonIctus 3:213ab6bbf852 2
AndersonIctus 3:213ab6bbf852 3 class Giroscopio {
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 4 public:
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 5 Giroscopio() {
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 6 instance = NULL;
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 7 }
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 8
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 9 ~Giroscopio() {
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 10 instance = NULL;
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 11 }
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 12
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 13 static void setListener(Giroscopio* newListener) {
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 14 instance = newListener;
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 15 }
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 16
AndersonIctus 3:213ab6bbf852 17 /// Fica ouvindo se existe movimentação, Se existir ele executa a função de CALL BACK
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 18 static void ouvirMovimentacao() { // IRQ não pode haver LOG !!
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 19 if(instance != NULL) {
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 20 instance->_movimentacoes.call( &_doMovimentsActions ); //Executar fora do IRQ
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 21 }
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 22 }
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 23
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 24 void setLog(Logger * l) {
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 25 _l = l;
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 26 }
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 27
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 28 void setCallBackMovimentos( void (*fnCallBack)() ){
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 29 _fnCallBack = fnCallBack;
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 30 }
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 31
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 32 EventQueue* listMovimentacoes() {
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 33 return &_movimentacoes;
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 34 }
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 35
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 36 private:
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 37 Logger* _l;
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 38 EventQueue _movimentacoes;
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 39 void (*_fnCallBack)();
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 40
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 41 static Giroscopio* instance ;
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 42 static void _doMovimentsActions() {
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 43 Giroscopio::instance->doMovimentsActions();
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 44 }
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 45
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 46 void doMovimentsActions() {
AndersonIctus 3:213ab6bbf852 47 // 1 - Faz um TIME-OUT para mostrar que houve alguma movimentação !!
AndersonIctus 3:213ab6bbf852 48 _l->log("Verificando a movimentacao ...");
AndersonIctus 3:213ab6bbf852 49 _l->log("Esperando o call back ...");
AndersonIctus 3:213ab6bbf852 50 wait(0.5);
AndersonIctus 3:213ab6bbf852 51
AndersonIctus 3:213ab6bbf852 52 // 2 - quando há a movimentação, então chama o call back !!
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 53 if(_fnCallBack != NULL) {
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 54 _fnCallBack();
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 55 _l->log("Call back lancado !!");
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 56 } else {
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 57 _l->log("Nenhum call back configurado !!");
AndersonIctus (anderson.ictus@gmail.com) 5:1b0cd3a1f3c7 58 }
AndersonIctus 3:213ab6bbf852 59 }
AndersonIctus 3:213ab6bbf852 60 }
AndersonIctus 3:213ab6bbf852 61 ;