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:
Tue Jul 28 17:56:11 2015 +0000
Revision:
13:eed9484a89bc
Parent:
12:0f549dfba86c
Child:
19:1f623070b9dd
Implementa??o de alarmes

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 0:999112ad27f0 10
tpadovani 0:999112ad27f0 11 int main()
tpadovani 0:999112ad27f0 12 {
tpadovani 1:6ac7168763b6 13 iniciaWd();
tpadovani 0:999112ad27f0 14
tpadovani 0:999112ad27f0 15 printf("##### %s #####\r\n", version);
tpadovani 3:21598044a47f 16 printSerialNumber();
tpadovani 1:6ac7168763b6 17
tpadovani 3:21598044a47f 18 param.loadParameters();
tpadovani 9:e501499af4ef 19 printParameters();
tpadovani 10:7a1d1abb5172 20
tpadovani 13:eed9484a89bc 21 alarm.loadQueue(APP_PARAMETERS.ALARMS_QUEUE_SIZE, 3);
tpadovani 13:eed9484a89bc 22 mm.iniciaLeituras(APP_PARAMETERS.INTERVALO_MM_S, APP_PARAMETERS.MM_SIZE, 4, 5);
tpadovani 10:7a1d1abb5172 23
tpadovani 3:21598044a47f 24 ggsStream.baud(19200);
tpadovani 3:21598044a47f 25 exec.carregaEndereco(sn.get());
tpadovani 10:7a1d1abb5172 26 exec.iniciaExecutorComandos(APP_PARAMETERS.INTERVALO_WD_NETWORK_S, APP_PARAMETERS.INTERVALO_SILENCIO_S);
tpadovani 9:e501499af4ef 27 detectaCargaSemCorte();
tpadovani 10:7a1d1abb5172 28
tpadovani 3:21598044a47f 29 while(1){
tpadovani 3:21598044a47f 30 exec.trataPacoteGGS();
tpadovani 10:7a1d1abb5172 31 mm.executaLeitura();
tpadovani 3:21598044a47f 32 }
tpadovani 0:999112ad27f0 33
tpadovani 0:999112ad27f0 34 }
tpadovani 0:999112ad27f0 35
tpadovani 1:6ac7168763b6 36 void iniciaWd(){
tpadovani 1:6ac7168763b6 37 wd.Configure();
tpadovani 1:6ac7168763b6 38 tickerWd.attach(&feedWd, WATCHDOG_INTERVAL);
tpadovani 1:6ac7168763b6 39 }
tpadovani 1:6ac7168763b6 40
tpadovani 1:6ac7168763b6 41 void feedWd(){
tpadovani 1:6ac7168763b6 42 wd.Service();
tpadovani 1:6ac7168763b6 43 }
tpadovani 1:6ac7168763b6 44
tpadovani 3:21598044a47f 45 void softReset(){
tpadovani 12:0f549dfba86c 46 printf("[main] SoftReset\r\n");
tpadovani 3:21598044a47f 47 tickerWd.detach();
tpadovani 3:21598044a47f 48 }
tpadovani 3:21598044a47f 49
tpadovani 3:21598044a47f 50 void printSerialNumber(){
tpadovani 12:0f549dfba86c 51 printf("[main] SN: ");
tpadovani 3:21598044a47f 52 for(int i=0; i < SERIAL_LENGTH; i++){
tpadovani 3:21598044a47f 53 printf("%c", sn.get()[i]);
tpadovani 3:21598044a47f 54 }
tpadovani 3:21598044a47f 55 printf("\r\n");
tpadovani 3:21598044a47f 56 }
tpadovani 9:e501499af4ef 57
tpadovani 9:e501499af4ef 58 void printParameters(){
tpadovani 12:0f549dfba86c 59 printf("[main] Parameters:");
tpadovani 9:e501499af4ef 60 for(int i=0; i < sizeof(APP_PARAMETERS); i++){
tpadovani 10:7a1d1abb5172 61 printf(" %02x", ((char *)&APP_PARAMETERS)[i]);
tpadovani 9:e501499af4ef 62 }
tpadovani 9:e501499af4ef 63 printf("\r\n");
tpadovani 9:e501499af4ef 64 }
tpadovani 9:e501499af4ef 65
tpadovani 9:e501499af4ef 66 void detectaCargaSemCorte(){
tpadovani 9:e501499af4ef 67 bool ch0Status = getEstadoSensor(0);
tpadovani 9:e501499af4ef 68 bool ch1Status = getEstadoSensor(1);
tpadovani 9:e501499af4ef 69
tpadovani 9:e501499af4ef 70 if(!ch0Status && ch1Status){ // Canal 0 nao esta alimentado e Canal 1 esta: entao a carga certamente e o canal 0
tpadovani 12:0f549dfba86c 71 printf("[main] Load channel detected: CH0\r\n");
tpadovani 9:e501499af4ef 72 if(APP_PARAMETERS.LOAD_CHANNEL != 0){
tpadovani 9:e501499af4ef 73 APP_PARAMETERS.LOAD_CHANNEL = 0;
tpadovani 9:e501499af4ef 74 param.saveParameters();
tpadovani 9:e501499af4ef 75 }
tpadovani 9:e501499af4ef 76 } else if(ch0Status && !ch1Status){ // Canal 1 nao esta alimentado e Canal 0 esta: entao a carga certamente e o canal 1
tpadovani 12:0f549dfba86c 77 printf("[main] Load channel detected: CH1\r\n");
tpadovani 9:e501499af4ef 78 if(APP_PARAMETERS.LOAD_CHANNEL != 1){
tpadovani 9:e501499af4ef 79 APP_PARAMETERS.LOAD_CHANNEL = 1;
tpadovani 9:e501499af4ef 80 param.saveParameters();
tpadovani 9:e501499af4ef 81 }
tpadovani 12:0f549dfba86c 82 } else{
tpadovani 12:0f549dfba86c 83 printf("[main] Unable to detect load channel\r\n");
tpadovani 9:e501499af4ef 84 }
tpadovani 9:e501499af4ef 85 }