EZR
Dependencies: CRC16 FreescaleIAP FreescaleWatchdog GGSProtocol LM75B PIMA Parameters PersistentCircularQueue SerialNumberV2COM mbed-dev-watchdog_2016_03_04
Fork of smartRamalKW by
Revision 26:03c9ca836c79, committed 2015-12-03
- Comitter:
- fprado
- Date:
- Thu Dec 03 19:41:41 2015 +0000
- Parent:
- 25:2c578b923ea9
- Child:
- 27:dd1abde3f620
- Commit message:
- Adicionado suporte ? placa de RAMAL
Changed in this revision
--- a/announce.cpp Wed Nov 04 21:47:24 2015 +0000 +++ b/announce.cpp Thu Dec 03 19:41:41 2015 +0000 @@ -60,7 +60,11 @@ } announceBuffer[19] = (++announceBuffer[19])%256; +#ifdef RAMAL + memcpy(announceBuffer+21, MEDIDOR_DEFAULT_SN, MEDIDOR_LENGTH); +#else memcpy(announceBuffer+21, pima.getMeterNumber(), MEDIDOR_LENGTH); +#endif unsigned short int crc = getCRC(announceBuffer, 2, announceBuffer[2] + 1); announceBuffer[28] = crc%256; // CRC1 announceBuffer[29] = crc/256; // CRC2
--- a/announce.h Wed Nov 04 21:47:24 2015 +0000 +++ b/announce.h Thu Dec 03 19:41:41 2015 +0000 @@ -29,7 +29,9 @@ extern SerialNumber sn; extern CommandExecutor exec; +#ifndef RAMAL extern Pima pima; +#endif extern void enviaRespostaGGS(char * dados, int tamanho); #endif
--- a/appCommands.cpp Wed Nov 04 21:47:24 2015 +0000 +++ b/appCommands.cpp Thu Dec 03 19:41:41 2015 +0000 @@ -31,6 +31,7 @@ case CMD_ESTADO_FORNECIMENTO: cmdEstadoFornecimento(); break; +#ifndef RAMAL // só ativa comandos de medidor se o equipamento é um smart breaker case CMD_LER_ENERGIA_ATIVA: cmdLerEnergiaAtiva(); break; @@ -43,6 +44,7 @@ case CMD_BUSCAR_MEDIDOR: cmdBuscarMedidor(dados, tamanho - TAMANHO_MINIMO_PACOTE); break; +#endif case CMD_BUSCAR_DENDRION: cmdBuscarDendrion(broadcast); break;
--- a/cmd/buscarDendrion.cpp Wed Nov 04 21:47:24 2015 +0000 +++ b/cmd/buscarDendrion.cpp Thu Dec 03 19:41:41 2015 +0000 @@ -1,6 +1,10 @@ #include "appCommands.h" + +#ifndef RAMAL extern Pima pima; +#endif + extern SerialNumber sn; extern Announce announce; @@ -8,6 +12,10 @@ if(broadcast){ announce.startAnnounceTimer(); } else{ +#ifdef RAMAL + exec.enviaResposta(RESP_BUSCAR_DENDRION, (char *)MEDIDOR_DEFAULT_SN, MEDIDOR_LENGTH); +#else exec.enviaResposta(RESP_BUSCAR_DENDRION, (char *)pima.getMeterNumber(), MEDIDOR_LENGTH); +#endif } }
--- a/cmd/buscarMedidor.cpp Wed Nov 04 21:47:24 2015 +0000 +++ b/cmd/buscarMedidor.cpp Thu Dec 03 19:41:41 2015 +0000 @@ -1,5 +1,7 @@ #include "appCommands.h" +#ifndef RAMAL + extern Pima pima; void cmdBuscarMedidor(char * dados, unsigned char tamanhoDados){ @@ -11,3 +13,5 @@ } return; } + +#endif // ndef(RAMAL) \ No newline at end of file
--- a/cmd/grandezaInstantanea.cpp Wed Nov 04 21:47:24 2015 +0000 +++ b/cmd/grandezaInstantanea.cpp Thu Dec 03 19:41:41 2015 +0000 @@ -9,10 +9,12 @@ switch(channel){ case 0: // Tensao de Carga + { int lineChannel = APP_PARAMETERS.LOAD_CHANNEL == 0 ? 1 : 0; float line = getInstVoltage(lineChannel); resp.measure = line - getInstVoltage(APP_PARAMETERS.LOAD_CHANNEL); break; + } case 1: // Tensao de Linha resp.measure = getInstVoltage(APP_PARAMETERS.LOAD_CHANNEL == 0 ? 1 : 0); break;
--- a/cmd/lerEnergiaAtiva.cpp Wed Nov 04 21:47:24 2015 +0000 +++ b/cmd/lerEnergiaAtiva.cpp Thu Dec 03 19:41:41 2015 +0000 @@ -1,5 +1,7 @@ #include "appCommands.h" +#ifndef RAMAL + extern Pima pima; #define SUCESSO 0x00 @@ -24,3 +26,5 @@ } exec.enviaResposta(RESP_LER_ENERGIA_ATIVA, resp, 15); } + +#endif // ndef(RAMAL) \ No newline at end of file
--- a/cmd/lerEnergiaReativaCapacitiva.cpp Wed Nov 04 21:47:24 2015 +0000 +++ b/cmd/lerEnergiaReativaCapacitiva.cpp Thu Dec 03 19:41:41 2015 +0000 @@ -1,5 +1,7 @@ #include "appCommands.h" +#ifndef RAMAL + extern Pima pima; #define SUCESSO 0x00 @@ -24,3 +26,5 @@ } exec.enviaResposta(RESP_LER_ENERGIA_REATIVA_CAPACITIVA, resp, 15); } + +#endif // ndef(RAMAL) \ No newline at end of file
--- a/cmd/lerEnergiaReativaIndutiva.cpp Wed Nov 04 21:47:24 2015 +0000 +++ b/cmd/lerEnergiaReativaIndutiva.cpp Thu Dec 03 19:41:41 2015 +0000 @@ -1,5 +1,7 @@ #include "appCommands.h" +#ifndef RAMAL + extern Pima pima; #define SUCESSO 0x00 @@ -24,3 +26,5 @@ } exec.enviaResposta(RESP_LER_ENERGIA_REATIVA_INDUTIVA, resp, 15); } + +#endif // ndef(RAMAL) \ No newline at end of file
--- a/main.cpp Wed Nov 04 21:47:24 2015 +0000 +++ b/main.cpp Thu Dec 03 19:41:41 2015 +0000 @@ -7,8 +7,10 @@ CommandExecutor exec; MemoriaMassa mm; Alarm alarm; +#ifndef RAMAL // objetos só existem se o equipamento é um smart breaker BoxAlarm boxAlarm; Pima pima; +#endif Announce announce; int main() @@ -24,16 +26,20 @@ isopowerDisable = 0; // Habilita regulador (PIMA + Alarme Caixa) +#ifndef RAMAL boxAlarm.init(); +#endif alarm.loadQueue(APP_PARAMETERS.ALARMS_QUEUE_SIZE, 3); mm.iniciaLeituras(APP_PARAMETERS.INTERVALO_MM_S, APP_PARAMETERS.MM_SIZE, 4, 5, 6); +#ifndef RAMAL pima.setExpirationTimeout(APP_PARAMETERS.PIMA_VALIDADE_MEDIDOR_S, APP_PARAMETERS.PIMA_VALIDADE_ENERGIA_ATIVA_S, APP_PARAMETERS.PIMA_VALIDADE_ENERGIA_REATIVA_INDUTIVA_S, APP_PARAMETERS.PIMA_VALIDADE_ENERGIA_REATIVA_CAPACITIVA_S); if(APP_PARAMETERS.PROTOCOLO_MEDIDOR == PROTOCOLO_PIMINHA){ pima.iniciaLeituraPiminha(APP_PARAMETERS.PIMA_AUTOBAUD_ENABLE, APP_PARAMETERS.PIMA_AUTOBAUD_TIMEOUT_S, APP_PARAMETERS.INTERVALO_WD_METER_S, APP_PARAMETERS.PIMA_TIMEOUT_PACOTE_S); } else{ pima.iniciaLeituraPima(APP_PARAMETERS.PIMA_AUTOBAUD_ENABLE, APP_PARAMETERS.PIMA_AUTOBAUD_TIMEOUT_S, APP_PARAMETERS.INTERVALO_WD_METER_S); } +#endif ggsStream.baud(APP_PARAMETERS.RADIO_BAUDRATE_BPS); exec.carregaEndereco(sn.get()); @@ -43,12 +49,16 @@ while(1){ exec.trataPacoteGGS(); +#ifndef RAMAL pima.trataPacotePiminha(); if(pima.hasMeterChanged()){ announce.startAnnounceTimer(); } +#endif mm.executaLeitura(); +#ifndef RAMAL boxAlarm.checkState(); +#endif announce.handleAnnounceSending(); }
--- a/settings.h Wed Nov 04 21:47:24 2015 +0000 +++ b/settings.h Thu Dec 03 19:41:41 2015 +0000 @@ -1,8 +1,11 @@ #ifndef SETTINGS_H #define SETTINGS_H -//#define TEST_MODE 1 // Usado para testar na placa de desenvolvimento -//#define DEBUG_ENABLED 1 // Habilita log na USB UART +//#define TEST_MODE 1 // Usado para testar na placa de desenvolvimento +//#define DEBUG_ENABLED 1 // Habilita log na USB UART +//#define RAMAL 1 // configura a aplicação para modo ramal (o normal é smart breaker) + +#define MEDIDOR_DEFAULT_SN "\0\0\0\0\0\0\0" // para uso com equipamentos sem medidor #define LED_ON 1 #define LED_OFF 0