Repository for import to local machine

Dependencies:   DMBasicGUI DMSupport

Committer:
jmitc91516
Date:
Mon Jul 31 15:37:57 2017 +0000
Revision:
8:26e49e6955bd
Parent:
6:dba3fbdfd5da
Method ramp scrolling improved, and more bitmaps moved to QSPI memory

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmitc91516 0:47c880c1463d 1 #include "TouchPanelPageSelector.h"
jmitc91516 0:47c880c1463d 2
jmitc91516 1:a5258871b33d 3 #include "EasyGUITouchAreaIndices.h"
jmitc91516 1:a5258871b33d 4 #include "ServiceInterval.h"
jmitc91516 1:a5258871b33d 5 #include "ColumnDHAutoCalibrationPageHandler.h"
jmitc91516 1:a5258871b33d 6 #include "DetectorIgnitionHandler.h"
jmitc91516 1:a5258871b33d 7
jmitc91516 1:a5258871b33d 8
jmitc91516 1:a5258871b33d 9 //#define FORCE_DIRECTLY_HEATED_COLUMN // For testing/debugging - pretend we have a directly heated column
jmitc91516 1:a5258871b33d 10 // (regardless of what we actually have)
jmitc91516 1:a5258871b33d 11
jmitc91516 1:a5258871b33d 12 #define USE_DH_COLUMN_AUTO_CALIBRATION_PAGE // Otherwise (i.e. if commented out) use manual calibration page
jmitc91516 1:a5258871b33d 13
jmitc91516 1:a5258871b33d 14 /*
jmitc91516 1:a5258871b33d 15 TouchPanelPageSelector class
jmitc91516 1:a5258871b33d 16 */
jmitc91516 1:a5258871b33d 17
jmitc91516 1:a5258871b33d 18 /*
jmitc91516 1:a5258871b33d 19 static members
jmitc91516 1:a5258871b33d 20 */
jmitc91516 1:a5258871b33d 21 bool TouchPanelPageSelector::pageChangeEnabled = true;
jmitc91516 1:a5258871b33d 22
jmitc91516 1:a5258871b33d 23
jmitc91516 0:47c880c1463d 24 // The default constructor exists purely to satisfy the compiler - it is not intended to be used
jmitc91516 0:47c880c1463d 25 TouchPanelPageSelector::TouchPanelPageSelector()
jmitc91516 0:47c880c1463d 26 {
jmitc91516 0:47c880c1463d 27 panelIndex = -1;
jmitc91516 0:47c880c1463d 28
jmitc91516 0:47c880c1463d 29 pageNumber = -1;
jmitc91516 0:47c880c1463d 30 }
jmitc91516 0:47c880c1463d 31
jmitc91516 0:47c880c1463d 32 TouchPanelPageSelector::TouchPanelPageSelector(int index, int page)
jmitc91516 0:47c880c1463d 33 {
jmitc91516 0:47c880c1463d 34 panelIndex = index;
jmitc91516 0:47c880c1463d 35
jmitc91516 0:47c880c1463d 36 pageNumber = page;
jmitc91516 0:47c880c1463d 37 }
jmitc91516 0:47c880c1463d 38
jmitc91516 1:a5258871b33d 39
jmitc91516 1:a5258871b33d 40 /*
jmitc91516 1:a5258871b33d 41 TouchPanelDetectorPageSelector class
jmitc91516 1:a5258871b33d 42 */
jmitc91516 1:a5258871b33d 43
jmitc91516 1:a5258871b33d 44 // The default constructor exists purely to satisfy the compiler - it is not intended to be used
jmitc91516 1:a5258871b33d 45 TouchPanelDetectorPageSelector::TouchPanelDetectorPageSelector() : TouchPanelPageSelector()
jmitc91516 1:a5258871b33d 46 {
jmitc91516 1:a5258871b33d 47 }
jmitc91516 1:a5258871b33d 48
jmitc91516 1:a5258871b33d 49 // We do not use the base class' page number in this class - we calculate it 'on the fly' - see below
jmitc91516 1:a5258871b33d 50 TouchPanelDetectorPageSelector::TouchPanelDetectorPageSelector(int index) : TouchPanelPageSelector(index, -1)
jmitc91516 1:a5258871b33d 51 {
jmitc91516 1:a5258871b33d 52 }
jmitc91516 1:a5258871b33d 53
jmitc91516 1:a5258871b33d 54 /*
jmitc91516 1:a5258871b33d 55 For the detector, the page number varies according to the detector type.
jmitc91516 1:a5258871b33d 56 This function calculates the correct page number, and returns it.
jmitc91516 1:a5258871b33d 57
jmitc91516 1:a5258871b33d 58 Params: USBDeviceConnected and USBHostGC corresponding to the GC
jmitc91516 1:a5258871b33d 59 */
jmitc91516 1:a5258871b33d 60 int TouchPanelDetectorPageSelector::GetPageNumber(USBDeviceConnected* usbDevice, USBHostGC* usbHostGC)
jmitc91516 1:a5258871b33d 61 {
jmitc91516 1:a5258871b33d 62 switch(GetDetectorType(usbDevice, usbHostGC)) {
jmitc91516 1:a5258871b33d 63 case FID_DETECTOR:
jmitc91516 1:a5258871b33d 64 return GuiStruct_DetectorFIDPage_4;
jmitc91516 1:a5258871b33d 65 case TCD_DETECTOR:
jmitc91516 1:a5258871b33d 66 return GuiStruct_DetectorTCDPage_11;
jmitc91516 1:a5258871b33d 67 case ECD_DETECTOR:
jmitc91516 1:a5258871b33d 68 return GuiStruct_DetectorECDPage_12;
jmitc91516 1:a5258871b33d 69 case TXL_DETECTOR:
jmitc91516 1:a5258871b33d 70 return GuiStruct_DetectorTXLPage_27;
jmitc91516 1:a5258871b33d 71 // case 4 is "None" - leave for default
jmitc91516 1:a5258871b33d 72 case NPD_DETECTOR:
jmitc91516 1:a5258871b33d 73 return GuiStruct_DetectorNPDPage_28;
jmitc91516 1:a5258871b33d 74 case PID_DETECTOR:
jmitc91516 1:a5258871b33d 75 return GuiStruct_DetectorPIDPage_29;
jmitc91516 1:a5258871b33d 76 case FPD_DETECTOR:
jmitc91516 1:a5258871b33d 77 return GuiStruct_DetectorFPDPage_14;
jmitc91516 1:a5258871b33d 78 case SPDID_DETECTOR:
jmitc91516 1:a5258871b33d 79 return GuiStruct_DetectorSPDIDPage_30;
jmitc91516 1:a5258871b33d 80 default: // i.e. all other types (including "None")
jmitc91516 1:a5258871b33d 81 break; // Return default (see below)
jmitc91516 1:a5258871b33d 82 }
jmitc91516 1:a5258871b33d 83
jmitc91516 1:a5258871b33d 84 // Default return code
jmitc91516 1:a5258871b33d 85 return GuiStruct_DetectorNonePage_31;
jmitc91516 1:a5258871b33d 86 }
jmitc91516 1:a5258871b33d 87
jmitc91516 1:a5258871b33d 88 /*
jmitc91516 1:a5258871b33d 89 Gets the detector type from the GC, and returns it as a DetectorType enumeration.
jmitc91516 1:a5258871b33d 90
jmitc91516 1:a5258871b33d 91 Params: USBDeviceConnected and USBHostGC corresponding to the GC
jmitc91516 1:a5258871b33d 92 */
jmitc91516 1:a5258871b33d 93 DetectorType TouchPanelDetectorPageSelector::GetDetectorType(USBDeviceConnected* usbDevice, USBHostGC* usbHostGC)
jmitc91516 1:a5258871b33d 94 {
jmitc91516 1:a5258871b33d 95 char response[50];
jmitc91516 1:a5258871b33d 96 while(usbHostGC->ExecutingSetDeviceReport()) {}
jmitc91516 1:a5258871b33d 97
jmitc91516 1:a5258871b33d 98 usbHostGC->SetDeviceReport(usbDevice, "GDTY", response);
jmitc91516 1:a5258871b33d 99
jmitc91516 1:a5258871b33d 100 // We expect a response like this: "DDTY0000" for FID, "DDTY0001" for TCD,
jmitc91516 1:a5258871b33d 101 // "DDTY0002" for ECD, "DDTY0003" for TXL, "DDTY0004" for "None", "DDTY0005" for NPD,
jmitc91516 1:a5258871b33d 102 // "DDTY0006" for PID, "DDTY0007" for FPD, "DDTY0008" for SPDID.
jmitc91516 1:a5258871b33d 103 // We assume any other "DDTY00nn" value means "None".
jmitc91516 1:a5258871b33d 104
jmitc91516 1:a5258871b33d 105 // We convert the final two digits to an integer
jmitc91516 1:a5258871b33d 106 int type;
jmitc91516 1:a5258871b33d 107 sscanf(&response[6], "%d", &type);
jmitc91516 1:a5258871b33d 108
jmitc91516 1:a5258871b33d 109 // Now we convert the integer value to a DetectorType
jmitc91516 1:a5258871b33d 110 DetectorType detectorType;
jmitc91516 1:a5258871b33d 111 if((type < MIN_DETECTOR_TYPE) || (type > MAX_DETECTOR_TYPE)) {
jmitc91516 1:a5258871b33d 112 detectorType = NO_DETECTOR;
jmitc91516 1:a5258871b33d 113 } else {
jmitc91516 1:a5258871b33d 114 detectorType = (DetectorType) type;
jmitc91516 1:a5258871b33d 115 }
jmitc91516 1:a5258871b33d 116
jmitc91516 1:a5258871b33d 117 return detectorType;
jmitc91516 1:a5258871b33d 118 }
jmitc91516 1:a5258871b33d 119
jmitc91516 1:a5258871b33d 120
jmitc91516 1:a5258871b33d 121 /*
jmitc91516 1:a5258871b33d 122 TouchPanelAbortRunPageSelector class
jmitc91516 1:a5258871b33d 123 */
jmitc91516 1:a5258871b33d 124
jmitc91516 1:a5258871b33d 125 // The default constructor exists purely to satisfy the compiler - it is not intended to be used
jmitc91516 1:a5258871b33d 126 TouchPanelAbortRunPageSelector::TouchPanelAbortRunPageSelector() : TouchPanelPageSelector()
jmitc91516 1:a5258871b33d 127 {
jmitc91516 1:a5258871b33d 128 }
jmitc91516 1:a5258871b33d 129
jmitc91516 1:a5258871b33d 130 // We do not use the base class' page number in this class - we calculate it 'on the fly' - see below
jmitc91516 1:a5258871b33d 131 TouchPanelAbortRunPageSelector::TouchPanelAbortRunPageSelector(int index) : TouchPanelPageSelector(index, -1)
jmitc91516 1:a5258871b33d 132 {
jmitc91516 1:a5258871b33d 133 }
jmitc91516 1:a5258871b33d 134
jmitc91516 1:a5258871b33d 135 /*
jmitc91516 1:a5258871b33d 136 When the user aborts the run, we will normally display the Home page. But if any components
jmitc91516 1:a5258871b33d 137 now require servicing (since even an aborted run counts as one 'cycle', and some components
jmitc91516 1:a5258871b33d 138 require servicing after a particular number of cycles), we want to display
jmitc91516 1:a5258871b33d 139 the 'Servicing Required' page instead. This function decides which page to display,
jmitc91516 1:a5258871b33d 140 and returns its number.
jmitc91516 1:a5258871b33d 141
jmitc91516 1:a5258871b33d 142 Params: USBDeviceConnected and USBHostGC corresponding to the GC
jmitc91516 1:a5258871b33d 143 (these are not used in this class)
jmitc91516 1:a5258871b33d 144 */
jmitc91516 1:a5258871b33d 145 int TouchPanelAbortRunPageSelector::GetPageNumber(USBDeviceConnected* usbDevice, USBHostGC* usbHostGC)
jmitc91516 1:a5258871b33d 146 {
jmitc91516 1:a5258871b33d 147 if(ServiceInterval::AtLeastOneServiceIntervalHasExpired()) {
jmitc91516 1:a5258871b33d 148 return GuiStruct_ServicingRequired_Def;
jmitc91516 1:a5258871b33d 149 }
jmitc91516 1:a5258871b33d 150
jmitc91516 1:a5258871b33d 151 // 'else'...
jmitc91516 1:a5258871b33d 152 return GuiStruct_HomePage_1;
jmitc91516 1:a5258871b33d 153 }
jmitc91516 1:a5258871b33d 154
jmitc91516 1:a5258871b33d 155
jmitc91516 1:a5258871b33d 156
jmitc91516 1:a5258871b33d 157
jmitc91516 1:a5258871b33d 158
jmitc91516 1:a5258871b33d 159
jmitc91516 1:a5258871b33d 160 /*
jmitc91516 1:a5258871b33d 161 TouchPanelReturnPageSelector class
jmitc91516 1:a5258871b33d 162 */
jmitc91516 1:a5258871b33d 163
jmitc91516 1:a5258871b33d 164 // The default constructor exists purely to satisfy the compiler - it is not intended to be used
jmitc91516 1:a5258871b33d 165 TouchPanelReturnPageSelector::TouchPanelReturnPageSelector() : TouchPanelPageSelector()
jmitc91516 1:a5258871b33d 166 {
jmitc91516 1:a5258871b33d 167 thisIsTheReturnInstance = false;
jmitc91516 1:a5258871b33d 168 }
jmitc91516 1:a5258871b33d 169
jmitc91516 1:a5258871b33d 170 /*
jmitc91516 1:a5258871b33d 171 In this constructor, 'index' is the number of the easyGUI touch area to which this instance corresponds, 'pageToDisplayNow' is the easyGUI page("structure") number to which this instance corresponds,
jmitc91516 1:a5258871b33d 172 and 'thisWillBeTheReturnInstance' is a boolean that, if false, says that this instance's 'GetPageNumber' function records 'pageToReturnTo' as the page to be returned to,
jmitc91516 1:a5258871b33d 173 then tells the caller 'go to pageToDisplayNow' - or, if true, says that this instance's 'GetPageNumber' function returns the number of the page to be returned to.
jmitc91516 1:a5258871b33d 174 */
jmitc91516 1:a5258871b33d 175 TouchPanelReturnPageSelector::TouchPanelReturnPageSelector(int index, int pageToReturnTo, int pageToDisplayNow, bool thisWillBeTheReturnInstance) : TouchPanelPageSelector(index, pageToDisplayNow)
jmitc91516 1:a5258871b33d 176 {
jmitc91516 1:a5258871b33d 177 thisReturnPage = pageToReturnTo;
jmitc91516 1:a5258871b33d 178
jmitc91516 1:a5258871b33d 179 thisIsTheReturnInstance = thisWillBeTheReturnInstance;
jmitc91516 1:a5258871b33d 180 }
jmitc91516 1:a5258871b33d 181
jmitc91516 1:a5258871b33d 182 int TouchPanelReturnPageSelector::GetPageNumber(USBDeviceConnected* usbDevice, USBHostGC* usbHostGC)
jmitc91516 1:a5258871b33d 183 {
jmitc91516 1:a5258871b33d 184 if(thisIsTheReturnInstance) {
jmitc91516 1:a5258871b33d 185 if(theReturnPage == -1) {
jmitc91516 1:a5258871b33d 186 // Return page not yet set - as a default, return the page number we were given when we were constructed
jmitc91516 1:a5258871b33d 187 return thisReturnPage;
jmitc91516 1:a5258871b33d 188 }
jmitc91516 1:a5258871b33d 189 // 'else' we have a return page number
jmitc91516 1:a5258871b33d 190 return theReturnPage;
jmitc91516 1:a5258871b33d 191 }
jmitc91516 1:a5258871b33d 192
jmitc91516 1:a5258871b33d 193 // 'else' this is a 'calling' instance - record our return page
jmitc91516 1:a5258871b33d 194 // as the one to return to, then return (to the caller) the page to display now
jmitc91516 1:a5258871b33d 195
jmitc91516 1:a5258871b33d 196 theReturnPage = thisReturnPage;
jmitc91516 1:a5258871b33d 197
jmitc91516 1:a5258871b33d 198 return GetBasePageNumber();
jmitc91516 1:a5258871b33d 199 }
jmitc91516 1:a5258871b33d 200
jmitc91516 1:a5258871b33d 201 // Static variable - all instances of TouchPanelReturnPageSelector share the same return page.
jmitc91516 1:a5258871b33d 202 // (Note that this is only one variable, not a stack - if we want 'overlapping' return pages
jmitc91516 1:a5258871b33d 203 // at some point, this will have to be changed.)
jmitc91516 1:a5258871b33d 204 int TouchPanelReturnPageSelector::theReturnPage = -1;
jmitc91516 1:a5258871b33d 205
jmitc91516 1:a5258871b33d 206
jmitc91516 1:a5258871b33d 207 /*
jmitc91516 1:a5258871b33d 208 TouchPanelPageSelectors class
jmitc91516 1:a5258871b33d 209 */
jmitc91516 1:a5258871b33d 210
jmitc91516 1:a5258871b33d 211 // TouchPanelPageSelectors constructor - set up the array of page selectors
jmitc91516 0:47c880c1463d 212 TouchPanelPageSelectors::TouchPanelPageSelectors()
jmitc91516 0:47c880c1463d 213 {
jmitc91516 0:47c880c1463d 214 // Note that the touch area indexes, etc, below
jmitc91516 0:47c880c1463d 215 // are hardcoded to match those set up in easyGUI.
jmitc91516 1:a5258871b33d 216 // There seems to be no way to get these values from easyGUI at runtime.
jmitc91516 1:a5258871b33d 217 // See EasyGUITouchAreaIndices.h for the actual numerical values.
jmitc91516 1:a5258871b33d 218
jmitc91516 1:a5258871b33d 219 // Note also that we have two touch areas each for the Column, Injector,
jmitc91516 1:a5258871b33d 220 // Detector and Gas (which overlap in each case - see the easyGUI project).
jmitc91516 1:a5258871b33d 221 // This is so that we can (nearly) fill the relevant rectangle on the Home Page
jmitc91516 1:a5258871b33d 222 // with touch areas, without overlapping the Run button at the centre.
jmitc91516 1:a5258871b33d 223
jmitc91516 1:a5258871b33d 224 // The TouchCallback function (main.cpp) is the main user of this. As well as getting, from this class,
jmitc91516 1:a5258871b33d 225 // the page to be displayed in response to the user touching a particular touch area, it also performs
jmitc91516 1:a5258871b33d 226 // any other actions (e.g. telling the GC to abort the run, etc) that may be required before we can display the new page.
jmitc91516 1:a5258871b33d 227
jmitc91516 1:a5258871b33d 228 // Another note - there are multiple Abort Run pages, which are all identical apart from the touch index of the No button (this is of course invisible to the user).
jmitc91516 1:a5258871b33d 229 // Each one is invoked from the Abort Run button on a different 'Running xxx' page, where 'xxx' is one of the components (Column, Injector, etc).
jmitc91516 1:a5258871b33d 230 // This is so that we know which page to return to if the user presses 'No' - the index of the 'No' button tells us which Abort Run page the user is on,
jmitc91516 1:a5258871b33d 231 // therefore which page he pressed the 'Abort Run' button on - and that is the page we need to return to. Otherwise (i.e. if we had a single Abort Run page),
jmitc91516 1:a5258871b33d 232 // the code here would be much more complicated.
jmitc91516 1:a5258871b33d 233
jmitc91516 5:aceac1035d71 234 // And another... The Detector pages are different for the different detector types. This is why, for these pages, we use
jmitc91516 5:aceac1035d71 235 // the TouchPanelDetectorPageSelector class, derived from TouchPanelPageSelector,
jmitc91516 5:aceac1035d71 236 // which find out the detector type at runtime, and return the corresponding page numbers.
jmitc91516 1:a5258871b33d 237
jmitc91516 1:a5258871b33d 238 tppsArray[0] = new TouchPanelPageSelector(HOME_BUTTON, GuiStruct_HomePage_1);
jmitc91516 1:a5258871b33d 239 tppsArray[1] = new TouchPanelPageSelector(SETTINGS_BUTTON, GuiStruct_SettingsPage_5);
jmitc91516 5:aceac1035d71 240 tppsArray[2] = new TouchPanelPageSelector(COLUMN_TOUCH_AREA_1, GuiStruct_ColumnPage2_9);
jmitc91516 1:a5258871b33d 241 tppsArray[3] = new TouchPanelPageSelector(INJECTOR_TOUCH_AREA_1, GuiStruct_InjectorPage1_3);
jmitc91516 1:a5258871b33d 242 // tppsArray[4] = new TouchPanelPageSelector(5, GuiStruct_DefaultDetectorPage1_4);
jmitc91516 1:a5258871b33d 243 tppsArray[4] = new TouchPanelDetectorPageSelector(DETECTOR_TOUCH_AREA_1);
jmitc91516 1:a5258871b33d 244 tppsArray[5] = new TouchPanelPageSelector(GAS_TOUCH_AREA_1, GuiStruct_GasInformationPage_6);
jmitc91516 5:aceac1035d71 245 tppsArray[6] = new TouchPanelPageSelector(COLUMN_TOUCH_AREA_2, GuiStruct_ColumnPage2_9);
jmitc91516 1:a5258871b33d 246 tppsArray[7] = new TouchPanelPageSelector(INJECTOR_TOUCH_AREA_2, GuiStruct_InjectorPage1_3); // Second (overlapping) 'Injector' touch area on Home page
jmitc91516 1:a5258871b33d 247 // tppsArray[8] = new TouchPanelPageSelector(9, GuiStruct_DefaultDetectorPage1_4);
jmitc91516 1:a5258871b33d 248 tppsArray[8] = new TouchPanelDetectorPageSelector(DETECTOR_TOUCH_AREA_2); // Second (overlapping) 'Detector' touch area on Home page
jmitc91516 1:a5258871b33d 249 tppsArray[9] = new TouchPanelPageSelector(GAS_TOUCH_AREA_2, GuiStruct_GasInformationPage_6); // Second (overlapping) 'Gas' touch area on Home page
jmitc91516 1:a5258871b33d 250
jmitc91516 1:a5258871b33d 251 tppsArray[10] = new TouchPanelReturnPageSelector(RUNNING_PAGE1_ABORT_RUN, GuiStruct_RunningPage1_7, GuiStruct_AbortRunPage_19, false);
jmitc91516 1:a5258871b33d 252 tppsArray[11] = new TouchPanelReturnPageSelector(RUNNING_COLUMN_ABORT_RUN, GuiStruct_RunningColumnPage_25, GuiStruct_AbortRunPage_19, false);
jmitc91516 1:a5258871b33d 253 tppsArray[12] = new TouchPanelReturnPageSelector(RUNNING_INJECTOR_ABORT_RUN, GuiStruct_RunningInjectorPage_26, GuiStruct_AbortRunPage_19, false);
jmitc91516 1:a5258871b33d 254 tppsArray[13] = new TouchPanelReturnPageSelector(RUNNING_DETECTOR_ABORT_RUN, GuiStruct_RunningDetectorPage_27, GuiStruct_AbortRunPage_19, false);
jmitc91516 1:a5258871b33d 255 tppsArray[14] = new TouchPanelReturnPageSelector(RUNNING_GAS_ABORT_RUN, GuiStruct_RunningGasPage_28, GuiStruct_AbortRunPage_19, false);
jmitc91516 1:a5258871b33d 256 tppsArray[15] = new TouchPanelReturnPageSelector(RUNNING_INJECTOR_PROFILE_ABORT_RUN, GuiStruct_RunningInjectorProfilePage_Def, GuiStruct_AbortRunPage_19, false);
jmitc91516 1:a5258871b33d 257 tppsArray[16] = new TouchPanelAbortRunPageSelector(ABORT_RUN_YES);
jmitc91516 1:a5258871b33d 258 tppsArray[17] = new TouchPanelReturnPageSelector(ABORT_RUN_NO, GuiStruct_AbortRunPage_19, GuiStruct_RunningPage1_7, true);
jmitc91516 1:a5258871b33d 259
jmitc91516 1:a5258871b33d 260 tppsArray[18] = new TouchPanelPageSelector(GAS_INFO_LEFT_ARROW, GuiStruct_GasProfilePage_15);
jmitc91516 6:dba3fbdfd5da 261 tppsArray[19] = new TouchPanelPageSelector(GAS_INFO_RIGHT_ARROW, GuiStruct_GasMethodPage_Def);
jmitc91516 6:dba3fbdfd5da 262 tppsArray[20] = new TouchPanelPageSelector(GAS_METHOD_LEFT_ARROW, GuiStruct_GasInformationPage_6);
jmitc91516 6:dba3fbdfd5da 263 tppsArray[21] = new TouchPanelPageSelector(GAS_METHOD_RIGHT_ARROW, GuiStruct_GasProfilePage_15);
jmitc91516 6:dba3fbdfd5da 264 tppsArray[22] = new TouchPanelPageSelector(GAS_PROFILE_LEFT_ARROW, GuiStruct_GasMethodPage_Def);
jmitc91516 6:dba3fbdfd5da 265 tppsArray[23] = new TouchPanelPageSelector(GAS_PROFILE_RIGHT_ARROW, GuiStruct_GasInformationPage_6);
jmitc91516 1:a5258871b33d 266
jmitc91516 6:dba3fbdfd5da 267 tppsArray[24] = new TouchPanelPageSelector(GAS_SAVER_RETURN_TO_READY, GuiStruct_HomePage_1); // 'Return to ready state' touch area on Gas Saver page (covers entire page)
jmitc91516 1:a5258871b33d 268
jmitc91516 5:aceac1035d71 269 // Note - we now use the same pages for the conventional and directly heated columns
jmitc91516 6:dba3fbdfd5da 270 tppsArray[25] = new TouchPanelPageSelector(COLUMN_PAGE2_LEFT_ARROW, GuiStruct_ColumnTempProfilePage_60);
jmitc91516 6:dba3fbdfd5da 271 tppsArray[26] = new TouchPanelPageSelector(COLUMN_PAGE2_RIGHT_ARROW, GuiStruct_ColumnMethodPage_Def);
jmitc91516 6:dba3fbdfd5da 272 tppsArray[27] = new TouchPanelPageSelector(COLUMN_METHOD_LEFT_ARROW, GuiStruct_ColumnPage2_9);
jmitc91516 6:dba3fbdfd5da 273 tppsArray[28] = new TouchPanelPageSelector(COLUMN_METHOD_RIGHT_ARROW, GuiStruct_ColumnTempProfilePage_60);
jmitc91516 6:dba3fbdfd5da 274 tppsArray[29] = new TouchPanelPageSelector(COLUMN_PROFILE_LEFT_ARROW, GuiStruct_ColumnMethodPage_Def);
jmitc91516 6:dba3fbdfd5da 275 tppsArray[30] = new TouchPanelPageSelector(COLUMN_PROFILE_RIGHT_ARROW, GuiStruct_ColumnPage2_9);
jmitc91516 0:47c880c1463d 276
jmitc91516 6:dba3fbdfd5da 277 tppsArray[31] = new TouchPanelPageSelector(CLEAR_ERRORS_BUTTON, GuiStruct_HomePage_1); // 'Clear Errors' button on 'GC in fault state' page
jmitc91516 1:a5258871b33d 278
jmitc91516 6:dba3fbdfd5da 279 tppsArray[32] = new TouchPanelPageSelector(INJECTOR_PAGE1_LEFT_ARROW, GuiStruct_InjectorTempProfilePage_25);
jmitc91516 6:dba3fbdfd5da 280 tppsArray[33] = new TouchPanelPageSelector(INJECTOR_PAGE1_RIGHT_ARROW, GuiStruct_InjectorMethodPage_Def);
jmitc91516 6:dba3fbdfd5da 281 tppsArray[34] = new TouchPanelPageSelector(INJECTOR_METHOD_LEFT_ARROW, GuiStruct_InjectorPage1_3);
jmitc91516 6:dba3fbdfd5da 282 tppsArray[35] = new TouchPanelPageSelector(INJECTOR_METHOD_RIGHT_ARROW, GuiStruct_InjectorTempProfilePage_25);
jmitc91516 6:dba3fbdfd5da 283 tppsArray[36] = new TouchPanelPageSelector(INJECTOR_PROFILE_LEFT_ARROW, GuiStruct_InjectorMethodPage_Def);
jmitc91516 6:dba3fbdfd5da 284 tppsArray[37] = new TouchPanelPageSelector(INJECTOR_PROFILE_RIGHT_ARROW, GuiStruct_InjectorPage1_3);
jmitc91516 1:a5258871b33d 285
jmitc91516 5:aceac1035d71 286 tppsArray[38] = new TouchPanelPageSelector(RUNNING_PAGE1_RIGHT_ARROW, GuiStruct_RunningColumnPage_25);
jmitc91516 5:aceac1035d71 287 tppsArray[39] = new TouchPanelPageSelector(RUNNING_PAGE1_LEFT_ARROW, GuiStruct_RunningGasPage_28);
jmitc91516 5:aceac1035d71 288 tppsArray[40] = new TouchPanelPageSelector(RUNNING_COLUMN_RIGHT_ARROW, GuiStruct_RunningInjectorPage_26);
jmitc91516 5:aceac1035d71 289 tppsArray[41] = new TouchPanelPageSelector(RUNNING_COLUMN_LEFT_ARROW, GuiStruct_RunningPage1_7);
jmitc91516 5:aceac1035d71 290 tppsArray[42] = new TouchPanelPageSelector(RUNNING_INJECTOR_RIGHT_ARROW, GuiStruct_RunningInjectorProfilePage_Def);
jmitc91516 5:aceac1035d71 291 tppsArray[43] = new TouchPanelPageSelector(RUNNING_INJECTOR_LEFT_ARROW, GuiStruct_RunningColumnPage_25);
jmitc91516 5:aceac1035d71 292 tppsArray[44] = new TouchPanelPageSelector(RUNNING_INJECTOR_PROFILE_RIGHT_ARROW, GuiStruct_RunningDetectorPage_27);
jmitc91516 5:aceac1035d71 293 tppsArray[45] = new TouchPanelPageSelector(RUNNING_INJECTOR_PROFILE_LEFT_ARROW, GuiStruct_RunningInjectorPage_26);
jmitc91516 5:aceac1035d71 294 tppsArray[46] = new TouchPanelPageSelector(RUNNING_DETECTOR_RIGHT_ARROW, GuiStruct_RunningGasPage_28);
jmitc91516 5:aceac1035d71 295 tppsArray[47] = new TouchPanelPageSelector(RUNNING_DETECTOR_LEFT_ARROW, GuiStruct_RunningInjectorProfilePage_Def);
jmitc91516 5:aceac1035d71 296 tppsArray[48] = new TouchPanelPageSelector(RUNNING_GAS_RIGHT_ARROW, GuiStruct_RunningPage1_7);
jmitc91516 5:aceac1035d71 297 tppsArray[49] = new TouchPanelPageSelector(RUNNING_GAS_LEFT_ARROW, GuiStruct_RunningDetectorPage_27);
jmitc91516 1:a5258871b33d 298
jmitc91516 5:aceac1035d71 299 tppsArray[50] = new TouchPanelPageSelector(SETTINGS_TO_NETWORK_PARAMS_BUTTON, GuiStruct_EthernetParametersPage_50);
jmitc91516 5:aceac1035d71 300 tppsArray[51] = new TouchPanelPageSelector(NETWORK_PARAMS_RETURN_BUTTON, GuiStruct_SettingsPage_5);
jmitc91516 1:a5258871b33d 301
jmitc91516 5:aceac1035d71 302 tppsArray[52] = new TouchPanelPageSelector(SETTINGS_TO_SERVICING_PAGE_BUTTON, GuiStruct_EngineersLockPage_Def);
jmitc91516 5:aceac1035d71 303 tppsArray[53] = new TouchPanelPageSelector(SERVICING_PAGE_RETURN_BUTTON, GuiStruct_SettingsPage_5);
jmitc91516 1:a5258871b33d 304
jmitc91516 5:aceac1035d71 305 tppsArray[54] = new TouchPanelPageSelector(SERVICING_REQUIRED_PAGE_HOME_BUTTON, GuiStruct_HomePage_1);
jmitc91516 1:a5258871b33d 306
jmitc91516 5:aceac1035d71 307 tppsArray[55] = new TouchPanelPageSelector(COLUMN_SERVICING_AREA, GuiStruct_ColumnDHAutoCalibrationPage_Def);
jmitc91516 5:aceac1035d71 308 tppsArray[56] = new TouchPanelPageSelector(DETECTOR_SERVICING_AREA, GuiStruct_DetectorNudgeAndDampPage_0);
jmitc91516 5:aceac1035d71 309 tppsArray[57] = new TouchPanelPageSelector(INJECTOR_SERVICING_AREA, GuiStruct_InjectorNudgeAndDampPage_0);
jmitc91516 5:aceac1035d71 310 tppsArray[58] = new TouchPanelPageSelector(GAS_SERVICING_AREA, GuiStruct_GasCalibrationPage_Def);
jmitc91516 5:aceac1035d71 311 tppsArray[59] = new TouchPanelPageSelector(SERVICING_HOME, GuiStruct_ServicingHomePage_Def);
jmitc91516 1:a5258871b33d 312
jmitc91516 5:aceac1035d71 313 tppsArray[60] = new TouchPanelPageSelector(COLUMN_DH_AUTO_CALIB_LEFT_ARROW, GuiStruct_FanPowerPage_0);
jmitc91516 5:aceac1035d71 314 tppsArray[61] = new TouchPanelPageSelector(COLUMN_DH_AUTO_CALIB_RIGHT_ARROW, GuiStruct_ColumnDHManualCalibrationPage_Def);
jmitc91516 5:aceac1035d71 315 tppsArray[62] = new TouchPanelPageSelector(COLUMN_DH_MANUAL_CALIB_LEFT_ARROW, GuiStruct_ColumnDHAutoCalibrationPage_Def);
jmitc91516 5:aceac1035d71 316 tppsArray[63] = new TouchPanelPageSelector(COLUMN_DH_MANUAL_CALIB_RIGHT_ARROW, GuiStruct_ColumnDHSensorCalibration_Def);
jmitc91516 5:aceac1035d71 317 tppsArray[64] = new TouchPanelPageSelector(COLUMN_DH_SENSOR_CALIB_LEFT_ARROW, GuiStruct_ColumnDHManualCalibrationPage_Def);
jmitc91516 5:aceac1035d71 318 tppsArray[65] = new TouchPanelPageSelector(COLUMN_DH_SENSOR_CALIB_RIGHT_ARROW, GuiStruct_PSU_DAC_Page_Def);
jmitc91516 5:aceac1035d71 319 tppsArray[66] = new TouchPanelPageSelector(COLUMN_DH_PSU_DAC_LEFT_ARROW, GuiStruct_ColumnDHSensorCalibration_Def);
jmitc91516 5:aceac1035d71 320 tppsArray[67] = new TouchPanelPageSelector(COLUMN_DH_PSU_DAC_RIGHT_ARROW, GuiStruct_ColumnDHOvenFanPage_Def);
jmitc91516 5:aceac1035d71 321 tppsArray[68] = new TouchPanelPageSelector(COLUMN_OVEN_FAN_LEFT_ARROW, GuiStruct_PSU_DAC_Page_Def);
jmitc91516 5:aceac1035d71 322 tppsArray[69] = new TouchPanelPageSelector(COLUMN_OVEN_FAN_RIGHT_ARROW, GuiStruct_ColumnOvenNudgeAndDampPage_0);
jmitc91516 5:aceac1035d71 323 tppsArray[70] = new TouchPanelPageSelector(COLUMN_OVEN_NUDGE_AND_DAMP_LEFT_ARROW, GuiStruct_ColumnDHOvenFanPage_Def);
jmitc91516 5:aceac1035d71 324 tppsArray[71] = new TouchPanelPageSelector(COLUMN_OVEN_NUDGE_AND_DAMP_RIGHT_ARROW, GuiStruct_ColumnDHNudgeAndDampPage_0);
jmitc91516 5:aceac1035d71 325 tppsArray[72] = new TouchPanelPageSelector(COLUMN_DH_NUDGE_AND_DAMP_LEFT_ARROW, GuiStruct_ColumnOvenNudgeAndDampPage_0);
jmitc91516 5:aceac1035d71 326 tppsArray[73] = new TouchPanelPageSelector(COLUMN_DH_NUDGE_AND_DAMP_RIGHT_ARROW, GuiStruct_FanPowerPage_0);
jmitc91516 5:aceac1035d71 327 tppsArray[74] = new TouchPanelPageSelector(FAN_POWER_LEFT_ARROW, GuiStruct_ColumnDHNudgeAndDampPage_0);
jmitc91516 5:aceac1035d71 328 tppsArray[75] = new TouchPanelPageSelector(FAN_POWER_RIGHT_ARROW, GuiStruct_ColumnDHAutoCalibrationPage_Def);
jmitc91516 6:dba3fbdfd5da 329
jmitc91516 5:aceac1035d71 330 tppsArray[76] = new TouchPanelPageSelector(DETECTOR_NUDGE_AND_DAMP_LEFT_ARROW, GuiStruct_AuxiliaryNudgeAndDampPage_0);
jmitc91516 5:aceac1035d71 331 tppsArray[77] = new TouchPanelPageSelector(DETECTOR_NUDGE_AND_DAMP_RIGHT_ARROW, GuiStruct_AuxiliaryNudgeAndDampPage_0);
jmitc91516 5:aceac1035d71 332 tppsArray[78] = new TouchPanelPageSelector(AUXILIARY_NUDGE_AND_DAMP_LEFT_ARROW, GuiStruct_DetectorNudgeAndDampPage_0);
jmitc91516 5:aceac1035d71 333 tppsArray[79] = new TouchPanelPageSelector(AUXILIARY_NUDGE_AND_DAMP_RIGHT_ARROW, GuiStruct_DetectorNudgeAndDampPage_0);
jmitc91516 1:a5258871b33d 334
jmitc91516 5:aceac1035d71 335 tppsArray[80] = new TouchPanelPageSelector(GAS_CALIB_LEFT_ARROW, GuiStruct_GasChannelDACAndADCPage_Def);
jmitc91516 5:aceac1035d71 336 tppsArray[81] = new TouchPanelPageSelector(GAS_CALIB_RIGHT_ARROW, GuiStruct_GasBackPressureDACPage_Def);
jmitc91516 5:aceac1035d71 337 tppsArray[82] = new TouchPanelPageSelector(GAS_BACKPRESSURE_DAC_LEFT_ARROW, GuiStruct_GasCalibrationPage_Def);
jmitc91516 5:aceac1035d71 338 tppsArray[83] = new TouchPanelPageSelector(GAS_BACKPRESSURE_DAC_RIGHT_ARROW, GuiStruct_GasChannelDACAndADCPage_Def);
jmitc91516 5:aceac1035d71 339 tppsArray[84] = new TouchPanelPageSelector(GAS_CHANNEL_DAC_AND_ADC_LEFT_ARROW, GuiStruct_GasBackPressureDACPage_Def);
jmitc91516 5:aceac1035d71 340 tppsArray[85] = new TouchPanelPageSelector(GAS_CHANNEL_DAC_AND_ADC_RIGHT_ARROW, GuiStruct_GasCalibrationPage_Def);
jmitc91516 1:a5258871b33d 341
jmitc91516 5:aceac1035d71 342 tppsArray[86] = new TouchPanelPageSelector(SERVICING_PAGE_GC_CMDS_BUTTON, GuiStruct_DebugCommandsPage_Def);
jmitc91516 0:47c880c1463d 343 }
jmitc91516 1:a5258871b33d 344
jmitc91516 1:a5258871b33d 345 TouchPanelPageSelectors::~TouchPanelPageSelectors()
jmitc91516 1:a5258871b33d 346 {
jmitc91516 1:a5258871b33d 347 for (int i = 0; i < SELECTOR_COUNT; ++i) {
jmitc91516 1:a5258871b33d 348 if(tppsArray[i] != NULL) { // We may occasionally set some to NULL while testing new changes
jmitc91516 1:a5258871b33d 349 delete tppsArray[i];
jmitc91516 1:a5258871b33d 350 }
jmitc91516 1:a5258871b33d 351 }
jmitc91516 1:a5258871b33d 352 }
jmitc91516 1:a5258871b33d 353
jmitc91516 1:a5258871b33d 354 /*
jmitc91516 1:a5258871b33d 355 Given a touch area index, returns a pointer to the corresponding page selector,
jmitc91516 1:a5258871b33d 356 or NULL if that index has no page selector. If the pointer is not NULL, caller
jmitc91516 1:a5258871b33d 357 can then call 'GetPageNumber' on that page selector, to find out which page to display
jmitc91516 1:a5258871b33d 358 in response to the user touching that touch area. (If the pointer is NULL, that touch area
jmitc91516 1:a5258871b33d 359 does not select a new page.)
jmitc91516 1:a5258871b33d 360 */
jmitc91516 0:47c880c1463d 361 TouchPanelPageSelector* TouchPanelPageSelectors::GetTouchPanelPageSelector(int touchAreaIndex)
jmitc91516 0:47c880c1463d 362 {
jmitc91516 0:47c880c1463d 363 for (int i = 0; i < SELECTOR_COUNT; ++i) {
jmitc91516 1:a5258871b33d 364 if(tppsArray[i] != NULL) { // We may occasionally set some to NULL while testing new changes
jmitc91516 1:a5258871b33d 365 if( tppsArray[i]->GetIndex() == touchAreaIndex) {
jmitc91516 1:a5258871b33d 366 return tppsArray[i];
jmitc91516 1:a5258871b33d 367 }
jmitc91516 0:47c880c1463d 368 }
jmitc91516 0:47c880c1463d 369 }
jmitc91516 0:47c880c1463d 370
jmitc91516 0:47c880c1463d 371 // 'else' - not found
jmitc91516 0:47c880c1463d 372 return NULL;
jmitc91516 0:47c880c1463d 373 }
jmitc91516 1:a5258871b33d 374
jmitc91516 0:47c880c1463d 375
jmitc91516 1:a5258871b33d 376 /*
jmitc91516 1:a5258871b33d 377 Tells the caller which TouchPanelPageSelector they have - i.e. returns its index
jmitc91516 1:a5258871b33d 378 in our array, or -1 if we cannot find it. (This should be useful for debugging.)
jmitc91516 1:a5258871b33d 379
jmitc91516 1:a5258871b33d 380 Arguments: pointer to the TouchPanelPageSelector instance in question
jmitc91516 1:a5258871b33d 381
jmitc91516 1:a5258871b33d 382 Return code: its index in our array, or -1 if not found
jmitc91516 1:a5258871b33d 383 */
jmitc91516 1:a5258871b33d 384 int TouchPanelPageSelectors::GetTouchPanelPageSelectorIndex(TouchPanelPageSelector *tppsptr)
jmitc91516 1:a5258871b33d 385 {
jmitc91516 1:a5258871b33d 386 for (int i = 0; i < SELECTOR_COUNT; ++i) {
jmitc91516 1:a5258871b33d 387 if(tppsArray[i] == tppsptr) {
jmitc91516 1:a5258871b33d 388 return i;
jmitc91516 1:a5258871b33d 389 }
jmitc91516 1:a5258871b33d 390 }
jmitc91516 1:a5258871b33d 391
jmitc91516 1:a5258871b33d 392 // 'else' - not found
jmitc91516 1:a5258871b33d 393 return -1;
jmitc91516 1:a5258871b33d 394 }
jmitc91516 0:47c880c1463d 395