EZR
Dependencies: CRC16 FreescaleIAP FreescaleWatchdog GGSProtocol LM75B PIMA Parameters PersistentCircularQueue SerialNumberV2COM mbed-dev-watchdog_2016_03_04
Fork of smartRamalKW by
main.cpp@25:2c578b923ea9, 2015-11-04 (annotated)
- 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?
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; |
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 | } |