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:
tpadovani
Date:
Wed Nov 04 21:47:24 2015 +0000
Revision:
25:2c578b923ea9
Parent:
23:85202a52482d
Child:
26:03c9ca836c79
Vers?o 0.13 - Envio de "announces" assincronos e sincronismo de relogio a partir da resposta do concentrador.

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