Attempts to merge SPI_TFT2 & SPI_TFT_ILI9341

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 mbed

Fork of CANary by Tick Tock

Branch:
Metric
Revision:
124:0d622967b764
Parent:
123:a8c0042df617
Child:
125:f58b7ab2abee
--- a/displayModes.cpp	Fri Jul 19 12:48:10 2013 +0000
+++ b/displayModes.cpp	Sat Jul 20 03:37:28 2013 +0000
@@ -5,8 +5,8 @@
 char sTemp2[16];
 
 void mainDisplay (bool force, bool showButtons){
-    unsigned short gids, SOC_x10, packV_x2;
-    static unsigned short lgids=0, lSOC=0, lSOH=0, lpackV_x2=0, maxPS=0;
+    unsigned short gids, SOC_x10, packV_x2, tireP;
+    static unsigned short lgids=0, lSOC=0, lSOH=0, lpackV_x2=0, ltireP=0, maxPS=0;
     static float lmaxTemp=0;
     static float lkW=0, laccV=0, lmpkWh=0;
     static unsigned long lAh=0;
@@ -18,7 +18,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[0x385]]; //Get tire pressure
+    tireP = msg.data[2]+msg.data[3]+msg.data[4]+msg.data[5];
 
     tt.background(Navy);
     tt.foreground(Yellow);
@@ -37,30 +38,51 @@
             printf("%4.1f kWh \n",(float)(gids-5)*0.075);
             tt.set_font((unsigned char*) SCProSB31x55);
             tt.foreground(Green);
-            tt.locate(60,106);            
+            tt.locate(60,96);            
             printf("%4.1f %s  \n",convertDistance(mpkWh[dtePeriod]*((float)(gids-5)*.075)),distanceUnit()); //LM - add metric conversion
             lgids=gids;
             lmpkWh=mpkWh[dtePeriod];
             tt.foreground(Yellow);
             tt.set_font((unsigned char*) Arial28x28);
         }
+        if(force||tireP!=ltireP){
+            tt.foreground(LightGrey);
+            if(msg.data[6]&0x80){
+                tt.locate(40,150);
+                printf("%3.1f\n",(float)msg.data[2]/4);
+            }
+            if(msg.data[6]&0x40){
+                tt.locate(114,150);
+                printf("%3.1f\n",(float)msg.data[3]/4);
+            }
+            if(msg.data[6]&0x20){
+                tt.locate(40,178);
+                printf("%3.1f\n",(float)msg.data[4]/4);
+            }
+            if(msg.data[6]&0x10){
+                tt.locate(114,178);
+                printf("%3.1f\n",(float)msg.data[5]/4);
+            }
+            tt.foreground(Yellow);
+            ltireP=tireP;
+        }
         if(force||SOC_x10!=lSOC){
             tt.locate(200,10);
             printf("%4.1f%s\n",(float)SOC_x10/10,"% ");
             lSOC=SOC_x10;
         }
         if(force||packV_x2!=lpackV_x2){
-            tt.locate(200,200);
+            tt.locate(200,206);
             printf("%4.1fV \n",(float)packV_x2/2);
             lpackV_x2=packV_x2;
         }
         if(force||maxTemp!=lmaxTemp){
-            tt.locate(200,170);
+            tt.locate(200,176);
             printf("%4.1f%s\n",convertTemperature(maxTemp),temperatureUnit());
             lmaxTemp=maxTemp;
         }
         if(force||accV!=laccV){
-            tt.locate(20,200);
+            tt.locate(20,206);
             printf("%3.1fV  \n",accV);
             laccV=accV;
         }
@@ -87,7 +109,7 @@
             lAh=Ah_x10000;
         }
         if(force||SOH_x100!=lSOH){
-            tt.locate(200,70);
+            tt.locate(206,70);
             printf("%4.1f%s\n",(float)SOH_x100/100,"% ");
             lSOH=SOH_x100;
         }
@@ -234,7 +256,7 @@
 void healthDisplay (bool force, bool showButtons){
     unsigned short gids, SOC_x10;
     static unsigned short lgids=0, lSOC=0, lSOH=0;
-    static float lTire=0, lresr=0, lunlV=0;
+    static float lmaxTemp=0, lresr=0, lunlV=0;
     static unsigned long lAh=0;
     CANMessage msg;
 
@@ -287,22 +309,21 @@
         printf(" %4.2f Ah cap \n",(float)Ah_x10000/10000);
         lAh=Ah_x10000;
     }
+    if(force||maxTemp!=lmaxTemp){
+        tt.locate(10,130);
+        printf(" %4.1f %s (max) \n",convertTemperature(maxTemp),temperatureUnit());
+        lmaxTemp=maxTemp;
+    }
     if(force||unloadedV_x2!=lunlV){
-        tt.locate(10,130);
+        tt.locate(10,160);
         printf(" %4.1f V \n",unloadedV_x2/2);
         lunlV=unloadedV_x2;
     }
     if(force||Resr!=lresr){
-        tt.locate(10,160);
+        tt.locate(10,190);
         printf(" %3.0f mOhms \n",Resr*1000);
         lresr=Resr;
     }
-    if(force||(queryData[DataBaseG7*7+8]!=lTire)){
-        tt.locate(10,190);
-        printf("%3.1f %3.1f %3.1f %3.1f\n",(float)queryData[DataBaseG7*7+5]/4,(float)queryData[DataBaseG7*7+6]/4,(float)queryData[DataBaseG7*7+7]/4,(float)queryData[DataBaseG7*7+8]/4);
-        lTire=queryData[DataBaseG7*7+8];
-    }
-    
 }
 
 void braking (bool force, bool showButtons, bool prdata=false){
@@ -461,7 +482,7 @@
         min=9999;
         avg=0;
         for(i=0; i<96; i++){
-           bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4];
+           bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4];
            avg+=bd;
             if(bd>max) max=bd;
             if(bd<min) min=bd;
@@ -482,8 +503,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(queryData[DataBaseG4*7+5]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+8]),sTemperatureUnit,
-                    convertTemperature(queryData[DataBaseG4*7+11]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+14]),sTemperatureUnit);
+                    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);
                 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);
@@ -494,12 +515,12 @@
                 for(i=(step-2)*4; i<(step-1)*4; i++){
                     printf("%02d-%02d : %04d %04d %04d %04d %04d %04d\n",
                         i*6+1,i*6+6,
-                        (queryData[DataBaseG2*7+i*12+3]<<8)+queryData[DataBaseG2*7+i*12+4],(queryData[DataBaseG2*7+i*12+5]<<8)+queryData[DataBaseG2*7+i*12+6],
-                        (queryData[DataBaseG2*7+i*12+7]<<8)+queryData[DataBaseG2*7+i*12+8],(queryData[DataBaseG2*7+i*12+9]<<8)+queryData[DataBaseG2*7+i*12+10],
-                        (queryData[DataBaseG2*7+i*12+11]<<8)+queryData[DataBaseG2*7+i*12+12],(queryData[DataBaseG2*7+i*12+13]<<8)+queryData[DataBaseG2*7+i*12+14]);
+                        (battData[BatDataBaseG2*7+i*12+3]<<8)+battData[BatDataBaseG2*7+i*12+4],(battData[BatDataBaseG2*7+i*12+5]<<8)+battData[BatDataBaseG2*7+i*12+6],
+                        (battData[BatDataBaseG2*7+i*12+7]<<8)+battData[BatDataBaseG2*7+i*12+8],(battData[BatDataBaseG2*7+i*12+9]<<8)+battData[BatDataBaseG2*7+i*12+10],
+                        (battData[BatDataBaseG2*7+i*12+11]<<8)+battData[BatDataBaseG2*7+i*12+12],(battData[BatDataBaseG2*7+i*12+13]<<8)+battData[BatDataBaseG2*7+i*12+14]);
                 }
                 for(i=(step-2)*24; i<(step-1)*24; i++){
-                    bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4];
+                    bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4];
                     if(bd>0){
                         if(bd==max) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,Green);
                         //if(bd==avg) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,White);
@@ -584,7 +605,7 @@
        
         // calc each cell-pair voltage, find max and min
         for(i=0; i<96; i++){
-           bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4];
+           bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4];
            nBar[i] = bd; // init to bar height
            avg+=bd;
             if(bd>max) max=bd;
@@ -638,14 +659,14 @@
         }
         
         // values, for now
-        // DataBaseG4 * 7 = 280
+        // BatDataBaseG4 * 7 = 280
         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(queryData[DataBaseG4*7+5]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+8]),sTemperatureUnit,
-            convertTemperature(queryData[DataBaseG4*7+11]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+14]),sTemperatureUnit);
+            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);
         //printf(" MAX  MIN  AVG CVLI T1  T2  T3  T4\n %04d %04d %04d %04d %02dC %02dC %02dC %02dC\n\n",
-        //        max,min,avg,jv,  queryData[DataBaseG4*7+5],queryData[DataBaseG4*7+8],  queryData[DataBaseG4*7+11],queryData[DataBaseG4*7+14]);
+        //        max,min,avg,jv,  battData[BatDataBaseG4*7+5],battData[BatDataBaseG4*7+8],  battData[BatDataBaseG4*7+11],battData[BatDataBaseG4*7+14]);
         
         // label the X axis (approximate)
         tt.locate( 2, yWinMax+5); printf("%04d", min );
@@ -711,7 +732,7 @@
         min=9999;
         avg=0;
         for(i=0; i<96; i++){
-           bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4];
+           bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4];
            avg+=bd;
             if(bd>max) max=bd;
             if(bd<min) min=bd;
@@ -749,7 +770,7 @@
         
         // do the bin counting
         for(int i=0; i<96; i++){
-          bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4] - min ;
+          bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4] - min ;
           if( bd > iBinValMax ) bd = iBinValMax ;
           nBin[bd] ++ ;
         }
@@ -768,14 +789,14 @@
         }
         
         // the values, for now
-        // DataBaseG4 * 7 = 280        
+        // BatDataBaseG4 * 7 = 280        
         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(queryData[DataBaseG4*7+5]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+8]),sTemperatureUnit,
-            convertTemperature(queryData[DataBaseG4*7+11]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+14]),sTemperatureUnit);
+            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);
         //printf(" MAX  MIN  AVG CVLI T1  T2  T3  T4\n %04d %04d %04d %04d %02dC %02dC %02dC %02dC\n\n",
-        //        max,min,avg,jv,  queryData[DataBaseG2*7+DataBaseG4*7+5],queryData[DataBaseG2*7+DataBaseG4*7+8],  queryData[DataBaseG2*7+DataBaseG4*7+11],queryData[DataBaseG2*7+DataBaseG4*7+14]);
+        //        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]);
         
         //---------------
         // show the bars