test fork
Dependencies: SPI_TFTx2 SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2 mbed
Fork of CANary_9341 by
Diff: main.cpp
- Revision:
- 134:ad243e4f1a17
- Parent:
- 133:b0675d9d11dd
- Child:
- 135:89986950d501
diff -r b0675d9d11dd -r ad243e4f1a17 main.cpp --- a/main.cpp Wed Jul 24 12:33:49 2013 +0000 +++ b/main.cpp Thu Jul 25 14:32:54 2013 +0000 @@ -10,6 +10,12 @@ // * Add ability to transfer settings config file to/from USB // * Subtract accessory power from efficiency history (add back in when displaying) +// rev134 +// Added orange highlight if psi<32 +// Qualified max and min trip efficiency update with trips > 3 miles +// Keep mbed asleep during charging (EVcan only) unless logging active +// Added miles & kWh to trip log + #include "mbed.h" #include "CAN.h" #include "beep.h" @@ -20,7 +26,7 @@ #include "displayModes.h" #include "TOUCH_TFTx2.h" -char revStr[7] = "133"; // gg - revision string, max 6 characters +char revStr[7] = "134"; // gg - revision string, max 6 characters FATFS USBdrive; LocalFileSystem local("local"); @@ -117,8 +123,8 @@ unsigned char dtePeriod = 14; //ten minute averaging interval float kWh_trip[3]={0}; float miles_trip[3]={0}; -float maxTripEff = 0; -float minTripEff = 99; +float maxTripEff = 4; +float minTripEff = 4; float mph[39]={0}; float kW[39]={0}; float mpkWh[39]={0}; @@ -195,6 +201,9 @@ mpkWh[i]=mph[i]/kW[i]; } } + if(!feof(hfile)){ + fscanf(hfile,"%f %f\r\n",&maxTripEff,&minTripEff); + } fclose(hfile); printMsg("History Loaded.\n"); // History loaded } else { // create initial file @@ -292,7 +301,9 @@ } if (logOpen){ //close file to dump buffer f_close(&efile); - } // if (logOpen) + } else { //detach EVcan so only carcan will trigger wake + can1.attach(NULL); + }// if (logOpen) seconds = time(NULL); t = *localtime(&seconds) ; strftime(sTemp, 40, "Sleeping: %a %m/%d/%Y %X\n", &t); @@ -312,6 +323,9 @@ //__wfi(); // freeze CPU and wait for interrupt (from canbus or touch) Sleep(); } + if (logOpen){ // Re-attach EVcan + can1.attach(&recieve1); + } lastDMode[0]=99; lastDMode[1]=99; secsNoTouch=2; @@ -640,7 +654,6 @@ //----------------------------------- // Select Screen Navigation case 17: - //secsNoTouch = userTimeout; // immediately exit config mode sMode=0; lastDMode[whichTouched]=99; // Repaint break; @@ -683,16 +696,25 @@ accOn=(accV>5)?true:false; moving=(mph[0]>0.1); charging=!moving&&(kW[0]<-1); // not moving and generating energy so must be charging - if(laccOn&&!accOn){ // Car turned off - saveDmode=dMode[0]; - dMode[0]=healthScreen; + if (laccOn&&!accOn){ // Car turned off + if (showHealth){ + if (saveDmode==99){ + saveDmode=dMode[0]; + } + dMode[0]=healthScreen; + secsNoTouch=0;// Keep display on a few seconds + sMode=0; + userIdle=false; + } // Keep track of max and min trip efficiency - float tmpeff = miles_trip[0]/kWh_trip[0]; - if (maxTripEff<tmpeff) { - maxTripEff=tmpeff; - } - if (minTripEff>tmpeff) { - minTripEff=tmpeff; + if (miles_trip[0]>3){ // Ignore very short trips + float tmpeff = miles_trip[0]/kWh_trip[0]; + if (maxTripEff<tmpeff) { + maxTripEff=tmpeff; + } + if (minTripEff>tmpeff) { + minTripEff=tmpeff; + } } if (repeatPoll) { // Log on shutdown if autopoll enabled tripLog(); // Write trip log on powerdown @@ -703,22 +725,28 @@ for(i=0;i<39;i++){ fprintf(hfile,"%f %f\r\n",mph[i],kW[i]); } + fprintf(hfile,"%f %f\r\n",maxTripEff,minTripEff); // Save max and min fclose(hfile); } } - if(!laccOn&&accOn){ // Car turned on + if (!laccOn&&accOn){ // Car turned on miles_trip[0]=0; kWh_trip[0]=0; wait5secs=5; - if(showHealth){ - saveDmode=dMode[0]; + if (showHealth){ + if (saveDmode==99){ + saveDmode=dMode[0]; + } dMode[0]=healthScreen; } } laccOn=accOn; if(!accOn&&!logEn&&userIdle&&!playbackEn){ // Car off and logging disabled and no user activity - dled = 0; - dMode[0]=saveDmode; + dled = 0; + if (saveDmode<99){ + dMode[0]=saveDmode; + saveDmode=99; + } }else if(!headlights){ dled = ledHi; } else { @@ -732,6 +760,8 @@ msgReq.attach(&sendReq,0.015); } } + + //remove health screen once moving if(moving&&(saveDmode<99)&&(wait5secs==0)){ dMode[0]=saveDmode; saveDmode=99;