J L / Mbed 2 deprecated Neptune_170620

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers NextionPages.cpp Source File

NextionPages.cpp

00001 #include <cstdlib>
00002 #include <string> 
00003 #include "main.h"
00004 #include "Functions.h"
00005 #include "Definitions.h"
00006 #include "Boolean.h"
00007 #include "NextionLCD.h"
00008 #include "mbed_debug.h"
00009 #include "mbed.h"
00010 #include "Languages.h"
00011 #include "Ser25lcxxx.h"
00012 #include "NVM.h"
00013 #include "Watchdog.h"
00014 #include "Controls.h"
00015 #include "Threads.h"
00016 #include "FastPWM.h"
00017 
00018 ///////////////////////////////////////////////////////////////////////////////
00019 // MBED OBJECTS
00020 ///////////////////////////////////////////////////////////////////////////////
00021 extern NextionLCD lcd;//Tx, Rx, Nextion Port
00022 
00023 ///////////////////////////////////////////////////////////////////////////////
00024 // VARIABLES
00025 ///////////////////////////////////////////////////////////////////////////////
00026 bool calComplete = false;
00027 uint8_t precision = 0;
00028 uint8_t adjustItem = ADJ_FLOW_UNITS;
00029 uint8_t menuStringID = FLOW_U_STRING_LIST;//store the last displayed list
00030 
00031 ///////////////////////////////////////////////////////////////////////////////
00032 // STRINGS
00033 ///////////////////////////////////////////////////////////////////////////////
00034 extern string HARDWARE;
00035 extern string SOFTWARE;
00036 extern string BUILD;
00037 extern string DATE; 
00038 extern string AUTHOR;   
00039 
00040 ///////////////////////////////////////////////////////////////////////////////
00041 // FUNCTIONS
00042 ///////////////////////////////////////////////////////////////////////////////
00043 uint8_t nexPage(uint8_t presentTask, uint8_t savedTask){
00044     
00045     const uint8_t x=0,y=1,z=2;
00046     static uint8_t i[3]={x,y,z};
00047     uint8_t task = presentTask;//return the present task unless task in re-assigned by pages
00048 
00049     switch(page){
00050         case PAGE_0:                    break;
00051 
00052         case PAGE_1_HOME:                     
00053                                         ///////////////////////////////////////////////////////////////////////////////
00054                                         // PAGE 1 HOME
00055                                         ///////////////////////////////////////////////////////////////////////////////           
00056                                         if(touchBtn(PAGE_1_HOME, P1_INC, PUSH)){
00057                                             tPush.start();
00058                                             tSpeed.start();                                    
00059                                             tPop.stop();
00060                                             tPop.reset();
00061                                             incFlag = true; 
00062                                             scrnUpdate = true;
00063                                             led1=1;
00064                                             led2=0;
00065                                         }
00066                                         else
00067                                         if(touchBtn(PAGE_1_HOME, P1_DEC, PUSH)){
00068                                             tPush.start(); 
00069                                             tSpeed.start();                                
00070                                             tPop.stop();
00071                                             tPop.reset();        
00072                                             decFlag = true; 
00073                                             scrnUpdate = true;    
00074                                             led3=1;
00075                                             led1=0;     
00076                                         }
00077                                         else
00078                                         if(touchBtn(PAGE_1_HOME, P1_INC, POP)){
00079                                             tPush.stop(); 
00080                                             tPush.reset();
00081                                             tPop.start();
00082                                             incFlag = false;     
00083                                             led1=0;
00084                                             led2=1;  
00085                                         }
00086 
00087                                         if(touchBtn(PAGE_1_HOME, P1_DEC, POP)){
00088                                             tPush.stop(); 
00089                                             tPush.reset();
00090                                             tPop.start();
00091                                             decFlag = false;     
00092                                             led3=0;
00093                                             led1=1;  
00094                                         }
00095                                         else
00096                                         if(touchBtn(PAGE_1_HOME, P1_MAX, PUSH)){    
00097                                             maxBtnPress = true;             
00098                                             task = MAX;                                       
00099                                         }
00100                                         else                                                            
00101                                         if(touchBtn(PAGE_1_HOME, P1_MAX, POP)){    
00102                                             maxBtnPress = false;
00103                                         }
00104                                         else
00105                                         if(touchBtn(PAGE_1_HOME, P1_SET, PUSH)){//load the auto restart button with its NVM setting
00106 
00107                                             if(nvm.autoRestart == AUTO_RESTART_ON)
00108                                                 lcd.nexSetDSBtn("bt0",ON);
00109                                             else    
00110                                                 if(nvm.autoRestart == AUTO_RESTART_OFF)
00111                                                 lcd.nexSetDSBtn("bt0",OFF);   
00112                                         }            
00113                                         break;
00114 
00115         case PAGE_2_INFO:
00116                                         break;
00117         case PAGE_3_MAIN:
00118                                         ///////////////////////////////////////////////////////////////////////////////
00119                                         // PAGE 3 MAIN MENU
00120                                         ///////////////////////////////////////////////////////////////////////////////            
00121 /*                                        
00122                                         if(touchBtn(PAGE_3_MAIN, P3_FLUID_LEV_MON, PUSH)){                            
00123 
00124                                         }
00125                                         else
00126                                         if(touchBtn(PAGE_3_MAIN, P3_SECURITY, PUSH)){                            
00127                                             
00128                                         }
00129                                         else
00130                                         if(touchBtn(PAGE_3_MAIN, P3_CONT_SETTINGS, PUSH)){   
00131                         
00132                                             
00133                                         }  
00134                                         else
00135 */                                        
00136                                         if(touchBtn(PAGE_3_MAIN, P3_INFO, PUSH)){    
00137 
00138                                             //lcd.nexChgPage(BLANK_PAGE);
00139 
00140 
00141                                             
00142                                             lcd.nexChgPage(PAGE_27_ABOUT);
00143                                             lcd.nexSendTxt("hardware",HARDWARE);                                                 
00144                                             lcd.nexSendTxt("software",SOFTWARE);                                                                                                
00145                                             lcd.nexSendTxt("date",__DATE__);  
00146                                             lcd.nexSendTxt("time",__TIME__);                                               
00147                                             lcd.nexSendTxt("author",AUTHOR);                                                                                                                                                                                                  
00148                                             
00149                                         }  
00150                                         else
00151                                         if(touchBtn(PAGE_3_MAIN, P3_BACK, PUSH))
00152                                         task = retLastStoredTask(savedTask);                                             
00153                                     
00154                                         break;    
00155                                         
00156 
00157         case PAGE_7_FLUID_LEV_SET:
00158                                         ///////////////////////////////////////////////////////////////////////////////
00159                                         // PAGE 7 FLUID LEVEL SETTINGS
00160                                         ///////////////////////////////////////////////////////////////////////////////    
00161 /*                                        
00162                                         if(touchBtn(PAGE_7_FLUID_LEV_SET, P7_HOME, PUSH))
00163                                             task = retLastStoredTask(savedTask); 
00164 */                                                               
00165                                         break;      
00166 
00167         case PAGE_8_FLOWU_ADJ:
00168 
00169                                         ///////////////////////////////////////////////////////////////////////////////
00170                                         // PAGE 8 FLOW UNIT ADJUSTMENT
00171                                         ///////////////////////////////////////////////////////////////////////////////                                                                                                                                                        
00172                                         if(touchBtn(PAGE_8_FLOWU_ADJ, P8_DEC, PUSH))   
00173                                             dispList(i, DEC, menuStringID, menuStringArray, P8_MENU_ITEMS);                                                                                
00174                                         else
00175                                         if(touchBtn(PAGE_8_FLOWU_ADJ, P8_INC, PUSH))   
00176                                             dispList(i, INC, menuStringID, menuStringArray, P8_MENU_ITEMS);  
00177                                         else
00178                                         if(touchBtn(PAGE_8_FLOWU_ADJ, P8_OK, PUSH)){     
00179                                             lcd.nexSetFontCol("data", GREEN);                          
00180                                             nvm.flowUnits = uFlowUnitID[i[1]]; 
00181                                             writeNVMByte(NVM_FLOW_UNITS,nvm.flowUnits);                                    
00182                                             decodeByteNVM(nvm.flowUnits, &precision);
00183                                             nvm.flowUnitVal = ((flowPercent/100)*maxScale);
00184                                             writeNVMfloat(NVM_FLOWU_VAL,nvm.flowUnitVal);                                                                                                                                                                                                                                                                                      
00185                                         }
00186                                         else
00187                                         if(touchBtn(PAGE_8_FLOWU_ADJ, P8_HOME, PUSH))   
00188                                             task = retLastStoredTask(savedTask);                                         
00189                                         else
00190                                         if(touchBtn(PAGE_8_FLOWU_ADJ, P8_BACK, PUSH))                                           
00191                                             lcd.nexChgPage(PAGE_9_SETTINGS);                                                                      
00192                                         break;         
00193 
00194         case PAGE_9_SETTINGS:
00195                                         ///////////////////////////////////////////////////////////////////////////////
00196                                         // PAGE 9 GENERAL SETTINGS
00197                                         ///////////////////////////////////////////////////////////////////////////////    
00198                                         if(touchBtn(PAGE_9_SETTINGS, P9_AUTO_RESTART, PUSH)){                                                  
00199                                             if(nvm.autoRestart ==  AUTO_RESTART_ON){//read the present auto restart state and toggle to alternative state                                    
00200                                                 lcd.nexSetDSBtn("bt0",OFF);
00201 
00202                                                 nvm.autoRestart = AUTO_RESTART_OFF;
00203                                                 writeNVMByte(NVM_AUTO_RESTART, nvm.autoRestart);                    
00204                                             }
00205                                             else    
00206                                                 if(nvm.autoRestart ==  AUTO_RESTART_OFF){
00207                                                     lcd.nexSetDSBtn("bt0",ON);
00208 
00209                                                     nvm.autoRestart = AUTO_RESTART_ON;
00210                                                     writeNVMByte(NVM_AUTO_RESTART, nvm.autoRestart);                                                                                 
00211                                                 }    
00212                                             //DO NOT RETURN TO A TASK  
00213                                         }
00214                                         else
00215                                         if(touchBtn(PAGE_9_SETTINGS, P9_FLOW_UNITS, PUSH)){                                                  
00216                                             lcd.nexChgPage(PAGE_8_FLOWU_ADJ);
00217                                             //lcd.nexSendTxt("title","Flow Units");    
00218                                             //lcd.nexSendTxt("btnOK","OK");                    
00219 
00220                                             menuStringID = FLOW_U_STRING_LIST;
00221 
00222                                             i[y] = decodeByteNVM(nvm.flowUnits, &precision);
00223 
00224                                             if(i[y] == 0){i[x] = 9; i[z] = 1;}                                            
00225                                             else
00226                                             if(i[y] == 9){i[x] = 8; i[z] = 0;}
00227                                             else{i[x] = (i[1]-1); i[z] = (i[1]+1);}
00228 
00229                                             lcd.nexSendTxt("top",menuStringArray[0][i[x]]); 
00230                                             lcd.nexSendTxt("data",menuStringArray[0][i[y]]);   
00231                                             lcd.nexSendTxt("bot",menuStringArray[0][i[z]]); 
00232                                         }
00233 /*                                        
00234                                         else
00235                                         if(touchBtn(PAGE_9_SETTINGS, P9_ASS_NUM, PUSH)){                                                  
00236 
00237                                         }
00238                                         else
00239                                         if(touchBtn(PAGE_9_SETTINGS, P9_PUMP_LAB, PUSH)){                                                  
00240 
00241                                         }
00242                                         else
00243                                         if(touchBtn(PAGE_9_SETTINGS, P9_RESTORE, PUSH)){                                                  
00244 
00245                                         }
00246                                         else
00247                                         if(touchBtn(PAGE_9_SETTINGS, P9_LANG, PUSH)){                                                  
00248 
00249                                         }           
00250                                         else
00251 */                                        
00252                                         if(touchBtn(PAGE_9_SETTINGS, P9_BACK, PUSH))
00253                                             task = retLastStoredTask(savedTask); 
00254                                         
00255                                         break;            
00256 
00257         case PAGE_11_RESET:           
00258                                         ///////////////////////////////////////////////////////////////////////////////
00259                                         // PAGE 11 RESET RUN HOURS / RESET VOLUME COUNTER
00260                                         ///////////////////////////////////////////////////////////////////////////////
00261                                         if(touchBtn(PAGE_11_RESET, P11_RESET, PUSH)){    
00262 
00263                                             lcd.nexChgPage(PAGE_11_RESET);
00264 /*                                    
00265                                             if(runHours)                          
00266                                                 lcd.nexSendFloat("info1",0.0);                                           
00267                                             else
00268                                             if(volCntr)                                    
00269                                                 lcd.nexSendFloat("info1",0.0);                 
00270 */                                        
00271                                         }  
00272                                         break;
00273 
00274         case PAGE_12_MODE:
00275                                         ///////////////////////////////////////////////////////////////////////////////
00276                                         // PAGE 12 CHANGE MODE
00277                                         ///////////////////////////////////////////////////////////////////////////////     
00278                                         if(touchBtn(PAGE_12_MODE, P12_MANUAL, PUSH)){                                            
00279                                             nvm.runMode = MANUAL;//set manual mode
00280                                             writeNVMByte(NVM_RUN_MODE, nvm.runMode);//update EEPROM with manual mode             
00281                                             //lcd.nexChgPage(PAGE_1_HOME);                                                                                                                                                                                                                                                                                         
00282                                             task = STOP_SCRN;                                     
00283                                         }
00284                                         else
00285                                         if(touchBtn(PAGE_12_MODE, P12_ANALOGUE, PUSH)){     
00286                                             nvm.runMode = ANALOGUE;//set analogue mode
00287                                             writeNVMByte(NVM_RUN_MODE, nvm.runMode);//update EEPROM with analogue mode     
00288                                             //lcd.nexChgPage(PAGE_1_HOME);                                                                                                                         
00289                                             task = ANALOGUE_SET;                                    
00290                                         }
00291                                         else
00292                                         if(touchBtn(PAGE_12_MODE, P12_ANA_CAL, PUSH)){  
00293 
00294                                             calComplete = false;//for new calibration entry make sure this flag is cleared
00295 
00296                                             lcd.nexChgPage(PAGE_18_ANA_CAL_MODE);    
00297                                             //lcd.nexSendTxt("btnLeft","Analogue");    
00298                                             //lcd.nexSendTxt("btnRight","Manual");                                    
00299                                             //lcd.nexSendTxt("title","4-20mA Calibration");    
00300                                             //lcd.nexSendTxt("info1","Select Analogue Signal");    
00301                                             //lcd.nexSendTxt("info2","or");  
00302                                             //lcd.nexSendTxt("info3","Manual Input");          
00303                                             //lcd.nexSendTxt("info4","Calibration"); 
00304                                         }                                                
00305                                         else
00306                                         if(touchBtn(PAGE_12_MODE, P12_CONTACT, PUSH)){  
00307                                             //nvm.runMode = CONTACT; 
00308                                             //writeNVMByte(NVM_RUN_MODE,nvm.runMode);                             
00309                                             //task = runModeNVM(nvm.runMode);//reload page 1 titles   
00310                                         }     
00311                                         else
00312                                         if(touchBtn(PAGE_12_MODE, P12_FLUID_REC, PUSH)){     
00313                                             //nvm.runMode = FLUIDREC; 
00314                                             //writeNVMByte(NVM_RUN_MODE,nvm.runMode);
00315                                             //task = runModeNVM(nvm.runMode);//reload page 1 titles  
00316                                         }                                         
00317                                         else
00318                                         if(touchBtn(PAGE_12_MODE, P12_FLOW_CAL, PUSH)){   
00319 
00320                                         }
00321                                         else
00322                                         if(touchBtn(PAGE_12_MODE, P12_BACK, PUSH)){   
00323                                             task = retLastStoredTask(savedTask);  
00324                                         }                                           
00325                                         break;
00326 
00327         case PAGE_14_ANA_CAL:
00328                                         ///////////////////////////////////////////////////////////////////////////////
00329                                         // PAGE 14 ANALOGUE CALIBRATION CONTROLS
00330                                         ///////////////////////////////////////////////////////////////////////////////                                                       
00331                                         if(touchBtn(PAGE_14_ANA_CAL, P14_INC, PUSH)){
00332                                             tPush.start(); 
00333                                             tPop.stop();
00334                                             tPop.reset();
00335                                             incFlag = true; 
00336                                             scrnUpdate = true;
00337                                             led1=1;
00338                                             led2=0;
00339                                         }
00340                                         else
00341                                         if(touchBtn(PAGE_14_ANA_CAL, P14_DEC, PUSH)){ 
00342                                             tPush.start(); 
00343                                             tPop.stop();
00344                                             tPop.reset();        
00345                                             decFlag = true;         
00346                                             scrnUpdate = true;    
00347                                             led3=1;
00348                                             led1=0;        
00349                                         }
00350                                         else
00351                                         if(touchBtn(PAGE_14_ANA_CAL, P14_INC, POP)){
00352                                             tPush.stop(); 
00353                                             tPush.reset();
00354                                             tPop.start();
00355                                             incFlag = false;     
00356                                             led1=0;
00357                                             led2=1;
00358                                         }  
00359                                         else 
00360                                         if(touchBtn(PAGE_14_ANA_CAL, P14_DEC, POP)){
00361                                             tPush.stop(); 
00362                                             tPush.reset();
00363                                             tPop.start();
00364                                             decFlag = false;            
00365                                             led3=0;
00366                                             led1=1;        
00367                                         }  
00368                                         else
00369                                         if(touchBtn(PAGE_14_ANA_CAL, P14_OK, PUSH)){ 
00370                                             okFlag = true; scrnUpdate = true;    
00371                                         }
00372                                         else
00373                                         if(touchBtn(PAGE_14_ANA_CAL, P14_BACK, PUSH)){ 
00374                                             stopLED = OFF; 
00375                                             task = STOP_SCRN;
00376                                             
00377                                         }                                                     
00378                                         break;   
00379 
00380         case PAGE_18_ANA_CAL_MODE:
00381                                         ///////////////////////////////////////////////////////////////////////////////
00382                                         // PAGE 18 4-20mA CALIBRATION MODE
00383                                         ///////////////////////////////////////////////////////////////////////////////     
00384                                         if(touchBtn(PAGE_18_ANA_CAL_MODE, P18_MAN, PUSH)){   
00385                                             if(calComplete){
00386                                                 nvm.runMode = MANUAL;
00387                                                 writeNVMByte(NVM_RUN_MODE, nvm.runMode);//update EEPROM with manual mode                                                               
00388                                                 task = STOP_SCRN;                                                                           
00389                                             }   
00390                                             else 
00391                                             {                                   
00392                                                 reset();                                               
00393                                                 manFlag = true;//manual cal mode                                            
00394                                                 lcd.nexChgPage(PAGE_14_ANA_CAL);                                             
00395                                                 calState = CAL1_SCRN;   
00396                                                 scrnUpdate = true;                         
00397                                                 task = ANA_CAL;                            
00398                                             }                                                
00399                                         }
00400                                         else                                                                                    
00401                                         if(touchBtn(PAGE_18_ANA_CAL_MODE, P18_INPUT, PUSH)){   
00402                                             if(calComplete){
00403                                                 nvm.runMode = ANALOGUE;
00404                                                 writeNVMByte(NVM_RUN_MODE,nvm.runMode);                                                                                 
00405                                                 task = STOP_SCRN;
00406                                             }   
00407                                             else{                                                                    
00408                                                 reset();                              
00409                                                 manFlag = false;//signal cal mode                    
00410                                                 lcd.nexChgPage(PAGE_14_ANA_CAL);     
00411                                                 calState = CAL1_SCRN;  
00412                                                 scrnUpdate = true;                
00413                                                 task = ANA_CAL;
00414                                             }  
00415                                         }                                                 
00416                                         break;         
00417 
00418         case PAGE_27_ABOUT:
00419                                         ///////////////////////////////////////////////////////////////////////////////
00420                                         // PAGE 27 INFOMATION
00421                                         ///////////////////////////////////////////////////////////////////////////////                                                   
00422                                         if(touchBtn(PAGE_27_ABOUT, P27_BACK, PUSH))                                                                   
00423                                             task = retLastStoredTask(savedTask);                                                                                            
00424                                         break;
00425 
00426         case PAGE_33_MA_OUT:
00427                                         ///////////////////////////////////////////////////////////////////////////////
00428                                         // PAGE 33 mA OUTPUT
00429                                         //////////////////////////////////////////////////////////////////////////////        
00430                                         if(touchBtn(PAGE_33_MA_OUT, P33_FULL_SCALE, PUSH)){                                                  
00431                                             lcd.nexSetDSBtn("bt1", UNTICK);//display no tick
00432                                             lcd.nexSetDSBtn("bt0", TICK);//display output low tick
00433                                             nvm._4_20mAoutPut = _4_20MA_OUT_FULL_SCALE;
00434                                             writeNVMByte(NVM_4_20MA_OUT,nvm._4_20mAoutPut);                                                                                                                                                                
00435                                         }       
00436                                         else
00437                                         if(touchBtn(PAGE_33_MA_OUT, P33_MATCH, PUSH)){                                                                                     
00438                                             lcd.nexSetDSBtn("bt0", UNTICK);//display no tick 
00439                                             lcd.nexSetDSBtn("bt1", TICK);//display output high tick
00440                                             nvm._4_20mAoutPut = _4_20MA_OUT_MATCH_INPUT_SCALE;
00441                                             writeNVMByte(NVM_4_20MA_OUT,nvm._4_20mAoutPut);                                                                                                                                                                                                                               
00442                                         }    
00443                                         break;                                                                                                                     
00444 
00445         case PAGE_34_START_STOP:            
00446                                         ///////////////////////////////////////////////////////////////////////////////
00447                                         // PAGE 34 RUN/STOP INPUT
00448                                         //////////////////////////////////////////////////////////////////////////////                        
00449                                         if(touchBtn(PAGE_34_START_STOP, P34_LOW, PUSH)){                                                  
00450                                             lcd.nexSetDSBtn("bt0", UNTICK);                                            
00451                                             lcd.nexSetDSBtn("bt1", TICK);                     
00452                                             nvm.rmtStopPump = RMT_STOP_PUMP_LOW;
00453                                             writeNVMByte(NVM_RMT_STOP_PUMP,nvm.rmtStopPump);                                                                                                                                                                
00454                                         }       
00455                                         else
00456                                         if(touchBtn(PAGE_34_START_STOP, P34_HIGH, PUSH)){                                                                                     
00457                                             lcd.nexSetDSBtn("bt0", TICK);//display no tick 
00458                                             lcd.nexSetDSBtn("bt1", UNTICK);//display output high tick
00459                                             nvm.rmtStopPump = RMT_STOP_PUMP_HIGH; 
00460                                             writeNVMByte(NVM_RMT_STOP_PUMP,nvm.rmtStopPump);                                                                                                                                                                                                                               
00461                                         }       
00462                                         else                                                                                                                                                                                                              
00463                                         if(touchBtn(PAGE_34_START_STOP, P34_HOME, PUSH))  
00464                                             lcd.nexChgPage(PAGE_1_HOME);   
00465                                         else                                            
00466                                         if(touchBtn(PAGE_34_START_STOP, P34_BACK, PUSH))  
00467                                             lcd.nexChgPage(PAGE_3_MAIN);                                                                                                                                                  
00468                                         break;
00469 
00470         case PAGE_35_CONT_SET:
00471                                         ///////////////////////////////////////////////////////////////////////////////
00472                                         // PAGE 35 INPUT/OUTPUT CONTROL SETTINGS
00473                                         ///////////////////////////////////////////////////////////////////////////////       
00474                                         if(touchBtn(PAGE_35_CONT_SET, P35_INPUT, PUSH)){//input button pressed                                   
00475                                             lcd.nexChgPage(PAGE_34_START_STOP);
00476                                             lcd.nexSendTxt("title34","Run/Stop input");       
00477 
00478                                             if(nvm.rmtStopPump == RMT_STOP_PUMP_LOW){//Read the settings
00479                                                 lcd.nexSetDSBtn("bt0", UNTICK);//display info                                                                                             
00480                                                 lcd.nexSetDSBtn("bt1", TICK);//display info                                                                                                                     
00481                                             }
00482                                             else
00483                                             if(nvm.rmtStopPump == RMT_STOP_PUMP_HIGH){//Read the settings   
00484                                                 lcd.nexSetDSBtn("bt0", TICK);//display info                                                
00485                                                 lcd.nexSetDSBtn("bt1", UNTICK);//display info
00486                                             }                                                                               
00487                                         }
00488                                         else
00489                                         if(touchBtn(PAGE_35_CONT_SET, P35_OUTPUT1, PUSH)){//Output 1 button pressed   
00490                                             lcd.nexChgPage(PAGE_36_CONT_ADJ);       
00491 
00492                                             if(nvm.outPut1Logic == OUT1_LOGIC_HI){//Read the settings                                                
00493                                                 lcd.nexSetDSBtn("bt1", TICK);//display info
00494                                                 lcd.nexSetDSBtn("bt0", UNTICK);//display info                                                  
00495                                             }
00496                                             else
00497                                             if(nvm.outPut1Logic == OUT1_LOGIC_LO){//Read the settings
00498                                                 lcd.nexSetDSBtn("bt1", UNTICK);//display info
00499                                                 lcd.nexSetDSBtn("bt0", TICK);//display info
00500                                             }
00501                                                                                           
00502                                             lcd.nexSendTxt("title36","Output 1");    
00503                                             lcd.nexSendTxt("t0","LOW");      
00504                                             lcd.nexSendTxt("t1","HIGH");                                                                    
00505                                             menuStringID = OUTPUT1_LIST;  
00506                                             i[y] = ReadListIndexNVM(nvm.outPut1);                                                                                                           
00507                                             lcd.nexSendTxt("data",menuStringArray[menuStringID][i[y]]);                                                
00508                                         }                                          
00509                                         else
00510                                         if(touchBtn(PAGE_35_CONT_SET, P35_OUTPUT2, PUSH)){//Output 2 button pressed  
00511                                             lcd.nexChgPage(PAGE_36_CONT_ADJ);//display        
00512 
00513                                             if(nvm.outPut2Logic == OUT2_LOGIC_HI){                                                
00514                                                 lcd.nexSetDSBtn("bt1", TICK);//display info 
00515                                                 lcd.nexSetDSBtn("bt0", UNTICK);//display info
00516                                             }
00517                                             else
00518                                             if(nvm.outPut2Logic == OUT2_LOGIC_LO){
00519                                                 lcd.nexSetDSBtn("bt1", UNTICK);//display info
00520                                                 lcd.nexSetDSBtn("bt0", TICK);//display info
00521                                             }
00522                                                                                                                                                                                                                                                            
00523                                             lcd.nexSendTxt("title36","Output 2");//display   
00524                                             lcd.nexSendTxt("t0","LOW");      
00525                                             lcd.nexSendTxt("t1","HIGH");                                      
00526                                             menuStringID = OUTPUT2_LIST;//set the menu string ID for list for output 2   
00527                                             i[y] = ReadListIndexNVM(nvm.outPut2);//get the index of the present output 2 setting from nvm
00528                                             lcd.nexSendTxt("data",menuStringArray[menuStringID][i[y]]);//display the current nvm setting                                            
00529                                         }       
00530                                         else
00531                                         if(touchBtn(PAGE_35_CONT_SET, P35_MA_OUTPUT, PUSH)){//mA output button pressed                                                                            
00532                                             lcd.nexChgPage(PAGE_33_MA_OUT);//display    
00533                                             lcd.nexSendTxt("title33","4-20mA Output scale");     
00534                                             lcd.nexSendTxt("info1","Pin 3: Full scale 0 to 125 RPM");                                                    
00535                                             lcd.nexSendTxt("info2","Pin 3: Match input scale");  
00536 
00537                                             if(nvm._4_20mAoutPut == _4_20MA_OUT_FULL_SCALE){                                                
00538                                                 lcd.nexSetDSBtn("bt1", UNTICK);//display 
00539                                                 lcd.nexSetDSBtn("bt0", TICK);//display                                                  
00540                                             }
00541                                             else
00542                                             if(nvm._4_20mAoutPut == _4_20MA_OUT_MATCH_INPUT_SCALE){
00543                                                 lcd.nexSetDSBtn("bt1", TICK);//display 
00544                                                 lcd.nexSetDSBtn("bt0", UNTICK);//display 
00545                                             }                                            
00546                                         }                                                     
00547                                         else
00548                                         if(touchBtn(PAGE_35_CONT_SET, P35_SPEED_LIMIT, PUSH)){//Speed limit button pressed   
00549                                             lcd.nexChgPage(PAGE_31_SPEED_LIMIT); 
00550                                             //speedLimit = 
00551 
00552                                         }
00553                                         else
00554                                         if(touchBtn(PAGE_35_CONT_SET, P35_RUN_HOURS, PUSH)){//Run hours button pressed   
00555                                             lcd.nexChgPage(PAGE_11_RESET);
00556                                             lcd.nexSendTxt("title11","Run Hours");  
00557                                             lcd.nexSendTxt("btn","RESET");                                                  
00558                                             lcd.nexSendTxt("info1","159");          
00559                                             lcd.nexSendTxt("info5","Hours"); 
00560                                             bool runHours = 1;
00561                                             bool volCntr = 0;                                                                                                                    
00562                                         }                                        
00563                                         else
00564                                         if(touchBtn(PAGE_35_CONT_SET, P35_VOLUME_CNTR, PUSH)){//Reset flow counter button pressed   
00565                                             lcd.nexChgPage(PAGE_11_RESET);
00566                                             lcd.nexSendTxt("title11","Volume Counter");  
00567                                             lcd.nexSendTxt("btn","RESET");                                                  
00568                                             lcd.nexSendTxt("info1","60");          
00569                                             lcd.nexSendTxt("info5","Litres");     
00570                                             bool runHours = 0;
00571                                             bool volCntr = 1;                                                                                    
00572                                         }                                        
00573                                         else
00574                                         if(touchBtn(PAGE_35_CONT_SET, P35_SCALE_FACTOR, PUSH)){   
00575 
00576                                         }                                                                               
00577                                         break;
00578 
00579         case PAGE_36_CONT_ADJ:        
00580                                         ///////////////////////////////////////////////////////////////////////////////
00581                                         // PAGE 36 CONTROL SETTINGS ADJUSTMENT
00582                                         ///////////////////////////////////////////////////////////////////////////////     
00583                                         if(touchBtn(PAGE_36_CONT_ADJ, P36_DEC, PUSH)){   
00584                                             dispList(i, INC, menuStringID, menuStringArray, P36_MENU_ITEMS);
00585                                             //pc.printf("\r\n\r\nx = 0x%X, y = 0x%X, z = 0x%X, ",i[x],i[y],i[z]);   
00586                                         }                                                                                                                         
00587                                         else
00588                                         if(touchBtn(PAGE_36_CONT_ADJ, P36_INC, PUSH)){   
00589                                             dispList(i, DEC, menuStringID, menuStringArray, P36_MENU_ITEMS);                                                                                      
00590                                             //pc.printf("\r\n\r\nx = 0x%X, y = 0x%X, z = 0x%X, ",i[x],i[y],i[z]); 
00591                                         }
00592                                         else      
00593                                         if(touchBtn(PAGE_36_CONT_ADJ, P36_LOW, PUSH)){//Low button pressed
00594                                             if(menuStringID == OUTPUT1_LIST){//Output 1 selected                             
00595                                                 lcd.nexSetDSBtn("bt1", UNTICK);//Untick High
00596                                                 lcd.nexSetDSBtn("bt0", TICK);//Tick Low
00597                                                 nvm.outPut1Logic = OUT1_LOGIC_LO;//Set Low for output 1 in global structure
00598                                                 writeNVMByte(NVM_OUTPUT1_LOGIC,nvm.outPut1Logic);//write Low for output 1 to NVM                                                                                          
00599                                             }
00600                                             else 
00601                                             if(menuStringID == OUTPUT2_LIST){//Output 2 selected                                                                            
00602                                                 lcd.nexSetDSBtn("bt1", UNTICK);//Untick High
00603                                                 lcd.nexSetDSBtn("bt0", TICK);//Tick Low
00604                                                 nvm.outPut2Logic = OUT2_LOGIC_LO;//Set Low for output 2 in global structure 
00605                                                 writeNVMByte(NVM_OUTPUT2_LOGIC,nvm.outPut2Logic);//write Low for output 2 to NVM                                                     
00606                                             }
00607                                         }       
00608                                         else
00609                                         if(touchBtn(PAGE_36_CONT_ADJ, P36_HIGH, PUSH)){//High button pressed 
00610                                            if(menuStringID == OUTPUT1_LIST){//Output 1 selected                                              
00611                                                 lcd.nexSetDSBtn("bt0", UNTICK);//Untick Low
00612                                                 lcd.nexSetDSBtn("bt1", TICK);//Tick High
00613                                                 nvm.outPut1Logic = OUT1_LOGIC_HI;//Set High for output 1 in global structure  
00614                                                 writeNVMByte(NVM_OUTPUT1_LOGIC,nvm.outPut1Logic);//write High for output 1 to NVM                                                                                           
00615                                             }
00616                                             else 
00617                                             if(menuStringID == OUTPUT2_LIST){//Output 2 selected                                     
00618                                                 lcd.nexSetDSBtn("bt0", UNTICK);//Untick Low
00619                                                 lcd.nexSetDSBtn("bt1", TICK);//Tick High
00620                                                 nvm.outPut2Logic = OUT2_LOGIC_HI;//Set High for output 2 in global structure  
00621                                                 writeNVMByte(NVM_OUTPUT2_LOGIC,nvm.outPut2Logic);//write High for output  to NVM                                                    
00622                                             }                                        
00623                                         }
00624                                         else
00625                                         if(touchBtn(PAGE_36_CONT_ADJ, P36_OK, PUSH)){              
00626 
00627                                             lcd.nexSetFontCol("data", GREEN);
00628 
00629                                             switch(menuStringID){      
00630                                                 case OUTPUT1_LIST:                                                                  
00631                                                                     nvm.outPut1 = uOutPut1_ID[i[y]]; 
00632                                                                     writeNVMByte(NVM_OUTPUT1,nvm.outPut1);
00633                                                                     break;
00634 
00635                                                 case OUTPUT2_LIST:  
00636                                                                     nvm.outPut2 = uOutPut2_ID[i[y]]; 
00637                                                                     writeNVMByte(NVM_OUTPUT2,nvm.outPut2);
00638                                                                     break;                                                                                        
00639                                             }                                                         
00640                                             //task = retLastStoredTask(savedTask);                                      
00641                                         }        
00642                                         break;                                
00643     }
00644     return(task);
00645 }
00646 
00647 ///////////////////////////////////////////////////////////////////////////////
00648 // SCAN NEXTION TOUCH KEYS
00649 ///////////////////////////////////////////////////////////////////////////////
00650 uint8_t nexKeyScan(uint8_t presentTask, uint8_t savedTask){
00651 /*
00652     Do not place any delays or function that take too much time as this is an ISR message service, use a flag in the main routing instead
00653  */
00654 
00655 /*
00656     Nextion RX interrupt sets the keyScanFlag
00657     when a touch key command has been received
00658     the switch below filters which Nextion page 
00659     has sent the command
00660 */
00661     static uint8_t task = presentTask;
00662 
00663     if(task != ANA_CAL)
00664         task = presentTask;
00665 
00666     if(keyScanFlag == true){//RX ISR sets this flag
00667         keyScanFlag = false;
00668         task = nexPage(presentTask, savedTask);      
00669     } 
00670     return(task);//return back to the present task or next task                                          
00671 }