Dual CANbus monitor and instrumentation cluster

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 beep mbed

Fork of CANary by Tick Tock

Revision:
70:0700b769ac15
Parent:
68:10f7d7dbae19
Parent:
69:6bfdfc002036
Child:
71:7e87256d6c9a
--- a/main.cpp	Sat Apr 13 22:46:31 2013 +0000
+++ b/main.cpp	Sun Apr 14 02:10:40 2013 +0000
@@ -45,6 +45,12 @@
 PwmOut dled(p23);
 Beep spkr(p21);
 
+// revision string, max 6 characters
+//char revStr[7] = "65"; // gg - revStr is used in 2 places
+//char revStr[7] = "65-gg1"; // gg - and is easy to edit here
+//char revStr[7] = "69-gg1"; // gg - ZeroSecTick
+char revStr[7] = "69-gg1"; // gg - trying to merge with TT
+
 bool logEn = false, logOpen = false; 
 bool yesBattLog = false ; // gg - Batt Log
 unsigned char tNavRow = 3 ; // gg - 4x4 touch
@@ -79,6 +85,7 @@
 bool repeatPoll = false;
 bool headlights = false;
 bool tick = false;
+bool ZeroSecTick = false;
 float ledHi = 0.8; // Bright LED value (until config file read)
 float ledLo = 0.1; // Dim LED value (until config file read)
 unsigned short pollInt = 300; // polling interval=5 minutes (until config file read)
@@ -154,11 +161,11 @@
     }
     t = *localtime(&seconds) ;
     strftime(sTemp, 32, "%a %m/%d/%Y %X\n", &t);
-    logMsg(sTemp);
+    logMsg(sTemp); // record RTC
     
     // revision
-    sprintf(sTemp,"CANary firmware rev68\n");
-    logMsg(sTemp);
+    sprintf(sTemp,"CANary firmware rev%s\n", revStr); // gg - for Logging the revision
+    logMsg(sTemp); // revision
 
     // Look for new binary on thumbdrive
     // Can't make this work right now since USB doesn't attach the right timestamp (so new binary isn't loaded)
@@ -166,11 +173,11 @@
     lastDMode[whichTouched]=99;//force refresh
     if (cfile!=NULL){ //found a new binary on the thumbdrive so copy it over
         sprintf(sTemp,"New binary found.\n");
-        logMsg(sTemp);
+        logMsg(sTemp); // new binary
         file = fopen("/local/CANary.bin", "wb");
         if (file==NULL){ //failed to open destination
             sprintf(sTemp,"Unable to open destination file.\n");
-            logMsg(sTemp);
+            logMsg(sTemp); // cannot open CANary.bin
         } else {
             tt.set_display(2);
             tt.foreground(White);
@@ -208,10 +215,10 @@
         }
         fclose(cfile);
         sprintf(sTemp,"History Loaded.\n");
-        logMsg(sTemp);
+        logMsg(sTemp); // History loaded
     } else { // create initial file
         sprintf(sTemp,"History not found.  Created.\n");
-        logMsg(sTemp);
+        logMsg(sTemp); // history not found, created
         for(i=0;i<39;i++){
             // Pre-load with 4 mpkWh @ 40 mph
             mph[i]=40*timeConstant[i];
@@ -232,20 +239,25 @@
                 t = *localtime(&seconds) ;
                 strftime(fileName, 32, "/usb/%m%d%H%M.alc", &t); //mmddhhmm.alc
                 //sprintf(sTemp,"Using file %s\n",fileName);
-                //logMsg(sTemp);
+                //logMsg(sTemp); // using alc file ...
                 file = fopen(fileName, "ab");
                 lastDMode[whichTouched]=99;//force refresh
                 if(file==NULL){
                     sprintf(sTemp,"\nUnable to open %s\n\n\n\n",fileName);
-                    logMsg(sTemp);
+                    logMsg(sTemp); // cannot open alc file
                     logEn=false;
                     spkr.beep(1000,0.25);
                 } else {
                     logOpen = true;
                     readPointer=writePointer;
                     sprintf(sTemp,"Starting Can Log %s\n",fileName);
-                    logMsg(sTemp);
-                    logTS();
+                    logMsg(sTemp); // starting alc log file 
+                    
+                    logTS(); // Date Time at start
+                    logErrMsg("Starting"); // Log startup msg for testing
+                    sprintf(sTemp,"Cr%s",revStr);
+                    logErrMsg(sTemp); // gg - log firmware version
+                    
                     spkr.beep(2000,0.25);
                 }
             }//logging enabled
@@ -255,13 +267,13 @@
                 if (file == NULL) {
                     logOpen = false;
                     sprintf(sTemp,"Failed to append log file.\n");
-                    logMsg(sTemp);
+                    logMsg(sTemp); // failed to append 
                     spkr.beep(1000,0.25);
                     logEn=false;
                 } else {
                     if (((writePointer+maxBufLen-readPointer)%maxBufLen)>(maxBufLen*7/8)) { // Hi-water mark
                         sprintf(sTemp,"Write buffer overrun.\n");
-                        logMsg(sTemp);
+                        logMsg(sTemp); // write buffer overrun
                         spkr.beep(1000,0.25);
                     }
                     while (readPointer != writePointer) {
@@ -286,7 +298,7 @@
             seconds = time(NULL);
             t = *localtime(&seconds) ;
             strftime(sTemp, 40, "Sleeping: %a %m/%d/%Y %X\n", &t);
-            logMsg(sTemp);
+            logMsg(sTemp); // sleeping date time
             updateDisplay(0); //Added for turbo3 who has a display override and wants to see the sleep message before going to sleep
             updateDisplay(1);
             //LPC_RTC->CIIR=0x00; // block RTC interrupts
@@ -309,13 +321,14 @@
             seconds = time(NULL);
             t = *localtime(&seconds) ;
             strftime(sTemp, 40, "Waking: %a %m/%d/%Y %X\n", &t);
-            logMsg(sTemp);
+            logMsg(sTemp); // wakeup date time
             if (time(NULL)>(secs+1800)) {
                 logOpen = false; // Start new file if asleep for more than 30 minutes
                 if (secsNoTouch>100) secsNoTouch = 100; // also mostly reset user Idle counter
             } else if (logOpen){ // insert timestamp on each wake if logging enabled (disabled for now)
                 file = fopen(fileName, "ab");
-                logTS();
+                logErrMsg("WakingUp"); // gg - use messeges
+                logTS(); // Date-Time at wakeup
             }
         } // if idle
         
@@ -341,7 +354,7 @@
                 sMode = 1;
             }
             //sprintf(sTemp,"%d,%d ",lastTouch.x,lastTouch.y);
-            //logMsg(sTemp);
+            //logMsg(sTemp); // touch x,y - for debug
             touched = false; // clear interrupt flag
         }
         //---------------
@@ -355,7 +368,7 @@
                 secsNoTouch +=2; // increment to prevent double touch
                 sMode = 1;
                 //sprintf(sTemp,"button %d %d,%d %d\n",i,buttonX(lastTouch.x,3),buttonY(lastTouch.y,3),lastTouch.x);
-                //logMsg(sTemp);
+                //logMsg(sTemp); // button parms - for debug
                 switch (sMode) {
                     case 0: // no select
                         break;
@@ -426,7 +439,7 @@
                                     dMode[whichTouched] = effScreen ; // GoTo EFF Screen
                                 } else if (dMode[whichTouched]==config1Screen) {
                                     sprintf(sTemp,"Saving config file.\n");
-                                    logMsg(sTemp);
+                                    logMsg(sTemp); // saving config
                                     saveConfig();
                                     spkr.beep(2000,0.25);
                                 } else if (dMode[whichTouched]==playbackScreen) { // faster
@@ -456,9 +469,10 @@
                                     lastDMode[whichTouched ^ 1]=99; // repaint other screen (^ = XOR)
                                     
                                     //sprintf(sTemp,"Changed Skin to %d.\n");
-                                    //logMsg(sTemp);
+                                    //logMsg(sTemp); /// changed skin - for debug
                                     //saveConfig();
                                     //spkr.beep(2000,0.25);
+                                    
                                 } else if (dMode[whichTouched] == indexScreen) { // gg - index
                                     dMode[whichTouched] = dteScreen ; // GoTo DTE Screen
                                 }else{
@@ -503,21 +517,21 @@
                                             lastDMode[whichTouched]=99;//force refresh
                                             if(file==NULL){
                                                 sprintf(sTemp,"Unable to open /usb/playback.alc\n");
-                                                logMsg(sTemp);
+                                                logMsg(sTemp); // no playback.alc
                                                 spkr.beep(1000,0.25);
                                             } else {
                                                 playbackOpen = true;
                                                 playbackEn=true;
                                                 playback.attach(&playbackISR,playbackInt);
                                                 sprintf(sTemp,"Starting playback\n");
-                                                logMsg(sTemp);
+                                                logMsg(sTemp); // start playback
                                                 spkr.beep(2000,0.25);
                                                 can1.attach(&doNothing);// Stop recieving CAN data
                                                 can2.attach(&doNothing);
                                             }
                                         } else {
                                             sprintf(sTemp,"Must stop logging first\n");
-                                            logMsg(sTemp);
+                                            logMsg(sTemp); // Must stop logging first
                                         }
                                     } else {
                                         playback.detach();
@@ -631,7 +645,8 @@
             laccOn=accOn;
             if(!accOn&&!logEn&&userIdle&&!playbackEn){
                 //sprintf(sTemp,"Display Off %4.2f\n",accV);
-                //logMsg(sTemp);
+                //logMsg(sTemp); // display off - for debug
+                
                 dled = 0; // turn off display if car off and logging disabled and no user activity
             }else if(!headlights){
                 dled = ledHi;
@@ -682,7 +697,7 @@
             }
             updateDTE=true;
             if(logCP)
-                logPackVoltages(); // Turbo3
+                logPackVoltages(); // Turbo3, only call
             tick=false;
         }
 
@@ -701,7 +716,7 @@
                 for(i=0;i<120;i++){
                     if(!feof(file)){
                         fscanf(file,"%5c%8c",&header,&data);
-                        logCan(header[0],CANMessage(0x7ff&((header[4]<<8)+header[3]), data, 8));
+                        logCan(header[0],CANMessage(0x7ff&((header[4]<<8)+header[3]), data, 8)); // Playback
                     }else{
                         fclose(file); // restart
                         file = fopen("/usb/playback.alc", "rb");