Frederico Prado / smartRamalEZR

Dependencies:   CRC16 FreescaleIAP FreescaleWatchdog GGSProtocol LM75B PIMA Parameters PersistentCircularQueue SerialNumberV2COM mbed-dev-watchdog_2016_03_04

Fork of smartRamalKW by Equipe Firmware V2COM

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers religar.cpp Source File

religar.cpp

00001 #include "appCommands.h"
00002 #include "sensor.h"
00003 #include "alarm.h"
00004 
00005 #define RELIGAR_SUCESSO                     0
00006 #define RELIGAR_NAO_CONFIRMADO              1
00007 #define RELIGAR_POSSIVEL_RETORNO_POTENCIAL  2
00008 #define RELIGAR_RETORNO_POTENCIAL           3
00009 #define RELIGAR_JA_LIGADO                   4
00010 #define RELIGAR_ESTADO_RELE_INCONSISTENTE   5
00011 #define RELIGAR_NAO_CONFIRMADO_JA_FECHADO   6
00012 #define RELIGAR_ESTADO_ILEGAL               7
00013 
00014 extern DigitalOut set_relay;
00015 extern Alarm alarm;
00016 
00017 void enviaPulso(){
00018     set_relay = RELE_ON;
00019     wait_ms(APP_PARAMETERS.RELIGAR_LARGURA_PULSO_MS);
00020     set_relay = RELE_OFF;
00021     atualizaEstadoRele(ESTADO_RELE_FECHADO);
00022     wait_ms(APP_PARAMETERS.DELAY_SENSOR_MS);
00023 }
00024 
00025 void cmdReligar(){
00026 #ifdef TEST_MODE
00027     enviaPulso();
00028     if(getSensorState(APP_PARAMETERS.LOAD_CHANNEL) == SENSOR_COM_FORNECIMENTO){
00029         exec.enviaResposta(RESP_RELIGAR, RELIGAR_SUCESSO);
00030     } else{
00031         exec.enviaResposta(RESP_RELIGAR, RELIGAR_NAO_CONFIRMADO);
00032     }
00033 #else
00034     unsigned char rele = lerEstadoRele();
00035     char resp = RELIGAR_ESTADO_ILEGAL;
00036     switch(rele){
00037         case ESTADO_RELE_INDEFINIDO:
00038             if(checkVoltageReturn(APP_PARAMETERS.LOAD_CHANNEL) == SENSOR_COM_FORNECIMENTO){
00039                 resp = RELIGAR_POSSIVEL_RETORNO_POTENCIAL;
00040             } else{
00041                 enviaPulso();
00042                 if(getSensorState(APP_PARAMETERS.LOAD_CHANNEL) == SENSOR_COM_FORNECIMENTO){
00043                     resp = RELIGAR_SUCESSO;
00044                 } else{
00045                     resp = RELIGAR_NAO_CONFIRMADO;
00046                 }
00047             }
00048             break;
00049             
00050         case ESTADO_RELE_ABERTO:
00051             if(checkVoltageReturn(APP_PARAMETERS.LOAD_CHANNEL) == SENSOR_COM_FORNECIMENTO){
00052                 resp = RELIGAR_RETORNO_POTENCIAL;
00053                 alarm.writeAlarm(ALARME_RETORNO_POTENCIAL, true, false);
00054             } else{
00055                 enviaPulso();
00056                 if(getSensorState(APP_PARAMETERS.LOAD_CHANNEL) == SENSOR_COM_FORNECIMENTO){
00057                     resp = RELIGAR_SUCESSO;
00058                 } else{
00059                     resp = RELIGAR_NAO_CONFIRMADO;
00060                 }
00061             }
00062             break;
00063             
00064         case ESTADO_RELE_FECHADO:
00065             if(getSensorState(APP_PARAMETERS.LOAD_CHANNEL) == SENSOR_COM_FORNECIMENTO){
00066                 resp = RELIGAR_JA_LIGADO;
00067             } else{
00068                 enviaPulso();
00069                 if(getSensorState(APP_PARAMETERS.LOAD_CHANNEL) == SENSOR_COM_FORNECIMENTO){
00070                     resp = RELIGAR_ESTADO_RELE_INCONSISTENTE;
00071                 } else{
00072                     resp = RELIGAR_NAO_CONFIRMADO_JA_FECHADO;
00073                 }
00074             }
00075             break;
00076     }
00077     exec.enviaResposta(RESP_RELIGAR, resp);
00078 #endif
00079 }