Attempts to merge SPI_TFT2 & SPI_TFT_ILI9341

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 mbed

Fork of CANary by Tick Tock

Files at this revision

API Documentation at this revision

Comitter:
TickTock
Date:
Mon Apr 15 03:46:03 2013 +0000
Parent:
72:f9a6faa28873
Child:
74:e491e92b0bef
Commit message:
added log screen to index; added pointer separation monitor to main display when in debug mode

Changed in this revision

common.h Show annotated file Show diff for this revision Revisions of this file
displayModes.cpp Show annotated file Show diff for this revision Revisions of this file
displayModes.h 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
--- a/common.h	Sun Apr 14 22:00:51 2013 +0000
+++ b/common.h	Mon Apr 15 03:46:03 2013 +0000
@@ -23,6 +23,7 @@
 #define maxBufLen 512
 #define canTimeout 5
 #define userTimeout 15
+#define debugMode false
 
 // gg - 4x4 touch
 // #define tNavRow = 2 ; // for 3x3
--- a/displayModes.cpp	Sun Apr 14 22:00:51 2013 +0000
+++ b/displayModes.cpp	Mon Apr 15 03:46:03 2013 +0000
@@ -72,7 +72,7 @@
 
 void mainDisplay (bool force, bool showButtons){
     unsigned short gids, SOC, packV;
-    static unsigned short lgids=0, lSOC=0, lpackV=0;
+    static unsigned short lgids=0, lSOC=0, lpackV=0, maxPS;
     static float lkW=0, laccV=0, lmpkWh=0;
     CANMessage msg;
 
@@ -91,6 +91,11 @@
         if(force||gids!=lgids||mpkWh[dtePeriod]!=lmpkWh){
             tt.locate(10,10);
             printf("%4d gids \n",gids);
+            if(debugMode){
+                if(pointerSep>maxPS){maxPS=pointerSep;}
+                tt.locate(10,70);
+                printf("%3d sep %3d max\n",pointerSep,maxPS);
+            }
             tt.locate(10,40);
             printf("%4.1f kWh \n",(float)(gids-5)*0.075);
             tt.set_font((unsigned char*) SCProSB31x55);
@@ -169,7 +174,7 @@
 
 void braking (bool force, bool showButtons, bool prdata=false){
     unsigned long targetBraking, regenBraking;
-    static unsigned long maxTarget = 1000, maxRegen = 1000, tarDivReg = 1000;
+    static unsigned long maxTarget = 1000, maxRegen = 1000, tardivreg_x1000 = 1000;
     unsigned long temp;
     static unsigned char lastPressure[4] = {200,200,200,200};
     unsigned char i,r,t;
@@ -201,18 +206,6 @@
     }
     
     //--------------
-    msg = lastMsg[indexLastMsg[0x1cb]]; //Get Target and Regen
-    regenBraking = (msg.data[0]<<3)+(msg.data[1]>>5);
-    targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5);
-    if ((targetBraking>50)&&(regenBraking>50)){
-        temp = targetBraking;
-        temp *= 1000;
-        temp /= regenBraking;
-        if (temp<tarDivReg) tarDivReg=temp;
-    }
-    if (targetBraking>maxTarget) maxTarget=targetBraking;
-    if (regenBraking>maxRegen) maxRegen=regenBraking;
-
     msg = lastMsg[indexLastMsg[0x1ca]]; //Get brake pressure
     tt.background(Navy);
     if (force) {
@@ -270,39 +263,53 @@
         }
     }
 
-    temp = targetBraking;
-    temp *=200;
-    temp /= maxTarget;
-    t = (char) temp;
-    if (t>200) t=200;
-    temp = regenBraking;
-    temp *= tarDivReg;
-    temp /= maxTarget;
-    temp /= 5;
-    r = (char) temp;
-    if (r>200) r=200;
-    if(lr!=r&&prdata){
-        tt.foreground(Yellow);
-        tt.set_font((unsigned char*) Arial28x28);
-        tt.locate(100,40);
-        printf("%d %d    \n",regenBraking,maxRegen);
-        tt.locate(100,70);
-        printf("%3.1f (%3.1f%s)    \n",(float)tarDivReg/10,(float)regenBraking*tarDivReg/targetBraking/10,"%");
-    }    
-    if(lt!=t&&prdata){
-        tt.foreground(Yellow);
-        tt.set_font((unsigned char*) Arial28x28);
-        tt.locate(100,10);
-        printf("%d %d    \n",targetBraking,maxTarget);
+    msg = lastMsg[indexLastMsg[0x1cb]]; //Get Target and Regen
+    regenBraking = (msg.data[0]<<3)+(msg.data[1]>>5);
+    targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5);
+
+    if (targetBraking<2045){
+        if ((targetBraking>50)&&(regenBraking>50)){
+            temp = targetBraking;
+            temp *= 1000;
+            temp /= regenBraking;
+            if (temp<tardivreg_x1000) tardivreg_x1000=temp;
+        }
+        if (targetBraking>maxTarget) maxTarget=targetBraking;
+        if (regenBraking>maxRegen) maxRegen=regenBraking;
+        temp = targetBraking;
+        temp *=200;
+        temp /= maxTarget;
+        t = (char) temp;
+        if (t>200) t=200;
+        temp = regenBraking;
+        temp *= tardivreg_x1000;
+        temp /= maxTarget;
+        temp /= 5; // 1000/200=5
+        r = (char) temp;
+        if (r>200) r=200;
+        if(lr!=r&&prdata){
+            tt.foreground(Yellow);
+            tt.set_font((unsigned char*) Arial28x28);
+            tt.locate(100,40);
+            printf("%d %d    \n",regenBraking,maxRegen);
+            tt.locate(100,70);
+            printf("%3.1f (%3.1f%s)    \n",(float)tardivreg_x1000/10,(float)regenBraking*tardivreg_x1000/targetBraking/10,"%");
+        }    
+        if(lt!=t&&prdata){
+            tt.foreground(Yellow);
+            tt.set_font((unsigned char*) Arial28x28);
+            tt.locate(100,10);
+            printf("%d %d    \n",targetBraking,maxTarget);
+        }
+        if (r>t) t=r;  //Should never happen
+        if((lr!=r||lt!=t)&&!prdata){
+            tt.fillrect(190,10,260,239-t,Navy);
+            tt.fillrect(190,239-t,260,239-r,Red);
+            tt.fillrect(190,239-r,260,239,Green);
+        }
+        lt=t;
+        lr=r;
     }
-    if (r>t) t=r;  //Should never happen
-    if((lr!=r||lt!=t)&&!prdata){
-        tt.fillrect(190,10,260,239-t,Navy);
-        tt.fillrect(190,239-t,260,239-r,Red);
-        tt.fillrect(190,239-r,260,239,Green);
-    }
-    lt=t;
-    lr=r;
 }
 
 void cpData(bool force, bool showButtons){
@@ -765,7 +772,7 @@
     static unsigned char leff[39]={0};
     CANMessage msg;
     unsigned long targetBraking, regenBraking, temp;
-    static unsigned long maxTarget = 1000, maxRegen = 1000, tarDivReg = 1000;
+    static unsigned long maxTarget = 1000, maxRegen = 1000, tardivreg_x1000 = 1000;
     static unsigned char lr=0, lt=0;
 
     msg = lastMsg[indexLastMsg[0x5bc]]; //Get gids
@@ -898,34 +905,37 @@
     msg = lastMsg[indexLastMsg[0x1cb]]; //Get Target and Regen
     regenBraking = (msg.data[0]<<3)+(msg.data[1]>>5);
     targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5);
-    if ((targetBraking>50)&&(regenBraking>50)){
+
+    if (targetBraking<2045){
+        if ((targetBraking>50)&&(regenBraking>50)){
+            temp = targetBraking;
+            temp *= 1000;
+            temp /= regenBraking;
+            if (temp<tardivreg_x1000) tardivreg_x1000=temp;
+        }
+        if (targetBraking>maxTarget) maxTarget=targetBraking;
+        if (regenBraking>maxRegen) maxRegen=regenBraking;
+    
         temp = targetBraking;
-        temp *= 1000;
-        temp /= regenBraking;
-        if (temp<tarDivReg) tarDivReg=temp;
+        temp *=200;
+        temp /= maxTarget;
+        t = (char) temp;
+        if (t>175) t=175;
+        temp = regenBraking;
+        temp *= tardivreg_x1000;
+        temp /= maxTarget;
+        temp /= 5; // 1000/200=5
+        r = (char) temp;
+        if (r>175) r=175;
+        if (r>t) t=r;  //Should never happen
+        if(lr!=r||lt!=t){
+            tt.fillrect(264,64,310,239-t,Navy);
+            tt.fillrect(264,239-t,310,239-r,Red);
+            tt.fillrect(264,239-r,310,239,Green);
+        }
+        lt=t;
+        lr=r;
     }
-    if (targetBraking>maxTarget) maxTarget=targetBraking;
-    if (regenBraking>maxRegen) maxRegen=regenBraking;
-
-    temp = targetBraking;
-    temp *=200;
-    temp /= maxTarget;
-    t = (char) temp;
-    if (t>175) t=175;
-    temp = regenBraking;
-    temp *= tarDivReg;
-    temp /= maxTarget;
-    temp /= 5;
-    r = (char) temp;
-    if (r>175) r=175;
-    if (r>t) t=r;  //Should never happen
-    if(lr!=r||lt!=t){
-        tt.fillrect(264,64,310,239-t,Navy);
-        tt.fillrect(264,239-t,310,239-r,Red);
-        tt.fillrect(264,239-r,310,239,Green);
-    }
-    lt=t;
-    lr=r;
 }
 
 void updateDisplay(char display){
@@ -1128,7 +1138,7 @@
 // changed to force since power had too large a dynamic range
 /*void braking (bool force, bool showButtons, bool prdata=false){
     unsigned long targetBraking, regenBraking, speed;
-    static unsigned long maxTarget = 20000, maxRegen = 20000, tarDivReg = 1000;
+    static unsigned long maxTarget = 20000, maxRegen = 20000, tardivreg_x1000 = 1000;
     short rpm;
     unsigned long temp;
     static unsigned char lastPressure[4] = {200,200,200,200};
@@ -1150,7 +1160,7 @@
             temp = targetBraking;
             temp *= 1000;
             temp /= regenBraking;
-            if (temp<tarDivReg) tarDivReg=temp;
+            if (temp<tardivreg_x1000) tardivreg_x1000=temp;
         }
         targetBraking *= speed;
         regenBraking *= speed;
@@ -1189,7 +1199,7 @@
     t = (char) temp;
     if (t>200) t=200;
     temp = regenBraking;
-    temp *= tarDivReg;
+    temp *= tardivreg_x1000;
     temp /= maxTarget;
     temp /= 5;
     r = (char) temp;
@@ -1200,7 +1210,7 @@
         tt.locate(100,40);
         printf("%d %d    \n",regenBraking,maxRegen);
         tt.locate(100,70);
-        printf("%3.1f (%3.1f%s)    \n",(float)tarDivReg/10,(float)regenBraking*tarDivReg/targetBraking/10,"%");
+        printf("%3.1f (%3.1f%s)    \n",(float)tardivreg_x1000/10,(float)regenBraking*tardivreg_x1000/targetBraking/10,"%");
     }    
     if(lt!=t&&prdata){
         tt.foreground(Yellow);
--- a/displayModes.h	Sun Apr 14 22:00:51 2013 +0000
+++ b/displayModes.h	Mon Apr 15 03:46:03 2013 +0000
@@ -35,7 +35,8 @@
 extern unsigned char skin;
 extern unsigned char dtePeriod;
 extern bool updateDTE;
-extern unsigned char tNavRow ; // gg - 4x4
+extern unsigned char tNavRow; // gg - 4x4
+extern unsigned short pointerSep; // log write buffer pointer separation
 
 extern "C" {
     void printLast (bool force, bool showButtons);
--- 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;