Dual CANbus monitor and instrumentation cluster
Dependencies: SPI_TFTx2 TFT_fonts TOUCH_TFTx2 beep mbed
Fork of CANary by
Diff: displayModes.cpp
- 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