Merge branch 'master' into powerPulses

This commit is contained in:
Thomas Gimpel
2019-12-28 14:59:36 +01:00
16 changed files with 3655 additions and 3610 deletions

View File

@@ -1,5 +1,5 @@
FROM ubuntu:rolling FROM ubuntu:rolling
MAINTAINER Ben V. Brown <ralim@ralimtek.com> LABEL maintainer="Ben V. Brown <ralim@ralimtek.com>"
WORKDIR /build WORKDIR /build
# Setup the ARM GCC toolchain # Setup the ARM GCC toolchain
@@ -9,19 +9,13 @@ RUN apt-get update && \
apt-get upgrade -y && \ apt-get upgrade -y && \
apt-get install -y \ apt-get install -y \
make \ make \
git \
bzip2 \ bzip2 \
git \
golang \
python3 \ python3 \
wget && \ wget && \
apt-get clean && \ apt-get clean && \
wget -qO- https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2 | tar -xj wget -qO- https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2 | tar -xj
# Add compiler to the path # Add compiler to the path
ENV PATH "/build/gcc-arm-none-eabi-9-2019-q4-major/bin:$PATH" ENV PATH "/build/gcc-arm-none-eabi-9-2019-q4-major/bin:$PATH"
# Get the github release tool
RUN go get -u github.com/aktau/github-release
COPY . /build/source COPY . /build/source
COPY ./ci /build/ci COPY ./ci /build/ci

View File

@@ -96,6 +96,8 @@ def getConstants():
consants.append(('SymbolCellCount', 'S')) consants.append(('SymbolCellCount', 'S'))
consants.append(('SymbolVersionNumber', 'V2.06')) consants.append(('SymbolVersionNumber', 'V2.06'))
return consants return consants
def getTipModelEnumTS80(): def getTipModelEnumTS80():
constants = [] constants = []
constants.append("B02") constants.append("B02")
@@ -104,6 +106,7 @@ def getTipModelEnumTS80():
constants.append("User") # User constants.append("User") # User
return constants return constants
def getTipModelEnumTS100(): def getTipModelEnumTS100():
constants = [] constants = []
constants.append("B02") constants.append("B02")
@@ -116,6 +119,7 @@ def getTipModelEnumTS100():
constants.append("User") constants.append("User")
return constants return constants
def getDebugMenu(): def getDebugMenu():
constants = [] constants = []
constants.append(datetime.today().strftime('%d-%m-%y')) constants.append(datetime.today().strftime('%d-%m-%y'))
@@ -198,12 +202,11 @@ def getLetterCounts(defs, lang):
return symbolCounts return symbolCounts
def getFontMapAndTable(textList): def getFontMapAndTable(textList):
# the text list is sorted # the text list is sorted
# allocate out these in their order as number codes # allocate out these in their order as number codes
symbolMap = {} symbolMap = {}
symbolMap['\n'] = '\\x01' symbolMap['\n'] = '\\x01' # Force insert the newline char
index = 2 # start at 2, as 0= null terminator,1 = new line index = 2 # start at 2, as 0= null terminator,1 = new line
forcedFirstSymbols = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] forcedFirstSymbols = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# enforce numbers are first # enforce numbers are first
@@ -229,12 +232,14 @@ def getFontMapAndTable(textList):
print('Missing Large font element for {}'.format(sym)) print('Missing Large font element for {}'.format(sym))
exit(1) exit(1)
fontLine = fontTable[sym] fontLine = fontTable[sym]
fontTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym)) fontTableStrings.append(
fontLine + "//{} -> {}".format(symbolMap[sym], sym))
if sym not in fontSmallTable: if sym not in fontSmallTable:
print('Missing Small font element for {}'.format(sym)) print('Missing Small font element for {}'.format(sym))
exit(1) exit(1)
fontLine = fontSmallTable[sym] fontLine = fontSmallTable[sym]
fontSmallTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym)) fontSmallTableStrings.append(
fontLine + "//{} -> {}".format(symbolMap[sym], sym))
for sym in textList: for sym in textList:
if sym not in fontTable: if sym not in fontTable:
@@ -242,12 +247,14 @@ def getFontMapAndTable(textList):
exit(1) exit(1)
if sym not in forcedFirstSymbols: if sym not in forcedFirstSymbols:
fontLine = fontTable[sym] fontLine = fontTable[sym]
fontTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym)) fontTableStrings.append(
fontLine + "//{} -> {}".format(symbolMap[sym], sym))
if sym not in fontSmallTable: if sym not in fontSmallTable:
print('Missing Small font element for {}'.format(sym)) print('Missing Small font element for {}'.format(sym))
exit(1) exit(1)
fontLine = fontSmallTable[sym] fontLine = fontSmallTable[sym]
fontSmallTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym)) fontSmallTableStrings.append(
fontLine + "//{} -> {}".format(symbolMap[sym], sym))
outputTable = "const uint8_t USER_FONT_12[] = {" + to_unicode("\n") outputTable = "const uint8_t USER_FONT_12[] = {" + to_unicode("\n")
for line in fontTableStrings: for line in fontTableStrings:
# join font table int one large string # join font table int one large string
@@ -290,7 +297,6 @@ def writeLanguage(languageCode, defs, f):
f.write(to_unicode("// ---- " + langName + " ----\n\n")) f.write(to_unicode("// ---- " + langName + " ----\n\n"))
# ----- Writing SettingsDescriptions # ----- Writing SettingsDescriptions
obj = lang['menuOptions'] obj = lang['menuOptions']
f.write(to_unicode("const char* SettingsDescriptions[] = {\n")) f.write(to_unicode("const char* SettingsDescriptions[] = {\n"))
@@ -316,14 +322,15 @@ def writeLanguage(languageCode, defs, f):
for mod in defs['messages']: for mod in defs['messages']:
eid = mod['id'] eid = mod['id']
if eid not in obj: sourceText = ""
if 'default' in mod:
sourceText = (mod['default'])
if eid in obj:
sourceText = (obj[eid])
translatedText = convStr(symbolConversionTable, sourceText)
f.write( f.write(
to_unicode("const char* " + eid + " = \"" + to_unicode("const char* " + eid + " = \"" +
convStr(symbolConversionTable, (mod['default'])) + "\";"+ "//{} \n".format(mod['default']))) translatedText + "\";" + "//{} \n".format(sourceText.replace('\n', '_'))))
else:
f.write(
to_unicode("const char* " + eid + " = \"" +
convStr(symbolConversionTable, (obj[eid])) + "\";"+ "//{} \n".format(obj[eid])))
f.write(to_unicode("\n")) f.write(to_unicode("\n"))
@@ -352,10 +359,12 @@ def writeLanguage(languageCode, defs, f):
f.write(to_unicode("const char* TipModelStrings[] = {\n")) f.write(to_unicode("const char* TipModelStrings[] = {\n"))
f.write(to_unicode("#ifdef MODEL_TS100\n")) f.write(to_unicode("#ifdef MODEL_TS100\n"))
for c in getTipModelEnumTS100(): for c in getTipModelEnumTS100():
f.write(to_unicode("\t \"" + convStr(symbolConversionTable, c) + "\","+ "//{} \n".format(c))) f.write(to_unicode("\t \"" + convStr(symbolConversionTable,
c) + "\"," + "//{} \n".format(c)))
f.write(to_unicode("#else\n")) f.write(to_unicode("#else\n"))
for c in getTipModelEnumTS80(): for c in getTipModelEnumTS80():
f.write(to_unicode("\t \"" + convStr(symbolConversionTable, c) + "\","+ "//{} \n".format(c))) f.write(to_unicode("\t \"" + convStr(symbolConversionTable,
c) + "\"," + "//{} \n".format(c)))
f.write(to_unicode("#endif\n")) f.write(to_unicode("#endif\n"))
f.write(to_unicode("};\n\n")) f.write(to_unicode("};\n\n"))
@@ -364,7 +373,8 @@ def writeLanguage(languageCode, defs, f):
f.write(to_unicode("const char* DebugMenu[] = {\n")) f.write(to_unicode("const char* DebugMenu[] = {\n"))
for c in getDebugMenu(): for c in getDebugMenu():
f.write(to_unicode("\t \"" + convStr(symbolConversionTable, c) + "\","+ "//{} \n".format(c))) f.write(to_unicode("\t \"" + convStr(symbolConversionTable,
c) + "\"," + "//{} \n".format(c)))
f.write(to_unicode("};\n\n")) f.write(to_unicode("};\n\n"))
# ----- Menu Options # ----- Menu Options

View File

@@ -22,7 +22,8 @@
"SolderingAdvancedPowerPrompt": "Power: ", "SolderingAdvancedPowerPrompt": "Power: ",
"OffString": "Off", "OffString": "Off",
"ResetOKMessage": "Reset OK", "ResetOKMessage": "Reset OK",
"YourGainMessage":"Your Gain:" "YourGainMessage": "Your Gain:",
"SettingsResetMessage": "Settings were\nreset!"
}, },
"characters": { "characters": {
"SettingRightChar": "R", "SettingRightChar": "R",

View File

@@ -89,6 +89,11 @@ var def =
"id": "YourGainMessage", "id": "YourGainMessage",
"maxLen": 8, "maxLen": 8,
"default": "Your Gain" "default": "Your Gain"
},
{
"id": "SettingsResetMessage",
"maxLen": 16,
"default": "Settings were\nreset!"
} }
], ],
"characters": [ "characters": [

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.980996604" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-348041022799175818" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>

View File

@@ -11,7 +11,7 @@
#define SETTINGS_H_ #define SETTINGS_H_
#include <stdint.h> #include <stdint.h>
#include "stm32f1xx_hal.h" #include "stm32f1xx_hal.h"
#define SETTINGSVERSION ( 0x1A ) #define SETTINGSVERSION ( 0x1B )
/*Change this if you change the struct below to prevent people getting \ /*Change this if you change the struct below to prevent people getting \
out of sync*/ out of sync*/
@@ -53,7 +53,7 @@ typedef struct {
extern volatile systemSettingsType systemSettings; extern volatile systemSettingsType systemSettings;
void saveSettings(); void saveSettings();
void restoreSettings(); bool restoreSettings();
uint8_t lookupVoltageLevel(uint8_t level); uint8_t lookupVoltageLevel(uint8_t level);
void resetSettings(); void resetSettings();
bool showBootLogoIfavailable(); bool showBootLogoIfavailable();

View File

@@ -43,6 +43,7 @@ extern const char* SolderingAdvancedPowerPrompt;
extern const char* OffString; extern const char* OffString;
extern const char* ResetOKMessage; extern const char* ResetOKMessage;
extern const char* YourGainMessage; extern const char* YourGainMessage;
extern const char* SettingsResetMessage;
extern const char* SettingTrueChar; extern const char* SettingTrueChar;
extern const char* SettingFalseChar; extern const char* SettingFalseChar;

View File

@@ -6,6 +6,7 @@
#include "Setup.h" #include "Setup.h"
extern uint8_t PCBVersion; extern uint8_t PCBVersion;
extern uint32_t currentTempTargetDegC; extern uint32_t currentTempTargetDegC;
extern bool settingsWereReset;
enum ButtonState { enum ButtonState {
BUTTON_NONE = 0, /* No buttons pressed / < filter time*/ BUTTON_NONE = 0, /* No buttons pressed / < filter time*/
BUTTON_F_SHORT = 1, /* User has pressed the front button*/ BUTTON_F_SHORT = 1, /* User has pressed the front button*/

View File

@@ -702,6 +702,17 @@ void startGUITask(void const *argument __unused) {
ticks = xTaskGetTickCount(); // make timeout now so we will exit ticks = xTaskGetTickCount(); // make timeout now so we will exit
GUIDelay(); GUIDelay();
} }
if (settingsWereReset) {
//Display alert settings were reset
OLED::setFont(1);
OLED::setCursor(0, 0);
OLED::print(SettingsResetMessage);
OLED::refresh();
waitForButtonPressOrTimeout(1000);
}
if (systemSettings.autoStartMode) { if (systemSettings.autoStartMode) {
// jump directly to the autostart mode // jump directly to the autostart mode
if (systemSettings.autoStartMode == 1) if (systemSettings.autoStartMode == 1)
@@ -756,7 +767,6 @@ void startGUITask(void const *argument __unused) {
break; break;
case BUTTON_B_SHORT: case BUTTON_B_SHORT:
enterSettingsMenu(); // enter the settings menu enterSettingsMenu(); // enter the settings menu
saveSettings();
buttonLockout = true; buttonLockout = true;
break; break;
default: default:

View File

@@ -155,7 +155,17 @@ void OLED::setFont(uint8_t fontNumber) {
fontWidth = 12; fontWidth = 12;
} }
} }
inline void stripLeaderZeros(char *buffer) {
//Removing the leading zero's by swapping them to SymbolSpace
// Stop 1 short so that we dont blank entire number if its zero
for (int i = 0; i < 6; i++) {
if (buffer[i] == 2) {
buffer[i] = SymbolSpace[0];
} else {
return;
}
}
}
// maximum places is 5 // maximum places is 5
void OLED::printNumber(uint16_t number, uint8_t places) { void OLED::printNumber(uint16_t number, uint8_t places) {
char buffer[7] = { 0 }; char buffer[7] = { 0 };
@@ -185,14 +195,7 @@ void OLED::printNumber(uint16_t number, uint8_t places) {
} }
buffer[0] = 2 + number % 10; buffer[0] = 2 + number % 10;
//Removing the leading zero's by swapping them to SymbolSpace stripLeaderZeros(buffer);
for (int i = 0; i < 7; i++) {
if (buffer[i] == 2) {
buffer[i] = SymbolSpace[0];
} else {
break;
}
}
print(buffer); print(buffer);
} }

View File

@@ -25,8 +25,8 @@ void saveSettings() {
pEraseInit.PageAddress = FLASH_ADDR; pEraseInit.PageAddress = FLASH_ADDR;
uint32_t failingAddress = 0; uint32_t failingAddress = 0;
HAL_IWDG_Refresh(&hiwdg); HAL_IWDG_Refresh(&hiwdg);
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGERR | __HAL_FLASH_CLEAR_FLAG(
FLASH_FLAG_BSY); FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGERR | FLASH_FLAG_BSY);
HAL_FLASH_Unlock(); HAL_FLASH_Unlock();
HAL_Delay(10); HAL_Delay(10);
HAL_IWDG_Refresh(&hiwdg); HAL_IWDG_Refresh(&hiwdg);
@@ -45,7 +45,7 @@ void saveSettings() {
HAL_FLASH_Lock(); HAL_FLASH_Lock();
} }
void restoreSettings() { bool restoreSettings() {
// We read the flash // We read the flash
uint16_t *data = (uint16_t*) &systemSettings; uint16_t *data = (uint16_t*) &systemSettings;
for (uint8_t i = 0; i < (sizeof(systemSettingsType) / 2); i++) { for (uint8_t i = 0; i < (sizeof(systemSettingsType) / 2); i++) {
@@ -57,7 +57,9 @@ void restoreSettings() {
if (systemSettings.version != SETTINGSVERSION) { if (systemSettings.version != SETTINGSVERSION) {
// probably not setup // probably not setup
resetSettings(); resetSettings();
return true;
} }
return false;
} }
// Lookup function for cutoff setting -> X10 voltage // Lookup function for cutoff setting -> X10 voltage
/* /*
@@ -75,8 +77,7 @@ uint8_t lookupVoltageLevel(uint8_t level) {
} }
void resetSettings() { void resetSettings() {
memset((void*) &systemSettings, 0, sizeof(systemSettingsType)); memset((void*) &systemSettings, 0, sizeof(systemSettingsType));
systemSettings.SleepTemp = systemSettings.SleepTemp = 150; // Temperature the iron sleeps at - default 150.0 C
150; // Temperature the iron sleeps at - default 150.0 C
systemSettings.SleepTime = 6; // How many seconds/minutes we wait until going systemSettings.SleepTime = 6; // How many seconds/minutes we wait until going
// to sleep - default 1 min // to sleep - default 1 min
systemSettings.SolderingTemp = 320; // Default soldering temp is 320.0 C systemSettings.SolderingTemp = 320; // Default soldering temp is 320.0 C
@@ -84,8 +85,7 @@ void resetSettings() {
systemSettings.version = systemSettings.version =
SETTINGSVERSION; // Store the version number to allow for easier upgrades SETTINGSVERSION; // Store the version number to allow for easier upgrades
systemSettings.detailedSoldering = 0; // Detailed soldering screen systemSettings.detailedSoldering = 0; // Detailed soldering screen
systemSettings.detailedIDLE = systemSettings.detailedIDLE = 0; // Detailed idle screen (off for first time users)
0; // Detailed idle screen (off for first time users)
systemSettings.OrientationMode = 2; // Default to automatic systemSettings.OrientationMode = 2; // Default to automatic
systemSettings.sensitivity = 7; // Default high sensitivity systemSettings.sensitivity = 7; // Default high sensitivity
#ifdef MODEL_TS80 #ifdef MODEL_TS80
@@ -94,26 +94,23 @@ void resetSettings() {
#else #else
systemSettings.voltageDiv = 467; // Default divider from schematic systemSettings.voltageDiv = 467; // Default divider from schematic
#endif #endif
systemSettings.ShutdownTime = systemSettings.ShutdownTime = 10; // How many minutes until the unit turns itself off
10; // How many minutes until the unit turns itself off systemSettings.boostModeEnabled = 1; // Default to having boost mode on as most people prefer it
systemSettings.boostModeEnabled =
1; // Default to having boost mode on as most people prefer it
systemSettings.BoostTemp = 420; // default to 400C systemSettings.BoostTemp = 420; // default to 400C
systemSettings.autoStartMode = 0; // Auto start off for safety systemSettings.autoStartMode = 0; // Auto start off for safety
systemSettings.coolingTempBlink = systemSettings.coolingTempBlink = 0; // Blink the temperature on the cooling screen when its > 50C
0; // Blink the temperature on the cooling screen when its > 50C
systemSettings.temperatureInF = 0; // default to 0 systemSettings.temperatureInF = 0; // default to 0
systemSettings.descriptionScrollSpeed = 0; // default to slow systemSettings.descriptionScrollSpeed = 0; // default to slow
#ifdef MODEL_TS100 #ifdef MODEL_TS100
systemSettings.CalibrationOffset = 850; // the adc offset in uV systemSettings.CalibrationOffset = 900; // the adc offset in uV
systemSettings.pidPowerLimit=70; // Sets the max pwm power limit systemSettings.pidPowerLimit=70; // Sets the max pwm power limit
#endif #endif
#ifdef MODEL_TS80 #ifdef MODEL_TS80
systemSettings.pidPowerLimit = 24; // Sets the max pwm power limit systemSettings.pidPowerLimit = 24; // Sets the max pwm power limit
systemSettings.CalibrationOffset = 300; // the adc offset in uV systemSettings.CalibrationOffset = 900; // the adc offset in uV
#endif #endif
saveSettings(); // Save defaults saveSettings(); // Save defaults
} }

File diff suppressed because it is too large Load Diff

View File

@@ -105,9 +105,8 @@ const menuitem rootSettingsMenu[] {
* Exit * Exit
*/ */
#ifdef MODEL_TS100 #ifdef MODEL_TS100
{ (const char*)SettingsDescriptions[0], { (const char*) SettingsDescriptions[0], { settings_setInputVRange }, {
{ settings_setInputVRange}, settings_displayInputVRange } }, /*Voltage input*/
{ settings_displayInputVRange}}, /*Voltage input*/
#else #else
{ (const char*) SettingsDescriptions[20], { settings_setInputPRange }, { { (const char*) SettingsDescriptions[20], { settings_setInputPRange }, {
settings_displayInputPRange } }, /*Voltage input*/ settings_displayInputPRange } }, /*Voltage input*/
@@ -731,11 +730,8 @@ void gui_Menu(const menuitem* menu) {
/ (systemSettings.descriptionScrollSpeed == 1 ? / (systemSettings.descriptionScrollSpeed == 1 ?
1 : 2)); 1 : 2));
descriptionOffset %= descriptionWidth; // Roll around at the end descriptionOffset %= descriptionWidth; // Roll around at the end
if (lastOffset != descriptionOffset) { if (lastOffset != descriptionOffset) {
OLED::clearScreen(); OLED::clearScreen();
//^ Rolling offset based on time
OLED::setCursor((OLED_WIDTH - descriptionOffset), 0); OLED::setCursor((OLED_WIDTH - descriptionOffset), 0);
OLED::print(menu[currentScreen].description); OLED::print(menu[currentScreen].description);
lastOffset = descriptionOffset; lastOffset = descriptionOffset;
@@ -807,6 +803,12 @@ void gui_Menu(const menuitem* menu) {
osDelay(40); osDelay(40);
lcdRefresh = false; lcdRefresh = false;
} }
if ((xTaskGetTickCount() - lastButtonTime) > (1000 * 30)) {
// If user has not pressed any buttons in 30 seconds, exit back a menu layer
// This will trickle the user back to the main screen eventually
earlyExit = true;
descriptionStart = 0;
}
} }
} }

View File

@@ -17,6 +17,7 @@ uint8_t PCBVersion = 0;
uint32_t currentTempTargetDegC = 0; // Current temperature target in C uint32_t currentTempTargetDegC = 0; // Current temperature target in C
uint32_t lastMovementTime = 0; uint32_t lastMovementTime = 0;
int16_t idealQCVoltage = 0; int16_t idealQCVoltage = 0;
bool settingsWereReset = false;
// FreeRTOS variables // FreeRTOS variables
osThreadId GUITaskHandle; osThreadId GUITaskHandle;
@@ -74,7 +75,7 @@ int main(void) {
systemSettings.sensitivity = 0; systemSettings.sensitivity = 0;
} }
HAL_IWDG_Refresh(&hiwdg); HAL_IWDG_Refresh(&hiwdg);
restoreSettings(); // load the settings from flash settingsWereReset = restoreSettings(); // load the settings from flash
HAL_IWDG_Refresh(&hiwdg); HAL_IWDG_Refresh(&hiwdg);

View File

@@ -145,7 +145,11 @@ then
echo "Building firmware for $model in $lang" echo "Building firmware for $model in $lang"
make -j lang="$lang" model="$model" >/dev/null make -j lang="$lang" model="$model" >/dev/null
checkLastCommand checkLastCommand
rm -rf Objects >/dev/null echo "Cleanup Temp files 1 for $model in $lang"
rm -rf Objects/Core >/dev/null
checkLastCommand
echo "Cleanup Temp files 2 for $model in $lang"
rm -rf Objects/Src >/dev/null
checkLastCommand checkLastCommand
done done
done done