test fork

Dependencies:   SPI_TFTx2 SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2 mbed

Fork of CANary_9341 by Tick Tock

Branch:
Metric
Revision:
102:fd19f777a0b4
Parent:
100:63a7456fc972
Child:
104:5a19101aaac5
--- a/utility.cpp	Sat Jun 15 19:05:32 2013 +0000
+++ b/utility.cpp	Thu Jun 20 05:35:36 2013 +0000
@@ -50,6 +50,7 @@
     char sTemp[40];    
     unsigned char changed;
     unsigned short i; // was unsigned char
+    signed short j;
     signed short packV;
     signed short packA;
     signed long imWs_x4;
@@ -258,14 +259,35 @@
                 lasti=i; //remember the msb to detect rollover next time around
                 i+=bdi;
                 //-------
-                if(i==BatDataBaseG4+2){ // Last of Temperature data
+                if(i==BatDataBaseG5){ // Last of Temperature data was loaded last time
                     logCP=yesBattLog; // Only log if logging enabled
                     showCP=true; // Always show
-                    battTemp_x4=battData[224+5]+battData[224+8]+battData[224+11]+battData[224+14];
+                    // 2013 models only have three sensors
+                    battTemp_x4=battData[(BatDataBaseG4*7)+5]+battData[(BatDataBaseG4*7)+8]+battData[(BatDataBaseG4*7)+11]+battData[(BatDataBaseG4*7)+14];
+                    // Or =25+(467-ADC)/9.33 (C)
+                    // Find hottest temperature
+                    battTemp_x10=467-(battData[(BatDataBaseG4*7)+3]*0x100+battData[(BatDataBaseG4*7)+4]);
+                    j=467-(battData[(BatDataBaseG4*7)+6]*0x100+battData[(BatDataBaseG4*7)+7]);
+                    if(j>battTemp_x10){
+                        battTemp_x10=j;
+                        }
+                    j=467-(battData[(BatDataBaseG4*7)+9]*0x100+battData[(BatDataBaseG4*7)+10]);
+                    if(j>battTemp_x10){
+                        battTemp_x10=j;
+                        }
+                    j=467-(battData[(BatDataBaseG4*7)+12]*0x100+battData[(BatDataBaseG4*7)+13]);
+                    if(j>battTemp_x10){
+                        battTemp_x10=j;
+                        }
+                    battTemp_x10*=100;
+                    battTemp_x10/=93;
+                    battTemp_x10+=250;
+                    SOH_x100=battData[(BatDataBaseG1*7)+29]*0x100+battData[(BatDataBaseG1*7)+30];
+                    Ah_x10000=battData[(BatDataBaseG1*7)+36]*0x10000+battData[(BatDataBaseG1*7)+37]*0x100+battData[(BatDataBaseG1*7)+38];
+                    SOC_x10000=battData[(BatDataBaseG1*7)+32]*0x10000+battData[(BatDataBaseG1*7)+33]*0x100+battData[(BatDataBaseG1*7)+34];
                 }
                 //-------
                 i*=7;
-                //if(i<0xfa){ // Is there a better way to do this?
                 if(i+6 < BatDataBufMax) {
                     battData[i+0]=canRXmsg.data[1];
                     battData[i+1]=canRXmsg.data[2];
@@ -337,36 +359,36 @@
     static char data[8] = {0x02, 0x21, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff};
     if(reqMsgCnt<99){
         switch (reqMsgCnt){
-            case 0:
+            case BatDataBaseG1:
                 can1.monitor(false); // set to active mode
                 can1SleepMode = 0; // enable TX
                 data[0]=0x02; //change to request group 1
                 data[1]=0x21;
                 data[2]=0x01;
                 break;
-            case 6: // group 1 has 6 frames
+            case BatDataBaseG2: // group 1 has 6 frames
                 can1.monitor(false); // set to active mode
                 can1SleepMode = 0; // enable TX
                 data[0]=0x02; //change to request group 2 (cp data)
                 data[1]=0x21;
                 data[2]=0x02;
                 break;
-            case 35: // group 2 has 29 frames
+            case BatDataBaseG3: // group 2 has 29 frames
                 data[0]=0x02; //change to request group 3
                 data[1]=0x21;
                 data[2]=0x03;
                 break;
-            case 40: // group 3 has 5 frames
+            case BatDataBaseG4: // group 3 has 5 frames
                 data[0]=0x02; //change to request group 4 (temperature)
                 data[1]=0x21;
                 data[2]=0x04;
                 break;
-            case 43: // group 4 has 3 frames
+            case BatDataBaseG5: // group 4 has 3 frames
                 data[0]=0x02; //change to request group 5
                 data[1]=0x21;
                 data[2]=0x05;
                 break;
-            case 54: // group 5 has 11 frames
+            case BatDataBaseG6: // group 5 has 11 frames
                 reqMsgCnt = 99;
                 can1SleepMode = 1; // disable TX
                 can1.monitor(true); // set to snoop mode
@@ -474,9 +496,9 @@
         // NOTE: calibrates screen 1 first, then screen 0.
         saveConfig();
     } else {
-        ledHi = 0.823;
+        ledHi = 0.8;
         ledLo = 0.1;
-        pollInt = 300;
+        pollInt = 60;
         scale12V = 16.2;
         skin = ttSkin;
         fscanf(cfile, "format %d\r\n", &ff );
@@ -623,9 +645,9 @@
     if(bfile!=NULL) {
         strftime(sTemp, 40, "%a %m/%d/%Y %X", &t);
         fprintf(bfile,"%s,%d,%5.1f%%,%5.1f,%5.1f,%d,%d,%d,%d,%d",sTemp,gids,(float)SOC/10,(float)packV/2,(float)packA/2,max,min,avg,max-min,jv);
-        // BatDataBaseG4 * 7 = 224        
-        fprintf(bfile,"%d,%d,%d,%d,",(battData[224+ 3]<<8)+battData[224+ 4],battData[224+ 5],(battData[224+ 6]<<8)+battData[224+ 7],battData[224+ 8]);
-        fprintf(bfile,"%d,%d,%d,%d", (battData[224+ 9]<<8)+battData[224+10],battData[224+11],(battData[224+12]<<8)+battData[224+13],battData[224+14]);
+        // BatDataBaseG4 * 7 = (BatDataBaseG4*7)        
+        fprintf(bfile,"%d,%d,%d,%d,",(battData[(BatDataBaseG4*7)+ 3]<<8)+battData[(BatDataBaseG4*7)+ 4],battData[(BatDataBaseG4*7)+ 5],(battData[(BatDataBaseG4*7)+ 6]<<8)+battData[(BatDataBaseG4*7)+ 7],battData[(BatDataBaseG4*7)+ 8]);
+        fprintf(bfile,"%d,%d,%d,%d", (battData[(BatDataBaseG4*7)+ 9]<<8)+battData[(BatDataBaseG4*7)+10],battData[(BatDataBaseG4*7)+11],(battData[(BatDataBaseG4*7)+12]<<8)+battData[(BatDataBaseG4*7)+13],battData[(BatDataBaseG4*7)+14]);
         for(i=0; i<96; i++) {
             bd=(battData[i*2+3]<<8)+battData[i*2+4];
             fprintf(bfile,",%d",bd);