Repository for import to local machine
Dependencies: DMBasicGUI DMSupport
GCStateAndFaultCodes.cpp@0:47c880c1463d, 2016-01-13 (annotated)
- Committer:
- jmitc91516
- Date:
- Wed Jan 13 13:17:05 2016 +0000
- Revision:
- 0:47c880c1463d
- Child:
- 1:a5258871b33d
First revision of 5 inch display version of GC500_2. Dated 13 Jan 2016
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jmitc91516 | 0:47c880c1463d | 1 | #include "GCStateAndFaultCodes.h" |
jmitc91516 | 0:47c880c1463d | 2 | |
jmitc91516 | 0:47c880c1463d | 3 | #include <string.h> |
jmitc91516 | 0:47c880c1463d | 4 | |
jmitc91516 | 0:47c880c1463d | 5 | /* |
jmitc91516 | 0:47c880c1463d | 6 | Classes that match state or fault code integer values to the corresponding strings |
jmitc91516 | 0:47c880c1463d | 7 | */ |
jmitc91516 | 0:47c880c1463d | 8 | |
jmitc91516 | 0:47c880c1463d | 9 | GCStateOrFaultCode::GCStateOrFaultCode(int theCodeNumber, char* theCodeString) |
jmitc91516 | 0:47c880c1463d | 10 | { |
jmitc91516 | 0:47c880c1463d | 11 | codeNumber = theCodeNumber; |
jmitc91516 | 0:47c880c1463d | 12 | |
jmitc91516 | 0:47c880c1463d | 13 | strcpy(codeString, theCodeString); |
jmitc91516 | 0:47c880c1463d | 14 | } |
jmitc91516 | 0:47c880c1463d | 15 | |
jmitc91516 | 0:47c880c1463d | 16 | int GCStateOrFaultCode::GetCodeNumber(void) |
jmitc91516 | 0:47c880c1463d | 17 | { |
jmitc91516 | 0:47c880c1463d | 18 | return codeNumber; |
jmitc91516 | 0:47c880c1463d | 19 | } |
jmitc91516 | 0:47c880c1463d | 20 | |
jmitc91516 | 0:47c880c1463d | 21 | void GCStateOrFaultCode::GetCodeString(char *buff) |
jmitc91516 | 0:47c880c1463d | 22 | { |
jmitc91516 | 0:47c880c1463d | 23 | strcpy(buff, codeString); |
jmitc91516 | 0:47c880c1463d | 24 | } |
jmitc91516 | 0:47c880c1463d | 25 | |
jmitc91516 | 0:47c880c1463d | 26 | |
jmitc91516 | 0:47c880c1463d | 27 | GCStateAndFaultCodes::GCStateAndFaultCodes() |
jmitc91516 | 0:47c880c1463d | 28 | { |
jmitc91516 | 0:47c880c1463d | 29 | // The state and fault codes below are taken from the Nemesis 2 GC Control Protocol, |
jmitc91516 | 0:47c880c1463d | 30 | // version 1.0, dated 01/10/15. Note that the fault codes include those marked 'not used'. |
jmitc91516 | 0:47c880c1463d | 31 | |
jmitc91516 | 0:47c880c1463d | 32 | |
jmitc91516 | 0:47c880c1463d | 33 | // First - the state codes |
jmitc91516 | 0:47c880c1463d | 34 | |
jmitc91516 | 0:47c880c1463d | 35 | stateCodeArray[0] = new GCStateOrFaultCode(0, "Idle"); |
jmitc91516 | 0:47c880c1463d | 36 | stateCodeArray[1] = new GCStateOrFaultCode(1, "Not Ready"); |
jmitc91516 | 0:47c880c1463d | 37 | stateCodeArray[2] = new GCStateOrFaultCode(2, "Equilibrating"); |
jmitc91516 | 0:47c880c1463d | 38 | stateCodeArray[3] = new GCStateOrFaultCode(4, "Running initial time"); |
jmitc91516 | 0:47c880c1463d | 39 | |
jmitc91516 | 0:47c880c1463d | 40 | stateCodeArray[4] = new GCStateOrFaultCode(5, "Ramping segment 1"); |
jmitc91516 | 0:47c880c1463d | 41 | stateCodeArray[5] = new GCStateOrFaultCode(6, "At upper temp segment 1"); |
jmitc91516 | 0:47c880c1463d | 42 | stateCodeArray[6] = new GCStateOrFaultCode(7, "Ramping segment 2"); |
jmitc91516 | 0:47c880c1463d | 43 | stateCodeArray[7] = new GCStateOrFaultCode(8, "At upper temp segment 2"); |
jmitc91516 | 0:47c880c1463d | 44 | stateCodeArray[8] = new GCStateOrFaultCode(9, "Ramping segment 3"); |
jmitc91516 | 0:47c880c1463d | 45 | stateCodeArray[9] = new GCStateOrFaultCode(10, "At upper temp segment 3"); |
jmitc91516 | 0:47c880c1463d | 46 | stateCodeArray[10] = new GCStateOrFaultCode(11, "Ramping segment 4"); |
jmitc91516 | 0:47c880c1463d | 47 | stateCodeArray[11] = new GCStateOrFaultCode(12, "At upper temp segment 4"); |
jmitc91516 | 0:47c880c1463d | 48 | stateCodeArray[12] = new GCStateOrFaultCode(13, "Ramping segment 5"); |
jmitc91516 | 0:47c880c1463d | 49 | stateCodeArray[13] = new GCStateOrFaultCode(14, "At upper temp segment 5"); |
jmitc91516 | 0:47c880c1463d | 50 | |
jmitc91516 | 0:47c880c1463d | 51 | stateCodeArray[14] = new GCStateOrFaultCode(15, "Holding"); |
jmitc91516 | 0:47c880c1463d | 52 | stateCodeArray[15] = new GCStateOrFaultCode(16, "Aborting"); |
jmitc91516 | 0:47c880c1463d | 53 | stateCodeArray[16] = new GCStateOrFaultCode(17, "Cooling"); |
jmitc91516 | 0:47c880c1463d | 54 | |
jmitc91516 | 0:47c880c1463d | 55 | stateCodeArray[17] = new GCStateOrFaultCode(31, "Ready to pre-run"); |
jmitc91516 | 0:47c880c1463d | 56 | stateCodeArray[18] = new GCStateOrFaultCode(32, "Pre-running"); |
jmitc91516 | 0:47c880c1463d | 57 | stateCodeArray[19] = new GCStateOrFaultCode(33, "Ready to run"); |
jmitc91516 | 0:47c880c1463d | 58 | |
jmitc91516 | 0:47c880c1463d | 59 | stateCodeArray[20] = new GCStateOrFaultCode(99, "Faulted"); |
jmitc91516 | 0:47c880c1463d | 60 | |
jmitc91516 | 0:47c880c1463d | 61 | |
jmitc91516 | 0:47c880c1463d | 62 | // Now the fault codes - these only apply if the state is 99, "Faulted" |
jmitc91516 | 0:47c880c1463d | 63 | |
jmitc91516 | 0:47c880c1463d | 64 | faultCodeArray[0] = new GCStateOrFaultCode(0, "No error"); |
jmitc91516 | 0:47c880c1463d | 65 | faultCodeArray[1] = new GCStateOrFaultCode(1, "EEPROM failure"); |
jmitc91516 | 0:47c880c1463d | 66 | faultCodeArray[2] = new GCStateOrFaultCode(2, "Door open"); |
jmitc91516 | 0:47c880c1463d | 67 | faultCodeArray[3] = new GCStateOrFaultCode(3, "IRsensor open"); |
jmitc91516 | 0:47c880c1463d | 68 | faultCodeArray[4] = new GCStateOrFaultCode(4, "IRsensor short"); |
jmitc91516 | 0:47c880c1463d | 69 | faultCodeArray[5] = new GCStateOrFaultCode(5, "Injector PRT open"); |
jmitc91516 | 0:47c880c1463d | 70 | faultCodeArray[6] = new GCStateOrFaultCode(6, "Injector PRT short"); |
jmitc91516 | 0:47c880c1463d | 71 | faultCodeArray[7] = new GCStateOrFaultCode(7, "Detector PRT open"); |
jmitc91516 | 0:47c880c1463d | 72 | faultCodeArray[8] = new GCStateOrFaultCode(8, "Detector PRT short"); |
jmitc91516 | 0:47c880c1463d | 73 | |
jmitc91516 | 0:47c880c1463d | 74 | faultCodeArray[9] = new GCStateOrFaultCode(9, "(Not used): Injector coupling PRT open"); |
jmitc91516 | 0:47c880c1463d | 75 | faultCodeArray[10] = new GCStateOrFaultCode(10, "(Not used): Injector coupling PRT short"); |
jmitc91516 | 0:47c880c1463d | 76 | faultCodeArray[11] = new GCStateOrFaultCode(11, "(Not used): Detector coupling PRT open"); |
jmitc91516 | 0:47c880c1463d | 77 | faultCodeArray[12] = new GCStateOrFaultCode(12, "(Not used): Detector coupling PRT short"); |
jmitc91516 | 0:47c880c1463d | 78 | |
jmitc91516 | 0:47c880c1463d | 79 | faultCodeArray[13] = new GCStateOrFaultCode(13, "(Fault code 13, not used)"); |
jmitc91516 | 0:47c880c1463d | 80 | faultCodeArray[14] = new GCStateOrFaultCode(14, "(Fault code 14, not used)"); |
jmitc91516 | 0:47c880c1463d | 81 | |
jmitc91516 | 0:47c880c1463d | 82 | faultCodeArray[15] = new GCStateOrFaultCode(15, "Voltage ref error"); |
jmitc91516 | 0:47c880c1463d | 83 | faultCodeArray[16] = new GCStateOrFaultCode(16, "Voltage sensor error"); |
jmitc91516 | 0:47c880c1463d | 84 | |
jmitc91516 | 0:47c880c1463d | 85 | faultCodeArray[17] = new GCStateOrFaultCode(17, "Column over temp error"); |
jmitc91516 | 0:47c880c1463d | 86 | faultCodeArray[18] = new GCStateOrFaultCode(18, "Injector over temp error"); |
jmitc91516 | 0:47c880c1463d | 87 | faultCodeArray[19] = new GCStateOrFaultCode(19, "Detector over temp error"); |
jmitc91516 | 0:47c880c1463d | 88 | |
jmitc91516 | 0:47c880c1463d | 89 | faultCodeArray[20] = new GCStateOrFaultCode(20, "(Not used): Injector coupling over temp error"); |
jmitc91516 | 0:47c880c1463d | 90 | faultCodeArray[21] = new GCStateOrFaultCode(21, "(Not used): Detector coupling over temp error"); |
jmitc91516 | 0:47c880c1463d | 91 | |
jmitc91516 | 0:47c880c1463d | 92 | faultCodeArray[22] = new GCStateOrFaultCode(22, "(Fault code 22, not used)"); |
jmitc91516 | 0:47c880c1463d | 93 | |
jmitc91516 | 0:47c880c1463d | 94 | faultCodeArray[23] = new GCStateOrFaultCode(23, "(Not used): Column not init"); |
jmitc91516 | 0:47c880c1463d | 95 | faultCodeArray[24] = new GCStateOrFaultCode(24, "(Not used): Column insert failed"); |
jmitc91516 | 0:47c880c1463d | 96 | |
jmitc91516 | 0:47c880c1463d | 97 | faultCodeArray[25] = new GCStateOrFaultCode(25, "I2C NAK error"); |
jmitc91516 | 0:47c880c1463d | 98 | |
jmitc91516 | 0:47c880c1463d | 99 | faultCodeArray[26] = new GCStateOrFaultCode(26, "TWI timeout error"); |
jmitc91516 | 0:47c880c1463d | 100 | faultCodeArray[27] = new GCStateOrFaultCode(27, "TWI bus error"); |
jmitc91516 | 0:47c880c1463d | 101 | faultCodeArray[28] = new GCStateOrFaultCode(28, "TWI SLAW NACK"); |
jmitc91516 | 0:47c880c1463d | 102 | faultCodeArray[29] = new GCStateOrFaultCode(29, "TWI SLADATA NACK"); |
jmitc91516 | 0:47c880c1463d | 103 | faultCodeArray[30] = new GCStateOrFaultCode(30, "TWI SLAR NACK"); |
jmitc91516 | 0:47c880c1463d | 104 | faultCodeArray[31] = new GCStateOrFaultCode(31, "TWI arbitration lost"); |
jmitc91516 | 0:47c880c1463d | 105 | faultCodeArray[32] = new GCStateOrFaultCode(32, "TWI unknown error"); |
jmitc91516 | 0:47c880c1463d | 106 | |
jmitc91516 | 0:47c880c1463d | 107 | faultCodeArray[33] = new GCStateOrFaultCode(33, "TWI2 timeout error"); |
jmitc91516 | 0:47c880c1463d | 108 | faultCodeArray[34] = new GCStateOrFaultCode(34, "TWI2 bus error"); |
jmitc91516 | 0:47c880c1463d | 109 | faultCodeArray[35] = new GCStateOrFaultCode(35, "TWI2 unknown error 1"); |
jmitc91516 | 0:47c880c1463d | 110 | faultCodeArray[36] = new GCStateOrFaultCode(36, "TWI2 unknown error 2"); |
jmitc91516 | 0:47c880c1463d | 111 | } |
jmitc91516 | 0:47c880c1463d | 112 | |
jmitc91516 | 0:47c880c1463d | 113 | GCStateAndFaultCodes::~GCStateAndFaultCodes() |
jmitc91516 | 0:47c880c1463d | 114 | { |
jmitc91516 | 0:47c880c1463d | 115 | int i; |
jmitc91516 | 0:47c880c1463d | 116 | |
jmitc91516 | 0:47c880c1463d | 117 | for (i = 0; i < STATE_CODE_COUNT; ++i) { |
jmitc91516 | 0:47c880c1463d | 118 | delete stateCodeArray[i]; |
jmitc91516 | 0:47c880c1463d | 119 | } |
jmitc91516 | 0:47c880c1463d | 120 | |
jmitc91516 | 0:47c880c1463d | 121 | for (i = 0; i < FAULT_CODE_COUNT; ++i) { |
jmitc91516 | 0:47c880c1463d | 122 | delete faultCodeArray[i]; |
jmitc91516 | 0:47c880c1463d | 123 | } |
jmitc91516 | 0:47c880c1463d | 124 | } |
jmitc91516 | 0:47c880c1463d | 125 | |
jmitc91516 | 0:47c880c1463d | 126 | bool GCStateAndFaultCodes::GetStateCodeString(int stateCode, char *buff) |
jmitc91516 | 0:47c880c1463d | 127 | { |
jmitc91516 | 0:47c880c1463d | 128 | for (int i = 0; i < STATE_CODE_COUNT; ++i) { |
jmitc91516 | 0:47c880c1463d | 129 | if(stateCodeArray[i]->GetCodeNumber() == stateCode) { |
jmitc91516 | 0:47c880c1463d | 130 | stateCodeArray[i]->GetCodeString(buff); |
jmitc91516 | 0:47c880c1463d | 131 | return true; |
jmitc91516 | 0:47c880c1463d | 132 | } |
jmitc91516 | 0:47c880c1463d | 133 | } |
jmitc91516 | 0:47c880c1463d | 134 | |
jmitc91516 | 0:47c880c1463d | 135 | // 'else' - state code not found |
jmitc91516 | 0:47c880c1463d | 136 | buff[0] = '\0'; |
jmitc91516 | 0:47c880c1463d | 137 | return false; |
jmitc91516 | 0:47c880c1463d | 138 | } |
jmitc91516 | 0:47c880c1463d | 139 | |
jmitc91516 | 0:47c880c1463d | 140 | bool GCStateAndFaultCodes::GetFaultCodeString(int faultCode, char *buff) |
jmitc91516 | 0:47c880c1463d | 141 | { |
jmitc91516 | 0:47c880c1463d | 142 | for (int i = 0; i < FAULT_CODE_COUNT; ++i) { |
jmitc91516 | 0:47c880c1463d | 143 | if(faultCodeArray[i]->GetCodeNumber() == faultCode) { |
jmitc91516 | 0:47c880c1463d | 144 | faultCodeArray[i]->GetCodeString(buff); |
jmitc91516 | 0:47c880c1463d | 145 | return true; |
jmitc91516 | 0:47c880c1463d | 146 | } |
jmitc91516 | 0:47c880c1463d | 147 | } |
jmitc91516 | 0:47c880c1463d | 148 | |
jmitc91516 | 0:47c880c1463d | 149 | // 'else' - fault code not found |
jmitc91516 | 0:47c880c1463d | 150 | buff[0] = '\0'; |
jmitc91516 | 0:47c880c1463d | 151 | return false; |
jmitc91516 | 0:47c880c1463d | 152 | } |
jmitc91516 | 0:47c880c1463d | 153 | |
jmitc91516 | 0:47c880c1463d | 154 | |
jmitc91516 | 0:47c880c1463d | 155 | |
jmitc91516 | 0:47c880c1463d | 156 |