EZR
Dependencies: CRC16 FreescaleIAP FreescaleWatchdog GGSProtocol LM75B PIMA Parameters PersistentCircularQueue SerialNumberV2COM mbed-dev-watchdog_2016_03_04
Fork of smartRamalKW by
main.cpp@13:eed9484a89bc, 2015-07-28 (annotated)
- 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?
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 | 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 | } |