test fork

Dependencies:   SPI_TFTx2 SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2 mbed

Fork of CANary_9341 by Tick Tock

Revision:
25:ddf0ec209f03
Parent:
24:6cf76ed8c432
Child:
26:462ccb580472
--- 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();