Dual CANbus monitor and instrumentation cluster
Dependencies: SPI_TFTx2 TFT_fonts TOUCH_TFTx2 beep mbed
Fork of CANary by
Diff: displayModes.cpp
- Revision:
- 25:ddf0ec209f03
- Parent:
- 24:6cf76ed8c432
- Child:
- 26:462ccb580472
diff -r 6cf76ed8c432 -r ddf0ec209f03 displayModes.cpp --- a/displayModes.cpp Thu Mar 14 05:02:15 2013 +0000 +++ b/displayModes.cpp Fri Mar 15 04:28:34 2013 +0000 @@ -1,7 +1,7 @@ //displayModes.cpp #include "displayModes.h" -char sTemp1[16]; +char sTemp1[40]; char sTemp2[16]; void printLast (bool force){ @@ -15,6 +15,19 @@ msg = lastMsg[i+indexOffset]; printf("%03x : %02x %02x %02x %02x %02x %02x %02x %02x \n",msg.id,msg.data[0],msg.data[1],msg.data[2],msg.data[3],msg.data[4],msg.data[5],msg.data[6],msg.data[7]); } + if(sMode==1){ + tt.foreground(Yellow); + tt.background(DarkCyan); + tt.set_font((unsigned char*) Arial12x12); + sprintf(sTemp1,"<up>"); + sprintf(sTemp2,""); + showButton(0,0,sTemp1,sTemp2,3,3); + tt.foreground(Yellow); + tt.background(DarkCyan); + tt.set_font((unsigned char*) Arial12x12); + sprintf(sTemp1,"<down>"); + showButton(2,0,sTemp1,sTemp2,3,3); + } } void printChanged (bool force){ @@ -68,7 +81,7 @@ tt.background(Navy); if(force) tt.cls(); if(force||gids!=lgids){ - tt.foreground(Amber); + tt.foreground(Yellow); tt.set_font((unsigned char*) Arial28x28); tt.locate(10,10); printf("%4d gids\n",gids); @@ -82,14 +95,14 @@ lgids=gids; } if(force||SOC!=lSOC){ - tt.foreground(Amber); + tt.foreground(Yellow); tt.set_font((unsigned char*) Arial28x28); tt.locate(200,10); printf("%4.1f%s\n",(float)SOC/10,"%"); lSOC=SOC; } if(force||packV!=lpackV){ - tt.foreground(Amber); + tt.foreground(Yellow); tt.set_font((unsigned char*) Arial28x28); tt.locate(200,200); printf("%4.1fV\n",(float)packV/2); @@ -97,9 +110,9 @@ } } -void braking (bool force, bool prdata){ +void braking (bool force, bool prdata=false){ unsigned long targetBraking, regenBraking, speed; - static unsigned long maxTarget = 0, maxRegen = 0, tarDivReg = 0; + static unsigned long maxTarget = 0, maxRegen = 0, tarDivReg = 1000000; short rpm; unsigned long temp; static unsigned char lastPressure[4] = {200,200,200,200}; @@ -159,36 +172,39 @@ temp *= 200; temp /= maxTarget; t = (char) temp; - if (t>238) t=238; + if (t>220) t=220; temp = regenBraking; temp *= tarDivReg; temp *= 200; temp /= maxTarget; r = (char) temp; - if (r>238) r=238; + if (r>220) r=220; if(lr!=r&&prdata){ - tt.foreground(Amber); + tt.foreground(Red); tt.set_font((unsigned char*) Arial28x28); - tt.locate(100,50); + tt.locate(100,40); printf("%d %d \n",regenBraking,maxRegen); - tt.locate(100,90); - printf("%3.1f (%3.1f%s) \n",(float)tarDivReg/1000,(float)regenBraking*tarDivReg/targetBraking/1000,"%"); + 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(Amber); + tt.foreground(Red); tt.set_font((unsigned char*) Arial28x28); tt.locate(100,10); printf("%d %d \n",targetBraking,maxTarget); } if((lr!=r||lt!=t)&&!prdata){ - if(r<lr) - tt.fillrect(200,239-lr,300,239-r,Red); - else - tt.fillrect(200,239-r,300,239-lr,Green); - if(t<lt) - tt.fillrect(200,239-lt,300,239-t,Navy); - else - tt.fillrect(200,239-t,300,238-r,Red); + if(t<lt){ + tt.fillrect(200,238-lt,300,237-t,Navy); + if(t<lr) lr=t; + } else { + tt.fillrect(200,238-t,300,238-lt,Red); + } + if(r<lr){ + tt.fillrect(200,238-lr,300,237-r,Red); + } else { + tt.fillrect(200,238-r,300,238-lr,Green); + } } lt=t; lr=r; @@ -239,6 +255,14 @@ } showCP=false; } + if(sMode==1){ + tt.foreground(Yellow); + tt.background(DarkCyan); + tt.set_font((unsigned char*) Arial12x12); + sprintf(sTemp1,"Request"); + sprintf(sTemp2,"CP data"); + showButton(1,0,sTemp1,sTemp2,3,3); + } } void config1(bool force){ @@ -267,6 +291,58 @@ showButton(0,1,sTemp1,sTemp2,3,3); } +void showDateTime(bool force){ + struct tm t; // pointer to a static tm structure + time_t seconds ; + tt.foreground(Yellow); + tt.background(Navy); + if (force) { + tt.cls(); + seconds = time(NULL); + t = *localtime(&seconds) ; + + tt.locate(10,10); + strftime(sTemp1, 32, "%a %m/%d/%Y %X \n", &t); + printf("%s",sTemp1); + if(sMode==1){ + tt.foreground(Yellow); + tt.background(DarkCyan); + tt.set_font((unsigned char*) Arial12x12); + sprintf(sTemp1,""); + switch(dtMode){ + case 0: + sprintf(sTemp2,"Year"); + break; + case 1: + sprintf(sTemp2,"Month"); + break; + case 2: + sprintf(sTemp2,"Day"); + break; + case 3: + sprintf(sTemp2,"Hour"); + break; + case 4: + sprintf(sTemp2,"Minute"); + break; + case 5: + sprintf(sTemp2,"Second"); + break; + case 6: + sprintf(sTemp2,"Select"); + break; + default: + break; + } + showButton(0,1,sTemp1,sTemp2,3,3); + sprintf(sTemp2," UP"); + showButton(1,1,sTemp1,sTemp2,3,3); + sprintf(sTemp2," DOWN"); + showButton(2,1,sTemp1,sTemp2,3,3); + } + } +} + void updateDisplay(char display){ bool changed; changed = dMode[display]!=lastDMode[display]; @@ -282,41 +358,23 @@ braking(changed,true); break; case powerScreen: - braking(changed,false); + braking(changed); break; case monitorScreen: printLast(changed); - if(sMode==1){ - tt.foreground(Yellow); - tt.background(DarkCyan); - tt.set_font((unsigned char*) Arial12x12); - sprintf(sTemp1,"<up>"); - sprintf(sTemp2,""); - showButton(0,0,sTemp1,sTemp2,3,3); - tt.foreground(Yellow); - tt.background(DarkCyan); - tt.set_font((unsigned char*) Arial12x12); - sprintf(sTemp1,"<down>"); - showButton(2,0,sTemp1,sTemp2,3,3); - } break; case changedScreen: printChanged(changed); break; case cpScreen: cpData(changed||showCP); - if(sMode==1){ - tt.foreground(Yellow); - tt.background(DarkCyan); - tt.set_font((unsigned char*) Arial12x12); - sprintf(sTemp1,"Request"); - sprintf(sTemp2,"CP data"); - showButton(1,0,sTemp1,sTemp2,3,3); - } break; - case configScreen: + case config1Screen: config1(changed); break; + case config2Screen: + showDateTime(changed); + break; default: tt.background(Black); tt.cls();