EZR
Dependencies: CRC16 FreescaleIAP FreescaleWatchdog GGSProtocol LM75B PIMA Parameters PersistentCircularQueue SerialNumberV2COM mbed-dev-watchdog_2016_03_04
Fork of smartRamalKW by
main.cpp@35:78614a27b9e6, 2016-06-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |