diff --git a/Translations/make_translation.py b/Translations/make_translation.py index 93452ea8..644f1cbc 100755 --- a/Translations/make_translation.py +++ b/Translations/make_translation.py @@ -188,8 +188,8 @@ def get_power_source_list() -> List[str]: return [ "DC", "QC", - "PD W. VBus", - "PD No VBus", + "PV:PDwVBus", + "PD:No VBus", ] diff --git a/source/Core/Drivers/OLED.cpp b/source/Core/Drivers/OLED.cpp index a43754aa..32f075c9 100644 --- a/source/Core/Drivers/OLED.cpp +++ b/source/Core/Drivers/OLED.cpp @@ -404,14 +404,14 @@ void OLED::setInverseDisplay(bool inverse) { I2C_CLASS::I2C_RegisterWrite(DEVICEADDR_OLED, 0x80, normalInverseCmd); } -// print a string to the current cursor location -void OLED::print(const char *const str, FontStyle fontStyle) { +// print a string to the current cursor location, len chars MAX +void OLED::print(const char *const str, FontStyle fontStyle, uint8_t len) { const uint8_t *next = reinterpret_cast(str); if (next[0] == 0x01) { fontStyle = FontStyle::LARGE; next++; } - while (next[0]) { + while (next[0] && len--) { uint16_t index; if (next[0] <= 0xF0) { index = next[0]; diff --git a/source/Core/Drivers/OLED.hpp b/source/Core/Drivers/OLED.hpp index a90f7f2f..8574d0bf 100644 --- a/source/Core/Drivers/OLED.hpp +++ b/source/Core/Drivers/OLED.hpp @@ -105,7 +105,7 @@ public: static void setBrightness(uint8_t contrast); static void setInverseDisplay(bool inverted); static int16_t getCursorX() { return cursor_x; } - static void print(const char *string, FontStyle fontStyle); // Draw a string to the current location, with selected font + static void print(const char *string, FontStyle fontStyle, uint8_t length = 255); // Draw a string to the current location, with selected font; optionally - with MAX length only static void printWholeScreen(const char *string); // Set the cursor location by pixels static void setCursor(int16_t x, int16_t y) { diff --git a/source/Core/Threads/OperatingModes/DebugMenu.cpp b/source/Core/Threads/OperatingModes/DebugMenu.cpp index bb2da610..ff215a13 100644 --- a/source/Core/Threads/OperatingModes/DebugMenu.cpp +++ b/source/Core/Threads/OperatingModes/DebugMenu.cpp @@ -35,39 +35,8 @@ void showDebugMenu(void) { OLED::print(AccelTypeNames[(int)DetectedAccelerometerVersion], FontStyle::SMALL); break; case 3: // Power Negotiation Status - { - int sourceNumber = 0; - if (getIsPoweredByDCIN()) { - sourceNumber = 0; - } else { - // We are not powered via DC, so want to display the appropriate state for PD or QC - bool poweredbyPD = false; - bool pdHasVBUSConnected = false; -#ifdef POW_PD - if (USBPowerDelivery::fusbPresent()) { - // We are PD capable - if (USBPowerDelivery::negotiationComplete()) { - // We are powered via PD - poweredbyPD = true; -#ifdef VBUS_MOD_TEST - pdHasVBUSConnected = USBPowerDelivery::isVBUSConnected(); -#endif - } - } -#endif - if (poweredbyPD) { - - if (pdHasVBUSConnected) { - sourceNumber = 2; - } else { - sourceNumber = 3; - } - } else { - sourceNumber = 1; - } - } - OLED::print(PowerSourceNames[sourceNumber], FontStyle::SMALL); - } break; + OLED::print(PowerSourceNames[getPowerSourceNumber()], FontStyle::SMALL); + break; case 4: // Input Voltage printVoltage(); break; diff --git a/source/Core/Threads/OperatingModes/OperatingModes.h b/source/Core/Threads/OperatingModes/OperatingModes.h index af9ee88a..853e3c0e 100644 --- a/source/Core/Threads/OperatingModes/OperatingModes.h +++ b/source/Core/Threads/OperatingModes/OperatingModes.h @@ -33,15 +33,18 @@ enum OperatingMode { debug = 5 }; +// Main functions void performCJCC(void); // Used to calibrate the Cold Junction offset void gui_solderingTempAdjust(void); // For adjusting the setpoint temperature of the iron int gui_SolderingSleepingMode(bool stayOff, bool autoStarted); // Sleep mode void gui_solderingMode(uint8_t jumpToSleep); // Main mode for hot pointy tool void gui_solderingProfileMode(); // Profile mode for hot likely-not-so-pointy tool void showDebugMenu(void); // Debugging values -void showPDDebug(void); // Debugging menu that hows PD adaptor info +void showPDDebug(void); // Debugging menu that shows PD adaptor info void showWarnings(void); // Shows user warnings if required void drawHomeScreen(bool buttonLockout) __attribute__((noreturn)); // IDLE / Home screen void renderHomeScreenAssets(void); // Called to act as start delay and used to render out flipped images for home screen graphics -// -#endif \ No newline at end of file + +// Common helpers +int8_t getPowerSourceNumber(void); // Returns number ID of power source +#endif diff --git a/source/Core/Threads/OperatingModes/Soldering.cpp b/source/Core/Threads/OperatingModes/Soldering.cpp index 5cdd2c1f..459b9842 100644 --- a/source/Core/Threads/OperatingModes/Soldering.cpp +++ b/source/Core/Threads/OperatingModes/Soldering.cpp @@ -129,6 +129,13 @@ void gui_solderingMode(uint8_t jumpToSleep) { OLED::setCursor(55, 8); } OLED::print(SmallSymbolPlus, FontStyle::SMALL); + } else { + if (OLED::getRotation()) { + OLED::setCursor(32, 8); + } else { + OLED::setCursor(47, 8); + } + OLED::print(PowerSourceNames[getPowerSourceNumber()], FontStyle::SMALL, 2); } detailedPowerStatus(); diff --git a/source/Core/Threads/OperatingModes/utils/SolderingCommon.cpp b/source/Core/Threads/OperatingModes/utils/SolderingCommon.cpp index 0feb65d3..af50ccad 100644 --- a/source/Core/Threads/OperatingModes/utils/SolderingCommon.cpp +++ b/source/Core/Threads/OperatingModes/utils/SolderingCommon.cpp @@ -120,4 +120,37 @@ bool checkExitSoldering(void) { } return false; -} \ No newline at end of file +} + +int8_t getPowerSourceNumber(void) { + int8_t sourceNumber = 0; + if (getIsPoweredByDCIN()) { + sourceNumber = 0; + } else { + // We are not powered via DC, so want to display the appropriate state for PD or QC + bool poweredbyPD = false; + bool pdHasVBUSConnected = false; +#ifdef POW_PD + if (USBPowerDelivery::fusbPresent()) { + // We are PD capable + if (USBPowerDelivery::negotiationComplete()) { + // We are powered via PD + poweredbyPD = true; +#ifdef VBUS_MOD_TEST + pdHasVBUSConnected = USBPowerDelivery::isVBUSConnected(); +#endif + } + } +#endif + if (poweredbyPD) { + if (pdHasVBUSConnected) { + sourceNumber = 2; + } else { + sourceNumber = 3; + } + } else { + sourceNumber = 1; + } + } + return sourceNumber; +}