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.
Diff: NextionPages.cpp
- Revision:
- 0:20b4b057fa7f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NextionPages.cpp Wed Jun 17 10:11:19 2020 +0000
@@ -0,0 +1,671 @@
+#include <cstdlib>
+#include <string>
+#include "main.h"
+#include "Functions.h"
+#include "Definitions.h"
+#include "Boolean.h"
+#include "NextionLCD.h"
+#include "mbed_debug.h"
+#include "mbed.h"
+#include "Languages.h"
+#include "Ser25lcxxx.h"
+#include "NVM.h"
+#include "Watchdog.h"
+#include "Controls.h"
+#include "Threads.h"
+#include "FastPWM.h"
+
+///////////////////////////////////////////////////////////////////////////////
+// MBED OBJECTS
+///////////////////////////////////////////////////////////////////////////////
+extern NextionLCD lcd;//Tx, Rx, Nextion Port
+
+///////////////////////////////////////////////////////////////////////////////
+// VARIABLES
+///////////////////////////////////////////////////////////////////////////////
+bool calComplete = false;
+uint8_t precision = 0;
+uint8_t adjustItem = ADJ_FLOW_UNITS;
+uint8_t menuStringID = FLOW_U_STRING_LIST;//store the last displayed list
+
+///////////////////////////////////////////////////////////////////////////////
+// STRINGS
+///////////////////////////////////////////////////////////////////////////////
+extern string HARDWARE;
+extern string SOFTWARE;
+extern string BUILD;
+extern string DATE;
+extern string AUTHOR;
+
+///////////////////////////////////////////////////////////////////////////////
+// FUNCTIONS
+///////////////////////////////////////////////////////////////////////////////
+uint8_t nexPage(uint8_t presentTask, uint8_t savedTask){
+
+ const uint8_t x=0,y=1,z=2;
+ static uint8_t i[3]={x,y,z};
+ uint8_t task = presentTask;//return the present task unless task in re-assigned by pages
+
+ switch(page){
+ case PAGE_0: break;
+
+ case PAGE_1_HOME:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 1 HOME
+ ///////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_1_HOME, P1_INC, PUSH)){
+ tPush.start();
+ tSpeed.start();
+ tPop.stop();
+ tPop.reset();
+ incFlag = true;
+ scrnUpdate = true;
+ led1=1;
+ led2=0;
+ }
+ else
+ if(touchBtn(PAGE_1_HOME, P1_DEC, PUSH)){
+ tPush.start();
+ tSpeed.start();
+ tPop.stop();
+ tPop.reset();
+ decFlag = true;
+ scrnUpdate = true;
+ led3=1;
+ led1=0;
+ }
+ else
+ if(touchBtn(PAGE_1_HOME, P1_INC, POP)){
+ tPush.stop();
+ tPush.reset();
+ tPop.start();
+ incFlag = false;
+ led1=0;
+ led2=1;
+ }
+
+ if(touchBtn(PAGE_1_HOME, P1_DEC, POP)){
+ tPush.stop();
+ tPush.reset();
+ tPop.start();
+ decFlag = false;
+ led3=0;
+ led1=1;
+ }
+ else
+ if(touchBtn(PAGE_1_HOME, P1_MAX, PUSH)){
+ maxBtnPress = true;
+ task = MAX;
+ }
+ else
+ if(touchBtn(PAGE_1_HOME, P1_MAX, POP)){
+ maxBtnPress = false;
+ }
+ else
+ if(touchBtn(PAGE_1_HOME, P1_SET, PUSH)){//load the auto restart button with its NVM setting
+
+ if(nvm.autoRestart == AUTO_RESTART_ON)
+ lcd.nexSetDSBtn("bt0",ON);
+ else
+ if(nvm.autoRestart == AUTO_RESTART_OFF)
+ lcd.nexSetDSBtn("bt0",OFF);
+ }
+ break;
+
+ case PAGE_2_INFO:
+ break;
+ case PAGE_3_MAIN:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 3 MAIN MENU
+ ///////////////////////////////////////////////////////////////////////////////
+/*
+ if(touchBtn(PAGE_3_MAIN, P3_FLUID_LEV_MON, PUSH)){
+
+ }
+ else
+ if(touchBtn(PAGE_3_MAIN, P3_SECURITY, PUSH)){
+
+ }
+ else
+ if(touchBtn(PAGE_3_MAIN, P3_CONT_SETTINGS, PUSH)){
+
+
+ }
+ else
+*/
+ if(touchBtn(PAGE_3_MAIN, P3_INFO, PUSH)){
+
+ //lcd.nexChgPage(BLANK_PAGE);
+
+
+
+ lcd.nexChgPage(PAGE_27_ABOUT);
+ lcd.nexSendTxt("hardware",HARDWARE);
+ lcd.nexSendTxt("software",SOFTWARE);
+ lcd.nexSendTxt("date",__DATE__);
+ lcd.nexSendTxt("time",__TIME__);
+ lcd.nexSendTxt("author",AUTHOR);
+
+ }
+ else
+ if(touchBtn(PAGE_3_MAIN, P3_BACK, PUSH))
+ task = retLastStoredTask(savedTask);
+
+ break;
+
+
+ case PAGE_7_FLUID_LEV_SET:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 7 FLUID LEVEL SETTINGS
+ ///////////////////////////////////////////////////////////////////////////////
+/*
+ if(touchBtn(PAGE_7_FLUID_LEV_SET, P7_HOME, PUSH))
+ task = retLastStoredTask(savedTask);
+*/
+ break;
+
+ case PAGE_8_FLOWU_ADJ:
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 8 FLOW UNIT ADJUSTMENT
+ ///////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_8_FLOWU_ADJ, P8_DEC, PUSH))
+ dispList(i, DEC, menuStringID, menuStringArray, P8_MENU_ITEMS);
+ else
+ if(touchBtn(PAGE_8_FLOWU_ADJ, P8_INC, PUSH))
+ dispList(i, INC, menuStringID, menuStringArray, P8_MENU_ITEMS);
+ else
+ if(touchBtn(PAGE_8_FLOWU_ADJ, P8_OK, PUSH)){
+ lcd.nexSetFontCol("data", GREEN);
+ nvm.flowUnits = uFlowUnitID[i[1]];
+ writeNVMByte(NVM_FLOW_UNITS,nvm.flowUnits);
+ decodeByteNVM(nvm.flowUnits, &precision);
+ nvm.flowUnitVal = ((flowPercent/100)*maxScale);
+ writeNVMfloat(NVM_FLOWU_VAL,nvm.flowUnitVal);
+ }
+ else
+ if(touchBtn(PAGE_8_FLOWU_ADJ, P8_HOME, PUSH))
+ task = retLastStoredTask(savedTask);
+ else
+ if(touchBtn(PAGE_8_FLOWU_ADJ, P8_BACK, PUSH))
+ lcd.nexChgPage(PAGE_9_SETTINGS);
+ break;
+
+ case PAGE_9_SETTINGS:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 9 GENERAL SETTINGS
+ ///////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_9_SETTINGS, P9_AUTO_RESTART, PUSH)){
+ if(nvm.autoRestart == AUTO_RESTART_ON){//read the present auto restart state and toggle to alternative state
+ lcd.nexSetDSBtn("bt0",OFF);
+
+ nvm.autoRestart = AUTO_RESTART_OFF;
+ writeNVMByte(NVM_AUTO_RESTART, nvm.autoRestart);
+ }
+ else
+ if(nvm.autoRestart == AUTO_RESTART_OFF){
+ lcd.nexSetDSBtn("bt0",ON);
+
+ nvm.autoRestart = AUTO_RESTART_ON;
+ writeNVMByte(NVM_AUTO_RESTART, nvm.autoRestart);
+ }
+ //DO NOT RETURN TO A TASK
+ }
+ else
+ if(touchBtn(PAGE_9_SETTINGS, P9_FLOW_UNITS, PUSH)){
+ lcd.nexChgPage(PAGE_8_FLOWU_ADJ);
+ //lcd.nexSendTxt("title","Flow Units");
+ //lcd.nexSendTxt("btnOK","OK");
+
+ menuStringID = FLOW_U_STRING_LIST;
+
+ i[y] = decodeByteNVM(nvm.flowUnits, &precision);
+
+ if(i[y] == 0){i[x] = 9; i[z] = 1;}
+ else
+ if(i[y] == 9){i[x] = 8; i[z] = 0;}
+ else{i[x] = (i[1]-1); i[z] = (i[1]+1);}
+
+ lcd.nexSendTxt("top",menuStringArray[0][i[x]]);
+ lcd.nexSendTxt("data",menuStringArray[0][i[y]]);
+ lcd.nexSendTxt("bot",menuStringArray[0][i[z]]);
+ }
+/*
+ else
+ if(touchBtn(PAGE_9_SETTINGS, P9_ASS_NUM, PUSH)){
+
+ }
+ else
+ if(touchBtn(PAGE_9_SETTINGS, P9_PUMP_LAB, PUSH)){
+
+ }
+ else
+ if(touchBtn(PAGE_9_SETTINGS, P9_RESTORE, PUSH)){
+
+ }
+ else
+ if(touchBtn(PAGE_9_SETTINGS, P9_LANG, PUSH)){
+
+ }
+ else
+*/
+ if(touchBtn(PAGE_9_SETTINGS, P9_BACK, PUSH))
+ task = retLastStoredTask(savedTask);
+
+ break;
+
+ case PAGE_11_RESET:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 11 RESET RUN HOURS / RESET VOLUME COUNTER
+ ///////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_11_RESET, P11_RESET, PUSH)){
+
+ lcd.nexChgPage(PAGE_11_RESET);
+/*
+ if(runHours)
+ lcd.nexSendFloat("info1",0.0);
+ else
+ if(volCntr)
+ lcd.nexSendFloat("info1",0.0);
+*/
+ }
+ break;
+
+ case PAGE_12_MODE:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 12 CHANGE MODE
+ ///////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_12_MODE, P12_MANUAL, PUSH)){
+ nvm.runMode = MANUAL;//set manual mode
+ writeNVMByte(NVM_RUN_MODE, nvm.runMode);//update EEPROM with manual mode
+ //lcd.nexChgPage(PAGE_1_HOME);
+ task = STOP_SCRN;
+ }
+ else
+ if(touchBtn(PAGE_12_MODE, P12_ANALOGUE, PUSH)){
+ nvm.runMode = ANALOGUE;//set analogue mode
+ writeNVMByte(NVM_RUN_MODE, nvm.runMode);//update EEPROM with analogue mode
+ //lcd.nexChgPage(PAGE_1_HOME);
+ task = ANALOGUE_SET;
+ }
+ else
+ if(touchBtn(PAGE_12_MODE, P12_ANA_CAL, PUSH)){
+
+ calComplete = false;//for new calibration entry make sure this flag is cleared
+
+ lcd.nexChgPage(PAGE_18_ANA_CAL_MODE);
+ //lcd.nexSendTxt("btnLeft","Analogue");
+ //lcd.nexSendTxt("btnRight","Manual");
+ //lcd.nexSendTxt("title","4-20mA Calibration");
+ //lcd.nexSendTxt("info1","Select Analogue Signal");
+ //lcd.nexSendTxt("info2","or");
+ //lcd.nexSendTxt("info3","Manual Input");
+ //lcd.nexSendTxt("info4","Calibration");
+ }
+ else
+ if(touchBtn(PAGE_12_MODE, P12_CONTACT, PUSH)){
+ //nvm.runMode = CONTACT;
+ //writeNVMByte(NVM_RUN_MODE,nvm.runMode);
+ //task = runModeNVM(nvm.runMode);//reload page 1 titles
+ }
+ else
+ if(touchBtn(PAGE_12_MODE, P12_FLUID_REC, PUSH)){
+ //nvm.runMode = FLUIDREC;
+ //writeNVMByte(NVM_RUN_MODE,nvm.runMode);
+ //task = runModeNVM(nvm.runMode);//reload page 1 titles
+ }
+ else
+ if(touchBtn(PAGE_12_MODE, P12_FLOW_CAL, PUSH)){
+
+ }
+ else
+ if(touchBtn(PAGE_12_MODE, P12_BACK, PUSH)){
+ task = retLastStoredTask(savedTask);
+ }
+ break;
+
+ case PAGE_14_ANA_CAL:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 14 ANALOGUE CALIBRATION CONTROLS
+ ///////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_14_ANA_CAL, P14_INC, PUSH)){
+ tPush.start();
+ tPop.stop();
+ tPop.reset();
+ incFlag = true;
+ scrnUpdate = true;
+ led1=1;
+ led2=0;
+ }
+ else
+ if(touchBtn(PAGE_14_ANA_CAL, P14_DEC, PUSH)){
+ tPush.start();
+ tPop.stop();
+ tPop.reset();
+ decFlag = true;
+ scrnUpdate = true;
+ led3=1;
+ led1=0;
+ }
+ else
+ if(touchBtn(PAGE_14_ANA_CAL, P14_INC, POP)){
+ tPush.stop();
+ tPush.reset();
+ tPop.start();
+ incFlag = false;
+ led1=0;
+ led2=1;
+ }
+ else
+ if(touchBtn(PAGE_14_ANA_CAL, P14_DEC, POP)){
+ tPush.stop();
+ tPush.reset();
+ tPop.start();
+ decFlag = false;
+ led3=0;
+ led1=1;
+ }
+ else
+ if(touchBtn(PAGE_14_ANA_CAL, P14_OK, PUSH)){
+ okFlag = true; scrnUpdate = true;
+ }
+ else
+ if(touchBtn(PAGE_14_ANA_CAL, P14_BACK, PUSH)){
+ stopLED = OFF;
+ task = STOP_SCRN;
+
+ }
+ break;
+
+ case PAGE_18_ANA_CAL_MODE:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 18 4-20mA CALIBRATION MODE
+ ///////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_18_ANA_CAL_MODE, P18_MAN, PUSH)){
+ if(calComplete){
+ nvm.runMode = MANUAL;
+ writeNVMByte(NVM_RUN_MODE, nvm.runMode);//update EEPROM with manual mode
+ task = STOP_SCRN;
+ }
+ else
+ {
+ reset();
+ manFlag = true;//manual cal mode
+ lcd.nexChgPage(PAGE_14_ANA_CAL);
+ calState = CAL1_SCRN;
+ scrnUpdate = true;
+ task = ANA_CAL;
+ }
+ }
+ else
+ if(touchBtn(PAGE_18_ANA_CAL_MODE, P18_INPUT, PUSH)){
+ if(calComplete){
+ nvm.runMode = ANALOGUE;
+ writeNVMByte(NVM_RUN_MODE,nvm.runMode);
+ task = STOP_SCRN;
+ }
+ else{
+ reset();
+ manFlag = false;//signal cal mode
+ lcd.nexChgPage(PAGE_14_ANA_CAL);
+ calState = CAL1_SCRN;
+ scrnUpdate = true;
+ task = ANA_CAL;
+ }
+ }
+ break;
+
+ case PAGE_27_ABOUT:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 27 INFOMATION
+ ///////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_27_ABOUT, P27_BACK, PUSH))
+ task = retLastStoredTask(savedTask);
+ break;
+
+ case PAGE_33_MA_OUT:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 33 mA OUTPUT
+ //////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_33_MA_OUT, P33_FULL_SCALE, PUSH)){
+ lcd.nexSetDSBtn("bt1", UNTICK);//display no tick
+ lcd.nexSetDSBtn("bt0", TICK);//display output low tick
+ nvm._4_20mAoutPut = _4_20MA_OUT_FULL_SCALE;
+ writeNVMByte(NVM_4_20MA_OUT,nvm._4_20mAoutPut);
+ }
+ else
+ if(touchBtn(PAGE_33_MA_OUT, P33_MATCH, PUSH)){
+ lcd.nexSetDSBtn("bt0", UNTICK);//display no tick
+ lcd.nexSetDSBtn("bt1", TICK);//display output high tick
+ nvm._4_20mAoutPut = _4_20MA_OUT_MATCH_INPUT_SCALE;
+ writeNVMByte(NVM_4_20MA_OUT,nvm._4_20mAoutPut);
+ }
+ break;
+
+ case PAGE_34_START_STOP:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 34 RUN/STOP INPUT
+ //////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_34_START_STOP, P34_LOW, PUSH)){
+ lcd.nexSetDSBtn("bt0", UNTICK);
+ lcd.nexSetDSBtn("bt1", TICK);
+ nvm.rmtStopPump = RMT_STOP_PUMP_LOW;
+ writeNVMByte(NVM_RMT_STOP_PUMP,nvm.rmtStopPump);
+ }
+ else
+ if(touchBtn(PAGE_34_START_STOP, P34_HIGH, PUSH)){
+ lcd.nexSetDSBtn("bt0", TICK);//display no tick
+ lcd.nexSetDSBtn("bt1", UNTICK);//display output high tick
+ nvm.rmtStopPump = RMT_STOP_PUMP_HIGH;
+ writeNVMByte(NVM_RMT_STOP_PUMP,nvm.rmtStopPump);
+ }
+ else
+ if(touchBtn(PAGE_34_START_STOP, P34_HOME, PUSH))
+ lcd.nexChgPage(PAGE_1_HOME);
+ else
+ if(touchBtn(PAGE_34_START_STOP, P34_BACK, PUSH))
+ lcd.nexChgPage(PAGE_3_MAIN);
+ break;
+
+ case PAGE_35_CONT_SET:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 35 INPUT/OUTPUT CONTROL SETTINGS
+ ///////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_35_CONT_SET, P35_INPUT, PUSH)){//input button pressed
+ lcd.nexChgPage(PAGE_34_START_STOP);
+ lcd.nexSendTxt("title34","Run/Stop input");
+
+ if(nvm.rmtStopPump == RMT_STOP_PUMP_LOW){//Read the settings
+ lcd.nexSetDSBtn("bt0", UNTICK);//display info
+ lcd.nexSetDSBtn("bt1", TICK);//display info
+ }
+ else
+ if(nvm.rmtStopPump == RMT_STOP_PUMP_HIGH){//Read the settings
+ lcd.nexSetDSBtn("bt0", TICK);//display info
+ lcd.nexSetDSBtn("bt1", UNTICK);//display info
+ }
+ }
+ else
+ if(touchBtn(PAGE_35_CONT_SET, P35_OUTPUT1, PUSH)){//Output 1 button pressed
+ lcd.nexChgPage(PAGE_36_CONT_ADJ);
+
+ if(nvm.outPut1Logic == OUT1_LOGIC_HI){//Read the settings
+ lcd.nexSetDSBtn("bt1", TICK);//display info
+ lcd.nexSetDSBtn("bt0", UNTICK);//display info
+ }
+ else
+ if(nvm.outPut1Logic == OUT1_LOGIC_LO){//Read the settings
+ lcd.nexSetDSBtn("bt1", UNTICK);//display info
+ lcd.nexSetDSBtn("bt0", TICK);//display info
+ }
+
+ lcd.nexSendTxt("title36","Output 1");
+ lcd.nexSendTxt("t0","LOW");
+ lcd.nexSendTxt("t1","HIGH");
+ menuStringID = OUTPUT1_LIST;
+ i[y] = ReadListIndexNVM(nvm.outPut1);
+ lcd.nexSendTxt("data",menuStringArray[menuStringID][i[y]]);
+ }
+ else
+ if(touchBtn(PAGE_35_CONT_SET, P35_OUTPUT2, PUSH)){//Output 2 button pressed
+ lcd.nexChgPage(PAGE_36_CONT_ADJ);//display
+
+ if(nvm.outPut2Logic == OUT2_LOGIC_HI){
+ lcd.nexSetDSBtn("bt1", TICK);//display info
+ lcd.nexSetDSBtn("bt0", UNTICK);//display info
+ }
+ else
+ if(nvm.outPut2Logic == OUT2_LOGIC_LO){
+ lcd.nexSetDSBtn("bt1", UNTICK);//display info
+ lcd.nexSetDSBtn("bt0", TICK);//display info
+ }
+
+ lcd.nexSendTxt("title36","Output 2");//display
+ lcd.nexSendTxt("t0","LOW");
+ lcd.nexSendTxt("t1","HIGH");
+ menuStringID = OUTPUT2_LIST;//set the menu string ID for list for output 2
+ i[y] = ReadListIndexNVM(nvm.outPut2);//get the index of the present output 2 setting from nvm
+ lcd.nexSendTxt("data",menuStringArray[menuStringID][i[y]]);//display the current nvm setting
+ }
+ else
+ if(touchBtn(PAGE_35_CONT_SET, P35_MA_OUTPUT, PUSH)){//mA output button pressed
+ lcd.nexChgPage(PAGE_33_MA_OUT);//display
+ lcd.nexSendTxt("title33","4-20mA Output scale");
+ lcd.nexSendTxt("info1","Pin 3: Full scale 0 to 125 RPM");
+ lcd.nexSendTxt("info2","Pin 3: Match input scale");
+
+ if(nvm._4_20mAoutPut == _4_20MA_OUT_FULL_SCALE){
+ lcd.nexSetDSBtn("bt1", UNTICK);//display
+ lcd.nexSetDSBtn("bt0", TICK);//display
+ }
+ else
+ if(nvm._4_20mAoutPut == _4_20MA_OUT_MATCH_INPUT_SCALE){
+ lcd.nexSetDSBtn("bt1", TICK);//display
+ lcd.nexSetDSBtn("bt0", UNTICK);//display
+ }
+ }
+ else
+ if(touchBtn(PAGE_35_CONT_SET, P35_SPEED_LIMIT, PUSH)){//Speed limit button pressed
+ lcd.nexChgPage(PAGE_31_SPEED_LIMIT);
+ //speedLimit =
+
+ }
+ else
+ if(touchBtn(PAGE_35_CONT_SET, P35_RUN_HOURS, PUSH)){//Run hours button pressed
+ lcd.nexChgPage(PAGE_11_RESET);
+ lcd.nexSendTxt("title11","Run Hours");
+ lcd.nexSendTxt("btn","RESET");
+ lcd.nexSendTxt("info1","159");
+ lcd.nexSendTxt("info5","Hours");
+ bool runHours = 1;
+ bool volCntr = 0;
+ }
+ else
+ if(touchBtn(PAGE_35_CONT_SET, P35_VOLUME_CNTR, PUSH)){//Reset flow counter button pressed
+ lcd.nexChgPage(PAGE_11_RESET);
+ lcd.nexSendTxt("title11","Volume Counter");
+ lcd.nexSendTxt("btn","RESET");
+ lcd.nexSendTxt("info1","60");
+ lcd.nexSendTxt("info5","Litres");
+ bool runHours = 0;
+ bool volCntr = 1;
+ }
+ else
+ if(touchBtn(PAGE_35_CONT_SET, P35_SCALE_FACTOR, PUSH)){
+
+ }
+ break;
+
+ case PAGE_36_CONT_ADJ:
+ ///////////////////////////////////////////////////////////////////////////////
+ // PAGE 36 CONTROL SETTINGS ADJUSTMENT
+ ///////////////////////////////////////////////////////////////////////////////
+ if(touchBtn(PAGE_36_CONT_ADJ, P36_DEC, PUSH)){
+ dispList(i, INC, menuStringID, menuStringArray, P36_MENU_ITEMS);
+ //pc.printf("\r\n\r\nx = 0x%X, y = 0x%X, z = 0x%X, ",i[x],i[y],i[z]);
+ }
+ else
+ if(touchBtn(PAGE_36_CONT_ADJ, P36_INC, PUSH)){
+ dispList(i, DEC, menuStringID, menuStringArray, P36_MENU_ITEMS);
+ //pc.printf("\r\n\r\nx = 0x%X, y = 0x%X, z = 0x%X, ",i[x],i[y],i[z]);
+ }
+ else
+ if(touchBtn(PAGE_36_CONT_ADJ, P36_LOW, PUSH)){//Low button pressed
+ if(menuStringID == OUTPUT1_LIST){//Output 1 selected
+ lcd.nexSetDSBtn("bt1", UNTICK);//Untick High
+ lcd.nexSetDSBtn("bt0", TICK);//Tick Low
+ nvm.outPut1Logic = OUT1_LOGIC_LO;//Set Low for output 1 in global structure
+ writeNVMByte(NVM_OUTPUT1_LOGIC,nvm.outPut1Logic);//write Low for output 1 to NVM
+ }
+ else
+ if(menuStringID == OUTPUT2_LIST){//Output 2 selected
+ lcd.nexSetDSBtn("bt1", UNTICK);//Untick High
+ lcd.nexSetDSBtn("bt0", TICK);//Tick Low
+ nvm.outPut2Logic = OUT2_LOGIC_LO;//Set Low for output 2 in global structure
+ writeNVMByte(NVM_OUTPUT2_LOGIC,nvm.outPut2Logic);//write Low for output 2 to NVM
+ }
+ }
+ else
+ if(touchBtn(PAGE_36_CONT_ADJ, P36_HIGH, PUSH)){//High button pressed
+ if(menuStringID == OUTPUT1_LIST){//Output 1 selected
+ lcd.nexSetDSBtn("bt0", UNTICK);//Untick Low
+ lcd.nexSetDSBtn("bt1", TICK);//Tick High
+ nvm.outPut1Logic = OUT1_LOGIC_HI;//Set High for output 1 in global structure
+ writeNVMByte(NVM_OUTPUT1_LOGIC,nvm.outPut1Logic);//write High for output 1 to NVM
+ }
+ else
+ if(menuStringID == OUTPUT2_LIST){//Output 2 selected
+ lcd.nexSetDSBtn("bt0", UNTICK);//Untick Low
+ lcd.nexSetDSBtn("bt1", TICK);//Tick High
+ nvm.outPut2Logic = OUT2_LOGIC_HI;//Set High for output 2 in global structure
+ writeNVMByte(NVM_OUTPUT2_LOGIC,nvm.outPut2Logic);//write High for output to NVM
+ }
+ }
+ else
+ if(touchBtn(PAGE_36_CONT_ADJ, P36_OK, PUSH)){
+
+ lcd.nexSetFontCol("data", GREEN);
+
+ switch(menuStringID){
+ case OUTPUT1_LIST:
+ nvm.outPut1 = uOutPut1_ID[i[y]];
+ writeNVMByte(NVM_OUTPUT1,nvm.outPut1);
+ break;
+
+ case OUTPUT2_LIST:
+ nvm.outPut2 = uOutPut2_ID[i[y]];
+ writeNVMByte(NVM_OUTPUT2,nvm.outPut2);
+ break;
+ }
+ //task = retLastStoredTask(savedTask);
+ }
+ break;
+ }
+ return(task);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// SCAN NEXTION TOUCH KEYS
+///////////////////////////////////////////////////////////////////////////////
+uint8_t nexKeyScan(uint8_t presentTask, uint8_t savedTask){
+/*
+ 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
+ */
+
+/*
+ Nextion RX interrupt sets the keyScanFlag
+ when a touch key command has been received
+ the switch below filters which Nextion page
+ has sent the command
+*/
+ static uint8_t task = presentTask;
+
+ if(task != ANA_CAL)
+ task = presentTask;
+
+ if(keyScanFlag == true){//RX ISR sets this flag
+ keyScanFlag = false;
+ task = nexPage(presentTask, savedTask);
+ }
+ return(task);//return back to the present task or next task
+}