Repository for import to local machine
Dependencies: DMBasicGUI DMSupport
GCStateAndFaultCodes.cpp
- Committer:
- jmitc91516
- Date:
- 2016-01-13
- Revision:
- 0:47c880c1463d
- Child:
- 1:a5258871b33d
File content as of revision 0:47c880c1463d:
#include "GCStateAndFaultCodes.h" #include <string.h> /* Classes that match state or fault code integer values to the corresponding strings */ GCStateOrFaultCode::GCStateOrFaultCode(int theCodeNumber, char* theCodeString) { codeNumber = theCodeNumber; strcpy(codeString, theCodeString); } int GCStateOrFaultCode::GetCodeNumber(void) { return codeNumber; } void GCStateOrFaultCode::GetCodeString(char *buff) { strcpy(buff, codeString); } GCStateAndFaultCodes::GCStateAndFaultCodes() { // The state and fault codes below are taken from the Nemesis 2 GC Control Protocol, // version 1.0, dated 01/10/15. Note that the fault codes include those marked 'not used'. // First - the state codes stateCodeArray[0] = new GCStateOrFaultCode(0, "Idle"); stateCodeArray[1] = new GCStateOrFaultCode(1, "Not Ready"); stateCodeArray[2] = new GCStateOrFaultCode(2, "Equilibrating"); stateCodeArray[3] = new GCStateOrFaultCode(4, "Running initial time"); stateCodeArray[4] = new GCStateOrFaultCode(5, "Ramping segment 1"); stateCodeArray[5] = new GCStateOrFaultCode(6, "At upper temp segment 1"); stateCodeArray[6] = new GCStateOrFaultCode(7, "Ramping segment 2"); stateCodeArray[7] = new GCStateOrFaultCode(8, "At upper temp segment 2"); stateCodeArray[8] = new GCStateOrFaultCode(9, "Ramping segment 3"); stateCodeArray[9] = new GCStateOrFaultCode(10, "At upper temp segment 3"); stateCodeArray[10] = new GCStateOrFaultCode(11, "Ramping segment 4"); stateCodeArray[11] = new GCStateOrFaultCode(12, "At upper temp segment 4"); stateCodeArray[12] = new GCStateOrFaultCode(13, "Ramping segment 5"); stateCodeArray[13] = new GCStateOrFaultCode(14, "At upper temp segment 5"); stateCodeArray[14] = new GCStateOrFaultCode(15, "Holding"); stateCodeArray[15] = new GCStateOrFaultCode(16, "Aborting"); stateCodeArray[16] = new GCStateOrFaultCode(17, "Cooling"); stateCodeArray[17] = new GCStateOrFaultCode(31, "Ready to pre-run"); stateCodeArray[18] = new GCStateOrFaultCode(32, "Pre-running"); stateCodeArray[19] = new GCStateOrFaultCode(33, "Ready to run"); stateCodeArray[20] = new GCStateOrFaultCode(99, "Faulted"); // Now the fault codes - these only apply if the state is 99, "Faulted" faultCodeArray[0] = new GCStateOrFaultCode(0, "No error"); faultCodeArray[1] = new GCStateOrFaultCode(1, "EEPROM failure"); faultCodeArray[2] = new GCStateOrFaultCode(2, "Door open"); faultCodeArray[3] = new GCStateOrFaultCode(3, "IRsensor open"); faultCodeArray[4] = new GCStateOrFaultCode(4, "IRsensor short"); faultCodeArray[5] = new GCStateOrFaultCode(5, "Injector PRT open"); faultCodeArray[6] = new GCStateOrFaultCode(6, "Injector PRT short"); faultCodeArray[7] = new GCStateOrFaultCode(7, "Detector PRT open"); faultCodeArray[8] = new GCStateOrFaultCode(8, "Detector PRT short"); faultCodeArray[9] = new GCStateOrFaultCode(9, "(Not used): Injector coupling PRT open"); faultCodeArray[10] = new GCStateOrFaultCode(10, "(Not used): Injector coupling PRT short"); faultCodeArray[11] = new GCStateOrFaultCode(11, "(Not used): Detector coupling PRT open"); faultCodeArray[12] = new GCStateOrFaultCode(12, "(Not used): Detector coupling PRT short"); faultCodeArray[13] = new GCStateOrFaultCode(13, "(Fault code 13, not used)"); faultCodeArray[14] = new GCStateOrFaultCode(14, "(Fault code 14, not used)"); faultCodeArray[15] = new GCStateOrFaultCode(15, "Voltage ref error"); faultCodeArray[16] = new GCStateOrFaultCode(16, "Voltage sensor error"); faultCodeArray[17] = new GCStateOrFaultCode(17, "Column over temp error"); faultCodeArray[18] = new GCStateOrFaultCode(18, "Injector over temp error"); faultCodeArray[19] = new GCStateOrFaultCode(19, "Detector over temp error"); faultCodeArray[20] = new GCStateOrFaultCode(20, "(Not used): Injector coupling over temp error"); faultCodeArray[21] = new GCStateOrFaultCode(21, "(Not used): Detector coupling over temp error"); faultCodeArray[22] = new GCStateOrFaultCode(22, "(Fault code 22, not used)"); faultCodeArray[23] = new GCStateOrFaultCode(23, "(Not used): Column not init"); faultCodeArray[24] = new GCStateOrFaultCode(24, "(Not used): Column insert failed"); faultCodeArray[25] = new GCStateOrFaultCode(25, "I2C NAK error"); faultCodeArray[26] = new GCStateOrFaultCode(26, "TWI timeout error"); faultCodeArray[27] = new GCStateOrFaultCode(27, "TWI bus error"); faultCodeArray[28] = new GCStateOrFaultCode(28, "TWI SLAW NACK"); faultCodeArray[29] = new GCStateOrFaultCode(29, "TWI SLADATA NACK"); faultCodeArray[30] = new GCStateOrFaultCode(30, "TWI SLAR NACK"); faultCodeArray[31] = new GCStateOrFaultCode(31, "TWI arbitration lost"); faultCodeArray[32] = new GCStateOrFaultCode(32, "TWI unknown error"); faultCodeArray[33] = new GCStateOrFaultCode(33, "TWI2 timeout error"); faultCodeArray[34] = new GCStateOrFaultCode(34, "TWI2 bus error"); faultCodeArray[35] = new GCStateOrFaultCode(35, "TWI2 unknown error 1"); faultCodeArray[36] = new GCStateOrFaultCode(36, "TWI2 unknown error 2"); } GCStateAndFaultCodes::~GCStateAndFaultCodes() { int i; for (i = 0; i < STATE_CODE_COUNT; ++i) { delete stateCodeArray[i]; } for (i = 0; i < FAULT_CODE_COUNT; ++i) { delete faultCodeArray[i]; } } bool GCStateAndFaultCodes::GetStateCodeString(int stateCode, char *buff) { for (int i = 0; i < STATE_CODE_COUNT; ++i) { if(stateCodeArray[i]->GetCodeNumber() == stateCode) { stateCodeArray[i]->GetCodeString(buff); return true; } } // 'else' - state code not found buff[0] = '\0'; return false; } bool GCStateAndFaultCodes::GetFaultCodeString(int faultCode, char *buff) { for (int i = 0; i < FAULT_CODE_COUNT; ++i) { if(faultCodeArray[i]->GetCodeNumber() == faultCode) { faultCodeArray[i]->GetCodeString(buff); return true; } } // 'else' - fault code not found buff[0] = '\0'; return false; }