test fork

Dependencies:   SPI_TFTx2 SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2 mbed

Fork of CANary_9341 by Tick Tock

Revision:
36:dbd39c315258
Parent:
35:5acbd8a64a89
Child:
37:fea2c1d52c5f
--- a/displayModes.cpp	Thu Mar 21 12:05:22 2013 +0000
+++ b/displayModes.cpp	Sat Mar 23 04:43:45 2013 +0000
@@ -196,6 +196,286 @@
     lr=r;
 }
 
+void cpData(bool force){
+    short unsigned max, min, jv, i, bd;
+    unsigned avg;
+    if(force){
+        tt.foreground(White);
+        tt.background(Navy);
+        tt.set_font((unsigned char*) Arial12x12_prop);  // select the font
+        max=0;
+        min=9999;
+        avg=0;
+        for(i=0; i<96; i++){
+           bd=(battData[i*2+3]<<8)+battData[i*2+4];
+           avg+=bd;
+            if(bd>max) max=bd;
+            if(bd<min) min=bd;
+        }
+        avg /= 96;
+        if(min<3713) {
+            jv=avg-(max-avg)*1.5;
+        } else { // Only compute judgement value if min cellpair meets <= 3712mV requirement
+            jv=0;
+        }
+        tt.cls();
+        tt.locate(0,6);
+        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[224+5],battData[224+8],battData[224+11],battData[224+14]);
+        tt.locate(0,36);
+        for(i=0; i<16; i++){
+            printf("%02d-%02d : %04d %04d %04d %04d %04d %04d\n",i*6+1,i*6+6,(battData[i*12+3]<<8)+battData[i*12+4],(battData[i*12+5]<<8)+battData[i*12+6],(battData[i*12+7]<<8)+battData[i*12+8],(battData[i*12+9]<<8)+battData[i*12+10],(battData[i*12+11]<<8)+battData[i*12+12],(battData[i*12+13]<<8)+battData[i*12+14]);
+        }
+        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);
+        tt.rect(8+3*41,16,40+3*41,28,Red);
+        for(i=0; i<96; i++){
+            bd=(battData[i*2+3]<<8)+battData[i*2+4];
+            if(bd>0){
+                if(bd==max) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,Green);
+                //if(bd==avg) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,White);
+                if(bd==min) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,Yellow);
+                if(bd<jv) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,Red);
+            }
+        }
+        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){
+    if (force) {
+        tt.background(Black);
+        tt.cls();
+    }
+    tt.foreground(Yellow);
+    tt.background(DarkCyan);
+    tt.set_font((unsigned char*) Arial12x12);
+    sprintf(sTemp1," Calibrate");
+    sprintf(sTemp2,"  Touch");
+    showButton(0,0,sTemp1,sTemp2,3,3);
+    sprintf(sTemp1,"  Reset");
+    sprintf(sTemp2,"");
+    showButton(1,0,sTemp1,sTemp2,3,3);
+    sprintf(sTemp1,"  Save");
+    sprintf(sTemp2,"  Config");
+    showButton(2,0,sTemp1,sTemp2,3,3);
+    if (logEn) {
+        sprintf(sTemp1," Disable");
+    } else {
+        sprintf(sTemp1," Enable");
+    }
+    sprintf(sTemp2," Logging");
+    showButton(0,1,sTemp1,sTemp2,3,3);
+    if (repeatPoll) {
+        sprintf(sTemp1," Disable");
+    } else {
+        sprintf(sTemp1," Enable");
+    }
+    sprintf(sTemp2," Auto CP");
+    showButton(1,1,sTemp1,sTemp2,3,3);
+    sprintf(sTemp1," Start");
+    sprintf(sTemp2,"Playback");
+    showButton(2,1,sTemp1,sTemp2,3,3);
+}
+
+void config2(bool force){
+    if (force) {
+        tt.background(Black);
+        tt.cls();
+    }
+    tt.foreground(Yellow);
+    tt.background(DarkCyan);
+    tt.set_font((unsigned char*) Arial12x12);
+    if(playbackOpen){
+        sprintf(sTemp1,"Slower");
+        sprintf(sTemp2," <--");
+        showButton(0,0,sTemp1,sTemp2,3,3);
+        if(playbackEn){
+            sprintf(sTemp1," Pause");
+        }else{
+            sprintf(sTemp1,"  Run");
+        }
+        sprintf(sTemp2," %4.3f ",playbackInt);
+        showButton(1,0,sTemp1,sTemp2,3,3);
+        sprintf(sTemp1,"Faster");
+        sprintf(sTemp2,"     -->");
+        showButton(2,0,sTemp1,sTemp2,3,3);
+    }
+    if(playbackOpen){
+        sprintf(sTemp1," Stop");
+    }else{
+        sprintf(sTemp1," Start");
+    }
+    sprintf(sTemp2,"Playback");
+    showButton(1,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(sTemp2,"");
+            switch(dtMode){
+                case 0:
+                    sprintf(sTemp1,"Year");
+                    break;
+                case 1:
+                    sprintf(sTemp1,"Month");
+                    break;
+                case 2:
+                    sprintf(sTemp1,"Day");
+                    break;
+                case 3:
+                    sprintf(sTemp1,"Hour");
+                    break;
+                case 4:
+                    sprintf(sTemp1,"Minute");
+                    break;
+                case 5:
+                    sprintf(sTemp1,"Second");
+                    break;
+                case 6:
+                    sprintf(sTemp1,"Select");
+                    break;
+                default:
+                    break;
+            }
+            showButton(0,1,sTemp1,sTemp2,3,3);               
+            sprintf(sTemp1,"   UP");
+            showButton(1,1,sTemp1,sTemp2,3,3);               
+            sprintf(sTemp1,"  DOWN");
+            showButton(2,1,sTemp1,sTemp2,3,3);               
+        }
+    }
+}
+
+void updateDisplay(char display){
+    bool changed;
+    changed = dMode[display]!=lastDMode[display];
+    tt.set_display(display);
+    switch (dMode[display]) {
+        case logScreen:
+            printLog(changed);
+            break;
+        case dteScreen:
+            printDTE(changed);
+            break;
+        case brakeScreen:
+            braking(changed);
+            break;
+        case powerScreen:
+            //braking(changed, true);
+            //break;
+        case monitorScreen:
+            printLast(changed);
+            break;
+        case changedScreen:
+            printChanged(changed);
+            break;
+        case cpScreen:
+            cpData(changed||showCP);
+            break;
+        case config1Screen:
+            config1(changed);
+            break;
+        case config2Screen:
+            config2(changed);
+            break;
+        case dateScreen:
+            showDateTime(changed);
+            break;
+        default:
+            tt.background(Black);
+            tt.cls();
+            break;
+    }
+    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," Select %d",dMode[display]);
+            showButton(1,2,sTemp1,sTemp2,3,3);
+            sprintf(sTemp1,"   Next->");
+            showButton(2,2,sTemp1,sTemp2,3,3);
+            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;
+    }
+}
+
+void showButton(unsigned char column, unsigned char row, char * text1, char * text2, unsigned char columns, unsigned char rows){
+    unsigned short x1,x2,y1,y2;
+    x1=column*(320/columns)+btnGap/2;
+    x2=(column+1)*(320/columns)-btnGap/2;
+    y1=row*(240/rows)+btnGap/2;
+    y2=(row+1)*(240/rows)-btnGap/2;
+    tt.fillrect(x1,y1,x2,y2,DarkCyan);
+    tt.locate(x1+btnGap,y1+btnGap);
+    printf("%s\n",text1);
+    tt.locate(x1+btnGap,y1+btnGap+30);
+    printf("%s\n",text2);
+}
+
 /*void braking (bool force, bool prdata=false){
     unsigned long targetBraking, regenBraking, speed;
     static unsigned long maxTarget = 20000, maxRegen = 20000, tarDivReg = 1000;
@@ -286,247 +566,4 @@
     }
     lt=t;
     lr=r;
-}*/
-
-void cpData(bool force){
-    short unsigned max, min, jv, i, bd;
-    unsigned avg;
-    if(force){
-        tt.foreground(White);
-        tt.background(Navy);
-        tt.set_font((unsigned char*) Arial12x12_prop);  // select the font
-        max=0;
-        min=9999;
-        avg=0;
-        for(i=0; i<96; i++){
-           bd=(battData[i*2+3]<<8)+battData[i*2+4];
-           avg+=bd;
-            if(bd>max) max=bd;
-            if(bd<min) min=bd;
-        }
-        avg /= 96;
-        if(min<3713) {
-            jv=avg-(max-avg)*1.5;
-        } else { // Only compute judgement value if min cellpair meets <= 3712mV requirement
-            jv=0;
-        }
-        tt.cls();
-        tt.locate(0,6);
-        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[224+5],battData[224+8],battData[224+11],battData[224+14]);
-        tt.locate(0,36);
-        for(i=0; i<16; i++){
-            printf("%02d-%02d : %04d %04d %04d %04d %04d %04d\n",i*6+1,i*6+6,(battData[i*12+3]<<8)+battData[i*12+4],(battData[i*12+5]<<8)+battData[i*12+6],(battData[i*12+7]<<8)+battData[i*12+8],(battData[i*12+9]<<8)+battData[i*12+10],(battData[i*12+11]<<8)+battData[i*12+12],(battData[i*12+13]<<8)+battData[i*12+14]);
-        }
-        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);
-        tt.rect(8+3*41,16,40+3*41,28,Red);
-        for(i=0; i<96; i++){
-            bd=(battData[i*2+3]<<8)+battData[i*2+4];
-            if(bd>0){
-                if(bd==max) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,Green);
-                //if(bd==avg) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,White);
-                if(bd==min) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,Yellow);
-                if(bd<jv) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,Red);
-            }
-        }
-        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){
-    if (force) {
-        tt.background(Black);
-        tt.cls();
-    }
-    tt.foreground(Yellow);
-    tt.background(DarkCyan);
-    tt.set_font((unsigned char*) Arial12x12);
-    sprintf(sTemp1," Calibrate");
-    sprintf(sTemp2,"  Touch");
-    showButton(0,0,sTemp1,sTemp2,3,3);
-    sprintf(sTemp1,"  Reset");
-    sprintf(sTemp2,"");
-    showButton(1,0,sTemp1,sTemp2,3,3);
-    sprintf(sTemp1,"  Save");
-    sprintf(sTemp2,"  Config");
-    showButton(2,0,sTemp1,sTemp2,3,3);
-    if (logEn) {
-        sprintf(sTemp1," Disable");
-    } else {
-        sprintf(sTemp1," Enable");
-    }
-    sprintf(sTemp2," Logging");
-    showButton(0,1,sTemp1,sTemp2,3,3);
-    if (repeatPoll) {
-        sprintf(sTemp1," Disable");
-    } else {
-        sprintf(sTemp1," Enable");
-    }
-    sprintf(sTemp2," Auto CP");
-    showButton(1,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(sTemp2,"");
-            switch(dtMode){
-                case 0:
-                    sprintf(sTemp1,"Year");
-                    break;
-                case 1:
-                    sprintf(sTemp1,"Month");
-                    break;
-                case 2:
-                    sprintf(sTemp1,"Day");
-                    break;
-                case 3:
-                    sprintf(sTemp1,"Hour");
-                    break;
-                case 4:
-                    sprintf(sTemp1,"Minute");
-                    break;
-                case 5:
-                    sprintf(sTemp1,"Second");
-                    break;
-                case 6:
-                    sprintf(sTemp1,"Select");
-                    break;
-                default:
-                    break;
-            }
-            showButton(0,1,sTemp1,sTemp2,3,3);               
-            sprintf(sTemp1,"   UP");
-            showButton(1,1,sTemp1,sTemp2,3,3);               
-            sprintf(sTemp1,"  DOWN");
-            showButton(2,1,sTemp1,sTemp2,3,3);               
-        }
-    }
-}
-
-void updateDisplay(char display){
-    bool changed;
-    changed = dMode[display]!=lastDMode[display];
-    tt.set_display(display);
-    switch (dMode[display]) {
-        case logScreen:
-            printLog(changed);
-            break;
-        case dteScreen:
-            printDTE(changed);
-            break;
-        case brakeScreen:
-            braking(changed);
-            break;
-        case powerScreen:
-            //braking(changed, true);
-            //break;
-        case monitorScreen:
-            printLast(changed);
-            break;
-        case changedScreen:
-            printChanged(changed);
-            break;
-        case cpScreen:
-            cpData(changed||showCP);
-            break;
-        case config1Screen:
-            config1(changed);
-            break;
-        case config2Screen:
-            showDateTime(changed);
-            break;
-        default:
-            tt.background(Black);
-            tt.cls();
-            break;
-    }
-    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," Select %d",dMode[display]);
-            showButton(1,2,sTemp1,sTemp2,3,3);
-            sprintf(sTemp1,"   Next->");
-            showButton(2,2,sTemp1,sTemp2,3,3);
-            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;
-    }
-}
-
-void showButton(unsigned char column, unsigned char row, char * text1, char * text2, unsigned char columns, unsigned char rows){
-    unsigned short x1,x2,y1,y2;
-    x1=column*(320/columns)+btnGap/2;
-    x2=(column+1)*(320/columns)-btnGap/2;
-    y1=row*(240/rows)+btnGap/2;
-    y2=(row+1)*(240/rows)-btnGap/2;
-    tt.fillrect(x1,y1,x2,y2,DarkCyan);
-    tt.locate(x1+btnGap,y1+btnGap);
-    printf("%s\n",text1);
-    tt.locate(x1+btnGap,y1+btnGap+30);
-    printf("%s\n",text2);
-}
-
+}*/
\ No newline at end of file