Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2_ILI9341 mbed
Fork of CANary_corrupt by
Revision 42:4533b13b297d, committed 2013-03-31
- Comitter:
- TickTock
- Date:
- Sun Mar 31 20:38:15 2013 +0000
- Parent:
- 41:8d4609ea7259
- Child:
- 43:e7f6f80590e3
- Commit message:
- Changed so buttons only show on touched screen
Changed in this revision
--- 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;
--- a/displayModes.h Sun Mar 31 18:57:36 2013 +0000
+++ b/displayModes.h Sun Mar 31 20:38:15 2013 +0000
@@ -31,16 +31,17 @@
extern float kWh;
extern float mpkWh;
extern float MPH;
+extern unsigned char whichTouched;
extern "C" {
- void printLast (bool force);
- void printChanged (bool force);
- void printLog (bool force);
- void mainDisplay (bool force);
- void dteDisplay (bool force);
- void braking (bool force, bool prdata);
- void cpData(bool force);
- void showDateTime(bool force);
+ void printLast (bool force, bool showButtons);
+ void printChanged (bool force, bool showButtons);
+ void printLog (bool force, bool showButtons);
+ void mainDisplay (bool force, bool showButtons);
+ void dteDisplay (bool force, bool showButtons);
+ void braking (bool force, bool showButtons, bool prdata);
+ void cpData(bool force, bool showButtons);
+ void showDateTime(bool force, bool showButtons);
void updateDisplay(char display);
void showButton(unsigned char column, unsigned char row, char * text1, char * text2, unsigned char columns, unsigned char rows);
}
\ No newline at end of file
--- a/main.cpp Sun Mar 31 18:57:36 2013 +0000
+++ b/main.cpp Sun Mar 31 20:38:15 2013 +0000
@@ -63,6 +63,7 @@
volatile bool canIdle;
volatile bool userIdle;
bool touched=false; //flag to read touchscreen
+unsigned char whichTouched = 0;
char counter = 0;
unsigned char dMode[2] = {mainScreen,brakeScreen}; //display mode
unsigned char sMode = 0; // setup mode
@@ -295,9 +296,9 @@
if (secsNoTouch<2) {// Recently touched
secsNoTouch +=2; // increment to prevent double touch
if (lastTouch.x>320){
- i=1;
+ whichTouched=1;
} else {
- i=0;
+ whichTouched=0;
}
if (sMode==0) sMode = 1;
//sprintf(sTemp,"button %d %d,%d %d\n",i,buttonX(lastTouch.x,3),buttonY(lastTouch.y,3),lastTouch.x);
@@ -309,13 +310,13 @@
switch (buttonX(lastTouch.x,3)*10+buttonY(lastTouch.y,3)) {
case 00:
case 30:
- if (dMode[i]==monitorScreen||dMode[i]==changedScreen) {
+ if (dMode[whichTouched]==monitorScreen||dMode[whichTouched]==changedScreen) {
indexOffset=indexOffset>4?indexOffset-4:1;
- } else if (dMode[i]==config1Screen) {
+ } else if (dMode[whichTouched]==config1Screen) {
wait_ms(500);
tt.background(Black);
tt.calibrate();
- } else if (dMode[i]==playbackScreen) { // slower
+ } else if (dMode[whichTouched]==playbackScreen) { // slower
playbackInt *=2;
if(playbackEn){
playback.detach();
@@ -325,14 +326,14 @@
break;
case 10:
case 40:
- if (dMode[i]==changedScreen) {
+ if (dMode[whichTouched]==changedScreen) {
for(j=0;j<100;j++) msgChanged[j]=0; // clear changed data
- lastDMode[i]=99;//force refresh
- } else if (dMode[i]==cpScreen) {
+ lastDMode[whichTouched]=99;//force refresh
+ } else if (dMode[whichTouched]==cpScreen) {
pollCP=true;
- } else if (dMode[i]==config1Screen) {
+ } else if (dMode[whichTouched]==config1Screen) {
mbed_reset();
- } else if (dMode[i]==playbackScreen) { // pause/unpause
+ } else if (dMode[whichTouched]==playbackScreen) { // pause/unpause
playbackEn=!playbackEn;
if(playbackEn){
playback.attach(&playbackISR,playbackInt);
@@ -343,14 +344,14 @@
break;
case 20:
case 50:
- if (dMode[i]==monitorScreen||dMode[i]==changedScreen) {
+ if (dMode[whichTouched]==monitorScreen||dMode[whichTouched]==changedScreen) {
indexOffset=indexOffset<77?indexOffset+4:80;
- } else if (dMode[i]==config1Screen) {
+ } else if (dMode[whichTouched]==config1Screen) {
sprintf(sTemp,"Saving config file.\n");
logMsg(sTemp);
saveConfig();
spkr.beep(2000,0.25);
- } else if (dMode[i]==playbackScreen) { // faster
+ } else if (dMode[whichTouched]==playbackScreen) { // faster
if(playbackInt>.002){
playbackInt/=2;
if(playbackEn){
@@ -362,24 +363,24 @@
break;
case 01:
case 31:
- if (dMode[i]==config1Screen) {
+ if (dMode[whichTouched]==config1Screen) {
logEn = !logEn;
if (!logEn) repeatPoll=false; // disable auto polling, too
- } else if (dMode[i]==dateScreen){
+ } else if (dMode[whichTouched]==dateScreen){
dtMode=(dtMode<6)?dtMode+1:0;
- lastDMode[i]=99;
+ lastDMode[whichTouched]=99;
}
break;
case 11:
case 41:
- if (dMode[i]==config1Screen){
+ if (dMode[whichTouched]==config1Screen){
repeatPoll = !repeatPoll&&logEn;
if (repeatPoll) {
autoPoll.attach(&autoPollISR,pollInt);
} else {
autoPoll.detach();
}
- } else if (dMode[i]==playbackScreen) {
+ } else if (dMode[whichTouched]==playbackScreen) {
// Start/stop playback
if(!playbackOpen){
if(!logOpen){
@@ -406,24 +407,24 @@
playbackOpen=false;
can1.attach(&recieve1);// Restore CAN data recieve
can2.attach(&recieve2);
- lastDMode[i]=99;
+ lastDMode[whichTouched]=99;
}
playbackEn=false;
- } else if (dMode[i]==dateScreen){
+ } else if (dMode[whichTouched]==dateScreen){
upDate(dtMode,true);
- lastDMode[i]=99;
+ lastDMode[whichTouched]=99;
}
break;
case 21:
case 51:
- if (dMode[i]==dateScreen){
+ if (dMode[whichTouched]==dateScreen){
upDate(dtMode,false);
- lastDMode[i]=99;
+ lastDMode[whichTouched]=99;
}
break;
case 02:
case 32:
- dMode[i]=dMode[i]>0?dMode[i]-1:maxScreens;
+ dMode[whichTouched]=dMode[whichTouched]>0?dMode[whichTouched]-1:maxScreens;
break;
case 12:
case 42:
@@ -431,7 +432,7 @@
break;
case 22:
case 52:
- dMode[i]=dMode[i]<maxScreens?dMode[i]+1:0;
+ dMode[whichTouched]=dMode[whichTouched]<maxScreens?dMode[whichTouched]+1:0;
break;
default:
break;
