From dd239375b1e1daa157d3c1aa186654801eac818e Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Mon, 25 Jul 2022 16:42:16 +1000 Subject: [PATCH] All Ticks as the right TickType Update usb-pd --- source/Core/Drivers/Buttons.cpp | 12 ++++++------ source/Core/Drivers/Buttons.hpp | 6 +++--- source/Core/Drivers/OLED.cpp | 10 +++++----- source/Core/Inc/ScrollMessage.hpp | 8 ++++---- source/Core/Src/ScrollMessage.cpp | 2 +- source/Core/Threads/GUIThread.cpp | 8 ++++---- source/Core/Threads/PIDThread.cpp | 6 +++--- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/source/Core/Drivers/Buttons.cpp b/source/Core/Drivers/Buttons.cpp index 3875ed96..eec5a5f8 100644 --- a/source/Core/Drivers/Buttons.cpp +++ b/source/Core/Drivers/Buttons.cpp @@ -8,7 +8,7 @@ #include "settingsGUI.hpp" #include "task.h" #include -uint32_t lastButtonTime = 0; +TickType_t lastButtonTime = 0; ButtonState getButtonState() { /* @@ -22,10 +22,10 @@ ButtonState getButtonState() { * press (buttons still down), or if release we trigger press * (downtime>filter) */ - static uint8_t previousState = 0; - static uint32_t previousStateChange = 0; - const uint16_t timeout = TICKS_100MS * 4; - uint8_t currentState; + static uint8_t previousState = 0; + static TickType_t previousStateChange = 0; + const TickType_t timeout = TICKS_100MS * 4; + uint8_t currentState; currentState = (getButtonA()) << 0; currentState |= (getButtonB()) << 1; @@ -95,7 +95,7 @@ void waitForButtonPress() { } } -void waitForButtonPressOrTimeout(uint32_t timeout) { +void waitForButtonPressOrTimeout(TickType_t timeout) { timeout += xTaskGetTickCount(); // calculate the exit point diff --git a/source/Core/Drivers/Buttons.hpp b/source/Core/Drivers/Buttons.hpp index 1aab1f3c..2e421118 100644 --- a/source/Core/Drivers/Buttons.hpp +++ b/source/Core/Drivers/Buttons.hpp @@ -7,8 +7,8 @@ #include "BSP.h" #ifndef INC_BUTTONS_H_ #define INC_BUTTONS_H_ - -extern uint32_t lastButtonTime; +#include "portmacro.h" +extern TickType_t lastButtonTime; enum ButtonState { BUTTON_NONE = 0, /* No buttons pressed / < filter time*/ @@ -29,7 +29,7 @@ enum ButtonState { // Returns what buttons are pressed (if any) ButtonState getButtonState(); // Helpers -void waitForButtonPressOrTimeout(uint32_t timeout); +void waitForButtonPressOrTimeout(TickType_t timeout); void waitForButtonPress(); #endif /* INC_BUTTONS_H_ */ diff --git a/source/Core/Drivers/OLED.cpp b/source/Core/Drivers/OLED.cpp index ab436e0e..0832c48f 100644 --- a/source/Core/Drivers/OLED.cpp +++ b/source/Core/Drivers/OLED.cpp @@ -221,7 +221,7 @@ void OLED::maskScrollIndicatorOnOLED() { // it from the screen buffer which is updated by `OLED::setRotation`. uint8_t rightmostColumn = screenBuffer[7]; uint8_t maskCommands[] = { - // Set column address: + // Set column address: // A[6:0] - Column start address = rightmost column // B[6:0] - Column end address = rightmost column 0x80, @@ -252,10 +252,10 @@ void OLED::transitionSecondaryFramebuffer(bool forwardNavigation) { uint8_t *firstBackStripPtr = &secondFrameBuffer[0]; uint8_t *secondBackStripPtr = &secondFrameBuffer[OLED_WIDTH]; - uint32_t totalDuration = TICKS_100MS * 5; // 500ms - uint32_t duration = 0; - uint32_t start = xTaskGetTickCount(); - uint8_t offset = 0; + TickType_t totalDuration = TICKS_100MS * 5; // 500ms + TickType_t duration = 0; + TickType_t start = xTaskGetTickCount(); + uint8_t offset = 0; while (duration <= totalDuration) { duration = xTaskGetTickCount() - start; diff --git a/source/Core/Inc/ScrollMessage.hpp b/source/Core/Inc/ScrollMessage.hpp index 3bce9aaf..3f97fdb9 100644 --- a/source/Core/Inc/ScrollMessage.hpp +++ b/source/Core/Inc/ScrollMessage.hpp @@ -1,14 +1,14 @@ #ifndef SCROLL_MESSAGE_HPP_ #define SCROLL_MESSAGE_HPP_ +#include "portmacro.h" #include - /** * A helper class for showing a full-screen scrolling message. */ class ScrollMessage { - uint32_t messageStart = 0; - int16_t lastOffset = -1; + TickType_t messageStart = 0; + int16_t lastOffset = -1; /** * Calcualte the width in pixels of the message string, in the large @@ -47,7 +47,7 @@ public: * @param currentTick The current tick as returned by `xTaskGetTickCount()`. * @return Whether the OLED framebuffer has been modified. */ - bool drawUpdate(const char *message, uint32_t currentTick); + bool drawUpdate(const char *message, TickType_t currentTick); }; #endif /* SCROLL_MESSAGE_HPP_ */ diff --git a/source/Core/Src/ScrollMessage.cpp b/source/Core/Src/ScrollMessage.cpp index 88bebfb7..d63cede3 100644 --- a/source/Core/Src/ScrollMessage.cpp +++ b/source/Core/Src/ScrollMessage.cpp @@ -30,7 +30,7 @@ static uint16_t str_display_len(const char *const str) { uint16_t ScrollMessage::messageWidth(const char *message) { return FONT_12_WIDTH * str_display_len(message); } -bool ScrollMessage::drawUpdate(const char *message, uint32_t currentTick) { +bool ScrollMessage::drawUpdate(const char *message, TickType_t currentTick) { bool lcdRefresh = false; if (messageStart == 0) { diff --git a/source/Core/Threads/GUIThread.cpp b/source/Core/Threads/GUIThread.cpp index d0a863fc..719f77ea 100644 --- a/source/Core/Threads/GUIThread.cpp +++ b/source/Core/Threads/GUIThread.cpp @@ -42,7 +42,7 @@ void showWarnings(); #define BUTTON_INACTIVITY_TIME (60 * configTICK_RATE_HZ) static TickType_t lastHallEffectSleepStart = 0; static uint16_t min(uint16_t a, uint16_t b) { - if (a > b) + if (a > b) return b; else return a; @@ -171,9 +171,9 @@ static void gui_drawBatteryIcon() { #endif } static void gui_solderingTempAdjust() { - uint32_t lastChange = xTaskGetTickCount(); + TickType_t lastChange = xTaskGetTickCount(); currentTempTargetDegC = 0; // Turn off header while adjusting temp - uint32_t autoRepeatTimer = 0; + TickType_t autoRepeatTimer = 0; uint8_t autoRepeatAcceleration = 0; bool waitForRelease = false; ButtonState buttons = getButtonState(); @@ -370,7 +370,7 @@ static void display_countdown(int sleepThres) { * Print seconds or minutes (if > 99 seconds) until sleep * mode is triggered. */ - int lastEventTime = lastButtonTime < lastMovementTime ? lastMovementTime : lastButtonTime; + TickType_t lastEventTime = lastButtonTime < lastMovementTime ? lastMovementTime : lastButtonTime; TickType_t downCount = sleepThres - xTaskGetTickCount() + lastEventTime; if (downCount > (99 * TICKS_SECOND)) { OLED::printNumber(downCount / 60000 + 1, 2, FontStyle::SMALL); diff --git a/source/Core/Threads/PIDThread.cpp b/source/Core/Threads/PIDThread.cpp index 7df72fc5..4b3c9704 100644 --- a/source/Core/Threads/PIDThread.cpp +++ b/source/Core/Threads/PIDThread.cpp @@ -17,7 +17,7 @@ static TickType_t powerPulseWaitUnit = 25 * TICKS_100MS; // 2.5 s static TickType_t powerPulseDurationUnit = (5 * TICKS_100MS) / 2; // 250 ms TaskHandle_t pidTaskNotification = NULL; -volatile uint32_t currentTempTargetDegC = 0; // Current temperature target in C +volatile uint32_t currentTempTargetDegC = 0; // Current temperature target in C int32_t powerSupplyWattageLimit = 0; bool heaterThermalRunaway = false; @@ -114,8 +114,8 @@ int32_t getPIDResultX10Watts(int32_t setpointDelta) { static TickType_t lastCall = 0; static Integrator powerStore = {0}; - const int rate = 1000 / (xTaskGetTickCount() - lastCall); - lastCall = xTaskGetTickCount(); + const TickType_t rate = 1000 / (xTaskGetTickCount() - lastCall); + lastCall = xTaskGetTickCount(); // Sandman note: // PID Challenge - we have a small thermal mass that we to want heat up as fast as possible but we don't // want to overshot excessively (if at all) the setpoint temperature. In the same time we have 'imprecise'