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:
- 23:cd03f9c3395e
- Parent:
- 22:a43df3905863
- Child:
- 25:ddf0ec209f03
--- a/main.cpp Mon Mar 11 06:23:00 2013 +0000 +++ b/main.cpp Thu Mar 14 04:41:11 2013 +0000 @@ -18,6 +18,7 @@ #include "EthernetPowerControl.h" #include "utility.h" #include "displayModes.h" +#include "TOUCH_TFTx2.h" LocalFileSystem local("local"); @@ -45,7 +46,7 @@ TOUCH_TFTx2 tt(p16, p17, p19, p20, p11, p12, p13, p6, p7, p5, "TFT"); // x+,x-,y+,y-,mosi, miso, sclk, cs0, cs1, reset -bool logEn = true,logOpen = false; +bool logEn = false,logOpen = false; FILE *cfile; FILE *file; char fileName[35] = "" ; @@ -62,7 +63,7 @@ volatile bool userIdle; bool touched=0; //flag to read touchscreen char counter = 0; -unsigned char dMode[2] = {1,7}; //display mode +unsigned char dMode[2] = {1,8}; //display mode unsigned char sMode = 0; // setup mode unsigned char lastDMode[2] = {0,0}; //last screen mode char displayLog[20][40]; @@ -75,7 +76,7 @@ int readPointer=0; char sTemp[40]; unsigned long secs; - char i,j,ff,display=0; + char i,j,display=0; point lastTouch; can1.monitor(true); // set to snoop mode @@ -112,10 +113,10 @@ // enter people-values here t.tm_year = 2013 ; // 28 May 2012 t.tm_mon = 3 ; // 1 to 12 - t.tm_mday = 5; - t.tm_hour = 12; // 12:59:56 PM (after noon) - t.tm_min = 59; - t.tm_sec = 56; + t.tm_mday = 11; + t.tm_hour = 21; // 12:59:56 PM (after noon) + t.tm_min = 05; + t.tm_sec = 00; // adjust for tm structure required values t.tm_year = t.tm_year - 1900; @@ -168,40 +169,7 @@ }*/ // Look for config file - cfile = fopen("/local/config.txt", "r"); - if (cfile==NULL){ // if doesn't exist --> create - sprintf(sTemp,"No config file found.\n"); - logMsg(sTemp); - sprintf(sTemp,"Calibrating touch screen.\n"); - logMsg(sTemp); - //tt.setcal(5570, 34030, 80, 108, 33700, 5780, 82, 108, 32500);// bypass calibration using my values - tt.calibrate(); // run touchscreen calibration routine - cfile = fopen("/local/config.txt", "w"); - fprintf(cfile,"format 1\r\n"); - fprintf(cfile,"x0_off %d\r\n",tt.x0_off); - fprintf(cfile,"y0_off %d\r\n",tt.y0_off); - fprintf(cfile,"x0_pp %d\r\n",tt.x0_pp); - fprintf(cfile,"y0_pp %d\r\n",tt.y0_pp); - fprintf(cfile,"x1_off %d\r\n",tt.x1_off); - fprintf(cfile,"y1_off %d\r\n",tt.y1_off); - fprintf(cfile,"x1_pp %d\r\n",tt.x1_pp); - fprintf(cfile,"y1_pp %d\r\n",tt.y1_pp); - fprintf(cfile,"x_mid %d\r\n",tt.x_mid); - } else { // read params - sprintf(sTemp,"Reading config file.\n"); - logMsg(sTemp); - fscanf(cfile, "format %c\r\n", &ff ) ; - fscanf(cfile, "x0_off %d\r\n", &tt.x0_off ) ; - fscanf(cfile, "y0_off %d\r\n", &tt.y0_off ) ; - fscanf(cfile, "x0_pp %d\r\n", &tt.x0_pp ) ; - fscanf(cfile, "y0_pp %d\r\n", &tt.y0_pp ) ; - fscanf(cfile, "x1_off %d\r\n", &tt.x1_off ) ; - fscanf(cfile, "y1_off %d\r\n", &tt.y1_off ) ; - fscanf(cfile, "x1_pp %d\r\n", &tt.x1_pp ) ; - fscanf(cfile, "y1_pp %d\r\n", &tt.y1_pp ) ; - fscanf(cfile, "x_mid %d\r\n", &tt.x_mid ) ; - } - fclose(cfile); + readConfig(); //ticker.attach(&tickerISR, 60); //poll cellpair data every minute while (true) { @@ -253,11 +221,12 @@ if (logOpen){ fclose(file); } // if (logOpen)*/ - //sprintf(sTemp,"Putting uC to sleep.\n"); seconds = time(NULL); t = *localtime(&seconds) ; strftime(sTemp, 40, "Sleeping: %a %m/%d/%Y %X\n", &t); logMsg(sTemp); + //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 led1=0; led2=0; @@ -308,54 +277,79 @@ } else { i=0; } + if (sMode==0) sMode = 1; //sprintf(sTemp,"button %d %d,%d %d\n",i,buttonX(lastTouch.x,3),buttonY(lastTouch.y,3),lastTouch.x); //logMsg(sTemp); - if (buttonY(lastTouch.y,3)==2) { //bottom row - if (sMode==1) { - switch (buttonX(lastTouch.x,3)) { - case 0: - case 3: + switch (sMode) { + case 0: // no select + break; + case 1: // select screen + switch (buttonX(lastTouch.x,3)*10+buttonY(lastTouch.y,3)) { + case 00: + case 30: + if (dMode[i]==monitorScreen||dMode[i]==changedScreen) { + indexOffset=indexOffset>4?indexOffset-4:1; + } else if (dMode[i]==configScreen) { + wait_ms(500); + tt.calibrate(); + } + break; + case 10: + case 40: + if (dMode[i]==changedScreen) { + for(j=0;j<100;j++) msgChanged[j]=0; // clear changed data + lastDMode[i]=99;//force refresh + } else if (dMode[i]==cpScreen) { + pollCP=true; + } else if (dMode[i]==configScreen) { + mbed_reset(); + } + break; + case 20: + case 50: + if (dMode[i]==monitorScreen||dMode[i]==changedScreen) { + indexOffset=indexOffset<77?indexOffset+4:80; + } else if (dMode[i]==configScreen) { + sprintf(sTemp,"Saving config file.\n"); + logMsg(sTemp); + //zxcsaveConfig(); + } + break; + case 01: + case 31: + if (dMode[i]==configScreen) { + logEn = !logEn; + } + break; + case 11: + case 41: + break; + case 21: + case 51: + break; + case 02: + case 32: dMode[i]=dMode[i]>0?dMode[i]-1:maxScreens; break; - case 1: - case 4: + case 12: + case 42: secsNoTouch = userTimeout; // immediately exit config mode + if (dMode[i]==configScreen) mbed_reset(); break; - case 2: - case 5: + case 22: + case 52: dMode[i]=dMode[i]<maxScreens?dMode[i]+1:0; break; default: - break; - } - } else sMode=1; - } else if (buttonY(lastTouch.y,3)==0) { // top row - switch (buttonX(lastTouch.x,3)) { - case 0: - case 3: - if (dMode[i]==monitorScreen||dMode[i]==changedScreen) { - indexOffset=indexOffset>4?indexOffset-4:1; } - break; - case 1: - case 4: - if (dMode[i]==changedScreen) { - for(j=0;j<100;j++) msgChanged[j]=0; // clear changed data - lastDMode[i]=99;//force refresh - } else if (dMode[i]==cpScreen) { - pollCP=true; - } - break; - case 2: - case 5: - if (dMode[i]==monitorScreen||dMode[i]==changedScreen) { - indexOffset=indexOffset<77?indexOffset+4:80; - } - break; - default: - break; - } - } //top row + break; + case 2: // numpad + break; + case 3: + break; + default: + break; + } // case sMode } //recently touched } else { // userIdle if(sMode==1){