Dual CANbus monitor and instrumentation cluster supporting ILI9341 display controller
Dependencies: SPI_TFTx2_ILI9341 TOUCH_TFTx2_ILI9341 TFT_fonts mbed
Fork of CANary by
Diff: main.cpp
- Revision:
- 37:fea2c1d52c5f
- Parent:
- 36:dbd39c315258
- Child:
- 38:155ec32c5e91
--- a/main.cpp Sat Mar 23 04:43:45 2013 +0000 +++ b/main.cpp Sun Mar 24 15:35:45 2013 +0000 @@ -21,8 +21,6 @@ #include "EthernetPowerControl.h" #include "utility.h" #include "displayModes.h" -#include "GraphicsDisplay.h" -#include "SPI_TFTx2.h" #include "TOUCH_TFTx2.h" LocalFileSystem local("local"); @@ -85,15 +83,17 @@ unsigned short pollInt = 300; // polling interval=5 minutes (until config file read) bool accOn = false; // Accessories on float scale12V = 16.2; // R1:R2 ratio -signed long kWh = 0; +signed long mWs = 0; unsigned long miles = 0; float mpkWh = 0; float accV = 0; bool playbackEn = false; bool playbackOpen = false; -float playbackInt = 1; //read one message every 64 ms +float playbackInt = 0.032; //read one message every 64 ms bool step = false; +char header[5]; char data[8]; +unsigned short pbts; int main() { int readPointer=0; @@ -177,12 +177,10 @@ secsNoMsg = 0; secsNoTouch = 0; - // Read config file readConfig(); touched=false; secsNoTouch=2; - while (true) { if (!logOpen) { // Open new file if one is not already open if(logEn){ //logging enable @@ -212,11 +210,16 @@ // Dump buffer if > 1/16 full or canbus has stopped if (file == NULL) { logOpen = false; - sprintf(sTemp,"Failed to append log file.\n\n"); + sprintf(sTemp,"Failed to append log file.\n"); + logMsg(sTemp); spkr.beep(1000,0.25); - logMsg(sTemp); logEn=false; } else { + if (((writePointer+maxBufLen-readPointer)%maxBufLen)>(maxBufLen*7/8)) { // Hi-water mark + sprintf(sTemp,"Write buffer overrun.\n"); + logMsg(sTemp); + spkr.beep(1000,0.25); + } while (readPointer != writePointer) { for (j = 0; j<13; j++){ fprintf(file,"%c",writeBuffer[readPointer][j]); @@ -304,6 +307,7 @@ indexOffset=indexOffset>4?indexOffset-4:1; } else if (dMode[i]==config1Screen) { wait_ms(500); + tt.background(Black); tt.calibrate(); } else if (dMode[i]==config2Screen) { // slower playbackInt *=2; @@ -442,7 +446,6 @@ lastDMode[1]=99; } } - display=display<1?display+1:0; // toggle display updateDisplay(display); @@ -465,13 +468,14 @@ }else{ dled = ledLo; } - if(kWh>0){ - mpkWh=miles/kWh; + //if(mWs>0){ + if(true){ + mpkWh= ((float) mWs)/1e6; // just kW for now }else{ mpkWh=99; } miles=0; - kWh=0; + mWs=0; tick=false; } @@ -481,11 +485,9 @@ //logMsg(sTemp); for(i=0;i<200;i++){ if(!feof(file)){ - //for (j = 0; j<5; j++){ - fscanf(file,"%5c",&writeBuffer[0][0]); - //} - fscanf(file,"%8c",&data[0]); - logCan(writeBuffer[0][0],CANMessage(0x7ff&((writeBuffer[0][4]<<8)+writeBuffer[0][3]), data, 8)); + fscanf(file,"%5c%8c",&header,&data); + pbts=(header[1]<<8)|header[2]; + logCan(header[0],CANMessage(0x7ff&((header[4]<<8)+header[3]), data, 8)); }else{ fclose(file); // restart file = fopen("/usb/playback.alc", "rb"); @@ -495,5 +497,6 @@ } step=false; } + } //while (true) } \ No newline at end of file