Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FatFileSystem MSCFileSystem SPI_TFTx2 TFT_fonts TOUCH_TFTx2 beep mbed
Fork of CANary_corrupt by
Diff: main.cpp
- Revision:
- 70:0700b769ac15
- Parent:
- 68:10f7d7dbae19
- Parent:
- 69:6bfdfc002036
- Child:
- 71:7e87256d6c9a
--- a/main.cpp Sat Apr 13 22:46:31 2013 +0000
+++ b/main.cpp Sun Apr 14 02:10:40 2013 +0000
@@ -45,6 +45,12 @@
PwmOut dled(p23);
Beep spkr(p21);
+// revision string, max 6 characters
+//char revStr[7] = "65"; // gg - revStr is used in 2 places
+//char revStr[7] = "65-gg1"; // gg - and is easy to edit here
+//char revStr[7] = "69-gg1"; // gg - ZeroSecTick
+char revStr[7] = "69-gg1"; // gg - trying to merge with TT
+
bool logEn = false, logOpen = false;
bool yesBattLog = false ; // gg - Batt Log
unsigned char tNavRow = 3 ; // gg - 4x4 touch
@@ -79,6 +85,7 @@
bool repeatPoll = false;
bool headlights = false;
bool tick = false;
+bool ZeroSecTick = false;
float ledHi = 0.8; // Bright LED value (until config file read)
float ledLo = 0.1; // Dim LED value (until config file read)
unsigned short pollInt = 300; // polling interval=5 minutes (until config file read)
@@ -154,11 +161,11 @@
}
t = *localtime(&seconds) ;
strftime(sTemp, 32, "%a %m/%d/%Y %X\n", &t);
- logMsg(sTemp);
+ logMsg(sTemp); // record RTC
// revision
- sprintf(sTemp,"CANary firmware rev68\n");
- logMsg(sTemp);
+ sprintf(sTemp,"CANary firmware rev%s\n", revStr); // gg - for Logging the revision
+ logMsg(sTemp); // revision
// Look for new binary on thumbdrive
// Can't make this work right now since USB doesn't attach the right timestamp (so new binary isn't loaded)
@@ -166,11 +173,11 @@
lastDMode[whichTouched]=99;//force refresh
if (cfile!=NULL){ //found a new binary on the thumbdrive so copy it over
sprintf(sTemp,"New binary found.\n");
- logMsg(sTemp);
+ logMsg(sTemp); // new binary
file = fopen("/local/CANary.bin", "wb");
if (file==NULL){ //failed to open destination
sprintf(sTemp,"Unable to open destination file.\n");
- logMsg(sTemp);
+ logMsg(sTemp); // cannot open CANary.bin
} else {
tt.set_display(2);
tt.foreground(White);
@@ -208,10 +215,10 @@
}
fclose(cfile);
sprintf(sTemp,"History Loaded.\n");
- logMsg(sTemp);
+ logMsg(sTemp); // History loaded
} else { // create initial file
sprintf(sTemp,"History not found. Created.\n");
- logMsg(sTemp);
+ logMsg(sTemp); // history not found, created
for(i=0;i<39;i++){
// Pre-load with 4 mpkWh @ 40 mph
mph[i]=40*timeConstant[i];
@@ -232,20 +239,25 @@
t = *localtime(&seconds) ;
strftime(fileName, 32, "/usb/%m%d%H%M.alc", &t); //mmddhhmm.alc
//sprintf(sTemp,"Using file %s\n",fileName);
- //logMsg(sTemp);
+ //logMsg(sTemp); // using alc file ...
file = fopen(fileName, "ab");
lastDMode[whichTouched]=99;//force refresh
if(file==NULL){
sprintf(sTemp,"\nUnable to open %s\n\n\n\n",fileName);
- logMsg(sTemp);
+ logMsg(sTemp); // cannot open alc file
logEn=false;
spkr.beep(1000,0.25);
} else {
logOpen = true;
readPointer=writePointer;
sprintf(sTemp,"Starting Can Log %s\n",fileName);
- logMsg(sTemp);
- logTS();
+ logMsg(sTemp); // starting alc log file
+
+ logTS(); // Date Time at start
+ logErrMsg("Starting"); // Log startup msg for testing
+ sprintf(sTemp,"Cr%s",revStr);
+ logErrMsg(sTemp); // gg - log firmware version
+
spkr.beep(2000,0.25);
}
}//logging enabled
@@ -255,13 +267,13 @@
if (file == NULL) {
logOpen = false;
sprintf(sTemp,"Failed to append log file.\n");
- logMsg(sTemp);
+ logMsg(sTemp); // failed to append
spkr.beep(1000,0.25);
logEn=false;
} else {
if (((writePointer+maxBufLen-readPointer)%maxBufLen)>(maxBufLen*7/8)) { // Hi-water mark
sprintf(sTemp,"Write buffer overrun.\n");
- logMsg(sTemp);
+ logMsg(sTemp); // write buffer overrun
spkr.beep(1000,0.25);
}
while (readPointer != writePointer) {
@@ -286,7 +298,7 @@
seconds = time(NULL);
t = *localtime(&seconds) ;
strftime(sTemp, 40, "Sleeping: %a %m/%d/%Y %X\n", &t);
- logMsg(sTemp);
+ logMsg(sTemp); // sleeping date time
updateDisplay(0); //Added for turbo3 who has a display override and wants to see the sleep message before going to sleep
updateDisplay(1);
//LPC_RTC->CIIR=0x00; // block RTC interrupts
@@ -309,13 +321,14 @@
seconds = time(NULL);
t = *localtime(&seconds) ;
strftime(sTemp, 40, "Waking: %a %m/%d/%Y %X\n", &t);
- logMsg(sTemp);
+ logMsg(sTemp); // wakeup date time
if (time(NULL)>(secs+1800)) {
logOpen = false; // Start new file if asleep for more than 30 minutes
if (secsNoTouch>100) secsNoTouch = 100; // also mostly reset user Idle counter
} else if (logOpen){ // insert timestamp on each wake if logging enabled (disabled for now)
file = fopen(fileName, "ab");
- logTS();
+ logErrMsg("WakingUp"); // gg - use messeges
+ logTS(); // Date-Time at wakeup
}
} // if idle
@@ -341,7 +354,7 @@
sMode = 1;
}
//sprintf(sTemp,"%d,%d ",lastTouch.x,lastTouch.y);
- //logMsg(sTemp);
+ //logMsg(sTemp); // touch x,y - for debug
touched = false; // clear interrupt flag
}
//---------------
@@ -355,7 +368,7 @@
secsNoTouch +=2; // increment to prevent double touch
sMode = 1;
//sprintf(sTemp,"button %d %d,%d %d\n",i,buttonX(lastTouch.x,3),buttonY(lastTouch.y,3),lastTouch.x);
- //logMsg(sTemp);
+ //logMsg(sTemp); // button parms - for debug
switch (sMode) {
case 0: // no select
break;
@@ -426,7 +439,7 @@
dMode[whichTouched] = effScreen ; // GoTo EFF Screen
} else if (dMode[whichTouched]==config1Screen) {
sprintf(sTemp,"Saving config file.\n");
- logMsg(sTemp);
+ logMsg(sTemp); // saving config
saveConfig();
spkr.beep(2000,0.25);
} else if (dMode[whichTouched]==playbackScreen) { // faster
@@ -456,9 +469,10 @@
lastDMode[whichTouched ^ 1]=99; // repaint other screen (^ = XOR)
//sprintf(sTemp,"Changed Skin to %d.\n");
- //logMsg(sTemp);
+ //logMsg(sTemp); /// changed skin - for debug
//saveConfig();
//spkr.beep(2000,0.25);
+
} else if (dMode[whichTouched] == indexScreen) { // gg - index
dMode[whichTouched] = dteScreen ; // GoTo DTE Screen
}else{
@@ -503,21 +517,21 @@
lastDMode[whichTouched]=99;//force refresh
if(file==NULL){
sprintf(sTemp,"Unable to open /usb/playback.alc\n");
- logMsg(sTemp);
+ logMsg(sTemp); // no playback.alc
spkr.beep(1000,0.25);
} else {
playbackOpen = true;
playbackEn=true;
playback.attach(&playbackISR,playbackInt);
sprintf(sTemp,"Starting playback\n");
- logMsg(sTemp);
+ logMsg(sTemp); // start playback
spkr.beep(2000,0.25);
can1.attach(&doNothing);// Stop recieving CAN data
can2.attach(&doNothing);
}
} else {
sprintf(sTemp,"Must stop logging first\n");
- logMsg(sTemp);
+ logMsg(sTemp); // Must stop logging first
}
} else {
playback.detach();
@@ -631,7 +645,8 @@
laccOn=accOn;
if(!accOn&&!logEn&&userIdle&&!playbackEn){
//sprintf(sTemp,"Display Off %4.2f\n",accV);
- //logMsg(sTemp);
+ //logMsg(sTemp); // display off - for debug
+
dled = 0; // turn off display if car off and logging disabled and no user activity
}else if(!headlights){
dled = ledHi;
@@ -682,7 +697,7 @@
}
updateDTE=true;
if(logCP)
- logPackVoltages(); // Turbo3
+ logPackVoltages(); // Turbo3, only call
tick=false;
}
@@ -701,7 +716,7 @@
for(i=0;i<120;i++){
if(!feof(file)){
fscanf(file,"%5c%8c",&header,&data);
- logCan(header[0],CANMessage(0x7ff&((header[4]<<8)+header[3]), data, 8));
+ logCan(header[0],CANMessage(0x7ff&((header[4]<<8)+header[3]), data, 8)); // Playback
}else{
fclose(file); // restart
file = fopen("/usb/playback.alc", "rb");
