Repository for import to local machine

Dependencies:   DMBasicGUI DMSupport

Committer:
jmitc91516
Date:
Mon Jul 31 15:37:57 2017 +0000
Revision:
8:26e49e6955bd
Parent:
2:6e94a7fd1e37
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 #ifndef GCSTATUSANDFAULTCODES_H
jmitc91516 0:47c880c1463d 2 #define GCSTATUSANDFAULTCODES_H
jmitc91516 0:47c880c1463d 3
jmitc91516 2:6e94a7fd1e37 4 #include "GuiLib.h"
jmitc91516 2:6e94a7fd1e37 5
jmitc91516 1:a5258871b33d 6 /*
jmitc91516 1:a5258871b33d 7 Classes to deal with the GC state and fault codes, making them simpler to handle for the rest of this application.
jmitc91516 1:a5258871b33d 8
jmitc91516 1:a5258871b33d 9 The initial state and fault codes below are taken from the Nemesis 2 GC Control Protocol,
jmitc91516 1:a5258871b33d 10 version 1.0, dated 01/10/15. Note that the fault codes include those marked 'not used'.
jmitc91516 1:a5258871b33d 11
jmitc91516 1:a5258871b33d 12 The codes marked 'Version 102' are taken from the 500 Series GC Comunications Protocol,
jmitc91516 1:a5258871b33d 13 Version 1.0, dated 11/02/16. Until further notice, they should be used with all versions
jmitc91516 1:a5258871b33d 14 from 1.02 onwards (i.e. those that return "DWHO0102" or later in response to "QWHO").
jmitc91516 1:a5258871b33d 15
jmitc91516 1:a5258871b33d 16 */
jmitc91516 0:47c880c1463d 17
jmitc91516 1:a5258871b33d 18 // To use the 'Version 102' codes, uncomment this line:
jmitc91516 1:a5258871b33d 19 #define USE_VERSION_102
jmitc91516 1:a5258871b33d 20 // Comment out this line to reinstate the original codes.
jmitc91516 1:a5258871b33d 21
jmitc91516 1:a5258871b33d 22 enum GC_STATE {
jmitc91516 1:a5258871b33d 23 GC_STATE_IDLE = 0,
jmitc91516 1:a5258871b33d 24 GC_STATE_NOT_READY = 1,
jmitc91516 1:a5258871b33d 25 GC_STATE_EQUILIBRATING = 2,
jmitc91516 1:a5258871b33d 26
jmitc91516 1:a5258871b33d 27 // Start of 'GC is running' status codes
jmitc91516 1:a5258871b33d 28 GC_STATE_RUNNING_INITIAL_TIME = 4,
jmitc91516 1:a5258871b33d 29 GC_STATE_RAMPING_SEGMENT_1 = 5,
jmitc91516 1:a5258871b33d 30 GC_STATE_AT_UPPER_TEMP_SEGMENT_1 = 6,
jmitc91516 1:a5258871b33d 31 GC_STATE_RAMPING_SEGMENT_2 = 7,
jmitc91516 1:a5258871b33d 32 GC_STATE_AT_UPPER_TEMP_SEGMENT_2 = 8,
jmitc91516 1:a5258871b33d 33 GC_STATE_RAMPING_SEGMENT_3 = 9,
jmitc91516 1:a5258871b33d 34 GC_STATE_AT_UPPER_TEMP_SEGMENT_3 = 10,
jmitc91516 1:a5258871b33d 35 GC_STATE_RAMPING_SEGMENT_4 = 11,
jmitc91516 1:a5258871b33d 36 GC_STATE_AT_UPPER_TEMP_SEGMENT_4 = 12,
jmitc91516 1:a5258871b33d 37 GC_STATE_RAMPING_SEGMENT_5 = 13,
jmitc91516 1:a5258871b33d 38 GC_STATE_AT_UPPER_TEMP_SEGMENT_5 = 14,
jmitc91516 1:a5258871b33d 39
jmitc91516 1:a5258871b33d 40 GC_STATE_HOLDING = 15,
jmitc91516 1:a5258871b33d 41 GC_STATE_ABORTING = 16,
jmitc91516 1:a5258871b33d 42 GC_STATE_COOLING = 17,
jmitc91516 1:a5258871b33d 43 // End of 'GC is running' status codes
jmitc91516 1:a5258871b33d 44
jmitc91516 1:a5258871b33d 45 // Record the above
jmitc91516 1:a5258871b33d 46 GC_STATE_RUNNING_MINIMUM = GC_STATE_RUNNING_INITIAL_TIME,
jmitc91516 1:a5258871b33d 47 GC_STATE_RUNNING_MAXIMUM = GC_STATE_COOLING,
jmitc91516 1:a5258871b33d 48
jmitc91516 1:a5258871b33d 49 GC_STATE_READY_TO_PRE_RUN = 31,
jmitc91516 1:a5258871b33d 50 GC_STATE_PRE_RUNNING = 32,
jmitc91516 1:a5258871b33d 51 GC_STATE_READY_TO_RUN = 33,
jmitc91516 1:a5258871b33d 52
jmitc91516 1:a5258871b33d 53 GC_STATE_FAULTED = 99,
jmitc91516 1:a5258871b33d 54 };
jmitc91516 1:a5258871b33d 55
jmitc91516 1:a5258871b33d 56 enum GC_STATE_102 {
jmitc91516 1:a5258871b33d 57 GC_STATE_102_METHOD_IDLE = 0,
jmitc91516 1:a5258871b33d 58 GC_STATE_102_METHOD_EQUILIBRATING = 10,
jmitc91516 1:a5258871b33d 59 GC_STATE_102_METHOD_STABILISING = 20,
jmitc91516 1:a5258871b33d 60 GC_STATE_102_METHOD_WAIT_READY_IO = 30,
jmitc91516 1:a5258871b33d 61 GC_STATE_102_METHOD_READY_TO_RUN = 40,
jmitc91516 1:a5258871b33d 62 GC_STATE_102_METHOD_INIT_TIME = 50,
jmitc91516 1:a5258871b33d 63
jmitc91516 1:a5258871b33d 64 GC_STATE_102_METHOD_RAMPING_1 = 60,
jmitc91516 1:a5258871b33d 65 GC_STATE_102_METHOD_RAMPING_2 = 61,
jmitc91516 1:a5258871b33d 66 GC_STATE_102_METHOD_RAMPING_3 = 62,
jmitc91516 1:a5258871b33d 67 GC_STATE_102_METHOD_RAMPING_4 = 63,
jmitc91516 1:a5258871b33d 68 GC_STATE_102_METHOD_RAMPING_5 = 64,
jmitc91516 1:a5258871b33d 69 GC_STATE_102_METHOD_RAMPING_6 = 65,
jmitc91516 1:a5258871b33d 70 GC_STATE_102_METHOD_RAMPING_7 = 66,
jmitc91516 1:a5258871b33d 71 GC_STATE_102_METHOD_RAMPING_8 = 67,
jmitc91516 1:a5258871b33d 72 GC_STATE_102_METHOD_RAMPING_9 = 68,
jmitc91516 1:a5258871b33d 73 GC_STATE_102_METHOD_RAMPING_10 = 69,
jmitc91516 1:a5258871b33d 74
jmitc91516 1:a5258871b33d 75 GC_STATE_102_METHOD_HOLDING_1 = 70,
jmitc91516 1:a5258871b33d 76 GC_STATE_102_METHOD_HOLDING_2 = 71,
jmitc91516 1:a5258871b33d 77 GC_STATE_102_METHOD_HOLDING_3 = 72,
jmitc91516 1:a5258871b33d 78 GC_STATE_102_METHOD_HOLDING_4 = 73,
jmitc91516 1:a5258871b33d 79 GC_STATE_102_METHOD_HOLDING_5 = 74,
jmitc91516 1:a5258871b33d 80 GC_STATE_102_METHOD_HOLDING_6 = 75,
jmitc91516 1:a5258871b33d 81 GC_STATE_102_METHOD_HOLDING_7 = 76,
jmitc91516 1:a5258871b33d 82 GC_STATE_102_METHOD_HOLDING_8 = 77,
jmitc91516 1:a5258871b33d 83 GC_STATE_102_METHOD_HOLDING_9 = 78,
jmitc91516 1:a5258871b33d 84 GC_STATE_102_METHOD_HOLDING_10 = 79,
jmitc91516 1:a5258871b33d 85
jmitc91516 1:a5258871b33d 86 GC_STATE_102_METHOD_COOLING = 80,
jmitc91516 1:a5258871b33d 87 GC_STATE_102_METHOD_FAULTED = 99,
jmitc91516 1:a5258871b33d 88
jmitc91516 1:a5258871b33d 89 GC_STATE_102_METHOD_RUNNING_MINIMUM = GC_STATE_102_METHOD_INIT_TIME,
jmitc91516 1:a5258871b33d 90 GC_STATE_102_METHOD_RUNNING_MAXIMUM = GC_STATE_102_METHOD_HOLDING_10
jmitc91516 1:a5258871b33d 91 };
jmitc91516 1:a5258871b33d 92
jmitc91516 1:a5258871b33d 93 /*
jmitc91516 1:a5258871b33d 94 A simplified version of the above, appropriate for both pre-102 and post-102 versions.
jmitc91516 1:a5258871b33d 95
jmitc91516 1:a5258871b33d 96 The static function GCStateOrFaultCode::GetSimplifiedGCState converts the above codes
jmitc91516 1:a5258871b33d 97 to the simplified values below. Calling code can then ignore the USE_VERSION_102
jmitc91516 1:a5258871b33d 98 #define'd symbol.
jmitc91516 1:a5258871b33d 99 */
jmitc91516 1:a5258871b33d 100 typedef enum enumGCStateSimplified {
jmitc91516 1:a5258871b33d 101 GC_IDLE = 0,
jmitc91516 1:a5258871b33d 102 GC_EQUILIBRATING = 1,
jmitc91516 1:a5258871b33d 103 GC_STABILISING = 2,
jmitc91516 1:a5258871b33d 104 GC_WAIT_READY_IO = 3,
jmitc91516 1:a5258871b33d 105 GC_READY_TO_RUN = 4,
jmitc91516 1:a5258871b33d 106 GC_RUNNING = 5,
jmitc91516 1:a5258871b33d 107 GC_COOLING = 6,
jmitc91516 1:a5258871b33d 108 GC_FAULTED = 7,
jmitc91516 1:a5258871b33d 109 GC_STATE_SIMPLIFIED_COUNT = 8
jmitc91516 1:a5258871b33d 110 } GCStateSimplified;
jmitc91516 1:a5258871b33d 111
jmitc91516 1:a5258871b33d 112
jmitc91516 1:a5258871b33d 113 enum GC_FAULT {
jmitc91516 1:a5258871b33d 114 GC_FAULT_NO_ERROR = 0,
jmitc91516 1:a5258871b33d 115 GC_FAULT_EEPROM_FAILURE = 1,
jmitc91516 1:a5258871b33d 116 GC_FAULT_DOOR_OPEN_ERROR = 2,
jmitc91516 1:a5258871b33d 117 GC_FAULT_IRSENSOR_OPEN_ERROR = 3,
jmitc91516 1:a5258871b33d 118 GC_FAULT_IRSENSOR_SHORT_ERROR = 4,
jmitc91516 1:a5258871b33d 119 GC_FAULT_INJECTOR_PRT_OPEN_ERROR = 5,
jmitc91516 1:a5258871b33d 120 GC_FAULT_INJECTOR_PRT_SHORT_ERROR = 6,
jmitc91516 1:a5258871b33d 121 GC_FAULT_DETECTOR_PRT_OPEN_ERROR = 7,
jmitc91516 1:a5258871b33d 122 GC_FAULT_DETECTOR_PRT_SHORT_ERROR = 8,
jmitc91516 1:a5258871b33d 123
jmitc91516 1:a5258871b33d 124 GC_FAULT_NOT_USED_INJECTOR_COUPLING_PRT_OPEN_ERROR = 9,
jmitc91516 1:a5258871b33d 125 GC_FAULT_NOT_USED_INJECTOR_COUPLING_PRT_SHORT_ERROR = 10,
jmitc91516 1:a5258871b33d 126 GC_FAULT_NOT_USED_DETECTOR_COUPLING_PRT_OPEN_ERROR = 11,
jmitc91516 1:a5258871b33d 127 GC_FAULT_NOT_USED_DETECTOR_COUPLING_PRT_SHORT_ERROR = 12,
jmitc91516 1:a5258871b33d 128
jmitc91516 1:a5258871b33d 129 GC_FAULT_NOT_USED_13 = 13,
jmitc91516 1:a5258871b33d 130 GC_FAULT_NOT_USED_14 = 14,
jmitc91516 1:a5258871b33d 131
jmitc91516 1:a5258871b33d 132 GC_FAULT_VOLTAGE_REF_ERROR = 15,
jmitc91516 1:a5258871b33d 133 GC_FAULT_VOLTAGE_SENSOR_ERROR = 16,
jmitc91516 1:a5258871b33d 134
jmitc91516 1:a5258871b33d 135 GC_FAULT_COLUMN_OVER_TEMP_ERROR = 17,
jmitc91516 1:a5258871b33d 136 GC_FAULT_INJECTOR_OVER_TEMP_ERROR = 18,
jmitc91516 1:a5258871b33d 137 GC_FAULT_DETECTOR_OVER_TEMP_ERROR = 19,
jmitc91516 1:a5258871b33d 138
jmitc91516 1:a5258871b33d 139 GC_FAULT_NOT_USED_INJECTOR_COUPLING_OVER_TEMP_ERROR = 20,
jmitc91516 1:a5258871b33d 140 GC_FAULT_NOT_USED_DETECTOR_COUPLING_OVER_TEMP_ERROR = 21,
jmitc91516 1:a5258871b33d 141
jmitc91516 1:a5258871b33d 142 GC_FAULT_NOT_USED_22 = 22,
jmitc91516 1:a5258871b33d 143
jmitc91516 1:a5258871b33d 144 GC_FAULT_NOT_USED_COLUMN_NOT_INIT = 23,
jmitc91516 1:a5258871b33d 145 GC_FAULT_NOT_USED_COLUMN_INSERT_FAILED = 24,
jmitc91516 1:a5258871b33d 146
jmitc91516 1:a5258871b33d 147 GC_FAULT_I2C_NAK_ERROR = 25,
jmitc91516 1:a5258871b33d 148
jmitc91516 1:a5258871b33d 149 GC_FAULT_TWI_TIMEOUT_ERROR = 26,
jmitc91516 1:a5258871b33d 150 GC_FAULT_TWI_BUS_ERROR = 27,
jmitc91516 1:a5258871b33d 151 GC_FAULT_TWI_SLAW_NACK = 28,
jmitc91516 1:a5258871b33d 152 GC_FAULT_TWI_SLADATA_NACK = 29,
jmitc91516 1:a5258871b33d 153 GC_FAULT_TWI_SLAR_NACK = 30,
jmitc91516 1:a5258871b33d 154 GC_FAULT_TWI_ARBITRATION_LOST = 31,
jmitc91516 1:a5258871b33d 155 GC_FAULT_TWI_UNKNOWN_ERROR = 32,
jmitc91516 1:a5258871b33d 156
jmitc91516 1:a5258871b33d 157 GC_FAULT_TWI2_TIMEOUT_ERROR = 33,
jmitc91516 1:a5258871b33d 158 GC_FAULT_TWI2_BUS_ERROR = 34,
jmitc91516 1:a5258871b33d 159 GC_FAULT_TWI2_UNKNOWN_ERROR1 = 35,
jmitc91516 1:a5258871b33d 160 GC_FAULT_TWI2_UNKNOWN_ERROR2 = 36,
jmitc91516 1:a5258871b33d 161 };
jmitc91516 1:a5258871b33d 162
jmitc91516 1:a5258871b33d 163 enum GC_FAULT_102 {
jmitc91516 1:a5258871b33d 164 GC_FAULT_102_NO_ERROR = 0,
jmitc91516 1:a5258871b33d 165 GC_FAULT_102_EEPROM_FAILURE = 1,
jmitc91516 1:a5258871b33d 166 GC_FAULT_102_DOOR_OPEN_ERROR = 2,
jmitc91516 1:a5258871b33d 167
jmitc91516 1:a5258871b33d 168 GC_FAULT_102_COL_PRT_OPEN_ERROR = 3,
jmitc91516 1:a5258871b33d 169 GC_FAULT_102_COL_PRT_SHORT_ERROR = 4,
jmitc91516 1:a5258871b33d 170 GC_FAULT_102_INJ_PRT_OPEN_ERROR = 5,
jmitc91516 1:a5258871b33d 171 GC_FAULT_102_INJ_PRT_SHORT_ERROR = 6,
jmitc91516 1:a5258871b33d 172 GC_FAULT_102_DET_PRT_OPEN_ERROR = 7,
jmitc91516 1:a5258871b33d 173 GC_FAULT_102_DET_PRT_SHORT_ERROR = 8,
jmitc91516 1:a5258871b33d 174 GC_FAULT_102_AUX_PRT_OPEN_ERROR = 9,
jmitc91516 1:a5258871b33d 175 GC_FAULT_102_AUX_PRT_SHORT_ERROR = 10,
jmitc91516 1:a5258871b33d 176 GC_FAULT_102_TEMP4_PRT_OPEN_ERROR = 11,
jmitc91516 1:a5258871b33d 177 GC_FAULT_102_TEMP4_PRT_SHORT_ERROR = 12,
jmitc91516 1:a5258871b33d 178
jmitc91516 1:a5258871b33d 179 GC_FAULT_102_VOLTAGE_REF_ERROR = 13,
jmitc91516 1:a5258871b33d 180 GC_FAULT_102_VSENSOR_ERROR = 14,
jmitc91516 1:a5258871b33d 181
jmitc91516 1:a5258871b33d 182 GC_FAULT_102_COL_OVER_TEMP_ERROR = 15,
jmitc91516 1:a5258871b33d 183 GC_FAULT_102_INJ_OVER_TEMP_ERROR = 16,
jmitc91516 1:a5258871b33d 184 GC_FAULT_102_DET_OVER_TEMP_ERROR = 17,
jmitc91516 1:a5258871b33d 185 GC_FAULT_102_AUX_OVER_TEMP_ERROR = 18,
jmitc91516 1:a5258871b33d 186 GC_FAULT_102_TEMP4_OVER_TEMP_ERROR = 19,
jmitc91516 1:a5258871b33d 187
jmitc91516 1:a5258871b33d 188 GC_FAULT_102_TC_K_SHORT_ERROR = 20,
jmitc91516 1:a5258871b33d 189
jmitc91516 1:a5258871b33d 190 GC_FAULT_102_EPPC_NOTFITTED_ERROR = 25,
jmitc91516 1:a5258871b33d 191 };
jmitc91516 1:a5258871b33d 192
jmitc91516 1:a5258871b33d 193
jmitc91516 1:a5258871b33d 194 // This class simply contains an integer state or fault code, and an associated descriptive string
jmitc91516 0:47c880c1463d 195 class GCStateOrFaultCode
jmitc91516 0:47c880c1463d 196 {
jmitc91516 0:47c880c1463d 197 public:
jmitc91516 0:47c880c1463d 198 GCStateOrFaultCode(int theCodeNumber, char* theCodeString);
jmitc91516 0:47c880c1463d 199
jmitc91516 0:47c880c1463d 200 int GetCodeNumber(void);
jmitc91516 0:47c880c1463d 201
jmitc91516 0:47c880c1463d 202 void GetCodeString(char *buff);
jmitc91516 0:47c880c1463d 203
jmitc91516 1:a5258871b33d 204 static GCStateSimplified GetSimplifiedGCState(int rawGCState);
jmitc91516 1:a5258871b33d 205
jmitc91516 2:6e94a7fd1e37 206 static void DrawTextOnRunButton(char* text, GuiConst_INTCOLOR foreColor, GuiConst_INTCOLOR backColor, GuiConst_INT16U fontNo);
jmitc91516 2:6e94a7fd1e37 207
jmitc91516 2:6e94a7fd1e37 208 static void DrawSimplifiedStateMessageOnHomePageRunButton(GCStateSimplified simplifiedState);
jmitc91516 2:6e94a7fd1e37 209
jmitc91516 0:47c880c1463d 210 private:
jmitc91516 0:47c880c1463d 211 int codeNumber;
jmitc91516 0:47c880c1463d 212 char codeString[100];
jmitc91516 0:47c880c1463d 213 };
jmitc91516 0:47c880c1463d 214
jmitc91516 0:47c880c1463d 215
jmitc91516 1:a5258871b33d 216 // This class contains arrays of GC state and fault codes, each with its associated descriptive string.
jmitc91516 1:a5258871b33d 217 // It allows the caller to obtain the descriptive string for any valid state or fault code.
jmitc91516 0:47c880c1463d 218 class GCStateAndFaultCodes
jmitc91516 0:47c880c1463d 219 {
jmitc91516 0:47c880c1463d 220 public:
jmitc91516 0:47c880c1463d 221 GCStateAndFaultCodes();
jmitc91516 0:47c880c1463d 222 ~GCStateAndFaultCodes();
jmitc91516 0:47c880c1463d 223
jmitc91516 0:47c880c1463d 224 bool GetStateCodeString(int stateCode, char *buff);
jmitc91516 0:47c880c1463d 225
jmitc91516 2:6e94a7fd1e37 226 bool GetSimplifiedStateCodeString(GCStateSimplified simplifiedState, char *buff);
jmitc91516 1:a5258871b33d 227
jmitc91516 0:47c880c1463d 228 bool GetFaultCodeString(int faultCode, char *buff);
jmitc91516 0:47c880c1463d 229
jmitc91516 0:47c880c1463d 230 private:
jmitc91516 1:a5258871b33d 231 #ifdef USE_VERSION_102
jmitc91516 1:a5258871b33d 232 enum StateCodeCount { STATE_CODE_COUNT = 28 };
jmitc91516 1:a5258871b33d 233 #else
jmitc91516 0:47c880c1463d 234 enum StateCodeCount { STATE_CODE_COUNT = 21 };
jmitc91516 1:a5258871b33d 235 #endif
jmitc91516 0:47c880c1463d 236 GCStateOrFaultCode *stateCodeArray[STATE_CODE_COUNT];
jmitc91516 1:a5258871b33d 237
jmitc91516 1:a5258871b33d 238 GCStateOrFaultCode *simplifiedStateCodeArray[GC_STATE_SIMPLIFIED_COUNT];
jmitc91516 0:47c880c1463d 239
jmitc91516 1:a5258871b33d 240 #ifdef USE_VERSION_102
jmitc91516 1:a5258871b33d 241 enum FaultCodeCount { FAULT_CODE_COUNT = 22 };
jmitc91516 1:a5258871b33d 242 #else
jmitc91516 0:47c880c1463d 243 enum FaultCodeCount { FAULT_CODE_COUNT = 37 };
jmitc91516 1:a5258871b33d 244 #endif
jmitc91516 0:47c880c1463d 245 GCStateOrFaultCode *faultCodeArray[FAULT_CODE_COUNT];
jmitc91516 0:47c880c1463d 246 };
jmitc91516 0:47c880c1463d 247
jmitc91516 0:47c880c1463d 248 #endif // GCSTATUSANDFAULTCODES_H