Repository for import to local machine
Dependencies: DMBasicGUI DMSupport
MethodRampData.cpp@8:26e49e6955bd, 2017-07-31 (annotated)
- 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?
User | Revision | Line number | New 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 |