Attempts to merge SPI_TFT2 & SPI_TFT_ILI9341
Dependencies: SPI_TFTx2 TFT_fonts TOUCH_TFTx2 mbed
Fork of CANary by
Revision 73:62ee8eae3a84, committed 2013-04-15
- Comitter:
- TickTock
- Date:
- Mon Apr 15 03:46:03 2013 +0000
- Parent:
- 72:f9a6faa28873
- Child:
- 74:e491e92b0bef
- Commit message:
- added log screen to index; added pointer separation monitor to main display when in debug mode
Changed in this revision
--- a/common.h Sun Apr 14 22:00:51 2013 +0000 +++ b/common.h Mon Apr 15 03:46:03 2013 +0000 @@ -23,6 +23,7 @@ #define maxBufLen 512 #define canTimeout 5 #define userTimeout 15 +#define debugMode false // gg - 4x4 touch // #define tNavRow = 2 ; // for 3x3
--- a/displayModes.cpp Sun Apr 14 22:00:51 2013 +0000 +++ b/displayModes.cpp Mon Apr 15 03:46:03 2013 +0000 @@ -72,7 +72,7 @@ void mainDisplay (bool force, bool showButtons){ unsigned short gids, SOC, packV; - static unsigned short lgids=0, lSOC=0, lpackV=0; + static unsigned short lgids=0, lSOC=0, lpackV=0, maxPS; static float lkW=0, laccV=0, lmpkWh=0; CANMessage msg; @@ -91,6 +91,11 @@ if(force||gids!=lgids||mpkWh[dtePeriod]!=lmpkWh){ tt.locate(10,10); printf("%4d gids \n",gids); + if(debugMode){ + if(pointerSep>maxPS){maxPS=pointerSep;} + tt.locate(10,70); + printf("%3d sep %3d max\n",pointerSep,maxPS); + } tt.locate(10,40); printf("%4.1f kWh \n",(float)(gids-5)*0.075); tt.set_font((unsigned char*) SCProSB31x55); @@ -169,7 +174,7 @@ void braking (bool force, bool showButtons, bool prdata=false){ unsigned long targetBraking, regenBraking; - static unsigned long maxTarget = 1000, maxRegen = 1000, tarDivReg = 1000; + static unsigned long maxTarget = 1000, maxRegen = 1000, tardivreg_x1000 = 1000; unsigned long temp; static unsigned char lastPressure[4] = {200,200,200,200}; unsigned char i,r,t; @@ -201,18 +206,6 @@ } //-------------- - msg = lastMsg[indexLastMsg[0x1cb]]; //Get Target and Regen - regenBraking = (msg.data[0]<<3)+(msg.data[1]>>5); - targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5); - if ((targetBraking>50)&&(regenBraking>50)){ - temp = targetBraking; - temp *= 1000; - temp /= regenBraking; - if (temp<tarDivReg) tarDivReg=temp; - } - if (targetBraking>maxTarget) maxTarget=targetBraking; - if (regenBraking>maxRegen) maxRegen=regenBraking; - msg = lastMsg[indexLastMsg[0x1ca]]; //Get brake pressure tt.background(Navy); if (force) { @@ -270,39 +263,53 @@ } } - temp = targetBraking; - temp *=200; - temp /= maxTarget; - t = (char) temp; - if (t>200) t=200; - temp = regenBraking; - temp *= tarDivReg; - temp /= maxTarget; - temp /= 5; - r = (char) temp; - if (r>200) r=200; - if(lr!=r&&prdata){ - tt.foreground(Yellow); - tt.set_font((unsigned char*) Arial28x28); - tt.locate(100,40); - printf("%d %d \n",regenBraking,maxRegen); - tt.locate(100,70); - printf("%3.1f (%3.1f%s) \n",(float)tarDivReg/10,(float)regenBraking*tarDivReg/targetBraking/10,"%"); - } - if(lt!=t&&prdata){ - tt.foreground(Yellow); - tt.set_font((unsigned char*) Arial28x28); - tt.locate(100,10); - printf("%d %d \n",targetBraking,maxTarget); + msg = lastMsg[indexLastMsg[0x1cb]]; //Get Target and Regen + regenBraking = (msg.data[0]<<3)+(msg.data[1]>>5); + targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5); + + if (targetBraking<2045){ + if ((targetBraking>50)&&(regenBraking>50)){ + temp = targetBraking; + temp *= 1000; + temp /= regenBraking; + if (temp<tardivreg_x1000) tardivreg_x1000=temp; + } + if (targetBraking>maxTarget) maxTarget=targetBraking; + if (regenBraking>maxRegen) maxRegen=regenBraking; + temp = targetBraking; + temp *=200; + temp /= maxTarget; + t = (char) temp; + if (t>200) t=200; + temp = regenBraking; + temp *= tardivreg_x1000; + temp /= maxTarget; + temp /= 5; // 1000/200=5 + r = (char) temp; + if (r>200) r=200; + if(lr!=r&&prdata){ + tt.foreground(Yellow); + tt.set_font((unsigned char*) Arial28x28); + tt.locate(100,40); + printf("%d %d \n",regenBraking,maxRegen); + tt.locate(100,70); + printf("%3.1f (%3.1f%s) \n",(float)tardivreg_x1000/10,(float)regenBraking*tardivreg_x1000/targetBraking/10,"%"); + } + if(lt!=t&&prdata){ + tt.foreground(Yellow); + tt.set_font((unsigned char*) Arial28x28); + tt.locate(100,10); + printf("%d %d \n",targetBraking,maxTarget); + } + if (r>t) t=r; //Should never happen + if((lr!=r||lt!=t)&&!prdata){ + tt.fillrect(190,10,260,239-t,Navy); + tt.fillrect(190,239-t,260,239-r,Red); + tt.fillrect(190,239-r,260,239,Green); + } + lt=t; + lr=r; } - if (r>t) t=r; //Should never happen - if((lr!=r||lt!=t)&&!prdata){ - tt.fillrect(190,10,260,239-t,Navy); - tt.fillrect(190,239-t,260,239-r,Red); - tt.fillrect(190,239-r,260,239,Green); - } - lt=t; - lr=r; } void cpData(bool force, bool showButtons){ @@ -765,7 +772,7 @@ static unsigned char leff[39]={0}; CANMessage msg; unsigned long targetBraking, regenBraking, temp; - static unsigned long maxTarget = 1000, maxRegen = 1000, tarDivReg = 1000; + static unsigned long maxTarget = 1000, maxRegen = 1000, tardivreg_x1000 = 1000; static unsigned char lr=0, lt=0; msg = lastMsg[indexLastMsg[0x5bc]]; //Get gids @@ -898,34 +905,37 @@ msg = lastMsg[indexLastMsg[0x1cb]]; //Get Target and Regen regenBraking = (msg.data[0]<<3)+(msg.data[1]>>5); targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5); - if ((targetBraking>50)&&(regenBraking>50)){ + + if (targetBraking<2045){ + if ((targetBraking>50)&&(regenBraking>50)){ + temp = targetBraking; + temp *= 1000; + temp /= regenBraking; + if (temp<tardivreg_x1000) tardivreg_x1000=temp; + } + if (targetBraking>maxTarget) maxTarget=targetBraking; + if (regenBraking>maxRegen) maxRegen=regenBraking; + temp = targetBraking; - temp *= 1000; - temp /= regenBraking; - if (temp<tarDivReg) tarDivReg=temp; + temp *=200; + temp /= maxTarget; + t = (char) temp; + if (t>175) t=175; + temp = regenBraking; + temp *= tardivreg_x1000; + temp /= maxTarget; + temp /= 5; // 1000/200=5 + r = (char) temp; + if (r>175) r=175; + if (r>t) t=r; //Should never happen + if(lr!=r||lt!=t){ + tt.fillrect(264,64,310,239-t,Navy); + tt.fillrect(264,239-t,310,239-r,Red); + tt.fillrect(264,239-r,310,239,Green); + } + lt=t; + lr=r; } - if (targetBraking>maxTarget) maxTarget=targetBraking; - if (regenBraking>maxRegen) maxRegen=regenBraking; - - temp = targetBraking; - temp *=200; - temp /= maxTarget; - t = (char) temp; - if (t>175) t=175; - temp = regenBraking; - temp *= tarDivReg; - temp /= maxTarget; - temp /= 5; - r = (char) temp; - if (r>175) r=175; - if (r>t) t=r; //Should never happen - if(lr!=r||lt!=t){ - tt.fillrect(264,64,310,239-t,Navy); - tt.fillrect(264,239-t,310,239-r,Red); - tt.fillrect(264,239-r,310,239,Green); - } - lt=t; - lr=r; } void updateDisplay(char display){ @@ -1128,7 +1138,7 @@ // changed to force since power had too large a dynamic range /*void braking (bool force, bool showButtons, bool prdata=false){ unsigned long targetBraking, regenBraking, speed; - static unsigned long maxTarget = 20000, maxRegen = 20000, tarDivReg = 1000; + static unsigned long maxTarget = 20000, maxRegen = 20000, tardivreg_x1000 = 1000; short rpm; unsigned long temp; static unsigned char lastPressure[4] = {200,200,200,200}; @@ -1150,7 +1160,7 @@ temp = targetBraking; temp *= 1000; temp /= regenBraking; - if (temp<tarDivReg) tarDivReg=temp; + if (temp<tardivreg_x1000) tardivreg_x1000=temp; } targetBraking *= speed; regenBraking *= speed; @@ -1189,7 +1199,7 @@ t = (char) temp; if (t>200) t=200; temp = regenBraking; - temp *= tarDivReg; + temp *= tardivreg_x1000; temp /= maxTarget; temp /= 5; r = (char) temp; @@ -1200,7 +1210,7 @@ tt.locate(100,40); printf("%d %d \n",regenBraking,maxRegen); tt.locate(100,70); - printf("%3.1f (%3.1f%s) \n",(float)tarDivReg/10,(float)regenBraking*tarDivReg/targetBraking/10,"%"); + printf("%3.1f (%3.1f%s) \n",(float)tardivreg_x1000/10,(float)regenBraking*tardivreg_x1000/targetBraking/10,"%"); } if(lt!=t&&prdata){ tt.foreground(Yellow);
--- a/displayModes.h Sun Apr 14 22:00:51 2013 +0000 +++ b/displayModes.h Mon Apr 15 03:46:03 2013 +0000 @@ -35,7 +35,8 @@ extern unsigned char skin; extern unsigned char dtePeriod; extern bool updateDTE; -extern unsigned char tNavRow ; // gg - 4x4 +extern unsigned char tNavRow; // gg - 4x4 +extern unsigned short pointerSep; // log write buffer pointer separation extern "C" { void printLast (bool force, bool showButtons);
--- a/main.cpp Sun Apr 14 22:00:51 2013 +0000 +++ b/main.cpp Mon Apr 15 03:46:03 2013 +0000 @@ -116,6 +116,7 @@ 60*60*24*1.58, 60*60*24*2.51, 60*60*24*3.98, 60*60*24*6.31, 60*60*24*10, 60*60*24*15.8, 60*60*24*30, // 1 month 60*60*24*39.8, 60*60*24*63.1, 60*60*24*100, 60*60*24*158, 60*60*24*251, 60*60*24*365}; // 1 year bool updateDTE = false; +unsigned short pointerSep; int main() { int readPointer=0; @@ -262,7 +263,8 @@ } }//logging enabled } else { // if (logOpen) - if (((writePointer+maxBufLen-readPointer)%maxBufLen)>(maxBufLen/16)||canIdle||!logEn) { + pointerSep=(writePointer+maxBufLen-readPointer)%maxBufLen; + if (pointerSep>(maxBufLen/16)||canIdle||!logEn) { // Dump buffer if > 1/16 full or canbus has stopped if (file == NULL) { logOpen = false; @@ -271,7 +273,7 @@ spkr.beep(1000,0.25); logEn=false; } else { - if (((writePointer+maxBufLen-readPointer)%maxBufLen)>(maxBufLen*7/8)) { // Hi-water mark + if (pointerSep>(maxBufLen*7/8)) { // Hi-water mark sprintf(sTemp,"Write buffer overrun.\n"); logMsg(sTemp); // write buffer overrun spkr.beep(1000,0.25); @@ -390,6 +392,7 @@ indexOffset=indexOffset>4?indexOffset-4:1; } else if (dMode[whichTouched] == indexScreen) { // gg - index dMode[whichTouched] = mainScreen ; // GoTo Main Screen + sMode=0; } else if (dMode[whichTouched]==config1Screen) { wait_ms(500); tt.background(Black); @@ -410,6 +413,7 @@ for(j=0;j<100;j++) msgChanged[j]=0; // clear changed data lastDMode[whichTouched]=99;//force refresh } else if (dMode[whichTouched] == indexScreen) { // gg - index + sMode=0; dMode[whichTouched] = brakeScreen ; // GoTo Brake Screen } else if (dMode[whichTouched]==cpScreen) { pollCP=true; @@ -437,6 +441,7 @@ indexOffset=indexOffset<77?indexOffset+4:80; } else if (dMode[whichTouched] == indexScreen) { // gg - index dMode[whichTouched] = effScreen ; // GoTo EFF Screen + sMode=0; } else if (dMode[whichTouched]==config1Screen) { sprintf(sTemp,"Saving config file.\n"); logMsg(sTemp); // saving config @@ -475,6 +480,7 @@ } else if (dMode[whichTouched] == indexScreen) { // gg - index dMode[whichTouched] = dteScreen ; // GoTo DTE Screen + sMode=0; }else{ lastDMode[whichTouched]=99;//repaint to clear highlight } @@ -487,8 +493,8 @@ logEn = !logEn; if (!logEn) repeatPoll=false; // disable auto polling, too } else if (dMode[whichTouched] == indexScreen) { // gg - index - dMode[whichTouched] = cpScreen ; // GoTo CP Data Screen - + dMode[whichTouched] = cpScreen ; // GoTo CP Data Screen + sMode=0; } else if (dMode[whichTouched]==dateScreen){ dtMode=(dtMode<6)?dtMode+1:0; lastDMode[whichTouched]=99; @@ -508,7 +514,7 @@ } } else if (dMode[whichTouched] == indexScreen) { // gg - index dMode[whichTouched] = cpHistScreen ; // GoTo CP Hist Screen - + sMode=0; } else if (dMode[whichTouched]==playbackScreen) { // Start/stop playback if(!playbackOpen){ @@ -556,6 +562,7 @@ yesBattLog = !yesBattLog; } else if (dMode[whichTouched] == indexScreen) { // gg - index dMode[whichTouched] = cpBarScreen ; // GoTo CP Bars Screen + sMode=0; } else if (dMode[whichTouched]==dateScreen){ upDate(dtMode,false); lastDMode[whichTouched]=99; @@ -587,6 +594,7 @@ case 32: // right col, bottom row (not nav) if (dMode[whichTouched] == indexScreen) { // gg - index dMode[whichTouched] = logScreen ; // GoTo Log Screen + sMode=0; } break;