test fork
Dependencies: SPI_TFTx2 SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2 mbed
Fork of CANary_9341 by
Diff: displayModes.cpp
- Revision:
- 148:6e3b9135fad2
- Parent:
- 144:b0c9d30dd346
- Child:
- 149:e9739523109f
diff -r e0f1c84c62a6 -r 6e3b9135fad2 displayModes.cpp --- 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) {