EZR

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

Fork of smartRamalKW by Equipe Firmware V2COM

Committer:
fprado
Date:
Thu Jun 16 18:55:57 2016 +0000
Revision:
35:78614a27b9e6
Parent:
34:5ed86c867c08
temporary snapshot

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tpadovani 0:999112ad27f0 1 #include "main.h"
tpadovani 0:999112ad27f0 2
tpadovani 1:6ac7168763b6 3 static Watchdog wd;
tpadovani 1:6ac7168763b6 4 static Ticker tickerWd;
tpadovani 5:1bc98277c257 5 SerialNumber sn;
tpadovani 10:7a1d1abb5172 6 Parameters param ((char *)&APP_PARAMETERS, sizeof(APP_PARAMETERS));
tpadovani 10:7a1d1abb5172 7 CommandExecutor exec;
tpadovani 10:7a1d1abb5172 8 MemoriaMassa mm;
tpadovani 13:eed9484a89bc 9 Alarm alarm;
fprado 26:03c9ca836c79 10 #ifndef RAMAL // objetos só existem se o equipamento é um smart breaker
tpadovani 19:1f623070b9dd 11 BoxAlarm boxAlarm;
tpadovani 19:1f623070b9dd 12 Pima pima;
fprado 26:03c9ca836c79 13 #endif
tpadovani 25:2c578b923ea9 14 Announce announce;
tpadovani 0:999112ad27f0 15
tpadovani 0:999112ad27f0 16 int main()
tpadovani 0:999112ad27f0 17 {
tpadovani 1:6ac7168763b6 18 iniciaWd();
tpadovani 19:1f623070b9dd 19 blinkLeds();
tpadovani 0:999112ad27f0 20
tpadovani 22:b66e36356dd4 21 DEBUG(printf("##### %s #####\r\n", version));
tpadovani 22:b66e36356dd4 22 DEBUG(printSerialNumber());
tpadovani 1:6ac7168763b6 23
tpadovani 3:21598044a47f 24 param.loadParameters();
tpadovani 22:b66e36356dd4 25 DEBUG(printParameters());
tpadovani 22:b66e36356dd4 26
tpadovani 22:b66e36356dd4 27 isopowerDisable = 0; // Habilita regulador (PIMA + Alarme Caixa)
tpadovani 10:7a1d1abb5172 28
fprado 26:03c9ca836c79 29 #ifndef RAMAL
tpadovani 19:1f623070b9dd 30 boxAlarm.init();
fprado 26:03c9ca836c79 31 #endif
tpadovani 13:eed9484a89bc 32 alarm.loadQueue(APP_PARAMETERS.ALARMS_QUEUE_SIZE, 3);
tpadovani 22:b66e36356dd4 33 mm.iniciaLeituras(APP_PARAMETERS.INTERVALO_MM_S, APP_PARAMETERS.MM_SIZE, 4, 5, 6);
tpadovani 10:7a1d1abb5172 34
fprado 26:03c9ca836c79 35 #ifndef RAMAL
tpadovani 19:1f623070b9dd 36 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);
tpadovani 19:1f623070b9dd 37 if(APP_PARAMETERS.PROTOCOLO_MEDIDOR == PROTOCOLO_PIMINHA){
tpadovani 19:1f623070b9dd 38 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);
tpadovani 19:1f623070b9dd 39 } else{
tpadovani 19:1f623070b9dd 40 pima.iniciaLeituraPima(APP_PARAMETERS.PIMA_AUTOBAUD_ENABLE, APP_PARAMETERS.PIMA_AUTOBAUD_TIMEOUT_S, APP_PARAMETERS.INTERVALO_WD_METER_S);
tpadovani 19:1f623070b9dd 41 }
fprado 26:03c9ca836c79 42 #endif
tpadovani 19:1f623070b9dd 43
tpadovani 19:1f623070b9dd 44 ggsStream.baud(APP_PARAMETERS.RADIO_BAUDRATE_BPS);
tpadovani 3:21598044a47f 45 exec.carregaEndereco(sn.get());
tpadovani 10:7a1d1abb5172 46 exec.iniciaExecutorComandos(APP_PARAMETERS.INTERVALO_WD_NETWORK_S, APP_PARAMETERS.INTERVALO_SILENCIO_S);
tpadovani 25:2c578b923ea9 47 announce.setDelayCoefs(APP_PARAMETERS.DISCOVERY_DELAY_ANG_COEF_MS, APP_PARAMETERS.DISCOVERY_DELAY_LIN_COEF_MS);
tpadovani 25:2c578b923ea9 48 announce.setIntervals(APP_PARAMETERS.ANNOUNCE_INTERVAL_S, APP_PARAMETERS.INTERVALO_SILENCIO_S);
tpadovani 10:7a1d1abb5172 49
fprado 34:5ed86c867c08 50 #ifdef RAMAL
fprado 34:5ed86c867c08 51 announce.startAnnounceTimer();
fprado 34:5ed86c867c08 52 #endif
fprado 34:5ed86c867c08 53
tpadovani 3:21598044a47f 54 while(1){
tpadovani 3:21598044a47f 55 exec.trataPacoteGGS();
fprado 26:03c9ca836c79 56 #ifndef RAMAL
tpadovani 19:1f623070b9dd 57 pima.trataPacotePiminha();
tpadovani 25:2c578b923ea9 58 if(pima.hasMeterChanged()){
tpadovani 25:2c578b923ea9 59 announce.startAnnounceTimer();
tpadovani 25:2c578b923ea9 60 }
fprado 26:03c9ca836c79 61 #endif
tpadovani 10:7a1d1abb5172 62 mm.executaLeitura();
fprado 26:03c9ca836c79 63 #ifndef RAMAL
tpadovani 19:1f623070b9dd 64 boxAlarm.checkState();
fprado 26:03c9ca836c79 65 #endif
tpadovani 25:2c578b923ea9 66 announce.handleAnnounceSending();
tpadovani 3:21598044a47f 67 }
tpadovani 0:999112ad27f0 68
tpadovani 0:999112ad27f0 69 }
tpadovani 0:999112ad27f0 70
tpadovani 1:6ac7168763b6 71 void iniciaWd(){
tpadovani 1:6ac7168763b6 72 wd.Configure();
tpadovani 1:6ac7168763b6 73 tickerWd.attach(&feedWd, WATCHDOG_INTERVAL);
tpadovani 1:6ac7168763b6 74 }
tpadovani 1:6ac7168763b6 75
tpadovani 1:6ac7168763b6 76 void feedWd(){
tpadovani 1:6ac7168763b6 77 wd.Service();
tpadovani 1:6ac7168763b6 78 }
tpadovani 1:6ac7168763b6 79
tpadovani 3:21598044a47f 80 void softReset(){
tpadovani 22:b66e36356dd4 81 DEBUG(printf("[main] SoftReset\r\n"));
tpadovani 3:21598044a47f 82 tickerWd.detach();
tpadovani 3:21598044a47f 83 }
tpadovani 3:21598044a47f 84
tpadovani 19:1f623070b9dd 85 void blinkLeds(){
tpadovani 23:85202a52482d 86 ledPowerON = LED_ON;
tpadovani 19:1f623070b9dd 87 ledNetwork = LED_OFF;
tpadovani 19:1f623070b9dd 88 ledMeter = LED_OFF;
tpadovani 23:85202a52482d 89 ledLoad = LED_OFF;
tpadovani 19:1f623070b9dd 90 ledBox = LED_OFF;
tpadovani 19:1f623070b9dd 91
tpadovani 19:1f623070b9dd 92 wait_ms(200);
tpadovani 19:1f623070b9dd 93 ledNetwork = LED_ON;
tpadovani 19:1f623070b9dd 94 wait_ms(200);
tpadovani 19:1f623070b9dd 95 ledNetwork = LED_OFF;
tpadovani 19:1f623070b9dd 96 ledMeter = LED_ON;
tpadovani 19:1f623070b9dd 97 wait_ms(200);
tpadovani 19:1f623070b9dd 98 ledMeter = LED_OFF;
tpadovani 23:85202a52482d 99 ledLoad = LED_ON;
tpadovani 23:85202a52482d 100 wait_ms(200);
tpadovani 23:85202a52482d 101 ledLoad = LED_OFF;
tpadovani 19:1f623070b9dd 102 ledBox = LED_ON;
tpadovani 19:1f623070b9dd 103 wait_ms(200);
tpadovani 19:1f623070b9dd 104 ledBox = LED_OFF;
tpadovani 19:1f623070b9dd 105 }
tpadovani 19:1f623070b9dd 106
tpadovani 3:21598044a47f 107 void printSerialNumber(){
tpadovani 12:0f549dfba86c 108 printf("[main] SN: ");
tpadovani 3:21598044a47f 109 for(int i=0; i < SERIAL_LENGTH; i++){
tpadovani 3:21598044a47f 110 printf("%c", sn.get()[i]);
tpadovani 3:21598044a47f 111 }
tpadovani 3:21598044a47f 112 printf("\r\n");
tpadovani 3:21598044a47f 113 }
tpadovani 9:e501499af4ef 114
tpadovani 9:e501499af4ef 115 void printParameters(){
tpadovani 12:0f549dfba86c 116 printf("[main] Parameters:");
tpadovani 9:e501499af4ef 117 for(int i=0; i < sizeof(APP_PARAMETERS); i++){
tpadovani 10:7a1d1abb5172 118 printf(" %02x", ((char *)&APP_PARAMETERS)[i]);
tpadovani 9:e501499af4ef 119 }
tpadovani 9:e501499af4ef 120 printf("\r\n");
tpadovani 9:e501499af4ef 121 }