Attempts to merge SPI_TFT2 & SPI_TFT_ILI9341

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 mbed

Fork of CANary by Tick Tock

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){