Dual CANbus monitor and instrumentation cluster

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 beep mbed

Fork of CANary by Tick Tock

Files at this revision

API Documentation at this revision

Comitter:
TickTock
Date:
Tue Apr 02 06:32:25 2013 +0000
Parent:
42:4533b13b297d
Child:
44:6262a9fd1e56
Commit message:
Fixed bench button display bugs

Changed in this revision

displayModes.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
utility.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/displayModes.cpp	Sun Mar 31 20:38:15 2013 +0000
+++ b/displayModes.cpp	Tue Apr 02 06:32:25 2013 +0000
@@ -323,9 +323,9 @@
     }
     sprintf(sTemp2," Auto CP");
     showButton(1,1,sTemp1,sTemp2,3,3);
-    sprintf(sTemp1," Start");
-    sprintf(sTemp2,"Playback");
-    showButton(2,1,sTemp1,sTemp2,3,3);
+    //sprintf(sTemp1," Start");
+    //sprintf(sTemp2,"Playback");
+    //showButton(2,1,sTemp1,sTemp2,3,3);
 }
 
 void pbScreen(bool force, bool showButtons){
@@ -371,12 +371,12 @@
         t = *localtime(&seconds) ;
         
         tt.locate(10,10);
+        tt.foreground(Yellow);
+        tt.background(DarkCyan);
+        tt.set_font((unsigned char*) Arial12x12);
         strftime(sTemp1, 32, "%a %m/%d/%Y %X  \n", &t);
         printf("%s",sTemp1);
         if((sMode==1)&&showButtons){
-            tt.foreground(Yellow);
-            tt.background(DarkCyan);
-            tt.set_font((unsigned char*) Arial12x12);
             sprintf(sTemp2,"");
             switch(dtMode){
                 case 0:
@@ -421,9 +421,9 @@
         tt.foreground(Yellow);
         tt.set_font((unsigned char*) Arial28x28);
         tt.locate(10,200);
-        printf("%3.1f\n",MPH);
+        printf("%3.1f  \n",MPH);
         tt.locate(200,200);
-        printf("%3.1f\n",mpkWh);
+        printf("%3.1f   \n",mpkWh);
         lmpkWh=mpkWh;
         lMPH=MPH;
     }
@@ -465,8 +465,10 @@
             showDateTime(changed,(display==whichTouched));
             break;
         default:
-            tt.background(Black);
-            tt.cls();
+            if (changed){
+                tt.background(Black);
+                tt.cls();
+            }
             break;
     }
     lastDMode[display]=dMode[display];
@@ -480,42 +482,42 @@
                 sprintf(sTemp1,"<-Prev");
                 sprintf(sTemp2,"");
                 showButton(0,2,sTemp1,sTemp2,3,3);
-                sprintf(sTemp1,"   Next->");
+                sprintf(sTemp1,"    Next->");
                 showButton(2,2,sTemp1,sTemp2,3,3);
-                sprintf(sTemp1," Select");
+                sprintf(sTemp1,"  Select");
                 switch (dMode[display]) {
                     case 0:
-                        sprintf(sTemp2,"  Off");
+                        sprintf(sTemp2,"   Off");
                         break;
                     case 1:
-                        sprintf(sTemp2,"  Log");
+                        sprintf(sTemp2,"   Log");
                         break;
                     case 2:
-                        sprintf(sTemp2,"  Main");
+                        sprintf(sTemp2,"   Main");
                         break;
                     case 3:
                         sprintf(sTemp2," Braking");
                         break;
                     case 4:
-                        sprintf(sTemp2,"  DTE");
+                        sprintf(sTemp2,"   DTE");
                         break;
                     case 5:
-                        sprintf(sTemp2," Monitor");
+                        sprintf(sTemp2,"  Monitor");
                         break;
                     case 6:
                         sprintf(sTemp2,"Delta Mon");
                         break;
                     case 7:
-                        sprintf(sTemp2,"Cell Pair");
+                        sprintf(sTemp2," Cell Pair");
                         break;
                     case 8:
-                        sprintf(sTemp2," Config");
+                        sprintf(sTemp2,"  Config");
                         break;
                     case 9:
-                        sprintf(sTemp2,"Playback");
+                        sprintf(sTemp2," Playback");
                         break;
                     case 10:
-                        sprintf(sTemp2,"Set Time");
+                        sprintf(sTemp2," Set Time");
                         break;
                 }
                 showButton(1,2,sTemp1,sTemp2,3,3);
--- a/main.cpp	Sun Mar 31 20:38:15 2013 +0000
+++ b/main.cpp	Tue Apr 02 06:32:25 2013 +0000
@@ -102,7 +102,7 @@
     int readPointer=0;
     char sTemp[40];
     unsigned long secs;
-    unsigned char i,j,display=0;
+    unsigned char i,j,display=0,lwt=0;;
     point lastTouch;
 
     can1.monitor(true); // set to snoop mode
@@ -143,6 +143,8 @@
     t = *localtime(&seconds) ;
     strftime(sTemp, 32, "%a %m/%d/%Y %X\n", &t);
     logMsg(sTemp);
+    sprintf(sTemp,"CANary firmware rev43\n");
+    logMsg(sTemp);
 
     // 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)
@@ -179,9 +181,15 @@
     }*/
 
     secsNoMsg = 0;
-    secsNoTouch = 0;
+
+    dMode[1]=logScreen;
+    lastDMode[1]=99;
+    updateDisplay(1);
+
     // Read config file
     readConfig();
+    wait_ms(4000); // Pause for a few seconds
+
     touched=false;
     secsNoTouch=2;
     while (true) {
@@ -261,9 +269,9 @@
                 //__wfi(); // freeze CPU and wait for interrupt (from canbus or touch)
                 Sleep();
             }
-            secsNoTouch=0;
+            secsNoTouch=2;
             canIdle=secsNoMsg>canTimeout;
-            userIdle=secsNoTouch>userTimeout;
+            //userIdle=!touched;
             dled=0.8; // turn on display LED
             seconds = time(NULL);
             t = *localtime(&seconds) ;
@@ -272,7 +280,7 @@
             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 (false){ // insert timestamp on each wake if logging enabled (disabled for now)
+            } else if (logOpen){ // insert timestamp on each wake if logging enabled (disabled for now)
                 file = fopen(fileName, "ab");
                 logTS();
             }
@@ -282,11 +290,22 @@
             lastTouch = tt.get_touch();       
             lastTouch = tt.to_pixel(lastTouch);          // convert to pixel pos
             if((lastTouch.x!=639)&&(lastTouch.x!=319)&&(lastTouch.y!=239)){ // filter phantom touches
-                if (!userIdle) {
-                    secsNoTouch=0;
+                if (userIdle) {
+                    secsNoTouch=2; // Ignore first touch if user idle
+                    userIdle=false;
                 } else {
-                    secsNoTouch=2; // Ignore first touch if user idle
+                    secsNoTouch=0;
                 }
+                if (lastTouch.x>320){
+                    whichTouched=1;
+                } else {
+                    whichTouched=0;
+                }
+                if (whichTouched!=lwt){
+                    lastDMode[lwt]=99; // Repaint lastTouched
+                    lwt=whichTouched;
+                }
+                sMode = 1;
             }
             //sprintf(sTemp,"%d,%d ",lastTouch.x,lastTouch.y);
             //logMsg(sTemp);
@@ -295,12 +314,7 @@
         if (!userIdle) {
             if (secsNoTouch<2) {// Recently touched
                 secsNoTouch +=2; // increment to prevent double touch
-                if (lastTouch.x>320){
-                    whichTouched=1;
-                } else {
-                    whichTouched=0;
-                }
-                if (sMode==0) sMode = 1;
+                sMode = 1;
                 //sprintf(sTemp,"button %d %d,%d %d\n",i,buttonX(lastTouch.x,3),buttonY(lastTouch.y,3),lastTouch.x);
                 //logMsg(sTemp);
                 switch (sMode) {
@@ -428,7 +442,9 @@
                                 break;
                             case 12:
                             case 42:
-                                secsNoTouch = userTimeout; // immediately exit config mode
+                                //secsNoTouch = userTimeout; // immediately exit config mode
+                                sMode=0;
+                                lastDMode[whichTouched]=99; // Repaint
                                 break;
                             case 22:
                             case 52:
@@ -449,8 +465,7 @@
         } else { // userIdle
             if(sMode==1){
                 sMode=0;
-                lastDMode[0]=99;
-                lastDMode[1]=99;
+                lastDMode[whichTouched]=99;
             }
         }
 
--- a/utility.cpp	Sun Mar 31 20:38:15 2013 +0000
+++ b/utility.cpp	Tue Apr 02 06:32:25 2013 +0000
@@ -261,8 +261,6 @@
         tt.calibrate();   // run touchscreen calibration routine
         saveConfig();
     } else {
-        sprintf(sTemp,"Reading config file.\n");
-        logMsg(sTemp);
         //tt.setcal(5570, 34030, 80, 108, 33700, 5780, 82, 108, 32500);// bypass calibration using my values
         fscanf(cfile, "format %c\r\n", &ff ) ;
         fscanf(cfile, "x0_off %d\r\n", &tt.x0_off ) ;
@@ -290,6 +288,8 @@
         fclose(cfile);
         if(ff<2) //If not latest format, save as latest format
             saveConfig();
+        sprintf(sTemp,"Config file loaded.\n");
+        logMsg(sTemp);
     }
 }