Dual CANbus monitor and instrumentation cluster
Dependencies: SPI_TFTx2 TFT_fonts TOUCH_TFTx2 beep mbed
Fork of CANary by
Diff: displayModes.cpp
- Revision:
- 42:4533b13b297d
- Parent:
- 41:8d4609ea7259
- Child:
- 43:e7f6f80590e3
--- a/displayModes.cpp Sun Mar 31 18:57:36 2013 +0000 +++ b/displayModes.cpp Sun Mar 31 20:38:15 2013 +0000 @@ -4,7 +4,7 @@ char sTemp1[40]; char sTemp2[16]; -void printLast (bool force){ +void printLast (bool force, bool showButtons){ CANMessage msg; tt.locate(0,6); tt.foreground(Red); @@ -15,7 +15,7 @@ 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){ + if((sMode==1)&&showButtons){ tt.foreground(Yellow); tt.background(DarkCyan); tt.set_font((unsigned char*) Arial12x12); @@ -27,7 +27,7 @@ } } -void printChanged (bool force){ +void printChanged (bool force, bool showButtons){ CANMessage msg; unsigned char i,j; tt.locate(0,6); @@ -45,7 +45,7 @@ i++; }// if changed }while(i<19&&j<99); - if(sMode==1){ + if((sMode==1)&&showButtons){ tt.foreground(Yellow); tt.background(DarkCyan); tt.set_font((unsigned char*) Arial12x12); @@ -59,7 +59,7 @@ } } -void printLog (bool force){ +void printLog (bool force, bool showButtons){ static unsigned char lastDisplayLoc = 0; if(force||displayLoc!=lastDisplayLoc){ //only update if changed tt.foreground(Amber); @@ -75,7 +75,7 @@ lastDisplayLoc=displayLoc; } -void mainDisplay (bool force){ +void mainDisplay (bool force, bool showButtons){ unsigned short gids, SOC, packV; static unsigned short lgids=0, lSOC=0, lpackV=0; static float lmpkWh=0, laccV=0;; @@ -127,7 +127,7 @@ } } -void braking (bool force, bool prdata=false){ +void braking (bool force, bool showButtons, bool prdata=false){ unsigned long targetBraking, regenBraking; static unsigned long maxTarget = 1000, maxRegen = 1000, tarDivReg = 1000; unsigned long temp; @@ -238,7 +238,7 @@ lr=r; } -void cpData(bool force){ +void cpData(bool force, bool showButtons){ short unsigned max, min, jv, i, bd; unsigned avg; if(force){ @@ -282,7 +282,7 @@ } showCP=false; } - if(sMode==1){ + if((sMode==1)&&showButtons){ tt.foreground(Yellow); tt.background(DarkCyan); tt.set_font((unsigned char*) Arial12x12); @@ -292,7 +292,7 @@ } } -void config1(bool force){ +void config1(bool force, bool showButtons){ if (force) { tt.background(Black); tt.cls(); @@ -328,7 +328,7 @@ showButton(2,1,sTemp1,sTemp2,3,3); } -void config2(bool force){ +void pbScreen(bool force, bool showButtons){ if (force) { tt.background(Black); tt.cls(); @@ -360,7 +360,7 @@ showButton(1,1,sTemp1,sTemp2,3,3); } -void showDateTime(bool force){ +void showDateTime(bool force, bool showButtons){ struct tm t; // pointer to a static tm structure time_t seconds ; tt.foreground(Yellow); @@ -373,7 +373,7 @@ tt.locate(10,10); strftime(sTemp1, 32, "%a %m/%d/%Y %X \n", &t); printf("%s",sTemp1); - if(sMode==1){ + if((sMode==1)&&showButtons){ tt.foreground(Yellow); tt.background(DarkCyan); tt.set_font((unsigned char*) Arial12x12); @@ -412,7 +412,7 @@ } } -void dteDisplay(bool force){ +void dteDisplay(bool force, bool showButtons){ static float lmpkWh=0; static float lMPH=0; tt.background(Navy); @@ -435,34 +435,34 @@ tt.set_display(display); switch (dMode[display]) { case logScreen: - printLog(changed); + printLog(changed,(display==whichTouched)); break; case mainScreen: - mainDisplay(changed); + mainDisplay(changed,(display==whichTouched)); break; case brakeScreen: - braking(changed); + braking(changed,(display==whichTouched)); break; case dteScreen: - dteDisplay(changed); + dteDisplay(changed,(display==whichTouched)); break; case monitorScreen: - printLast(changed); + printLast(changed,(display==whichTouched)); break; case changedScreen: - printChanged(changed); + printChanged(changed,(display==whichTouched)); break; case cpScreen: - cpData(changed||showCP); + cpData(changed||showCP,(display==whichTouched)); break; case config1Screen: - config1(changed); + config1(changed,(display==whichTouched)); break; case playbackScreen: - config2(changed); + pbScreen(changed,(display==whichTouched)); break; case dateScreen: - showDateTime(changed); + showDateTime(changed,(display==whichTouched)); break; default: tt.background(Black); @@ -471,90 +471,92 @@ } lastDMode[display]=dMode[display]; - switch (sMode) { - case 1: // Select screens - tt.foreground(Yellow); - tt.background(DarkCyan); - tt.set_font((unsigned char*) Arial12x12); - sprintf(sTemp1,"<-Prev"); - sprintf(sTemp2,""); - showButton(0,2,sTemp1,sTemp2,3,3); - sprintf(sTemp1," Next->"); - showButton(2,2,sTemp1,sTemp2,3,3); - sprintf(sTemp1," Select"); - switch (dMode[display]) { - case 0: - sprintf(sTemp2," Off"); - break; - case 1: - sprintf(sTemp2," Log"); - break; - case 2: - sprintf(sTemp2," Main"); - break; - case 3: - sprintf(sTemp2," Braking"); - break; - case 4: - sprintf(sTemp2," DTE"); - break; - case 5: - sprintf(sTemp2," Monitor"); - break; - case 6: - sprintf(sTemp2,"Delta Mon"); - break; - case 7: - sprintf(sTemp2,"Cell Pair"); - break; - case 8: - sprintf(sTemp2," Config"); - break; - case 9: - sprintf(sTemp2,"Playback"); - break; - case 10: - sprintf(sTemp2,"Set Time"); - break; - } - showButton(1,2,sTemp1,sTemp2,3,3); - wait_ms(100); // pause a moment to reduce flicker - break; - case 2: // numpad - sprintf(sTemp2,""); - tt.foreground(Yellow); - tt.background(DarkCyan); - tt.set_font((unsigned char*) Arial24x23); - sprintf(sTemp1," 1"); - showButton(0,0,sTemp1,sTemp2,4,4); - sprintf(sTemp1," 2"); - showButton(1,0,sTemp1,sTemp2,4,4); - sprintf(sTemp1," 3"); - showButton(2,0,sTemp1,sTemp2,4,4); - sprintf(sTemp1," 4"); - showButton(0,1,sTemp1,sTemp2,4,4); - sprintf(sTemp1," 5"); - showButton(1,1,sTemp1,sTemp2,4,4); - sprintf(sTemp1," 6"); - showButton(2,1,sTemp1,sTemp2,4,4); - sprintf(sTemp1," 7"); - showButton(0,2,sTemp1,sTemp2,4,4); - sprintf(sTemp1," 8"); - showButton(1,2,sTemp1,sTemp2,4,4); - sprintf(sTemp1," 9"); - showButton(2,2,sTemp1,sTemp2,4,4); - sprintf(sTemp1," 0"); - showButton(1,3,sTemp1,sTemp2,4,4); - sprintf(sTemp1,"<--"); - showButton(0,3,sTemp1,sTemp2,4,4); - sprintf(sTemp1,"-->"); - showButton(2,3,sTemp1,sTemp2,4,4); - sprintf(sTemp1,"return"); - showButton(3,3,sTemp1,sTemp2,4,4); - case 3: - break; - default: - break; + if(display==whichTouched){ + switch (sMode) { + case 1: // Select screens + tt.foreground(Yellow); + tt.background(DarkCyan); + tt.set_font((unsigned char*) Arial12x12); + sprintf(sTemp1,"<-Prev"); + sprintf(sTemp2,""); + showButton(0,2,sTemp1,sTemp2,3,3); + sprintf(sTemp1," Next->"); + showButton(2,2,sTemp1,sTemp2,3,3); + sprintf(sTemp1," Select"); + switch (dMode[display]) { + case 0: + sprintf(sTemp2," Off"); + break; + case 1: + sprintf(sTemp2," Log"); + break; + case 2: + sprintf(sTemp2," Main"); + break; + case 3: + sprintf(sTemp2," Braking"); + break; + case 4: + sprintf(sTemp2," DTE"); + break; + case 5: + sprintf(sTemp2," Monitor"); + break; + case 6: + sprintf(sTemp2,"Delta Mon"); + break; + case 7: + sprintf(sTemp2,"Cell Pair"); + break; + case 8: + sprintf(sTemp2," Config"); + break; + case 9: + sprintf(sTemp2,"Playback"); + break; + case 10: + sprintf(sTemp2,"Set Time"); + break; + } + showButton(1,2,sTemp1,sTemp2,3,3); + wait_ms(100); // pause a moment to reduce flicker + break; + case 2: // numpad + sprintf(sTemp2,""); + tt.foreground(Yellow); + tt.background(DarkCyan); + tt.set_font((unsigned char*) Arial24x23); + sprintf(sTemp1," 1"); + showButton(0,0,sTemp1,sTemp2,4,4); + sprintf(sTemp1," 2"); + showButton(1,0,sTemp1,sTemp2,4,4); + sprintf(sTemp1," 3"); + showButton(2,0,sTemp1,sTemp2,4,4); + sprintf(sTemp1," 4"); + showButton(0,1,sTemp1,sTemp2,4,4); + sprintf(sTemp1," 5"); + showButton(1,1,sTemp1,sTemp2,4,4); + sprintf(sTemp1," 6"); + showButton(2,1,sTemp1,sTemp2,4,4); + sprintf(sTemp1," 7"); + showButton(0,2,sTemp1,sTemp2,4,4); + sprintf(sTemp1," 8"); + showButton(1,2,sTemp1,sTemp2,4,4); + sprintf(sTemp1," 9"); + showButton(2,2,sTemp1,sTemp2,4,4); + sprintf(sTemp1," 0"); + showButton(1,3,sTemp1,sTemp2,4,4); + sprintf(sTemp1,"<--"); + showButton(0,3,sTemp1,sTemp2,4,4); + sprintf(sTemp1,"-->"); + showButton(2,3,sTemp1,sTemp2,4,4); + sprintf(sTemp1,"return"); + showButton(3,3,sTemp1,sTemp2,4,4); + case 3: + break; + default: + break; + } } } @@ -572,7 +574,7 @@ } // below is braking screen normalized to power rather than force // changed to force since power had too large a dynamic range -/*void braking (bool force, bool prdata=false){ +/*void braking (bool force, bool showButtons, bool prdata=false){ unsigned long targetBraking, regenBraking, speed; static unsigned long maxTarget = 20000, maxRegen = 20000, tarDivReg = 1000; short rpm;