test fork

Dependencies:   SPI_TFTx2 SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2 mbed

Fork of CANary_9341 by Tick Tock

Branch:
Metric
Revision:
98:9f8bab96edff
Parent:
96:a6c6a6fd1d28
Child:
99:c05abf8e1cdc
--- a/displayModes.cpp	Fri May 03 14:31:07 2013 +0000
+++ b/displayModes.cpp	Mon Jun 10 12:00:48 2013 +0000
@@ -101,8 +101,8 @@
             printf("%4.1f kWh \n",(float)(gids-5)*0.075);
             tt.set_font((unsigned char*) SCProSB31x55);
             tt.foreground(Green);
-            tt.locate(60,96);
-            printf("%4.1f mi  \n",mpkWh[dtePeriod]*((float)(gids-5)*.075));
+            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);
@@ -120,7 +120,7 @@
         }
         if(force||battTemp_x4!=lbattTemp_x4){
             tt.locate(200,170);
-            printf("%4.1fF\n",(float)battTemp_x4*9/20+32);
+            printf("%4.1f%s\n",convertTemperature((float)battTemp_x4*0.25f),temperatureUnit());
             lbattTemp_x4=battTemp_x4;
         }
         if(force||accV!=laccV){
@@ -149,7 +149,7 @@
             tt.foreground(Green);
             //tt.locate(60,96);
             tt.locate(60,116); // gg - move down a little
-            printf("%4.1f mi  \n",(float)(gids-5)*0.31); // Approx for now
+            printf("%4.1f %s  \n",convertDistance((float)(gids-5)*0.31),distanceUnit()); // Approx for now - LM added metric
             lgids=gids;
             tt.foreground(Yellow);
             tt.set_font((unsigned char*) Arial28x28);
@@ -343,8 +343,10 @@
         tt.cls();
         tt.locate(0,6);
         // BatDataBaseG4 * 7 = 224
-        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[224+5],battData[224+8],battData[224+11],battData[224+14]);
+        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[224+5]),sTemperatureUnit,convertTemperature(battData[224+8]),sTemperatureUnit,
+                    convertTemperature(battData[224+11]),sTemperatureUnit,convertTemperature(battData[224+14]),sTemperatureUnit);
         tt.locate(0,36);
         for(i=0; i<16; i++){
             printf("%02d-%02d : %04d %04d %04d %04d %04d %04d\n",
@@ -403,11 +405,11 @@
         showButton(0,1," GoTo","CP Data",4,4);               
         showButton(1,1," GoTo","CP Hist",4,4);               
         showButton(2,1," GoTo","CP Bars",4,4);     
-        // bottom (not Nav) row
-        showButton(0,2," GoTo"," Config",4,4);               
-        showButton(1,2," GoTo","Playback",4,4);               
-        showButton(2,2," GoTo","Set Time",4,4);             
-        showButton(3,2," GoTo"," Log",4,4);     
+        showButton(3,1," GoTo"," Config",4,4);               
+        // bottom (not Nav) row        
+        showButton(0,2," GoTo","Playback",4,4);               
+        showButton(1,2," GoTo","Set Time",4,4);             
+        showButton(2,2," GoTo"," Log",4,4);     
     
         showCP=false;
     }
@@ -654,7 +656,7 @@
 }
 
 //---------------
-void config1(bool force, bool showButtons){
+void config(bool force, bool showButtons){
     if (force) {
         tt.background(Black);
         tt.cls();
@@ -708,6 +710,14 @@
         sprintf(sTemp1,"Enable");
     }
     showButton(3,1,sTemp1," Debug",4,4);    
+    
+    if(metric)
+        showButton(0,2,"Imperial","",4,4);
+    else
+       showButton(0,2,"Metric","",4,4);
+    
+    showButton(3,2,"Update","Firmware",4,4);
+    
 }
 
 void pbScreen(bool force, bool showButtons){
@@ -841,8 +851,8 @@
         for(i=0;i<10;i++){
             y=200-i*20;
             tt.locate(10,y-8);
-            if (showMiles){
-                printf("%3.0f\n",i*((float)(gids-5)*.075));
+            if (showMiles){                                    
+                printf("%3.0f\n",convertDistance(i*((float)(gids-5)*.075))); // LM - Added metric support
             }else{
                 printf("%d.0\n",i);
             }
@@ -872,6 +882,7 @@
         tt.foreground(Green);
         if (showMiles){
             float miles = mpkWh[dtePeriod]*((float)(gids-5)*.075);
+            miles = convertDistance(miles); // LM - Metric support
             // Right justify
             if (miles>99.9){ //space=18; num=31; . = 23
                 tt.locate(161,8);
@@ -998,8 +1009,8 @@
         case cpScreen:
             cpData(changed||showCP,(display==whichTouched));
             break;
-        case config1Screen:
-            config1(changed,(display==whichTouched));
+        case configScreen:
+            config(changed,(display==whichTouched));
             break;
         case playbackScreen:
             pbScreen(changed,(display==whichTouched));
@@ -1066,9 +1077,9 @@
                     case cpScreen:
                         sprintf(sTemp2,"CP Data");
                         break;
-                    case config1Screen:
+                    case configScreen:
                         sprintf(sTemp2," Config");
-                        break;
+                        break;          
                     case playbackScreen:
                         sprintf(sTemp2,"Playback");
                         break;
@@ -1164,6 +1175,38 @@
     printf("%s\n",text2);
 }
 
+
+//The temps are stored as metric, distances as imperial... I'm assuming the input based on that - LM
+float convertTemperature(float input) 
+{
+    if (!metric) {
+        //convert!
+        float output = input *1.8f;
+        output += 32.0f;
+        return output;   
+    }
+    return input;
+}
+float convertDistance(float input)
+{
+    if (metric) {
+        return input / 0.62137f;
+    }
+    return input;
+}
+char* distanceUnit()
+{
+    if(metric)
+        return "km";
+    return "mi";
+}
+char* temperatureUnit()
+{
+    if(metric)
+        return "C";
+    return "F";
+}
+
 //-------------
 // below is braking screen normalized to power rather than force
 // changed to force since power had too large a dynamic range