John Mitchell / lpc4088_displaymodule_GC500_2_5inch

Dependencies:   DMBasicGUI DMSupport

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers GCStateAndFaultCodes.h Source File

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