Repository for import to local machine

Dependencies:   DMBasicGUI DMSupport

Committer:
jmitc91516
Date:
Mon Jul 31 15:37:57 2017 +0000
Revision:
8:26e49e6955bd
Parent:
6:dba3fbdfd5da
Method ramp scrolling improved, and more bitmaps moved to QSPI memory

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmitc91516 6:dba3fbdfd5da 1 #include "MethodRampData.h"
jmitc91516 6:dba3fbdfd5da 2 #include "EasyGUITouchAreaIndices.h"
jmitc91516 6:dba3fbdfd5da 3 #include "USBHostGCUtilities.h"
jmitc91516 6:dba3fbdfd5da 4
jmitc91516 6:dba3fbdfd5da 5 #include <float.h>
jmitc91516 6:dba3fbdfd5da 6
jmitc91516 6:dba3fbdfd5da 7 /*
jmitc91516 6:dba3fbdfd5da 8 MethodRampData - the base, abstract, class.
jmitc91516 6:dba3fbdfd5da 9 */
jmitc91516 6:dba3fbdfd5da 10
jmitc91516 8:26e49e6955bd 11 const GuiConst_INTCOLOR MethodRampData::oddRampEasyGUIColour = 0; // RGB565(0, 0, 0) - black
jmitc91516 8:26e49e6955bd 12 const GuiConst_INTCOLOR MethodRampData::evenRampEasyGUIColour = 33808; // RGB565(128, 128, 128) - grey
jmitc91516 8:26e49e6955bd 13
jmitc91516 6:dba3fbdfd5da 14 // Constructor - passed pointers for the USB link to the GC
jmitc91516 6:dba3fbdfd5da 15 MethodRampData::MethodRampData(USBDeviceConnected* newUsbDevice, USBHostGC* newUsbHostGC)
jmitc91516 6:dba3fbdfd5da 16 {
jmitc91516 6:dba3fbdfd5da 17 usbDevice = newUsbDevice;
jmitc91516 6:dba3fbdfd5da 18 usbHostGC = newUsbHostGC;
jmitc91516 6:dba3fbdfd5da 19
jmitc91516 6:dba3fbdfd5da 20 rampCount = 0;
jmitc91516 6:dba3fbdfd5da 21
jmitc91516 6:dba3fbdfd5da 22 gotRampData = false;
jmitc91516 6:dba3fbdfd5da 23
jmitc91516 6:dba3fbdfd5da 24 for (int rampIndex = 0; rampIndex < MAX_RAMP_COUNT; ++rampIndex) {
jmitc91516 6:dba3fbdfd5da 25 rampData[rampIndex].rampRate = 0.0f;
jmitc91516 6:dba3fbdfd5da 26 rampData[rampIndex].rampUpperLimit = 0.0f;
jmitc91516 6:dba3fbdfd5da 27 rampData[rampIndex].rampUpperTime = 0.0f;
jmitc91516 6:dba3fbdfd5da 28 }
jmitc91516 6:dba3fbdfd5da 29
jmitc91516 6:dba3fbdfd5da 30 // Derived classes need to set the EasyGUI variable names,
jmitc91516 6:dba3fbdfd5da 31 // and their sprintf format strings, in *their* constructors
jmitc91516 6:dba3fbdfd5da 32
jmitc91516 6:dba3fbdfd5da 33 needToUpdateEasyGUIMethodPageRampVariables = true;
jmitc91516 6:dba3fbdfd5da 34 }
jmitc91516 6:dba3fbdfd5da 35
jmitc91516 6:dba3fbdfd5da 36
jmitc91516 6:dba3fbdfd5da 37 /*
jmitc91516 6:dba3fbdfd5da 38 Gets an integer value from the GC, using the specified command and ramp index.
jmitc91516 6:dba3fbdfd5da 39 For all the "get ramp value xxx" commands, the GC returns an eight character string,
jmitc91516 6:dba3fbdfd5da 40 the last four of which are the value.
jmitc91516 6:dba3fbdfd5da 41
jmitc91516 6:dba3fbdfd5da 42 Args: pointer to a null-terminated string containing the first three chars of the command (e.g. "GRP" for the column temperature ramp rate).
jmitc91516 6:dba3fbdfd5da 43 the ramp index (this must be in the range 0-9).
jmitc91516 6:dba3fbdfd5da 44
jmitc91516 6:dba3fbdfd5da 45 Returns the corresponding ramp value obtained from the GC, or 0 if there was a problem - e.g. the ramp index was invalid,
jmitc91516 6:dba3fbdfd5da 46 GC returned "EPKT", etc. (We choose 0 for this, not (say) -1, because a ramp rate of zero means "no ramp at this index".
jmitc91516 6:dba3fbdfd5da 47 Apply that rule consistently everywhere.)
jmitc91516 6:dba3fbdfd5da 48
jmitc91516 6:dba3fbdfd5da 49 *** It is up to the caller to convert this function's return value to the correct units ***
jmitc91516 6:dba3fbdfd5da 50 e.g. the ramp upper time, for all three ramp types, is in units of 0.1 minute, so the caller
jmitc91516 6:dba3fbdfd5da 51 has to (1) convert the integer value to a float, and (2) divide by 10.
jmitc91516 6:dba3fbdfd5da 52 This function simply says "the four digits returned by the GC had this value".
jmitc91516 6:dba3fbdfd5da 53 */
jmitc91516 6:dba3fbdfd5da 54 int MethodRampData::GetIntRampValueFromGC(char *firstThreeCharsOfCommand, unsigned int rampIndex)
jmitc91516 6:dba3fbdfd5da 55 {
jmitc91516 6:dba3fbdfd5da 56 if(rampIndex > 9) {
jmitc91516 6:dba3fbdfd5da 57 return 0; // A ramp value of zero means "no ramp at this index"
jmitc91516 6:dba3fbdfd5da 58 }
jmitc91516 6:dba3fbdfd5da 59
jmitc91516 6:dba3fbdfd5da 60 char command[50];
jmitc91516 6:dba3fbdfd5da 61 sprintf(command, "%s%u", firstThreeCharsOfCommand, rampIndex);
jmitc91516 6:dba3fbdfd5da 62
jmitc91516 6:dba3fbdfd5da 63 char response[50];
jmitc91516 6:dba3fbdfd5da 64 USBHostGCUtilities::SendCommandToGCAndGetResponse(usbDevice, usbHostGC, command, response);
jmitc91516 6:dba3fbdfd5da 65
jmitc91516 6:dba3fbdfd5da 66 if(response[0] == 'E') {
jmitc91516 6:dba3fbdfd5da 67 // Assume "EPKT"
jmitc91516 6:dba3fbdfd5da 68 return 0; // A ramp value of zero means "no ramp at this index"
jmitc91516 6:dba3fbdfd5da 69 }
jmitc91516 6:dba3fbdfd5da 70
jmitc91516 6:dba3fbdfd5da 71 int retVal;
jmitc91516 6:dba3fbdfd5da 72 sscanf(&response[4], "%d", &retVal);
jmitc91516 6:dba3fbdfd5da 73
jmitc91516 6:dba3fbdfd5da 74 return retVal;
jmitc91516 6:dba3fbdfd5da 75 }
jmitc91516 6:dba3fbdfd5da 76
jmitc91516 6:dba3fbdfd5da 77
jmitc91516 6:dba3fbdfd5da 78 /*
jmitc91516 6:dba3fbdfd5da 79 This functions fills the ramp data array with the actual ramp data from the GC.
jmitc91516 6:dba3fbdfd5da 80 After this, the caller can use the "GetRampTemperatureRate", etc, functions
jmitc91516 6:dba3fbdfd5da 81 to find out what the ramp values actually are.
jmitc91516 6:dba3fbdfd5da 82
jmitc91516 6:dba3fbdfd5da 83 Note that it is up to the caller to call this function when required,
jmitc91516 6:dba3fbdfd5da 84 e.g. when the Column Method page is first entered, the ramp data has changed
jmitc91516 6:dba3fbdfd5da 85 because a new method has been downloaded, etc.
jmitc91516 6:dba3fbdfd5da 86
jmitc91516 6:dba3fbdfd5da 87 No arguments, no return code.
jmitc91516 6:dba3fbdfd5da 88 */
jmitc91516 6:dba3fbdfd5da 89 void MethodRampData::GetRampDataFromGC(void)
jmitc91516 6:dba3fbdfd5da 90 {
jmitc91516 6:dba3fbdfd5da 91 rampCount = 0;
jmitc91516 6:dba3fbdfd5da 92
jmitc91516 6:dba3fbdfd5da 93 int rampIndex;
jmitc91516 6:dba3fbdfd5da 94 float currentRampRate;
jmitc91516 6:dba3fbdfd5da 95 for (rampIndex = 0; rampIndex < MAX_RAMP_COUNT; ++rampIndex) {
jmitc91516 6:dba3fbdfd5da 96
jmitc91516 6:dba3fbdfd5da 97 currentRampRate = GetRampRateFromGC(rampIndex);
jmitc91516 6:dba3fbdfd5da 98 if(currentRampRate < FLT_MIN) { // Avoid rounding errors - do not test for equality with zero
jmitc91516 6:dba3fbdfd5da 99
jmitc91516 6:dba3fbdfd5da 100 // No more ramps - don't waste time getting any more data from the GC,
jmitc91516 6:dba3fbdfd5da 101 // and stop incrementing 'rampCount'
jmitc91516 6:dba3fbdfd5da 102 break;
jmitc91516 6:dba3fbdfd5da 103 }
jmitc91516 6:dba3fbdfd5da 104 rampData[rampIndex].rampRate = currentRampRate;
jmitc91516 6:dba3fbdfd5da 105
jmitc91516 6:dba3fbdfd5da 106 rampData[rampIndex].rampUpperLimit = GetRampUpperLimitFromGC(rampIndex);
jmitc91516 6:dba3fbdfd5da 107 rampData[rampIndex].rampUpperTime = GetRampUpperTimeFromGC(rampIndex);
jmitc91516 6:dba3fbdfd5da 108
jmitc91516 6:dba3fbdfd5da 109 ++rampCount;
jmitc91516 6:dba3fbdfd5da 110 }
jmitc91516 6:dba3fbdfd5da 111
jmitc91516 6:dba3fbdfd5da 112 // Fill the data for any remaining ramps with zeroes
jmitc91516 6:dba3fbdfd5da 113 for (; rampIndex < MAX_RAMP_COUNT; ++rampIndex) {
jmitc91516 6:dba3fbdfd5da 114 rampData[rampIndex].rampRate = 0.0f;
jmitc91516 6:dba3fbdfd5da 115 rampData[rampIndex].rampUpperLimit = 0.0f;
jmitc91516 6:dba3fbdfd5da 116 rampData[rampIndex].rampUpperTime = 0.0f;
jmitc91516 6:dba3fbdfd5da 117 }
jmitc91516 6:dba3fbdfd5da 118
jmitc91516 6:dba3fbdfd5da 119 gotRampData = true;
jmitc91516 6:dba3fbdfd5da 120
jmitc91516 6:dba3fbdfd5da 121 needToUpdateEasyGUIMethodPageRampVariables = true;
jmitc91516 6:dba3fbdfd5da 122 }
jmitc91516 6:dba3fbdfd5da 123
jmitc91516 6:dba3fbdfd5da 124
jmitc91516 6:dba3fbdfd5da 125 /*
jmitc91516 6:dba3fbdfd5da 126 Gets the rate of temperature/pressure increase for the specified ramp, if it exists.
jmitc91516 6:dba3fbdfd5da 127
jmitc91516 6:dba3fbdfd5da 128 Args: the ramp index
jmitc91516 6:dba3fbdfd5da 129 a pointer to an float to contain the ramp rate
jmitc91516 6:dba3fbdfd5da 130 (in units of degrees C/min for column and injector, psi/min for gas)
jmitc91516 6:dba3fbdfd5da 131
jmitc91516 6:dba3fbdfd5da 132 Returns true if we have a ramp at that index, false if not
jmitc91516 6:dba3fbdfd5da 133 */
jmitc91516 6:dba3fbdfd5da 134 bool MethodRampData::GetRampRate(unsigned int rampIndex, float *rampRate)
jmitc91516 6:dba3fbdfd5da 135 {
jmitc91516 6:dba3fbdfd5da 136 if(rampIndex < rampCount) {
jmitc91516 6:dba3fbdfd5da 137 *rampRate = rampData[rampIndex].rampRate;
jmitc91516 6:dba3fbdfd5da 138
jmitc91516 6:dba3fbdfd5da 139 return true;
jmitc91516 6:dba3fbdfd5da 140 }
jmitc91516 6:dba3fbdfd5da 141
jmitc91516 6:dba3fbdfd5da 142 // 'else' - no ramp at that index
jmitc91516 6:dba3fbdfd5da 143 *rampRate = 0.0f;
jmitc91516 6:dba3fbdfd5da 144 return false;
jmitc91516 6:dba3fbdfd5da 145 }
jmitc91516 6:dba3fbdfd5da 146
jmitc91516 6:dba3fbdfd5da 147
jmitc91516 6:dba3fbdfd5da 148 /*
jmitc91516 6:dba3fbdfd5da 149 Gets the upper limit for the specified ramp, if it exists.
jmitc91516 6:dba3fbdfd5da 150
jmitc91516 6:dba3fbdfd5da 151 Args: the ramp index
jmitc91516 6:dba3fbdfd5da 152 a pointer to a float to contain the upper limit
jmitc91516 6:dba3fbdfd5da 153 (in units of degrees C for column and injector, psi for gas)
jmitc91516 6:dba3fbdfd5da 154
jmitc91516 6:dba3fbdfd5da 155 Returns true if we have a ramp at that index, false if not
jmitc91516 6:dba3fbdfd5da 156 */
jmitc91516 6:dba3fbdfd5da 157 bool MethodRampData::GetRampUpperLimit(unsigned int rampIndex, float *rampUpperLimit)
jmitc91516 6:dba3fbdfd5da 158 {
jmitc91516 6:dba3fbdfd5da 159 if(rampIndex < rampCount) {
jmitc91516 6:dba3fbdfd5da 160 *rampUpperLimit = rampData[rampIndex].rampUpperLimit;
jmitc91516 6:dba3fbdfd5da 161
jmitc91516 6:dba3fbdfd5da 162 return true;
jmitc91516 6:dba3fbdfd5da 163 }
jmitc91516 6:dba3fbdfd5da 164
jmitc91516 6:dba3fbdfd5da 165 // 'else' - no ramp at that index
jmitc91516 6:dba3fbdfd5da 166 *rampUpperLimit = 0.0f;
jmitc91516 6:dba3fbdfd5da 167 return false;
jmitc91516 6:dba3fbdfd5da 168 }
jmitc91516 6:dba3fbdfd5da 169
jmitc91516 6:dba3fbdfd5da 170
jmitc91516 6:dba3fbdfd5da 171 /*
jmitc91516 6:dba3fbdfd5da 172 Gets the upper hold time for the specified ramp, if it exists.
jmitc91516 6:dba3fbdfd5da 173
jmitc91516 6:dba3fbdfd5da 174 Args: the ramp index
jmitc91516 6:dba3fbdfd5da 175 a pointer to an float to contain the upper hold time
jmitc91516 6:dba3fbdfd5da 176 (in units of minutes, to one decimal place)
jmitc91516 6:dba3fbdfd5da 177
jmitc91516 6:dba3fbdfd5da 178 Returns true if we have a ramp at that index, false if not
jmitc91516 6:dba3fbdfd5da 179 */
jmitc91516 6:dba3fbdfd5da 180 bool MethodRampData::GetRampUpperTime(unsigned int rampIndex, float *rampUpperTime)
jmitc91516 6:dba3fbdfd5da 181 {
jmitc91516 6:dba3fbdfd5da 182 if(rampIndex < rampCount) {
jmitc91516 6:dba3fbdfd5da 183 *rampUpperTime = rampData[rampIndex].rampUpperTime;
jmitc91516 6:dba3fbdfd5da 184
jmitc91516 6:dba3fbdfd5da 185 return true;
jmitc91516 6:dba3fbdfd5da 186 }
jmitc91516 6:dba3fbdfd5da 187
jmitc91516 6:dba3fbdfd5da 188 // 'else' - no ramp at that index
jmitc91516 6:dba3fbdfd5da 189 *rampUpperTime = 0.0f;
jmitc91516 6:dba3fbdfd5da 190 return false;
jmitc91516 6:dba3fbdfd5da 191 }
jmitc91516 6:dba3fbdfd5da 192
jmitc91516 6:dba3fbdfd5da 193
jmitc91516 6:dba3fbdfd5da 194 /*
jmitc91516 6:dba3fbdfd5da 195 Updates the easyGUI variables, shown on the relevant EasyGUI Method page, that show the ramp data,
jmitc91516 6:dba3fbdfd5da 196 with the current ramp values, starting at the specified ramp.
jmitc91516 6:dba3fbdfd5da 197
jmitc91516 6:dba3fbdfd5da 198 Args: the index of the first ramp to display (there are up to nine ramps,
jmitc91516 6:dba3fbdfd5da 199 but every EasyGUI Method page can only display a maximum of five,
jmitc91516 6:dba3fbdfd5da 200 so we may have to scroll thrugh them)
jmitc91516 6:dba3fbdfd5da 201
jmitc91516 6:dba3fbdfd5da 202 No return code.
jmitc91516 6:dba3fbdfd5da 203
jmitc91516 6:dba3fbdfd5da 204 Note that it is up to the caller, by calling "NeedToUpdateEasyGUIMethodPageRampVariables",
jmitc91516 6:dba3fbdfd5da 205 to verify that the EasyGUI Method page variables actually need to be updated.
jmitc91516 6:dba3fbdfd5da 206 */
jmitc91516 6:dba3fbdfd5da 207 void MethodRampData::UpdateEasyGUIMethodPageVariables(unsigned int firstRampIndex)
jmitc91516 6:dba3fbdfd5da 208 {
jmitc91516 6:dba3fbdfd5da 209 int rampIndex;
jmitc91516 6:dba3fbdfd5da 210 int lineIndex;
jmitc91516 6:dba3fbdfd5da 211 for (lineIndex = 0, rampIndex = firstRampIndex; (rampIndex < rampCount) && (lineIndex < EASYGUI_RAMP_LINES); ++lineIndex, ++rampIndex) {
jmitc91516 6:dba3fbdfd5da 212 sprintf(easyGUIRampNumber[lineIndex], "%d", (rampIndex + 1)); // Show 1 as the first ramp number, not 0
jmitc91516 6:dba3fbdfd5da 213 sprintf(easyGUIRampRateVariable[lineIndex], easyGUIRampRateSprintfFormat, rampData[rampIndex].rampRate);
jmitc91516 6:dba3fbdfd5da 214 sprintf(easyGUIRampUpperLimitVariable[lineIndex], easyGUIRampUpperLimitSprintfFormat, rampData[rampIndex].rampUpperLimit);
jmitc91516 6:dba3fbdfd5da 215 sprintf(easyGUIRampUpperTimeVariable[lineIndex], easyGUIRampUpperTimeSprintfFormat, rampData[rampIndex].rampUpperTime);
jmitc91516 6:dba3fbdfd5da 216 }
jmitc91516 6:dba3fbdfd5da 217
jmitc91516 6:dba3fbdfd5da 218 // If there are any easyGUI variables left, below the ones we have just updated, clear them
jmitc91516 6:dba3fbdfd5da 219 for (; lineIndex < EASYGUI_RAMP_LINES; ++lineIndex) {
jmitc91516 6:dba3fbdfd5da 220 easyGUIRampNumber[lineIndex][0] = '\0';
jmitc91516 6:dba3fbdfd5da 221 easyGUIRampRateVariable[lineIndex][0] = '\0';
jmitc91516 6:dba3fbdfd5da 222 easyGUIRampUpperLimitVariable[lineIndex][0] = '\0';
jmitc91516 6:dba3fbdfd5da 223 easyGUIRampUpperTimeVariable[lineIndex][0] = '\0';
jmitc91516 6:dba3fbdfd5da 224 }
jmitc91516 8:26e49e6955bd 225
jmitc91516 8:26e49e6955bd 226 if((firstRampIndex & 1) == 0) { // First ramp has an even number - so it appears on an odd-numbered row on the easyGUI page
jmitc91516 8:26e49e6955bd 227 *easyGUIMethodRampOddRowsColour = oddRampEasyGUIColour;
jmitc91516 8:26e49e6955bd 228 *easyGUIMethodRampEvenRowsColour = evenRampEasyGUIColour;
jmitc91516 8:26e49e6955bd 229 } else {
jmitc91516 8:26e49e6955bd 230 *easyGUIMethodRampOddRowsColour = evenRampEasyGUIColour;
jmitc91516 8:26e49e6955bd 231 *easyGUIMethodRampEvenRowsColour = oddRampEasyGUIColour;
jmitc91516 8:26e49e6955bd 232 }
jmitc91516 6:dba3fbdfd5da 233
jmitc91516 6:dba3fbdfd5da 234 needToUpdateEasyGUIMethodPageRampVariables = false;
jmitc91516 6:dba3fbdfd5da 235 }
jmitc91516 6:dba3fbdfd5da 236
jmitc91516 6:dba3fbdfd5da 237
jmitc91516 6:dba3fbdfd5da 238
jmitc91516 6:dba3fbdfd5da 239 /*
jmitc91516 6:dba3fbdfd5da 240 Tells the caller how many ramps are "off screen" in the EasyGUI Method page.
jmitc91516 6:dba3fbdfd5da 241 */
jmitc91516 6:dba3fbdfd5da 242 unsigned int MethodRampData::GetScrollRange(void)
jmitc91516 6:dba3fbdfd5da 243 {
jmitc91516 6:dba3fbdfd5da 244 if(rampCount > EASYGUI_RAMP_LINES) {
jmitc91516 6:dba3fbdfd5da 245 return (rampCount - EASYGUI_RAMP_LINES);
jmitc91516 6:dba3fbdfd5da 246 }
jmitc91516 6:dba3fbdfd5da 247
jmitc91516 6:dba3fbdfd5da 248 // 'else'...
jmitc91516 6:dba3fbdfd5da 249 return 0;
jmitc91516 6:dba3fbdfd5da 250 }
jmitc91516 6:dba3fbdfd5da 251
jmitc91516 6:dba3fbdfd5da 252
jmitc91516 6:dba3fbdfd5da 253 /*
jmitc91516 6:dba3fbdfd5da 254 ColumnMethodRampData - handles the column method, with its own commands to get the ramp data,
jmitc91516 6:dba3fbdfd5da 255 and its own easyGUI variables to display it
jmitc91516 6:dba3fbdfd5da 256 */
jmitc91516 6:dba3fbdfd5da 257
jmitc91516 6:dba3fbdfd5da 258 // Constructor - passed pointers for the USB link to the GC
jmitc91516 6:dba3fbdfd5da 259 ColumnMethodRampData::ColumnMethodRampData(USBDeviceConnected* newUsbDevice, USBHostGC* newUsbHostGC) : MethodRampData(newUsbDevice, newUsbHostGC)
jmitc91516 6:dba3fbdfd5da 260 {
jmitc91516 6:dba3fbdfd5da 261 // Remember there are 5 easyGUI ramp lines (EASYGUI_RAMP_LINES enum)
jmitc91516 6:dba3fbdfd5da 262
jmitc91516 6:dba3fbdfd5da 263 easyGUIRampNumber[0] = GuiVar_columnMethodRampNumber1;
jmitc91516 6:dba3fbdfd5da 264 easyGUIRampNumber[1] = GuiVar_columnMethodRampNumber2;
jmitc91516 6:dba3fbdfd5da 265 easyGUIRampNumber[2] = GuiVar_columnMethodRampNumber3;
jmitc91516 6:dba3fbdfd5da 266 easyGUIRampNumber[3] = GuiVar_columnMethodRampNumber4;
jmitc91516 6:dba3fbdfd5da 267 easyGUIRampNumber[4] = GuiVar_columnMethodRampNumber5;
jmitc91516 6:dba3fbdfd5da 268
jmitc91516 6:dba3fbdfd5da 269 easyGUIRampRateVariable[0] = GuiVar_columnMethodRampRate1;
jmitc91516 6:dba3fbdfd5da 270 easyGUIRampRateVariable[1] = GuiVar_columnMethodRampRate2;
jmitc91516 6:dba3fbdfd5da 271 easyGUIRampRateVariable[2] = GuiVar_columnMethodRampRate3;
jmitc91516 6:dba3fbdfd5da 272 easyGUIRampRateVariable[3] = GuiVar_columnMethodRampRate4;
jmitc91516 6:dba3fbdfd5da 273 easyGUIRampRateVariable[4] = GuiVar_columnMethodRampRate5;
jmitc91516 6:dba3fbdfd5da 274
jmitc91516 6:dba3fbdfd5da 275 easyGUIRampUpperLimitVariable[0] = GuiVar_columnMethodRampUpper1;
jmitc91516 6:dba3fbdfd5da 276 easyGUIRampUpperLimitVariable[1] = GuiVar_columnMethodRampUpper2;
jmitc91516 6:dba3fbdfd5da 277 easyGUIRampUpperLimitVariable[2] = GuiVar_columnMethodRampUpper3;
jmitc91516 6:dba3fbdfd5da 278 easyGUIRampUpperLimitVariable[3] = GuiVar_columnMethodRampUpper4;
jmitc91516 6:dba3fbdfd5da 279 easyGUIRampUpperLimitVariable[4] = GuiVar_columnMethodRampUpper5;
jmitc91516 6:dba3fbdfd5da 280
jmitc91516 6:dba3fbdfd5da 281 easyGUIRampUpperTimeVariable[0] = GuiVar_columnMethodRampHold1;
jmitc91516 6:dba3fbdfd5da 282 easyGUIRampUpperTimeVariable[1] = GuiVar_columnMethodRampHold2;
jmitc91516 6:dba3fbdfd5da 283 easyGUIRampUpperTimeVariable[2] = GuiVar_columnMethodRampHold3;
jmitc91516 6:dba3fbdfd5da 284 easyGUIRampUpperTimeVariable[3] = GuiVar_columnMethodRampHold4;
jmitc91516 6:dba3fbdfd5da 285 easyGUIRampUpperTimeVariable[4] = GuiVar_columnMethodRampHold5;
jmitc91516 6:dba3fbdfd5da 286
jmitc91516 6:dba3fbdfd5da 287 // When we write our internal (float) values to the EasyGUI (string) variables,
jmitc91516 6:dba3fbdfd5da 288 // these are the format strings we use
jmitc91516 6:dba3fbdfd5da 289 strcpy(easyGUIRampRateSprintfFormat, "%.0f"); // degrees C per minute - a whole number
jmitc91516 6:dba3fbdfd5da 290 strcpy(easyGUIRampUpperLimitSprintfFormat, "%.0f"); // degrees C - a whole number
jmitc91516 6:dba3fbdfd5da 291 strcpy(easyGUIRampUpperTimeSprintfFormat, "%.1f"); // In minutes, but in "units" of 0.1 minute
jmitc91516 8:26e49e6955bd 292
jmitc91516 8:26e49e6955bd 293 easyGUIMethodRampOddRowsColour = &GuiVar_columnMethodRampOddRowsColour;
jmitc91516 8:26e49e6955bd 294 easyGUIMethodRampEvenRowsColour = &GuiVar_columnMethodRampEvenRowsColour;
jmitc91516 6:dba3fbdfd5da 295 }
jmitc91516 6:dba3fbdfd5da 296
jmitc91516 6:dba3fbdfd5da 297 float ColumnMethodRampData::GetRampRateFromGC(unsigned int rampIndex)
jmitc91516 6:dba3fbdfd5da 298 {
jmitc91516 6:dba3fbdfd5da 299 // The column method ramp rate is obtained from the GC in units of degree C / min
jmitc91516 6:dba3fbdfd5da 300 return (float)GetIntRampValueFromGC("GRP", rampIndex);
jmitc91516 6:dba3fbdfd5da 301 }
jmitc91516 6:dba3fbdfd5da 302
jmitc91516 6:dba3fbdfd5da 303
jmitc91516 6:dba3fbdfd5da 304 float ColumnMethodRampData::GetRampUpperLimitFromGC(unsigned int rampIndex)
jmitc91516 6:dba3fbdfd5da 305 {
jmitc91516 6:dba3fbdfd5da 306 // The column method ramp upper limit is a temperature, obtained from the GC in units of degree C
jmitc91516 6:dba3fbdfd5da 307 return (float)GetIntRampValueFromGC("GRC", rampIndex);
jmitc91516 6:dba3fbdfd5da 308 }
jmitc91516 6:dba3fbdfd5da 309
jmitc91516 6:dba3fbdfd5da 310
jmitc91516 6:dba3fbdfd5da 311 float ColumnMethodRampData::GetRampUpperTimeFromGC(unsigned int rampIndex)
jmitc91516 6:dba3fbdfd5da 312 {
jmitc91516 6:dba3fbdfd5da 313 // The column method ramp upper time is obtained from the GC in units of 0.1 minute
jmitc91516 6:dba3fbdfd5da 314 return (((float)GetIntRampValueFromGC("GRS", rampIndex)) / 10.0f);
jmitc91516 6:dba3fbdfd5da 315 }
jmitc91516 6:dba3fbdfd5da 316
jmitc91516 6:dba3fbdfd5da 317
jmitc91516 6:dba3fbdfd5da 318 /*
jmitc91516 6:dba3fbdfd5da 319 InjectorMethodRampData - handles the injector method, with its own commands to get the ramp data,
jmitc91516 6:dba3fbdfd5da 320 and its own easyGUI variables to display it
jmitc91516 6:dba3fbdfd5da 321 */
jmitc91516 6:dba3fbdfd5da 322
jmitc91516 6:dba3fbdfd5da 323 // Constructor - passed pointers for the USB link to the GC
jmitc91516 6:dba3fbdfd5da 324 InjectorMethodRampData::InjectorMethodRampData(USBDeviceConnected* newUsbDevice, USBHostGC* newUsbHostGC) : MethodRampData(newUsbDevice, newUsbHostGC)
jmitc91516 6:dba3fbdfd5da 325 {
jmitc91516 6:dba3fbdfd5da 326 // Remember there are 5 easyGUI ramp lines (EASYGUI_RAMP_LINES enum)
jmitc91516 6:dba3fbdfd5da 327
jmitc91516 6:dba3fbdfd5da 328 // TODO: insert the correct easyGUI variables below
jmitc91516 6:dba3fbdfd5da 329 easyGUIRampNumber[0] = GuiVar_injectorMethodRampNumber1;
jmitc91516 6:dba3fbdfd5da 330 easyGUIRampNumber[1] = GuiVar_injectorMethodRampNumber2;
jmitc91516 6:dba3fbdfd5da 331 easyGUIRampNumber[2] = GuiVar_injectorMethodRampNumber3;
jmitc91516 6:dba3fbdfd5da 332 easyGUIRampNumber[3] = GuiVar_injectorMethodRampNumber4;
jmitc91516 6:dba3fbdfd5da 333 easyGUIRampNumber[4] = GuiVar_injectorMethodRampNumber5;
jmitc91516 6:dba3fbdfd5da 334
jmitc91516 6:dba3fbdfd5da 335 easyGUIRampRateVariable[0] = GuiVar_injectorMethodRampRate1;
jmitc91516 6:dba3fbdfd5da 336 easyGUIRampRateVariable[1] = GuiVar_injectorMethodRampRate2;
jmitc91516 6:dba3fbdfd5da 337 easyGUIRampRateVariable[2] = GuiVar_injectorMethodRampRate3;
jmitc91516 6:dba3fbdfd5da 338 easyGUIRampRateVariable[3] = GuiVar_injectorMethodRampRate4;
jmitc91516 6:dba3fbdfd5da 339 easyGUIRampRateVariable[4] = GuiVar_injectorMethodRampRate5;
jmitc91516 6:dba3fbdfd5da 340
jmitc91516 6:dba3fbdfd5da 341 easyGUIRampUpperLimitVariable[0] = GuiVar_injectorMethodRampUpper1;
jmitc91516 6:dba3fbdfd5da 342 easyGUIRampUpperLimitVariable[1] = GuiVar_injectorMethodRampUpper2;
jmitc91516 6:dba3fbdfd5da 343 easyGUIRampUpperLimitVariable[2] = GuiVar_injectorMethodRampUpper3;
jmitc91516 6:dba3fbdfd5da 344 easyGUIRampUpperLimitVariable[3] = GuiVar_injectorMethodRampUpper4;
jmitc91516 6:dba3fbdfd5da 345 easyGUIRampUpperLimitVariable[4] = GuiVar_injectorMethodRampUpper5;
jmitc91516 6:dba3fbdfd5da 346
jmitc91516 6:dba3fbdfd5da 347 easyGUIRampUpperTimeVariable[0] = GuiVar_injectorMethodRampHold1;
jmitc91516 6:dba3fbdfd5da 348 easyGUIRampUpperTimeVariable[1] = GuiVar_injectorMethodRampHold2;
jmitc91516 6:dba3fbdfd5da 349 easyGUIRampUpperTimeVariable[2] = GuiVar_injectorMethodRampHold3;
jmitc91516 6:dba3fbdfd5da 350 easyGUIRampUpperTimeVariable[3] = GuiVar_injectorMethodRampHold4;
jmitc91516 6:dba3fbdfd5da 351 easyGUIRampUpperTimeVariable[4] = GuiVar_injectorMethodRampHold5;
jmitc91516 6:dba3fbdfd5da 352
jmitc91516 6:dba3fbdfd5da 353 // When we write our internal (float) values to the EasyGUI (string) variables,
jmitc91516 6:dba3fbdfd5da 354 // these are the format strings we use
jmitc91516 6:dba3fbdfd5da 355 strcpy(easyGUIRampRateSprintfFormat, "%.0f"); // degrees C per minute - a whole number
jmitc91516 6:dba3fbdfd5da 356 strcpy(easyGUIRampUpperLimitSprintfFormat, "%.0f"); // degrees C - a whole number
jmitc91516 6:dba3fbdfd5da 357 strcpy(easyGUIRampUpperTimeSprintfFormat, "%.1f"); // In minutes, but in "units" of 0.1 minute
jmitc91516 8:26e49e6955bd 358
jmitc91516 8:26e49e6955bd 359 easyGUIMethodRampOddRowsColour = &GuiVar_injectorMethodRampOddRowsColour;
jmitc91516 8:26e49e6955bd 360 easyGUIMethodRampEvenRowsColour = &GuiVar_injectorMethodRampEvenRowsColour;
jmitc91516 6:dba3fbdfd5da 361 }
jmitc91516 6:dba3fbdfd5da 362
jmitc91516 6:dba3fbdfd5da 363 float InjectorMethodRampData::GetRampRateFromGC(unsigned int rampIndex)
jmitc91516 6:dba3fbdfd5da 364 {
jmitc91516 6:dba3fbdfd5da 365 // The injector method ramp rate is obtained from the GC in units of degree C / min
jmitc91516 6:dba3fbdfd5da 366 return (float)GetIntRampValueFromGC("GIP", rampIndex);
jmitc91516 6:dba3fbdfd5da 367 }
jmitc91516 6:dba3fbdfd5da 368
jmitc91516 6:dba3fbdfd5da 369
jmitc91516 6:dba3fbdfd5da 370 float InjectorMethodRampData::GetRampUpperLimitFromGC(unsigned int rampIndex)
jmitc91516 6:dba3fbdfd5da 371 {
jmitc91516 6:dba3fbdfd5da 372 // The injector method ramp upper limit is a temperature, obtained from the GC in units of degree C
jmitc91516 6:dba3fbdfd5da 373 return (float)GetIntRampValueFromGC("GIC", rampIndex);
jmitc91516 6:dba3fbdfd5da 374 }
jmitc91516 6:dba3fbdfd5da 375
jmitc91516 6:dba3fbdfd5da 376
jmitc91516 6:dba3fbdfd5da 377 float InjectorMethodRampData::GetRampUpperTimeFromGC(unsigned int rampIndex)
jmitc91516 6:dba3fbdfd5da 378 {
jmitc91516 6:dba3fbdfd5da 379 // The injector method ramp upper time is obtained from the GC in units of 0.1 minute
jmitc91516 6:dba3fbdfd5da 380 return (((float)GetIntRampValueFromGC("GIS", rampIndex)) / 10.0f);
jmitc91516 6:dba3fbdfd5da 381 }
jmitc91516 6:dba3fbdfd5da 382
jmitc91516 6:dba3fbdfd5da 383
jmitc91516 6:dba3fbdfd5da 384 /*
jmitc91516 6:dba3fbdfd5da 385 GasMethodRampData - handles the gas method, with its own commands to get the ramp data,
jmitc91516 6:dba3fbdfd5da 386 and its own easyGUI variables to display it
jmitc91516 6:dba3fbdfd5da 387 */
jmitc91516 6:dba3fbdfd5da 388
jmitc91516 6:dba3fbdfd5da 389 // Constructor - passed pointers for the USB link to the GC
jmitc91516 6:dba3fbdfd5da 390 GasMethodRampData::GasMethodRampData(USBDeviceConnected* newUsbDevice, USBHostGC* newUsbHostGC) : MethodRampData(newUsbDevice, newUsbHostGC)
jmitc91516 6:dba3fbdfd5da 391 {
jmitc91516 6:dba3fbdfd5da 392 // Remember there are 5 easyGUI ramp lines (EASYGUI_RAMP_LINES enum)
jmitc91516 6:dba3fbdfd5da 393
jmitc91516 6:dba3fbdfd5da 394 // TODO: insert the correct easyGUI variables below
jmitc91516 6:dba3fbdfd5da 395 easyGUIRampNumber[0] = GuiVar_gasMethodRampNumber1;
jmitc91516 6:dba3fbdfd5da 396 easyGUIRampNumber[1] = GuiVar_gasMethodRampNumber2;
jmitc91516 6:dba3fbdfd5da 397 easyGUIRampNumber[2] = GuiVar_gasMethodRampNumber3;
jmitc91516 6:dba3fbdfd5da 398 easyGUIRampNumber[3] = GuiVar_gasMethodRampNumber4;
jmitc91516 6:dba3fbdfd5da 399 easyGUIRampNumber[4] = GuiVar_gasMethodRampNumber5;
jmitc91516 6:dba3fbdfd5da 400
jmitc91516 6:dba3fbdfd5da 401 easyGUIRampRateVariable[0] = GuiVar_gasMethodRampRate1;
jmitc91516 6:dba3fbdfd5da 402 easyGUIRampRateVariable[1] = GuiVar_gasMethodRampRate2;
jmitc91516 6:dba3fbdfd5da 403 easyGUIRampRateVariable[2] = GuiVar_gasMethodRampRate3;
jmitc91516 6:dba3fbdfd5da 404 easyGUIRampRateVariable[3] = GuiVar_gasMethodRampRate4;
jmitc91516 6:dba3fbdfd5da 405 easyGUIRampRateVariable[4] = GuiVar_gasMethodRampRate5;
jmitc91516 6:dba3fbdfd5da 406
jmitc91516 6:dba3fbdfd5da 407 easyGUIRampUpperLimitVariable[0] = GuiVar_gasMethodRampUpper1;
jmitc91516 6:dba3fbdfd5da 408 easyGUIRampUpperLimitVariable[1] = GuiVar_gasMethodRampUpper2;
jmitc91516 6:dba3fbdfd5da 409 easyGUIRampUpperLimitVariable[2] = GuiVar_gasMethodRampUpper3;
jmitc91516 6:dba3fbdfd5da 410 easyGUIRampUpperLimitVariable[3] = GuiVar_gasMethodRampUpper4;
jmitc91516 6:dba3fbdfd5da 411 easyGUIRampUpperLimitVariable[4] = GuiVar_gasMethodRampUpper5;
jmitc91516 6:dba3fbdfd5da 412
jmitc91516 6:dba3fbdfd5da 413 easyGUIRampUpperTimeVariable[0] = GuiVar_gasMethodRampHold1;
jmitc91516 6:dba3fbdfd5da 414 easyGUIRampUpperTimeVariable[1] = GuiVar_gasMethodRampHold2;
jmitc91516 6:dba3fbdfd5da 415 easyGUIRampUpperTimeVariable[2] = GuiVar_gasMethodRampHold3;
jmitc91516 6:dba3fbdfd5da 416 easyGUIRampUpperTimeVariable[3] = GuiVar_gasMethodRampHold4;
jmitc91516 6:dba3fbdfd5da 417 easyGUIRampUpperTimeVariable[4] = GuiVar_gasMethodRampHold5;
jmitc91516 6:dba3fbdfd5da 418
jmitc91516 6:dba3fbdfd5da 419 // When we write our internal (float) values to the EasyGUI (string) variables,
jmitc91516 6:dba3fbdfd5da 420 // these are the format strings we use
jmitc91516 6:dba3fbdfd5da 421 strcpy(easyGUIRampRateSprintfFormat, "%.2f"); // In "units" of 0.01 psi per minute - i.e. 2 decimal places
jmitc91516 6:dba3fbdfd5da 422 strcpy(easyGUIRampUpperLimitSprintfFormat, "%.1f"); // In "units" of 0.1 psi - so 1 decimal place
jmitc91516 6:dba3fbdfd5da 423 strcpy(easyGUIRampUpperTimeSprintfFormat, "%.1f"); // In minutes, but in "units" of 0.1 minute
jmitc91516 8:26e49e6955bd 424
jmitc91516 8:26e49e6955bd 425 easyGUIMethodRampOddRowsColour = &GuiVar_gasMethodRampOddRowsColour;
jmitc91516 8:26e49e6955bd 426 easyGUIMethodRampEvenRowsColour = &GuiVar_gasMethodRampEvenRowsColour;
jmitc91516 6:dba3fbdfd5da 427 }
jmitc91516 6:dba3fbdfd5da 428
jmitc91516 6:dba3fbdfd5da 429 float GasMethodRampData::GetRampRateFromGC(unsigned int rampIndex)
jmitc91516 6:dba3fbdfd5da 430 {
jmitc91516 6:dba3fbdfd5da 431 // The gas method ramp rate is obtained from the GC in units of 0.01 psi / min
jmitc91516 6:dba3fbdfd5da 432 return (((float)GetIntRampValueFromGC("GPR", rampIndex)) / 100.0f);
jmitc91516 6:dba3fbdfd5da 433 }
jmitc91516 6:dba3fbdfd5da 434
jmitc91516 6:dba3fbdfd5da 435
jmitc91516 6:dba3fbdfd5da 436 float GasMethodRampData::GetRampUpperLimitFromGC(unsigned int rampIndex)
jmitc91516 6:dba3fbdfd5da 437 {
jmitc91516 6:dba3fbdfd5da 438 // The gas method ramp upper limit is a pressure, obtained from the GC in units of 0.1 psi
jmitc91516 6:dba3fbdfd5da 439 return (((float)GetIntRampValueFromGC("GPU", rampIndex)) / 10.0f);
jmitc91516 6:dba3fbdfd5da 440 }
jmitc91516 6:dba3fbdfd5da 441
jmitc91516 6:dba3fbdfd5da 442
jmitc91516 6:dba3fbdfd5da 443 float GasMethodRampData::GetRampUpperTimeFromGC(unsigned int rampIndex)
jmitc91516 6:dba3fbdfd5da 444 {
jmitc91516 6:dba3fbdfd5da 445 // The gas method ramp upper time is obtained from the GC in units of 0.1 minute.
jmitc91516 6:dba3fbdfd5da 446 // *** There does not seem to be a separate GC command for this in the gas method. ***
jmitc91516 6:dba3fbdfd5da 447 // *** Using the command for the column method until we clarify this. ***
jmitc91516 6:dba3fbdfd5da 448 return (((float)GetIntRampValueFromGC("GRS", rampIndex)) / 10.0f);
jmitc91516 6:dba3fbdfd5da 449 }
jmitc91516 6:dba3fbdfd5da 450