diff --git a/source/Core/BSP/Miniware/Vendor/CMSIS/Include/arm_math.h b/source/Core/BSP/Miniware/Vendor/CMSIS/Include/arm_math.h index e78a3b47..c59b9d19 100644 --- a/source/Core/BSP/Miniware/Vendor/CMSIS/Include/arm_math.h +++ b/source/Core/BSP/Miniware/Vendor/CMSIS/Include/arm_math.h @@ -495,7 +495,7 @@ static __INLINE q63_t mult32x64(q63_t x, q31_t y) { return ((((q63_t)(x & 0x0000 /* #if defined (ARM_MATH_CM0_FAMILY) && defined ( __CC_ARM ) #define __CLZ __clz - #endif +#endif */ /* note: function can be removed when all toolchain support __CLZ for Cortex-M0 */ #if defined(ARM_MATH_CM0_FAMILY) && ((defined(__ICCARM__))) diff --git a/source/Core/BSP/Pinecil/Vendor/NMSIS/Core/Include/nmsis_version.h b/source/Core/BSP/Pinecil/Vendor/NMSIS/Core/Include/nmsis_version.h index 4b7a5c32..861d7204 100644 --- a/source/Core/BSP/Pinecil/Vendor/NMSIS/Core/Include/nmsis_version.h +++ b/source/Core/BSP/Pinecil/Vendor/NMSIS/Core/Include/nmsis_version.h @@ -36,9 +36,9 @@ * \code * #if defined(__NMSIS_VERSION) && (__NMSIS_VERSION >= 0x00010105) * #warning "Yes, we have NMSIS 1.1.5 or later" - * #else + * #else * #error "We need NMSIS 1.1.5 or later!" - * #endif + * #endif * \endcode * * @{ diff --git a/source/Core/BSP/Pinecilv2/bl_mcu_sdk/components/nmsis/core/inc/core_feature_eclic.h b/source/Core/BSP/Pinecilv2/bl_mcu_sdk/components/nmsis/core/inc/core_feature_eclic.h index cac14ef0..7eb678e4 100644 --- a/source/Core/BSP/Pinecilv2/bl_mcu_sdk/components/nmsis/core/inc/core_feature_eclic.h +++ b/source/Core/BSP/Pinecilv2/bl_mcu_sdk/components/nmsis/core/inc/core_feature_eclic.h @@ -206,7 +206,7 @@ typedef enum IRQn { #ifdef NMSIS_ECLIC_VIRTUAL #ifndef NMSIS_ECLIC_VIRTUAL_HEADER_FILE #define NMSIS_ECLIC_VIRTUAL_HEADER_FILE "nmsis_eclic_virtual.h" - #endif + #endif #include NMSIS_ECLIC_VIRTUAL_HEADER_FILE #else #define ECLIC_SetCfgNlbits __ECLIC_SetCfgNlbits @@ -238,7 +238,7 @@ typedef enum IRQn { #ifdef NMSIS_VECTAB_VIRTUAL #ifndef NMSIS_VECTAB_VIRTUAL_HEADER_FILE #define NMSIS_VECTAB_VIRTUAL_HEADER_FILE "nmsis_vectab_virtual.h" - #endif + #endif #include NMSIS_VECTAB_VIRTUAL_HEADER_FILE #else #define ECLIC_SetVector __ECLIC_SetVector diff --git a/source/Core/BSP/Pinecilv2/bl_mcu_sdk/components/nmsis/core/inc/nmsis_version.h b/source/Core/BSP/Pinecilv2/bl_mcu_sdk/components/nmsis/core/inc/nmsis_version.h index 16507998..82b7fcc8 100644 --- a/source/Core/BSP/Pinecilv2/bl_mcu_sdk/components/nmsis/core/inc/nmsis_version.h +++ b/source/Core/BSP/Pinecilv2/bl_mcu_sdk/components/nmsis/core/inc/nmsis_version.h @@ -36,9 +36,9 @@ * \code * #if defined(__NMSIS_VERSION) && (__NMSIS_VERSION >= 0x00010105) * #warning "Yes, we have NMSIS 1.1.5 or later" - * #else + * #else * #error "We need NMSIS 1.1.5 or later!" - * #endif + * #endif * \endcode * * @{ diff --git a/source/Core/BSP/Sequre/Vendor/CMSIS/Include/arm_math.h b/source/Core/BSP/Sequre/Vendor/CMSIS/Include/arm_math.h index e78a3b47..c59b9d19 100644 --- a/source/Core/BSP/Sequre/Vendor/CMSIS/Include/arm_math.h +++ b/source/Core/BSP/Sequre/Vendor/CMSIS/Include/arm_math.h @@ -495,7 +495,7 @@ static __INLINE q63_t mult32x64(q63_t x, q31_t y) { return ((((q63_t)(x & 0x0000 /* #if defined (ARM_MATH_CM0_FAMILY) && defined ( __CC_ARM ) #define __CLZ __clz - #endif +#endif */ /* note: function can be removed when all toolchain support __CLZ for Cortex-M0 */ #if defined(ARM_MATH_CM0_FAMILY) && ((defined(__ICCARM__))) diff --git a/source/Core/Drivers/Font.h b/source/Core/Drivers/Font.h index 0d0943ff..1c17a561 100644 --- a/source/Core/Drivers/Font.h +++ b/source/Core/Drivers/Font.h @@ -168,7 +168,7 @@ 0x03, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - #endif + #endif const uint8_t buttonB[] = { // width = 56 @@ -356,7 +356,7 @@ 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x2b, 0x09, 0x07, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x01, } }; - #else +#else #if defined(MODEL_TS100) || defined(MODEL_Pinecil) || defined(MODEL_Pinecilv2) const uint8_t buttonA[] = { // width = 42 @@ -401,7 +401,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xd0, 0xc8, 0x08, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - #endif + #endif const uint8_t buttonB[] = { // width = 42 @@ -578,8 +578,8 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE8, 0x70, 0x7A, 0x5E, 0x8E, 0x1C, 0x30, 0x00, // 0x00, 0x10, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // - #endif - }; #endif + }; +#endif // clang-format on #endif /* FONT_H_ */ \ No newline at end of file diff --git a/source/Core/Inc/Settings.h b/source/Core/Inc/Settings.h index 2366b772..35fde7da 100644 --- a/source/Core/Inc/Settings.h +++ b/source/Core/Inc/Settings.h @@ -47,36 +47,36 @@ enum SettingsOptions { CalibrationOffset = 23, // This stores the temperature offset for this tip in the iron. PowerLimit = 24, // Maximum power iron allowed to output ReverseButtonTempChangeEnabled = 25, // Change the plus and minus button assigment - ReverseButtonNavEnabled = 26, // Change the A and B button assigment in menus - TempChangeLongStep = 27, // Temperature-change-increment on long button press - TempChangeShortStep = 28, // Temperature-change-increment on short button press - HallEffectSensitivity = 29, // Operating mode of the hall effect sensor - AccelMissingWarningCounter = 30, // Counter of how many times we have warned we cannot detect the accelerometer - PDMissingWarningCounter = 31, // Counter of how many times we have warned we cannot detect the pd interface - UILanguage = 32, // Selected UI Language code, null-terminated *only if* the length is less than 8 chars - PDNegTimeout = 33, // PD timeout in 100ms steps - OLEDInversion = 34, // Invert the colours on the display - OLEDBrightness = 35, // Brightness for the OLED display - LOGOTime = 36, // Duration the logo will be displayed for - CalibrateCJC = 37, // Toggle calibrate CJC at next boot - BluetoothLE = 38, // Toggle BLE if present - USBPDMode = 39, // Toggle PPS & EPR - ProfilePhases = 40, // Number of profile mode phases - ProfilePreheatTemp = 41, // Temperature to preheat to before the first phase - ProfilePreheatSpeed = 42, // Maximum allowed preheat speed in degrees per second - ProfilePhase1Temp = 43, // Temperature to target for the end of phase 1 - ProfilePhase1Duration = 44, // Target duration for phase 1 - ProfilePhase2Temp = 45, // Temperature to target for the end of phase 2 - ProfilePhase2Duration = 46, // Target duration for phase 2 - ProfilePhase3Temp = 47, // Temperature to target for the end of phase 3 - ProfilePhase3Duration = 48, // Target duration for phase 3 - ProfilePhase4Temp = 49, // Temperature to target for the end of phase 4 - ProfilePhase4Duration = 50, // Target duration for phase 4 - ProfilePhase5Temp = 51, // Temperature to target for the end of phase 5 - ProfilePhase5Duration = 52, // Target duration for phase 5 - ProfileCooldownSpeed = 53, // Maximum allowed cooldown speed in degrees per second - HallEffectSleepTime = 54, // Seconds (/5) timeout to sleep when hall effect over threshold - SolderingTipType = 55, // Selecting the type of soldering tip fitted + TempChangeLongStep = 26, // Temperature-change-increment on long button press + TempChangeShortStep = 27, // Temperature-change-increment on short button press + HallEffectSensitivity = 28, // Operating mode of the hall effect sensor + AccelMissingWarningCounter = 29, // Counter of how many times we have warned we cannot detect the accelerometer + PDMissingWarningCounter = 30, // Counter of how many times we have warned we cannot detect the pd interface + UILanguage = 31, // Selected UI Language code, null-terminated *only if* the length is less than 8 chars + PDNegTimeout = 32, // PD timeout in 100ms steps + OLEDInversion = 33, // Invert the colours on the display + OLEDBrightness = 34, // Brightness for the OLED display + LOGOTime = 35, // Duration the logo will be displayed for + CalibrateCJC = 36, // Toggle calibrate CJC at next boot + BluetoothLE = 37, // Toggle BLE if present + USBPDMode = 38, // Toggle PPS & EPR + ProfilePhases = 39, // Number of profile mode phases + ProfilePreheatTemp = 40, // Temperature to preheat to before the first phase + ProfilePreheatSpeed = 41, // Maximum allowed preheat speed in degrees per second + ProfilePhase1Temp = 42, // Temperature to target for the end of phase 1 + ProfilePhase1Duration = 43, // Target duration for phase 1 + ProfilePhase2Temp = 44, // Temperature to target for the end of phase 2 + ProfilePhase2Duration = 45, // Target duration for phase 2 + ProfilePhase3Temp = 46, // Temperature to target for the end of phase 3 + ProfilePhase3Duration = 47, // Target duration for phase 3 + ProfilePhase4Temp = 48, // Temperature to target for the end of phase 4 + ProfilePhase4Duration = 49, // Target duration for phase 4 + ProfilePhase5Temp = 50, // Temperature to target for the end of phase 5 + ProfilePhase5Duration = 51, // Target duration for phase 5 + ProfileCooldownSpeed = 52, // Maximum allowed cooldown speed in degrees per second + HallEffectSleepTime = 53, // Seconds (/5) timeout to sleep when hall effect over threshold + SolderingTipType = 54, // Selecting the type of soldering tip fitted + ReverseButtonNavEnabled = 55, // Change the A and B button assigment in menus // SettingsOptionsLength = 56, // End marker }; diff --git a/source/Core/Threads/GUIThread.cpp b/source/Core/Threads/GUIThread.cpp index 4d343f91..828936d3 100644 --- a/source/Core/Threads/GUIThread.cpp +++ b/source/Core/Threads/GUIThread.cpp @@ -45,9 +45,13 @@ OperatingMode guiHandleDraw(void) { OLED::clearScreen(); // Clear ready for render pass bool d = getSettingValue(SettingsOptions::ReverseButtonNavEnabled); bool e = getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled); +#ifdef REVERSE_NAV_EVERYWHERE bool f = currentOperatingMode == OperatingMode::TemperatureAdjust; // Read button state ButtonState buttons = getButtonState((e && f) || (d && !e && !f) || (d && e && !f)); +#else + ButtonState buttons = getButtonState(); +#endif // Enforce screen on if buttons pressed, movement, hot tip etc if (buttons != BUTTON_NONE) { OLED::setDisplayState(OLED::DisplayState::ON); @@ -113,7 +117,11 @@ OperatingMode guiHandleDraw(void) { newMode = gui_SolderingSleepingMode(buttons, &context); break; case OperatingMode::TemperatureAdjust: - newMode = gui_solderingTempAdjust(buttons, &context); +#ifdef REVERSE_NAV_EVERYWHERE + newMode = gui_solderingTempAdjust(getButtonState(), &context); +#else + newMode = gui_solderingTempAdjust(getButtonState(e), &context); +#endif break; case OperatingMode::DebugMenuReadout: newMode = showDebugMenu(buttons, &context); @@ -122,7 +130,11 @@ OperatingMode guiHandleDraw(void) { newMode = performCJCC(buttons, &context); break; case OperatingMode::SettingsMenu: - newMode = gui_SettingsMenu(buttons, &context); +#ifdef REVERSE_NAV_EVERYWHERE + newMode = gui_SettingsMenu(getButtonState(), &context); +#else + newMode = gui_SettingsMenu(getButtonState(d), &context); +#endif break; case OperatingMode::InitialisationDone: newMode = handle_post_init_state(); diff --git a/source/Core/Threads/UI/drawing/mono_128x32/draw_homescreen_simplified.cpp b/source/Core/Threads/UI/drawing/mono_128x32/draw_homescreen_simplified.cpp index c0e13e5e..d6146711 100644 --- a/source/Core/Threads/UI/drawing/mono_128x32/draw_homescreen_simplified.cpp +++ b/source/Core/Threads/UI/drawing/mono_128x32/draw_homescreen_simplified.cpp @@ -8,27 +8,43 @@ extern uint8_t disconnectedTipF[sizeof(disconnectedTip)]; void ui_draw_homescreen_simplified(TemperatureType_t tipTemp) { bool isFlipped = OLED::getRotation(); - bool isReverse = getSettingValue(SettingsOptions::ReverseButtonNavEnabled); bool tipDisconnected = isTipDisconnected(); +#ifdef REVERSE_NAV_EVERYWHERE + bool isReverse = getSettingValue(SettingsOptions::ReverseButtonNavEnabled); +#endif // Flip and switch buttons accordingly +#ifdef REVERSE_NAV_EVERYWHERE OLED::drawArea(isFlipped ? 68 : 0, 0, 56, 32, isFlipped ? (isReverse ? buttonBF : buttonAF) : (isReverse ? buttonB : buttonA)); OLED::drawArea(isFlipped ? 12 : 58, 0, 56, 32, isFlipped ? (isReverse ? buttonAF : buttonBF) : (isReverse ? buttonA : buttonB)); +#else + OLED::drawArea(isFlipped ? 68 : 0, 0, 56, 32, isFlipped ? buttonAF : buttonA); + OLED::drawArea(isFlipped ? 12 : 58, 0, 56, 32, isFlipped ? buttonBF : buttonB); +#endif if ((tipTemp > 55) || tipDisconnected) { // draw temp over the start soldering button // Location changes on screen rotation and due to button swapping // in right handed mode we want to draw over the first part +#ifdef REVERSE_NAV_EVERYWHERE OLED::fillArea(isReverse ? (isFlipped ? 26 : 58) : (isFlipped ? 68 : 0), 0, 56, 32, 0); // clear the area OLED::setCursor(isReverse ? (isFlipped ? 27 : 59) : (isFlipped ? 56 : 0), 0); +#else + OLED::fillArea(isFlipped ? 68 : 0, 0, 56, 32, 0); // clear the area + OLED::setCursor(isFlipped ? 56 : 0, 0); +#endif // If tip is disconnected draw the notification, otherwise - the temp if (tipDisconnected) { // Draw-in the missing tip symbol +#ifdef REVERSE_NAV_EVERYWHERE if (isReverse) { OLED::drawArea(isFlipped ? 20 : 54, 0, 56, 32, isFlipped ? disconnectedTipF : disconnectedTip); } else { +#endif OLED::drawArea(isFlipped ? 54 : 0, 0, 56, 32, isFlipped ? disconnectedTipF : disconnectedTip); +#ifdef REVERSE_NAV_EVERYWHERE } +#endif } else if (!(getSettingValue(SettingsOptions::CoolingTempBlink) && (xTaskGetTickCount() % 1000 < 300))) { ui_draw_tip_temperature(false, FontStyle::LARGE); // Draw-in the temp } diff --git a/source/Core/Threads/UI/drawing/mono_96x16/draw_homescreen_simplified.cpp b/source/Core/Threads/UI/drawing/mono_96x16/draw_homescreen_simplified.cpp index 779e0085..645be122 100644 --- a/source/Core/Threads/UI/drawing/mono_96x16/draw_homescreen_simplified.cpp +++ b/source/Core/Threads/UI/drawing/mono_96x16/draw_homescreen_simplified.cpp @@ -7,27 +7,43 @@ extern uint8_t disconnectedTipF[sizeof(disconnectedTip)]; void ui_draw_homescreen_simplified(TemperatureType_t tipTemp) { bool isFlipped = OLED::getRotation(); - bool isReverse = getSettingValue(SettingsOptions::ReverseButtonNavEnabled); bool tipDisconnected = isTipDisconnected(); +#ifdef REVERSE_NAV_EVERYWHERE + bool isReverse = getSettingValue(SettingsOptions::ReverseButtonNavEnabled); +#endif // Flip and switch buttons accordingly +#ifdef REVERSE_NAV_EVERYWHERE OLED::drawArea(isFlipped ? 54 : 0, 0, 42, 16, isFlipped ? (isReverse ? buttonBF : buttonAF) : (isReverse ? buttonB : buttonA)); OLED::drawArea(isFlipped ? 12 : 42, 0, 42, 16, isFlipped ? (isReverse ? buttonAF : buttonBF) : (isReverse ? buttonA : buttonB)); +#else + OLED::drawArea(isFlipped ? 54 : 0, 0, 42, 16, isFlipped ? buttonAF : buttonA); + OLED::drawArea(isFlipped ? 12 : 42, 0, 42, 16, isFlipped ? buttonBF : buttonB); +#endif if ((tipTemp > 55) || tipDisconnected) { // draw temp over the start soldering button // Location changes on screen rotation and due to button swapping // in right handed mode we want to draw over the first part +#ifdef REVERSE_NAV_EVERYWHERE OLED::fillArea(isReverse ? (isFlipped ? 14 : 42) : (isFlipped ? 55 : 0), 0, 41, 16, 0); // clear the area OLED::setCursor(isReverse ? (isFlipped ? 15 : 43) : (isFlipped ? 56 : 0), 0); +#else + OLED::fillArea(isFlipped ? 55 : 0, 0, 41, 16, 0); // clear the area + OLED::setCursor(isFlipped ? 56 : 0, 0); +#endif // If tip is disconnected draw the notification, otherwise - the temp if (tipDisconnected) { // Draw-in the missing tip symbol +#ifdef REVERSE_NAV_EVERYWHERE if (isReverse) { OLED::drawArea(isFlipped ? 12 : 42, 0, 42, 16, isFlipped ? disconnectedTipF : disconnectedTip); } else { +#endif OLED::drawArea(isFlipped ? 54 : 0, 0, 42, 16, isFlipped ? disconnectedTipF : disconnectedTip); +#ifdef REVERSE_NAV_EVERYWHERE } +#endif } else if (!(getSettingValue(SettingsOptions::CoolingTempBlink) && (xTaskGetTickCount() % 1000 < 300))) { ui_draw_tip_temperature(false, FontStyle::LARGE); // Draw-in the temp } diff --git a/source/Core/Threads/UI/logic/utils/shouldDeviceShutdown.cpp b/source/Core/Threads/UI/logic/utils/shouldDeviceShutdown.cpp index d050a3ce..a71fa4ed 100644 --- a/source/Core/Threads/UI/logic/utils/shouldDeviceShutdown.cpp +++ b/source/Core/Threads/UI/logic/utils/shouldDeviceShutdown.cpp @@ -17,7 +17,11 @@ bool shouldShutdown(void) { } } } - if (getButtonState(getSettingValue(SettingsOptions::ReverseButtonNavEnabled)) == BUTTON_B_LONG) { // allow also if back button is pressed long +#ifdef REVERSE_NAV_EVERYWHERE + if (getButtonState(getSettingValue(SettingsOptions::ReverseButtonNavEnabled) == BUTTON_B_LONG) { // allow also if back button is pressed long +#else + if (getButtonState() == BUTTON_B_LONG) { // allow also if back button is pressed long +#endif return true; } return false;