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.
Dependencies: DMBasicGUI DMSupport
GCStateAndFaultCodes.h
00001 #ifndef GCSTATUSANDFAULTCODES_H 00002 #define GCSTATUSANDFAULTCODES_H 00003 00004 #include "GuiLib.h" 00005 00006 /* 00007 Classes to deal with the GC state and fault codes, making them simpler to handle for the rest of this application. 00008 00009 The initial state and fault codes below are taken from the Nemesis 2 GC Control Protocol, 00010 version 1.0, dated 01/10/15. Note that the fault codes include those marked 'not used'. 00011 00012 The codes marked 'Version 102' are taken from the 500 Series GC Comunications Protocol, 00013 Version 1.0, dated 11/02/16. Until further notice, they should be used with all versions 00014 from 1.02 onwards (i.e. those that return "DWHO0102" or later in response to "QWHO"). 00015 00016 */ 00017 00018 // To use the 'Version 102' codes, uncomment this line: 00019 #define USE_VERSION_102 00020 // Comment out this line to reinstate the original codes. 00021 00022 enum GC_STATE { 00023 GC_STATE_IDLE = 0, 00024 GC_STATE_NOT_READY = 1, 00025 GC_STATE_EQUILIBRATING = 2, 00026 00027 // Start of 'GC is running' status codes 00028 GC_STATE_RUNNING_INITIAL_TIME = 4, 00029 GC_STATE_RAMPING_SEGMENT_1 = 5, 00030 GC_STATE_AT_UPPER_TEMP_SEGMENT_1 = 6, 00031 GC_STATE_RAMPING_SEGMENT_2 = 7, 00032 GC_STATE_AT_UPPER_TEMP_SEGMENT_2 = 8, 00033 GC_STATE_RAMPING_SEGMENT_3 = 9, 00034 GC_STATE_AT_UPPER_TEMP_SEGMENT_3 = 10, 00035 GC_STATE_RAMPING_SEGMENT_4 = 11, 00036 GC_STATE_AT_UPPER_TEMP_SEGMENT_4 = 12, 00037 GC_STATE_RAMPING_SEGMENT_5 = 13, 00038 GC_STATE_AT_UPPER_TEMP_SEGMENT_5 = 14, 00039 00040 GC_STATE_HOLDING = 15, 00041 GC_STATE_ABORTING = 16, 00042 GC_STATE_COOLING = 17, 00043 // End of 'GC is running' status codes 00044 00045 // Record the above 00046 GC_STATE_RUNNING_MINIMUM = GC_STATE_RUNNING_INITIAL_TIME, 00047 GC_STATE_RUNNING_MAXIMUM = GC_STATE_COOLING, 00048 00049 GC_STATE_READY_TO_PRE_RUN = 31, 00050 GC_STATE_PRE_RUNNING = 32, 00051 GC_STATE_READY_TO_RUN = 33, 00052 00053 GC_STATE_FAULTED = 99, 00054 }; 00055 00056 enum GC_STATE_102 { 00057 GC_STATE_102_METHOD_IDLE = 0, 00058 GC_STATE_102_METHOD_EQUILIBRATING = 10, 00059 GC_STATE_102_METHOD_STABILISING = 20, 00060 GC_STATE_102_METHOD_WAIT_READY_IO = 30, 00061 GC_STATE_102_METHOD_READY_TO_RUN = 40, 00062 GC_STATE_102_METHOD_INIT_TIME = 50, 00063 00064 GC_STATE_102_METHOD_RAMPING_1 = 60, 00065 GC_STATE_102_METHOD_RAMPING_2 = 61, 00066 GC_STATE_102_METHOD_RAMPING_3 = 62, 00067 GC_STATE_102_METHOD_RAMPING_4 = 63, 00068 GC_STATE_102_METHOD_RAMPING_5 = 64, 00069 GC_STATE_102_METHOD_RAMPING_6 = 65, 00070 GC_STATE_102_METHOD_RAMPING_7 = 66, 00071 GC_STATE_102_METHOD_RAMPING_8 = 67, 00072 GC_STATE_102_METHOD_RAMPING_9 = 68, 00073 GC_STATE_102_METHOD_RAMPING_10 = 69, 00074 00075 GC_STATE_102_METHOD_HOLDING_1 = 70, 00076 GC_STATE_102_METHOD_HOLDING_2 = 71, 00077 GC_STATE_102_METHOD_HOLDING_3 = 72, 00078 GC_STATE_102_METHOD_HOLDING_4 = 73, 00079 GC_STATE_102_METHOD_HOLDING_5 = 74, 00080 GC_STATE_102_METHOD_HOLDING_6 = 75, 00081 GC_STATE_102_METHOD_HOLDING_7 = 76, 00082 GC_STATE_102_METHOD_HOLDING_8 = 77, 00083 GC_STATE_102_METHOD_HOLDING_9 = 78, 00084 GC_STATE_102_METHOD_HOLDING_10 = 79, 00085 00086 GC_STATE_102_METHOD_COOLING = 80, 00087 GC_STATE_102_METHOD_FAULTED = 99, 00088 00089 GC_STATE_102_METHOD_RUNNING_MINIMUM = GC_STATE_102_METHOD_INIT_TIME, 00090 GC_STATE_102_METHOD_RUNNING_MAXIMUM = GC_STATE_102_METHOD_HOLDING_10 00091 }; 00092 00093 /* 00094 A simplified version of the above, appropriate for both pre-102 and post-102 versions. 00095 00096 The static function GCStateOrFaultCode::GetSimplifiedGCState converts the above codes 00097 to the simplified values below. Calling code can then ignore the USE_VERSION_102 00098 #define'd symbol. 00099 */ 00100 typedef enum enumGCStateSimplified { 00101 GC_IDLE = 0, 00102 GC_EQUILIBRATING = 1, 00103 GC_STABILISING = 2, 00104 GC_WAIT_READY_IO = 3, 00105 GC_READY_TO_RUN = 4, 00106 GC_RUNNING = 5, 00107 GC_COOLING = 6, 00108 GC_FAULTED = 7, 00109 GC_STATE_SIMPLIFIED_COUNT = 8 00110 } GCStateSimplified; 00111 00112 00113 enum GC_FAULT { 00114 GC_FAULT_NO_ERROR = 0, 00115 GC_FAULT_EEPROM_FAILURE = 1, 00116 GC_FAULT_DOOR_OPEN_ERROR = 2, 00117 GC_FAULT_IRSENSOR_OPEN_ERROR = 3, 00118 GC_FAULT_IRSENSOR_SHORT_ERROR = 4, 00119 GC_FAULT_INJECTOR_PRT_OPEN_ERROR = 5, 00120 GC_FAULT_INJECTOR_PRT_SHORT_ERROR = 6, 00121 GC_FAULT_DETECTOR_PRT_OPEN_ERROR = 7, 00122 GC_FAULT_DETECTOR_PRT_SHORT_ERROR = 8, 00123 00124 GC_FAULT_NOT_USED_INJECTOR_COUPLING_PRT_OPEN_ERROR = 9, 00125 GC_FAULT_NOT_USED_INJECTOR_COUPLING_PRT_SHORT_ERROR = 10, 00126 GC_FAULT_NOT_USED_DETECTOR_COUPLING_PRT_OPEN_ERROR = 11, 00127 GC_FAULT_NOT_USED_DETECTOR_COUPLING_PRT_SHORT_ERROR = 12, 00128 00129 GC_FAULT_NOT_USED_13 = 13, 00130 GC_FAULT_NOT_USED_14 = 14, 00131 00132 GC_FAULT_VOLTAGE_REF_ERROR = 15, 00133 GC_FAULT_VOLTAGE_SENSOR_ERROR = 16, 00134 00135 GC_FAULT_COLUMN_OVER_TEMP_ERROR = 17, 00136 GC_FAULT_INJECTOR_OVER_TEMP_ERROR = 18, 00137 GC_FAULT_DETECTOR_OVER_TEMP_ERROR = 19, 00138 00139 GC_FAULT_NOT_USED_INJECTOR_COUPLING_OVER_TEMP_ERROR = 20, 00140 GC_FAULT_NOT_USED_DETECTOR_COUPLING_OVER_TEMP_ERROR = 21, 00141 00142 GC_FAULT_NOT_USED_22 = 22, 00143 00144 GC_FAULT_NOT_USED_COLUMN_NOT_INIT = 23, 00145 GC_FAULT_NOT_USED_COLUMN_INSERT_FAILED = 24, 00146 00147 GC_FAULT_I2C_NAK_ERROR = 25, 00148 00149 GC_FAULT_TWI_TIMEOUT_ERROR = 26, 00150 GC_FAULT_TWI_BUS_ERROR = 27, 00151 GC_FAULT_TWI_SLAW_NACK = 28, 00152 GC_FAULT_TWI_SLADATA_NACK = 29, 00153 GC_FAULT_TWI_SLAR_NACK = 30, 00154 GC_FAULT_TWI_ARBITRATION_LOST = 31, 00155 GC_FAULT_TWI_UNKNOWN_ERROR = 32, 00156 00157 GC_FAULT_TWI2_TIMEOUT_ERROR = 33, 00158 GC_FAULT_TWI2_BUS_ERROR = 34, 00159 GC_FAULT_TWI2_UNKNOWN_ERROR1 = 35, 00160 GC_FAULT_TWI2_UNKNOWN_ERROR2 = 36, 00161 }; 00162 00163 enum GC_FAULT_102 { 00164 GC_FAULT_102_NO_ERROR = 0, 00165 GC_FAULT_102_EEPROM_FAILURE = 1, 00166 GC_FAULT_102_DOOR_OPEN_ERROR = 2, 00167 00168 GC_FAULT_102_COL_PRT_OPEN_ERROR = 3, 00169 GC_FAULT_102_COL_PRT_SHORT_ERROR = 4, 00170 GC_FAULT_102_INJ_PRT_OPEN_ERROR = 5, 00171 GC_FAULT_102_INJ_PRT_SHORT_ERROR = 6, 00172 GC_FAULT_102_DET_PRT_OPEN_ERROR = 7, 00173 GC_FAULT_102_DET_PRT_SHORT_ERROR = 8, 00174 GC_FAULT_102_AUX_PRT_OPEN_ERROR = 9, 00175 GC_FAULT_102_AUX_PRT_SHORT_ERROR = 10, 00176 GC_FAULT_102_TEMP4_PRT_OPEN_ERROR = 11, 00177 GC_FAULT_102_TEMP4_PRT_SHORT_ERROR = 12, 00178 00179 GC_FAULT_102_VOLTAGE_REF_ERROR = 13, 00180 GC_FAULT_102_VSENSOR_ERROR = 14, 00181 00182 GC_FAULT_102_COL_OVER_TEMP_ERROR = 15, 00183 GC_FAULT_102_INJ_OVER_TEMP_ERROR = 16, 00184 GC_FAULT_102_DET_OVER_TEMP_ERROR = 17, 00185 GC_FAULT_102_AUX_OVER_TEMP_ERROR = 18, 00186 GC_FAULT_102_TEMP4_OVER_TEMP_ERROR = 19, 00187 00188 GC_FAULT_102_TC_K_SHORT_ERROR = 20, 00189 00190 GC_FAULT_102_EPPC_NOTFITTED_ERROR = 25, 00191 }; 00192 00193 00194 // This class simply contains an integer state or fault code, and an associated descriptive string 00195 class GCStateOrFaultCode 00196 { 00197 public: 00198 GCStateOrFaultCode(int theCodeNumber, char* theCodeString); 00199 00200 int GetCodeNumber(void); 00201 00202 void GetCodeString(char *buff); 00203 00204 static GCStateSimplified GetSimplifiedGCState(int rawGCState); 00205 00206 static void DrawTextOnRunButton(char* text, GuiConst_INTCOLOR foreColor, GuiConst_INTCOLOR backColor, GuiConst_INT16U fontNo); 00207 00208 static void DrawSimplifiedStateMessageOnHomePageRunButton(GCStateSimplified simplifiedState); 00209 00210 private: 00211 int codeNumber; 00212 char codeString[100]; 00213 }; 00214 00215 00216 // This class contains arrays of GC state and fault codes, each with its associated descriptive string. 00217 // It allows the caller to obtain the descriptive string for any valid state or fault code. 00218 class GCStateAndFaultCodes 00219 { 00220 public: 00221 GCStateAndFaultCodes(); 00222 ~GCStateAndFaultCodes(); 00223 00224 bool GetStateCodeString(int stateCode, char *buff); 00225 00226 bool GetSimplifiedStateCodeString(GCStateSimplified simplifiedState, char *buff); 00227 00228 bool GetFaultCodeString(int faultCode, char *buff); 00229 00230 private: 00231 #ifdef USE_VERSION_102 00232 enum StateCodeCount { STATE_CODE_COUNT = 28 }; 00233 #else 00234 enum StateCodeCount { STATE_CODE_COUNT = 21 }; 00235 #endif 00236 GCStateOrFaultCode *stateCodeArray[STATE_CODE_COUNT]; 00237 00238 GCStateOrFaultCode *simplifiedStateCodeArray[GC_STATE_SIMPLIFIED_COUNT]; 00239 00240 #ifdef USE_VERSION_102 00241 enum FaultCodeCount { FAULT_CODE_COUNT = 22 }; 00242 #else 00243 enum FaultCodeCount { FAULT_CODE_COUNT = 37 }; 00244 #endif 00245 GCStateOrFaultCode *faultCodeArray[FAULT_CODE_COUNT]; 00246 }; 00247 00248 #endif // GCSTATUSANDFAULTCODES_H
Generated on Tue Jul 19 2022 00:31:06 by
1.7.2