Dual CANbus monitor and instrumentation cluster

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 beep mbed

Fork of CANary by Tick Tock

Revision:
73:62ee8eae3a84
Parent:
72:f9a6faa28873
Child:
74:e491e92b0bef
--- a/main.cpp	Sun Apr 14 22:00:51 2013 +0000
+++ b/main.cpp	Mon Apr 15 03:46:03 2013 +0000
@@ -116,6 +116,7 @@
                      60*60*24*1.58, 60*60*24*2.51, 60*60*24*3.98, 60*60*24*6.31, 60*60*24*10, 60*60*24*15.8, 60*60*24*30, // 1 month
                      60*60*24*39.8, 60*60*24*63.1, 60*60*24*100, 60*60*24*158, 60*60*24*251, 60*60*24*365}; // 1 year
 bool updateDTE = false;
+unsigned short pointerSep;
 
 int main() {
     int readPointer=0;
@@ -262,7 +263,8 @@
                 }
             }//logging enabled
         } else { // if (logOpen)
-            if (((writePointer+maxBufLen-readPointer)%maxBufLen)>(maxBufLen/16)||canIdle||!logEn) {
+            pointerSep=(writePointer+maxBufLen-readPointer)%maxBufLen;
+            if (pointerSep>(maxBufLen/16)||canIdle||!logEn) {
                 // Dump buffer if > 1/16 full or canbus has stopped
                 if (file == NULL) {
                     logOpen = false;
@@ -271,7 +273,7 @@
                     spkr.beep(1000,0.25);
                     logEn=false;
                 } else {
-                    if (((writePointer+maxBufLen-readPointer)%maxBufLen)>(maxBufLen*7/8)) { // Hi-water mark
+                    if (pointerSep>(maxBufLen*7/8)) { // Hi-water mark
                         sprintf(sTemp,"Write buffer overrun.\n");
                         logMsg(sTemp); // write buffer overrun
                         spkr.beep(1000,0.25);
@@ -390,6 +392,7 @@
                                     indexOffset=indexOffset>4?indexOffset-4:1;
                                 } else if (dMode[whichTouched] == indexScreen) { // gg - index
                                     dMode[whichTouched] = mainScreen ; // GoTo Main Screen
+                                    sMode=0;
                                 } else if (dMode[whichTouched]==config1Screen) {
                                     wait_ms(500);
                                     tt.background(Black);
@@ -410,6 +413,7 @@
                                     for(j=0;j<100;j++) msgChanged[j]=0; // clear changed data
                                     lastDMode[whichTouched]=99;//force refresh
                                 } else if (dMode[whichTouched] == indexScreen) { // gg - index
+                                    sMode=0;
                                     dMode[whichTouched] = brakeScreen ; // GoTo Brake Screen
                                 } else if (dMode[whichTouched]==cpScreen) {
                                     pollCP=true;
@@ -437,6 +441,7 @@
                                     indexOffset=indexOffset<77?indexOffset+4:80;
                                 } else if (dMode[whichTouched] == indexScreen) { // gg - index
                                     dMode[whichTouched] = effScreen ; // GoTo EFF Screen
+                                    sMode=0;
                                 } else if (dMode[whichTouched]==config1Screen) {
                                     sprintf(sTemp,"Saving config file.\n");
                                     logMsg(sTemp); // saving config
@@ -475,6 +480,7 @@
                                     
                                 } else if (dMode[whichTouched] == indexScreen) { // gg - index
                                     dMode[whichTouched] = dteScreen ; // GoTo DTE Screen
+                                    sMode=0;
                                 }else{
                                     lastDMode[whichTouched]=99;//repaint to clear highlight
                                 }
@@ -487,8 +493,8 @@
                                     logEn = !logEn;
                                     if (!logEn) repeatPoll=false; // disable auto polling, too
                                 } else if (dMode[whichTouched] == indexScreen) { // gg - index
-                                    dMode[whichTouched] = cpScreen ; // GoTo CP Data Screen
-                                
+                                    dMode[whichTouched] = cpScreen ; // GoTo CP Data Screen                                
+                                    sMode=0;
                                 } else if (dMode[whichTouched]==dateScreen){
                                     dtMode=(dtMode<6)?dtMode+1:0;
                                     lastDMode[whichTouched]=99;
@@ -508,7 +514,7 @@
                                     }
                                 } else if (dMode[whichTouched] == indexScreen) { // gg - index
                                     dMode[whichTouched] = cpHistScreen ; // GoTo CP Hist Screen
-                                    
+                                    sMode=0;
                                 } else if (dMode[whichTouched]==playbackScreen) {
                                     // Start/stop playback
                                     if(!playbackOpen){
@@ -556,6 +562,7 @@
                                     yesBattLog = !yesBattLog;
                                 } else if (dMode[whichTouched] == indexScreen) { // gg - index
                                     dMode[whichTouched] = cpBarScreen ; // GoTo CP Bars Screen  
+                                    sMode=0;
                                 } else if (dMode[whichTouched]==dateScreen){
                                     upDate(dtMode,false);
                                     lastDMode[whichTouched]=99;
@@ -587,6 +594,7 @@
                              case 32: // right col, bottom row (not nav)
                                 if (dMode[whichTouched] == indexScreen) { // gg - index
                                     dMode[whichTouched] = logScreen ; // GoTo Log Screen
+                                    sMode=0;
                                 }
                                 break;