Dual CANbus monitor and instrumentation cluster

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 beep mbed

Fork of CANary by Tick Tock

Branch:
Metric
Revision:
110:ffddff3ad2f2
Parent:
109:3e6f0e8fca0d
Child:
111:d1559bb25c43
--- a/utility.cpp	Sun Jun 30 17:52:58 2013 +0000
+++ b/utility.cpp	Sun Jun 30 19:52:38 2013 +0000
@@ -396,6 +396,7 @@
                 can1SleepMode = 1; // disable TX
                 can1.monitor(true); // set to snoop mode
                 msgReq.detach(); // stop ticker
+                    //logCP=true; //LAJ for bench test
             default:
                 data[0]=0x30; //change to request next line message
                 data[1]=0x01;
@@ -607,7 +608,7 @@
 }
 
 void logPackVoltages() { // Turbo3 - routine to dump CP values to text file
-    /*char sTemp[40];
+    char sTemp[40];
     struct tm t; // pointer to a static tm structure
     short unsigned max, min, jv, i, bd;
     unsigned avg;
@@ -645,26 +646,30 @@
         jv=0;
     }
     
-    FILE *bfile;
-    bfile = fopen("/usb/batvolt.txt", "a");
-    if(bfile!=NULL) {
+    FIL bfile;
+    FRESULT bfr;
+    bfr = f_open(&bfile,"batvolt.txt",FA_WRITE|FA_OPEN_ALWAYS);
+    if(bfr==FR_OK) {
+        f_lseek(&bfile,0xffffffff); // go to end of file to append
         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);    
-        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]);
+        f_printf(&bfile,"%s,",sTemp);
+        sprintf(sTemp,"%d,%5.1f%%,%5.1f,%5.1f,%d,%d,%d,%d,%d",gids,(float)SOC/10,(float)packV/2,(float)packA/2,max,min,avg,max-min,jv);
+        f_printf(&bfile,"%s,",sTemp);           
+        f_printf(&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]);
+        f_printf(&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);
+            f_printf(&bfile,",%d",bd);
         }
-        fprintf(bfile,"\r\n");
-        fclose(bfile);
-    }*/
+        f_printf(&bfile,"\r\n");
+        f_close(&bfile);
+    }
     logCP=false;
     showCP=true;
 }
 
 void tripLog() { // Daily log
-    /*char sTemp[40];
+    char sTemp[40];
     struct tm t; // pointer to a static tm structure
     short unsigned max, min, jv, i, bd;
     unsigned avg;
@@ -702,22 +707,24 @@
         jv=0;
     }
     
-    FILE *bfile;
-    bfile = fopen("/usb/triplog.txt", "a");
-    if(bfile!=NULL) {
+    FIL bfile;
+    FRESULT bfr;
+    bfr = f_open(&bfile,"batvolt.txt",FA_WRITE|FA_OPEN_ALWAYS);
+    if(bfr==FR_OK) {
+        f_lseek(&bfile,0xffffffff); // go to end of file to append
         strftime(sTemp, 40, "%a %m/%d/%Y %X", &t);
-        fprintf(bfile,"%s,%d,%5.1f%%,%5.1f%%, %4.2f, %5.1f,%5.1f,%d,%d,%d,%d,%d",sTemp,gids,(float)SOC/10, (float)SOH_x100/100,(float)Ah_x10000/10000,(float)packV/2,(float)packA/2,max,min,avg,max-min,jv);      
-        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]);
+        f_printf(&bfile,"%s,",sTemp);
+        sprintf(sTemp,"%d,%5.1f%%,%5.1f%%, %4.2f, %5.1f,%5.1f,%d,%d,%d,%d,%d",gids,(float)SOC/10, (float)SOH_x100/100,(float)Ah_x10000/10000,(float)packV/2,(float)packA/2,max,min,avg,max-min,jv);      
+        f_printf(&bfile,"%s,",sTemp);           
+        f_printf(&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]);
+        f_printf(&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);
+            f_printf(&bfile,",%d",bd);
         }
-        fprintf(bfile,"\r\n");
-        fclose(bfile);
-    }*/
-    logCP=false;
-    showCP=true;
+        f_printf(&bfile,"\r\n");
+        f_close(&bfile);
+    }
 }
 
 //LM - updates firmware off a usb key, eliminating the need to plug