From 9007f6c0e892c5bebb20692a14e323fd68b37138 Mon Sep 17 00:00:00 2001 From: Ivan Zorin Date: Wed, 3 Jul 2024 03:51:40 +0300 Subject: [PATCH 1/6] Update RU translation for PD mode options (#1940) --- Translations/translation_RU.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Translations/translation_RU.json b/Translations/translation_RU.json index 1c408972..b3b35db8 100644 --- a/Translations/translation_RU.json +++ b/Translations/translation_RU.json @@ -107,13 +107,13 @@ }, "menuValues": { "USBPDModeDefault": { - "displayText": "Default\nMode" + "displayText": "Вкл.\nPPSиEPR" }, "USBPDModeNoDynamic": { - "displayText": "No\nDynamic" + "displayText": "Откл.\n" }, "USBPDModeSafe": { - "displayText": "Safe\nMode" + "displayText": "Вкл.без\nсопротив" } }, "menuOptions": { @@ -130,12 +130,12 @@ "description": "Максимальное напряжение для согласования с источником питания по QC" }, "PDNegTimeout": { - "displayText": "PD\nинтервал", + "displayText": "Интервал\nPD", "description": "Интервал согласования питания по Power Delivery с шагом 100 мс для совместимости с некоторыми источниками питания по QC (0=Откл.)" }, "USBPDMode": { - "displayText": "PD\nMode", - "description": "Включить режимы PPS & EPR" + "displayText": "Режим\nPD", + "description": "Вкл.без сопротив: включить PPS и EPR без 'выравнивания' сопротивления" }, "BoostTemperature": { "displayText": "t° турбо\nрежима", From 116afeca6016979ced328b098d2491d98ebb4dc2 Mon Sep 17 00:00:00 2001 From: fredericuslaurentii <157758058+fredericuslaurentii@users.noreply.github.com> Date: Wed, 3 Jul 2024 02:51:56 +0200 Subject: [PATCH 2/6] PD modes IT translation (#1937) Update translation_IT.json --- Translations/translation_IT.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Translations/translation_IT.json b/Translations/translation_IT.json index 41be5b11..40f4714c 100644 --- a/Translations/translation_IT.json +++ b/Translations/translation_IT.json @@ -107,13 +107,13 @@ }, "menuValues": { "USBPDModeDefault": { - "displayText": "Default\nMode" + "displayText": "Modo\npredefinito" }, "USBPDModeNoDynamic": { - "displayText": "No\nDynamic" + "displayText": "Modo\nstatico" }, "USBPDModeSafe": { - "displayText": "Safe\nMode" + "displayText": "Modo\nsicuro" } }, "menuOptions": { From b72ff94ecef78a1a030a59a6f6b809f4bf233c8f Mon Sep 17 00:00:00 2001 From: dmitrygribenchuk Date: Sun, 7 Jul 2024 15:56:46 +0300 Subject: [PATCH 3/6] update translation_BE.json (#1942) --- Translations/translation_BE.json | 52 ++++++++++++++++---------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/Translations/translation_BE.json b/Translations/translation_BE.json index c2980732..e9c9e601 100644 --- a/Translations/translation_BE.json +++ b/Translations/translation_BE.json @@ -107,13 +107,13 @@ }, "menuValues": { "USBPDModeDefault": { - "displayText": "Default\nMode" + "displayText": "\nРэжым" }, "USBPDModeNoDynamic": { - "displayText": "No\nDynamic" + "displayText": "Няма\nдынамікі" }, "USBPDModeSafe": { - "displayText": "Safe\nMode" + "displayText": "Бяспечны\nрэжым" } }, "menuOptions": { @@ -134,7 +134,7 @@ "description": "Час чакання ўзгаднення PD з крокам 100 мс для сумяшчальнасці з некаторымі зараднымі зараднымі прыладамі QC (0: адключана)" }, "USBPDMode": { - "displayText": "PD\nMode", + "displayText": "PD\nРэжым", "description": "Уключае рэжымы PPS & EPR." }, "BoostTemperature": { @@ -158,59 +158,59 @@ "description": "Пры рабоце падоўжаны націск дзьвух кнопак блакуе іх (Т=Толькі турба | П=Поўная блакіроўка)" }, "ProfilePhases": { - "displayText": "Profile\nPhases", + "displayText": "Фазы\nпрофілю", "description": "Колькасць фаз у рэжыме профілю" }, "ProfilePreheatTemp": { - "displayText": "Preheat\nTemp", + "displayText": "Тэмпература\nразагравання", "description": "Разагрэйце да гэтай тэмпературы ў пачатку профільнага рэжыму" }, "ProfilePreheatSpeed": { - "displayText": "Preheat\nSpeed", + "displayText": "Хуткасть\nразагравання", "description": "Разагрэйце з гэтай хуткасцю (градусы ў секунду)" }, "ProfilePhase1Temp": { - "displayText": "Phase 1\nTemp", + "displayText": "Фаза 1\nтэмпература", "description": "Мэтавая тэмпература ў канцы гэтай фазы" }, "ProfilePhase1Duration": { - "displayText": "Phase 1\nDuration", + "displayText": "Фаза 1\nпрацягласць", "description": "Мэтавая працягласць гэтай фазы (секунды)" }, "ProfilePhase2Temp": { - "displayText": "Phase 2\nTemp", - "description": "" + "displayText": "Фаза 2\nтэмпература", + "description": "Мэтавая тэмпература ў канцы гэтай фазы" }, "ProfilePhase2Duration": { - "displayText": "Phase 2\nDuration", - "description": "" + "displayText": "Фаза 2\nпрацягласць", + "description": "Мэтавая працягласць гэтай фазы (секунды)" }, "ProfilePhase3Temp": { - "displayText": "Phase 3\nTemp", - "description": "" + "displayText": "Фаза 3\nтэмпература", + "description": "Мэтавая тэмпература ў канцы гэтай фазы" }, "ProfilePhase3Duration": { - "displayText": "Phase 3\nDuration", - "description": "" + "displayText": "Фаза 3\nпрацягласць", + "description": "Мэтавая працягласць гэтай фазы (секунды)" }, "ProfilePhase4Temp": { - "displayText": "Phase 4\nTemp", - "description": "" + "displayText": "Фаза 4\nтэмпература", + "description": "Мэтавая тэмпература ў канцы гэтай фазы" }, "ProfilePhase4Duration": { - "displayText": "Phase 4\nDuration", - "description": "" + "displayText": "Фаза 4\nпрацягласць", + "description": "Мэтавая працягласць гэтай фазы (секунды)" }, "ProfilePhase5Temp": { - "displayText": "Phase 5\nTemp", - "description": "" + "displayText": "Фаза 5\nтэмпература", + "description": "Мэтавая тэмпература ў канцы гэтай фазы" }, "ProfilePhase5Duration": { - "displayText": "Phase 5\nDuration", - "description": "" + "displayText": "Фаза 5\nпрацягласць", + "description": "Мэтавая працягласць гэтай фазы (секунды)" }, "ProfileCooldownSpeed": { - "displayText": "Cooldown\nSpeed", + "displayText": "Хуткасць\nастывання", "description": "Астуджаць з гэтай хуткасцю ў канцы профільнага рэжыму (градусы ў секунду)" }, "MotionSensitivity": { From ac6994a6768e7d3491eadcdd1c5abe3d69db091f Mon Sep 17 00:00:00 2001 From: Ivan Zorin Date: Mon, 8 Jul 2024 05:06:38 +0300 Subject: [PATCH 4/6] Update BG translation for PD mode options (#1941) * Update BG translation for PD mode options * Update BG and RU translations for PD mode options --- Translations/translation_BG.json | 10 +++++----- Translations/translation_RU.json | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Translations/translation_BG.json b/Translations/translation_BG.json index 5e4aef4f..6ed233c0 100644 --- a/Translations/translation_BG.json +++ b/Translations/translation_BG.json @@ -107,13 +107,13 @@ }, "menuValues": { "USBPDModeDefault": { - "displayText": "Default\nMode" + "displayText": "Вкл.\nPPSиERP" }, "USBPDModeNoDynamic": { - "displayText": "No\nDynamic" + "displayText": "Изкл.\n" }, "USBPDModeSafe": { - "displayText": "Safe\nMode" + "displayText": "Вкл.без\nискане" } }, "menuOptions": { @@ -134,8 +134,8 @@ "description": "PD интервал за договаряне на захранването на стъпки от 100 мс за съвместимост с някои QC захранвания (0=Изкл.)" }, "USBPDMode": { - "displayText": "PD\nMode", - "description": "Включи PPS & EPR" + "displayText": "PD\nрежим", + "description": "Вкл.без искане: включи PPS и EPR без да искате повече мощност" }, "BoostTemperature": { "displayText": "Турбо\nтемп.", diff --git a/Translations/translation_RU.json b/Translations/translation_RU.json index b3b35db8..68254f40 100644 --- a/Translations/translation_RU.json +++ b/Translations/translation_RU.json @@ -113,7 +113,7 @@ "displayText": "Откл.\n" }, "USBPDModeSafe": { - "displayText": "Вкл.без\nсопротив" + "displayText": "Вкл.без\nзапроса" } }, "menuOptions": { @@ -135,7 +135,7 @@ }, "USBPDMode": { "displayText": "Режим\nPD", - "description": "Вкл.без сопротив: включить PPS и EPR без 'выравнивания' сопротивления" + "description": "Вкл.без запроса: включить PPS и EPR без запроса большей мощности" }, "BoostTemperature": { "displayText": "t° турбо\nрежима", From c19e88233844f00dedb283276f3a5502ef05162a Mon Sep 17 00:00:00 2001 From: Ivan Zorin Date: Tue, 9 Jul 2024 12:20:02 +0300 Subject: [PATCH 5/6] Add enum for USB PD modes (#1943) * Add enum for USB PD modes * Update comments for clarification according to code review --- source/Core/Drivers/FS2711.cpp | 2 +- source/Core/Drivers/USBPD.cpp | 2 +- source/Core/Drivers/Utils.cpp | 4 ++-- source/Core/Inc/Settings.h | 6 ++++++ source/Core/Src/settingsGUI.cpp | 13 +++++++------ 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/source/Core/Drivers/FS2711.cpp b/source/Core/Drivers/FS2711.cpp index 1aec92e8..35e90898 100644 --- a/source/Core/Drivers/FS2711.cpp +++ b/source/Core/Drivers/FS2711.cpp @@ -158,7 +158,7 @@ void FS2711::negotiate() { // FS2711 uses mV instead of V const uint16_t vmax = USB_PD_VMAX * 1000; uint8_t tip_resistance = getTipResistanceX10(); - if (getSettingValue(SettingsOptions::USBPDMode) == 1) { + if (getSettingValue(SettingsOptions::USBPDMode) == usbpdMode_t::DEFAULT) { tip_resistance += 5; } diff --git a/source/Core/Drivers/USBPD.cpp b/source/Core/Drivers/USBPD.cpp index 1f154080..6c21f5ed 100644 --- a/source/Core/Drivers/USBPD.cpp +++ b/source/Core/Drivers/USBPD.cpp @@ -136,7 +136,7 @@ bool parseCapabilitiesArray(const uint8_t numCaps, uint8_t *bestIndex, uint16_t // Fudge of 0.5 ohms to round up a little to account for us always having off periods in PWM uint8_t tipResistance = getTipResistanceX10(); - if (getSettingValue(SettingsOptions::USBPDMode) == 1) { + if (getSettingValue(SettingsOptions::USBPDMode) == usbpdMode_t::DEFAULT) { tipResistance += 5; } #ifdef MODEL_HAS_DCDC diff --git a/source/Core/Drivers/Utils.cpp b/source/Core/Drivers/Utils.cpp index b560fd3a..20f8c46f 100644 --- a/source/Core/Drivers/Utils.cpp +++ b/source/Core/Drivers/Utils.cpp @@ -23,7 +23,7 @@ int32_t Utils::LinearInterpolate(int32_t x1, int32_t y1, int32_t x2, int32_t y2, uint16_t Utils::RequiredCurrentForTipAtVoltage(uint16_t voltageX10) { uint8_t tipResistancex10 = getTipResistanceX10(); - if (getSettingValue(SettingsOptions::USBPDMode) == 1) { + if (getSettingValue(SettingsOptions::USBPDMode) == usbpdMode_t::DEFAULT) { tipResistancex10 += 5; } #ifdef MODEL_HAS_DCDC @@ -34,4 +34,4 @@ uint16_t Utils::RequiredCurrentForTipAtVoltage(uint16_t voltageX10) { // V/R = I uint16_t currentX10 = (voltageX10 * 10) / tipResistancex10; return currentX10; -} \ No newline at end of file +} diff --git a/source/Core/Inc/Settings.h b/source/Core/Inc/Settings.h index e9bddfaf..e84fbd87 100644 --- a/source/Core/Inc/Settings.h +++ b/source/Core/Inc/Settings.h @@ -104,6 +104,12 @@ typedef enum { INFINITY = 6, // Show boot logo on repeat (if animated) until a button toggled } logoMode_t; +typedef enum { + DEFAULT = 1, // PPS + EPR + more power request through increasing resistance by 0.5 Ohm to compensate power loss over cable/PCB/etc. + SAFE = 2, // PPS + EPR, without requesting more power + NO_DYNAMIC = 0, // PPS + EPR disabled, fixed PDO only +} usbpdMode_t; + // Settings wide operations void saveSettings(); bool loadSettings(); diff --git a/source/Core/Src/settingsGUI.cpp b/source/Core/Src/settingsGUI.cpp index b9ded285..180b8547 100644 --- a/source/Core/Src/settingsGUI.cpp +++ b/source/Core/Src/settingsGUI.cpp @@ -531,19 +531,20 @@ static void displayPDNegTimeout(void) { static void displayUSBPDMode(void) { /* - * PD Mode - * 0 = Safe mode, no PPS, no EPR - * 1 = Default mode, tolerant + PPS + EPR - * 2 = Strict mode + PPS + EPR + * Supported PD modes: + * DEFAULT, 1 = PPS + EPR + more power request through increasing resistance by 0.5 Ohm to compensate power loss over cable/PCB/etc. + * SAFE, 2 = PPS + EPR, without requesting more power + * NO_DYNAMIC, 0 = PPS + EPR disabled, fixed PDO only */ switch (getSettingValue(SettingsOptions::USBPDMode)) { - case 1: + case usbpdMode_t::DEFAULT: OLED::print(translatedString(Tr->USBPDModeDefault), FontStyle::SMALL, 255, OLED::getCursorX()); break; - case 2: + case usbpdMode_t::SAFE: OLED::print(translatedString(Tr->USBPDModeSafe), FontStyle::SMALL, 255, OLED::getCursorX()); break; + case usbpdMode_t::NO_DYNAMIC: default: OLED::print(translatedString(Tr->USBPDModeNoDynamic), FontStyle::SMALL, 255, OLED::getCursorX()); break; From 18e936ae6d5d4c02adb4d90635a031123e55d097 Mon Sep 17 00:00:00 2001 From: Ivan Zorin Date: Thu, 11 Jul 2024 17:34:12 +0300 Subject: [PATCH 6/6] Implement OLED::drawUnavailableIcon() to simplify duplicated calls (#1947) --- source/Core/Drivers/OLED.hpp | 1 + source/Core/Src/settingsGUI.cpp | 32 ++++++++++++++------------------ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/source/Core/Drivers/OLED.hpp b/source/Core/Drivers/OLED.hpp index 65bf8e58..f847939b 100644 --- a/source/Core/Drivers/OLED.hpp +++ b/source/Core/Drivers/OLED.hpp @@ -136,6 +136,7 @@ public: static void drawBattery(uint8_t state) { drawSymbol(3 + (state > 10 ? 10 : state)); } // Draws a checkbox static void drawCheckbox(bool state) { drawSymbol((state) ? 16 : 17); } + inline static void drawUnavailableIcon() { drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); } static void debugNumber(int32_t val, FontStyle fontStyle); static void drawHex(uint32_t x, FontStyle fontStyle, uint8_t digits); static void drawSymbol(uint8_t symbolID); // Used for drawing symbols of a predictable width diff --git a/source/Core/Src/settingsGUI.cpp b/source/Core/Src/settingsGUI.cpp index 180b8547..6b5c81a3 100644 --- a/source/Core/Src/settingsGUI.cpp +++ b/source/Core/Src/settingsGUI.cpp @@ -522,11 +522,7 @@ static void displayQCInputV(void) { static void displayPDNegTimeout(void) { auto value = getSettingValue(SettingsOptions::PDNegTimeout); - if (value == 0) { - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); - } else { - OLED::printNumber(value, 2, FontStyle::LARGE); - } + value ? OLED::printNumber(value, 2, FontStyle::LARGE) : OLED::drawUnavailableIcon(); } static void displayUSBPDMode(void) { @@ -583,14 +579,14 @@ static void displayBoostTemp(void) { if (getSettingValue(SettingsOptions::BoostTemp)) { OLED::printNumber(getSettingValue(SettingsOptions::BoostTemp), 3, FontStyle::LARGE); } else { - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); } } static void displayAutomaticStartMode(void) { switch (getSettingValue(SettingsOptions::AutoStartMode)) { case autoStartMode_t::NO: - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); break; case autoStartMode_t::SOLDER: OLED::print(translatedString(Tr->SettingStartSolderingChar), FontStyle::LARGE); @@ -602,7 +598,7 @@ static void displayAutomaticStartMode(void) { OLED::print(translatedString(Tr->SettingStartSleepOffChar), FontStyle::LARGE); break; default: - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); break; } } @@ -614,7 +610,7 @@ static void displayTempChangeLongStep(void) { OLED::printNumber(getSettingValue( static void displayLockingMode(void) { switch (getSettingValue(SettingsOptions::LockingMode)) { case 0: - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); break; case 1: OLED::print(translatedString(Tr->SettingLockBoostChar), FontStyle::LARGE); @@ -623,7 +619,7 @@ static void displayLockingMode(void) { OLED::print(translatedString(Tr->SettingLockFullChar), FontStyle::LARGE); break; default: - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); break; } } @@ -683,7 +679,7 @@ static void displaySensitivity(void) { if (getSettingValue(SettingsOptions::Sensitivity)) { OLED::printNumber(getSettingValue(SettingsOptions::Sensitivity), 1, FontStyle::LARGE, false); } else { - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); } } static bool showSleepOptions(void) { return getSettingValue(SettingsOptions::Sensitivity) > 0; } @@ -712,7 +708,7 @@ static void displaySleepTemp(void) { OLED::printNumber(getSettingValue(SettingsO static void displaySleepTime(void) { if (getSettingValue(SettingsOptions::SleepTime) == 0) { - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); } else if (getSettingValue(SettingsOptions::SleepTime) < 6) { OLED::printNumber(getSettingValue(SettingsOptions::SleepTime) * 10, 2, FontStyle::LARGE); OLED::print(LargeSymbolSeconds, FontStyle::LARGE); @@ -726,7 +722,7 @@ static void displaySleepTime(void) { static void displayShutdownTime(void) { if (getSettingValue(SettingsOptions::ShutdownTime) == 0) { - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); } else { OLED::printNumber(getSettingValue(SettingsOptions::ShutdownTime), 2, FontStyle::LARGE); OLED::print(LargeSymbolMinutes, FontStyle::LARGE); @@ -738,7 +734,7 @@ static void displayHallEffect(void) { if (getSettingValue(SettingsOptions::HallEffectSensitivity)) { OLED::printNumber(getSettingValue(SettingsOptions::HallEffectSensitivity), 1, FontStyle::LARGE, false); } else { - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); } } static bool showHallEffect(void) { return getHallSensorFitted(); } @@ -836,7 +832,7 @@ static void displayAnimationSpeed(void) { OLED::print(translatedString(Tr->SettingFastChar), FontStyle::LARGE); break; default: - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); break; } } @@ -859,7 +855,7 @@ static void displayInvertColor(void) { static void displayLogoTime(void) { switch (getSettingValue(SettingsOptions::LOGOTime)) { case logoMode_t::SKIP: - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); break; case logoMode_t::ONETIME: OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, RepeatOnce); @@ -884,7 +880,7 @@ static void displayBluetoothLE(void) { OLED::drawCheckbox(getSettingValue(Settin static void displayPowerLimit(void) { if (getSettingValue(SettingsOptions::PowerLimit) == 0) { - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); } else { OLED::printNumber(getSettingValue(SettingsOptions::PowerLimit), 3, FontStyle::LARGE); OLED::print(LargeSymbolWatts, FontStyle::LARGE); @@ -952,7 +948,7 @@ static void displayPowerPulse(void) { OLED::print(LargeSymbolDot, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulse) % 10, 1, FontStyle::LARGE); } else { - OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, UnavailableIcon); + OLED::drawUnavailableIcon(); } }