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 #include "GCStateAndFaultCodes.h"
jmitc91516 0:47c880c1463d 2
jmitc91516 0:47c880c1463d 3 #include <string.h>
jmitc91516 0:47c880c1463d 4
jmitc91516 2:6e94a7fd1e37 5
jmitc91516 2:6e94a7fd1e37 6 /*
jmitc91516 2:6e94a7fd1e37 7 Passed three 8-bit colour components - red, green and blue.
jmitc91516 2:6e94a7fd1e37 8 Returns the corresponding 16-bit colour value (5 bits for red, 6 bits for green, 5 bits for blue).
jmitc91516 2:6e94a7fd1e37 9
jmitc91516 2:6e94a7fd1e37 10 Defined in main.cpp
jmitc91516 2:6e94a7fd1e37 11 */
jmitc91516 2:6e94a7fd1e37 12 extern GuiConst_INTCOLOR SixteenBitColorValue(GuiConst_INT8U red, GuiConst_INT8U green, GuiConst_INT8U blue);
jmitc91516 2:6e94a7fd1e37 13
jmitc91516 2:6e94a7fd1e37 14
jmitc91516 0:47c880c1463d 15 /*
jmitc91516 0:47c880c1463d 16 Classes that match state or fault code integer values to the corresponding strings
jmitc91516 0:47c880c1463d 17 */
jmitc91516 0:47c880c1463d 18
jmitc91516 0:47c880c1463d 19 GCStateOrFaultCode::GCStateOrFaultCode(int theCodeNumber, char* theCodeString)
jmitc91516 0:47c880c1463d 20 {
jmitc91516 0:47c880c1463d 21 codeNumber = theCodeNumber;
jmitc91516 0:47c880c1463d 22
jmitc91516 0:47c880c1463d 23 strcpy(codeString, theCodeString);
jmitc91516 0:47c880c1463d 24 }
jmitc91516 0:47c880c1463d 25
jmitc91516 0:47c880c1463d 26 int GCStateOrFaultCode::GetCodeNumber(void)
jmitc91516 0:47c880c1463d 27 {
jmitc91516 0:47c880c1463d 28 return codeNumber;
jmitc91516 0:47c880c1463d 29 }
jmitc91516 0:47c880c1463d 30
jmitc91516 0:47c880c1463d 31 void GCStateOrFaultCode::GetCodeString(char *buff)
jmitc91516 0:47c880c1463d 32 {
jmitc91516 0:47c880c1463d 33 strcpy(buff, codeString);
jmitc91516 0:47c880c1463d 34 }
jmitc91516 0:47c880c1463d 35
jmitc91516 1:a5258871b33d 36 // Static member function - provided so that we do not need to have
jmitc91516 1:a5258871b33d 37 // '#ifdef USE_VERSION_102' code everywhere
jmitc91516 1:a5258871b33d 38 GCStateSimplified GCStateOrFaultCode::GetSimplifiedGCState(int rawGCState)
jmitc91516 1:a5258871b33d 39 {
jmitc91516 1:a5258871b33d 40 #ifdef USE_VERSION_102 // #defined (or not) in GCStateAndFaultCodes.h
jmitc91516 1:a5258871b33d 41 if ((rawGCState >= GC_STATE_102_METHOD_RUNNING_MINIMUM)
jmitc91516 1:a5258871b33d 42 && (rawGCState <= GC_STATE_102_METHOD_RUNNING_MAXIMUM)) {
jmitc91516 1:a5258871b33d 43 return GC_RUNNING;
jmitc91516 1:a5258871b33d 44 }
jmitc91516 0:47c880c1463d 45
jmitc91516 1:a5258871b33d 46 // 'else'...
jmitc91516 1:a5258871b33d 47 switch(rawGCState) {
jmitc91516 1:a5258871b33d 48 case GC_STATE_102_METHOD_IDLE:
jmitc91516 1:a5258871b33d 49 return GC_IDLE;
jmitc91516 1:a5258871b33d 50
jmitc91516 1:a5258871b33d 51 case GC_STATE_102_METHOD_EQUILIBRATING:
jmitc91516 1:a5258871b33d 52 return GC_EQUILIBRATING;
jmitc91516 1:a5258871b33d 53
jmitc91516 1:a5258871b33d 54 case GC_STATE_102_METHOD_STABILISING:
jmitc91516 1:a5258871b33d 55 return GC_STABILISING;
jmitc91516 1:a5258871b33d 56
jmitc91516 1:a5258871b33d 57 case GC_STATE_102_METHOD_WAIT_READY_IO:
jmitc91516 1:a5258871b33d 58 return GC_WAIT_READY_IO;
jmitc91516 1:a5258871b33d 59
jmitc91516 1:a5258871b33d 60 case GC_STATE_102_METHOD_READY_TO_RUN:
jmitc91516 1:a5258871b33d 61 return GC_READY_TO_RUN;
jmitc91516 1:a5258871b33d 62
jmitc91516 1:a5258871b33d 63 case GC_STATE_102_METHOD_COOLING:
jmitc91516 1:a5258871b33d 64 return GC_COOLING;
jmitc91516 1:a5258871b33d 65
jmitc91516 1:a5258871b33d 66 default: // Assume faulted
jmitc91516 1:a5258871b33d 67 break;
jmitc91516 1:a5258871b33d 68 }
jmitc91516 1:a5258871b33d 69 #else
jmitc91516 1:a5258871b33d 70 if ((rawGCState >= GC_STATE_RUNNING_MINIMUM)
jmitc91516 1:a5258871b33d 71 && (rawGCState <= GC_STATE_RUNNING_MAXIMUM)) {
jmitc91516 1:a5258871b33d 72 return GC_RUNNING;
jmitc91516 1:a5258871b33d 73 }
jmitc91516 1:a5258871b33d 74
jmitc91516 1:a5258871b33d 75
jmitc91516 1:a5258871b33d 76 // 'else'...
jmitc91516 1:a5258871b33d 77 switch(rawGCState) {
jmitc91516 1:a5258871b33d 78 case GC_STATE_IDLE:
jmitc91516 1:a5258871b33d 79 return GC_IDLE;
jmitc91516 1:a5258871b33d 80
jmitc91516 1:a5258871b33d 81 case GC_STATE_EQUILIBRATING:
jmitc91516 1:a5258871b33d 82 return GC_EQUILIBRATING;
jmitc91516 1:a5258871b33d 83
jmitc91516 1:a5258871b33d 84 case GC_STATE_READY_TO_RUN:
jmitc91516 1:a5258871b33d 85 return GC_READY_TO_RUN;
jmitc91516 1:a5258871b33d 86
jmitc91516 1:a5258871b33d 87 case GC_STATE_READY_TO_PRE_RUN:
jmitc91516 1:a5258871b33d 88 case GC_STATE_PRE_RUNNING:
jmitc91516 1:a5258871b33d 89 return GC_STABILISING;
jmitc91516 1:a5258871b33d 90
jmitc91516 1:a5258871b33d 91 default: // Assume faulted
jmitc91516 1:a5258871b33d 92 break;
jmitc91516 1:a5258871b33d 93 }
jmitc91516 1:a5258871b33d 94 #endif
jmitc91516 1:a5258871b33d 95 return GC_FAULTED;
jmitc91516 1:a5258871b33d 96 }
jmitc91516 1:a5258871b33d 97
jmitc91516 2:6e94a7fd1e37 98 /*
jmitc91516 2:6e94a7fd1e37 99 Static member function to draw a message over the Run button location on the Home page,
jmitc91516 2:6e94a7fd1e37 100 showing the GC state.
jmitc91516 2:6e94a7fd1e37 101
jmitc91516 2:6e94a7fd1e37 102 Args: the GC state, as a value in the "GCStateSimplified" enumeration
jmitc91516 2:6e94a7fd1e37 103
jmitc91516 2:6e94a7fd1e37 104 No return code
jmitc91516 2:6e94a7fd1e37 105 */
jmitc91516 2:6e94a7fd1e37 106 void GCStateOrFaultCode::DrawSimplifiedStateMessageOnHomePageRunButton(GCStateSimplified simplifiedState)
jmitc91516 2:6e94a7fd1e37 107 {
jmitc91516 2:6e94a7fd1e37 108 switch (simplifiedState) {
jmitc91516 2:6e94a7fd1e37 109 case GC_STABILISING:
jmitc91516 2:6e94a7fd1e37 110 DrawTextOnRunButton("Stabilising", SixteenBitColorValue(0, 0xFF, 0), SixteenBitColorValue(0, 0, 0), GuiFont_Helv36Bold);
jmitc91516 2:6e94a7fd1e37 111 break;
jmitc91516 2:6e94a7fd1e37 112 case GC_EQUILIBRATING:
jmitc91516 2:6e94a7fd1e37 113 DrawTextOnRunButton("Equilibrating", SixteenBitColorValue(255, 255, 50), SixteenBitColorValue(0, 0, 0), GuiFont_Helv36Bold);
jmitc91516 2:6e94a7fd1e37 114 break;
jmitc91516 2:6e94a7fd1e37 115 case GC_COOLING:
jmitc91516 2:6e94a7fd1e37 116 DrawTextOnRunButton("Cooling", SixteenBitColorValue(0, 243, 255), SixteenBitColorValue(0, 0, 0), GuiFont_Helv36Bold);
jmitc91516 2:6e94a7fd1e37 117 break;
jmitc91516 2:6e94a7fd1e37 118 case GC_READY_TO_RUN:
jmitc91516 2:6e94a7fd1e37 119 // DrawTextOnRunButton("Ready", SixteenBitColorValue(0, 0xFF, 0), SixteenBitColorValue(0, 0, 0), GuiFont_Helv36Bold);
jmitc91516 2:6e94a7fd1e37 120 // Test - don't display "Ready" message on top of green, enabled, Run button
jmitc91516 2:6e94a7fd1e37 121 break;
jmitc91516 2:6e94a7fd1e37 122 case GC_IDLE:
jmitc91516 2:6e94a7fd1e37 123 DrawTextOnRunButton("Idle", SixteenBitColorValue(192, 0, 0), SixteenBitColorValue(0, 0, 0), GuiFont_Helv36Bold);
jmitc91516 2:6e94a7fd1e37 124 break;
jmitc91516 2:6e94a7fd1e37 125 case GC_WAIT_READY_IO:
jmitc91516 2:6e94a7fd1e37 126 DrawTextOnRunButton("Waiting IO", SixteenBitColorValue(192, 192, 0), SixteenBitColorValue(0, 0, 0), GuiFont_Helv36Bold);
jmitc91516 2:6e94a7fd1e37 127 break;
jmitc91516 2:6e94a7fd1e37 128 case GC_FAULTED:
jmitc91516 2:6e94a7fd1e37 129 DrawTextOnRunButton("Faulted", SixteenBitColorValue(255, 0, 0), SixteenBitColorValue(0, 0, 0), GuiFont_Helv36Bold);
jmitc91516 2:6e94a7fd1e37 130 break;
jmitc91516 2:6e94a7fd1e37 131 default:
jmitc91516 2:6e94a7fd1e37 132 // Some other state - do nothing
jmitc91516 2:6e94a7fd1e37 133 break;
jmitc91516 2:6e94a7fd1e37 134 }
jmitc91516 2:6e94a7fd1e37 135 }
jmitc91516 2:6e94a7fd1e37 136
jmitc91516 2:6e94a7fd1e37 137 /*
jmitc91516 2:6e94a7fd1e37 138 Draws the specified text on top of the Run button in the centre of the Home page,
jmitc91516 2:6e94a7fd1e37 139 in the specified colour.
jmitc91516 2:6e94a7fd1e37 140
jmitc91516 2:6e94a7fd1e37 141 It is up to the caller to display the Home page before calling this function.
jmitc91516 2:6e94a7fd1e37 142
jmitc91516 2:6e94a7fd1e37 143 Args: pointer to the (null-terminated) text
jmitc91516 2:6e94a7fd1e37 144 the foregound (i.e. text) colour
jmitc91516 2:6e94a7fd1e37 145 the background colour
jmitc91516 2:6e94a7fd1e37 146 the font ID (from the GuiFont_xxx list at the bottom of GuiFont.h)
jmitc91516 2:6e94a7fd1e37 147 (caller may want to e.g. use a larger font for shorter strings)
jmitc91516 2:6e94a7fd1e37 148
jmitc91516 2:6e94a7fd1e37 149 No return code.
jmitc91516 2:6e94a7fd1e37 150 */
jmitc91516 2:6e94a7fd1e37 151 void GCStateOrFaultCode::DrawTextOnRunButton(char* text, GuiConst_INTCOLOR foreColor, GuiConst_INTCOLOR backColor, GuiConst_INT16U fontNo)
jmitc91516 2:6e94a7fd1e37 152 {
jmitc91516 2:6e94a7fd1e37 153 const GuiConst_INT16S X = 400; // Approx centre of Run button
jmitc91516 2:6e94a7fd1e37 154 const GuiConst_INT16S Y = 220;
jmitc91516 2:6e94a7fd1e37 155
jmitc91516 2:6e94a7fd1e37 156 GuiLib_DrawStr(
jmitc91516 2:6e94a7fd1e37 157 X, //GuiConst_INT16S X,
jmitc91516 2:6e94a7fd1e37 158 Y, //GuiConst_INT16S Y,
jmitc91516 2:6e94a7fd1e37 159 fontNo, //GuiConst_INT16U FontNo,
jmitc91516 2:6e94a7fd1e37 160 text, //GuiConst_TEXT PrefixLocate *String,
jmitc91516 2:6e94a7fd1e37 161 GuiLib_ALIGN_CENTER, //GuiConst_INT8U Alignment,
jmitc91516 2:6e94a7fd1e37 162 GuiLib_PS_ON, //GuiConst_INT8U PsWriting,
jmitc91516 2:6e94a7fd1e37 163 GuiLib_TRANSPARENT_ON, //GuiConst_INT8U Transparent,
jmitc91516 2:6e94a7fd1e37 164 GuiLib_UNDERLINE_OFF, //GuiConst_INT8U Underlining,
jmitc91516 2:6e94a7fd1e37 165 0, //GuiConst_INT16S BackBoxSizeX,
jmitc91516 2:6e94a7fd1e37 166 0, //GuiConst_INT16S BackBoxSizeY1,
jmitc91516 2:6e94a7fd1e37 167 0, //GuiConst_INT16S BackBoxSizeY2,
jmitc91516 2:6e94a7fd1e37 168 GuiLib_BBP_NONE, //GuiConst_INT8U BackBorderPixels,
jmitc91516 2:6e94a7fd1e37 169 foreColor, //GuiConst_INTCOLOR ForeColor,
jmitc91516 2:6e94a7fd1e37 170 backColor //GuiConst_INTCOLOR BackColor
jmitc91516 2:6e94a7fd1e37 171 );
jmitc91516 2:6e94a7fd1e37 172 }
jmitc91516 1:a5258871b33d 173
jmitc91516 1:a5258871b33d 174
jmitc91516 1:a5258871b33d 175 /*
jmitc91516 1:a5258871b33d 176 Set up the arrays of state and fault codes.
jmitc91516 1:a5258871b33d 177
jmitc91516 1:a5258871b33d 178 The state and fault codes below are taken from the Nemesis 2 GC Control Protocol,
jmitc91516 1:a5258871b33d 179 version 1.0, dated 01/10/15. Note that the fault codes include those marked 'not used'.
jmitc91516 1:a5258871b33d 180 */
jmitc91516 0:47c880c1463d 181 GCStateAndFaultCodes::GCStateAndFaultCodes()
jmitc91516 0:47c880c1463d 182 {
jmitc91516 0:47c880c1463d 183 // First - the state codes
jmitc91516 0:47c880c1463d 184
jmitc91516 1:a5258871b33d 185 #ifdef USE_VERSION_102
jmitc91516 1:a5258871b33d 186 stateCodeArray[0] = new GCStateOrFaultCode(GC_STATE_102_METHOD_IDLE, "Idle");
jmitc91516 1:a5258871b33d 187 stateCodeArray[1] = new GCStateOrFaultCode(GC_STATE_102_METHOD_EQUILIBRATING, "Equilibrating");
jmitc91516 1:a5258871b33d 188 stateCodeArray[2] = new GCStateOrFaultCode(GC_STATE_102_METHOD_STABILISING, "Stabilising");
jmitc91516 1:a5258871b33d 189 stateCodeArray[3] = new GCStateOrFaultCode(GC_STATE_102_METHOD_WAIT_READY_IO, "Wait Ready IO");
jmitc91516 1:a5258871b33d 190 stateCodeArray[4] = new GCStateOrFaultCode(GC_STATE_102_METHOD_READY_TO_RUN, "Ready to Run");
jmitc91516 1:a5258871b33d 191 stateCodeArray[5] = new GCStateOrFaultCode(GC_STATE_102_METHOD_INIT_TIME, "Initial time");
jmitc91516 1:a5258871b33d 192
jmitc91516 1:a5258871b33d 193 stateCodeArray[6] = new GCStateOrFaultCode(GC_STATE_102_METHOD_RAMPING_1, "Ramping segment 1");
jmitc91516 1:a5258871b33d 194 stateCodeArray[7] = new GCStateOrFaultCode(GC_STATE_102_METHOD_RAMPING_2, "Ramping segment 2");
jmitc91516 1:a5258871b33d 195 stateCodeArray[8] = new GCStateOrFaultCode(GC_STATE_102_METHOD_RAMPING_3, "Ramping segment 3");
jmitc91516 1:a5258871b33d 196 stateCodeArray[9] = new GCStateOrFaultCode(GC_STATE_102_METHOD_RAMPING_4, "Ramping segment 4");
jmitc91516 1:a5258871b33d 197 stateCodeArray[10] = new GCStateOrFaultCode(GC_STATE_102_METHOD_RAMPING_5, "Ramping segment 5");
jmitc91516 1:a5258871b33d 198 stateCodeArray[11] = new GCStateOrFaultCode(GC_STATE_102_METHOD_RAMPING_6, "Ramping segment 6");
jmitc91516 1:a5258871b33d 199 stateCodeArray[12] = new GCStateOrFaultCode(GC_STATE_102_METHOD_RAMPING_7, "Ramping segment 7");
jmitc91516 1:a5258871b33d 200 stateCodeArray[13] = new GCStateOrFaultCode(GC_STATE_102_METHOD_RAMPING_8, "Ramping segment 8");
jmitc91516 1:a5258871b33d 201 stateCodeArray[14] = new GCStateOrFaultCode(GC_STATE_102_METHOD_RAMPING_9, "Ramping segment 9");
jmitc91516 1:a5258871b33d 202 stateCodeArray[15] = new GCStateOrFaultCode(GC_STATE_102_METHOD_RAMPING_10, "Ramping segment 10");
jmitc91516 1:a5258871b33d 203 stateCodeArray[16] = new GCStateOrFaultCode(GC_STATE_102_METHOD_HOLDING_1, "Holding segment 1");
jmitc91516 1:a5258871b33d 204 stateCodeArray[17] = new GCStateOrFaultCode(GC_STATE_102_METHOD_HOLDING_2, "Holding segment 2");
jmitc91516 1:a5258871b33d 205 stateCodeArray[18] = new GCStateOrFaultCode(GC_STATE_102_METHOD_HOLDING_3, "Holding segment 3");
jmitc91516 1:a5258871b33d 206 stateCodeArray[19] = new GCStateOrFaultCode(GC_STATE_102_METHOD_HOLDING_4, "Holding segment 4");
jmitc91516 1:a5258871b33d 207 stateCodeArray[20] = new GCStateOrFaultCode(GC_STATE_102_METHOD_HOLDING_5, "Holding segment 5");
jmitc91516 1:a5258871b33d 208 stateCodeArray[21] = new GCStateOrFaultCode(GC_STATE_102_METHOD_HOLDING_6, "Holding segment 6");
jmitc91516 1:a5258871b33d 209 stateCodeArray[22] = new GCStateOrFaultCode(GC_STATE_102_METHOD_HOLDING_7, "Holding segment 7");
jmitc91516 1:a5258871b33d 210 stateCodeArray[23] = new GCStateOrFaultCode(GC_STATE_102_METHOD_HOLDING_8, "Holding segment 8");
jmitc91516 1:a5258871b33d 211 stateCodeArray[24] = new GCStateOrFaultCode(GC_STATE_102_METHOD_HOLDING_9, "Holding segment 9");
jmitc91516 1:a5258871b33d 212 stateCodeArray[25] = new GCStateOrFaultCode(GC_STATE_102_METHOD_HOLDING_10, "Holding segment 10");
jmitc91516 1:a5258871b33d 213
jmitc91516 1:a5258871b33d 214 stateCodeArray[26] = new GCStateOrFaultCode(GC_STATE_102_METHOD_COOLING, "Cooling");
jmitc91516 1:a5258871b33d 215 stateCodeArray[27] = new GCStateOrFaultCode(GC_STATE_102_METHOD_FAULTED, "Faulted");
jmitc91516 1:a5258871b33d 216 #else
jmitc91516 1:a5258871b33d 217 stateCodeArray[0] = new GCStateOrFaultCode(GC_STATE_IDLE, "Idle");
jmitc91516 1:a5258871b33d 218 stateCodeArray[1] = new GCStateOrFaultCode(GC_STATE_NOT_READY, "Not Ready");
jmitc91516 1:a5258871b33d 219 stateCodeArray[2] = new GCStateOrFaultCode(GC_STATE_EQUILIBRATING, "Equilibrating");
jmitc91516 1:a5258871b33d 220
jmitc91516 1:a5258871b33d 221 stateCodeArray[3] = new GCStateOrFaultCode(GC_STATE_RUNNING_INITIAL_TIME, "Running initial time");
jmitc91516 1:a5258871b33d 222 stateCodeArray[4] = new GCStateOrFaultCode(GC_STATE_RAMPING_SEGMENT_1, "Ramping segment 1");
jmitc91516 1:a5258871b33d 223 stateCodeArray[5] = new GCStateOrFaultCode(GC_STATE_AT_UPPER_TEMP_SEGMENT_1, "At upper temp segment 1");
jmitc91516 1:a5258871b33d 224 stateCodeArray[6] = new GCStateOrFaultCode(GC_STATE_RAMPING_SEGMENT_2, "Ramping segment 2");
jmitc91516 1:a5258871b33d 225 stateCodeArray[7] = new GCStateOrFaultCode(GC_STATE_AT_UPPER_TEMP_SEGMENT_2, "At upper temp segment 2");
jmitc91516 1:a5258871b33d 226 stateCodeArray[8] = new GCStateOrFaultCode(GC_STATE_RAMPING_SEGMENT_3, "Ramping segment 3");
jmitc91516 1:a5258871b33d 227 stateCodeArray[9] = new GCStateOrFaultCode(GC_STATE_AT_UPPER_TEMP_SEGMENT_3, "At upper temp segment 3");
jmitc91516 1:a5258871b33d 228 stateCodeArray[10] = new GCStateOrFaultCode(GC_STATE_RAMPING_SEGMENT_4, "Ramping segment 4");
jmitc91516 1:a5258871b33d 229 stateCodeArray[11] = new GCStateOrFaultCode(GC_STATE_AT_UPPER_TEMP_SEGMENT_4, "At upper temp segment 4");
jmitc91516 1:a5258871b33d 230 stateCodeArray[12] = new GCStateOrFaultCode(GC_STATE_RAMPING_SEGMENT_5, "Ramping segment 5");
jmitc91516 1:a5258871b33d 231 stateCodeArray[13] = new GCStateOrFaultCode(GC_STATE_AT_UPPER_TEMP_SEGMENT_5, "At upper temp segment 5");
jmitc91516 0:47c880c1463d 232
jmitc91516 1:a5258871b33d 233 stateCodeArray[14] = new GCStateOrFaultCode(GC_STATE_HOLDING, "Holding");
jmitc91516 1:a5258871b33d 234 stateCodeArray[15] = new GCStateOrFaultCode(GC_STATE_ABORTING, "Aborting");
jmitc91516 1:a5258871b33d 235 stateCodeArray[16] = new GCStateOrFaultCode(GC_STATE_COOLING, "Cooling");
jmitc91516 1:a5258871b33d 236
jmitc91516 1:a5258871b33d 237 stateCodeArray[17] = new GCStateOrFaultCode(GC_STATE_READY_TO_PRE_RUN, "Ready to pre-run");
jmitc91516 1:a5258871b33d 238 stateCodeArray[18] = new GCStateOrFaultCode(GC_STATE_PRE_RUNNING, "Pre-running");
jmitc91516 1:a5258871b33d 239 stateCodeArray[19] = new GCStateOrFaultCode(GC_STATE_READY_TO_RUN, "Ready to run");
jmitc91516 0:47c880c1463d 240
jmitc91516 1:a5258871b33d 241 stateCodeArray[20] = new GCStateOrFaultCode(GC_STATE_FAULTED, "Faulted");
jmitc91516 1:a5258871b33d 242 #endif
jmitc91516 1:a5258871b33d 243
jmitc91516 1:a5258871b33d 244 // The simplified state codes
jmitc91516 1:a5258871b33d 245 simplifiedStateCodeArray[0] = new GCStateOrFaultCode(GC_IDLE, "Idle");
jmitc91516 1:a5258871b33d 246 simplifiedStateCodeArray[1] = new GCStateOrFaultCode(GC_EQUILIBRATING, "Equilibrating");
jmitc91516 1:a5258871b33d 247 simplifiedStateCodeArray[2] = new GCStateOrFaultCode(GC_STABILISING, "Stabilising");
jmitc91516 1:a5258871b33d 248 simplifiedStateCodeArray[3] = new GCStateOrFaultCode(GC_WAIT_READY_IO, "Waiting for IO ready");
jmitc91516 1:a5258871b33d 249 simplifiedStateCodeArray[4] = new GCStateOrFaultCode(GC_READY_TO_RUN, "Ready to run");
jmitc91516 1:a5258871b33d 250 simplifiedStateCodeArray[5] = new GCStateOrFaultCode(GC_RUNNING, "Running");
jmitc91516 1:a5258871b33d 251 simplifiedStateCodeArray[6] = new GCStateOrFaultCode(GC_COOLING, "Cooling");
jmitc91516 1:a5258871b33d 252 simplifiedStateCodeArray[7] = new GCStateOrFaultCode(GC_FAULTED, "Faulted");
jmitc91516 0:47c880c1463d 253
jmitc91516 0:47c880c1463d 254 // Now the fault codes - these only apply if the state is 99, "Faulted"
jmitc91516 0:47c880c1463d 255
jmitc91516 1:a5258871b33d 256 #ifdef USE_VERSION_102
jmitc91516 1:a5258871b33d 257 faultCodeArray[0] = new GCStateOrFaultCode(GC_FAULT_102_NO_ERROR, "No error");
jmitc91516 1:a5258871b33d 258 faultCodeArray[1] = new GCStateOrFaultCode(GC_FAULT_102_EEPROM_FAILURE, "EEPROM failure");
jmitc91516 1:a5258871b33d 259 faultCodeArray[2] = new GCStateOrFaultCode(GC_FAULT_102_DOOR_OPEN_ERROR, "Door open error");
jmitc91516 1:a5258871b33d 260
jmitc91516 1:a5258871b33d 261 faultCodeArray[3] = new GCStateOrFaultCode(GC_FAULT_102_COL_PRT_OPEN_ERROR, "Column PRT open error");
jmitc91516 1:a5258871b33d 262 faultCodeArray[4] = new GCStateOrFaultCode(GC_FAULT_102_COL_PRT_SHORT_ERROR, "Column PRT short error");
jmitc91516 1:a5258871b33d 263 faultCodeArray[5] = new GCStateOrFaultCode(GC_FAULT_102_INJ_PRT_OPEN_ERROR, "Injector PRT open error");
jmitc91516 1:a5258871b33d 264 faultCodeArray[6] = new GCStateOrFaultCode(GC_FAULT_102_INJ_PRT_SHORT_ERROR, "Injector PRT short error");
jmitc91516 1:a5258871b33d 265 faultCodeArray[7] = new GCStateOrFaultCode(GC_FAULT_102_DET_PRT_OPEN_ERROR, "Detector PRT open error");
jmitc91516 1:a5258871b33d 266 faultCodeArray[8] = new GCStateOrFaultCode(GC_FAULT_102_DET_PRT_SHORT_ERROR, "Detector PRT short error");
jmitc91516 1:a5258871b33d 267 faultCodeArray[9] = new GCStateOrFaultCode(GC_FAULT_102_AUX_PRT_OPEN_ERROR, "Auxiliary PRT open error");
jmitc91516 1:a5258871b33d 268 faultCodeArray[10] = new GCStateOrFaultCode(GC_FAULT_102_AUX_PRT_SHORT_ERROR, "Auxiliary PRT short error");
jmitc91516 1:a5258871b33d 269 faultCodeArray[11] = new GCStateOrFaultCode(GC_FAULT_102_TEMP4_PRT_OPEN_ERROR, "Temp4 PRT open error");
jmitc91516 1:a5258871b33d 270 faultCodeArray[12] = new GCStateOrFaultCode(GC_FAULT_102_TEMP4_PRT_SHORT_ERROR, "Temp4 PRT short error");
jmitc91516 1:a5258871b33d 271
jmitc91516 1:a5258871b33d 272 faultCodeArray[13] = new GCStateOrFaultCode(GC_FAULT_102_VOLTAGE_REF_ERROR, "Voltage Ref error");
jmitc91516 1:a5258871b33d 273 faultCodeArray[14] = new GCStateOrFaultCode(GC_FAULT_102_VSENSOR_ERROR, "Voltage sensor error");
jmitc91516 1:a5258871b33d 274
jmitc91516 1:a5258871b33d 275 faultCodeArray[15] = new GCStateOrFaultCode(GC_FAULT_102_COL_OVER_TEMP_ERROR, "Column over temperature error");
jmitc91516 1:a5258871b33d 276 faultCodeArray[16] = new GCStateOrFaultCode(GC_FAULT_102_INJ_OVER_TEMP_ERROR, "Injector over temperature error");
jmitc91516 1:a5258871b33d 277 faultCodeArray[17] = new GCStateOrFaultCode(GC_FAULT_102_DET_OVER_TEMP_ERROR, "Detector over temperature error");
jmitc91516 1:a5258871b33d 278 faultCodeArray[18] = new GCStateOrFaultCode(GC_FAULT_102_AUX_OVER_TEMP_ERROR, "Auxiliary over temperature error");
jmitc91516 1:a5258871b33d 279 faultCodeArray[19] = new GCStateOrFaultCode(GC_FAULT_102_TEMP4_OVER_TEMP_ERROR, "Temp4 over temperature error");
jmitc91516 1:a5258871b33d 280
jmitc91516 1:a5258871b33d 281 faultCodeArray[20] = new GCStateOrFaultCode(GC_FAULT_102_TC_K_SHORT_ERROR, "TC K short error");
jmitc91516 1:a5258871b33d 282
jmitc91516 1:a5258871b33d 283 faultCodeArray[21] = new GCStateOrFaultCode(GC_FAULT_102_EPPC_NOTFITTED_ERROR, "EPPC not fitted error");
jmitc91516 1:a5258871b33d 284 #else
jmitc91516 1:a5258871b33d 285 faultCodeArray[0] = new GCStateOrFaultCode(GC_FAULT_NO_ERROR, "No error");
jmitc91516 1:a5258871b33d 286 faultCodeArray[1] = new GCStateOrFaultCode(GC_FAULT_EEPROM_FAILURE, "EEPROM failure");
jmitc91516 1:a5258871b33d 287 faultCodeArray[2] = new GCStateOrFaultCode(GC_FAULT_DOOR_OPEN_ERROR, "Door open");
jmitc91516 1:a5258871b33d 288 faultCodeArray[3] = new GCStateOrFaultCode(GC_FAULT_IRSENSOR_OPEN_ERROR, "IRsensor open");
jmitc91516 1:a5258871b33d 289 faultCodeArray[4] = new GCStateOrFaultCode(GC_FAULT_IRSENSOR_SHORT_ERROR, "IRsensor short");
jmitc91516 1:a5258871b33d 290 faultCodeArray[5] = new GCStateOrFaultCode(GC_FAULT_INJECTOR_PRT_OPEN_ERROR, "Injector PRT open");
jmitc91516 1:a5258871b33d 291 faultCodeArray[6] = new GCStateOrFaultCode(GC_FAULT_INJECTOR_PRT_SHORT_ERROR, "Injector PRT short");
jmitc91516 1:a5258871b33d 292 faultCodeArray[7] = new GCStateOrFaultCode(GC_FAULT_DETECTOR_PRT_OPEN_ERROR, "Detector PRT open");
jmitc91516 1:a5258871b33d 293 faultCodeArray[8] = new GCStateOrFaultCode(GC_FAULT_DETECTOR_PRT_SHORT_ERROR, "Detector PRT short");
jmitc91516 0:47c880c1463d 294
jmitc91516 1:a5258871b33d 295 faultCodeArray[9] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_INJECTOR_COUPLING_PRT_OPEN_ERROR, "(Not used): Injector coupling PRT open");
jmitc91516 1:a5258871b33d 296 faultCodeArray[10] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_INJECTOR_COUPLING_PRT_SHORT_ERROR, "(Not used): Injector coupling PRT short");
jmitc91516 1:a5258871b33d 297 faultCodeArray[11] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_DETECTOR_COUPLING_PRT_OPEN_ERROR, "(Not used): Detector coupling PRT open");
jmitc91516 1:a5258871b33d 298 faultCodeArray[12] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_DETECTOR_COUPLING_PRT_SHORT_ERROR, "(Not used): Detector coupling PRT short");
jmitc91516 1:a5258871b33d 299
jmitc91516 1:a5258871b33d 300 faultCodeArray[13] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_13, "(Fault code 13, not used)");
jmitc91516 1:a5258871b33d 301 faultCodeArray[14] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_14, "(Fault code 14, not used)");
jmitc91516 0:47c880c1463d 302
jmitc91516 1:a5258871b33d 303 faultCodeArray[15] = new GCStateOrFaultCode(GC_FAULT_VOLTAGE_REF_ERROR, "Voltage ref error");
jmitc91516 1:a5258871b33d 304 faultCodeArray[16] = new GCStateOrFaultCode(GC_FAULT_VOLTAGE_SENSOR_ERROR, "Voltage sensor error");
jmitc91516 0:47c880c1463d 305
jmitc91516 1:a5258871b33d 306 faultCodeArray[17] = new GCStateOrFaultCode(GC_FAULT_COLUMN_OVER_TEMP_ERROR, "Column over temp error");
jmitc91516 1:a5258871b33d 307 faultCodeArray[18] = new GCStateOrFaultCode(GC_FAULT_INJECTOR_OVER_TEMP_ERROR, "Injector over temp error");
jmitc91516 1:a5258871b33d 308 faultCodeArray[19] = new GCStateOrFaultCode(GC_FAULT_DETECTOR_OVER_TEMP_ERROR, "Detector over temp error");
jmitc91516 1:a5258871b33d 309
jmitc91516 1:a5258871b33d 310 faultCodeArray[20] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_INJECTOR_COUPLING_OVER_TEMP_ERROR, "(Not used): Injector coupling over temp error");
jmitc91516 1:a5258871b33d 311 faultCodeArray[21] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_DETECTOR_COUPLING_OVER_TEMP_ERROR, "(Not used): Detector coupling over temp error");
jmitc91516 0:47c880c1463d 312
jmitc91516 1:a5258871b33d 313 faultCodeArray[22] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_22, "(Fault code 22, not used)");
jmitc91516 1:a5258871b33d 314
jmitc91516 1:a5258871b33d 315 faultCodeArray[23] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_COLUMN_NOT_INIT, "(Not used): Column not init");
jmitc91516 1:a5258871b33d 316 faultCodeArray[24] = new GCStateOrFaultCode(GC_FAULT_NOT_USED_COLUMN_INSERT_FAILED, "(Not used): Column insert failed");
jmitc91516 1:a5258871b33d 317
jmitc91516 1:a5258871b33d 318 faultCodeArray[25] = new GCStateOrFaultCode(GC_FAULT_I2C_NAK_ERROR, "I2C NAK error");
jmitc91516 0:47c880c1463d 319
jmitc91516 1:a5258871b33d 320 faultCodeArray[26] = new GCStateOrFaultCode(GC_FAULT_TWI_TIMEOUT_ERROR, "TWI timeout error");
jmitc91516 1:a5258871b33d 321 faultCodeArray[27] = new GCStateOrFaultCode(GC_FAULT_TWI_BUS_ERROR, "TWI bus error");
jmitc91516 1:a5258871b33d 322 faultCodeArray[28] = new GCStateOrFaultCode(GC_FAULT_TWI_SLAW_NACK, "TWI SLAW NACK");
jmitc91516 1:a5258871b33d 323 faultCodeArray[29] = new GCStateOrFaultCode(GC_FAULT_TWI_SLADATA_NACK, "TWI SLADATA NACK");
jmitc91516 1:a5258871b33d 324 faultCodeArray[30] = new GCStateOrFaultCode(GC_FAULT_TWI_SLAR_NACK, "TWI SLAR NACK");
jmitc91516 1:a5258871b33d 325 faultCodeArray[31] = new GCStateOrFaultCode(GC_FAULT_TWI_ARBITRATION_LOST, "TWI arbitration lost");
jmitc91516 1:a5258871b33d 326 faultCodeArray[32] = new GCStateOrFaultCode(GC_FAULT_TWI_UNKNOWN_ERROR, "TWI unknown error");
jmitc91516 0:47c880c1463d 327
jmitc91516 1:a5258871b33d 328 faultCodeArray[33] = new GCStateOrFaultCode(GC_FAULT_TWI2_TIMEOUT_ERROR, "TWI2 timeout error");
jmitc91516 1:a5258871b33d 329 faultCodeArray[34] = new GCStateOrFaultCode(GC_FAULT_TWI2_BUS_ERROR, "TWI2 bus error");
jmitc91516 1:a5258871b33d 330 faultCodeArray[35] = new GCStateOrFaultCode(GC_FAULT_TWI2_UNKNOWN_ERROR1, "TWI2 unknown error 1");
jmitc91516 1:a5258871b33d 331 faultCodeArray[36] = new GCStateOrFaultCode(GC_FAULT_TWI2_UNKNOWN_ERROR2, "TWI2 unknown error 2");
jmitc91516 1:a5258871b33d 332 #endif
jmitc91516 0:47c880c1463d 333 }
jmitc91516 0:47c880c1463d 334
jmitc91516 0:47c880c1463d 335 GCStateAndFaultCodes::~GCStateAndFaultCodes()
jmitc91516 0:47c880c1463d 336 {
jmitc91516 0:47c880c1463d 337 int i;
jmitc91516 0:47c880c1463d 338
jmitc91516 0:47c880c1463d 339 for (i = 0; i < STATE_CODE_COUNT; ++i) {
jmitc91516 0:47c880c1463d 340 delete stateCodeArray[i];
jmitc91516 0:47c880c1463d 341 }
jmitc91516 0:47c880c1463d 342
jmitc91516 0:47c880c1463d 343 for (i = 0; i < FAULT_CODE_COUNT; ++i) {
jmitc91516 0:47c880c1463d 344 delete faultCodeArray[i];
jmitc91516 0:47c880c1463d 345 }
jmitc91516 0:47c880c1463d 346 }
jmitc91516 0:47c880c1463d 347
jmitc91516 1:a5258871b33d 348 /*
jmitc91516 1:a5258871b33d 349 Given an integer state code, returns the associated descriptive string.
jmitc91516 1:a5258871b33d 350
jmitc91516 1:a5258871b33d 351 Args: state code
jmitc91516 1:a5258871b33d 352 pointer to the buffer to contain the associated string (if found)
jmitc91516 1:a5258871b33d 353
jmitc91516 1:a5258871b33d 354 Returns true if the state code is valid, false if not
jmitc91516 1:a5258871b33d 355 */
jmitc91516 0:47c880c1463d 356 bool GCStateAndFaultCodes::GetStateCodeString(int stateCode, char *buff)
jmitc91516 0:47c880c1463d 357 {
jmitc91516 0:47c880c1463d 358 for (int i = 0; i < STATE_CODE_COUNT; ++i) {
jmitc91516 0:47c880c1463d 359 if(stateCodeArray[i]->GetCodeNumber() == stateCode) {
jmitc91516 0:47c880c1463d 360 stateCodeArray[i]->GetCodeString(buff);
jmitc91516 0:47c880c1463d 361 return true;
jmitc91516 0:47c880c1463d 362 }
jmitc91516 0:47c880c1463d 363 }
jmitc91516 0:47c880c1463d 364
jmitc91516 0:47c880c1463d 365 // 'else' - state code not found
jmitc91516 0:47c880c1463d 366 buff[0] = '\0';
jmitc91516 0:47c880c1463d 367 return false;
jmitc91516 0:47c880c1463d 368 }
jmitc91516 0:47c880c1463d 369
jmitc91516 1:a5258871b33d 370 /*
jmitc91516 2:6e94a7fd1e37 371 Given a simplified state value, returns the associated descriptive string.
jmitc91516 1:a5258871b33d 372
jmitc91516 2:6e94a7fd1e37 373 Args: simplified state code
jmitc91516 1:a5258871b33d 374 pointer to the buffer to contain the associated string (if found)
jmitc91516 1:a5258871b33d 375
jmitc91516 1:a5258871b33d 376 Returns true if the state code is valid, false if not
jmitc91516 1:a5258871b33d 377 */
jmitc91516 2:6e94a7fd1e37 378 bool GCStateAndFaultCodes::GetSimplifiedStateCodeString(GCStateSimplified simplifiedStateCode, char *buff)
jmitc91516 1:a5258871b33d 379 {
jmitc91516 1:a5258871b33d 380 for (int i = 0; i < GC_STATE_SIMPLIFIED_COUNT; ++i) {
jmitc91516 1:a5258871b33d 381 if(simplifiedStateCodeArray[i]->GetCodeNumber() == simplifiedStateCode) {
jmitc91516 1:a5258871b33d 382 simplifiedStateCodeArray[i]->GetCodeString(buff);
jmitc91516 1:a5258871b33d 383 return true;
jmitc91516 1:a5258871b33d 384 }
jmitc91516 1:a5258871b33d 385 }
jmitc91516 1:a5258871b33d 386
jmitc91516 1:a5258871b33d 387 // 'else' - simplified state code not found
jmitc91516 1:a5258871b33d 388 buff[0] = '\0';
jmitc91516 1:a5258871b33d 389 return false;
jmitc91516 1:a5258871b33d 390 }
jmitc91516 1:a5258871b33d 391
jmitc91516 1:a5258871b33d 392
jmitc91516 1:a5258871b33d 393
jmitc91516 1:a5258871b33d 394 /*
jmitc91516 1:a5258871b33d 395 Given an integer fault code, returns the associated descriptive string.
jmitc91516 1:a5258871b33d 396
jmitc91516 1:a5258871b33d 397 Args: state code
jmitc91516 1:a5258871b33d 398 pointer to the buffer to contain the associated string (if found)
jmitc91516 1:a5258871b33d 399
jmitc91516 1:a5258871b33d 400 Returns true if the fault code is valid, false if not
jmitc91516 1:a5258871b33d 401 */
jmitc91516 0:47c880c1463d 402 bool GCStateAndFaultCodes::GetFaultCodeString(int faultCode, char *buff)
jmitc91516 0:47c880c1463d 403 {
jmitc91516 0:47c880c1463d 404 for (int i = 0; i < FAULT_CODE_COUNT; ++i) {
jmitc91516 0:47c880c1463d 405 if(faultCodeArray[i]->GetCodeNumber() == faultCode) {
jmitc91516 0:47c880c1463d 406 faultCodeArray[i]->GetCodeString(buff);
jmitc91516 0:47c880c1463d 407 return true;
jmitc91516 0:47c880c1463d 408 }
jmitc91516 0:47c880c1463d 409 }
jmitc91516 0:47c880c1463d 410
jmitc91516 0:47c880c1463d 411 // 'else' - fault code not found
jmitc91516 0:47c880c1463d 412 buff[0] = '\0';
jmitc91516 0:47c880c1463d 413 return false;
jmitc91516 0:47c880c1463d 414 }
jmitc91516 0:47c880c1463d 415
jmitc91516 0:47c880c1463d 416
jmitc91516 0:47c880c1463d 417
jmitc91516 0:47c880c1463d 418