Convert over C constants to python aware strings for translation

This commit is contained in:
Ben V. Brown
2019-06-18 08:40:48 +10:00
parent 07f4164a32
commit 6b558479e4
35 changed files with 6723 additions and 3452 deletions

View File

@@ -78,6 +78,43 @@ def escapeC(s):
return s.replace("\"", "\\\"")
def getConstants():
# Extra constants that are used in the firmware that are shared across all languages
consants =[]
consants.append(('SymbolPlus','+'))
consants.append(('SymbolMinus','-'))
consants.append(('SymbolSpace',' '))
consants.append(('SymbolDot','.'))
consants.append(('SymbolDegC','C'))
consants.append(('SymbolDegF','F'))
consants.append(('SymbolMinutes','M'))
consants.append(('SymbolSeconds','S'))
consants.append(('SymbolWatts','W'))
consants.append(('SymbolVolts','V'))
consants.append(('SymbolDC','DC'))
consants.append(('SymbolCellCount','S'))
return consants
def getTipModelEnumTS80():
constants = []
constants.append("B02")
constants.append("D25")
constants.append("TS80") # end of miniware
constants.append("User") # User
return constants
def getTipModelEnumTS100():
constants = []
constants.append("B02")
constants.append("D24")
constants.append("BC2")
constants.append(" C1")
constants.append("TS100")# end of miniware
constants.append("BC2")
constants.append("Hakko")# end of hakko
constants.append("User")
return constants
def getLetterCounts(defs, lang):
textList = []
#iterate over all strings
@@ -116,6 +153,11 @@ def getLetterCounts(defs, lang):
for mod in defs['menuGroups']:
eid = mod['id']
textList.append(obj[eid]['desc'])
constants = getConstants()
for x in constants:
textList.append(x[1])
textList.extend(getTipModelEnumTS100())
textList.extend(getTipModelEnumTS80())
# collapse all strings down into the composite letters and store totals for these
@@ -135,17 +177,19 @@ def getLetterCounts(defs, lang):
return symbolCounts
def getFontMapAndTable(textList):
# the text list is sorted
# allocate out these in their order as number codes
symbolMap = {}
index = 1
symbolMap['\n'] = '\\x01'
index = 2 # start at 2, as 0= null terminator,1 = new line
forcedFirstSymbols = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
#enforce numbers are first
for i in range(10):
s = "%0.1d" % i
symbolMap[s] = "\\x%0.2X" % index
for sym in forcedFirstSymbols:
symbolMap[sym] = "\\x%0.2X" % index
index = index + 1
if len(textList) > 235:
if len(textList) > (253 - len(forcedFirstSymbols)):
print('Error, too many used symbols for this version')
exit(1)
print('Generating fonts for {} symbols'.format(len(textList)))
@@ -159,30 +203,30 @@ def getFontMapAndTable(textList):
fontSmallTableStrings = []
fontTable = fontTables.getFontMap()
fontSmallTable = fontTables.getSmallFontMap()
for i in range(10):
sym = "%0.1d" % i
for sym in forcedFirstSymbols:
if sym not in fontTable:
print('Missing Large font element for {}'.format(sym))
exit(1)
fontLine = fontTable[sym]
fontTableStrings.append(fontLine + "// -> {}".format(sym))
fontTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym))
if sym not in fontSmallTable:
print('Missing Small font element for {}'.format(sym))
exit(1)
fontLine = fontSmallTable[sym]
fontSmallTableStrings.append(fontLine + "// -> {}".format(sym))
fontSmallTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym))
for sym in textList:
if sym not in fontTable:
print('Missing Large font element for {}'.format(sym))
exit(1)
fontLine = fontTable[sym]
fontTableStrings.append(fontLine + "// -> {}".format(sym))
if sym not in fontSmallTable:
print('Missing Small font element for {}'.format(sym))
exit(1)
fontLine = fontSmallTable[sym]
fontSmallTableStrings.append(fontLine + "// -> {}".format(sym))
if sym not in forcedFirstSymbols:
fontLine = fontTable[sym]
fontTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym))
if sym not in fontSmallTable:
print('Missing Small font element for {}'.format(sym))
exit(1)
fontLine = fontSmallTable[sym]
fontSmallTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym))
outputTable = "const uint8_t USER_FONT_12[] = {" + to_unicode("\n")
for line in fontTableStrings:
# join font table int one large string
@@ -200,7 +244,7 @@ def getFontMapAndTable(textList):
def convStr(symbolConversionTable, text):
# convert all of the symbols from the string into escapes for their content
outputString = ""
for c in text.replace('\\n', '').replace('\\r', ''):
for c in text.replace('\\r', '').replace('\\n','\n'):
if c not in symbolConversionTable:
print('Missing font definition for {}'.format(c))
else:
@@ -276,6 +320,27 @@ def writeLanguage(languageCode, defs, f):
f.write(to_unicode("\n"))
# Write out firmware constant options
constants = getConstants()
for x in constants:
f.write(
to_unicode("const char* " + x[0] + " = \"" +
convStr(symbolConversionTable, x[1]) + "\";\n"))
f.write(to_unicode("\n"))
# Write out tip model strings
f.write(to_unicode("const char* TipModelStrings[] = {\n"))
f.write(to_unicode("#ifdef MODEL_TS100\n"))
for c in getTipModelEnumTS100():
f.write(to_unicode("\t \"" + convStr(symbolConversionTable, c) + "\",\n"))
f.write(to_unicode("#else\n"))
for c in getTipModelEnumTS80():
f.write(to_unicode("\t \"" + convStr(symbolConversionTable, c) + "\",\n"))
f.write(to_unicode("#endif\n"))
f.write(to_unicode("};\n\n"))
# ----- Menu Options
# Menu type

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Set:",
"TipDisconnectedString": "ВРЪХ ЛОША ВРЪЗКА",
"SolderingAdvancedPowerPrompt": "Захранване: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "R",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Cíl:",
"TipDisconnectedString": "HROT NEPŘIPOJEN",
"SolderingAdvancedPowerPrompt": "Ohřev: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "P",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Set:",
"TipDisconnectedString": "TIP DISCONNECTED",
"SolderingAdvancedPowerPrompt": "Power: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "H",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Soll:",
"TipDisconnectedString": "Spitze fehlt",
"SolderingAdvancedPowerPrompt": "Leistung: ",
"OffString": "Aus"
"OffString": "Aus",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "R",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Set:",
"TipDisconnectedString": "TIP DISCONNECTED",
"SolderingAdvancedPowerPrompt": "Power: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "R",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Aj:",
"TipDisconnectedString": "SIN PUNTA",
"SolderingAdvancedPowerPrompt": "POTENCIA: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "D",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Asetus:",
"TipDisconnectedString": "KÄRKI ON IRTI",
"SolderingAdvancedPowerPrompt": "Teho: ",
"OffString": "OFF"
"OffString": "OFF",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "O",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Set:",
"TipDisconnectedString": "PANNE DÉBRANCHÉE",
"SolderingAdvancedPowerPrompt": "Puissance: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "D",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " / ",
"TipDisconnectedString": "VRH NIJE SPOJEN!",
"SolderingAdvancedPowerPrompt": "Snaga: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "D",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Cél:",
"TipDisconnectedString": "HEGY LEVÉVE",
"SolderingAdvancedPowerPrompt": "Telj: ",
"OffString": "Ki"
"OffString": "Ki",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "J",

View File

@@ -20,7 +20,8 @@
"IdleSetString": "/",
"TipDisconnectedString": "PUNTA ASSENTE",
"SolderingAdvancedPowerPrompt": "Potenz:",
"OffString": "OFF"
"OffString": "OFF",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "D",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Nust:",
"TipDisconnectedString": "ANTGAL ATJUNGTAS",
"SolderingAdvancedPowerPrompt": "Maitinimas: ",
"OffString": "Išj"
"OffString": "Išj",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "D",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Set:",
"TipDisconnectedString": "TIP LOSGEKOPPELD",
"SolderingAdvancedPowerPrompt": "vermogen: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "R",

View File

@@ -20,7 +20,8 @@
"IdleSetString": "Stel in:",
"TipDisconnectedString": "Punt ONTKOPPELD",
"SolderingAdvancedPowerPrompt": "Vermogen: ",
"OffString": "Uit"
"OffString": "Uit",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "R",

View File

@@ -20,7 +20,8 @@
"IdleSetString": "Set:",
"TipDisconnectedString": "SPISS FRAKOBLET",
"SolderingAdvancedPowerPrompt": "Effekt: ",
"OffString": "Av"
"OffString": "Av",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "H",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Ustaw:",
"TipDisconnectedString": "GROT ODŁĄCZONY",
"SolderingAdvancedPowerPrompt": "Power: ",
"OffString": "Wyłącz"
"OffString": "Wyłącz",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "P",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Aj:",
"TipDisconnectedString": "SEM PONTA",
"SolderingAdvancedPowerPrompt": "Power: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "D",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " ->",
"TipDisconnectedString": "Жало отключено",
"SolderingAdvancedPowerPrompt": "Питание: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "П",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Set:",
"TipDisconnectedString": "TIP DISCONNECTED",
"SolderingAdvancedPowerPrompt": "Power: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "R",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " / ",
"TipDisconnectedString": "ВРХ НИЈЕ СПОЈЕН",
"SolderingAdvancedPowerPrompt": "Снага: ",
"OffString": "Иск"
"OffString": "Иск",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "Д",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " / ",
"TipDisconnectedString": "VRH NIJE SPOJEN",
"SolderingAdvancedPowerPrompt": "Snaga: ",
"OffString": "Isk"
"OffString": "Isk",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "D",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Ange:",
"TipDisconnectedString": "SPETS URTAGEN",
"SolderingAdvancedPowerPrompt": "Ström: ",
"OffString": "Av"
"OffString": "Av",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "H",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " Set:",
"TipDisconnectedString": "TIP DISCONNECTED",
"SolderingAdvancedPowerPrompt": "Power: ",
"OffString": "Off"
"OffString": "Off",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "R",

View File

@@ -20,7 +20,8 @@
"IdleSetString": " ->",
"TipDisconnectedString": "Жало вимкнено!",
"SolderingAdvancedPowerPrompt": "Живлення: ",
"OffString": "Вим"
"OffString": "Вим",
"ResetOKMessage":"Reset OK"
},
"characters": {
"SettingRightChar": "R",

View File

@@ -80,6 +80,10 @@ var def =
{
"id": "OffString",
"maxLen": 3
},
{
"id": "ResetOKMessage",
"maxLen": 8
}
],
"characters": [

View File

@@ -38,7 +38,6 @@ public:
//or we need to goto double buffering
}
static void drawChar(char c); // Draw a character to a specific location
// Turn the screen on or not
static void displayOnOff(bool on) {
displayOnOffState = on;
@@ -92,9 +91,7 @@ public:
bool clear);
static void drawHeatSymbol(uint8_t state);
private:
//Draw a buffer to the screen buffer
static void drawChar(char c); // Draw a character to a specific location
static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer
static uint8_t* firstStripPtr; // Pointers to the strips to allow for buffer having extra content
static uint8_t* secondStripPtr; //Pointers to the strips

View File

@@ -9,8 +9,7 @@
#define TRANSLATION_H_
#include "stm32f1xx_hal.h"
enum ShortNameType {
SHORT_NAME_SINGLE_LINE = 1,
SHORT_NAME_DOUBLE_LINE = 2,
SHORT_NAME_SINGLE_LINE = 1, SHORT_NAME_DOUBLE_LINE = 2,
};
extern const uint8_t USER_FONT_12[];
extern const uint8_t USER_FONT_6x8[];
@@ -42,7 +41,7 @@ extern const char* IdleSetString;
extern const char* TipDisconnectedString;
extern const char* SolderingAdvancedPowerPrompt;
extern const char* OffString;
extern const char* ResetOKMessage;
extern const char* SettingTrueChar;
extern const char* SettingFalseChar;
extern const char* SettingRightChar;
@@ -51,5 +50,18 @@ extern const char* SettingAutoChar;
extern const char* SettingFastChar;
extern const char* SettingSlowChar;
extern const char* TipModelStrings[];
extern const char* SymbolPlus;
extern const char* SymbolMinus;
extern const char* SymbolSpace;
extern const char* SymbolDot;
extern const char* SymbolDegC;
extern const char* SymbolDegF;
extern const char* SymbolMinutes;
extern const char* SymbolSeconds;
extern const char* SymbolWatts;
extern const char* SymbolVolts;
extern const char* SymbolDC;
extern const char* SymbolCellCount;
#endif /* TRANSLATION_H_ */

View File

@@ -106,7 +106,7 @@ enum TipType {
#endif
#ifdef MODEL_TS80
enum TipType {
TS_B02 = 0, TS_D25 = 1, Tip_MiniWare = 2, Tip_Custom = 2,
TS_B02 = 0, TS_D25 = 1, Tip_MiniWare = 2, Tip_Custom = 3,
};
#endif
extern uint16_t tipGainCalValue ;

View File

@@ -88,11 +88,14 @@ void OLED::initialize() {
* Precursor is the command char that is used to select the table.
*/
void OLED::drawChar(char c) {
if (c == '\n' && cursor_y == 0) {
if (c == '\x01' && cursor_y == 0) { // 0x01 is used as new line char
cursor_x = 0;
cursor_y = 8;
return;
} else if (c == 0) {
return;
}
uint16_t index = c-1;
uint16_t index = c - 2; //First index is \x02
uint8_t* charPointer;
charPointer = ((uint8_t*) currentFont)
+ ((fontWidth * (fontHeight / 8)) * index);
@@ -156,44 +159,44 @@ void OLED::printNumber(uint16_t number, uint8_t places) {
char buffer[7] = { 0 };
if (places >= 5) {
buffer[5] = 1 + number % 10;
buffer[5] = 2 + number % 10;
number /= 10;
}
if (places > 4) {
buffer[4] = 1 + number % 10;
buffer[4] = 2 + number % 10;
number /= 10;
}
if (places > 3) {
buffer[3] = 1 + number % 10;
buffer[3] = 2 + number % 10;
number /= 10;
}
if (places > 2) {
buffer[2] = 1 + number % 10;
buffer[2] = 2 + number % 10;
number /= 10;
}
if (places > 1) {
buffer[1] = 1 + number % 10;
buffer[1] = 2 + number % 10;
number /= 10;
}
buffer[0] = 1 + number % 10;
buffer[0] = 2 + number % 10;
number /= 10;
print(buffer);
}
void OLED::debugNumber(int32_t val) {
if (abs(val) > 99999) {
OLED::print(" OoB"); // out of bounds
OLED::print(SymbolSpace); // out of bounds
return;
}
if (val >= 0) {
OLED::drawChar(' ');
OLED::print(SymbolSpace);
OLED::printNumber(val, 5);
} else {
OLED::drawChar('-');
OLED::print(SymbolMinus);
OLED::printNumber(-val, 5);
}
}
@@ -201,8 +204,7 @@ void OLED::debugNumber(int32_t val) {
void OLED::drawSymbol(uint8_t symbolID) {
// draw a symbol to the current cursor location
setFont(2);
drawChar(' ' + symbolID); // space offset is in all fonts, so we pad it here
// and remove it later
drawChar(symbolID + 2);
setFont(0);
}

File diff suppressed because it is too large Load Diff

View File

@@ -305,10 +305,10 @@ static void settings_displayInputVRange(void) {
printShortDescription(0, 6);
if (systemSettings.cutoutSetting) {
OLED::drawChar('0' + 2 + systemSettings.cutoutSetting);
OLED::drawChar('S');
OLED::printNumer(2 + systemSettings.cutoutSetting,1);
OLED::print(SymbolCellCount);
} else {
OLED::print("DC");
OLED::print(SymbolDC);
}
}
#else
@@ -321,10 +321,12 @@ static void settings_displayInputPRange(void) {
//0 = 18W, 1=24W
switch (systemSettings.cutoutSetting) {
case 0:
OLED::print("18W");
OLED::printNumber(18, 2);
OLED::print(SymbolWatts);
break;
case 1:
OLED::print("24W");
OLED::printNumber(24, 2);
OLED::print(SymbolWatts);
break;
default:
break;
@@ -367,10 +369,10 @@ static void settings_displaySleepTime(void) {
OLED::print(OffString);
} else if (systemSettings.SleepTime < 6) {
OLED::printNumber(systemSettings.SleepTime * 10, 2);
OLED::drawChar('S');
OLED::print(SymbolSeconds);
} else {
OLED::printNumber(systemSettings.SleepTime - 5, 2);
OLED::drawChar('M');
OLED::print(SymbolMinutes);
}
}
@@ -389,7 +391,7 @@ static void settings_displayShutdownTime(void) {
OLED::print(OffString);
} else {
OLED::printNumber(systemSettings.ShutdownTime, 2);
OLED::drawChar('M');
OLED::print(SymbolMinutes);
}
}
@@ -422,7 +424,7 @@ static void settings_setTempF(void) {
static void settings_displayTempF(void) {
printShortDescription(5, 7);
OLED::drawChar((systemSettings.temperatureInF) ? 'F' : 'C');
OLED::print((systemSettings.temperatureInF) ? SymbolDegF : SymbolDegC);
}
static void settings_setSensitivity(void) {
@@ -559,7 +561,7 @@ static void settings_setResetSettings(void) {
OLED::setFont(0);
OLED::setCursor(0, 0);
OLED::print("RESET OK");
OLED::print(ResetOKMessage);
OLED::refresh();
waitForButtonPressOrTimeout(200); // 2 second timeout
@@ -582,63 +584,21 @@ static void settings_displayTipModel(void) {
// Print the mfg
OLED::setCursor(55, 0);
if (systemSettings.tipType < Tip_MiniWare) {
#ifdef MODEL_TS100
OLED::print("TS100");
#else
OLED::print("TS80");
#endif
OLED::print(TipModelStrings[Tip_MiniWare]);
}
#ifdef MODEL_TS100
else if (systemSettings.tipType < Tip_Hakko) {
OLED::print("HAKKO");
OLED::print(TipModelStrings[Tip_Hakko]);
}
#endif
else if (systemSettings.tipType == Tip_Custom) {
OLED::print("User");
OLED::print(TipModelStrings[Tip_Custom]);
}
OLED::setCursor(55, 8);
#ifdef MODEL_TS100
switch ((enum TipType)systemSettings.tipType) {
case TS_B2:
OLED::print(" B2 ");
break;
case TS_D24:
OLED::print(" D24 ");
break;
case TS_BC2:
OLED::print(" BC2 ");
break;
case TS_C1:
OLED::print(" C1 ");
break;
case HAKKO_BC2:
OLED::print(" BC2 ");
break;
case Tip_Custom:
OLED::print("Tuned");
break;
default:
OLED::print("????");
break;
}
#endif
#ifdef MODEL_TS80
// only 2 tips atm
switch ((enum TipType) systemSettings.tipType) {
case TS_B02:
OLED::print(" B02 ");
break;
case TS_D25:
OLED::print(" D25 ");
break;
case Tip_Custom:
OLED::print("Tuned");
break;
default:
OLED::print("????");
break;
}
#endif
if (systemSettings.tipType != Tip_Custom)
if (systemSettings.tipType != Tip_MiniWare)
OLED::print(TipModelStrings[systemSettings.tipType]);
}
static void calibration_displaySimpleCal(void) {
printShortDescription(18, 5);
@@ -771,17 +731,17 @@ static void calibration_enterAdvancedCal(void) {
OLED::clearScreen();
OLED::setFont(0);
if (OLED::getRotation())
OLED::drawChar('-');
OLED::print(SymbolMinus);
else
OLED::drawChar('+');
OLED::print(SymbolPlus);
OLED::drawChar(' ');
OLED::print(SymbolSpace);
OLED::printNumber(systemSettings.customTipGain, 4);
OLED::drawChar(' ');
OLED::print(SymbolSpace);
if (OLED::getRotation())
OLED::drawChar('+');
OLED::print(SymbolPlus);
else
OLED::drawChar('-');
OLED::print(SymbolMinus);
OLED::refresh();
GUIDelay();
}

View File

@@ -97,7 +97,7 @@ int main(void) {
void printVoltage() {
uint32_t volt = getInputVoltageX10(systemSettings.voltageDiv, 0);
OLED::printNumber(volt / 10, 2);
OLED::drawChar('.');
OLED::print(SymbolDot);
OLED::printNumber(volt % 10, 1);
}
void GUIDelay() {
@@ -374,25 +374,25 @@ static void gui_solderingTempAdjust() {
#else
if (OLED::getRotation())
#endif
OLED::drawChar('-');
OLED::print(SymbolMinus);
else
OLED::drawChar('+');
OLED::print(SymbolPlus);
OLED::drawChar(' ');
OLED::print(SymbolSpace);
OLED::printNumber(systemSettings.SolderingTemp, 3);
if (systemSettings.temperatureInF)
OLED::drawSymbol(0);
else
OLED::drawSymbol(1);
OLED::drawChar(' ');
OLED::print(SymbolSpace);
#ifdef MODEL_TS80
if (!OLED::getRotation())
#else
if (OLED::getRotation())
#endif
OLED::drawChar('+');
OLED::print(SymbolPlus);
else
OLED::drawChar('-');
OLED::print(SymbolMinus);
OLED::refresh();
GUIDelay();
}
@@ -443,13 +443,13 @@ static int gui_SolderingSleepingMode() {
OLED::print(SleepingTipAdvancedString);
OLED::printNumber(tipTemp, 3);
if (systemSettings.temperatureInF)
OLED::print("F");
OLED::print(SymbolDegF);
else
OLED::print("C");
OLED::print(SymbolDegC);
OLED::print(" ");
OLED::print(SymbolSpace);
printVoltage();
OLED::drawChar('V');
OLED::print(SymbolVolts);
} else {
OLED::setFont(0);
OLED::print(SleepingSimpleString);
@@ -565,28 +565,28 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
OLED::setFont(1);
OLED::print(SolderingAdvancedPowerPrompt); // Power:
OLED::printNumber(milliWattHistory[0] / 1000, 2);
OLED::drawChar('.');
OLED::print(SymbolDot);
OLED::printNumber(milliWattHistory[0] / 100 % 10, 1);
OLED::drawChar('W');
OLED::print(SymbolWatts);
if (systemSettings.sensitivity && systemSettings.SleepTime) {
OLED::print(" ");
OLED::print(SymbolSpace);
display_countdown(sleepThres);
}
OLED::setCursor(0, 8);
OLED::print(SleepingTipAdvancedString);
gui_drawTipTemp(true);
OLED::print(" ");
OLED::print(SymbolSpace);
printVoltage();
OLED::drawChar('V');
OLED::print(SymbolVolts);
} else {
// We switch the layout direction depending on the orientation of the
// OLED::
if (OLED::getRotation()) {
// battery
gui_drawBatteryIcon();
OLED::drawChar(' '); // Space out gap between battery <-> temp
OLED::print(SymbolSpace); // Space out gap between battery <-> temp
gui_drawTipTemp(true); // Draw current tip temp
// We draw boost arrow if boosting, or else gap temp <-> heat
@@ -594,7 +594,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
if (boostModeOn)
OLED::drawSymbol(2);
else
OLED::drawChar(' ');
OLED::print(SymbolSpace);
// Draw heating/cooling symbols
OLED::drawHeatSymbol(
@@ -610,10 +610,10 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
if (boostModeOn)
OLED::drawSymbol(2);
else
OLED::drawChar(' ');
OLED::print(SymbolSpace);
gui_drawTipTemp(true); // Draw current tip temp
OLED::drawChar(' '); // Space out gap between battery <-> temp
OLED::print(SymbolSpace); // Space out gap between battery <-> temp
gui_drawBatteryIcon();
}

View File

@@ -15,11 +15,11 @@
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GCCErrorParser" id="com.atollic.truestudio.configuration.release.200032419" name="Release" parent="com.atollic.truestudio.configuration.release" postannouncebuildStep="" postbuildStep="" preannouncebuildStep="" prebuildStep="">
<folderInfo id="com.atollic.truestudio.configuration.release.200032419." name="/" resourcePath="">
<toolChain errorParsers="" id="com.atollic.truestudio.exe.release.toolchain.1340188969" name="Atollic ARM Tools" superClass="com.atollic.truestudio.exe.release.toolchain">
<option id="com.atollic.truestudio.general.runtimelib.191191414" name="Runtime Library" superClass="com.atollic.truestudio.general.runtimelib" useByScannerDiscovery="false" value="com.atollic.truestudio.ld.general.cclib.CCStandardCStandard" valueType="enumerated"/>
<option id="com.atollic.truestudio.general.runtimelib.191191414" name="Runtime Library" superClass="com.atollic.truestudio.general.runtimelib" useByScannerDiscovery="false" value="com.atollic.truestudio.ld.general.cclib.CCSmallCSmall" valueType="enumerated"/>
<option id="com.atollic.truestudio.toolchain_options.mcu.1436647432" name="Microcontroller" superClass="com.atollic.truestudio.toolchain_options.mcu" useByScannerDiscovery="false" value="STM32F103T8" valueType="string"/>
<option id="com.atollic.truestudio.toolchain_options.vendor.1169826438" name="Vendor name" superClass="com.atollic.truestudio.toolchain_options.vendor" useByScannerDiscovery="false" value="STMicroelectronics" valueType="string"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.atollic.truestudio.exe.release.toolchain.platform.1125330428" isAbstract="false" name="release platform" superClass="com.atollic.truestudio.exe.release.toolchain.platform"/>
<builder autoBuildTarget="" buildPath="${workspace_loc:/TS100A}/Release" cleanBuildTarget="" customBuilderProperties="toolChainpathString=C:\\Program Files (x86)\\Atollic\\TrueSTUDIO for STM32 9.1.0\\ARMTools\\bin|toolChainpathType=1|com.atollic.truestudio.common_options.target.vendor=STMicroelectronics|com.atollic.truestudio.common_options.target.mcu=STM32F103T8|" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" errorParsers="" id="com.atollic.truestudio.mbs.builder1.1682214826" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" parallelBuildOn="false" superClass="com.atollic.truestudio.mbs.builder1"/>
<builder autoBuildTarget="" buildPath="${workspace_loc:/TS100A}/Release" cleanBuildTarget="" customBuilderProperties="toolChainpathString=/opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.3.0/ARMTools/bin|toolChainpathType=1|com.atollic.truestudio.common_options.target.vendor=STMicroelectronics|com.atollic.truestudio.common_options.target.mcu=STM32F103T8|" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" errorParsers="" id="com.atollic.truestudio.mbs.builder1.1682214826" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.atollic.truestudio.mbs.builder1"/>
<tool command="arm-atollic-eabi-gcc -c" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" errorParsers="org.eclipse.cdt.core.GASErrorParser" id="com.atollic.truestudio.exe.release.toolchain.as.5806016" name="Assembler" superClass="com.atollic.truestudio.exe.release.toolchain.as">
<option id="com.atollic.truestudio.common_options.target.endianess.1911688133" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" useByScannerDiscovery="false"/>
<option id="com.atollic.truestudio.common_options.target.mcpu.1179040963" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" useByScannerDiscovery="false" value="STM32F103T8" valueType="enumerated"/>
@@ -61,14 +61,14 @@
</option>
<option id="com.atollic.truestudio.gcc.directories.select.1784012793" name="Include path" superClass="com.atollic.truestudio.gcc.directories.select" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM3&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\Middlewares\Third_Party\FreeRTOS\Source\include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\Middlewares\Third_Party\FreeRTOS\Source\portable&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\HAL_Driver\Inc\Legacy&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\inc&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\HAL_Driver\Inc&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\CMSIS\core&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\CMSIS\device&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/Middlewares/Third_Party/FreeRTOS/Source/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/Middlewares/Third_Party/FreeRTOS/Source/portable&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/HAL_Driver/Inc/Legacy&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/inc&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/HAL_Driver/Inc&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/CMSIS/core&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/CMSIS/device&quot;"/>
</option>
<option id="com.atollic.truestudio.common_options.target.endianess.995599109" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" useByScannerDiscovery="false"/>
<option id="com.atollic.truestudio.common_options.target.mcpu.1774407741" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" useByScannerDiscovery="false" value="STM32F103T8" valueType="enumerated"/>
@@ -91,7 +91,7 @@
<option id="com.atollic.truestudio.ld.general.scriptfile.755006424" name="Linker script" superClass="com.atollic.truestudio.ld.general.scriptfile" value="../stm32_flash.ld" valueType="string"/>
<option id="com.atollic.truestudio.ld.optimization.do_garbage.2103581239" name="Dead code removal " superClass="com.atollic.truestudio.ld.optimization.do_garbage" value="true" valueType="boolean"/>
<option id="com.atollic.truestudio.common_options.target.interwork.234525005" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork"/>
<option id="com.atollic.truestudio.ld.misc.genmapfile.444765358" superClass="com.atollic.truestudio.ld.misc.genmapfile"/>
<option id="com.atollic.truestudio.ld.misc.genmapfile.444765358" name="Create map file" superClass="com.atollic.truestudio.ld.misc.genmapfile"/>
</tool>
<tool command="arm-atollic-eabi-g++ -c" commandLinePattern="${COMMAND} ${INPUTS} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT}" errorParsers="org.eclipse.cdt.core.GCCErrorParser" id="com.atollic.truestudio.exe.release.toolchain.gpp.93636755" name="C++ Compiler" superClass="com.atollic.truestudio.exe.release.toolchain.gpp">
<option id="com.atollic.truestudio.gpp.symbols.defined.552082963" name="Defined symbols" superClass="com.atollic.truestudio.gpp.symbols.defined" useByScannerDiscovery="false" valueType="definedSymbols">
@@ -105,14 +105,14 @@
</option>
<option id="com.atollic.truestudio.gpp.directories.select.1908833089" name="Include path" superClass="com.atollic.truestudio.gpp.directories.select" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM3&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\Middlewares\Third_Party\FreeRTOS\Source\include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\Middlewares\Third_Party\FreeRTOS\Source\portable&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\HAL_Driver\Inc\Legacy&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\inc&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\HAL_Driver\Inc&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\CMSIS\core&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100\CMSIS\device&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/Middlewares/Third_Party/FreeRTOS/Source/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/Middlewares/Third_Party/FreeRTOS/Source/portable&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/HAL_Driver/Inc/Legacy&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/inc&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/HAL_Driver/Inc&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/CMSIS/core&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/../TS100/CMSIS/device&quot;"/>
</option>
<option id="com.atollic.truestudio.common_options.target.endianess.1156506838" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" useByScannerDiscovery="false"/>
<option id="com.atollic.truestudio.common_options.target.mcpu.260174094" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" useByScannerDiscovery="false" value="STM32F103T8" valueType="enumerated"/>
@@ -141,7 +141,7 @@
<option id="com.atollic.truestudio.ldcc.misc.linkerflags.2127852186" name="Other options" superClass="com.atollic.truestudio.ldcc.misc.linkerflags" useByScannerDiscovery="false" value="-Wl,-cref,-u,Reset_Handler,-lm -Os -flto -Wl,--undefined=vTaskSwitchContext" valueType="string"/>
<option id="com.atollic.truestudio.ldcc.optimization.malloc_page_size.1711302014" name="Page size allocation for malloc() " superClass="com.atollic.truestudio.ldcc.optimization.malloc_page_size" useByScannerDiscovery="false" value="com.atollic.truestudio.ldcc.optimization.malloc_page_size.128" valueType="enumerated"/>
<option id="com.atollic.truestudio.common_options.target.interwork.1666808603" name="Mix ARM/Thumb" superClass="com.atollic.truestudio.common_options.target.interwork" useByScannerDiscovery="false"/>
<option id="com.atollic.truestudio.ldcc.misc.genmapfile.1497893499" superClass="com.atollic.truestudio.ldcc.misc.genmapfile"/>
<option id="com.atollic.truestudio.ldcc.misc.genmapfile.1497893499" name="Create map file" superClass="com.atollic.truestudio.ldcc.misc.genmapfile" useByScannerDiscovery="false"/>
<inputType id="com.atollic.truestudio.ldcc.input.1102687442" name="Input" superClass="com.atollic.truestudio.ldcc.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>

View File

@@ -4,7 +4,7 @@
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="-423320347510587850" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="-133272683506189437" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -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>
@@ -14,7 +14,7 @@
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="-423320347510587850" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="-133272683506189437" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -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>
@@ -24,7 +24,7 @@
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="-423320347510587850" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="-133272683506189437" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -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>