Repository for import to local machine
Dependencies: DMBasicGUI DMSupport
TouchPanelPageSelector.cpp@8:26e49e6955bd, 2017-07-31 (annotated)
- 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?
User | Revision | Line number | New 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 |