Attempts to merge SPI_TFT2 & SPI_TFT_ILI9341

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 mbed

Fork of CANary by Tick Tock

Revision:
171:355e284f5201
Parent:
170:7ee98e3611bc
Child:
172:53548bf8bf85
--- a/displayModes.cpp	Tue Dec 24 12:20:50 2013 +0000
+++ b/displayModes.cpp	Sat Dec 28 14:53:14 2013 +0000
@@ -1153,8 +1153,7 @@
     static unsigned short lgids=0;
     static unsigned char leff[39]={0};
     CANMessage msg;
-    unsigned long targetBraking, regenBraking, temp;
-    static unsigned long maxTarget = 1000, tardivreg_x1000 = 1400;
+    unsigned long targetBraking, regenBraking, motorSpeed, motorAmps, frictionBraking;
     static unsigned char lr=0, lt=0, lar=0;
 
     msg = lastMsg[indexLastMsg[0x5bc]]; //Get gids
@@ -1315,52 +1314,59 @@
         leff[i-1]=y;
     }
 
+    // Plot Braking friction/regen bar graph
+    msg = lastMsg[indexLastMsg[0x176]]; //Get RPMs
+    motorSpeed = (msg.data[2]<<8)+msg.data[3];
     msg = lastMsg[indexLastMsg[0x260]]; //Get available regen
-    availableRegen = msg.data[1]*2;
+    availableRegen = msg.data[1]*4;
+    msg = lastMsg[indexLastMsg[0x1cb]]; //Get target total braking
+    targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5);
+    msg = lastMsg[indexLastMsg[0x292]]; //Get friction braking
+    frictionBraking = msg.data[6];
+    msg = lastMsg[indexLastMsg[0x180]]; //Get motor amps
+    motorAmps = (msg.data[2]<<4)+(msg.data[3]>>4);
+    if(motorAmps>0x7ff){ // invert and chop positive current
+        motorAmps=0x1000-motorAmps;
+    }else{
+        motorAmps=0;
+    }
 
+    targetBraking *= motorSpeed;
+    targetBraking /= tbScalar;  //0.0000345 * 4
+    regenBraking = motorAmps;
+    regenBraking *= motorSpeed;
+    regenBraking /= rbScalar;  //0.00002875 * 4
+    frictionBraking *= motorSpeed;
+    frictionBraking /= fbScalar;  //0.0019 * 4
+
+    // Plot available regen brackets
     if(availableRegen>lar){
-        tt.fillrect(264,240-availableRegen,266,239-lar,White);
-        tt.fillrect(308,240-availableRegen,310,239-lar,White);
+        tt.fillrect(273,238-availableRegen,275,239-lar,White);
+        tt.fillrect(317,238-availableRegen,319,239-lar,White);
+        if(availableRegen>=24){
+            for(i=24;i<=availableRegen;i+=24){
+                tt.fillrect(270,238-i,272,239-i,White);
+            }
+        }
         lar=availableRegen;
     }else if(availableRegen<lar){
-        tt.fillrect(264,240-lar,266,239-availableRegen,Navy);
-        tt.fillrect(308,240-lar,310,239-availableRegen,Navy);
+        tt.fillrect(270,238-lar,275,239-availableRegen,Navy);
+        tt.fillrect(317,238-lar,319,239-availableRegen,Navy);
         lar=availableRegen;
     }
 
-    msg = lastMsg[indexLastMsg[0x1cb]]; //Get Target total braking
-    targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5);
-
-    msg = lastMsg[indexLastMsg[0x1d4]]; //Get Motor Amps - simlar to 1d5/1.4 but includes coast regen
-    temp = (msg.data[2]<<4)+(msg.data[3]>>4);
-    if(temp>0x7ff){ // invert and chop positive current
-        regenBraking=0x1000-temp;
-    }else{
-        regenBraking=0;
+    t = (unsigned char) regenBraking+frictionBraking;
+    if (t>160) t=160;
+    r = (unsigned char) regenBraking;
+    if (r>160) r=160;
+    if (r>t) t=r;  //Should never happen
+    if(lr!=r||lt!=t){
+        if (t<160) tt.fillrect(277,239-160,315,238-t,Navy);
+        if (r<t) tt.fillrect(277,239-t,315,238-r,Red);
+        if (0<r) tt.fillrect(277,239-r,315,238,Green);
     }
-
-    if (targetBraking<2045){
-        if (targetBraking>maxTarget) maxTarget=targetBraking;
-        temp = targetBraking;
-        temp *=167;
-        temp /= maxTarget;
-        t = (char) temp;
-        if (t>160) t=160;
-        temp = regenBraking;
-        temp *= tardivreg_x1000;
-        temp /= maxTarget;
-        temp /= 6; // 1000/167=6
-        r = (char) temp;
-        if (r>160) r=160;
-        if (r>t) t=r;  //Should never happen
-        if(lr!=r||lt!=t){
-            if (t<160) tt.fillrect(268,239-160,306,238-t,Navy);
-            if (r<t) tt.fillrect(268,239-t,306,238-r,Red);
-            if (0<r) tt.fillrect(268,239-r,306,238,Green);
-        }
-        lt=t;
-        lr=r;
-    }
+    lt=t;
+    lr=r;
 }
 
 void testDisplay (bool force, bool showButtons){
@@ -1382,18 +1388,6 @@
         tt.locate(10,10);
         printf("%d maxT\n",maxTarget);
     }
-    /*msg = lastMsg[indexLastMsg[0x5fa]];
-    month = msg.data[5]>>4;
-    day = msg.data[2]>>3;
-    msg = lastMsg[indexLastMsg[0x5fb]];
-    year = msg.data[1];
-    msg = lastMsg[indexLastMsg[0x5fc]];
-    hour = msg.data[0]>>3;
-    minute = (msg.data[1]<<4&0x30)+(msg.data[2]>>4);
-    second = msg.data[1]>>2;
-    tt.locate(0,40);
-    printf("%02d%02d%02d %02d%02d%03d\n",hour,minute,second,month,day,year);*/
-    //printf("%4.2fV %4.2fV \n",accV,accV2);
 
     for (i=0; i<8; i++){
         msg = lastMsg[indexLastMsg[(uMsgId[i]>>4)]];