Merge branch 'master' into alpine
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
# TS100 Flasher for Linux by Alex Wigen (https://github.com/awigen)
|
# TS100 Flasher for Linux by Alex Wigen (https://github.com/awigen)
|
||||||
|
# Jan 2021 - Update by Ysard (https://github.com/ysard)
|
||||||
|
|
||||||
DIR_TMP="/tmp/ts100"
|
DIR_TMP="/tmp/ts100"
|
||||||
|
HEX_FIRMWARE="$DIR_TMP/ts100.hex"
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo
|
echo
|
||||||
@@ -69,13 +71,28 @@ mount_ts100() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
umount_ts100() {
|
umount_ts100() {
|
||||||
if ! mountpoint "$DIR_TMP" > /dev/null && sudo umount "$DIR_TMP"; then
|
if ! (mountpoint "$DIR_TMP" > /dev/null && sudo umount "$DIR_TMP"); then
|
||||||
echo "Failed to unmount $DIR_TMP"
|
echo "Failed to unmount $DIR_TMP"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
rmdir "$DIR_TMP"
|
rmdir "$DIR_TMP"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_flash() {
|
||||||
|
RDY_FIRMWARE="${HEX_FIRMWARE%.*}.rdy"
|
||||||
|
ERR_FIRMWARE="${HEX_FIRMWARE%.*}.err"
|
||||||
|
if [ -f "$RDY_FIRMWARE" ]; then
|
||||||
|
echo -e "\e[92mFlash is done\e[0m"
|
||||||
|
echo "Disconnect the USB and power up the iron. You're good to go."
|
||||||
|
elif [ -f "$ERR_FIRMWARE" ]; then
|
||||||
|
echo -e "\e[91mFlash error; Please retry!\e[0m"
|
||||||
|
else
|
||||||
|
echo -e "\e[91mUNKNOWN error\e[0m"
|
||||||
|
echo "Flash result: "
|
||||||
|
ls "$DIR_TMP"/ts100*
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
enable_gautomount
|
enable_gautomount
|
||||||
if [ -d "$DIR_TMP" ]; then
|
if [ -d "$DIR_TMP" ]; then
|
||||||
@@ -109,7 +126,7 @@ echo "Found TS100 config disk device on $DEVICE"
|
|||||||
|
|
||||||
mount_ts100
|
mount_ts100
|
||||||
echo "Mounted config disk drive, flashing..."
|
echo "Mounted config disk drive, flashing..."
|
||||||
cp -v "$1" "$DIR_TMP/ts100.hex"
|
cp -v "$1" "$HEX_FIRMWARE"
|
||||||
sync
|
sync
|
||||||
|
|
||||||
echo "Waiting for TS100 to flash"
|
echo "Waiting for TS100 to flash"
|
||||||
@@ -119,6 +136,5 @@ echo "Remounting config disk drive"
|
|||||||
umount_ts100
|
umount_ts100
|
||||||
wait_for_ts100
|
wait_for_ts100
|
||||||
mount_ts100
|
mount_ts100
|
||||||
|
check_flash
|
||||||
|
|
||||||
echo "Flash result: "
|
|
||||||
ls "$DIR_TMP"/ts100*
|
|
||||||
|
|||||||
@@ -194,7 +194,7 @@
|
|||||||
},
|
},
|
||||||
"LanguageSwitch": {
|
"LanguageSwitch": {
|
||||||
"text2": ["Sprache:", " DE Deutsch"],
|
"text2": ["Sprache:", " DE Deutsch"],
|
||||||
"desc": ""
|
"desc": "Sprache der Firmware ändern"
|
||||||
},
|
},
|
||||||
"Brightness": {
|
"Brightness": {
|
||||||
"text2": ["Bildschirm-", "kontrast"],
|
"text2": ["Bildschirm-", "kontrast"],
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ typedef struct {
|
|||||||
uint16_t versionMarker;
|
uint16_t versionMarker;
|
||||||
uint16_t length; // Length of valid bytes following
|
uint16_t length; // Length of valid bytes following
|
||||||
uint16_t settingsValues[SettingsOptionsLength];
|
uint16_t settingsValues[SettingsOptionsLength];
|
||||||
// used to make this nicely "good enough" aligned to 32 butes to make driver code trivial
|
// used to make this nicely "good enough" aligned to 32 bytes to make driver code trivial
|
||||||
uint32_t padding;
|
uint32_t padding;
|
||||||
|
|
||||||
} systemSettingsType;
|
} systemSettingsType;
|
||||||
|
|||||||
@@ -202,36 +202,23 @@ static void gui_solderingTempAdjust() {
|
|||||||
break;
|
break;
|
||||||
case BUTTON_B_LONG:
|
case BUTTON_B_LONG:
|
||||||
if (xTaskGetTickCount() - autoRepeatTimer + autoRepeatAcceleration > PRESS_ACCEL_INTERVAL_MAX) {
|
if (xTaskGetTickCount() - autoRepeatTimer + autoRepeatAcceleration > PRESS_ACCEL_INTERVAL_MAX) {
|
||||||
if (getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled)) {
|
delta = -getSettingValue(SettingsOptions::TempChangeLongStep);
|
||||||
delta = getSettingValue(SettingsOptions::TempChangeLongStep);
|
|
||||||
} else
|
|
||||||
delta = -getSettingValue(SettingsOptions::TempChangeLongStep);
|
|
||||||
|
|
||||||
autoRepeatTimer = xTaskGetTickCount();
|
autoRepeatTimer = xTaskGetTickCount();
|
||||||
autoRepeatAcceleration += PRESS_ACCEL_STEP;
|
autoRepeatAcceleration += PRESS_ACCEL_STEP;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BUTTON_B_SHORT:
|
case BUTTON_B_SHORT:
|
||||||
if (getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled)) {
|
delta = -getSettingValue(SettingsOptions::TempChangeShortStep);
|
||||||
delta = getSettingValue(SettingsOptions::TempChangeShortStep);
|
|
||||||
} else
|
|
||||||
delta = -getSettingValue(SettingsOptions::TempChangeShortStep);
|
|
||||||
break;
|
break;
|
||||||
case BUTTON_F_LONG:
|
case BUTTON_F_LONG:
|
||||||
if (xTaskGetTickCount() - autoRepeatTimer + autoRepeatAcceleration > PRESS_ACCEL_INTERVAL_MAX) {
|
if (xTaskGetTickCount() - autoRepeatTimer + autoRepeatAcceleration > PRESS_ACCEL_INTERVAL_MAX) {
|
||||||
if (getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled)) {
|
delta = getSettingValue(SettingsOptions::TempChangeLongStep);
|
||||||
delta = -getSettingValue(SettingsOptions::TempChangeLongStep);
|
|
||||||
} else
|
|
||||||
delta = getSettingValue(SettingsOptions::TempChangeLongStep);
|
|
||||||
autoRepeatTimer = xTaskGetTickCount();
|
autoRepeatTimer = xTaskGetTickCount();
|
||||||
autoRepeatAcceleration += PRESS_ACCEL_STEP;
|
autoRepeatAcceleration += PRESS_ACCEL_STEP;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BUTTON_F_SHORT:
|
case BUTTON_F_SHORT:
|
||||||
if (getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled)) {
|
delta = getSettingValue(SettingsOptions::TempChangeShortStep);
|
||||||
delta = -getSettingValue(SettingsOptions::TempChangeShortStep);
|
|
||||||
} else
|
|
||||||
delta = getSettingValue(SettingsOptions::TempChangeShortStep);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -239,22 +226,31 @@ static void gui_solderingTempAdjust() {
|
|||||||
if ((PRESS_ACCEL_INTERVAL_MAX - autoRepeatAcceleration) < PRESS_ACCEL_INTERVAL_MIN) {
|
if ((PRESS_ACCEL_INTERVAL_MAX - autoRepeatAcceleration) < PRESS_ACCEL_INTERVAL_MIN) {
|
||||||
autoRepeatAcceleration = PRESS_ACCEL_INTERVAL_MAX - PRESS_ACCEL_INTERVAL_MIN;
|
autoRepeatAcceleration = PRESS_ACCEL_INTERVAL_MAX - PRESS_ACCEL_INTERVAL_MIN;
|
||||||
}
|
}
|
||||||
// constrain between 10-450 C
|
// If buttons are flipped; flip the delta
|
||||||
uint16_t newTemp = getSettingValue(SettingsOptions::SolderingTemp);
|
if (getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled)) {
|
||||||
newTemp += delta;
|
delta = -delta;
|
||||||
if (getSettingValue(SettingsOptions::TemperatureInF)) {
|
|
||||||
if (newTemp > MAX_TEMP_F)
|
|
||||||
newTemp = MAX_TEMP_F;
|
|
||||||
if (newTemp < MIN_TEMP_F)
|
|
||||||
newTemp = MIN_TEMP_F;
|
|
||||||
} else {
|
|
||||||
if (newTemp > MAX_TEMP_C)
|
|
||||||
newTemp = MAX_TEMP_C;
|
|
||||||
if (newTemp < MIN_TEMP_C)
|
|
||||||
newTemp = MIN_TEMP_C;
|
|
||||||
}
|
}
|
||||||
setSettingValue(SettingsOptions::SolderingTemp, newTemp);
|
if (delta != 0) {
|
||||||
|
// constrain between the set temp limits, i.e. 10-450 C
|
||||||
|
int16_t newTemp = getSettingValue(SettingsOptions::SolderingTemp);
|
||||||
|
newTemp += delta;
|
||||||
|
// Round to nearest increment of delta
|
||||||
|
delta = abs(delta);
|
||||||
|
newTemp = (newTemp / delta) * delta;
|
||||||
|
|
||||||
|
if (getSettingValue(SettingsOptions::TemperatureInF)) {
|
||||||
|
if (newTemp > MAX_TEMP_F)
|
||||||
|
newTemp = MAX_TEMP_F;
|
||||||
|
if (newTemp < MIN_TEMP_F)
|
||||||
|
newTemp = MIN_TEMP_F;
|
||||||
|
} else {
|
||||||
|
if (newTemp > MAX_TEMP_C)
|
||||||
|
newTemp = MAX_TEMP_C;
|
||||||
|
if (newTemp < MIN_TEMP_C)
|
||||||
|
newTemp = MIN_TEMP_C;
|
||||||
|
}
|
||||||
|
setSettingValue(SettingsOptions::SolderingTemp, (uint16_t)newTemp);
|
||||||
|
}
|
||||||
if (xTaskGetTickCount() - lastChange > (TICKS_SECOND * 2))
|
if (xTaskGetTickCount() - lastChange > (TICKS_SECOND * 2))
|
||||||
return; // exit if user just doesn't press anything for a bit
|
return; // exit if user just doesn't press anything for a bit
|
||||||
|
|
||||||
@@ -508,7 +504,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
|
|||||||
case BUTTON_B_LONG:
|
case BUTTON_B_LONG:
|
||||||
case BUTTON_F_SHORT:
|
case BUTTON_F_SHORT:
|
||||||
case BUTTON_B_SHORT:
|
case BUTTON_B_SHORT:
|
||||||
// Do nothing and display a lock warming
|
// Do nothing and display a lock warning
|
||||||
warnUser(translatedString(Tr->WarningKeysLockedString), TICKS_SECOND / 2);
|
warnUser(translatedString(Tr->WarningKeysLockedString), TICKS_SECOND / 2);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -552,7 +548,15 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// else we update the screen information
|
// else we update the screen information
|
||||||
OLED::setCursor(0, 0);
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
OLED::setCursor(50, 0);
|
||||||
|
} else {
|
||||||
|
OLED::setCursor(-1, 0);
|
||||||
|
}
|
||||||
OLED::clearScreen();
|
OLED::clearScreen();
|
||||||
// Draw in the screen details
|
// Draw in the screen details
|
||||||
if (getSettingValue(SettingsOptions::DetailedSoldering)) {
|
if (getSettingValue(SettingsOptions::DetailedSoldering)) {
|
||||||
@@ -560,23 +564,55 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
|
|||||||
|
|
||||||
#ifndef NO_SLEEP_MODE
|
#ifndef NO_SLEEP_MODE
|
||||||
if (getSettingValue(SettingsOptions::Sensitivity) && getSettingValue(SettingsOptions::SleepTime)) {
|
if (getSettingValue(SettingsOptions::Sensitivity) && getSettingValue(SettingsOptions::SleepTime)) {
|
||||||
OLED::setCursor(47, 0);
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
OLED::setCursor(32, 0);
|
||||||
|
} else {
|
||||||
|
OLED::setCursor(47, 0);
|
||||||
|
}
|
||||||
display_countdown(getSleepTimeout());
|
display_countdown(getSleepTimeout());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (boostModeOn) {
|
if (boostModeOn) {
|
||||||
OLED::setCursor(54, 8);
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
OLED::setCursor(38, 8);
|
||||||
|
} else {
|
||||||
|
OLED::setCursor(55, 8);
|
||||||
|
}
|
||||||
OLED::print(SymbolPlus, FontStyle::SMALL);
|
OLED::print(SymbolPlus, FontStyle::SMALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
OLED::setCursor(67, 0);
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
OLED::setCursor(0, 0);
|
||||||
|
} else {
|
||||||
|
OLED::setCursor(67, 0);
|
||||||
|
}
|
||||||
OLED::printNumber(x10WattHistory.average() / 10, 2, FontStyle::SMALL);
|
OLED::printNumber(x10WattHistory.average() / 10, 2, FontStyle::SMALL);
|
||||||
OLED::print(SymbolDot, FontStyle::SMALL);
|
OLED::print(SymbolDot, FontStyle::SMALL);
|
||||||
OLED::printNumber(x10WattHistory.average() % 10, 1, FontStyle::SMALL);
|
OLED::printNumber(x10WattHistory.average() % 10, 1, FontStyle::SMALL);
|
||||||
OLED::print(SymbolWatts, FontStyle::SMALL);
|
OLED::print(SymbolWatts, FontStyle::SMALL);
|
||||||
|
|
||||||
OLED::setCursor(67, 8);
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
OLED::setCursor(0, 8);
|
||||||
|
} else {
|
||||||
|
OLED::setCursor(67, 8);
|
||||||
|
}
|
||||||
printVoltage();
|
printVoltage();
|
||||||
OLED::print(SymbolVolts, FontStyle::SMALL);
|
OLED::print(SymbolVolts, FontStyle::SMALL);
|
||||||
} else {
|
} else {
|
||||||
@@ -649,9 +685,9 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
|
|||||||
} else {
|
} else {
|
||||||
setStatusLED(LED_HEATING);
|
setStatusLED(LED_HEATING);
|
||||||
}
|
}
|
||||||
// If we have tripped thermal runaway, turn off header and show warning
|
// If we have tripped thermal runaway, turn off heater and show warning
|
||||||
if (heaterThermalRunaway) {
|
if (heaterThermalRunaway) {
|
||||||
currentTempTargetDegC = 0; // heaater control off
|
currentTempTargetDegC = 0; // heater control off
|
||||||
// TODO WARNING
|
// TODO WARNING
|
||||||
|
|
||||||
warnUser(translatedString(Tr->WarningThermalRunaway), 10 * TICKS_SECOND);
|
warnUser(translatedString(Tr->WarningThermalRunaway), 10 * TICKS_SECOND);
|
||||||
@@ -910,28 +946,83 @@ void startGUITask(void const *argument) {
|
|||||||
}
|
}
|
||||||
// Clear the lcd buffer
|
// Clear the lcd buffer
|
||||||
OLED::clearScreen();
|
OLED::clearScreen();
|
||||||
OLED::setCursor(0, 0);
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
OLED::setCursor(50, 0);
|
||||||
|
} else {
|
||||||
|
OLED::setCursor(-1, 0);
|
||||||
|
}
|
||||||
if (getSettingValue(SettingsOptions::DetailedIDLE)) {
|
if (getSettingValue(SettingsOptions::DetailedIDLE)) {
|
||||||
if (isTipDisconnected()) {
|
if (isTipDisconnected()) {
|
||||||
OLED::drawArea(0, 0, 41, 16, disconnectedTipIcon);
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
// in right handed mode we want to draw over the first part
|
||||||
|
OLED::drawArea(55, 0, 41, 16, disconnectedTipIconFlip);
|
||||||
|
} else {
|
||||||
|
OLED::drawArea(0, 0, 41, 16, disconnectedTipIcon);
|
||||||
|
}
|
||||||
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
OLED::setCursor(-1, 0);
|
||||||
|
} else {
|
||||||
|
OLED::setCursor(42, 0);
|
||||||
|
}
|
||||||
|
uint32_t Vlt = getInputVoltageX10(getSettingValue(SettingsOptions::VoltageDiv), 0);
|
||||||
|
OLED::printNumber(Vlt / 10, 2, FontStyle::LARGE);
|
||||||
|
OLED::print(SymbolDot, FontStyle::LARGE);
|
||||||
|
OLED::printNumber(Vlt % 10, 1, FontStyle::LARGE);
|
||||||
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
OLED::setCursor(48, 8);
|
||||||
|
} else {
|
||||||
|
OLED::setCursor(91, 8);
|
||||||
|
}
|
||||||
|
OLED::print(SymbolVolts, FontStyle::SMALL);
|
||||||
} else {
|
} else {
|
||||||
if (!(getSettingValue(SettingsOptions::CoolingTempBlink) && (tipTemp > 55) && (xTaskGetTickCount() % 1000 < 300)))
|
if (!(getSettingValue(SettingsOptions::CoolingTempBlink) && (tipTemp > 55) && (xTaskGetTickCount() % 1000 < 300)))
|
||||||
// Blink temp if setting enable and temp < 55°
|
// Blink temp if setting enable and temp < 55°
|
||||||
// 1000 tick/sec
|
// 1000 tick/sec
|
||||||
// OFF 300ms ON 700ms
|
// OFF 300ms ON 700ms
|
||||||
gui_drawTipTemp(true, FontStyle::LARGE); // draw in the temp
|
gui_drawTipTemp(true, FontStyle::LARGE); // draw in the temp
|
||||||
OLED::setCursor(73, 0); // top right
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
OLED::setCursor(6, 0);
|
||||||
|
} else {
|
||||||
|
OLED::setCursor(73, 0); // top right
|
||||||
|
}
|
||||||
OLED::printNumber(getSettingValue(SettingsOptions::SolderingTemp), 3, FontStyle::SMALL); // draw set temp
|
OLED::printNumber(getSettingValue(SettingsOptions::SolderingTemp), 3, FontStyle::SMALL); // draw set temp
|
||||||
if (getSettingValue(SettingsOptions::TemperatureInF))
|
if (getSettingValue(SettingsOptions::TemperatureInF))
|
||||||
OLED::print(SymbolDegF, FontStyle::SMALL);
|
OLED::print(SymbolDegF, FontStyle::SMALL);
|
||||||
else
|
else
|
||||||
OLED::print(SymbolDegC, FontStyle::SMALL);
|
OLED::print(SymbolDegC, FontStyle::SMALL);
|
||||||
|
#ifdef OLED_FLIP
|
||||||
|
if (!OLED::getRotation()) {
|
||||||
|
#else
|
||||||
|
if (OLED::getRotation()) {
|
||||||
|
#endif
|
||||||
|
OLED::setCursor(0, 8);
|
||||||
|
} else {
|
||||||
|
OLED::setCursor(67, 8); // bottom right
|
||||||
|
}
|
||||||
|
printVoltage(); // draw voltage then symbol (v)
|
||||||
|
OLED::print(SymbolVolts, FontStyle::SMALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
OLED::setCursor(67, 8); // bottom right
|
|
||||||
printVoltage(); // draw voltage then symbol (v)
|
|
||||||
OLED::print(SymbolVolts, FontStyle::SMALL);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
#ifdef OLED_FLIP
|
#ifdef OLED_FLIP
|
||||||
if (!OLED::getRotation()) {
|
if (!OLED::getRotation()) {
|
||||||
@@ -967,7 +1058,6 @@ void startGUITask(void const *argument) {
|
|||||||
// in right handed mode we want to draw over the first part
|
// in right handed mode we want to draw over the first part
|
||||||
OLED::fillArea(55, 0, 41, 16, 0); // clear the area for the temp
|
OLED::fillArea(55, 0, 41, 16, 0); // clear the area for the temp
|
||||||
OLED::setCursor(56, 0);
|
OLED::setCursor(56, 0);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
OLED::fillArea(0, 0, 41, 16, 0); // clear the area
|
OLED::fillArea(0, 0, 41, 16, 0); // clear the area
|
||||||
OLED::setCursor(0, 0);
|
OLED::setCursor(0, 0);
|
||||||
@@ -987,7 +1077,6 @@ void startGUITask(void const *argument) {
|
|||||||
#endif
|
#endif
|
||||||
// in right handed mode we want to draw over the first part
|
// in right handed mode we want to draw over the first part
|
||||||
OLED::drawArea(55, 0, 41, 16, disconnectedTipIconFlip);
|
OLED::drawArea(55, 0, 41, 16, disconnectedTipIconFlip);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
OLED::drawArea(0, 0, 41, 16, disconnectedTipIcon);
|
OLED::drawArea(0, 0, 41, 16, disconnectedTipIcon);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user