Attempts to merge SPI_TFT2 & SPI_TFT_ILI9341

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 mbed

Fork of CANary by Tick Tock

Revision:
148:6e3b9135fad2
Parent:
144:b0c9d30dd346
Child:
149:e9739523109f
--- a/displayModes.cpp	Wed Aug 07 13:36:13 2013 +0000
+++ b/displayModes.cpp	Thu Sep 12 14:42:22 2013 +0000
@@ -7,9 +7,9 @@
 void mainDisplay (bool force, bool showButtons){
     unsigned short gids, SOC_x10, packV_x2, tireP;
     float useable_kWh,dte;
-    //unsigned char aTemp,c1Temp,c2Temp;
-    static unsigned short lgids=0, lSOC=0, lpackV_x2=0, ltireP=0, maxPS=0;
-    //static unsigned char laTemp=0,lc1Temp=0,lc2Temp=0;
+    unsigned char aTemp;
+    static unsigned short lgids=0, lSOC=0, lpackV_x2=0, ltireP=0;
+    static unsigned char laTemp=0;
     static float lmaxTemp=0, lkW=0, laccV=0, lmpkWh=0;
 
     CANMessage msg;
@@ -20,6 +20,8 @@
     SOC_x10 = (msg.data[0]<<2)+(msg.data[1]>>6);
     msg = lastMsg[indexLastMsg[0x1db]]; //Get pack volts
     packV_x2 = (msg.data[2]<<2)+(msg.data[3]>>6);
+    msg = lastMsg[indexLastMsg[0x54c]]; //Get ambient
+    aTemp = msg.data[6]-56;
     //msg = lastMsg[indexLastMsg[0x79a]]; //Get ambient and cabin temperature
     //aTemp = msg.data[5]-41; // Need to add convertsion to C if metric
     //c1Temp = msg.data[4]-41;
@@ -42,11 +44,6 @@
                 useable_kWh=0;
             }
             printf("%4.1f kWh \n",useable_kWh);
-            if(debugMode){
-                if(pointerSep>maxPS){maxPS=pointerSep;}
-                tt.locate(10,110);
-                printf("%3d sep  %3d max\n",pointerSep,maxPS);
-            }
 
             // Display DTE
             dte=convertDistance(minTripEff*useable_kWh);
@@ -124,32 +121,26 @@
             lpackV_x2=packV_x2;
             ltireP=0;//Force tire pressure redraw, too
         }
-        /*if(force||aTemp!=laTemp){
+        if(force||aTemp!=laTemp){
             tt.foreground(Cyan);
-            tt.locate(10,146);
-            printf("%d %d %d\n",aTemp,c1Temp,c2Temp);
+            tt.locate(20,146);
+            printf("%2.0f%s\n",convertF(aTemp),temperatureUnit());
             laTemp=aTemp;
-            lc1Temp=c1Temp;
-            lc2Temp=c2Temp;
-        }*/
+        }
         if(force||maxTemp!=lmaxTemp){
             tt.foreground(Cyan);
             tt.locate(210,146);
-            if (convertTemperature(maxTemp)<100){
-                printf(" %3.1f%s\n",convertTemperature(maxTemp),temperatureUnit());
+            if (convertC(maxTemp)<100){
+                printf(" %3.1f%s\n",convertC(maxTemp),temperatureUnit());
             }else{
-                printf("%4.1f%s\n",convertTemperature(maxTemp),temperatureUnit());
+                printf("%4.1f%s\n",convertC(maxTemp),temperatureUnit());
             }
             lmaxTemp=maxTemp;
         }
         if(force||accV!=laccV){
             tt.locate(20,176);
             tt.foreground(Yellow);
-            if(debugMode){
-                printf("%4.2f %4.2f \n",accV,accV2);
-            }else{
-                printf("%3.1fV  \n",accV);
-            }
+            printf("%3.1fV  \n",accV);
             laccV=accV;
         }
         if(force||tireP!=ltireP){
@@ -396,7 +387,7 @@
     }
     if(force||maxTemp!=lmaxTemp){
         tt.locate(10,130);
-        printf(" %4.1f %s (max) \n",convertTemperature(maxTemp),temperatureUnit());
+        printf(" %4.1f %s (max) \n",convertC(maxTemp),temperatureUnit());
         lmaxTemp=maxTemp;
     }
     if(force||unloadedV_x2!=lunlV){
@@ -588,8 +579,8 @@
             case 1:
                 tt.locate(0,6);
                 printf(" MAX  MIN  AVG CVLI T1  T2  T3  T4\n %04d %04d %04d %04d %2.0f%s %2.0f%s %2.0f%s %2.0f%s\n\n",
-                    max,min,avg,jv, convertTemperature(battData[BatDataBaseG4*7+5]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+8]),sTemperatureUnit,
-                    convertTemperature(battData[BatDataBaseG4*7+11]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+14]),sTemperatureUnit);
+                    max,min,avg,jv, convertC(battData[BatDataBaseG4*7+5]),sTemperatureUnit,convertC(battData[BatDataBaseG4*7+8]),sTemperatureUnit,
+                    convertC(battData[BatDataBaseG4*7+11]),sTemperatureUnit,convertC(battData[BatDataBaseG4*7+14]),sTemperatureUnit);
                 tt.rect(8+0*41,16,40+0*41,28,Green);
                 tt.rect(8+1*41,16,40+1*41,28,Yellow);
                 //tt.rect(8+2*41,16,40+2*41,28,White);
@@ -752,8 +743,8 @@
         tt.locate( 0, yWinMax+40 );
         char* sTemperatureUnit = temperatureUnit();
         printf(" MAX  MIN  AVG CVLI T1  T2  T3  T4\n %04d %04d %04d %04d %2.0f%s %2.0f%s %2.0f%s %2.0f%s\n",
-            max,min,avg,jv, convertTemperature(battData[BatDataBaseG4*7+5]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+8]),sTemperatureUnit,
-            convertTemperature(battData[BatDataBaseG4*7+11]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+14]),sTemperatureUnit);
+            max,min,avg,jv, convertC(battData[BatDataBaseG4*7+5]),sTemperatureUnit,convertC(battData[BatDataBaseG4*7+8]),sTemperatureUnit,
+            convertC(battData[BatDataBaseG4*7+11]),sTemperatureUnit,convertC(battData[BatDataBaseG4*7+14]),sTemperatureUnit);
         //printf(" MAX  MIN  AVG CVLI T1  T2  T3  T4\n %04d %04d %04d %04d %02dC %02dC %02dC %02dC\n\n",
         //        max,min,avg,jv,  battData[BatDataBaseG4*7+5],battData[BatDataBaseG4*7+8],  battData[BatDataBaseG4*7+11],battData[BatDataBaseG4*7+14]);
         
@@ -878,8 +869,8 @@
         tt.locate( 0, yWinMax+40 );
         char* sTemperatureUnit = temperatureUnit();
         printf(" MAX  MIN  AVG CVLI T1  T2  T3  T4\n %04d %04d %04d %04d %2.0f%s %2.0f%s %2.0f%s %2.0f%s\n\n",
-            max,min,avg,jv, convertTemperature(battData[BatDataBaseG4*7+5]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+8]),sTemperatureUnit,
-            convertTemperature(battData[BatDataBaseG4*7+11]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+14]),sTemperatureUnit);
+            max,min,avg,jv, convertC(battData[BatDataBaseG4*7+5]),sTemperatureUnit,convertC(battData[BatDataBaseG4*7+8]),sTemperatureUnit,
+            convertC(battData[BatDataBaseG4*7+11]),sTemperatureUnit,convertC(battData[BatDataBaseG4*7+14]),sTemperatureUnit);
         //printf(" MAX  MIN  AVG CVLI T1  T2  T3  T4\n %04d %04d %04d %04d %02dC %02dC %02dC %02dC\n\n",
         //        max,min,avg,jv,  battData[BatDataBaseG2*7+BatDataBaseG4*7+5],battData[BatDataBaseG2*7+BatDataBaseG4*7+8],  battData[BatDataBaseG2*7+BatDataBaseG4*7+11],battData[BatDataBaseG2*7+BatDataBaseG4*7+14]);
         
@@ -1264,6 +1255,32 @@
     }
 }
 
+void debugDisplay (bool force, bool showButtons){
+    static unsigned short maxPS=0;
+    unsigned char i, uData[8];
+    CANMessage msg;
+
+    for (i=0; i<8; i++){
+        msg = lastMsg[indexLastMsg[(uMsgId[i]>>4)]]; //Get ambient
+        uData[i] = msg.data[(uMsgId[i]&0x000f)];
+    }
+    tt.set_font((unsigned char*) Arial24x23);
+    tt.foreground(Yellow);
+    tt.background(Navy);
+    if(force){
+        tt.cls();
+    }
+    if(pointerSep>maxPS){maxPS=pointerSep;}
+    tt.locate(10,10);
+    printf("%3d sep  %3d max\n",pointerSep,maxPS);
+    tt.locate(10,40);
+    printf("%4.2fV %4.2fV \n",accV,accV2);
+    for (i=0; i<4; i++){
+        tt.locate(10,90+i*30);
+        printf("%4x:%2x %4x:%2x\n",uMsgId[i],uData[i],uMsgId[i+4],uData[i+4]);
+    }
+}
+
 void updateDisplay(char display){
     bool changed,showButtons;
     changed = dMode[display]!=lastDMode[display];
@@ -1318,6 +1335,9 @@
         case healthScreen:
             healthDisplay(changed,showButtons);
             break;
+        case debugScreen:
+            debugDisplay(changed,showButtons);
+            break;
         default:
             if (changed){
                 tt.background(Black);
@@ -1475,7 +1495,7 @@
 
 
 //The temps are stored as metric, distances as imperial... I'm assuming the input based on that - LM
-float convertTemperature(float input) 
+float convertC(float input) 
 {
     if (!metric) {
         //convert!
@@ -1485,6 +1505,17 @@
     }
     return input;
 }
+
+float convertF(float input) 
+{
+    if (metric) {
+        //convert!
+        float output = input -32.0f;
+        output /= 1.8f;
+        return output;   
+    }
+    return input;
+}
 float convertDistance(float input)
 {
     if (metric) {