From 81abd5eeacda95c9832d4e862bf1fc43524a99d6 Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Fri, 3 Apr 2020 22:40:03 +0200 Subject: [PATCH 01/26] Add navigation animations --- workspace/TS100/Core/Inc/OLED.hpp | 7 ++- workspace/TS100/Core/Src/OLED.cpp | 79 +++++++++++++++++++++++++++++++ workspace/TS100/Core/Src/gui.cpp | 23 +++++++-- 3 files changed, 105 insertions(+), 4 deletions(-) diff --git a/workspace/TS100/Core/Inc/OLED.hpp b/workspace/TS100/Core/Inc/OLED.hpp index 381fd9f0..2bbd23a2 100644 --- a/workspace/TS100/Core/Inc/OLED.hpp +++ b/workspace/TS100/Core/Inc/OLED.hpp @@ -78,7 +78,7 @@ public: // Draws a number at the current cursor location // Clears the buffer static void clearScreen() { - memset(&screenBuffer[FRAMEBUFFER_START], 0, OLED_WIDTH * 2); + memset(firstStripPtr, 0, OLED_WIDTH * 2); } // Draws the battery level symbol static void drawBattery(uint8_t state) { @@ -99,6 +99,10 @@ public: static void drawFilledRect(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, bool clear); static void drawHeatSymbol(uint8_t state); + static void presentSecondScreenBufferAnimatedBack(); + static void presentSecondScreenBufferAnimated(); + static void use_first_buffer(); + static void use_second_buffer(); private: static void drawChar(char c); // Draw a character to a specific location static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer @@ -110,6 +114,7 @@ private: static int16_t cursor_x, cursor_y; static uint8_t displayOffset; static uint8_t screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer + static uint8_t secondFrameBuffer[OLED_WIDTH * 2]; // The second frame buffer }; #endif /* OLED_HPP_ */ diff --git a/workspace/TS100/Core/Src/OLED.cpp b/workspace/TS100/Core/Src/OLED.cpp index bef541d1..00e35974 100644 --- a/workspace/TS100/Core/Src/OLED.cpp +++ b/workspace/TS100/Core/Src/OLED.cpp @@ -24,6 +24,7 @@ uint8_t OLED::fontWidth, OLED::fontHeight; int16_t OLED::cursor_x, OLED::cursor_y; uint8_t OLED::displayOffset; uint8_t OLED::screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer +uint8_t OLED::secondFrameBuffer[OLED_WIDTH * 2]; // The second frame buffer /*Setup params for the OLED screen*/ /*http://www.displayfuture.com/Display/datasheet/controller/SSD1307.pdf*/ @@ -85,6 +86,16 @@ void OLED::initialize() { sizeof(OLED_Setup_Array)); } +void OLED::use_first_buffer() { + firstStripPtr = &screenBuffer[FRAMEBUFFER_START]; + secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH]; +} + +void OLED::use_second_buffer() { + firstStripPtr = &secondFrameBuffer[0]; + secondStripPtr = &secondFrameBuffer[OLED_WIDTH]; +} + /* * Prints a char to the screen. * UTF font handling is done using the two input chars. @@ -106,6 +117,74 @@ void OLED::drawChar(char c) { cursor_x += fontWidth; } +void OLED::presentSecondScreenBufferAnimatedBack() { + OLED::use_first_buffer(); + + uint32_t totalDuration = 50; + + uint32_t duration = 0; + uint32_t start = xTaskGetTickCount(); + uint8_t offset = 0; + while (duration <= totalDuration) + { + duration = xTaskGetTickCount() - start; + + uint8_t progress = (duration * OLED_WIDTH) / totalDuration; + + for (uint8_t i = OLED_WIDTH - 1; i > progress; i--) { + firstStripPtr[i] = firstStripPtr[(i - progress) + offset]; + secondStripPtr[i] = secondStripPtr[(i - progress) + offset]; + } + + offset = progress; + + uint8_t *firstBackStripPtr = &secondFrameBuffer[0]; + uint8_t *secondBackStripPtr = &secondFrameBuffer[OLED_WIDTH]; + + for (uint8_t i = 0; i < progress; i++) { + firstStripPtr[i] = firstBackStripPtr[(i - progress) + OLED_WIDTH]; + secondStripPtr[i] = secondBackStripPtr[(i - progress) + OLED_WIDTH]; + } + + refresh(); + osDelay(40); + } +} + +void OLED::presentSecondScreenBufferAnimated() { + OLED::use_first_buffer(); + + uint32_t totalDuration = 50; + + uint32_t duration = 0; + uint32_t start = xTaskGetTickCount(); + uint8_t offset = 0; + while (duration < totalDuration) + { + duration = xTaskGetTickCount() - start; + + uint8_t progress = (duration * OLED_WIDTH) / totalDuration; + + for (uint8_t i = 0; i < OLED_WIDTH - progress; i++) { + firstStripPtr[i] = firstStripPtr[i + progress - offset]; + secondStripPtr[i] = secondStripPtr[i + progress - offset]; + } + + offset = progress; + + uint8_t *firstBackStripPtr = &secondFrameBuffer[0]; + uint8_t *secondBackStripPtr = &secondFrameBuffer[OLED_WIDTH]; + + for (uint8_t i = OLED_WIDTH - progress; i < OLED_WIDTH; i++) { + firstStripPtr[i] = firstBackStripPtr[i - (OLED_WIDTH - progress)]; + secondStripPtr[i] = secondBackStripPtr[i - (OLED_WIDTH - progress)]; + } + + refresh(); + osDelay(40); + } +} + void OLED::setRotation(bool leftHanded) { #ifdef MODEL_TS80 leftHanded = !leftHanded; diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 42834655..99cdcd4f 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -823,6 +823,15 @@ void gui_Menu(const menuitem *menu) { int16_t lastOffset = -1; bool lcdRefresh = true; ButtonState lastButtonState = BUTTON_NONE; + + if (menu[currentScreen].draw.func != NULL) { + OLED::use_second_buffer(); + OLED::setFont(0); + OLED::setCursor(0, 0); + OLED::clearScreen(); + menu[currentScreen].draw.func(); + OLED::presentSecondScreenBufferAnimated(); + } while ((menu[currentScreen].draw.func != NULL) && earlyExit == false) { OLED::setFont(0); @@ -871,10 +880,18 @@ void gui_Menu(const menuitem *menu) { case BUTTON_F_SHORT: // increment if (descriptionStart == 0) { - if (menu[currentScreen].incrementHandler.func != NULL) + if (menu[currentScreen].incrementHandler.func != NULL) { menu[currentScreen].incrementHandler.func(); - else + // MARK: Might jump in submenu here + OLED::use_second_buffer(); + OLED::setFont(0); + OLED::setCursor(0, 0); + OLED::clearScreen(); + menu[currentScreen].draw.func(); + OLED::presentSecondScreenBufferAnimatedBack(); + } else { earlyExit = true; + } } else descriptionStart = 0; break; @@ -920,7 +937,7 @@ void gui_Menu(const menuitem *menu) { osDelay(40); lcdRefresh = false; } - if ((xTaskGetTickCount() - lastButtonTime) > (1000 * 30)) { + if ((xTaskGetTickCount() - lastButtonTime) > (100 * 30)) { // If user has not pressed any buttons in 30 seconds, exit back a menu layer // This will trickle the user back to the main screen eventually earlyExit = true; From ec6140317c9a57cab5c8f8252381e7419b9310d4 Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Mon, 6 Apr 2020 17:38:24 +0200 Subject: [PATCH 02/26] Remove `secondFrameBuffer` and instead add `set_framebuffer` method --- workspace/TS100/Core/Inc/OLED.hpp | 4 +--- workspace/TS100/Core/Src/OLED.cpp | 30 +++++++++++++++--------------- workspace/TS100/Core/Src/gui.cpp | 3 ++- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/workspace/TS100/Core/Inc/OLED.hpp b/workspace/TS100/Core/Inc/OLED.hpp index 2bbd23a2..3d5dfda8 100644 --- a/workspace/TS100/Core/Inc/OLED.hpp +++ b/workspace/TS100/Core/Inc/OLED.hpp @@ -101,8 +101,7 @@ public: static void drawHeatSymbol(uint8_t state); static void presentSecondScreenBufferAnimatedBack(); static void presentSecondScreenBufferAnimated(); - static void use_first_buffer(); - static void use_second_buffer(); + static void set_framebuffer(uint8_t *buffer); private: static void drawChar(char c); // Draw a character to a specific location static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer @@ -114,7 +113,6 @@ private: static int16_t cursor_x, cursor_y; static uint8_t displayOffset; static uint8_t screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer - static uint8_t secondFrameBuffer[OLED_WIDTH * 2]; // The second frame buffer }; #endif /* OLED_HPP_ */ diff --git a/workspace/TS100/Core/Src/OLED.cpp b/workspace/TS100/Core/Src/OLED.cpp index 00e35974..2881e39b 100644 --- a/workspace/TS100/Core/Src/OLED.cpp +++ b/workspace/TS100/Core/Src/OLED.cpp @@ -24,7 +24,6 @@ uint8_t OLED::fontWidth, OLED::fontHeight; int16_t OLED::cursor_x, OLED::cursor_y; uint8_t OLED::displayOffset; uint8_t OLED::screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer -uint8_t OLED::secondFrameBuffer[OLED_WIDTH * 2]; // The second frame buffer /*Setup params for the OLED screen*/ /*http://www.displayfuture.com/Display/datasheet/controller/SSD1307.pdf*/ @@ -86,14 +85,15 @@ void OLED::initialize() { sizeof(OLED_Setup_Array)); } -void OLED::use_first_buffer() { - firstStripPtr = &screenBuffer[FRAMEBUFFER_START]; - secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH]; -} - -void OLED::use_second_buffer() { - firstStripPtr = &secondFrameBuffer[0]; - secondStripPtr = &secondFrameBuffer[OLED_WIDTH]; +void OLED::set_framebuffer(uint8_t *buffer) { + if (buffer == NULL) { + firstStripPtr = &screenBuffer[FRAMEBUFFER_START]; + secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH]; + return; + } + + firstStripPtr = &buffer[0]; + secondStripPtr = &buffer[OLED_WIDTH]; } /* @@ -118,7 +118,9 @@ void OLED::drawChar(char c) { } void OLED::presentSecondScreenBufferAnimatedBack() { - OLED::use_first_buffer(); + uint8_t *firstBackStripPtr = &firstStripPtr[0]; + uint8_t *secondBackStripPtr = &secondStripPtr[0]; + set_framebuffer(NULL); uint32_t totalDuration = 50; @@ -138,8 +140,6 @@ void OLED::presentSecondScreenBufferAnimatedBack() { offset = progress; - uint8_t *firstBackStripPtr = &secondFrameBuffer[0]; - uint8_t *secondBackStripPtr = &secondFrameBuffer[OLED_WIDTH]; for (uint8_t i = 0; i < progress; i++) { firstStripPtr[i] = firstBackStripPtr[(i - progress) + OLED_WIDTH]; @@ -152,7 +152,9 @@ void OLED::presentSecondScreenBufferAnimatedBack() { } void OLED::presentSecondScreenBufferAnimated() { - OLED::use_first_buffer(); + uint8_t *firstBackStripPtr = &firstStripPtr[0]; + uint8_t *secondBackStripPtr = &secondStripPtr[0]; + set_framebuffer(NULL); uint32_t totalDuration = 50; @@ -172,8 +174,6 @@ void OLED::presentSecondScreenBufferAnimated() { offset = progress; - uint8_t *firstBackStripPtr = &secondFrameBuffer[0]; - uint8_t *secondBackStripPtr = &secondFrameBuffer[OLED_WIDTH]; for (uint8_t i = OLED_WIDTH - progress; i < OLED_WIDTH; i++) { firstStripPtr[i] = firstBackStripPtr[i - (OLED_WIDTH - progress)]; diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 99cdcd4f..f2a67f55 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -825,7 +825,8 @@ void gui_Menu(const menuitem *menu) { ButtonState lastButtonState = BUTTON_NONE; if (menu[currentScreen].draw.func != NULL) { - OLED::use_second_buffer(); + uint8_t secondFrameBuffer[OLED_WIDTH * 2]; + OLED::set_framebuffer(secondFrameBuffer); OLED::setFont(0); OLED::setCursor(0, 0); OLED::clearScreen(); From bbb724e8f04738eb28052bcaacda33fa006d66df Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Mon, 6 Apr 2020 17:39:05 +0200 Subject: [PATCH 03/26] Only play navigation animation when menus changed --- workspace/TS100/Core/Src/gui.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index f2a67f55..0d57f3e4 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -823,6 +823,8 @@ void gui_Menu(const menuitem *menu) { int16_t lastOffset = -1; bool lcdRefresh = true; ButtonState lastButtonState = BUTTON_NONE; + static bool enterGUIMenu = true; + enterGUIMenu = true; if (menu[currentScreen].draw.func != NULL) { uint8_t secondFrameBuffer[OLED_WIDTH * 2]; @@ -882,14 +884,18 @@ void gui_Menu(const menuitem *menu) { // increment if (descriptionStart == 0) { if (menu[currentScreen].incrementHandler.func != NULL) { + enterGUIMenu = false; menu[currentScreen].incrementHandler.func(); - // MARK: Might jump in submenu here - OLED::use_second_buffer(); - OLED::setFont(0); - OLED::setCursor(0, 0); - OLED::clearScreen(); - menu[currentScreen].draw.func(); - OLED::presentSecondScreenBufferAnimatedBack(); + + if (enterGUIMenu) { + uint8_t secondFrameBuffer[OLED_WIDTH * 2]; + OLED::set_framebuffer(secondFrameBuffer); + OLED::setFont(0); + OLED::setCursor(0, 0); + OLED::clearScreen(); + menu[currentScreen].draw.func(); + OLED::presentSecondScreenBufferAnimatedBack(); + } } else { earlyExit = true; } From 172eea4909dbf0b0bc287cffb5144d30bf361904 Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Mon, 6 Apr 2020 17:40:01 +0200 Subject: [PATCH 04/26] Add ease in / out and cleanup animation methods --- workspace/TS100/Core/Src/OLED.cpp | 64 ++++++++++++++++++------------- 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/workspace/TS100/Core/Src/OLED.cpp b/workspace/TS100/Core/Src/OLED.cpp index 2881e39b..405786b7 100644 --- a/workspace/TS100/Core/Src/OLED.cpp +++ b/workspace/TS100/Core/Src/OLED.cpp @@ -62,6 +62,14 @@ uint8_t OLED_Setup_Array[] = { const uint8_t REFRESH_COMMANDS[17] = { 0x80, 0xAF, 0x80, 0x21, 0x80, 0x20, 0x80, 0x7F, 0x80, 0xC0, 0x80, 0x22, 0x80, 0x00, 0x80, 0x01, 0x40 }; +static uint8_t easeInOutTiming(uint8_t t) { + return t * t * (300 - 2 * t) / 10000; +} + +static uint8_t lerp(uint8_t a, uint8_t b, uint8_t t) { + return a + t * (b - a) / 100; +} + void OLED::initialize() { cursor_x = cursor_y = 0; currentFont = USER_FONT_12; @@ -123,28 +131,30 @@ void OLED::presentSecondScreenBufferAnimatedBack() { set_framebuffer(NULL); uint32_t totalDuration = 50; - uint32_t duration = 0; uint32_t start = xTaskGetTickCount(); uint8_t offset = 0; - while (duration <= totalDuration) - { + while (duration <= totalDuration) { duration = xTaskGetTickCount() - start; - uint8_t progress = (duration * OLED_WIDTH) / totalDuration; - - for (uint8_t i = OLED_WIDTH - 1; i > progress; i--) { - firstStripPtr[i] = firstStripPtr[(i - progress) + offset]; - secondStripPtr[i] = secondStripPtr[(i - progress) + offset]; + uint8_t progress = (duration * 100) / totalDuration; + progress = easeInOutTiming(progress); + progress = lerp(0, OLED_WIDTH, progress); + if (progress > OLED_WIDTH) { + progress = OLED_WIDTH; } + memmove(&firstStripPtr[progress], &firstStripPtr[offset], OLED_WIDTH - progress); + memmove(&secondStripPtr[progress], &secondStripPtr[offset], OLED_WIDTH - progress); offset = progress; - - for (uint8_t i = 0; i < progress; i++) { - firstStripPtr[i] = firstBackStripPtr[(i - progress) + OLED_WIDTH]; - secondStripPtr[i] = secondBackStripPtr[(i - progress) + OLED_WIDTH]; - } + memmove( + &firstStripPtr[0], + &firstBackStripPtr[OLED_WIDTH - progress], + progress); + memmove(&secondStripPtr[0], + &secondBackStripPtr[OLED_WIDTH - progress], + progress); refresh(); osDelay(40); @@ -157,28 +167,30 @@ void OLED::presentSecondScreenBufferAnimated() { set_framebuffer(NULL); uint32_t totalDuration = 50; - uint32_t duration = 0; uint32_t start = xTaskGetTickCount(); uint8_t offset = 0; - while (duration < totalDuration) - { + while (duration < totalDuration) { duration = xTaskGetTickCount() - start; - uint8_t progress = (duration * OLED_WIDTH) / totalDuration; - - for (uint8_t i = 0; i < OLED_WIDTH - progress; i++) { - firstStripPtr[i] = firstStripPtr[i + progress - offset]; - secondStripPtr[i] = secondStripPtr[i + progress - offset]; + uint8_t progress = (duration * 100) / totalDuration; + progress = easeInOutTiming(progress); + progress = lerp(0, OLED_WIDTH, progress); + if (progress > OLED_WIDTH) { + progress = OLED_WIDTH; } + memmove(&firstStripPtr[0], &firstStripPtr[progress - offset], OLED_WIDTH - progress); + memmove(&secondStripPtr[0], &secondStripPtr[progress - offset], OLED_WIDTH - progress); offset = progress; - - for (uint8_t i = OLED_WIDTH - progress; i < OLED_WIDTH; i++) { - firstStripPtr[i] = firstBackStripPtr[i - (OLED_WIDTH - progress)]; - secondStripPtr[i] = secondBackStripPtr[i - (OLED_WIDTH - progress)]; - } + memmove( + &firstStripPtr[OLED_WIDTH - progress], + &firstBackStripPtr[0], + progress); + memmove(&secondStripPtr[OLED_WIDTH - progress], + &secondBackStripPtr[0], + progress); refresh(); osDelay(40); From f3d0bc39651a1068c69d34820c840f8d3544fd98 Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Mon, 6 Apr 2020 18:49:10 +0200 Subject: [PATCH 05/26] Simplified animation methods --- workspace/TS100/Core/Inc/OLED.hpp | 3 +- workspace/TS100/Core/Src/OLED.cpp | 79 +++++++++++-------------------- workspace/TS100/Core/Src/gui.cpp | 19 +++++--- 3 files changed, 42 insertions(+), 59 deletions(-) diff --git a/workspace/TS100/Core/Inc/OLED.hpp b/workspace/TS100/Core/Inc/OLED.hpp index 3d5dfda8..8fcacefe 100644 --- a/workspace/TS100/Core/Inc/OLED.hpp +++ b/workspace/TS100/Core/Inc/OLED.hpp @@ -99,8 +99,7 @@ public: static void drawFilledRect(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, bool clear); static void drawHeatSymbol(uint8_t state); - static void presentSecondScreenBufferAnimatedBack(); - static void presentSecondScreenBufferAnimated(); + static void transitionToContents(uint8_t *framebuffer, bool forwardNavigation); static void set_framebuffer(uint8_t *buffer); private: static void drawChar(char c); // Draw a character to a specific location diff --git a/workspace/TS100/Core/Src/OLED.cpp b/workspace/TS100/Core/Src/OLED.cpp index 405786b7..8d4e2f77 100644 --- a/workspace/TS100/Core/Src/OLED.cpp +++ b/workspace/TS100/Core/Src/OLED.cpp @@ -125,72 +125,49 @@ void OLED::drawChar(char c) { cursor_x += fontWidth; } -void OLED::presentSecondScreenBufferAnimatedBack() { - uint8_t *firstBackStripPtr = &firstStripPtr[0]; - uint8_t *secondBackStripPtr = &secondStripPtr[0]; - set_framebuffer(NULL); +/** + * Plays a transition animation between two framebuffers. + * @param framebuffer Second framebuffer to use for animation. + * @param forward Direction of the navigation animation. + * + * If forward is true, this displays a forward navigation to the second framebuffer contents. + * Otherwise a rewinding navigation animation is shown to the second framebuffer contents. + */ +void OLED::transitionToContents(uint8_t *framebuffer, bool forwardNavigation) { + uint8_t *firstBackStripPtr = &framebuffer[0]; + uint8_t *secondBackStripPtr = &framebuffer[OLED_WIDTH]; - uint32_t totalDuration = 50; + uint32_t totalDuration = 50; // 500ms uint32_t duration = 0; uint32_t start = xTaskGetTickCount(); uint8_t offset = 0; + while (duration <= totalDuration) { duration = xTaskGetTickCount() - start; - - uint8_t progress = (duration * 100) / totalDuration; + uint8_t progress = duration * 100 / totalDuration; progress = easeInOutTiming(progress); progress = lerp(0, OLED_WIDTH, progress); if (progress > OLED_WIDTH) { progress = OLED_WIDTH; } - memmove(&firstStripPtr[progress], &firstStripPtr[offset], OLED_WIDTH - progress); - memmove(&secondStripPtr[progress], &secondStripPtr[offset], OLED_WIDTH - progress); + // When forward, current contents move to the left out. + // Otherwise the contents move to the right out. + uint8_t oldStart = forwardNavigation ? 0 : progress; + uint8_t oldPrevious = forwardNavigation ? progress - offset : offset; + + // Content from the second framebuffer moves in from the right (forward) + // or from the left (not forward). + uint8_t newStart = forwardNavigation ? OLED_WIDTH - progress : 0; + uint8_t newEnd = forwardNavigation ? 0 : OLED_WIDTH - progress; + offset = progress; - - memmove( - &firstStripPtr[0], - &firstBackStripPtr[OLED_WIDTH - progress], - progress); - memmove(&secondStripPtr[0], - &secondBackStripPtr[OLED_WIDTH - progress], - progress); - refresh(); - osDelay(40); - } -} - -void OLED::presentSecondScreenBufferAnimated() { - uint8_t *firstBackStripPtr = &firstStripPtr[0]; - uint8_t *secondBackStripPtr = &secondStripPtr[0]; - set_framebuffer(NULL); - - uint32_t totalDuration = 50; - uint32_t duration = 0; - uint32_t start = xTaskGetTickCount(); - uint8_t offset = 0; - while (duration < totalDuration) { - duration = xTaskGetTickCount() - start; + memmove(&firstStripPtr[oldStart], &firstStripPtr[oldPrevious], OLED_WIDTH - progress); + memmove(&secondStripPtr[oldStart], &secondStripPtr[oldPrevious], OLED_WIDTH - progress); - uint8_t progress = (duration * 100) / totalDuration; - progress = easeInOutTiming(progress); - progress = lerp(0, OLED_WIDTH, progress); - if (progress > OLED_WIDTH) { - progress = OLED_WIDTH; - } - - memmove(&firstStripPtr[0], &firstStripPtr[progress - offset], OLED_WIDTH - progress); - memmove(&secondStripPtr[0], &secondStripPtr[progress - offset], OLED_WIDTH - progress); - offset = progress; - - memmove( - &firstStripPtr[OLED_WIDTH - progress], - &firstBackStripPtr[0], - progress); - memmove(&secondStripPtr[OLED_WIDTH - progress], - &secondBackStripPtr[0], - progress); + memmove(&firstStripPtr[newStart], &firstBackStripPtr[newEnd], progress); + memmove(&secondStripPtr[newStart], &secondBackStripPtr[newEnd], progress); refresh(); osDelay(40); diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 0d57f3e4..34779be6 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -826,14 +826,20 @@ void gui_Menu(const menuitem *menu) { static bool enterGUIMenu = true; enterGUIMenu = true; + // Animated menu opening. if (menu[currentScreen].draw.func != NULL) { - uint8_t secondFrameBuffer[OLED_WIDTH * 2]; - OLED::set_framebuffer(secondFrameBuffer); + // This menu is drawn in a secondary framebuffer. + // Then we play a transition from the current primary + // framebuffer to the new buffer. + // The extra buffer is discarded at the end of the transition. + uint8_t secondaryFrameBuffer[OLED_WIDTH * 2]; + OLED::set_framebuffer(secondaryFrameBuffer); OLED::setFont(0); OLED::setCursor(0, 0); OLED::clearScreen(); menu[currentScreen].draw.func(); - OLED::presentSecondScreenBufferAnimated(); + OLED::set_framebuffer(NULL); + OLED::transitionToContents(secondaryFrameBuffer, true); } while ((menu[currentScreen].draw.func != NULL) && earlyExit == false) { @@ -888,13 +894,14 @@ void gui_Menu(const menuitem *menu) { menu[currentScreen].incrementHandler.func(); if (enterGUIMenu) { - uint8_t secondFrameBuffer[OLED_WIDTH * 2]; - OLED::set_framebuffer(secondFrameBuffer); + uint8_t secondaryFrameBuffer[OLED_WIDTH * 2]; + OLED::set_framebuffer(secondaryFrameBuffer); OLED::setFont(0); OLED::setCursor(0, 0); OLED::clearScreen(); menu[currentScreen].draw.func(); - OLED::presentSecondScreenBufferAnimatedBack(); + OLED::set_framebuffer(NULL); + OLED::transitionToContents(secondaryFrameBuffer, false); } } else { earlyExit = true; From 330c4868c2c657a0135faf3cdb05f81a8c9e0f2a Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Mon, 6 Apr 2020 18:55:48 +0200 Subject: [PATCH 06/26] Fix navigation animation not playing sometimes. --- workspace/TS100/Core/Src/gui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 34779be6..5a5aa30c 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -903,6 +903,7 @@ void gui_Menu(const menuitem *menu) { OLED::set_framebuffer(NULL); OLED::transitionToContents(secondaryFrameBuffer, false); } + enterGUIMenu = true; } else { earlyExit = true; } From 3d33a6ea57e1d39c016872c8be36a36f20e0ef70 Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Fri, 17 Apr 2020 09:46:01 +0200 Subject: [PATCH 07/26] Fix whitespaces --- workspace/TS100/Core/Inc/OLED.hpp | 4 +- workspace/TS100/Core/Src/OLED.cpp | 96 +++++++++++++++---------------- workspace/TS100/Core/Src/gui.cpp | 72 +++++++++++------------ 3 files changed, 86 insertions(+), 86 deletions(-) diff --git a/workspace/TS100/Core/Inc/OLED.hpp b/workspace/TS100/Core/Inc/OLED.hpp index 5beb156d..e6077494 100644 --- a/workspace/TS100/Core/Inc/OLED.hpp +++ b/workspace/TS100/Core/Inc/OLED.hpp @@ -101,8 +101,8 @@ public: bool clear); static void drawHeatSymbol(uint8_t state); static void drawScrollIndicator(uint8_t p, uint8_t h); // Draws a scrolling position indicator - static void transitionToContents(uint8_t *framebuffer, bool forwardNavigation); - static void set_framebuffer(uint8_t *buffer); + static void transitionToContents(uint8_t *framebuffer, bool forwardNavigation); + static void set_framebuffer(uint8_t *buffer); private: static void drawChar(char c); // Draw a character to a specific location static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer diff --git a/workspace/TS100/Core/Src/OLED.cpp b/workspace/TS100/Core/Src/OLED.cpp index 37e55762..5893556c 100644 --- a/workspace/TS100/Core/Src/OLED.cpp +++ b/workspace/TS100/Core/Src/OLED.cpp @@ -63,11 +63,11 @@ const uint8_t REFRESH_COMMANDS[17] = { 0x80, 0xAF, 0x80, 0x21, 0x80, 0x20, 0x80, 0x7F, 0x80, 0xC0, 0x80, 0x22, 0x80, 0x00, 0x80, 0x01, 0x40 }; static uint8_t easeInOutTiming(uint8_t t) { - return t * t * (300 - 2 * t) / 10000; + return t * t * (300 - 2 * t) / 10000; } static uint8_t lerp(uint8_t a, uint8_t b, uint8_t t) { - return a + t * (b - a) / 100; + return a + t * (b - a) / 100; } void OLED::initialize() { @@ -94,14 +94,14 @@ void OLED::initialize() { } void OLED::set_framebuffer(uint8_t *buffer) { - if (buffer == NULL) { - firstStripPtr = &screenBuffer[FRAMEBUFFER_START]; - secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH]; - return; - } - - firstStripPtr = &buffer[0]; - secondStripPtr = &buffer[OLED_WIDTH]; + if (buffer == NULL) { + firstStripPtr = &screenBuffer[FRAMEBUFFER_START]; + secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH]; + return; + } + + firstStripPtr = &buffer[0]; + secondStripPtr = &buffer[OLED_WIDTH]; } /* @@ -153,44 +153,44 @@ void OLED::drawScrollIndicator(uint8_t y, uint8_t height) { * Otherwise a rewinding navigation animation is shown to the second framebuffer contents. */ void OLED::transitionToContents(uint8_t *framebuffer, bool forwardNavigation) { - uint8_t *firstBackStripPtr = &framebuffer[0]; - uint8_t *secondBackStripPtr = &framebuffer[OLED_WIDTH]; - - uint32_t totalDuration = 50; // 500ms - uint32_t duration = 0; - uint32_t start = xTaskGetTickCount(); - uint8_t offset = 0; - - while (duration <= totalDuration) { - duration = xTaskGetTickCount() - start; - uint8_t progress = duration * 100 / totalDuration; - progress = easeInOutTiming(progress); - progress = lerp(0, OLED_WIDTH, progress); - if (progress > OLED_WIDTH) { - progress = OLED_WIDTH; - } - - // When forward, current contents move to the left out. - // Otherwise the contents move to the right out. - uint8_t oldStart = forwardNavigation ? 0 : progress; - uint8_t oldPrevious = forwardNavigation ? progress - offset : offset; - - // Content from the second framebuffer moves in from the right (forward) - // or from the left (not forward). - uint8_t newStart = forwardNavigation ? OLED_WIDTH - progress : 0; - uint8_t newEnd = forwardNavigation ? 0 : OLED_WIDTH - progress; - - offset = progress; - - memmove(&firstStripPtr[oldStart], &firstStripPtr[oldPrevious], OLED_WIDTH - progress); - memmove(&secondStripPtr[oldStart], &secondStripPtr[oldPrevious], OLED_WIDTH - progress); - - memmove(&firstStripPtr[newStart], &firstBackStripPtr[newEnd], progress); - memmove(&secondStripPtr[newStart], &secondBackStripPtr[newEnd], progress); - - refresh(); - osDelay(40); - } + uint8_t *firstBackStripPtr = &framebuffer[0]; + uint8_t *secondBackStripPtr = &framebuffer[OLED_WIDTH]; + + uint32_t totalDuration = 50; // 500ms + uint32_t duration = 0; + uint32_t start = xTaskGetTickCount(); + uint8_t offset = 0; + + while (duration <= totalDuration) { + duration = xTaskGetTickCount() - start; + uint8_t progress = duration * 100 / totalDuration; + progress = easeInOutTiming(progress); + progress = lerp(0, OLED_WIDTH, progress); + if (progress > OLED_WIDTH) { + progress = OLED_WIDTH; + } + + // When forward, current contents move to the left out. + // Otherwise the contents move to the right out. + uint8_t oldStart = forwardNavigation ? 0 : progress; + uint8_t oldPrevious = forwardNavigation ? progress - offset : offset; + + // Content from the second framebuffer moves in from the right (forward) + // or from the left (not forward). + uint8_t newStart = forwardNavigation ? OLED_WIDTH - progress : 0; + uint8_t newEnd = forwardNavigation ? 0 : OLED_WIDTH - progress; + + offset = progress; + + memmove(&firstStripPtr[oldStart], &firstStripPtr[oldPrevious], OLED_WIDTH - progress); + memmove(&secondStripPtr[oldStart], &secondStripPtr[oldPrevious], OLED_WIDTH - progress); + + memmove(&firstStripPtr[newStart], &firstBackStripPtr[newEnd], progress); + memmove(&secondStripPtr[newStart], &secondBackStripPtr[newEnd], progress); + + refresh(); + osDelay(40); + } } void OLED::setRotation(bool leftHanded) { diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 4a5221f3..019ed102 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -826,29 +826,29 @@ void gui_Menu(const menuitem *menu) { int16_t lastOffset = -1; bool lcdRefresh = true; ButtonState lastButtonState = BUTTON_NONE; - static bool enterGUIMenu = true; - enterGUIMenu = true; - uint8_t scrollContentSize = 0; - + static bool enterGUIMenu = true; + enterGUIMenu = true; + uint8_t scrollContentSize = 0; + for (uint8_t i = 0; menu[i].draw.func != NULL; i++) { scrollContentSize += 1; } - - // Animated menu opening. - if (menu[currentScreen].draw.func != NULL) { - // This menu is drawn in a secondary framebuffer. - // Then we play a transition from the current primary - // framebuffer to the new buffer. - // The extra buffer is discarded at the end of the transition. - uint8_t secondaryFrameBuffer[OLED_WIDTH * 2]; - OLED::set_framebuffer(secondaryFrameBuffer); - OLED::setFont(0); - OLED::setCursor(0, 0); - OLED::clearScreen(); - menu[currentScreen].draw.func(); - OLED::set_framebuffer(NULL); - OLED::transitionToContents(secondaryFrameBuffer, true); - } + + // Animated menu opening. + if (menu[currentScreen].draw.func != NULL) { + // This menu is drawn in a secondary framebuffer. + // Then we play a transition from the current primary + // framebuffer to the new buffer. + // The extra buffer is discarded at the end of the transition. + uint8_t secondaryFrameBuffer[OLED_WIDTH * 2]; + OLED::set_framebuffer(secondaryFrameBuffer); + OLED::setFont(0); + OLED::setCursor(0, 0); + OLED::clearScreen(); + menu[currentScreen].draw.func(); + OLED::set_framebuffer(NULL); + OLED::transitionToContents(secondaryFrameBuffer, true); + } while ((menu[currentScreen].draw.func != NULL) && earlyExit == false) { OLED::setFont(0); @@ -900,24 +900,24 @@ void gui_Menu(const menuitem *menu) { case BUTTON_F_SHORT: // increment if (descriptionStart == 0) { - if (menu[currentScreen].incrementHandler.func != NULL) { - enterGUIMenu = false; + if (menu[currentScreen].incrementHandler.func != NULL) { + enterGUIMenu = false; menu[currentScreen].incrementHandler.func(); - - if (enterGUIMenu) { - uint8_t secondaryFrameBuffer[OLED_WIDTH * 2]; - OLED::set_framebuffer(secondaryFrameBuffer); - OLED::setFont(0); - OLED::setCursor(0, 0); - OLED::clearScreen(); - menu[currentScreen].draw.func(); - OLED::set_framebuffer(NULL); - OLED::transitionToContents(secondaryFrameBuffer, false); - } - enterGUIMenu = true; - } else { + + if (enterGUIMenu) { + uint8_t secondaryFrameBuffer[OLED_WIDTH * 2]; + OLED::set_framebuffer(secondaryFrameBuffer); + OLED::setFont(0); + OLED::setCursor(0, 0); + OLED::clearScreen(); + menu[currentScreen].draw.func(); + OLED::set_framebuffer(NULL); + OLED::transitionToContents(secondaryFrameBuffer, false); + } + enterGUIMenu = true; + } else { earlyExit = true; - } + } } else descriptionStart = 0; break; From d69293342d280cee9cee9ac3a1db090cfd7ea51d Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Sat, 25 Apr 2020 11:43:14 +0200 Subject: [PATCH 08/26] Add secondary framebuffer, instead of allocating on stack --- workspace/TS100/Core/Inc/OLED.hpp | 6 ++++-- workspace/TS100/Core/Src/OLED.cpp | 20 ++++++++++++++------ workspace/TS100/Core/Src/gui.cpp | 14 ++++++-------- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/workspace/TS100/Core/Inc/OLED.hpp b/workspace/TS100/Core/Inc/OLED.hpp index e6077494..6fffb1fe 100644 --- a/workspace/TS100/Core/Inc/OLED.hpp +++ b/workspace/TS100/Core/Inc/OLED.hpp @@ -101,10 +101,11 @@ public: bool clear); static void drawHeatSymbol(uint8_t state); static void drawScrollIndicator(uint8_t p, uint8_t h); // Draws a scrolling position indicator - static void transitionToContents(uint8_t *framebuffer, bool forwardNavigation); - static void set_framebuffer(uint8_t *buffer); + static void transitionSecondaryFramebuffer(bool forwardNavigation); + static void useSecondaryFramebuffer(bool useSecondary); private: static void drawChar(char c); // Draw a character to a specific location + static void setFramebuffer(uint8_t *buffer); static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer static uint8_t* firstStripPtr; // Pointers to the strips to allow for buffer having extra content static uint8_t* secondStripPtr; //Pointers to the strips @@ -114,6 +115,7 @@ private: static int16_t cursor_x, cursor_y; static uint8_t displayOffset; static uint8_t screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer + static uint8_t secondFrameBuffer[OLED_WIDTH * 2]; }; #endif /* OLED_HPP_ */ diff --git a/workspace/TS100/Core/Src/OLED.cpp b/workspace/TS100/Core/Src/OLED.cpp index 5893556c..91d47149 100644 --- a/workspace/TS100/Core/Src/OLED.cpp +++ b/workspace/TS100/Core/Src/OLED.cpp @@ -24,6 +24,7 @@ uint8_t OLED::fontWidth, OLED::fontHeight; int16_t OLED::cursor_x, OLED::cursor_y; uint8_t OLED::displayOffset; uint8_t OLED::screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer +uint8_t OLED::secondFrameBuffer[OLED_WIDTH * 2]; /*Setup params for the OLED screen*/ /*http://www.displayfuture.com/Display/datasheet/controller/SSD1307.pdf*/ @@ -93,7 +94,7 @@ void OLED::initialize() { sizeof(OLED_Setup_Array)); } -void OLED::set_framebuffer(uint8_t *buffer) { +void OLED::setFramebuffer(uint8_t *buffer) { if (buffer == NULL) { firstStripPtr = &screenBuffer[FRAMEBUFFER_START]; secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH]; @@ -146,15 +147,14 @@ void OLED::drawScrollIndicator(uint8_t y, uint8_t height) { /** * Plays a transition animation between two framebuffers. - * @param framebuffer Second framebuffer to use for animation. - * @param forward Direction of the navigation animation. + * @param forwardNavigation Direction of the navigation animation. * * If forward is true, this displays a forward navigation to the second framebuffer contents. * Otherwise a rewinding navigation animation is shown to the second framebuffer contents. */ -void OLED::transitionToContents(uint8_t *framebuffer, bool forwardNavigation) { - uint8_t *firstBackStripPtr = &framebuffer[0]; - uint8_t *secondBackStripPtr = &framebuffer[OLED_WIDTH]; +void OLED::transitionSecondaryFramebuffer(bool forwardNavigation) { + uint8_t *firstBackStripPtr = &secondFrameBuffer[0]; + uint8_t *secondBackStripPtr = &secondFrameBuffer[OLED_WIDTH]; uint32_t totalDuration = 50; // 500ms uint32_t duration = 0; @@ -193,6 +193,14 @@ void OLED::transitionToContents(uint8_t *framebuffer, bool forwardNavigation) { } } +void OLED::useSecondaryFramebuffer(bool useSecondary) { + if (useSecondary) { + setFramebuffer(secondFrameBuffer); + } else { + setFramebuffer(NULL); + } +} + void OLED::setRotation(bool leftHanded) { #ifdef MODEL_TS80 leftHanded = !leftHanded; diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 019ed102..a38aae4d 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -840,14 +840,13 @@ void gui_Menu(const menuitem *menu) { // Then we play a transition from the current primary // framebuffer to the new buffer. // The extra buffer is discarded at the end of the transition. - uint8_t secondaryFrameBuffer[OLED_WIDTH * 2]; - OLED::set_framebuffer(secondaryFrameBuffer); + OLED::useSecondaryFramebuffer(true); OLED::setFont(0); OLED::setCursor(0, 0); OLED::clearScreen(); menu[currentScreen].draw.func(); - OLED::set_framebuffer(NULL); - OLED::transitionToContents(secondaryFrameBuffer, true); + OLED::useSecondaryFramebuffer(false); + OLED::transitionSecondaryFramebuffer(true); } while ((menu[currentScreen].draw.func != NULL) && earlyExit == false) { @@ -905,14 +904,13 @@ void gui_Menu(const menuitem *menu) { menu[currentScreen].incrementHandler.func(); if (enterGUIMenu) { - uint8_t secondaryFrameBuffer[OLED_WIDTH * 2]; - OLED::set_framebuffer(secondaryFrameBuffer); + OLED::useSecondaryFramebuffer(true); OLED::setFont(0); OLED::setCursor(0, 0); OLED::clearScreen(); menu[currentScreen].draw.func(); - OLED::set_framebuffer(NULL); - OLED::transitionToContents(secondaryFrameBuffer, false); + OLED::useSecondaryFramebuffer(false); + OLED::transitionSecondaryFramebuffer(false); } enterGUIMenu = true; } else { From dbba4f999a7a2c59f983b3ca562ace1d89cac3a4 Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Sat, 25 Apr 2020 11:46:34 +0200 Subject: [PATCH 09/26] Use tabs instead of spaces --- workspace/TS100/Core/Inc/OLED.hpp | 6 +++--- workspace/TS100/Core/Src/OLED.cpp | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/workspace/TS100/Core/Inc/OLED.hpp b/workspace/TS100/Core/Inc/OLED.hpp index 6fffb1fe..5994e9f6 100644 --- a/workspace/TS100/Core/Inc/OLED.hpp +++ b/workspace/TS100/Core/Inc/OLED.hpp @@ -102,10 +102,10 @@ public: static void drawHeatSymbol(uint8_t state); static void drawScrollIndicator(uint8_t p, uint8_t h); // Draws a scrolling position indicator static void transitionSecondaryFramebuffer(bool forwardNavigation); - static void useSecondaryFramebuffer(bool useSecondary); + static void useSecondaryFramebuffer(bool useSecondary); private: static void drawChar(char c); // Draw a character to a specific location - static void setFramebuffer(uint8_t *buffer); + static void setFramebuffer(uint8_t *buffer); static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer static uint8_t* firstStripPtr; // Pointers to the strips to allow for buffer having extra content static uint8_t* secondStripPtr; //Pointers to the strips @@ -115,7 +115,7 @@ private: static int16_t cursor_x, cursor_y; static uint8_t displayOffset; static uint8_t screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer - static uint8_t secondFrameBuffer[OLED_WIDTH * 2]; + static uint8_t secondFrameBuffer[OLED_WIDTH * 2]; }; #endif /* OLED_HPP_ */ diff --git a/workspace/TS100/Core/Src/OLED.cpp b/workspace/TS100/Core/Src/OLED.cpp index 91d47149..313704ea 100644 --- a/workspace/TS100/Core/Src/OLED.cpp +++ b/workspace/TS100/Core/Src/OLED.cpp @@ -194,11 +194,11 @@ void OLED::transitionSecondaryFramebuffer(bool forwardNavigation) { } void OLED::useSecondaryFramebuffer(bool useSecondary) { - if (useSecondary) { - setFramebuffer(secondFrameBuffer); - } else { - setFramebuffer(NULL); - } + if (useSecondary) { + setFramebuffer(secondFrameBuffer); + } else { + setFramebuffer(NULL); + } } void OLED::setRotation(bool leftHanded) { From 7eb50e6d8a61e7468e1f13b40bb2e1a3a4fd0a22 Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Sat, 25 Apr 2020 12:27:54 +0200 Subject: [PATCH 10/26] Add documentation --- workspace/TS100/Core/Src/OLED.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/workspace/TS100/Core/Src/OLED.cpp b/workspace/TS100/Core/Src/OLED.cpp index 313704ea..3949b17a 100644 --- a/workspace/TS100/Core/Src/OLED.cpp +++ b/workspace/TS100/Core/Src/OLED.cpp @@ -63,10 +63,23 @@ uint8_t OLED_Setup_Array[] = { const uint8_t REFRESH_COMMANDS[17] = { 0x80, 0xAF, 0x80, 0x21, 0x80, 0x20, 0x80, 0x7F, 0x80, 0xC0, 0x80, 0x22, 0x80, 0x00, 0x80, 0x01, 0x40 }; + +/* + * Animation timing function that follows a bezier curve. + * @param t A given percentage value [0..<100] + * Returns a new percentage value with ease in and ease out. + * Original floating point formula: t * t * (3.0f - 2.0f * t); + */ static uint8_t easeInOutTiming(uint8_t t) { return t * t * (300 - 2 * t) / 10000; } +/* + * Returns the value between a and b, using a percentage value t. + * @param a The value associated with 0% + * @param b The value associated with 100% + * @param t The percentage [0..<100] + */ static uint8_t lerp(uint8_t a, uint8_t b, uint8_t t) { return a + t * (b - a) / 100; } From 799bc3991b0d47683bdc6e3289bf54afafd932fc Mon Sep 17 00:00:00 2001 From: apo76 Date: Sat, 2 May 2020 03:14:53 +0200 Subject: [PATCH 11/26] Update translation_fr.json Translated some messages that were still displayed in English in the French HEX. --- Translation Editor/translation_fr.json | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Translation Editor/translation_fr.json b/Translation Editor/translation_fr.json index 4a9dd154..98fd92dd 100644 --- a/Translation Editor/translation_fr.json +++ b/Translation Editor/translation_fr.json @@ -13,8 +13,8 @@ "BadTipString": "PANNE HS", "SleepingSimpleString": "Zzzz", "SleepingAdvancedString": "En veille...", - "WarningSimpleString": "HOT!", - "WarningAdvancedString": "ATTENTION! CHAUD", + "WarningSimpleString": "CHAUD!", + "WarningAdvancedString": "ATTENTION! CHAUD!", "SleepingTipAdvancedString": "Panne:", "IdleTipString": "Tip:", "IdleSetString": " Set:", @@ -238,41 +238,41 @@ "text": "PLIMEN", "text2": [ "P Limit", - "Enable" + "Activer?" ], - "desc": "Enable power limit" + "desc": "Activer la limite de puissance" }, "PowerLimit": { "text": "PLIM", "text2": [ - "Power", - "Limit" + "Puissance", + "Limite" ], - "desc": "Maximum power the iron can use " + "desc": "Puissance maximale utilisable " }, "ReverseButtonTempChange": { "text": "RVTCHG", "text2": [ "Key +-", - "reverse?" + "Inverser?" ], - "desc": "Reverse the tip temperature change buttons plus minus assignment." + "desc": "Inversez l'assignation +/- du bouton de changement de température de la pointe." }, "TempChangeShortStep": { "text": "TCHGST", "text2": [ "Temp change", - "short?" + "Court?" ], - "desc": "Temperature change steps on short button press!" + "desc": "Incrément de changement de température sur appui court." }, "TempChangeLongStep": { "text": "TCHGLT", "text2": [ "Temp change", - "long?" + "Long?" ], - "desc": "Temperature change steps on long button press!" + "desc": "Incrément de changement de température sur appui long." } } -} \ No newline at end of file +} From 38dbb05bc427dc19410b117ad53b50832aa332d4 Mon Sep 17 00:00:00 2001 From: Alessandro Gatti Date: Sun, 10 May 2020 22:41:17 +0200 Subject: [PATCH 12/26] Simplify logo presence check. --- workspace/TS100/Core/Src/main.cpp | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/workspace/TS100/Core/Src/main.cpp b/workspace/TS100/Core/Src/main.cpp index cd76dcb3..85a734a7 100644 --- a/workspace/TS100/Core/Src/main.cpp +++ b/workspace/TS100/Core/Src/main.cpp @@ -302,26 +302,21 @@ void startMOVTask(void const *argument __unused) { } } -#define FLASH_LOGOADDR \ - (0x8000000 | 0xF800) /*second last page of flash set aside for logo image*/ - -/* The header value is (0xAA,0x55,0xF0,0x0D) but is stored in little endian 16 - * bits words on the flash */ -const uint8_t LOGO_HEADER_VALUE[] = { 0x55, 0xAA, 0x0D, 0xF0 }; +// Second last page of flash set aside for logo image. +#define FLASH_LOGOADDR (0x8000000 | 0xF800) + +// Logo header signature. +#define LOGO_HEADER_VALUE 0xF00DAA55 bool showBootLogoIfavailable() { - uint8_t *header = (uint8_t*) (FLASH_LOGOADDR); + // Do not show logo data if signature is not found. + if (LOGO_HEADER_VALUE != *(reinterpret_cast(FLASH_LOGOADDR))) { + return false; + } - // check if the header is correct. - for (int i = 0; i < 4; i++) { - if (header[i] != LOGO_HEADER_VALUE[i]) { - return false; - } - } - - OLED::drawAreaSwapped(0, 0, 96, 16, (uint8_t*) (FLASH_LOGOADDR + 4)); - OLED::refresh(); - return true; + OLED::drawAreaSwapped(0, 0, 96, 16, (uint8_t*) (FLASH_LOGOADDR + 4)); + OLED::refresh(); + return true; } /* From 5e02819b29973c420558942048f627c8b435c198 Mon Sep 17 00:00:00 2001 From: xobotyi Date: Fri, 22 May 2020 11:19:30 +0300 Subject: [PATCH 13/26] feat: improve Russian translation Made int more accurate, fixed some translation mistakes. --- Translation Editor/translation_ru.json | 218 ++++++++++++------------- 1 file changed, 109 insertions(+), 109 deletions(-) diff --git a/Translation Editor/translation_ru.json b/Translation Editor/translation_ru.json index 6a8b6efc..62da873f 100644 --- a/Translation Editor/translation_ru.json +++ b/Translation Editor/translation_ru.json @@ -3,17 +3,17 @@ "languageLocalName": "Русский", "cyrillicGlyphs": true, "messages": { - "SettingsCalibrationDone": "Калибровка выполнена!", - "SettingsCalibrationWarning": "Убедитесь, что жало остыло до комнатной температуры, прежде чем продолжать!", - "SettingsResetWarning": "Вы действительно хотите сбросить настройки до значений по умолчанию?", + "SettingsCalibrationDone": "Калибровка завершена!", + "SettingsCalibrationWarning": "Прежде чем продолжить, пожалуйста, убедитесь что жало имеет комнатную температуру!", + "SettingsResetWarning": "Вы уверены, что хотите сбросить настройки к значениям по-умолчанию?", "UVLOWarningString": "НАПРЯЖ--", - "UndervoltageString": "Под питанием", - "InputVoltageString": "Питание B: ", - "WarningTipTempString": "Жало t°: ", - "BadTipString": "Жало--", - "SleepingSimpleString": "Сон ", + "UndervoltageString": "Низк. напряжение", + "InputVoltageString": "Питание В: ", + "WarningTipTempString": "Темп. жала: ", + "BadTipString": "ЖАЛО--", + "SleepingSimpleString": "Zzzz", "SleepingAdvancedString": "Ожидание...", - "WarningSimpleString": " ГОРЯЧО!", + "WarningSimpleString": "ГОРЯЧО!", "WarningAdvancedString": "!!! ГОРЯЧЕЕ ЖАЛО !!!", "SleepingTipAdvancedString": "Жало:", "IdleTipString": "Жало:", @@ -23,18 +23,18 @@ "OffString": "Выкл.", "ResetOKMessage": "Сброс OK", "YourGainMessage": "Прирост:", - "SettingsResetMessage": "Настройки \nсброшены!" + "SettingsResetMessage": "Настройки сброшены!" }, "characters": { - "SettingRightChar": "П", - "SettingLeftChar": "Л", - "SettingAutoChar": "A", - "SettingFastChar": "+", - "SettingSlowChar": "-", - "SettingStartSolderingChar": "T", - "SettingStartSleepChar": "S", - "SettingStartSleepOffChar": "O", - "SettingStartNoneChar": "F" + "SettingRightChar": "Л", + "SettingLeftChar": "П", + "SettingAutoChar": "А", + "SettingFastChar": "Б", + "SettingSlowChar": "М", + "SettingStartSolderingChar": "П", + "SettingStartSleepChar": "О", + "SettingStartSleepOffChar": "К", + "SettingStartNoneChar": "В" }, "menuDouble": true, "menuGroups": { @@ -47,234 +47,234 @@ }, "PowerSavingMenu": { "text2": [ - "Режим", + "Режимы", "сна" ], - "desc": "Параметры экономии энергии" + "desc": "Найстроки режима ожидания" }, "UIMenu": { "text2": [ - "Пользовател", - "интерфейс" + "Параметры", + "интерфейса" ], - "desc": "Параметры пользовательского интерфейса" + "desc": "Найстройки пользовательского интерфейса" }, "AdvancedMenu": { "text2": [ "Дополнител.", - "параметры" + "найстройки" ], - "desc": "Дополнительные параметры" + "desc": "Дополнительные настройки" } }, "menuOptions": { "PowerSource": { - "text": "ИстП", + "text": "ИстчнПит", "text2": [ "Источник", "питания" ], - "desc": "Источник питания. Установка напряжения отключения. " + "desc": "Источник питания. Устанавливает напряжение отсечки. " }, "SleepTemperature": { - "text": "Тожд", + "text": "ТмпОжд", "text2": [ - "Темпер.", - "сна" + "Темп.", + "ожидания" ], - "desc": "Температура режима ожидания <С>" + "desc": "Температура режима ожидания" }, "SleepTimeout": { - "text": "Вожд", + "text": "ВрмОжид", "text2": [ "Таймаут", - "сна" + "ожидания" ], "desc": "Время до перехода в режим ожидания <Минуты/Секунды>" }, "ShutdownTimeout": { - "text": "Тоткл", + "text": "ВрмОткл", "text2": [ - "Время до", + "Таймаут", "отключения" ], - "desc": "Время до отключения <Минуты>" + "desc": "Время до отключения паяльника <Минуты>" }, "MotionSensitivity": { - "text": "ЧувсДв", + "text": "ЧувсАксл", "text2": [ - "Чувст. сенсо-", - "ра движения" + "Чувствительн.", + "акселерометра" ], - "desc": "Акселерометр <0 = Выкл, 1 = Мин. чувствительный, 9 = Макс. чувствительный>" + "desc": "Чувствительность акселерометра <0=Выкл., 1=Мин., 9=Макс.>" }, "TemperatureUnit": { "text": "ЕдТемп", "text2": [ - "Формат темпе-", - "ратуры(C°/F°)" + "Единицы", + "температуры" ], - "desc": "Единица измерения температуры " + "desc": "Единицы изменения температуры " }, "AdvancedIdle": { "text": "ИнфОжд", "text2": [ - "Подробный ре-", - "жим ожидания" + "Подробный", + "реж. ожидания" ], - "desc": "Показывать детальную информацию маленьким шрифтом на домашнем экране" + "desc": "Отображать детальную информацию уменьшенным шрифтом на домашнем экране" }, "DisplayRotation": { "text": "ПовЭкр", "text2": [ - "Автоповорот", + "Ориентация", "экрана" ], - "desc": "Ориентация дисплея " + "desc": "Ориентация экрана <А=Авто, Л=Левая рука, П=Правая рука>" }, "BoostEnabled": { - "text": "Турбо", + "text": "Турб", "text2": [ - "Режим", - "Турбо" + "Турбо", + "режим" ], - "desc": "Активирует \"Турбо-режим\" при удержании кнопки А во время пайки" + "desc": "Включить активацию турбо-режма, при удержании ближней к жалу кнопки во время пайки" }, "BoostTemperature": { - "text": "Ттур", + "text": "ТемпТурб", "text2": [ - "Темпер.", - "Турбо" + "t° турбо", + "режима" ], - "desc": "Температура в \"Турбо-режиме\"" + "desc": "Температура жала в турбо режиме" }, "AutoStart": { - "text": "Астарт", + "text": "АвтоРеж", "text2": [ - "Горячий", + "Авто", "старт" ], - "desc": "Автоматический запуск паяльника при включении питания " + "desc": "Режим с которым запускается паяльник при подаче питания <П=Пайка, О=Ожидание, К=Ожидание при комн. темп., В=Выкл.>" }, "CooldownBlink": { - "text": "Охлажд", + "text": "МигТемп", "text2": [ - "Показ t° при", - "остывании" + "Мигание t°", + "при остывании" ], - "desc": "Показывать температуру на экране охлаждения, пока жало остается горячим" + "desc": "Мигать температурой на экране охлаждения, пока жало еще горячее" }, "TemperatureCalibration": { - "text": "КалибрТ", + "text": "КалТемп?", "text2": [ "Калибровка", "температуры" ], - "desc": "Калибровка термодатчика" + "desc": "Калибровка термодатчика жала" }, "SettingsReset": { - "text": "СБРОС?", + "text": "Сброс?", "text2": [ - "Сбросить все", - "настройки?" + "Сброс", + "Настроек" ], - "desc": "Сброс всех настроек" + "desc": "Сброс настроек к значеням по-умолчанию" }, "VoltageCalibration": { - "text": "КалибрU?", + "text": "КалНапр", "text2": [ "Калибровка", "напряжения" ], - "desc": "Калибровка входного напряжения. Настройка кнопками, нажать и удержать чтобы завершить" + "desc": "Калибровка входного напряжения <длинное нажатие для выхода>" }, "AdvancedSoldering": { - "text": "ИнфПай", + "text": "ИнфПайк", "text2": [ - "Подробный ре-", - "жим пайки" + "Подробный", + "экран пайки" ], - "desc": "Показывать детальную информацию при пайке" + "desc": "Показывать детальную информацию на экране пайки" }, "ScrollingSpeed": { - "text": "DESCSP", + "text": "СкорТекс", "text2": [ "Скорость", "текста" ], - "desc": "Скорость прокрутки текста" + "desc": "Скорость прокрутки текста <М=медленно, Б=быстро>" }, "TipModel": { - "text": "TIPMO", + "text": "МодЖала", "text2": [ "Модель", - "жало" + "жала" ], - "desc": "Выбор модели жало" + "desc": "Выбор модели жала" }, "SimpleCalibrationMode": { - "text": "SMPCAL", + "text": "УпрКал", "text2": [ - "Простая", + "Упрощенная", "калибровка" ], - "desc": "Простая калибровка с использованием горячей воды" + "desc": "Упрощенная калибровка с использованием горячей воды" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", + "text": "УлучшКал", "text2": [ - "Подробная", + "Улучшенная", "калибровка" ], - "desc": "Калибровка с помощью термопары" + "desc": "Улучшенная калибровка с импользованием термопары жала" }, "PowerInput": { - "text": "PWRW", + "text": "МощнИст", "text2": [ "Мощность", - "адаптера" + "питания" ], - "desc": "Мощность используемого адаптера питания" + "desc": "Мощность используемого источника питания" }, "PowerLimitEnable": { - "text": "PLIMEN", + "text": "ВклЛимW", "text2": [ - "Ограничение", - "мощности" + "Включить", + "лимит питания" ], - "desc": "Включает ограничение мощности потребления" + "desc": "Включить лимит потреблямой мощности" }, "PowerLimit": { - "text": "PLIM", + "text": "ЗначЛимW", "text2": [ - "Максимальная", - "мощность" + "Значение", + "лимита питания" ], - "desc": "Макс. мощность, которую может использовать паяльник <Ватт>" + "desc": "Максимальная мощность которую может использовать паяльник <Ватт>" }, "ReverseButtonTempChange": { - "text": "RVTCHG", + "text": "ИнвКноп", "text2": [ - "Инвертировать", - "кнопки +-?" + "Поменять кнопки", + "+- местами" ], - "desc": "Инвертировать кнопки изменения температуры." + "desc": "Инвертировать кнопки изменения температуры" }, "TempChangeShortStep": { - "text": "TCHGST", + "text": "ШагКорт", "text2": [ "Изменение темп.", - "коротко?" + "коротким наж." ], - "desc": "Изменять температуру при коротком нажатии!" + "desc": "Шаг изменения температуры при коротком нажатии кнопок" }, "TempChangeLongStep": { - "text": "TCHGLT", + "text": "ШагДлин", "text2": [ "Изменение темп.", - "долго?" + "длинным наж." ], - "desc": "Изменять температуру при длинном нажатии!" + "desc": "Шаг изменения температуры при длинном нажатии кнопок" } } -} +} \ No newline at end of file From 4ec62f8c8f6299da110ce116e1d91791e5e6894f Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 22 May 2020 23:30:09 +1000 Subject: [PATCH 14/26] Create settings field for power pulse --- workspace/TS100/Core/Inc/Settings.h | 19 +++++++++++-------- workspace/TS100/Core/Src/Settings.cpp | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/workspace/TS100/Core/Inc/Settings.h b/workspace/TS100/Core/Inc/Settings.h index f79b3fe5..604ca1b9 100644 --- a/workspace/TS100/Core/Inc/Settings.h +++ b/workspace/TS100/Core/Inc/Settings.h @@ -12,7 +12,7 @@ #include #include "stm32f1xx_hal.h" #include "unit.h" -#define SETTINGSVERSION ( 0x1E ) +#define SETTINGSVERSION ( 0x1F ) /*Change this if you change the struct below to prevent people getting \ out of sync*/ @@ -21,6 +21,8 @@ * flash in uint16_t chunks */ typedef struct { + uint8_t version; // Used to track if a reset is needed on firmware upgrade + uint16_t SolderingTemp; // current set point for the iron uint16_t SleepTemp; // temp to drop to in sleep uint8_t SleepTime; // minutes timeout to sleep @@ -37,25 +39,26 @@ typedef struct { uint8_t detailedIDLE :1; // Detailed idle screen uint8_t detailedSoldering :1; // Detailed soldering screens #ifdef ENABLED_FAHRENHEIT_SUPPORT - uint8_t temperatureInF; // Should the temp be in F or C (true is F) + uint8_t temperatureInF :1; // Should the temp be in F or C (true is F) #endif uint8_t descriptionScrollSpeed :1; // Description scroll speed + uint8_t KeepAwakePulse; // Keep Awake pulse power in 0.1 watts (10 = 1Watt) + uint16_t voltageDiv; // Voltage divisor factor uint16_t BoostTemp; // Boost mode set point for the iron uint16_t CalibrationOffset; // This stores the temperature offset for this tip // in the iron. - uint8_t pidPowerLimit; - uint8_t powerLimitEnable; // Allow toggling of power limit without changing value uint8_t powerLimit; // Maximum power iron allowed to output - uint8_t version; // Used to track if a reset is needed on firmware upgrade + uint8_t ReverseButtonTempChangeEnabled; // Change the plus and minus button assigment + uint16_t TempChangeLongStep; // Change the plus and minus button assigment + uint16_t TempChangeShortStep; // Change the plus and minus button assigment + uint32_t padding; // This is here for in case we are not an even divisor so // that nothing gets cut off - uint8_t ReverseButtonTempChangeEnabled; // Change the plus and minus button assigment - uint16_t TempChangeLongStep; // Change the plus and minus button assigment - uint16_t TempChangeShortStep; // Change the plus and minus button assigment + //MUST BE LAST } systemSettingsType; diff --git a/workspace/TS100/Core/Src/Settings.cpp b/workspace/TS100/Core/Src/Settings.cpp index d8a36049..2d0352a0 100644 --- a/workspace/TS100/Core/Src/Settings.cpp +++ b/workspace/TS100/Core/Src/Settings.cpp @@ -101,10 +101,10 @@ void resetSettings() { systemSettings.descriptionScrollSpeed = DESCRIPTION_SCROLL_SPEED; // default to slow systemSettings.powerLimitEnable = POWER_LIMIT_ENABLE; // Default to no power limit systemSettings.CalibrationOffset = CALIBRATION_OFFSET; // the adc offset in uV - systemSettings.pidPowerLimit = PID_POWER_LIMIT; // Sets the max pwm power limit systemSettings.powerLimit = POWER_LIMIT; // 30 watts default limit systemSettings.ReverseButtonTempChangeEnabled = REVERSE_BUTTON_TEMP_CHANGE; // systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // + systemSettings.KeepAwakePulse= 3; saveSettings(); // Save defaults } From 3287ee9d780e43cba62eb31cc5980baf680e75f7 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 22 May 2020 23:30:20 +1000 Subject: [PATCH 15/26] Change to using setting to control power pulse --- workspace/TS100/Core/Src/main.cpp | 62 ++++++++++++++++--------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/workspace/TS100/Core/Src/main.cpp b/workspace/TS100/Core/Src/main.cpp index 85a734a7..9aa15ed4 100644 --- a/workspace/TS100/Core/Src/main.cpp +++ b/workspace/TS100/Core/Src/main.cpp @@ -36,15 +36,13 @@ uint32_t MOVTaskBuffer[MOVTaskStackSize]; osStaticThreadDef_t MOVTaskControlBlock; static TaskHandle_t pidTaskNotification = NULL; - +static TickType_t powerPulseRate = 1000; +static TickType_t powerPulseDuration = 50; void startGUITask(void const *argument); void startPIDTask(void const *argument); void startMOVTask(void const *argument); // End FreeRTOS -static const int maxPowerIdleTicks = 1000; -static const int powerPulseTicks = 50; -static const int x10PowerPulseWatts = 3; // Main sets up the hardware then hands over to the FreeRTOS kernel int main(void) { @@ -117,7 +115,8 @@ void startPIDTask(void const *argument __unused) { #ifdef MODEL_TS80 //Set power management code to the tip resistance in ohms * 10 - TickType_t lastPowerPulse = 0; + TickType_t lastPowerPulseStart = 0; + TickType_t lastPowerPulseEnd = 0; #else #endif @@ -183,18 +182,23 @@ void startPIDTask(void const *argument __unused) { // Unfortunately, our temp signal is too noisy to really help. } -#ifdef MODEL_TS80 - //If its a TS80, we want to have the option of using an occasional pulse to keep the power bank on - if (((xTaskGetTickCount() - lastPowerPulse) > maxPowerIdleTicks) - && (x10WattsOut < x10PowerPulseWatts)) { - x10WattsOut = x10PowerPulseWatts; + //If the user turns on the option of using an occasional pulse to keep the power bank on + if (systemSettings.KeepAwakePulse) { + + if (xTaskGetTickCount() - lastPowerPulseStart + > powerPulseRate) { + lastPowerPulseStart = xTaskGetTickCount(); + lastPowerPulseEnd = lastPowerPulseStart + + powerPulseDuration; + } + + //If current PID is less than the pulse level, check if we want to constrain to the pulse as the floor + if (x10WattsOut < systemSettings.KeepAwakePulse + && xTaskGetTickCount() < lastPowerPulseEnd) { + x10WattsOut = systemSettings.KeepAwakePulse; + } } - if (((xTaskGetTickCount() - lastPowerPulse) - > (maxPowerIdleTicks + powerPulseTicks)) - && (x10WattsOut >= x10PowerPulseWatts)) { - lastPowerPulse = xTaskGetTickCount(); - } -#endif + //Secondary safety check to forcefully disable header when within ADC noise of top of ADC if (getTipRawTemp(0) > (0x7FFF - 150)) { x10WattsOut = 0; @@ -263,8 +267,7 @@ void startMOVTask(void const *argument __unused) { datax[currentPointer] = (int32_t) tx; datay[currentPointer] = (int32_t) ty; dataz[currentPointer] = (int32_t) tz; - if (!accelInit) - { + if (!accelInit) { for (uint8_t i = currentPointer + 1; i < MOVFilter; i++) { datax[i] = (int32_t) tx; datay[i] = (int32_t) ty; @@ -304,19 +307,20 @@ void startMOVTask(void const *argument __unused) { // Second last page of flash set aside for logo image. #define FLASH_LOGOADDR (0x8000000 | 0xF800) - + // Logo header signature. #define LOGO_HEADER_VALUE 0xF00DAA55 bool showBootLogoIfavailable() { - // Do not show logo data if signature is not found. - if (LOGO_HEADER_VALUE != *(reinterpret_cast(FLASH_LOGOADDR))) { - return false; - } +// Do not show logo data if signature is not found. + if (LOGO_HEADER_VALUE + != *(reinterpret_cast(FLASH_LOGOADDR))) { + return false; + } - OLED::drawAreaSwapped(0, 0, 96, 16, (uint8_t*) (FLASH_LOGOADDR + 4)); - OLED::refresh(); - return true; + OLED::drawAreaSwapped(0, 0, 96, 16, (uint8_t*) (FLASH_LOGOADDR + 4)); + OLED::refresh(); + return true; } /* @@ -344,12 +348,10 @@ void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); } void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c __unused) { - asm("bkpt"); FRToSI2C::CpltCallback(); } void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c __unused) { - //asm("bkpt"); FRToSI2C::CpltCallback(); } @@ -358,7 +360,7 @@ void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c __unused) { } void vApplicationStackOverflowHook(xTaskHandle *pxTask __unused, signed portCHAR *pcTaskName __unused) { - asm("bkpt"); - // We dont have a good way to handle a stack overflow at this point in time + +// We dont have a good way to handle a stack overflow at this point in time NVIC_SystemReset(); } From 76721d5f0d982ce3a3581f35ec9af8107a8d0620 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 22 May 2020 23:44:22 +1000 Subject: [PATCH 16/26] Roughing menu calls in --- workspace/TS100/Core/Src/gui.cpp | 124 +++++++++++++++++++------------ workspace/TS100/configuration.h | 6 +- 2 files changed, 79 insertions(+), 51 deletions(-) diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index a38aae4d..082bfa33 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -21,8 +21,8 @@ void gui_Menu(const menuitem *menu); static void settings_setInputVRange(void); static void settings_displayInputVRange(void); #else - static void settings_setInputPRange(void); - static void settings_displayInputPRange(void); +static void settings_setInputPRange(void); +static void settings_displayInputPRange(void); #endif static void settings_setSleepTemp(void); static void settings_displaySleepTemp(void); @@ -68,6 +68,8 @@ static void settings_displayTempChangeShortStep(void); static void settings_setTempChangeShortStep(void); static void settings_displayTempChangeLongStep(void); static void settings_setTempChangeLongStep(void); +static void settings_displayPowerPulse(void); +static void settings_setPowerPulse(void); // Menu functions static void settings_displaySolderingMenu(void); @@ -157,9 +159,9 @@ const menuitem solderingMenu[] = { { (const char*) SettingsDescriptions[10], { settings_setAutomaticStartMode }, { settings_displayAutomaticStartMode } }, /*Auto start*/ { (const char*) SettingsDescriptions[24], { settings_setTempChangeShortStep }, { - settings_displayTempChangeShortStep } }, /*Temp change short step*/ + settings_displayTempChangeShortStep } }, /*Temp change short step*/ { (const char*) SettingsDescriptions[25], { settings_setTempChangeLongStep }, { - settings_displayTempChangeLongStep } }, /*Temp change long step*/ + settings_displayTempChangeLongStep } }, /*Temp change long step*/ { NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE }; const menuitem UIMenu[] = { @@ -172,18 +174,21 @@ const menuitem UIMenu[] = { * Reverse Temp change buttons + - */ #ifdef ENABLED_FAHRENHEIT_SUPPORT -{ (const char*) SettingsDescriptions[5], { settings_setTempF }, { - settings_displayTempF } }, /* Temperature units*/ + { (const char*) SettingsDescriptions[5], { settings_setTempF }, { + settings_displayTempF } }, /* Temperature units*/ #endif -{ (const char*) SettingsDescriptions[7], { settings_setDisplayRotation }, { - settings_displayDisplayRotation } }, /*Display Rotation*/ -{ (const char*) SettingsDescriptions[11], { settings_setCoolingBlinkEnabled }, { - settings_displayCoolingBlinkEnabled } }, /*Cooling blink warning*/ -{ (const char*) SettingsDescriptions[16], { settings_setScrollSpeed }, { - settings_displayScrollSpeed } }, /*Scroll Speed for descriptions*/ -{ (const char*) SettingsDescriptions[23], { settings_setReverseButtonTempChangeEnabled }, { - settings_displayReverseButtonTempChangeEnabled } }, /* Reverse Temp change buttons + - */ -{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE + { (const char*) SettingsDescriptions[7], + { settings_setDisplayRotation }, { + settings_displayDisplayRotation } }, /*Display Rotation*/ + { (const char*) SettingsDescriptions[11], { + settings_setCoolingBlinkEnabled }, { + settings_displayCoolingBlinkEnabled } }, /*Cooling blink warning*/ + { (const char*) SettingsDescriptions[16], { settings_setScrollSpeed }, { + settings_displayScrollSpeed } }, /*Scroll Speed for descriptions*/ + { (const char*) SettingsDescriptions[23], { + settings_setReverseButtonTempChangeEnabled }, { + settings_displayReverseButtonTempChangeEnabled } }, /* Reverse Temp change buttons + - */ + { NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE }; const menuitem PowerMenu[] = { /* @@ -212,6 +217,7 @@ const menuitem advancedMenu[] = { * Calibrate Temperature * Calibrate Input V * Reset Settings + * Power Pulse */ { (const char*) SettingsDescriptions[21], { settings_setPowerLimitEnable }, { settings_displayPowerLimitEnable } }, /*Power limit enable*/ @@ -228,6 +234,8 @@ const menuitem advancedMenu[] = { settings_displayCalibrate } }, /*Calibrate tip*/ { (const char*) SettingsDescriptions[14], { settings_setCalibrateVIN }, { settings_displayCalibrateVIN } }, /*Voltage input cal*/ +{ (const char*) SettingsDescriptions[16], { settings_setPowerPulse }, { + settings_displayPowerPulse } }, /*Power Pulse adjustment */ { NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE }; @@ -366,8 +374,7 @@ static void settings_setSleepTemp(void) { systemSettings.SleepTemp += 20; if (systemSettings.SleepTemp > 580) systemSettings.SleepTemp = 120; - } - else + } else #endif { systemSettings.SleepTemp += 10; @@ -487,12 +494,12 @@ static void settings_displayAdvancedIDLEScreens(void) { } static void settings_setPowerLimitEnable(void) { - systemSettings.powerLimitEnable = !systemSettings.powerLimitEnable; + systemSettings.powerLimitEnable = !systemSettings.powerLimitEnable; } static void settings_displayPowerLimitEnable(void) { - printShortDescription(21, 7); - OLED::drawCheckbox(systemSettings.powerLimitEnable); + printShortDescription(21, 7); + OLED::drawCheckbox(systemSettings.powerLimitEnable); } static void settings_setPowerLimit(void) { @@ -503,9 +510,9 @@ static void settings_setPowerLimit(void) { } static void settings_displayPowerLimit(void) { - printShortDescription(22, 5); - OLED::printNumber(systemSettings.powerLimit, 2); - OLED::print(SymbolWatts); + printShortDescription(22, 5); + OLED::printNumber(systemSettings.powerLimit, 2); + OLED::print(SymbolWatts); } static void settings_setScrollSpeed(void) { @@ -575,7 +582,7 @@ static void settings_setBoostTemp(void) { if (systemSettings.BoostTemp > 850) { systemSettings.BoostTemp = 480; // loop back at 250 } - } else + } else #endif { systemSettings.BoostTemp += 10; // Go up 10C at a time @@ -746,46 +753,65 @@ static void settings_setCalibrateVIN(void) { } static void settings_setReverseButtonTempChangeEnabled(void) { - systemSettings.ReverseButtonTempChangeEnabled = !systemSettings.ReverseButtonTempChangeEnabled; + systemSettings.ReverseButtonTempChangeEnabled = + !systemSettings.ReverseButtonTempChangeEnabled; } -static void settings_displayReverseButtonTempChangeEnabled(void){ - printShortDescription(23, 7); - OLED::drawCheckbox(systemSettings.ReverseButtonTempChangeEnabled); +static void settings_displayReverseButtonTempChangeEnabled(void) { + printShortDescription(23, 7); + OLED::drawCheckbox(systemSettings.ReverseButtonTempChangeEnabled); } static void settings_setTempChangeShortStep(void) { - systemSettings.TempChangeShortStep += TEMP_CHANGE_SHORT_STEP; - if (systemSettings.TempChangeShortStep > TEMP_CHANGE_SHORT_STEP_MAX) { - systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // loop back at TEMP_CHANGE_SHORT_STEP_MAX - } + systemSettings.TempChangeShortStep += TEMP_CHANGE_SHORT_STEP; + if (systemSettings.TempChangeShortStep > TEMP_CHANGE_SHORT_STEP_MAX) { + systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // loop back at TEMP_CHANGE_SHORT_STEP_MAX + } } static void settings_displayTempChangeShortStep(void) { - printShortDescription(24, 5); - OLED::printNumber(systemSettings.TempChangeShortStep, 3); + printShortDescription(24, 5); + OLED::printNumber(systemSettings.TempChangeShortStep, 3); } static void settings_setTempChangeLongStep(void) { - systemSettings.TempChangeLongStep += TEMP_CHANGE_LONG_STEP; - if (systemSettings.TempChangeLongStep > TEMP_CHANGE_LONG_STEP_MAX) { - systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // loop back at TEMP_CHANGE_LONG_STEP_MAX - } + systemSettings.TempChangeLongStep += TEMP_CHANGE_LONG_STEP; + if (systemSettings.TempChangeLongStep > TEMP_CHANGE_LONG_STEP_MAX) { + systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // loop back at TEMP_CHANGE_LONG_STEP_MAX + } } static void settings_displayTempChangeLongStep(void) { - printShortDescription(25, 5); - OLED::printNumber(systemSettings.TempChangeLongStep, 3); + printShortDescription(25, 5); + OLED::printNumber(systemSettings.TempChangeLongStep, 3); } +static void settings_setPowerPulse(void) { + systemSettings.KeepAwakePulse += POWER_PULSE_INCREMENT; + if (systemSettings.KeepAwakePulse > POWER_PULSE_MAX) { + systemSettings.KeepAwakePulse = POWER_PULSE_MAX; // loop back to 0 + } +} +static void settings_displayPowerPulse(void) { + printShortDescription(26, 5); + if (systemSettings.TempChangeLongStep) { + OLED::printNumber(systemSettings.TempChangeLongStep / 10, 1); + OLED::print(SymbolDot); + OLED::printNumber(systemSettings.TempChangeLongStep % 10, 1); + } else { + OLED::drawCheckbox(false); + } + +} static void displayMenu(size_t index) { - // Call into the menu +// Call into the menu OLED::setFont(1); OLED::setCursor(0, 0); - // Draw title +// Draw title OLED::print(SettingsMenuEntries[index]); - // Draw symbol - // 16 pixel wide image - // 2 pixel wide scrolling indicator - OLED::drawArea(96 - 16 - 2, 0, 16, 16, (&SettingsMenuIcons[(16 * 2) * index])); +// Draw symbol +// 16 pixel wide image +// 2 pixel wide scrolling indicator + OLED::drawArea(96 - 16 - 2, 0, 16, 16, + (&SettingsMenuIcons[(16 * 2) * index])); } static void settings_displayCalibrateVIN(void) { @@ -817,7 +843,7 @@ static void settings_enterAdvancedMenu(void) { } void gui_Menu(const menuitem *menu) { - // Draw the settings menu and provide iteration support etc +// Draw the settings menu and provide iteration support etc uint8_t currentScreen = 0; uint32_t autoRepeatTimer = 0; uint8_t autoRepeatAcceleration = 0; @@ -834,7 +860,7 @@ void gui_Menu(const menuitem *menu) { scrollContentSize += 1; } - // Animated menu opening. +// Animated menu opening. if (menu[currentScreen].draw.func != NULL) { // This menu is drawn in a secondary framebuffer. // Then we play a transition from the current primary @@ -874,7 +900,7 @@ void gui_Menu(const menuitem *menu) { ((xTaskGetTickCount() - descriptionStart) / (systemSettings.descriptionScrollSpeed == 1 ? 1 : 2)); - descriptionOffset %= descriptionWidth; // Roll around at the end + descriptionOffset %= descriptionWidth; // Roll around at the end if (lastOffset != descriptionOffset) { OLED::clearScreen(); OLED::setCursor((OLED_WIDTH - descriptionOffset), 0); diff --git a/workspace/TS100/configuration.h b/workspace/TS100/configuration.h index d56f4f83..7b75c691 100644 --- a/workspace/TS100/configuration.h +++ b/workspace/TS100/configuration.h @@ -54,7 +54,9 @@ #define TEMP_CHANGE_SHORT_STEP_MAX 50 // Temp change short step MAX value #define TEMP_CHANGE_LONG_STEP_MAX 100 // Temp change long step MAX value - +/* Power pulse for keeping power banks awake*/ +#define POWER_PULSE_INCREMENT 1 +#define POWER_PULSE_MAX 50 // x10 max watts /** * OLED Orientation Sensitivity on Automatic mode! * Motion Sensitivity <0=Off 1=Least Sensitive 9=Most Sensitive> @@ -105,4 +107,4 @@ #define OP_AMP_Rf 180*1000 // 180 Kilo-ohms -> From schematic, R6 #define OP_AMP_Rin 2000 // 2.0 Kilo-ohms -> From schematic, R3 #define TIP_GAIN 115 -#endif \ No newline at end of file +#endif From 65e804e54e49bded4bd79bbe424fbc4bb0e823ed Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 22 May 2020 23:56:40 +1000 Subject: [PATCH 17/26] Add field for power pulse --- Translation Editor/translation_bg.json | 8 ++++++++ Translation Editor/translation_cs.json | 8 ++++++++ Translation Editor/translation_da.json | 8 ++++++++ Translation Editor/translation_de.json | 8 ++++++++ Translation Editor/translation_en.json | 8 ++++++++ Translation Editor/translation_es.json | 8 ++++++++ Translation Editor/translation_fi.json | 8 ++++++++ Translation Editor/translation_fr.json | 8 ++++++++ Translation Editor/translation_hr.json | 8 ++++++++ Translation Editor/translation_hu.json | 8 ++++++++ Translation Editor/translation_it.json | 8 ++++++++ Translation Editor/translation_lt.json | 8 ++++++++ Translation Editor/translation_nl.json | 8 ++++++++ Translation Editor/translation_nl_be.json | 8 ++++++++ Translation Editor/translation_no.json | 8 ++++++++ Translation Editor/translation_pl.json | 8 ++++++++ Translation Editor/translation_pt.json | 8 ++++++++ Translation Editor/translation_ru.json | 8 ++++++++ Translation Editor/translation_sk.json | 8 ++++++++ Translation Editor/translation_sl.json | 8 ++++++++ Translation Editor/translation_sr_cyrl.json | 8 ++++++++ Translation Editor/translation_sr_latn.json | 8 ++++++++ Translation Editor/translation_sv.json | 8 ++++++++ Translation Editor/translation_tr.json | 8 ++++++++ Translation Editor/translation_uk.json | 8 ++++++++ Translation Editor/translations_def.js | 5 +++++ workspace/TS100/Core/Inc/Translation.h | 4 ++-- 27 files changed, 207 insertions(+), 2 deletions(-) diff --git a/Translation Editor/translation_bg.json b/Translation Editor/translation_bg.json index 0efd7432..35b576ed 100644 --- a/Translation Editor/translation_bg.json +++ b/Translation Editor/translation_bg.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_cs.json b/Translation Editor/translation_cs.json index a4ff9ba3..2c393be4 100644 --- a/Translation Editor/translation_cs.json +++ b/Translation Editor/translation_cs.json @@ -274,6 +274,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_da.json b/Translation Editor/translation_da.json index 57910eb9..a0e8b391 100644 --- a/Translation Editor/translation_da.json +++ b/Translation Editor/translation_da.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_de.json b/Translation Editor/translation_de.json index 5097547f..c14fcda7 100644 --- a/Translation Editor/translation_de.json +++ b/Translation Editor/translation_de.json @@ -277,6 +277,14 @@ "Taste Lang?" ], "desc": "Temperaturwechselschritte bei langem Tastendruck!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_en.json b/Translation Editor/translation_en.json index 70b66bc0..f170bc8c 100644 --- a/Translation Editor/translation_en.json +++ b/Translation Editor/translation_en.json @@ -276,6 +276,14 @@ "long" ], "desc": "Temperature change steps on long button press" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } diff --git a/Translation Editor/translation_es.json b/Translation Editor/translation_es.json index 07f19835..6171e4b8 100644 --- a/Translation Editor/translation_es.json +++ b/Translation Editor/translation_es.json @@ -275,6 +275,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_fi.json b/Translation Editor/translation_fi.json index bbeaa8ed..9f5b37a5 100644 --- a/Translation Editor/translation_fi.json +++ b/Translation Editor/translation_fi.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_fr.json b/Translation Editor/translation_fr.json index 98fd92dd..2cfc8e92 100644 --- a/Translation Editor/translation_fr.json +++ b/Translation Editor/translation_fr.json @@ -273,6 +273,14 @@ "Long?" ], "desc": "Incrément de changement de température sur appui long." + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } diff --git a/Translation Editor/translation_hr.json b/Translation Editor/translation_hr.json index a6839354..bf7c0c29 100644 --- a/Translation Editor/translation_hr.json +++ b/Translation Editor/translation_hr.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_hu.json b/Translation Editor/translation_hu.json index a9b770c2..5f09dead 100644 --- a/Translation Editor/translation_hu.json +++ b/Translation Editor/translation_hu.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_it.json b/Translation Editor/translation_it.json index 1c0f7562..80c97f31 100644 --- a/Translation Editor/translation_it.json +++ b/Translation Editor/translation_it.json @@ -275,6 +275,14 @@ "pressione lunga" ], "desc": "Varia la temperatura della punta attraverso una lunga pressione dei tasti" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } diff --git a/Translation Editor/translation_lt.json b/Translation Editor/translation_lt.json index ec891f64..929ea2b9 100644 --- a/Translation Editor/translation_lt.json +++ b/Translation Editor/translation_lt.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_nl.json b/Translation Editor/translation_nl.json index efbc0d5e..8af5ab72 100644 --- a/Translation Editor/translation_nl.json +++ b/Translation Editor/translation_nl.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_nl_be.json b/Translation Editor/translation_nl_be.json index 37bd4f57..93f16df4 100644 --- a/Translation Editor/translation_nl_be.json +++ b/Translation Editor/translation_nl_be.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_no.json b/Translation Editor/translation_no.json index ac7917fb..e788aa16 100644 --- a/Translation Editor/translation_no.json +++ b/Translation Editor/translation_no.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_pl.json b/Translation Editor/translation_pl.json index 6959da7a..97d5fe64 100644 --- a/Translation Editor/translation_pl.json +++ b/Translation Editor/translation_pl.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_pt.json b/Translation Editor/translation_pt.json index aca5d524..5f7c83a8 100644 --- a/Translation Editor/translation_pt.json +++ b/Translation Editor/translation_pt.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_ru.json b/Translation Editor/translation_ru.json index 6a8b6efc..256e1c21 100644 --- a/Translation Editor/translation_ru.json +++ b/Translation Editor/translation_ru.json @@ -275,6 +275,14 @@ "долго?" ], "desc": "Изменять температуру при длинном нажатии!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } diff --git a/Translation Editor/translation_sk.json b/Translation Editor/translation_sk.json index fe2e03af..787dda7e 100644 --- a/Translation Editor/translation_sk.json +++ b/Translation Editor/translation_sk.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_sl.json b/Translation Editor/translation_sl.json index 6c3ef9a5..f49869a6 100644 --- a/Translation Editor/translation_sl.json +++ b/Translation Editor/translation_sl.json @@ -274,6 +274,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_sr_cyrl.json b/Translation Editor/translation_sr_cyrl.json index 6497b7a5..e8d0fd9e 100644 --- a/Translation Editor/translation_sr_cyrl.json +++ b/Translation Editor/translation_sr_cyrl.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_sr_latn.json b/Translation Editor/translation_sr_latn.json index e612cf06..a8a43db3 100644 --- a/Translation Editor/translation_sr_latn.json +++ b/Translation Editor/translation_sr_latn.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_sv.json b/Translation Editor/translation_sv.json index 6b965a17..8944fe1d 100644 --- a/Translation Editor/translation_sv.json +++ b/Translation Editor/translation_sv.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_tr.json b/Translation Editor/translation_tr.json index 76e6cce7..4270e733 100644 --- a/Translation Editor/translation_tr.json +++ b/Translation Editor/translation_tr.json @@ -273,6 +273,14 @@ "long?" ], "desc": "Temperature change steps on long button press!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } \ No newline at end of file diff --git a/Translation Editor/translation_uk.json b/Translation Editor/translation_uk.json index f072938c..46d418e4 100644 --- a/Translation Editor/translation_uk.json +++ b/Translation Editor/translation_uk.json @@ -273,6 +273,14 @@ "довго?" ], "desc": "Змінювати температуру при довгому натисканні!" + }, + "PowerPulsePower":{ + "text": "POWPLS", + "text2": [ + "Power Pulse", + "Watts" + ], + "desc": "Keep awake pulse power intensity" } } } diff --git a/Translation Editor/translations_def.js b/Translation Editor/translations_def.js index 93646e1f..8c11a4bd 100644 --- a/Translation Editor/translations_def.js +++ b/Translation Editor/translations_def.js @@ -282,6 +282,11 @@ var def = "id": "TempChangeLongStep", "maxLen": 6, "maxLen2": 16 + }, + { + "id": "PowerPulsePower", + "maxLen": 6, + "maxLen2": 16 } ] } diff --git a/workspace/TS100/Core/Inc/Translation.h b/workspace/TS100/Core/Inc/Translation.h index e3f5f167..74c01e20 100644 --- a/workspace/TS100/Core/Inc/Translation.h +++ b/workspace/TS100/Core/Inc/Translation.h @@ -19,8 +19,8 @@ extern const uint8_t USER_FONT_6x8[]; * use SettingsShortNames as SettingsShortNames[16][1].. second column undefined */ extern const enum ShortNameType SettingsShortNameType; -extern const char *SettingsShortNames[26][2]; -extern const char *SettingsDescriptions[26]; +extern const char *SettingsShortNames[27][2]; +extern const char *SettingsDescriptions[27]; extern const char *SettingsMenuEntries[4]; extern const char *SettingsCalibrationDone; From 1a671dfbdd9e14727bc084d16913601b12a0e8dc Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 22 May 2020 23:56:43 +1000 Subject: [PATCH 18/26] Update gui.cpp --- workspace/TS100/Core/Src/gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 082bfa33..6d8f3f53 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -234,7 +234,7 @@ const menuitem advancedMenu[] = { settings_displayCalibrate } }, /*Calibrate tip*/ { (const char*) SettingsDescriptions[14], { settings_setCalibrateVIN }, { settings_displayCalibrateVIN } }, /*Voltage input cal*/ -{ (const char*) SettingsDescriptions[16], { settings_setPowerPulse }, { +{ (const char*) SettingsDescriptions[26], { settings_setPowerPulse }, { settings_displayPowerPulse } }, /*Power Pulse adjustment */ { NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE }; From 376724636dd04873536cffe1a4dc49088787d24f Mon Sep 17 00:00:00 2001 From: xobotyi Date: Fri, 22 May 2020 17:30:56 +0300 Subject: [PATCH 19/26] fix: bugfixes --- Translation Editor/translation_ru.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Translation Editor/translation_ru.json b/Translation Editor/translation_ru.json index 62da873f..b0cff5e4 100644 --- a/Translation Editor/translation_ru.json +++ b/Translation Editor/translation_ru.json @@ -26,8 +26,8 @@ "SettingsResetMessage": "Настройки сброшены!" }, "characters": { - "SettingRightChar": "Л", - "SettingLeftChar": "П", + "SettingRightChar": "П", + "SettingLeftChar": "Л", "SettingAutoChar": "А", "SettingFastChar": "Б", "SettingSlowChar": "М", @@ -96,7 +96,7 @@ "text": "ВрмОткл", "text2": [ "Таймаут", - "отключения" + "выключения" ], "desc": "Время до отключения паяльника <Минуты>" }, @@ -239,40 +239,40 @@ "PowerLimitEnable": { "text": "ВклЛимW", "text2": [ - "Включить", - "лимит питания" + "Ограничение", + "мощности" ], "desc": "Включить лимит потреблямой мощности" }, "PowerLimit": { "text": "ЗначЛимW", "text2": [ - "Значение", - "лимита питания" + "Максимальная", + "мощность" ], "desc": "Максимальная мощность которую может использовать паяльник <Ватт>" }, "ReverseButtonTempChange": { "text": "ИнвКноп", "text2": [ - "Поменять кнопки", - "+- местами" + "Инвертировать", + "кнопки" ], "desc": "Инвертировать кнопки изменения температуры" }, "TempChangeShortStep": { "text": "ШагКорт", "text2": [ - "Изменение темп.", - "коротким наж." + "Шаг темп.", + "корю наж." ], "desc": "Шаг изменения температуры при коротком нажатии кнопок" }, "TempChangeLongStep": { "text": "ШагДлин", "text2": [ - "Изменение темп.", - "длинным наж." + "Шаг темп.", + "длин. наж." ], "desc": "Шаг изменения температуры при длинном нажатии кнопок" } From a5cd898ee552f48163b1e740eeea585b1f618908 Mon Sep 17 00:00:00 2001 From: xobotyi Date: Fri, 22 May 2020 17:40:47 +0300 Subject: [PATCH 20/26] fix: bugfixes --- Translation Editor/translation_ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Translation Editor/translation_ru.json b/Translation Editor/translation_ru.json index b0cff5e4..c7026a31 100644 --- a/Translation Editor/translation_ru.json +++ b/Translation Editor/translation_ru.json @@ -264,7 +264,7 @@ "text": "ШагКорт", "text2": [ "Шаг темп.", - "корю наж." + "кор. наж." ], "desc": "Шаг изменения температуры при коротком нажатии кнопок" }, From 4814ae139352c185db15c4daa8861aa9e0ad64dd Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 23 May 2020 13:42:03 +1000 Subject: [PATCH 21/26] Update main.cpp --- workspace/TS100/Core/Src/main.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/workspace/TS100/Core/Src/main.cpp b/workspace/TS100/Core/Src/main.cpp index 9aa15ed4..ad952611 100644 --- a/workspace/TS100/Core/Src/main.cpp +++ b/workspace/TS100/Core/Src/main.cpp @@ -43,7 +43,6 @@ void startPIDTask(void const *argument); void startMOVTask(void const *argument); // End FreeRTOS - // Main sets up the hardware then hands over to the FreeRTOS kernel int main(void) { /* Reset of all peripherals, Initializes the Flash interface and the Systick. @@ -111,15 +110,9 @@ void startPIDTask(void const *argument __unused) { * control PWM. */ setTipX10Watts(0); // disable the output driver if the output is set to be off - -#ifdef MODEL_TS80 - //Set power management code to the tip resistance in ohms * 10 - TickType_t lastPowerPulseStart = 0; TickType_t lastPowerPulseEnd = 0; -#else -#endif history tempError = { { 0 }, 0, 0 }; currentTempTargetDegC = 0; // Force start with no output (off). If in sleep / soldering this will // be over-ridden rapidly From f45fd087ab9b5a2fd153491bf5d71e8d9ab4eab6 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 23 May 2020 13:59:51 +1000 Subject: [PATCH 22/26] Pull default config out --- workspace/TS100/Core/Src/Settings.cpp | 2 +- workspace/TS100/Core/Src/gui.cpp | 31 +++++++++++++-------------- workspace/TS100/configuration.h | 5 +++++ 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/workspace/TS100/Core/Src/Settings.cpp b/workspace/TS100/Core/Src/Settings.cpp index 2d0352a0..7f0b84a5 100644 --- a/workspace/TS100/Core/Src/Settings.cpp +++ b/workspace/TS100/Core/Src/Settings.cpp @@ -105,6 +105,6 @@ void resetSettings() { systemSettings.ReverseButtonTempChangeEnabled = REVERSE_BUTTON_TEMP_CHANGE; // systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // - systemSettings.KeepAwakePulse= 3; + systemSettings.KeepAwakePulse= POWER_PULSE_DEFAULT; saveSettings(); // Save defaults } diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 6d8f3f53..dfa4ebfc 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -18,8 +18,8 @@ extern uint32_t lastButtonTime; void gui_Menu(const menuitem *menu); #ifdef MODEL_TS100 - static void settings_setInputVRange(void); - static void settings_displayInputVRange(void); +static void settings_setInputVRange(void); +static void settings_displayInputVRange(void); #else static void settings_setInputPRange(void); static void settings_displayInputPRange(void); @@ -118,14 +118,14 @@ static void settings_enterAdvancedMenu(void); * */ const menuitem rootSettingsMenu[] { - /* - * Power Source - * Soldering Menu - * Power Saving Menu - * UI Menu - * Advanced Menu - * Exit - */ +/* + * Power Source + * Soldering Menu + * Power Saving Menu + * UI Menu + * Advanced Menu + * Exit + */ #ifdef MODEL_TS100 { (const char*) SettingsDescriptions[0], { settings_setInputVRange }, { settings_displayInputVRange } }, /*Voltage input*/ @@ -786,16 +786,15 @@ static void settings_displayTempChangeLongStep(void) { static void settings_setPowerPulse(void) { systemSettings.KeepAwakePulse += POWER_PULSE_INCREMENT; - if (systemSettings.KeepAwakePulse > POWER_PULSE_MAX) { - systemSettings.KeepAwakePulse = POWER_PULSE_MAX; // loop back to 0 - } + systemSettings.KeepAwakePulse %= POWER_PULSE_MAX; + } static void settings_displayPowerPulse(void) { printShortDescription(26, 5); - if (systemSettings.TempChangeLongStep) { - OLED::printNumber(systemSettings.TempChangeLongStep / 10, 1); + if (systemSettings.KeepAwakePulse) { + OLED::printNumber(systemSettings.KeepAwakePulse / 10, 1); OLED::print(SymbolDot); - OLED::printNumber(systemSettings.TempChangeLongStep % 10, 1); + OLED::printNumber(systemSettings.KeepAwakePulse % 10, 1); } else { OLED::drawCheckbox(false); } diff --git a/workspace/TS100/configuration.h b/workspace/TS100/configuration.h index 7b75c691..8dc1212f 100644 --- a/workspace/TS100/configuration.h +++ b/workspace/TS100/configuration.h @@ -57,6 +57,11 @@ /* Power pulse for keeping power banks awake*/ #define POWER_PULSE_INCREMENT 1 #define POWER_PULSE_MAX 50 // x10 max watts +#ifdef MODEL_TS100 +#define POWER_PULSE_DEFAULT 0 +#else +#define POWER_PULSE_DEFAULT 5 +#endif /** * OLED Orientation Sensitivity on Automatic mode! * Motion Sensitivity <0=Off 1=Least Sensitive 9=Most Sensitive> From ac7d72d2555fc46edd1ca1717b9b92ab6ac0a5f1 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 23 May 2020 13:59:58 +1000 Subject: [PATCH 23/26] Translation update --- Translation Editor/translation_bg.json | 4 ++-- Translation Editor/translation_cs.json | 4 ++-- Translation Editor/translation_da.json | 4 ++-- Translation Editor/translation_de.json | 4 ++-- Translation Editor/translation_en.json | 4 ++-- Translation Editor/translation_es.json | 4 ++-- Translation Editor/translation_fi.json | 4 ++-- Translation Editor/translation_fr.json | 4 ++-- Translation Editor/translation_hr.json | 4 ++-- Translation Editor/translation_hu.json | 4 ++-- Translation Editor/translation_it.json | 4 ++-- Translation Editor/translation_lt.json | 4 ++-- Translation Editor/translation_nl.json | 4 ++-- Translation Editor/translation_nl_be.json | 4 ++-- Translation Editor/translation_no.json | 4 ++-- Translation Editor/translation_pl.json | 4 ++-- Translation Editor/translation_pt.json | 4 ++-- Translation Editor/translation_ru.json | 4 ++-- Translation Editor/translation_sk.json | 4 ++-- Translation Editor/translation_sl.json | 4 ++-- Translation Editor/translation_sr_cyrl.json | 4 ++-- Translation Editor/translation_sr_latn.json | 4 ++-- Translation Editor/translation_sv.json | 4 ++-- Translation Editor/translation_tr.json | 4 ++-- Translation Editor/translation_uk.json | 4 ++-- 25 files changed, 50 insertions(+), 50 deletions(-) diff --git a/Translation Editor/translation_bg.json b/Translation Editor/translation_bg.json index 35b576ed..5d1c5999 100644 --- a/Translation Editor/translation_bg.json +++ b/Translation Editor/translation_bg.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_cs.json b/Translation Editor/translation_cs.json index 2c393be4..c656d8df 100644 --- a/Translation Editor/translation_cs.json +++ b/Translation Editor/translation_cs.json @@ -278,8 +278,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_da.json b/Translation Editor/translation_da.json index a0e8b391..7f49b8f1 100644 --- a/Translation Editor/translation_da.json +++ b/Translation Editor/translation_da.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_de.json b/Translation Editor/translation_de.json index c14fcda7..f9b8f1fe 100644 --- a/Translation Editor/translation_de.json +++ b/Translation Editor/translation_de.json @@ -281,8 +281,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_en.json b/Translation Editor/translation_en.json index f170bc8c..4615b68e 100644 --- a/Translation Editor/translation_en.json +++ b/Translation Editor/translation_en.json @@ -280,8 +280,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_es.json b/Translation Editor/translation_es.json index 6171e4b8..8514667e 100644 --- a/Translation Editor/translation_es.json +++ b/Translation Editor/translation_es.json @@ -279,8 +279,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_fi.json b/Translation Editor/translation_fi.json index 9f5b37a5..089959d8 100644 --- a/Translation Editor/translation_fi.json +++ b/Translation Editor/translation_fi.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_fr.json b/Translation Editor/translation_fr.json index 2cfc8e92..b4e6707b 100644 --- a/Translation Editor/translation_fr.json +++ b/Translation Editor/translation_fr.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_hr.json b/Translation Editor/translation_hr.json index bf7c0c29..e4dbf726 100644 --- a/Translation Editor/translation_hr.json +++ b/Translation Editor/translation_hr.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_hu.json b/Translation Editor/translation_hu.json index 5f09dead..89e88663 100644 --- a/Translation Editor/translation_hu.json +++ b/Translation Editor/translation_hu.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_it.json b/Translation Editor/translation_it.json index 80c97f31..5793cb1c 100644 --- a/Translation Editor/translation_it.json +++ b/Translation Editor/translation_it.json @@ -279,8 +279,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_lt.json b/Translation Editor/translation_lt.json index 929ea2b9..38608dab 100644 --- a/Translation Editor/translation_lt.json +++ b/Translation Editor/translation_lt.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_nl.json b/Translation Editor/translation_nl.json index 8af5ab72..afb7ea31 100644 --- a/Translation Editor/translation_nl.json +++ b/Translation Editor/translation_nl.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_nl_be.json b/Translation Editor/translation_nl_be.json index 93f16df4..c79e34fb 100644 --- a/Translation Editor/translation_nl_be.json +++ b/Translation Editor/translation_nl_be.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_no.json b/Translation Editor/translation_no.json index e788aa16..8b8fad56 100644 --- a/Translation Editor/translation_no.json +++ b/Translation Editor/translation_no.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_pl.json b/Translation Editor/translation_pl.json index 97d5fe64..acad6316 100644 --- a/Translation Editor/translation_pl.json +++ b/Translation Editor/translation_pl.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_pt.json b/Translation Editor/translation_pt.json index 5f7c83a8..c0d43e86 100644 --- a/Translation Editor/translation_pt.json +++ b/Translation Editor/translation_pt.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_ru.json b/Translation Editor/translation_ru.json index 256e1c21..0e42de30 100644 --- a/Translation Editor/translation_ru.json +++ b/Translation Editor/translation_ru.json @@ -279,8 +279,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_sk.json b/Translation Editor/translation_sk.json index 787dda7e..2eb45bf6 100644 --- a/Translation Editor/translation_sk.json +++ b/Translation Editor/translation_sk.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_sl.json b/Translation Editor/translation_sl.json index f49869a6..87b8ef40 100644 --- a/Translation Editor/translation_sl.json +++ b/Translation Editor/translation_sl.json @@ -278,8 +278,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_sr_cyrl.json b/Translation Editor/translation_sr_cyrl.json index e8d0fd9e..000d3882 100644 --- a/Translation Editor/translation_sr_cyrl.json +++ b/Translation Editor/translation_sr_cyrl.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_sr_latn.json b/Translation Editor/translation_sr_latn.json index a8a43db3..cc1009ea 100644 --- a/Translation Editor/translation_sr_latn.json +++ b/Translation Editor/translation_sr_latn.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_sv.json b/Translation Editor/translation_sv.json index 8944fe1d..7af2ab00 100644 --- a/Translation Editor/translation_sv.json +++ b/Translation Editor/translation_sv.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_tr.json b/Translation Editor/translation_tr.json index 4270e733..9c818c1d 100644 --- a/Translation Editor/translation_tr.json +++ b/Translation Editor/translation_tr.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } diff --git a/Translation Editor/translation_uk.json b/Translation Editor/translation_uk.json index 46d418e4..9f9bbf98 100644 --- a/Translation Editor/translation_uk.json +++ b/Translation Editor/translation_uk.json @@ -277,8 +277,8 @@ "PowerPulsePower":{ "text": "POWPLS", "text2": [ - "Power Pulse", - "Watts" + "Power", + "Pulse W" ], "desc": "Keep awake pulse power intensity" } From ea8dac25f89553e45d937040beaa49d3560e456a Mon Sep 17 00:00:00 2001 From: Zoli002 <47077531+Zoli002@users.noreply.github.com> Date: Wed, 27 May 2020 20:22:26 +0200 Subject: [PATCH 24/26] Update translation_hu.json Hungarian translation Power limit Maximum power Reverse temp key + - Temperature change short press Temperature change long press Power pulse mode --- Translation Editor/translation_hu.json | 50 +++++++++++++------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Translation Editor/translation_hu.json b/Translation Editor/translation_hu.json index 89e88663..372a8a5a 100644 --- a/Translation Editor/translation_hu.json +++ b/Translation Editor/translation_hu.json @@ -235,52 +235,52 @@ "desc": "A tápegység által leadott teljesítmény" }, "PowerLimitEnable": { - "text": "PLIMEN", + "text": "TELJH", "text2": [ - "P Limit", - "Enable" + "Telj H", + "Bekapcsolva" ], - "desc": "Enable power limit" + "desc": "Bemeneti teljesitmény korlátozása" }, "PowerLimit": { - "text": "PLIM", + "text": "TELJM", "text2": [ - "Power", - "Limit" + "Telj", + "maximum" ], - "desc": "Maximum power the iron can use " + "desc": "Maximális teljesitmény beállitása " }, "ReverseButtonTempChange": { - "text": "RVTCHG", + "text": "HÖVÁLT", "text2": [ - "Key +-", - "reverse?" + "GOMB +-", + "Felcseréled?" ], - "desc": "Reverse the tip temperature change buttons plus minus assignment." + "desc": "A páka hömérséklet növelés csökkentési gombok felcserélése." }, "TempChangeShortStep": { - "text": "TCHGST", + "text": "HÖRÖV", "text2": [ - "Temp change", - "short?" + "Hömérséklet", + "váltás rövid?" ], - "desc": "Temperature change steps on short button press!" + "desc": "Hömérséklet váltás rövid gombnyomásrs bekapcsolva!" }, "TempChangeLongStep": { - "text": "TCHGLT", + "text": "HÖHOS", "text2": [ - "Temp change", - "long?" + "Hömérséklet", + "váltás hosszú?" ], - "desc": "Temperature change steps on long button press!" + "desc": "Hömérséklet váltás hosszú gombnyomásrs bekapcsolva!" }, "PowerPulsePower":{ - "text": "POWPLS", + "text": "TELJP", "text2": [ - "Power", - "Pulse W" + "Telj power", + "bank üzem W" ], - "desc": "Keep awake pulse power intensity" + "desc": "Powerbank üzemnél nem engedi a powerbankot kikapcsolni idönkénti áram felvételt generál. " } } -} \ No newline at end of file +} From 50dc8689ccd0385f72a98b83585c0649af714c62 Mon Sep 17 00:00:00 2001 From: firebie Date: Tue, 5 May 2020 23:57:39 +0300 Subject: [PATCH 25/26] Lowering min temp to 10C --- workspace/TS100/Core/Src/GUIThread.cpp | 10 +++++----- workspace/TS100/Core/Src/gui.cpp | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/workspace/TS100/Core/Src/GUIThread.cpp b/workspace/TS100/Core/Src/GUIThread.cpp index 398234f9..28e0f88b 100644 --- a/workspace/TS100/Core/Src/GUIThread.cpp +++ b/workspace/TS100/Core/Src/GUIThread.cpp @@ -325,21 +325,21 @@ case BUTTON_B_LONG: autoRepeatAcceleration = PRESS_ACCEL_INTERVAL_MAX - PRESS_ACCEL_INTERVAL_MIN; } - // constrain between 50-450 C + // constrain between 10-450 C #ifdef ENABLED_FAHRENHEIT_SUPPORT if (systemSettings.temperatureInF) { if (systemSettings.SolderingTemp > 850) systemSettings.SolderingTemp = 850; - if (systemSettings.SolderingTemp < 120) - systemSettings.SolderingTemp = 120; + if (systemSettings.SolderingTemp < 60) + systemSettings.SolderingTemp = 60; } else #endif { if (systemSettings.SolderingTemp > 450) systemSettings.SolderingTemp = 450; - if (systemSettings.SolderingTemp < 50) - systemSettings.SolderingTemp = 50; + if (systemSettings.SolderingTemp < 10) + systemSettings.SolderingTemp = 10; } if (xTaskGetTickCount() - lastChange > 200) diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index dfa4ebfc..41f7b9f8 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -373,13 +373,13 @@ static void settings_setSleepTemp(void) { if (systemSettings.temperatureInF) { systemSettings.SleepTemp += 20; if (systemSettings.SleepTemp > 580) - systemSettings.SleepTemp = 120; + systemSettings.SleepTemp = 60; } else #endif { systemSettings.SleepTemp += 10; if (systemSettings.SleepTemp > 300) - systemSettings.SleepTemp = 50; + systemSettings.SleepTemp = 10; } } From 7f6a862e50915e243ef4417982b80ea20bbea61b Mon Sep 17 00:00:00 2001 From: firebie Date: Mon, 13 Apr 2020 19:31:08 +0300 Subject: [PATCH 26/26] Add tip coeff as setting parameter --- Translation Editor/translation_bg.json | 10 +++- Translation Editor/translation_cs.json | 10 +++- Translation Editor/translation_da.json | 10 +++- Translation Editor/translation_de.json | 10 +++- Translation Editor/translation_en.json | 8 ++++ Translation Editor/translation_es.json | 10 +++- Translation Editor/translation_fi.json | 10 +++- Translation Editor/translation_fr.json | 8 ++++ Translation Editor/translation_hr.json | 10 +++- Translation Editor/translation_hu.json | 8 ++++ Translation Editor/translation_it.json | 8 ++++ Translation Editor/translation_lt.json | 10 +++- Translation Editor/translation_nl.json | 10 +++- Translation Editor/translation_nl_be.json | 10 +++- Translation Editor/translation_no.json | 10 +++- Translation Editor/translation_pl.json | 10 +++- Translation Editor/translation_pt.json | 10 +++- Translation Editor/translation_ru.json | 8 ++++ Translation Editor/translation_sk.json | 10 +++- Translation Editor/translation_sl.json | 10 +++- Translation Editor/translation_sr_cyrl.json | 10 +++- Translation Editor/translation_sr_latn.json | 10 +++- Translation Editor/translation_sv.json | 10 +++- Translation Editor/translation_tr.json | 10 +++- Translation Editor/translation_uk.json | 8 ++++ Translation Editor/translations_def.js | 5 ++ workspace/TS100/Core/Inc/Settings.h | 4 +- workspace/TS100/Core/Inc/Translation.h | 4 +- workspace/TS100/Core/Src/Settings.cpp | 1 + workspace/TS100/Core/Src/TipThermoModel.cpp | 18 ++++---- workspace/TS100/Core/Src/gui.cpp | 51 +++++++++++++++++++++ workspace/TS100/configuration.h | 32 ++++++------- 32 files changed, 307 insertions(+), 46 deletions(-) diff --git a/Translation Editor/translation_bg.json b/Translation Editor/translation_bg.json index 5d1c5999..f40f1607 100644 --- a/Translation Editor/translation_bg.json +++ b/Translation Editor/translation_bg.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_cs.json b/Translation Editor/translation_cs.json index c656d8df..6d6d59d0 100644 --- a/Translation Editor/translation_cs.json +++ b/Translation Editor/translation_cs.json @@ -282,6 +282,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_da.json b/Translation Editor/translation_da.json index 7f49b8f1..6271ef61 100644 --- a/Translation Editor/translation_da.json +++ b/Translation Editor/translation_da.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_de.json b/Translation Editor/translation_de.json index f9b8f1fe..a93c4a93 100644 --- a/Translation Editor/translation_de.json +++ b/Translation Editor/translation_de.json @@ -285,6 +285,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_en.json b/Translation Editor/translation_en.json index 4615b68e..ba3b0187 100644 --- a/Translation Editor/translation_en.json +++ b/Translation Editor/translation_en.json @@ -284,6 +284,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } } diff --git a/Translation Editor/translation_es.json b/Translation Editor/translation_es.json index 8514667e..e6815b34 100644 --- a/Translation Editor/translation_es.json +++ b/Translation Editor/translation_es.json @@ -283,6 +283,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_fi.json b/Translation Editor/translation_fi.json index 089959d8..451359fd 100644 --- a/Translation Editor/translation_fi.json +++ b/Translation Editor/translation_fi.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_fr.json b/Translation Editor/translation_fr.json index b4e6707b..c2cbb387 100644 --- a/Translation Editor/translation_fr.json +++ b/Translation Editor/translation_fr.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } } diff --git a/Translation Editor/translation_hr.json b/Translation Editor/translation_hr.json index e4dbf726..6b91354d 100644 --- a/Translation Editor/translation_hr.json +++ b/Translation Editor/translation_hr.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_hu.json b/Translation Editor/translation_hu.json index 372a8a5a..ae4310eb 100644 --- a/Translation Editor/translation_hu.json +++ b/Translation Editor/translation_hu.json @@ -281,6 +281,14 @@ "bank üzem W" ], "desc": "Powerbank üzemnél nem engedi a powerbankot kikapcsolni idönkénti áram felvételt generál. " + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } } diff --git a/Translation Editor/translation_it.json b/Translation Editor/translation_it.json index 5793cb1c..5105f99c 100644 --- a/Translation Editor/translation_it.json +++ b/Translation Editor/translation_it.json @@ -283,6 +283,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } } diff --git a/Translation Editor/translation_lt.json b/Translation Editor/translation_lt.json index 38608dab..9e886301 100644 --- a/Translation Editor/translation_lt.json +++ b/Translation Editor/translation_lt.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_nl.json b/Translation Editor/translation_nl.json index afb7ea31..67d73f8d 100644 --- a/Translation Editor/translation_nl.json +++ b/Translation Editor/translation_nl.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_nl_be.json b/Translation Editor/translation_nl_be.json index c79e34fb..510721fc 100644 --- a/Translation Editor/translation_nl_be.json +++ b/Translation Editor/translation_nl_be.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_no.json b/Translation Editor/translation_no.json index 8b8fad56..887285af 100644 --- a/Translation Editor/translation_no.json +++ b/Translation Editor/translation_no.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_pl.json b/Translation Editor/translation_pl.json index acad6316..40e24718 100644 --- a/Translation Editor/translation_pl.json +++ b/Translation Editor/translation_pl.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_pt.json b/Translation Editor/translation_pt.json index c0d43e86..6a213ca2 100644 --- a/Translation Editor/translation_pt.json +++ b/Translation Editor/translation_pt.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_ru.json b/Translation Editor/translation_ru.json index 66b6843e..412106c8 100644 --- a/Translation Editor/translation_ru.json +++ b/Translation Editor/translation_ru.json @@ -283,6 +283,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } } \ No newline at end of file diff --git a/Translation Editor/translation_sk.json b/Translation Editor/translation_sk.json index 2eb45bf6..ea19f6e0 100644 --- a/Translation Editor/translation_sk.json +++ b/Translation Editor/translation_sk.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_sl.json b/Translation Editor/translation_sl.json index 87b8ef40..f6793c47 100644 --- a/Translation Editor/translation_sl.json +++ b/Translation Editor/translation_sl.json @@ -282,6 +282,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_sr_cyrl.json b/Translation Editor/translation_sr_cyrl.json index 000d3882..29ba5456 100644 --- a/Translation Editor/translation_sr_cyrl.json +++ b/Translation Editor/translation_sr_cyrl.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_sr_latn.json b/Translation Editor/translation_sr_latn.json index cc1009ea..30e71cfd 100644 --- a/Translation Editor/translation_sr_latn.json +++ b/Translation Editor/translation_sr_latn.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_sv.json b/Translation Editor/translation_sv.json index 7af2ab00..b5b40339 100644 --- a/Translation Editor/translation_sv.json +++ b/Translation Editor/translation_sv.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_tr.json b/Translation Editor/translation_tr.json index 9c818c1d..748ad723 100644 --- a/Translation Editor/translation_tr.json +++ b/Translation Editor/translation_tr.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } -} \ No newline at end of file +} diff --git a/Translation Editor/translation_uk.json b/Translation Editor/translation_uk.json index 9f9bbf98..05b82e96 100644 --- a/Translation Editor/translation_uk.json +++ b/Translation Editor/translation_uk.json @@ -281,6 +281,14 @@ "Pulse W" ], "desc": "Keep awake pulse power intensity" + }, + "TipGain": { + "text": "TG", + "text2": [ + "Modify", + "tip gain" + ], + "desc": "Tip gain" } } } diff --git a/Translation Editor/translations_def.js b/Translation Editor/translations_def.js index 8c11a4bd..2e6d4a2f 100644 --- a/Translation Editor/translations_def.js +++ b/Translation Editor/translations_def.js @@ -287,6 +287,11 @@ var def = "id": "PowerPulsePower", "maxLen": 6, "maxLen2": 16 + }, + { + "id": "TipGain", + "maxLen": 6, + "maxLen2": 8 } ] } diff --git a/workspace/TS100/Core/Inc/Settings.h b/workspace/TS100/Core/Inc/Settings.h index 604ca1b9..cde51fc4 100644 --- a/workspace/TS100/Core/Inc/Settings.h +++ b/workspace/TS100/Core/Inc/Settings.h @@ -12,7 +12,7 @@ #include #include "stm32f1xx_hal.h" #include "unit.h" -#define SETTINGSVERSION ( 0x1F ) +#define SETTINGSVERSION ( 0x20 ) /*Change this if you change the struct below to prevent people getting \ out of sync*/ @@ -51,6 +51,8 @@ typedef struct { uint8_t powerLimitEnable; // Allow toggling of power limit without changing value uint8_t powerLimit; // Maximum power iron allowed to output + + uint16_t TipGain; // uV/C * 10, it can be used to convert tip thermocouple voltage to temperateture TipV/TipGain = TipTemp uint8_t ReverseButtonTempChangeEnabled; // Change the plus and minus button assigment uint16_t TempChangeLongStep; // Change the plus and minus button assigment diff --git a/workspace/TS100/Core/Inc/Translation.h b/workspace/TS100/Core/Inc/Translation.h index 74c01e20..e918ae8a 100644 --- a/workspace/TS100/Core/Inc/Translation.h +++ b/workspace/TS100/Core/Inc/Translation.h @@ -19,8 +19,8 @@ extern const uint8_t USER_FONT_6x8[]; * use SettingsShortNames as SettingsShortNames[16][1].. second column undefined */ extern const enum ShortNameType SettingsShortNameType; -extern const char *SettingsShortNames[27][2]; -extern const char *SettingsDescriptions[27]; +extern const char *SettingsShortNames[28][2]; +extern const char *SettingsDescriptions[28]; extern const char *SettingsMenuEntries[4]; extern const char *SettingsCalibrationDone; diff --git a/workspace/TS100/Core/Src/Settings.cpp b/workspace/TS100/Core/Src/Settings.cpp index 7f0b84a5..70bb74eb 100644 --- a/workspace/TS100/Core/Src/Settings.cpp +++ b/workspace/TS100/Core/Src/Settings.cpp @@ -106,5 +106,6 @@ void resetSettings() { systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // systemSettings.KeepAwakePulse= POWER_PULSE_DEFAULT; + systemSettings.TipGain = TIP_GAIN; saveSettings(); // Save defaults } diff --git a/workspace/TS100/Core/Src/TipThermoModel.cpp b/workspace/TS100/Core/Src/TipThermoModel.cpp index a75128f1..e35b2915 100644 --- a/workspace/TS100/Core/Src/TipThermoModel.cpp +++ b/workspace/TS100/Core/Src/TipThermoModel.cpp @@ -27,7 +27,7 @@ * This was bought to my attention by */ -#define op_amp_gain_stage (1+(OP_AMP_Rf/OP_AMP_Rin)) + uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) { // This takes the raw ADC samples, converts these to uV // Then divides this down by the gain to convert to the uV on the input to the op-amp (A+B terminals) @@ -39,7 +39,7 @@ uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) { uint32_t valueuV = rawInputmVX10 * 100; // shift into uV //Now to divide this down by the gain - valueuV = (valueuV) / op_amp_gain_stage; + valueuV = (valueuV) / OP_AMP_GAIN_STAGE; //Remove uV tipOffset if (valueuV >= systemSettings.CalibrationOffset) valueuV -= systemSettings.CalibrationOffset; @@ -73,17 +73,19 @@ int32_t LinearInterpolate(int32_t x1, int32_t y1, int32_t x2, int32_t y2, uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { //based on new measurements, tip is quite linear // - tipuVDelta *= TIP_GAIN; - tipuVDelta /= 10000; + tipuVDelta *= 10; + tipuVDelta /= systemSettings.TipGain; + +#ifdef MODEL_TS80 + tipuVDelta /= OP_AMP_GAIN_STAGE_TS100 / OP_AMP_GAIN_STAGE_TS80; +#endif + return tipuVDelta; } #ifdef ENABLED_FAHRENHEIT_SUPPORT uint32_t TipThermoModel::convertuVToDegF(uint32_t tipuVDelta) { - tipuVDelta *= TIP_GAIN; - tipuVDelta /= 1000; - return ((tipuVDelta * 9) / 50) + 32; - //(Y °C × 9/5) + 32 =Y°F + return convertCtoF(convertuVToDegC(tipuVDelta)); } uint32_t TipThermoModel::convertCtoF(uint32_t degC) { diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 41f7b9f8..ca4e92c1 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -60,6 +60,8 @@ static void settings_setResetSettings(void); static void settings_displayResetSettings(void); static void settings_setCalibrate(void); static void settings_displayCalibrate(void); +static void settings_setTipGain(void); +static void settings_displayTipGain(void); static void settings_setCalibrateVIN(void); static void settings_displayCalibrateVIN(void); static void settings_displayReverseButtonTempChangeEnabled(void); @@ -236,6 +238,8 @@ const menuitem advancedMenu[] = { settings_displayCalibrateVIN } }, /*Voltage input cal*/ { (const char*) SettingsDescriptions[26], { settings_setPowerPulse }, { settings_displayPowerPulse } }, /*Power Pulse adjustment */ +{ (const char*) SettingsDescriptions[27], { settings_setTipGain }, { + settings_displayTipGain } }, /*TipGain*/ { NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE }; @@ -752,6 +756,53 @@ static void settings_setCalibrateVIN(void) { } } +static void settings_setTipGain(void) { + OLED::setFont(0); + OLED::clearScreen(); + + for (;;) { + OLED::setCursor(0, 0); + OLED::printNumber(systemSettings.TipGain / 10, 2); + OLED::print(SymbolDot); + OLED::printNumber(systemSettings.TipGain % 10, 1); + + ButtonState buttons = getButtonState(); + switch (buttons) { + case BUTTON_F_SHORT: + systemSettings.TipGain -= 1; + break; + + case BUTTON_B_SHORT: + systemSettings.TipGain += 1; + break; + + case BUTTON_BOTH: + case BUTTON_F_LONG: + case BUTTON_B_LONG: + saveSettings(); + return; + break; + case BUTTON_NONE: + default: + break; + } + + OLED::refresh(); + osDelay(40); + + // Cap to sensible values + if (systemSettings.TipGain < 150) { + systemSettings.TipGain = 150; + } else if (systemSettings.TipGain > 300) { + systemSettings.TipGain = 300; + } + } +} + +static void settings_displayTipGain(void) { + printShortDescription(27, 5); +} + static void settings_setReverseButtonTempChangeEnabled(void) { systemSettings.ReverseButtonTempChangeEnabled = !systemSettings.ReverseButtonTempChangeEnabled; diff --git a/workspace/TS100/configuration.h b/workspace/TS100/configuration.h index 8dc1212f..1bdc13d0 100644 --- a/workspace/TS100/configuration.h +++ b/workspace/TS100/configuration.h @@ -62,6 +62,7 @@ #else #define POWER_PULSE_DEFAULT 5 #endif + /** * OLED Orientation Sensitivity on Automatic mode! * Motion Sensitivity <0=Off 1=Least Sensitive 9=Most Sensitive> @@ -81,21 +82,26 @@ #define DESCRIPTION_SCROLL_SPEED 0 // 0: Slow 1: Fast - default to slow #define POWER_LIMIT_ENABLE 0 // 0: Disable 1: Enable - Default disabled power limit +#define TIP_GAIN 210 // 21 uV/C * 10, uV per deg C constant of the tip, Tip uV * 10 / coeff = tip temp + +#define OP_AMP_Rf_TS100 750*1000 // 750 Kilo-ohms -> From schematic, R1 +#define OP_AMP_Rin_TS100 2370 // 2.37 Kilo-ohms -> From schematic, R2 + +#define OP_AMP_GAIN_STAGE_TS100 (1+(OP_AMP_Rf_TS100/OP_AMP_Rin_TS100)) + +#define OP_AMP_Rf_TS80 180*1000 // 180 Kilo-ohms -> From schematic, R6 +#define OP_AMP_Rin_TS80 2000 // 2.0 Kilo-ohms -> From schematic, R3 + +#define OP_AMP_GAIN_STAGE_TS80 (1+(OP_AMP_Rf_TS80/OP_AMP_Rin_TS80)) + #ifdef MODEL_TS100 #define VOLTAGE_DIV 467 // 467 - Default divider from schematic #define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV #define PID_POWER_LIMIT 70 // Sets the max pwm power limit #define POWER_LIMIT 30 // 30 watts default limit #define MAX_POWER_LIMIT 65 // - #define POWER_LIMIT_STEPS 5 // - - /** - * TIP_GAIN = TIP_GAIN/1000 == uV per deg C constant of the tip - */ - #define OP_AMP_Rf 750*1000 // 750 Kilo-ohms -> From schematic, R1 - #define OP_AMP_Rin 2370 // 2.37 Kilo-ohms -> From schematic, R2 - #define TIP_GAIN 405 - + #define POWER_LIMIT_STEPS 5 // + #define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100 #endif #ifdef MODEL_TS80 @@ -105,11 +111,5 @@ #define POWER_LIMIT 24 // 24 watts default power limit #define MAX_POWER_LIMIT 30 // #define POWER_LIMIT_STEPS 2 - - /** - * TIP_GAIN = TIP_GAIN/1000 == uV per deg C constant of the tip - */ - #define OP_AMP_Rf 180*1000 // 180 Kilo-ohms -> From schematic, R6 - #define OP_AMP_Rin 2000 // 2.0 Kilo-ohms -> From schematic, R3 - #define TIP_GAIN 115 + #define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80 #endif