From a02f8c8ae303034cb2a2d93bec4022616272dd67 Mon Sep 17 00:00:00 2001 From: Ivan Zorin Date: Tue, 21 Nov 2023 01:38:10 +0300 Subject: [PATCH 01/15] Implement optional looping for animated boot logo [#1839] --- source/Core/Drivers/BootLogo.cpp | 58 ++++++++++++++++++++----------- source/Core/Inc/Settings.h | 6 ++++ source/Core/Src/Settings.cpp | 2 +- source/Core/Src/settingsGUI.cpp | 13 +++++-- source/Core/Threads/GUIThread.cpp | 12 +++---- 5 files changed, 60 insertions(+), 31 deletions(-) diff --git a/source/Core/Drivers/BootLogo.cpp b/source/Core/Drivers/BootLogo.cpp index f21b8993..f1f5693d 100644 --- a/source/Core/Drivers/BootLogo.cpp +++ b/source/Core/Drivers/BootLogo.cpp @@ -3,10 +3,11 @@ #include "Buttons.hpp" #include "OLED.hpp" #include "cmsis_os.h" + #define LOGO_PAGE_LENGTH 1024 void delay() { - if (getSettingValue(SettingsOptions::LOGOTime) == 5) { + if (getSettingValue(SettingsOptions::LOGOTime) >= logoMode_t::ONETIME) { waitForButtonPress(); } else { waitForButtonPressOrTimeout(TICKS_SECOND * getSettingValue(SettingsOptions::LOGOTime)); @@ -20,60 +21,75 @@ void BootLogo::handleShowingLogo(const uint8_t *ptrLogoArea) { } else if (ptrLogoArea[0] == 0xAA) { showNewFormat(ptrLogoArea + 1); } + OLED::clearScreen(); OLED::refresh(); } void BootLogo::showOldFormat(const uint8_t *ptrLogoArea) { - OLED::drawAreaSwapped(0, 0, 96, 16, (uint8_t *)(ptrLogoArea + 4)); OLED::refresh(); - - // Delay here until button is pressed or its been the amount of seconds set by the user + // Delay here with static logo until a button is pressed or its been the amount of seconds set by the user delay(); } void BootLogo::showNewFormat(const uint8_t *ptrLogoArea) { - if (getSettingValue(SettingsOptions::LOGOTime) == 0) { + if (getSettingValue(SettingsOptions::LOGOTime) == logoMode_t::SKIP) { return; } + // New logo format (a) fixes long standing byte swap quirk and (b) supports animation uint8_t interFrameDelay = ptrLogoArea[0]; OLED::clearScreen(); - ButtonState buttons = getButtonState(); // Now draw in the frames int position = 1; - do { - + while (getButtonState() == BUTTON_NONE) { int len = (showNewFrame(ptrLogoArea + position)); OLED::refresh(); position += len; - buttons = getButtonState(); if (interFrameDelay) { osDelay(interFrameDelay * 4); } + // 1024 less the header type byte and the inter-frame-delay - if (getSettingValue(SettingsOptions::LOGOTime) > 0 && (position >= 1022 || len == 0)) { - // Delay here until button is pressed or its been the amount of seconds set by the user - delay(); - return; + if (getSettingValue(SettingsOptions::LOGOTime) && (position >= 1022 || len == 0)) { + // Animated logo stops here ... + if (getSettingValue(SettingsOptions::LOGOTime) == logoMode_t::INFINITY) { + // ... but if it's infinite logo setting then keep it rolling over again until a button is pressed + osDelay(4 * TICKS_100MS); + OLED::clearScreen(); + position = 1; + continue; + } + } else { + // Animation in progress so jumping to the next frame + continue; } - } while (buttons == BUTTON_NONE); + + // Static logo case ends up right here, so delay until a button is pressed or its been the amount of seconds set by the user + delay(); + return; + } } + int BootLogo::showNewFrame(const uint8_t *ptrLogoArea) { uint8_t length = ptrLogoArea[0]; - - if (length == 0xFF) { + switch (length) { + case 0: + // End + return 0; + break; + case 0xFE: + return 1; + break; + case 0xFF: // Full frame update OLED::drawArea(0, 0, 96, 16, ptrLogoArea + 1); length = 96; - } else if (length == 0xFE) { - return 1; - } else if (length == 0) { - return 0; // end - } else { + break; + default: length /= 2; // Draw length patches for (int p = 0; p < length; p++) { diff --git a/source/Core/Inc/Settings.h b/source/Core/Inc/Settings.h index c1eef128..f46df53b 100644 --- a/source/Core/Inc/Settings.h +++ b/source/Core/Inc/Settings.h @@ -92,6 +92,12 @@ typedef enum { AUTO = 2, // Automatic screen orientation based on accel.data if presented } orientationMode_t; +typedef enum { + SKIP = 0, // Skip boot logo + ONETIME = 5, // Show boot logo once (if animated) and stall until a button toggled + INFINITY = 6, // Show boot logo on repeat (if animated) until a button toggled +} logoMode_t; + // Settings wide operations void saveSettings(); bool loadSettings(); diff --git a/source/Core/Src/Settings.cpp b/source/Core/Src/Settings.cpp index 5196f4a4..e263943e 100644 --- a/source/Core/Src/Settings.cpp +++ b/source/Core/Src/Settings.cpp @@ -86,7 +86,7 @@ static const SettingConstants settingsConstants[(int)SettingsOptions::SettingsOp {0, 50, 1, 20}, // PDNegTimeout {0, 1, 1, 0}, // OLEDInversion {MIN_BRIGHTNESS, MAX_BRIGHTNESS, BRIGHTNESS_STEP, DEFAULT_BRIGHTNESS}, // OLEDBrightness - {0, 5, 1, 1}, // LOGOTime + {0, 6, 1, 1}, // LOGOTime {0, 1, 1, 0}, // CalibrateCJC {0, 1, 1, 1}, // BluetoothLE {0, 1, 1, 1}, // PDVpdo diff --git a/source/Core/Src/settingsGUI.cpp b/source/Core/Src/settingsGUI.cpp index 9542b08c..8891f53e 100644 --- a/source/Core/Src/settingsGUI.cpp +++ b/source/Core/Src/settingsGUI.cpp @@ -837,13 +837,20 @@ static void displayInvertColor(void) { } static void displayLogoTime(void) { - if (getSettingValue(SettingsOptions::LOGOTime) == 0) { + switch (getSettingValue(SettingsOptions::LOGOTime)) { + case logoMode_t::SKIP: OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); - } else if (getSettingValue(SettingsOptions::LOGOTime) == 5) { + break; + case logoMode_t::ONETIME: + OLED::printNumber(1, 3, FontStyle::LARGE); + break; + case logoMode_t::INFINITY: OLED::drawArea(OLED_WIDTH - 24 - 2, 0, 24, 16, infinityIcon); - } else { + break; + default: OLED::printNumber(getSettingValue(SettingsOptions::LOGOTime), 2, FontStyle::LARGE); OLED::print(LargeSymbolSeconds, FontStyle::LARGE); + break; } } diff --git a/source/Core/Threads/GUIThread.cpp b/source/Core/Threads/GUIThread.cpp index 56dc6574..a0684087 100644 --- a/source/Core/Threads/GUIThread.cpp +++ b/source/Core/Threads/GUIThread.cpp @@ -30,6 +30,7 @@ extern "C" { #include "USBPD.h" #include "pd.h" #endif + // File local variables extern bool heaterThermalRunaway; @@ -63,14 +64,13 @@ void startGUITask(void const *argument) { performCJCC(); } + uint16_t logoMode = getSettingValue(SettingsOptions::LOGOTime); + uint16_t startMode = getSettingValue(SettingsOptions::AutoStartMode); // If the boot logo is enabled (but it times out) and the autostart mode is enabled (but not set to sleep w/o heat), start heating during boot logo - if (getSettingValue(SettingsOptions::LOGOTime) > 0 && getSettingValue(SettingsOptions::LOGOTime) < 5 && getSettingValue(SettingsOptions::AutoStartMode) > 0 - && getSettingValue(SettingsOptions::AutoStartMode) < 3) { - uint16_t sleepTempDegC; + if (logoMode && logoMode < logoMode_t::ONETIME && startMode && startMode < autoStartMode_t::ZERO) { + uint16_t sleepTempDegC = getSettingValue(SettingsOptions::SleepTemp); if (getSettingValue(SettingsOptions::TemperatureInF)) { - sleepTempDegC = TipThermoModel::convertFtoC(getSettingValue(SettingsOptions::SleepTemp)); - } else { - sleepTempDegC = getSettingValue(SettingsOptions::SleepTemp); + sleepTempDegC = TipThermoModel::convertFtoC(sleepTempDegC); } // Only heat to sleep temperature (but no higher than 75°C for safety) currentTempTargetDegC = min(sleepTempDegC, 75); From 7338a6865210313a5b820863b0f812c2e989fc00 Mon Sep 17 00:00:00 2001 From: Ivan Zorin Date: Tue, 21 Nov 2023 18:22:27 +0300 Subject: [PATCH 02/15] Use half of infinity logo as icon for one-time loop animation setting in the menu --- source/Core/Src/settingsGUI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/Core/Src/settingsGUI.cpp b/source/Core/Src/settingsGUI.cpp index 8891f53e..c551e14d 100644 --- a/source/Core/Src/settingsGUI.cpp +++ b/source/Core/Src/settingsGUI.cpp @@ -842,7 +842,7 @@ static void displayLogoTime(void) { OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); break; case logoMode_t::ONETIME: - OLED::printNumber(1, 3, FontStyle::LARGE); + OLED::drawArea((OLED_WIDTH - 24 - 2) + 12, 0, 24, 16, infinityIcon); break; case logoMode_t::INFINITY: OLED::drawArea(OLED_WIDTH - 24 - 2, 0, 24, 16, infinityIcon); From 92f74e58810e51f6aad8798bcb780714d1e00cd8 Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Tue, 21 Nov 2023 17:05:23 +0100 Subject: [PATCH 03/15] extend infinity icon --- source/Core/Drivers/Font.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/Core/Drivers/Font.h b/source/Core/Drivers/Font.h index 0bd08c82..265a7a12 100644 --- a/source/Core/Drivers/Font.h +++ b/source/Core/Drivers/Font.h @@ -175,11 +175,17 @@ const uint8_t buttonB[] = { // 0xFE, 0x01, 0x79, 0x25, 0x79, 0x01, 0xFE, 0x00, 0x20, 0x20, 0x20, 0x20, 0xDF, 0x07, 0x8F, 0xDF, 0xFF, 0x01, 0xFE, 0x86, 0xDA, 0x86, 0xFE, 0x01, // 0x7F, 0x80, 0xA4, 0xBE, 0xA0, 0x80, 0x7F, 0x00, 0x04, 0x0E, 0x1F, 0x04, 0xFB, 0xFB, 0xFB, 0xFB, 0xFF, 0x80, 0x7F, 0x5B, 0x41, 0x5F, 0x7F, 0x80}; -const uint8_t infinityIcon[] = { +const uint8_t infinityOnce[] = { // width = 24 // height = 16 0x00, 0xc0, 0x70, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x10, 0x20, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x70, 0xc0, 0x00, - 0x00, 0x01, 0x07, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x00, 0x02, 0x04, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07, 0x01, 0x00}; + 0x00, 0x01, 0x03, 0x08, 0x04, 0x7e, 0x00, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x00, 0x02, 0x04, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07, 0x01, 0x00}; + +const uint8_t infinityLoop[] = { + // width = 24 + // height = 16 + 0x00, 0xc0, 0x70, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x10, 0x20, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x70, 0xc0, 0x00, + 0x00, 0x01, 0x1c, 0x22, 0x41, 0x01, 0x71, 0x62, 0x5c, 0x00, 0x03, 0x01, 0x00, 0x02, 0x04, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07, 0x01, 0x00}; /* * 16x16 icons From 4f5bbcf370034f90088cd52a4b8b95f15681123a Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Tue, 21 Nov 2023 17:11:21 +0100 Subject: [PATCH 04/15] Update settingsGUI.cpp --- source/Core/Src/settingsGUI.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/Core/Src/settingsGUI.cpp b/source/Core/Src/settingsGUI.cpp index c551e14d..c3208352 100644 --- a/source/Core/Src/settingsGUI.cpp +++ b/source/Core/Src/settingsGUI.cpp @@ -842,10 +842,10 @@ static void displayLogoTime(void) { OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); break; case logoMode_t::ONETIME: - OLED::drawArea((OLED_WIDTH - 24 - 2) + 12, 0, 24, 16, infinityIcon); + OLED::drawArea(OLED_WIDTH - 24 - 2, 0, 24, 16, infinityOnce); break; case logoMode_t::INFINITY: - OLED::drawArea(OLED_WIDTH - 24 - 2, 0, 24, 16, infinityIcon); + OLED::drawArea(OLED_WIDTH - 24 - 2, 0, 24, 16, infinityLoop); break; default: OLED::printNumber(getSettingValue(SettingsOptions::LOGOTime), 2, FontStyle::LARGE); From f914240cad3c614b1e9561a81227555a1d660013 Mon Sep 17 00:00:00 2001 From: Ivan Zorin Date: Wed, 22 Nov 2023 01:36:38 +0300 Subject: [PATCH 05/15] Update links to the original Miniware firmware [#1840] (#1842) --- Documentation/Flashing/MHP30.md | 2 +- Documentation/Flashing/TS100.md | 2 +- Documentation/Flashing/TS80(P).md | 2 +- Documentation/Hardware.md | 9 +++++---- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Documentation/Flashing/MHP30.md b/Documentation/Flashing/MHP30.md index 4ac4c5d1..68a10184 100644 --- a/Documentation/Flashing/MHP30.md +++ b/Documentation/Flashing/MHP30.md @@ -26,7 +26,7 @@ Then this works the same as a production release (use the correct file). # MHP30 -This is completely safe, but if it goes wrong just put the `.hex` file from the official website ([MHP30](https://www.minidso.com/forum.php?mod=viewthread&tid=4385&extra=page%3D1) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called MHP30.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `MHP30_{Language-Code}.hex`. +This is completely safe, but if it goes wrong just put the corresponding `.hex` file from [the official website](https://e-design.com.cn/en/NewsDetail/4203645.html) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called MHP30.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `MHP30_{Language-Code}.hex`. Officially the bootloader on the devices only works under Windows (use the built-in File Explorer, as alternative file managers or copy handlers like Teracopy will fail). However, users have reported that it does work under Mac, and can be made to work under Linux _sometimes_. Details over on the [wiki page](https://github.com/Ralim/IronOS/wiki/Upgrading-Firmware). diff --git a/Documentation/Flashing/TS100.md b/Documentation/Flashing/TS100.md index 787164e1..446bc475 100644 --- a/Documentation/Flashing/TS100.md +++ b/Documentation/Flashing/TS100.md @@ -26,7 +26,7 @@ Then this works the same as a production release (use the correct file). # TS100 -This is completely safe, but if it goes wrong just put the `.hex` file from the official website ([TS100](https://www.minidso.com/forum.php?mod=viewthread&tid=868&extra=page%3D1) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called TS100.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `TS100_{Language-Code}.hex`. +This is completely safe, but if it goes wrong just put the corresponding `.hex` file from [the official website](https://e-design.com.cn/en/NewsDetail/4203645.html) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called TS100.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `TS100_{Language-Code}.hex`. Officially the bootloader on the devices only works under Windows (use the built-in File Explorer, as alternative file managers or copy handlers like Teracopy will fail). However, users have reported that it does work under Mac, and can be made to work under Linux _sometimes_. Details over on the [wiki page](https://github.com/Ralim/IronOS/wiki/Upgrading-Firmware). diff --git a/Documentation/Flashing/TS80(P).md b/Documentation/Flashing/TS80(P).md index deaa6b98..efdbf7d2 100644 --- a/Documentation/Flashing/TS80(P).md +++ b/Documentation/Flashing/TS80(P).md @@ -26,7 +26,7 @@ Then this works the same as a production release (use the correct file). # TS80 / TS80P -This is completely safe, but if it goes wrong just put the `.hex` file from the official website ([TS80](https://www.minidso.com/forum.php?mod=viewthread&tid=868&extra=page%3D1)/[TS80P](https://www.minidso.com/forum.php?mod=viewthread&tid=4070&extra=page%3D1) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called TS80.zip or TS80P.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `TS80_{Language-Code}.hex`/`TS80P_{Language-Code}.hex`. +This is completely safe, but if it goes wrong just put the corresponding `.hex` file from [the official website](https://e-design.com.cn/en/NewsDetail/4203645.html) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called TS80.zip or TS80P.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `TS80_{Language-Code}.hex`/`TS80P_{Language-Code}.hex`. Officially the bootloader on the devices only works under Windows (use the built-in File Explorer, as alternative file managers or copy handlers like Teracopy will fail). However, users have reported that it does work under Mac, and can be made to work under Linux _sometimes_. Details over on the [wiki page](https://github.com/Ralim/TS80/wiki/Upgrading-Firmware). diff --git a/Documentation/Hardware.md b/Documentation/Hardware.md index 4734a552..06ce9ac9 100644 --- a/Documentation/Hardware.md +++ b/Documentation/Hardware.md @@ -8,7 +8,7 @@ TS100\* is a neat soldering iron: - can run from 9-25V DC; - provides a power range that is determined by the input voltage; - voltages below 12V don't overly work well for any substantial mass; -- the default firmware can be found [here](https://www.minidso.com/forum.php?mod=viewthread&tid=892&extra=page%3D1). +- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html). ![](https://brushlesswhoop.com/images/ts100-og.jpg) @@ -19,7 +19,7 @@ TS80\* is a successor to TS100: - uses _Quick Charge 3.0_ / _QC3_ capable charger only (18W max); - doesn't support PD as it is not designed on the hardware level; -- the default firmware can be found [here](https://www.minidso.com/forum.php?mod=viewthread&tid=3208&extra=page%3D1). +- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html). ![](https://core-electronics.com.au/media/catalog/product/4/2/4244-01.jpg) @@ -30,7 +30,7 @@ TS80P\* is a successor to TS80: - supports _Quick Charge 3.0_ (_QC3_: 9V/3A, 18W max); - supports _Power Delivery_ (_PD_: 9V/3A & 12V/3A, 30W max)\*\*; -- the default firmware can be found [here](https://www.minidso.com/forum.php?mod=viewthread&tid=4085&extra=page%3D1). +- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html). \*\*: use valid PD device that supports 12V/3A as power source to get full 30W potential, otherwise the iron will fall back to 9V/18W power mode. @@ -44,7 +44,8 @@ MHP30 is a **M**ini **H**ot **P**late: - accelerometer is the MSA301, this is mounted roughly in the middle of the unit; - USB-PD is using the FUSB302; - the hardware I2C bus on PB6/7 is used for the MSA301 and FUSB302; -- the OLED is the same SSD1306 as everything else, but it’s on a bit-banged bus. +- the OLED is the same SSD1306 as everything else, but it’s on a bit-banged bus; +- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html). ### Pinecil From cf8d6ee78346f6e3dabc454cf79a2d41d64b16ee Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Wed, 22 Nov 2023 00:05:51 +0100 Subject: [PATCH 06/15] Update Font.h --- source/Core/Drivers/Font.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/Core/Drivers/Font.h b/source/Core/Drivers/Font.h index 265a7a12..27db5016 100644 --- a/source/Core/Drivers/Font.h +++ b/source/Core/Drivers/Font.h @@ -176,16 +176,16 @@ const uint8_t buttonB[] = { // 0x7F, 0x80, 0xA4, 0xBE, 0xA0, 0x80, 0x7F, 0x00, 0x04, 0x0E, 0x1F, 0x04, 0xFB, 0xFB, 0xFB, 0xFB, 0xFF, 0x80, 0x7F, 0x5B, 0x41, 0x5F, 0x7F, 0x80}; const uint8_t infinityOnce[] = { - // width = 24 + // width = 16 // height = 16 - 0x00, 0xc0, 0x70, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x10, 0x20, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x70, 0xc0, 0x00, - 0x00, 0x01, 0x03, 0x08, 0x04, 0x7e, 0x00, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x00, 0x02, 0x04, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07, 0x01, 0x00}; + 0x00, 0xc0, 0x30, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x14, 0x18, 0x1c, 0x00, 0xc0, 0x00, + 0x00, 0x03, 0x08, 0x04, 0x7e, 0x00, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x10, 0x0c, 0x03, 0x00}; const uint8_t infinityLoop[] = { - // width = 24 + // width = 16 // height = 16 - 0x00, 0xc0, 0x70, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x10, 0x20, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x70, 0xc0, 0x00, - 0x00, 0x01, 0x1c, 0x22, 0x41, 0x01, 0x71, 0x62, 0x5c, 0x00, 0x03, 0x01, 0x00, 0x02, 0x04, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07, 0x01, 0x00}; + 0x00, 0xc0, 0x30, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x14, 0x18, 0x1c, 0x00, 0xc0, 0x00, + 0x00, 0x33, 0x48, 0x48, 0x30, 0x48, 0x48, 0x30, 0x00, 0x40, 0x20, 0x20, 0x10, 0x0c, 0x03, 0x00}; /* * 16x16 icons From faf2c6733ed4d48429f05a97ee5fa37c1de15364 Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Wed, 22 Nov 2023 00:07:10 +0100 Subject: [PATCH 07/15] Update settingsGUI.cpp --- source/Core/Src/settingsGUI.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/Core/Src/settingsGUI.cpp b/source/Core/Src/settingsGUI.cpp index c3208352..351c5266 100644 --- a/source/Core/Src/settingsGUI.cpp +++ b/source/Core/Src/settingsGUI.cpp @@ -842,10 +842,10 @@ static void displayLogoTime(void) { OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); break; case logoMode_t::ONETIME: - OLED::drawArea(OLED_WIDTH - 24 - 2, 0, 24, 16, infinityOnce); + OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, infinityOnce); break; case logoMode_t::INFINITY: - OLED::drawArea(OLED_WIDTH - 24 - 2, 0, 24, 16, infinityLoop); + OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, infinityLoop); break; default: OLED::printNumber(getSettingValue(SettingsOptions::LOGOTime), 2, FontStyle::LARGE); From 37420d3ee108fdd4fb5179660d3cce6c62ed6603 Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Wed, 22 Nov 2023 09:20:02 +0100 Subject: [PATCH 08/15] Update Font.h --- source/Core/Drivers/Font.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/Core/Drivers/Font.h b/source/Core/Drivers/Font.h index 27db5016..9672891c 100644 --- a/source/Core/Drivers/Font.h +++ b/source/Core/Drivers/Font.h @@ -175,13 +175,13 @@ const uint8_t buttonB[] = { // 0xFE, 0x01, 0x79, 0x25, 0x79, 0x01, 0xFE, 0x00, 0x20, 0x20, 0x20, 0x20, 0xDF, 0x07, 0x8F, 0xDF, 0xFF, 0x01, 0xFE, 0x86, 0xDA, 0x86, 0xFE, 0x01, // 0x7F, 0x80, 0xA4, 0xBE, 0xA0, 0x80, 0x7F, 0x00, 0x04, 0x0E, 0x1F, 0x04, 0xFB, 0xFB, 0xFB, 0xFB, 0xFF, 0x80, 0x7F, 0x5B, 0x41, 0x5F, 0x7F, 0x80}; -const uint8_t infinityOnce[] = { +const uint8_t RepeatOnce[] = { // width = 16 // height = 16 0x00, 0xc0, 0x30, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x14, 0x18, 0x1c, 0x00, 0xc0, 0x00, 0x00, 0x03, 0x08, 0x04, 0x7e, 0x00, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x10, 0x0c, 0x03, 0x00}; -const uint8_t infinityLoop[] = { +const uint8_t RepeatInf[] = { // width = 16 // height = 16 0x00, 0xc0, 0x30, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x14, 0x18, 0x1c, 0x00, 0xc0, 0x00, From 00c3d150dd56b56fb3cc96e983053a25634cb381 Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Wed, 22 Nov 2023 09:21:24 +0100 Subject: [PATCH 09/15] Update settingsGUI.cpp --- source/Core/Src/settingsGUI.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/Core/Src/settingsGUI.cpp b/source/Core/Src/settingsGUI.cpp index 351c5266..cc6910ac 100644 --- a/source/Core/Src/settingsGUI.cpp +++ b/source/Core/Src/settingsGUI.cpp @@ -842,10 +842,10 @@ static void displayLogoTime(void) { OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); break; case logoMode_t::ONETIME: - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, infinityOnce); + OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, RepeatOnce); break; case logoMode_t::INFINITY: - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, infinityLoop); + OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, RepeatInf); break; default: OLED::printNumber(getSettingValue(SettingsOptions::LOGOTime), 2, FontStyle::LARGE); From 9bfb36e349976c743acdfb57cffbba95eadc1989 Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Wed, 22 Nov 2023 18:34:25 +0100 Subject: [PATCH 10/15] Update Font.h --- source/Core/Drivers/Font.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/Core/Drivers/Font.h b/source/Core/Drivers/Font.h index 9672891c..2971dcb5 100644 --- a/source/Core/Drivers/Font.h +++ b/source/Core/Drivers/Font.h @@ -178,14 +178,14 @@ const uint8_t buttonB[] = { const uint8_t RepeatOnce[] = { // width = 16 // height = 16 - 0x00, 0xc0, 0x30, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x14, 0x18, 0x1c, 0x00, 0xc0, 0x00, - 0x00, 0x03, 0x08, 0x04, 0x7e, 0x00, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x10, 0x0c, 0x03, 0x00}; + 0x00, 0xc0, 0xf0, 0x78, 0x1c, 0x0c, 0x0e, 0x06, 0x06, 0x0e, 0x2c, 0x3c, 0x38, 0x3c, 0x00, 0x00, + 0x00, 0x01, 0x08, 0x04, 0x7e, 0x00, 0x00, 0x60, 0x60, 0x70, 0x30, 0x38, 0x1e, 0x0f, 0x02, 0x00}; const uint8_t RepeatInf[] = { // width = 16 // height = 16 - 0x00, 0xc0, 0x30, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x14, 0x18, 0x1c, 0x00, 0xc0, 0x00, - 0x00, 0x33, 0x48, 0x48, 0x30, 0x48, 0x48, 0x30, 0x00, 0x40, 0x20, 0x20, 0x10, 0x0c, 0x03, 0x00}; + 0x00, 0xc0, 0xf0, 0x78, 0x1c, 0x0c, 0x0e, 0x06, 0x06, 0x0e, 0x2c, 0x3c, 0x38, 0x3c, 0x00, 0x00, + 0x00, 0x31, 0x49, 0x48, 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x30, 0x38, 0x1e, 0x0f, 0x02, 0x00}; /* * 16x16 icons From 229ae9b30e9ad5fea0ba2b57664c7d346c4eb33c Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Wed, 22 Nov 2023 18:41:02 +0100 Subject: [PATCH 11/15] Update Font.h --- source/Core/Drivers/Font.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/Core/Drivers/Font.h b/source/Core/Drivers/Font.h index 2971dcb5..9548c676 100644 --- a/source/Core/Drivers/Font.h +++ b/source/Core/Drivers/Font.h @@ -179,7 +179,7 @@ const uint8_t RepeatOnce[] = { // width = 16 // height = 16 0x00, 0xc0, 0xf0, 0x78, 0x1c, 0x0c, 0x0e, 0x06, 0x06, 0x0e, 0x2c, 0x3c, 0x38, 0x3c, 0x00, 0x00, - 0x00, 0x01, 0x08, 0x04, 0x7e, 0x00, 0x00, 0x60, 0x60, 0x70, 0x30, 0x38, 0x1e, 0x0f, 0x02, 0x00}; + 0x00, 0x01, 0x08, 0x04, 0x7e, 0x00, 0x00, 0x60, 0x60, 0x70, 0x30, 0x38, 0x1e, 0x0f, 0x03, 0x00}; const uint8_t RepeatInf[] = { // width = 16 From 8eebb01047778a14000613c114ee3683eaba3aed Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Wed, 22 Nov 2023 18:45:41 +0100 Subject: [PATCH 12/15] Update Font.h --- source/Core/Drivers/Font.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/Core/Drivers/Font.h b/source/Core/Drivers/Font.h index 9548c676..e8f120f4 100644 --- a/source/Core/Drivers/Font.h +++ b/source/Core/Drivers/Font.h @@ -185,7 +185,7 @@ const uint8_t RepeatInf[] = { // width = 16 // height = 16 0x00, 0xc0, 0xf0, 0x78, 0x1c, 0x0c, 0x0e, 0x06, 0x06, 0x0e, 0x2c, 0x3c, 0x38, 0x3c, 0x00, 0x00, - 0x00, 0x31, 0x49, 0x48, 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x30, 0x38, 0x1e, 0x0f, 0x02, 0x00}; + 0x00, 0x31, 0x49, 0x48, 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x30, 0x38, 0x1e, 0x0f, 0x03, 0x00}; /* * 16x16 icons From fac46e21875e1cc1a71648601cc0b138f0c26706 Mon Sep 17 00:00:00 2001 From: Ivan Zorin Date: Thu, 23 Nov 2023 09:34:34 +0300 Subject: [PATCH 13/15] Font.h: remove extra spaces --- source/Core/Drivers/Font.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/Core/Drivers/Font.h b/source/Core/Drivers/Font.h index e8f120f4..234baefb 100644 --- a/source/Core/Drivers/Font.h +++ b/source/Core/Drivers/Font.h @@ -178,13 +178,13 @@ const uint8_t buttonB[] = { const uint8_t RepeatOnce[] = { // width = 16 // height = 16 - 0x00, 0xc0, 0xf0, 0x78, 0x1c, 0x0c, 0x0e, 0x06, 0x06, 0x0e, 0x2c, 0x3c, 0x38, 0x3c, 0x00, 0x00, + 0x00, 0xc0, 0xf0, 0x78, 0x1c, 0x0c, 0x0e, 0x06, 0x06, 0x0e, 0x2c, 0x3c, 0x38, 0x3c, 0x00, 0x00, 0x00, 0x01, 0x08, 0x04, 0x7e, 0x00, 0x00, 0x60, 0x60, 0x70, 0x30, 0x38, 0x1e, 0x0f, 0x03, 0x00}; const uint8_t RepeatInf[] = { // width = 16 // height = 16 - 0x00, 0xc0, 0xf0, 0x78, 0x1c, 0x0c, 0x0e, 0x06, 0x06, 0x0e, 0x2c, 0x3c, 0x38, 0x3c, 0x00, 0x00, + 0x00, 0xc0, 0xf0, 0x78, 0x1c, 0x0c, 0x0e, 0x06, 0x06, 0x0e, 0x2c, 0x3c, 0x38, 0x3c, 0x00, 0x00, 0x00, 0x31, 0x49, 0x48, 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x30, 0x38, 0x1e, 0x0f, 0x03, 0x00}; /* From c97e3eb29b86ce3225d1da033187a3d5648f1618 Mon Sep 17 00:00:00 2001 From: Ivan Zorin Date: Thu, 23 Nov 2023 11:23:20 +0300 Subject: [PATCH 14/15] Updating references in the docs (#1843) * Documentation: add links to firmware mirror backup [#1840] * Documentation/Flashing: replace out-of-dated external wiki links by internal references * Documentation/Flashing: add missing space --- Documentation/Flashing/MHP30.md | 4 ++-- Documentation/Flashing/TS100.md | 4 ++-- Documentation/Flashing/TS80(P).md | 4 ++-- Documentation/Hardware.md | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Documentation/Flashing/MHP30.md b/Documentation/Flashing/MHP30.md index 68a10184..afc13313 100644 --- a/Documentation/Flashing/MHP30.md +++ b/Documentation/Flashing/MHP30.md @@ -26,9 +26,9 @@ Then this works the same as a production release (use the correct file). # MHP30 -This is completely safe, but if it goes wrong just put the corresponding `.hex` file from [the official website](https://e-design.com.cn/en/NewsDetail/4203645.html) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called MHP30.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `MHP30_{Language-Code}.hex`. +This is completely safe, but if it goes wrong just put the corresponding `.hex` file from [the official website](https://e-design.com.cn/en/NewsDetail/4203645.html) ([mirror backup](https://github.com/Ralim/IronOS-Meta/tree/main/Firmware/Miniware)) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called MHP30.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `MHP30_{Language-Code}.hex`. -Officially the bootloader on the devices only works under Windows (use the built-in File Explorer, as alternative file managers or copy handlers like Teracopy will fail). However, users have reported that it does work under Mac, and can be made to work under Linux _sometimes_. Details over on the [wiki page](https://github.com/Ralim/IronOS/wiki/Upgrading-Firmware). +Officially the bootloader on the devices only works under Windows (use the built-in File Explorer, as alternative file managers or copy handlers like Teracopy will fail). However, users have reported that it does work under [Mac](#mac), and can be made to work under [Linux](#linux) _sometimes_ (look for details below). 1. Hold the button closest to the tip (MHP30 the left button on the back), and plug in the USB to the computer. 2. The unit will appear as a USB drive. (Screen will say `DFU` on it.) diff --git a/Documentation/Flashing/TS100.md b/Documentation/Flashing/TS100.md index 446bc475..0d5ff257 100644 --- a/Documentation/Flashing/TS100.md +++ b/Documentation/Flashing/TS100.md @@ -26,9 +26,9 @@ Then this works the same as a production release (use the correct file). # TS100 -This is completely safe, but if it goes wrong just put the corresponding `.hex` file from [the official website](https://e-design.com.cn/en/NewsDetail/4203645.html) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called TS100.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `TS100_{Language-Code}.hex`. +This is completely safe, but if it goes wrong just put the corresponding `.hex` file from [the official website](https://e-design.com.cn/en/NewsDetail/4203645.html) ([mirror backup](https://github.com/Ralim/IronOS-Meta/tree/main/Firmware/Miniware)) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called TS100.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `TS100_{Language-Code}.hex`. -Officially the bootloader on the devices only works under Windows (use the built-in File Explorer, as alternative file managers or copy handlers like Teracopy will fail). However, users have reported that it does work under Mac, and can be made to work under Linux _sometimes_. Details over on the [wiki page](https://github.com/Ralim/IronOS/wiki/Upgrading-Firmware). +Officially the bootloader on the devices only works under Windows (use the built-in File Explorer, as alternative file managers or copy handlers like Teracopy will fail). However, users have reported that it does work under [Mac](#mac), and can be made to work under [Linux](#linux) _sometimes_ (look for details below). 1. Hold the button closest to the tip (MHP30 the left button on the back), and plug in the USB to the computer. 2. The unit will appear as a USB drive. (Screen will say `DFU` on it.) diff --git a/Documentation/Flashing/TS80(P).md b/Documentation/Flashing/TS80(P).md index efdbf7d2..739f4da4 100644 --- a/Documentation/Flashing/TS80(P).md +++ b/Documentation/Flashing/TS80(P).md @@ -26,9 +26,9 @@ Then this works the same as a production release (use the correct file). # TS80 / TS80P -This is completely safe, but if it goes wrong just put the corresponding `.hex` file from [the official website](https://e-design.com.cn/en/NewsDetail/4203645.html) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called TS80.zip or TS80P.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `TS80_{Language-Code}.hex`/`TS80P_{Language-Code}.hex`. +This is completely safe, but if it goes wrong just put the corresponding `.hex` file from [the official website](https://e-design.com.cn/en/NewsDetail/4203645.html) ([mirror backup](https://github.com/Ralim/IronOS-Meta/tree/main/Firmware/Miniware)) onto the unit and you're back to the old firmware. Downloads for the `.hex` files to flash are available on the [releases page.](https://github.com/Ralim/IronOS/releases) The file you want is called TS80.zip or TS80P.zip. Inside the zip file (make sure to extract the file before flashing with it) will be a file called `TS80_{Language-Code}.hex`/`TS80P_{Language-Code}.hex`. -Officially the bootloader on the devices only works under Windows (use the built-in File Explorer, as alternative file managers or copy handlers like Teracopy will fail). However, users have reported that it does work under Mac, and can be made to work under Linux _sometimes_. Details over on the [wiki page](https://github.com/Ralim/TS80/wiki/Upgrading-Firmware). +Officially the bootloader on the devices only works under Windows (use the built-in File Explorer, as alternative file managers or copy handlers like Teracopy will fail). However, users have reported that it does work under [Mac](#mac), and can be made to work under [Linux](#linux) _sometimes_ (look for details below). 1. Hold the button closest to the tip (MHP30 the left button on the back), and plug in the USB to the computer. 2. The unit will appear as a USB drive. (Screen will say `DFU` on it.) diff --git a/Documentation/Hardware.md b/Documentation/Hardware.md index 06ce9ac9..55f52512 100644 --- a/Documentation/Hardware.md +++ b/Documentation/Hardware.md @@ -8,7 +8,7 @@ TS100\* is a neat soldering iron: - can run from 9-25V DC; - provides a power range that is determined by the input voltage; - voltages below 12V don't overly work well for any substantial mass; -- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html). +- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html)([mirror backup](https://github.com/Ralim/IronOS-Meta/tree/main/Firmware/Miniware)). ![](https://brushlesswhoop.com/images/ts100-og.jpg) @@ -19,7 +19,7 @@ TS80\* is a successor to TS100: - uses _Quick Charge 3.0_ / _QC3_ capable charger only (18W max); - doesn't support PD as it is not designed on the hardware level; -- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html). +- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html)([mirror backup](https://github.com/Ralim/IronOS-Meta/tree/main/Firmware/Miniware)). ![](https://core-electronics.com.au/media/catalog/product/4/2/4244-01.jpg) @@ -30,7 +30,7 @@ TS80P\* is a successor to TS80: - supports _Quick Charge 3.0_ (_QC3_: 9V/3A, 18W max); - supports _Power Delivery_ (_PD_: 9V/3A & 12V/3A, 30W max)\*\*; -- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html). +- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html)([mirror backup](https://github.com/Ralim/IronOS-Meta/tree/main/Firmware/Miniware)). \*\*: use valid PD device that supports 12V/3A as power source to get full 30W potential, otherwise the iron will fall back to 9V/18W power mode. @@ -45,7 +45,7 @@ MHP30 is a **M**ini **H**ot **P**late: - USB-PD is using the FUSB302; - the hardware I2C bus on PB6/7 is used for the MSA301 and FUSB302; - the OLED is the same SSD1306 as everything else, but it’s on a bit-banged bus; -- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html). +- the original firmware can be found [here](https://e-design.com.cn/en/NewsDetail/4203645.html)([mirror backup](https://github.com/Ralim/IronOS-Meta/tree/main/Firmware/Miniware)). ### Pinecil From 79a887718b347927ec43e0492cb0e449482a661c Mon Sep 17 00:00:00 2001 From: Dmitry Gribenchuk Date: Wed, 29 Nov 2023 10:47:38 +0200 Subject: [PATCH 15/15] update translation_BE.json --- Translations/translation_BE.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Translations/translation_BE.json b/Translations/translation_BE.json index 30039009..092e95e8 100644 --- a/Translations/translation_BE.json +++ b/Translations/translation_BE.json @@ -31,7 +31,7 @@ "message": "Некантралюемае\nразаграванне" }, "WarningTipShorted": { - "message": "!Tip Shorted!" + "message": "!Кароткае замыканне на джале!" }, "SettingsCalibrationWarning": { "message": "Пераканайцеся, што пры наступнай загрузцы наканечнік і ручка маюць пакаёвую тэмпературу!" @@ -64,16 +64,16 @@ "message": "Выкл." }, "ProfilePreheatString": { - "message": "Preheat\n" + "message": "Разагрэць\n" }, "ProfileCooldownString": { - "message": "Cooldown\n" + "message": "Астудзіць\n" }, "DeviceFailedValidationWarning": { "message": "Ваша прылада, хутчэй за ўсё, падробка!" }, "TooHotToStartProfileWarning": { - "message": "Too hot to\nstart profile" + "message": "Занадта горача\nкаб запусціць профіль" } }, "characters": { @@ -157,23 +157,23 @@ }, "ProfilePhases": { "displayText": "Profile\nPhases", - "description": "Number of phases in profile mode" + "description": "Колькасць фаз у рэжыме профілю" }, "ProfilePreheatTemp": { "displayText": "Preheat\nTemp", - "description": "Preheat to this temperature at the start of profile mode" + "description": "Разагрэйце да гэтай тэмпературы ў пачатку профільнага рэжыму" }, "ProfilePreheatSpeed": { "displayText": "Preheat\nSpeed", - "description": "Preheat at this rate (degrees per second)" + "description": "Разагрэйце з гэтай хуткасцю (градусы ў секунду)" }, "ProfilePhase1Temp": { "displayText": "Phase 1\nTemp", - "description": "Target temperature for the end of this phase" + "description": "Мэтавая тэмпература ў канцы гэтай фазы" }, "ProfilePhase1Duration": { "displayText": "Phase 1\nDuration", - "description": "Target duration of this phase (seconds)" + "description": "Мэтавая працягласць гэтай фазы (секунды)" }, "ProfilePhase2Temp": { "displayText": "Phase 2\nTemp", @@ -209,7 +209,7 @@ }, "ProfileCooldownSpeed": { "displayText": "Cooldown\nSpeed", - "description": "Cooldown at this rate at the end of profile mode (degrees per second)" + "description": "Астуджаць з гэтай хуткасцю ў канцы профільнага рэжыму (градусы ў секунду)" }, "MotionSensitivity": { "displayText": "Адчувальнасць\nакселерометра", @@ -281,7 +281,7 @@ }, "BluetoothLE": { "displayText": "Bluetooth\n", - "description": "Enables BLE" + "description": "Уключыць BLE" }, "PowerLimit": { "displayText": "Межы\nмагутнасці",