Dual CANbus monitor and instrumentation cluster

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 beep mbed

Fork of CANary by Tick Tock

Revision:
78:a383971fe02f
Parent:
77:7c136766466c
Child:
79:68f0dd8d1f19
Child:
81:cf009a64eedd
--- a/main.cpp	Tue Apr 16 03:28:55 2013 +0000
+++ b/main.cpp	Tue Apr 16 13:01:13 2013 +0000
@@ -29,6 +29,7 @@
 
 Ticker autoPoll;
 Ticker playback;
+Ticker msgReq;
 Timer timer;
 
 DigitalOut led1(LED1);
@@ -50,7 +51,7 @@
 // gg - revStr is used in 2 places
 // gg - and is easy to edit here
 // gg - added ZeroSecTick and revStr
-char revStr[7] = "77"; // gg - fix rev number
+char revStr[7] = "78";
 
 bool logEn = false, logOpen = false; 
 bool yesBattLog = false ; // gg - Batt Log
@@ -82,7 +83,7 @@
 unsigned char displayLoc = 0;
 unsigned char indexOffset = 1;
 bool showCP = false;
-bool pollCP = false;
+//bool pollCP = false;
 bool logCP = false; //Turbo3
 bool repeatPoll = false;
 bool headlights = false;
@@ -101,7 +102,7 @@
 bool playbackEn = false;
 bool playbackOpen = false;
 //float playbackInt = 0.05; //read messages every 50 ms
-float playbackInt = 0.005; //read messages every 50 ms
+float playbackInt = 0.005; //read messages every 5 ms
 bool step = false;
 char header[5];
 char data[8];
@@ -119,6 +120,7 @@
                      60*60*24*39.8, 60*60*24*63.1, 60*60*24*100, 60*60*24*158, 60*60*24*251, 60*60*24*365}; // 1 year
 bool updateDTE = false;
 unsigned short pointerSep;
+unsigned char reqMsgCnt = 99;
 
 int main() {
     char sTemp[40];
@@ -223,6 +225,9 @@
     // Read config file
     readConfig();
 
+    // Start 15ms timer for requests
+    msgReq.attach(&sendReq,0.015);
+
     // Start monitors
     can1.monitor(true); // set to snoop mode
     can2.monitor(true); // set to snoop mode
@@ -416,11 +421,11 @@
                                     sMode=0;
                                     dMode[whichTouched] = brakeScreen ; // GoTo Brake Screen
                                 } else if (dMode[whichTouched]==cpScreen) {
-                                    pollCP=true;
+                                    reqMsgCnt=0;
                                 } else if (dMode[whichTouched]==cpHistScreen) { // gg - hist
-                                    pollCP=true;
+                                    reqMsgCnt=0;
                                 } else if (dMode[whichTouched]==cpBarScreen) { // gg - cpbars
-                                    pollCP=true;
+                                    reqMsgCnt=0;
                                 } else if (dMode[whichTouched]==config1Screen) {
                                     mbed_reset();
                                 } else if (dMode[whichTouched]==playbackScreen) { // pause/unpause
@@ -491,7 +496,10 @@
                             case 01: // left col middle row
                                 if (dMode[whichTouched]==config1Screen) {
                                     logEn = !logEn;
-                                    if (!logEn) repeatPoll=false; // disable auto polling, too
+                                    if (!logEn) {
+                                        repeatPoll=false; // disable auto polling, too
+                                        autoPoll.detach();
+                                    }
                                 } else if (dMode[whichTouched] == indexScreen) { // gg - index
                                     dMode[whichTouched] = cpScreen ; // GoTo CP Data Screen                                
                                     sMode=0;
@@ -718,12 +726,12 @@
         display=display<1?display+1:0; // toggle display
         updateDisplay(display);
 
-        if(pollCP){ // We do this inside main loop instead of ticker so CAN RX will not be blocked
+        /*if(pollCP){ // We do this inside main loop instead of ticker so CAN RX will not be blocked
             sendCPreq(); // send cellpair data request.
             wait_ms(16);
             sendTreq(); //send temperature request
             pollCP=false;
-        }
+        }*/
         
         if(step){ // playback
             if(playbackOpen&&playbackEn){