From b916e4ae2515b10ba6bb8ea053895199e80104db Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 24 Sep 2021 13:16:03 +1000 Subject: [PATCH 01/16] Add dfu-util dep --- Dockerfile | 7 ++++--- setup.sh | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4575064b..e52516f7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,9 +4,9 @@ LABEL maintainer="Ben V. Brown " WORKDIR /build # Add extra mirrors for options RUN echo "deb mirror://mirrors.ubuntu.com/mirrors.txt focal main restricted universe multiverse" > /etc/apt/sources.list && \ - echo "deb mirror://mirrors.ubuntu.com/mirrors.txt focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \ - echo "deb mirror://mirrors.ubuntu.com/mirrors.txt focal-security main restricted universe multiverse" >> /etc/apt/sources.list && \ - DEBIAN_FRONTEND=noninteractive apt-get update + echo "deb mirror://mirrors.ubuntu.com/mirrors.txt focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \ + echo "deb mirror://mirrors.ubuntu.com/mirrors.txt focal-security main restricted universe multiverse" >> /etc/apt/sources.list && \ + DEBIAN_FRONTEND=noninteractive apt-get update # Install dependencies to build the firmware RUN apt-get install -y \ make \ @@ -15,6 +15,7 @@ RUN apt-get install -y \ python3 \ python3-pip \ clang-format \ + dfu-util \ wget --no-install-recommends && \ apt-get clean RUN python3 -m pip install bdflib diff --git a/setup.sh b/setup.sh index b11b89cc..6db08bed 100644 --- a/setup.sh +++ b/setup.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e # Setup shell file to setup the environment on an ubuntu machine -sudo apt-get update && sudo apt-get install -y make bzip2 git python3 python3-pip wget +sudo apt-get update && sudo apt-get install -y make bzip2 git python3 python3-pip wget dfu-util python3 -m pip install bdflib black flake8 sudo mkdir -p /build cd /build From fcce18ff7a06e188c62c8e75551db060416921df Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 24 Sep 2021 13:16:10 +1000 Subject: [PATCH 02/16] Ubuntu doesnt appear to pack dfuse-pack --- source/dfuse-pack.py | 349 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 349 insertions(+) create mode 100755 source/dfuse-pack.py diff --git a/source/dfuse-pack.py b/source/dfuse-pack.py new file mode 100755 index 00000000..64c3ac3a --- /dev/null +++ b/source/dfuse-pack.py @@ -0,0 +1,349 @@ +#!/usr/bin/python + +# Written by Antonio Galea - 2010/11/18 +# Distributed under Gnu LGPL 3.0 +# see http://www.gnu.org/licenses/lgpl-3.0.txt + +import sys, struct, zlib, os +import binascii +from optparse import OptionParser + +try: + from intelhex import IntelHex +except ImportError: + IntelHex = None + +DEFAULT_DEVICE = "0x0483:0xdf11" +DEFAULT_NAME = b"ST..." + +# Prefix and Suffix sizes are derived from ST's DfuSe File Format Specification (UM0391), DFU revision 1.1a +PREFIX_SIZE = 11 +SUFFIX_SIZE = 16 + + +def named(tuple, names): + return dict(list(zip(names.split(), tuple))) + + +def consume(fmt, data, names): + n = struct.calcsize(fmt) + return named(struct.unpack(fmt, data[:n]), names), data[n:] + + +def cstring(bytestring): + return bytestring.partition(b"\0")[0] + + +def compute_crc(data): + return 0xFFFFFFFF & -zlib.crc32(data) - 1 + + +def parse(file, dump_images=False): + print('File: "%s"' % file) + data = open(file, "rb").read() + crc = compute_crc(data[:-4]) + prefix, data = consume("<5sBIB", data, "signature version size targets") + print( + "%(signature)s v%(version)d, image size: %(size)d, targets: %(targets)d" + % prefix + ) + for t in range(prefix["targets"]): + tprefix, data = consume( + "<6sBI255s2I", data, "signature altsetting named name size elements" + ) + tprefix["num"] = t + if tprefix["named"]: + tprefix["name"] = cstring(tprefix["name"]) + else: + tprefix["name"] = "" + print( + '%(signature)s %(num)d, alt setting: %(altsetting)s, name: "%(name)s", size: %(size)d, elements: %(elements)d' + % tprefix + ) + tsize = tprefix["size"] + target, data = data[:tsize], data[tsize:] + for e in range(tprefix["elements"]): + eprefix, target = consume("<2I", target, "address size") + eprefix["num"] = e + print(" %(num)d, address: 0x%(address)08x, size: %(size)d" % eprefix) + esize = eprefix["size"] + image, target = target[:esize], target[esize:] + if dump_images: + out = "%s.target%d.image%d.bin" % (file, t, e) + open(out, "wb").write(image) + print(' DUMPED IMAGE TO "%s"' % out) + if len(target): + print("target %d: PARSE ERROR" % t) + suffix = named( + struct.unpack("<4H3sBI", data[:SUFFIX_SIZE]), + "device product vendor dfu ufd len crc", + ) + print( + "usb: %(vendor)04x:%(product)04x, device: 0x%(device)04x, dfu: 0x%(dfu)04x, %(ufd)s, %(len)d, 0x%(crc)08x" + % suffix + ) + if crc != suffix["crc"]: + print("CRC ERROR: computed crc32 is 0x%08x" % crc) + data = data[SUFFIX_SIZE:] + if data: + print("PARSE ERROR") + + +def checkbin(binfile): + data = open(binfile, "rb").read() + if len(data) < SUFFIX_SIZE: + return + crc = compute_crc(data[:-4]) + suffix = named( + struct.unpack("<4H3sBI", data[-SUFFIX_SIZE:]), + "device product vendor dfu ufd len crc", + ) + if crc == suffix["crc"] and suffix["ufd"] == b"UFD": + print( + "usb: %(vendor)04x:%(product)04x, device: 0x%(device)04x, dfu: 0x%(dfu)04x, %(ufd)s, %(len)d, 0x%(crc)08x" + % suffix + ) + print("It looks like the file %s has a DFU suffix!" % binfile) + print("Please remove any DFU suffix and retry.") + sys.exit(1) + + +def build(file, targets, name=DEFAULT_NAME, device=DEFAULT_DEVICE): + data = b"" + for t, target in enumerate(targets): + tdata = b"" + for image in target: + tdata += ( + struct.pack("<2I", image["address"], len(image["data"])) + image["data"] + ) + ealt = image["alt"] + tdata = ( + struct.pack( + "<6sBI255s2I", b"Target", ealt, 1, name, len(tdata), len(target) + ) + + tdata + ) + data += tdata + data = ( + struct.pack( + "<5sBIB", b"DfuSe", 1, PREFIX_SIZE + len(data) + SUFFIX_SIZE, len(targets) + ) + + data + ) + v, d = [int(x, 0) & 0xFFFF for x in device.split(":", 1)] + data += struct.pack("<4H3sB", 0, d, v, 0x011A, b"UFD", SUFFIX_SIZE) + crc = compute_crc(data) + data += struct.pack(" Date: Fri, 24 Sep 2021 13:16:17 +1000 Subject: [PATCH 03/16] Add dfu file step --- source/Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/Makefile b/source/Makefile index 39eb601c..98ee60bc 100644 --- a/source/Makefile +++ b/source/Makefile @@ -31,6 +31,7 @@ HOST_CC := gcc endif HOST_OUTPUT_DIR=Objects/host +DEVICE_DFU_ADDRESS=0x08000000 # Enumerate all of the include directories APP_INC_DIR = ./Core/Inc @@ -100,6 +101,7 @@ CPUFLAGS= -mcpu=cortex-m3 \ -mfloat-abi=soft flash_size=64k bootldr_size=0x4000 +DEVICE_DFU_ADDRESS=0x08004000 endif ifeq ($(model),$(filter $(model),$(ALL_MHP30_MODELS))) @@ -128,6 +130,7 @@ CPUFLAGS= -mcpu=cortex-m3 \ -mfloat-abi=soft flash_size=128k bootldr_size=32k +DEVICE_DFU_ADDRESS=0x08008000 endif ifeq ($(model),$(ALL_PINE_MODELS)) $(info Building for Pine64 ) @@ -336,7 +339,7 @@ OUT_OBJS_S=$(addprefix $(OUTPUT_DIR)/,$(OBJS_S)) default : firmware-EN -firmware-%: $(HEXFILE_DIR)/$(model)_%.hex $(HEXFILE_DIR)/$(model)_%.bin +firmware-%: $(HEXFILE_DIR)/$(model)_%.hex $(HEXFILE_DIR)/$(model)_%.bin $(HEXFILE_DIR)/$(model)_%.dfu @true ALL_FIRMWARE_TARGETS=$(addprefix firmware-,$(ALL_LANGUAGES)) @@ -354,6 +357,9 @@ all: $(ALL_FIRMWARE_TARGETS) $(SIZE) --format=berkeley $< $(OBJCOPY) $< -O binary $@ +%.dfu : %.bin Makefile + python3 dfuse-pack.py -b $(DEVICE_DFU_ADDRESS)@0:$< -D 0x28E9:0x0189 $@ + $(HEXFILE_DIR)/$(model)_%.elf : \ $(OUT_OBJS_S) $(OUT_OBJS) $(OUT_OBJS_CPP) \ $(OUTPUT_DIR)/Core/Gen/Translation.%.o \ From b258ff3b3defd9cece3eb2b51944069b5986c34d Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 24 Sep 2021 13:17:12 +1000 Subject: [PATCH 04/16] Persist dfu files into github assets --- .github/workflows/push.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index c13445ff..ada2ba14 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -44,6 +44,7 @@ jobs: path: | source/Hexfile/${{ matrix.model }}_*.hex source/Hexfile/${{ matrix.model }}_*.bin + source/Hexfile/${{ matrix.model }}_*.dfu source/Hexfile/LICENSE source/Hexfile/LICENSE_RELEASE.md if-no-files-found: error @@ -89,6 +90,7 @@ jobs: path: | source/Hexfile/${{ matrix.model }}_*.hex source/Hexfile/${{ matrix.model }}_*.bin + source/Hexfile/${{ matrix.model }}_*.dfu source/Hexfile/LICENSE source/Hexfile/LICENSE_RELEASE.md if-no-files-found: error From f598b9a96f665692cfce700eabb04112217821e5 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 25 Sep 2021 09:50:55 +1000 Subject: [PATCH 05/16] Bin files are no longer required --- .github/workflows/push.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index ada2ba14..92f77bf3 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -43,7 +43,6 @@ jobs: name: ${{ matrix.model }} path: | source/Hexfile/${{ matrix.model }}_*.hex - source/Hexfile/${{ matrix.model }}_*.bin source/Hexfile/${{ matrix.model }}_*.dfu source/Hexfile/LICENSE source/Hexfile/LICENSE_RELEASE.md @@ -89,7 +88,6 @@ jobs: name: ${{ matrix.model }}_multi-lang path: | source/Hexfile/${{ matrix.model }}_*.hex - source/Hexfile/${{ matrix.model }}_*.bin source/Hexfile/${{ matrix.model }}_*.dfu source/Hexfile/LICENSE source/Hexfile/LICENSE_RELEASE.md From 2b390d68b41545c2a9baf3fa920afc17e4a057be Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 25 Sep 2021 09:58:33 +1000 Subject: [PATCH 06/16] Add visibility function --- source/Core/Inc/gui.hpp | 1 + source/Core/Src/gui.cpp | 90 ++++++++++++++++++++--------------------- 2 files changed, 46 insertions(+), 45 deletions(-) diff --git a/source/Core/Inc/gui.hpp b/source/Core/Inc/gui.hpp index e21f1e1a..fe1aee87 100644 --- a/source/Core/Inc/gui.hpp +++ b/source/Core/Inc/gui.hpp @@ -27,6 +27,7 @@ typedef struct { // return true if increment reached the maximum value bool (*const incrementHandler)(void); bool (*const draw)(void); + bool (*const isVisible)(void); // If this is set, we will automatically use the settings increment handler instead, set >= num settings to disable SettingsOptions autoSettingOption; } menuitem; diff --git a/source/Core/Src/gui.cpp b/source/Core/Src/gui.cpp index b1c5e25f..5d137dcd 100644 --- a/source/Core/Src/gui.cpp +++ b/source/Core/Src/gui.cpp @@ -134,15 +134,15 @@ const menuitem rootSettingsMenu[] { */ #if defined(POW_DC) || defined(POW_QC) - {0, settings_enterPowerMenu, settings_displayPowerMenu, SettingsOptions::SettingsOptionsLength}, /*Power*/ + {0, settings_enterPowerMenu, settings_displayPowerMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Power*/ #endif - {0, settings_enterSolderingMenu, settings_displaySolderingMenu, SettingsOptions::SettingsOptionsLength}, /*Soldering*/ - {0, settings_enterPowerSavingMenu, settings_displayPowerSavingMenu, SettingsOptions::SettingsOptionsLength}, /*Sleep Options Menu*/ - {0, settings_enterUIMenu, settings_displayUIMenu, SettingsOptions::SettingsOptionsLength}, /*UI Menu*/ - {0, settings_enterAdvancedMenu, settings_displayAdvancedMenu, SettingsOptions::SettingsOptionsLength}, /*Advanced Menu*/ - {0, settings_setLanguageSwitch, settings_displayLanguageSwitch, SettingsOptions::SettingsOptionsLength}, /*Language Switch*/ + {0, settings_enterSolderingMenu, settings_displaySolderingMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Soldering*/ + {0, settings_enterPowerSavingMenu, settings_displayPowerSavingMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Sleep Options Menu*/ + {0, settings_enterUIMenu, settings_displayUIMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*UI Menu*/ + {0, settings_enterAdvancedMenu, settings_displayAdvancedMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Advanced Menu*/ + {0, settings_setLanguageSwitch, settings_displayLanguageSwitch, nullptr, SettingsOptions::SettingsOptionsLength}, /*Language Switch*/ { - 0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength + 0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength } // end of menu marker. DO NOT REMOVE }; @@ -152,16 +152,16 @@ const menuitem powerMenu[] = { * Power Source */ #ifdef POW_DC - {SETTINGS_DESC(SettingsItemIndex::DCInCutoff), nullptr, settings_displayInputVRange, SettingsOptions::MinDCVoltageCells}, /*Voltage input*/ - {SETTINGS_DESC(SettingsItemIndex::MinVolCell), nullptr, settings_displayInputMinVRange, SettingsOptions::MinVoltageCells}, /*Minimum voltage input*/ + {SETTINGS_DESC(SettingsItemIndex::DCInCutoff), nullptr, settings_displayInputVRange, nullptr, SettingsOptions::MinDCVoltageCells}, /*Voltage input*/ + {SETTINGS_DESC(SettingsItemIndex::MinVolCell), nullptr, settings_displayInputMinVRange, nullptr, SettingsOptions::MinVoltageCells}, /*Minimum voltage input*/ #endif #ifdef POW_QC - {SETTINGS_DESC(SettingsItemIndex::QCMaxVoltage), nullptr, settings_displayQCInputV, SettingsOptions::QCIdealVoltage}, /*Voltage input*/ + {SETTINGS_DESC(SettingsItemIndex::QCMaxVoltage), nullptr, settings_displayQCInputV, nullptr, SettingsOptions::QCIdealVoltage}, /*Voltage input*/ #endif #ifdef POW_PD - {SETTINGS_DESC(SettingsItemIndex::PDNegTimeout), nullptr, settings_displayPDNegTimeout, SettingsOptions::PDNegTimeout}, /*PD timeout setup*/ + {SETTINGS_DESC(SettingsItemIndex::PDNegTimeout), nullptr, settings_displayPDNegTimeout, nullptr, SettingsOptions::PDNegTimeout}, /*PD timeout setup*/ #endif - {0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE + {0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE }; #endif const menuitem solderingMenu[] = { @@ -172,12 +172,12 @@ const menuitem solderingMenu[] = { * Temp change short step * Temp change long step */ - {SETTINGS_DESC(SettingsItemIndex::BoostTemperature), settings_setBoostTemp, settings_displayBoostTemp, SettingsOptions::SettingsOptionsLength}, /*Boost Temp*/ - {SETTINGS_DESC(SettingsItemIndex::AutoStart), nullptr, settings_displayAutomaticStartMode, SettingsOptions::AutoStartMode}, /*Auto start*/ - {SETTINGS_DESC(SettingsItemIndex::TempChangeShortStep), nullptr, settings_displayTempChangeShortStep, SettingsOptions::TempChangeShortStep}, /*Temp change short step*/ - {SETTINGS_DESC(SettingsItemIndex::TempChangeLongStep), nullptr, settings_displayTempChangeLongStep, SettingsOptions::TempChangeLongStep}, /*Temp change long step*/ - {SETTINGS_DESC(SettingsItemIndex::LockingMode), nullptr, settings_displayLockingMode, SettingsOptions::LockingMode}, /*Locking Mode*/ - {0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE + {SETTINGS_DESC(SettingsItemIndex::BoostTemperature), settings_setBoostTemp, settings_displayBoostTemp, nullptr, SettingsOptions::SettingsOptionsLength}, /*Boost Temp*/ + {SETTINGS_DESC(SettingsItemIndex::AutoStart), nullptr, settings_displayAutomaticStartMode, nullptr, SettingsOptions::AutoStartMode}, /*Auto start*/ + {SETTINGS_DESC(SettingsItemIndex::TempChangeShortStep), nullptr, settings_displayTempChangeShortStep, nullptr, SettingsOptions::TempChangeShortStep}, /*Temp change short step*/ + {SETTINGS_DESC(SettingsItemIndex::TempChangeLongStep), nullptr, settings_displayTempChangeLongStep, nullptr, SettingsOptions::TempChangeLongStep}, /*Temp change long step*/ + {SETTINGS_DESC(SettingsItemIndex::LockingMode), nullptr, settings_displayLockingMode, nullptr, SettingsOptions::LockingMode}, /*Locking Mode*/ + {0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE }; const menuitem UIMenu[] = { /* @@ -190,22 +190,22 @@ const menuitem UIMenu[] = { * Detailed IDLE * Detailed Soldering */ - {SETTINGS_DESC(SettingsItemIndex::TemperatureUnit), settings_setTempF, settings_displayTempF, + {SETTINGS_DESC(SettingsItemIndex::TemperatureUnit), settings_setTempF, settings_displayTempF, nullptr, SettingsOptions::SettingsOptionsLength}, /* Temperature units, this has to be the first element in the array to work with the logic in settings_enterUIMenu() */ #ifndef NO_DISPLAY_ROTATE - {SETTINGS_DESC(SettingsItemIndex::DisplayRotation), settings_setDisplayRotation, settings_displayDisplayRotation, SettingsOptions::SettingsOptionsLength}, /*Display Rotation*/ + {SETTINGS_DESC(SettingsItemIndex::DisplayRotation), settings_setDisplayRotation, settings_displayDisplayRotation, nullptr, SettingsOptions::SettingsOptionsLength}, /*Display Rotation*/ #endif - {SETTINGS_DESC(SettingsItemIndex::CooldownBlink), nullptr, settings_displayCoolingBlinkEnabled, SettingsOptions::CoolingTempBlink}, /*Cooling blink warning*/ - {SETTINGS_DESC(SettingsItemIndex::ScrollingSpeed), nullptr, settings_displayScrollSpeed, SettingsOptions::DescriptionScrollSpeed}, /*Scroll Speed for descriptions*/ - {SETTINGS_DESC(SettingsItemIndex::ReverseButtonTempChange), nullptr, settings_displayReverseButtonTempChangeEnabled, - SettingsOptions::ReverseButtonTempChangeEnabled}, /* Reverse Temp change buttons + - */ - {SETTINGS_DESC(SettingsItemIndex::AnimSpeed), nullptr, settings_displayAnimationSpeed, SettingsOptions::AnimationSpeed}, /*Animation Speed adjustment */ - {SETTINGS_DESC(SettingsItemIndex::AnimLoop), nullptr, settings_displayAnimationLoop, SettingsOptions::AnimationLoop}, /*Animation Loop switch */ - {SETTINGS_DESC(SettingsItemIndex::Brightness), nullptr, settings_displayBrightnessLevel, SettingsOptions::OLEDBrightness}, /*Brightness Level*/ - {SETTINGS_DESC(SettingsItemIndex::ColourInversion), nullptr, settings_displayInvertColor, SettingsOptions::OLEDInversion}, /*Invert screen colour*/ - {SETTINGS_DESC(SettingsItemIndex::AdvancedIdle), nullptr, settings_displayAdvancedIDLEScreens, SettingsOptions::DetailedIDLE}, /* Advanced idle screen*/ - {SETTINGS_DESC(SettingsItemIndex::AdvancedSoldering), nullptr, settings_displayAdvancedSolderingScreens, SettingsOptions::DetailedSoldering}, /* Advanced soldering screen*/ - {0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE + {SETTINGS_DESC(SettingsItemIndex::CooldownBlink), nullptr, settings_displayCoolingBlinkEnabled, nullptr, SettingsOptions::CoolingTempBlink}, /*Cooling blink warning*/ + {SETTINGS_DESC(SettingsItemIndex::ScrollingSpeed), nullptr, settings_displayScrollSpeed, nullptr, SettingsOptions::DescriptionScrollSpeed}, /*Scroll Speed for descriptions*/ + {SETTINGS_DESC(SettingsItemIndex::ReverseButtonTempChange), nullptr, settings_displayReverseButtonTempChangeEnabled, nullptr, + SettingsOptions::ReverseButtonTempChangeEnabled}, /* Reverse Temp change buttons + - */ + {SETTINGS_DESC(SettingsItemIndex::AnimSpeed), nullptr, settings_displayAnimationSpeed, nullptr, SettingsOptions::AnimationSpeed}, /*Animation Speed adjustment */ + {SETTINGS_DESC(SettingsItemIndex::AnimLoop), nullptr, settings_displayAnimationLoop, nullptr, SettingsOptions::AnimationLoop}, /*Animation Loop switch */ + {SETTINGS_DESC(SettingsItemIndex::Brightness), nullptr, settings_displayBrightnessLevel, nullptr, SettingsOptions::OLEDBrightness}, /*Brightness Level*/ + {SETTINGS_DESC(SettingsItemIndex::ColourInversion), nullptr, settings_displayInvertColor, nullptr, SettingsOptions::OLEDInversion}, /*Invert screen colour*/ + {SETTINGS_DESC(SettingsItemIndex::AdvancedIdle), nullptr, settings_displayAdvancedIDLEScreens, nullptr, SettingsOptions::DetailedIDLE}, /* Advanced idle screen*/ + {SETTINGS_DESC(SettingsItemIndex::AdvancedSoldering), nullptr, settings_displayAdvancedSolderingScreens, nullptr, SettingsOptions::DetailedSoldering}, /* Advanced soldering screen*/ + {0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE }; const menuitem PowerSavingMenu[] = { /* @@ -215,15 +215,15 @@ const menuitem PowerSavingMenu[] = { * Motion Sensitivity */ #ifndef NO_SLEEP_MODE - {SETTINGS_DESC(SettingsItemIndex::SleepTemperature), settings_setSleepTemp, settings_displaySleepTemp, SettingsOptions::SettingsOptionsLength}, /*Sleep Temp*/ - {SETTINGS_DESC(SettingsItemIndex::SleepTimeout), nullptr, settings_displaySleepTime, SettingsOptions::SleepTime}, /*Sleep Time*/ + {SETTINGS_DESC(SettingsItemIndex::SleepTemperature), settings_setSleepTemp, settings_displaySleepTemp, nullptr, SettingsOptions::SettingsOptionsLength}, /*Sleep Temp*/ + {SETTINGS_DESC(SettingsItemIndex::SleepTimeout), nullptr, settings_displaySleepTime, nullptr, SettingsOptions::SleepTime}, /*Sleep Time*/ #endif - {SETTINGS_DESC(SettingsItemIndex::ShutdownTimeout), nullptr, settings_displayShutdownTime, SettingsOptions::ShutdownTime}, /*Shutdown Time*/ - {SETTINGS_DESC(SettingsItemIndex::MotionSensitivity), nullptr, settings_displaySensitivity, SettingsOptions::Sensitivity}, /* Motion Sensitivity*/ + {SETTINGS_DESC(SettingsItemIndex::ShutdownTimeout), nullptr, settings_displayShutdownTime, nullptr, SettingsOptions::ShutdownTime}, /*Shutdown Time*/ + {SETTINGS_DESC(SettingsItemIndex::MotionSensitivity), nullptr, settings_displaySensitivity, nullptr, SettingsOptions::Sensitivity}, /* Motion Sensitivity*/ #ifdef HALL_SENSOR - {SETTINGS_DESC(SettingsItemIndex::HallEffSensitivity), nullptr, settings_displayHallEffect, SettingsOptions::HallEffectSensitivity}, /* HallEffect Sensitivity*/ + {SETTINGS_DESC(SettingsItemIndex::HallEffSensitivity), nullptr, settings_displayHallEffect, nullptr, SettingsOptions::HallEffectSensitivity}, /* HallEffect Sensitivity*/ #endif - {0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE + {0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE }; const menuitem advancedMenu[] = { @@ -238,14 +238,14 @@ const menuitem advancedMenu[] = { * Power Pulse Wait * Power Pulse Duration */ - {SETTINGS_DESC(SettingsItemIndex::PowerLimit), nullptr, settings_displayPowerLimit, SettingsOptions::PowerLimit}, /*Power limit*/ - {SETTINGS_DESC(SettingsItemIndex::SettingsReset), settings_setResetSettings, settings_displayResetSettings, SettingsOptions::SettingsOptionsLength}, /*Resets settings*/ - {SETTINGS_DESC(SettingsItemIndex::TemperatureCalibration), settings_setCalibrate, settings_displayCalibrate, SettingsOptions::SettingsOptionsLength}, /*Calibrate tip*/ - {SETTINGS_DESC(SettingsItemIndex::VoltageCalibration), settings_setCalibrateVIN, settings_displayCalibrateVIN, SettingsOptions::SettingsOptionsLength}, /*Voltage input cal*/ - {SETTINGS_DESC(SettingsItemIndex::PowerPulsePower), nullptr, settings_displayPowerPulse, SettingsOptions::KeepAwakePulse}, /*Power Pulse adjustment */ - {SETTINGS_DESC(SettingsItemIndex::PowerPulseWait), nullptr, settings_displayPowerPulseWait, SettingsOptions::KeepAwakePulseWait}, /*Power Pulse Wait adjustment*/ - {SETTINGS_DESC(SettingsItemIndex::PowerPulseDuration), nullptr, settings_displayPowerPulseDuration, SettingsOptions::KeepAwakePulseDuration}, /*Power Pulse Duration adjustment*/ - {0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE + {SETTINGS_DESC(SettingsItemIndex::PowerLimit), nullptr, settings_displayPowerLimit, nullptr, SettingsOptions::PowerLimit}, /*Power limit*/ + {SETTINGS_DESC(SettingsItemIndex::SettingsReset), settings_setResetSettings, settings_displayResetSettings, nullptr, SettingsOptions::SettingsOptionsLength}, /*Resets settings*/ + {SETTINGS_DESC(SettingsItemIndex::TemperatureCalibration), settings_setCalibrate, settings_displayCalibrate, nullptr, SettingsOptions::SettingsOptionsLength}, /*Calibrate tip*/ + {SETTINGS_DESC(SettingsItemIndex::VoltageCalibration), settings_setCalibrateVIN, settings_displayCalibrateVIN, nullptr, SettingsOptions::SettingsOptionsLength}, /*Voltage input cal*/ + {SETTINGS_DESC(SettingsItemIndex::PowerPulsePower), nullptr, settings_displayPowerPulse, nullptr, SettingsOptions::KeepAwakePulse}, /*Power Pulse adjustment */ + {SETTINGS_DESC(SettingsItemIndex::PowerPulseWait), nullptr, settings_displayPowerPulseWait, nullptr, SettingsOptions::KeepAwakePulseWait}, /*Power Pulse Wait adjustment*/ + {SETTINGS_DESC(SettingsItemIndex::PowerPulseDuration), nullptr, settings_displayPowerPulseDuration, nullptr, SettingsOptions::KeepAwakePulseDuration}, /*Power Pulse Duration adjustment*/ + {0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE }; /** From e8d26c3159713b5abec1f89ee12317dd98112a3f Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 25 Sep 2021 10:21:44 +1000 Subject: [PATCH 07/16] Draw no longer needs a return value --- source/Core/Inc/gui.hpp | 2 +- source/Core/Src/gui.cpp | 262 ++++++++++++++++------------------------ 2 files changed, 106 insertions(+), 158 deletions(-) diff --git a/source/Core/Inc/gui.hpp b/source/Core/Inc/gui.hpp index fe1aee87..2d9f8b05 100644 --- a/source/Core/Inc/gui.hpp +++ b/source/Core/Inc/gui.hpp @@ -26,7 +26,7 @@ typedef struct { uint8_t description; // return true if increment reached the maximum value bool (*const incrementHandler)(void); - bool (*const draw)(void); + void (*const draw)(void); bool (*const isVisible)(void); // If this is set, we will automatically use the settings increment handler instead, set >= num settings to disable SettingsOptions autoSettingOption; diff --git a/source/Core/Src/gui.cpp b/source/Core/Src/gui.cpp index 5d137dcd..39c7cd1d 100644 --- a/source/Core/Src/gui.cpp +++ b/source/Core/Src/gui.cpp @@ -17,71 +17,72 @@ void gui_Menu(const menuitem *menu); #ifdef POW_DC -static bool settings_displayInputVRange(void); -static bool settings_displayInputMinVRange(void); +static void settings_displayInputVRange(void); +static void settings_displayInputMinVRange(void); #endif #ifdef POW_QC -static bool settings_displayQCInputV(void); +static void settings_displayQCInputV(void); #endif #ifdef POW_PD -static bool settings_displayPDNegTimeout(void); +static void settings_displayPDNegTimeout(void); #endif #ifndef NO_SLEEP_MODE static bool settings_setSleepTemp(void); -static bool settings_displaySleepTemp(void); -static bool settings_displaySleepTime(void); +static void settings_displaySleepTemp(void); +static void settings_displaySleepTime(void); #endif -static bool settings_displayShutdownTime(void); -static bool settings_displaySensitivity(void); +static void settings_displayShutdownTime(void); +static void settings_displaySensitivity(void); static bool settings_setTempF(void); -static bool settings_displayTempF(void); -static bool settings_displayAdvancedSolderingScreens(void); -static bool settings_displayAdvancedIDLEScreens(void); -static bool settings_displayScrollSpeed(void); -static bool settings_displayPowerLimit(void); +static void settings_displayTempF(void); +static void settings_displayAdvancedSolderingScreens(void); +static void settings_displayAdvancedIDLEScreens(void); +static void settings_displayScrollSpeed(void); +static void settings_displayPowerLimit(void); #ifndef NO_DISPLAY_ROTATE static bool settings_setDisplayRotation(void); -static bool settings_displayDisplayRotation(void); +static void settings_displayDisplayRotation(void); #endif static bool settings_setBoostTemp(void); -static bool settings_displayBoostTemp(void); -static bool settings_displayAutomaticStartMode(void); -static bool settings_displayLockingMode(void); -static bool settings_displayCoolingBlinkEnabled(void); +static void settings_displayBoostTemp(void); +static void settings_displayAutomaticStartMode(void); +static void settings_displayLockingMode(void); +static void settings_displayCoolingBlinkEnabled(void); static bool settings_setResetSettings(void); -static bool settings_displayResetSettings(void); +static void settings_displayResetSettings(void); static bool settings_setCalibrate(void); -static bool settings_displayCalibrate(void); +static void settings_displayCalibrate(void); static bool settings_setCalibrateVIN(void); -static bool settings_displayCalibrateVIN(void); -static bool settings_displayReverseButtonTempChangeEnabled(void); -static bool settings_displayTempChangeShortStep(void); -static bool settings_displayTempChangeLongStep(void); -static bool settings_displayPowerPulse(void); -static bool settings_displayAnimationSpeed(void); -static bool settings_displayAnimationLoop(void); -static bool settings_displayPowerPulseWait(void); -static bool settings_displayPowerPulseDuration(void); -static bool settings_displayBrightnessLevel(void); -static bool settings_displayInvertColor(void); +static void settings_displayCalibrateVIN(void); +static void settings_displayReverseButtonTempChangeEnabled(void); +static void settings_displayTempChangeShortStep(void); +static void settings_displayTempChangeLongStep(void); +static void settings_displayPowerPulse(void); +static void settings_displayAnimationSpeed(void); +static void settings_displayAnimationLoop(void); +static void settings_displayPowerPulseWait(void); +static bool settings_showPowerPulseOptions(void); +static void settings_displayPowerPulseDuration(void); +static void settings_displayBrightnessLevel(void); +static void settings_displayInvertColor(void); #ifdef HALL_SENSOR -static bool settings_displayHallEffect(void); +static void settings_displayHallEffect(void); #endif // Menu functions #if defined(POW_DC) || defined(POW_QC) -static bool settings_displayPowerMenu(void); +static void settings_displayPowerMenu(void); static bool settings_enterPowerMenu(void); #endif -static bool settings_displaySolderingMenu(void); +static void settings_displaySolderingMenu(void); static bool settings_enterSolderingMenu(void); -static bool settings_displayPowerSavingMenu(void); +static void settings_displayPowerSavingMenu(void); static bool settings_enterPowerSavingMenu(void); -static bool settings_displayUIMenu(void); +static void settings_displayUIMenu(void); static bool settings_enterUIMenu(void); -static bool settings_displayAdvancedMenu(void); +static void settings_displayAdvancedMenu(void); static bool settings_enterAdvancedMenu(void); /* * Root Settings Menu @@ -136,11 +137,11 @@ const menuitem rootSettingsMenu[] { #if defined(POW_DC) || defined(POW_QC) {0, settings_enterPowerMenu, settings_displayPowerMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Power*/ #endif - {0, settings_enterSolderingMenu, settings_displaySolderingMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Soldering*/ - {0, settings_enterPowerSavingMenu, settings_displayPowerSavingMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Sleep Options Menu*/ - {0, settings_enterUIMenu, settings_displayUIMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*UI Menu*/ - {0, settings_enterAdvancedMenu, settings_displayAdvancedMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Advanced Menu*/ - {0, settings_setLanguageSwitch, settings_displayLanguageSwitch, nullptr, SettingsOptions::SettingsOptionsLength}, /*Language Switch*/ + {0, settings_enterSolderingMenu, settings_displaySolderingMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Soldering*/ + {0, settings_enterPowerSavingMenu, settings_displayPowerSavingMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Sleep Options Menu*/ + {0, settings_enterUIMenu, settings_displayUIMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*UI Menu*/ + {0, settings_enterAdvancedMenu, settings_displayAdvancedMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Advanced Menu*/ + {0, settings_setLanguageSwitch, settings_displayLanguageSwitch, settings_showLanguageSwitch, SettingsOptions::SettingsOptionsLength}, /*Language Switch*/ { 0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength } // end of menu marker. DO NOT REMOVE @@ -238,13 +239,14 @@ const menuitem advancedMenu[] = { * Power Pulse Wait * Power Pulse Duration */ - {SETTINGS_DESC(SettingsItemIndex::PowerLimit), nullptr, settings_displayPowerLimit, nullptr, SettingsOptions::PowerLimit}, /*Power limit*/ - {SETTINGS_DESC(SettingsItemIndex::SettingsReset), settings_setResetSettings, settings_displayResetSettings, nullptr, SettingsOptions::SettingsOptionsLength}, /*Resets settings*/ - {SETTINGS_DESC(SettingsItemIndex::TemperatureCalibration), settings_setCalibrate, settings_displayCalibrate, nullptr, SettingsOptions::SettingsOptionsLength}, /*Calibrate tip*/ - {SETTINGS_DESC(SettingsItemIndex::VoltageCalibration), settings_setCalibrateVIN, settings_displayCalibrateVIN, nullptr, SettingsOptions::SettingsOptionsLength}, /*Voltage input cal*/ - {SETTINGS_DESC(SettingsItemIndex::PowerPulsePower), nullptr, settings_displayPowerPulse, nullptr, SettingsOptions::KeepAwakePulse}, /*Power Pulse adjustment */ - {SETTINGS_DESC(SettingsItemIndex::PowerPulseWait), nullptr, settings_displayPowerPulseWait, nullptr, SettingsOptions::KeepAwakePulseWait}, /*Power Pulse Wait adjustment*/ - {SETTINGS_DESC(SettingsItemIndex::PowerPulseDuration), nullptr, settings_displayPowerPulseDuration, nullptr, SettingsOptions::KeepAwakePulseDuration}, /*Power Pulse Duration adjustment*/ + {SETTINGS_DESC(SettingsItemIndex::PowerLimit), nullptr, settings_displayPowerLimit, nullptr, SettingsOptions::PowerLimit}, /*Power limit*/ + {SETTINGS_DESC(SettingsItemIndex::SettingsReset), settings_setResetSettings, settings_displayResetSettings, nullptr, SettingsOptions::SettingsOptionsLength}, /*Resets settings*/ + {SETTINGS_DESC(SettingsItemIndex::TemperatureCalibration), settings_setCalibrate, settings_displayCalibrate, nullptr, SettingsOptions::SettingsOptionsLength}, /*Calibrate tip*/ + {SETTINGS_DESC(SettingsItemIndex::VoltageCalibration), settings_setCalibrateVIN, settings_displayCalibrateVIN, nullptr, SettingsOptions::SettingsOptionsLength}, /*Voltage input cal*/ + {SETTINGS_DESC(SettingsItemIndex::PowerPulsePower), nullptr, settings_displayPowerPulse, nullptr, SettingsOptions::KeepAwakePulse}, /*Power Pulse adjustment */ + {SETTINGS_DESC(SettingsItemIndex::PowerPulseWait), nullptr, settings_displayPowerPulseWait, settings_showPowerPulseOptions, SettingsOptions::KeepAwakePulseWait}, /*Power Pulse Wait adjustment*/ + {SETTINGS_DESC(SettingsItemIndex::PowerPulseDuration), nullptr, settings_displayPowerPulseDuration, settings_showPowerPulseOptions, + SettingsOptions::KeepAwakePulseDuration}, /*Power Pulse Duration adjustment*/ {0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE }; @@ -296,7 +298,7 @@ static int userConfirmation(const char *message) { } #ifdef POW_DC -static bool settings_displayInputVRange(void) { +static void settings_displayInputVRange(void) { printShortDescription(SettingsItemIndex::DCInCutoff, 6); if (getSettingValue(SettingsOptions::MinDCVoltageCells)) { @@ -305,10 +307,9 @@ static bool settings_displayInputVRange(void) { } else { OLED::print(SymbolDC, FontStyle::LARGE); } - return false; } -static bool settings_displayInputMinVRange(void) { +static void settings_displayInputMinVRange(void) { if (getSettingValue(SettingsOptions::MinDCVoltageCells)) { printShortDescription(SettingsItemIndex::MinVolCell, 4); OLED::printNumber(getSettingValue(SettingsOptions::MinVoltageCells) / 10, 2, FontStyle::LARGE); @@ -318,12 +319,11 @@ static bool settings_displayInputMinVRange(void) { printShortDescription(SettingsItemIndex::MinVolCell, 5); OLED::print(translatedString(Tr->SettingNAChar), FontStyle::LARGE); } - return false; } #endif #ifdef POW_QC -static bool settings_displayQCInputV(void) { +static void settings_displayQCInputV(void) { printShortDescription(SettingsItemIndex::QCMaxVoltage, 4); // These are only used in QC modes // Allows setting the voltage negotiated for QC @@ -332,14 +332,13 @@ static bool settings_displayQCInputV(void) { OLED::print(SymbolDot, FontStyle::LARGE); OLED::printNumber(voltage % 10, 1, FontStyle::LARGE); OLED::print(SymbolVolts, FontStyle::LARGE); - return false; } #endif #ifdef POW_PD -static bool settings_displayPDNegTimeout(void) { +static void settings_displayPDNegTimeout(void) { printShortDescription(SettingsItemIndex::PDNegTimeout, 5); auto value = getSettingValue(SettingsOptions::PDNegTimeout); if (value == 0) { @@ -347,7 +346,6 @@ static bool settings_displayPDNegTimeout(void) { } else { OLED::printNumber(value, 2, FontStyle::LARGE); } - return false; } #endif @@ -370,13 +368,12 @@ static bool settings_setSleepTemp(void) { } } -static bool settings_displaySleepTemp(void) { +static void settings_displaySleepTemp(void) { printShortDescription(SettingsItemIndex::SleepTemperature, 5); OLED::printNumber(getSettingValue(SettingsOptions::SleepTemp), 3, FontStyle::LARGE); - return false; } -static bool settings_displaySleepTime(void) { +static void settings_displaySleepTime(void) { printShortDescription(SettingsItemIndex::SleepTimeout, 5); if (getSettingValue(SettingsOptions::SleepTime) == 0) { OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); @@ -387,11 +384,10 @@ static bool settings_displaySleepTime(void) { OLED::printNumber(getSettingValue(SettingsOptions::SleepTime) - 5, 2, FontStyle::LARGE); OLED::print(SymbolMinutes, FontStyle::LARGE); } - return false; } #endif -static bool settings_displayShutdownTime(void) { +static void settings_displayShutdownTime(void) { printShortDescription(SettingsItemIndex::ShutdownTimeout, 5); if (getSettingValue(SettingsOptions::ShutdownTime) == 0) { OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); @@ -399,7 +395,6 @@ static bool settings_displayShutdownTime(void) { OLED::printNumber(getSettingValue(SettingsOptions::ShutdownTime), 2, FontStyle::LARGE); OLED::print(SymbolMinutes, FontStyle::LARGE); } - return false; } static bool settings_setTempF(void) { bool res = nextSettingValue(SettingsOptions::TemperatureInF); @@ -434,33 +429,29 @@ static bool settings_setTempF(void) { return res; } -static bool settings_displayTempF(void) { +static void settings_displayTempF(void) { printShortDescription(SettingsItemIndex::TemperatureUnit, 7); OLED::print((getSettingValue(SettingsOptions::TemperatureInF)) ? SymbolDegF : SymbolDegC, FontStyle::LARGE); - return false; } -static bool settings_displaySensitivity(void) { +static void settings_displaySensitivity(void) { printShortDescription(SettingsItemIndex::MotionSensitivity, 7); OLED::printNumber(getSettingValue(SettingsOptions::Sensitivity), 1, FontStyle::LARGE, false); - return false; } -static bool settings_displayAdvancedSolderingScreens(void) { +static void settings_displayAdvancedSolderingScreens(void) { printShortDescription(SettingsItemIndex::AdvancedSoldering, 7); OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedSoldering)); - return false; } -static bool settings_displayAdvancedIDLEScreens(void) { +static void settings_displayAdvancedIDLEScreens(void) { printShortDescription(SettingsItemIndex::AdvancedIdle, 7); OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedIDLE)); - return false; } -static bool settings_displayPowerLimit(void) { +static void settings_displayPowerLimit(void) { printShortDescription(SettingsItemIndex::PowerLimit, 5); if (getSettingValue(SettingsOptions::PowerLimit) == 0) { OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); @@ -468,13 +459,11 @@ static bool settings_displayPowerLimit(void) { OLED::printNumber(getSettingValue(SettingsOptions::PowerLimit), 2, FontStyle::LARGE); OLED::print(SymbolWatts, FontStyle::LARGE); } - return false; } -static bool settings_displayScrollSpeed(void) { +static void settings_displayScrollSpeed(void) { printShortDescription(SettingsItemIndex::ScrollingSpeed, 7); OLED::print(translatedString((getSettingValue(SettingsOptions::DescriptionScrollSpeed)) ? Tr->SettingFastChar : Tr->SettingSlowChar), FontStyle::LARGE); - return false; } #ifndef NO_DISPLAY_ROTATE @@ -496,7 +485,7 @@ static bool settings_setDisplayRotation(void) { return res; } -static bool settings_displayDisplayRotation(void) { +static void settings_displayDisplayRotation(void) { printShortDescription(SettingsItemIndex::DisplayRotation, 7); switch (getSettingValue(SettingsOptions::OrientationMode)) { @@ -513,7 +502,6 @@ static bool settings_displayDisplayRotation(void) { OLED::print(translatedString(Tr->SettingRightChar), FontStyle::LARGE); break; } - return false; } #endif static bool settings_setBoostTemp(void) { @@ -543,17 +531,16 @@ static bool settings_setBoostTemp(void) { return value == MAX_TEMP_C; } -static bool settings_displayBoostTemp(void) { +static void settings_displayBoostTemp(void) { printShortDescription(SettingsItemIndex::BoostTemperature, 5); if (getSettingValue(SettingsOptions::BoostTemp)) { OLED::printNumber(getSettingValue(SettingsOptions::BoostTemp), 3, FontStyle::LARGE); } else { OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); } - return false; } -static bool settings_displayAutomaticStartMode(void) { +static void settings_displayAutomaticStartMode(void) { printShortDescription(SettingsItemIndex::AutoStart, 7); switch (getSettingValue(SettingsOptions::AutoStartMode)) { @@ -573,10 +560,9 @@ static bool settings_displayAutomaticStartMode(void) { OLED::print(translatedString(Tr->SettingStartNoneChar), FontStyle::LARGE); break; } - return false; } -static bool settings_displayLockingMode(void) { +static void settings_displayLockingMode(void) { printShortDescription(SettingsItemIndex::LockingMode, 7); switch (getSettingValue(SettingsOptions::LockingMode)) { @@ -593,13 +579,11 @@ static bool settings_displayLockingMode(void) { OLED::print(translatedString(Tr->SettingLockDisableChar), FontStyle::LARGE); break; } - return false; } -static bool settings_displayCoolingBlinkEnabled(void) { +static void settings_displayCoolingBlinkEnabled(void) { printShortDescription(SettingsItemIndex::CooldownBlink, 7); OLED::drawCheckbox(getSettingValue(SettingsOptions::CoolingTempBlink)); - return false; } static bool settings_setResetSettings(void) { @@ -610,10 +594,7 @@ static bool settings_setResetSettings(void) { return false; } -static bool settings_displayResetSettings(void) { - printShortDescription(SettingsItemIndex::SettingsReset, 7); - return false; -} +static void settings_displayResetSettings(void) { printShortDescription(SettingsItemIndex::SettingsReset, 7); } static void setTipOffset() { uint16_t setoffset = 0; @@ -657,10 +638,7 @@ static bool settings_setCalibrate(void) { return false; } -static bool settings_displayCalibrate(void) { - printShortDescription(SettingsItemIndex::TemperatureCalibration, 5); - return false; -} +static void settings_displayCalibrate(void) { printShortDescription(SettingsItemIndex::TemperatureCalibration, 5); } static bool settings_setCalibrateVIN(void) { // Jump to the voltage calibration subscreen @@ -701,25 +679,22 @@ static bool settings_setCalibrateVIN(void) { return false; } -static bool settings_displayReverseButtonTempChangeEnabled(void) { +static void settings_displayReverseButtonTempChangeEnabled(void) { printShortDescription(SettingsItemIndex::ReverseButtonTempChange, 7); OLED::drawCheckbox(getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled)); - return false; } -static bool settings_displayTempChangeShortStep(void) { +static void settings_displayTempChangeShortStep(void) { printShortDescription(SettingsItemIndex::TempChangeShortStep, 6); OLED::printNumber(getSettingValue(SettingsOptions::TempChangeShortStep), 2, FontStyle::LARGE); - return false; } -static bool settings_displayTempChangeLongStep(void) { +static void settings_displayTempChangeLongStep(void) { printShortDescription(SettingsItemIndex::TempChangeLongStep, 6); OLED::printNumber(getSettingValue(SettingsOptions::TempChangeLongStep), 2, FontStyle::LARGE); - return false; } -static bool settings_displayPowerPulse(void) { +static void settings_displayPowerPulse(void) { printShortDescription(SettingsItemIndex::PowerPulsePower, 5); if (getSettingValue(SettingsOptions::KeepAwakePulse)) { OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulse) / 10, 1, FontStyle::LARGE); @@ -728,16 +703,14 @@ static bool settings_displayPowerPulse(void) { } else { OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); } - return false; } -static bool settings_displayAnimationLoop(void) { +static void settings_displayAnimationLoop(void) { printShortDescription(SettingsItemIndex::AnimLoop, 7); OLED::drawCheckbox(getSettingValue(SettingsOptions::AnimationLoop)); - return false; } -static bool settings_displayAnimationSpeed(void) { +static void settings_displayAnimationSpeed(void) { printShortDescription(SettingsItemIndex::AnimSpeed, 7); switch (getSettingValue(SettingsOptions::AnimationSpeed)) { case settingOffSpeed_t::SLOW: @@ -753,40 +726,29 @@ static bool settings_displayAnimationSpeed(void) { OLED::print(translatedString(Tr->SettingOffChar), FontStyle::LARGE); break; } - return false; } -static bool settings_displayPowerPulseWait(void) { - if (getSettingValue(SettingsOptions::KeepAwakePulse)) { - printShortDescription(SettingsItemIndex::PowerPulseWait, 7); - OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseWait), 1, FontStyle::LARGE); - return false; - } else { - return true; // skip - } +static bool settings_showPowerPulseOptions(void) { return getSettingValue(SettingsOptions::KeepAwakePulse) > 0; } +static void settings_displayPowerPulseWait(void) { + printShortDescription(SettingsItemIndex::PowerPulseWait, 7); + OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseWait), 1, FontStyle::LARGE); } -static bool settings_displayPowerPulseDuration(void) { - if (getSettingValue(SettingsOptions::KeepAwakePulse)) { - printShortDescription(SettingsItemIndex::PowerPulseDuration, 7); - OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseDuration), 1, FontStyle::LARGE); - return false; - } else { - return true; // skip - } +static void settings_displayPowerPulseDuration(void) { + printShortDescription(SettingsItemIndex::PowerPulseDuration, 7); + OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseDuration), 1, FontStyle::LARGE); } -static bool settings_displayBrightnessLevel(void) { +static void settings_displayBrightnessLevel(void) { OLED::drawArea(0, 0, 16, 16, brightnessIcon); OLED::setCursor(5 * FONT_12_WIDTH - 2, 0); // printShortDescription(SettingsItemIndex::Brightness, 7); OLED::printNumber(getSettingValue(SettingsOptions::OLEDBrightness), 3, FontStyle::LARGE); // While not optimal to apply this here, it is _very_ convienient OLED::setBrightness(getSettingValue(SettingsOptions::OLEDBrightness)); - return false; } -static bool settings_displayInvertColor(void) { +static void settings_displayInvertColor(void) { OLED::drawArea(0, 0, 24, 16, invertDisplayIcon); OLED::setCursor(7 * FONT_12_WIDTH - 2, 0); // printShortDescription(SettingsItemIndex::ColourInversion, 7); @@ -794,11 +756,10 @@ static bool settings_displayInvertColor(void) { OLED::drawCheckbox(getSettingValue(SettingsOptions::OLEDInversion)); // While not optimal to apply this here, it is _very_ convienient OLED::setInverseDisplay(getSettingValue(SettingsOptions::OLEDInversion)); - return false; } #ifdef HALL_SENSOR -static bool settings_displayHallEffect(void) { +static void settings_displayHallEffect(void) { printShortDescription(SettingsItemIndex::HallEffSensitivity, 7); switch (getSettingValue(SettingsOptions::HallEffectSensitivity)) { case 1: @@ -815,7 +776,6 @@ static bool settings_displayHallEffect(void) { OLED::print(translatedString(Tr->SettingSensitivityOff), FontStyle::LARGE); break; } - return false; } #endif @@ -860,53 +820,35 @@ static void displayMenu(size_t index) { } // Draw symbol // 16 pixel wide image - // 2 pixel wide scrolling indicator + // less 2 pixel wide scrolling indicator OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, (&SettingsMenuIcons[index][(16 * 2) * currentFrame])); } -static bool settings_displayCalibrateVIN(void) { - printShortDescription(SettingsItemIndex::VoltageCalibration, 5); - return false; -} +static void settings_displayCalibrateVIN(void) { printShortDescription(SettingsItemIndex::VoltageCalibration, 5); } #if defined(POW_DC) || defined(POW_QC) -static bool settings_displayPowerMenu(void) { - displayMenu(0); - return false; -} +static void settings_displayPowerMenu(void) { displayMenu(0); } static bool settings_enterPowerMenu(void) { gui_Menu(powerMenu); return false; } #endif -static bool settings_displaySolderingMenu(void) { - displayMenu(1); - return false; -} +static void settings_displaySolderingMenu(void) { displayMenu(1); } static bool settings_enterSolderingMenu(void) { gui_Menu(solderingMenu); return false; } -static bool settings_displayPowerSavingMenu(void) { - displayMenu(2); - return false; -} +static void settings_displayPowerSavingMenu(void) { displayMenu(2); } static bool settings_enterPowerSavingMenu(void) { gui_Menu(PowerSavingMenu); return false; } -static bool settings_displayUIMenu(void) { - displayMenu(3); - return false; -} +static void settings_displayUIMenu(void) { displayMenu(3); } static bool settings_enterUIMenu(void) { gui_Menu(HasFahrenheit ? UIMenu : UIMenu + 1); return false; } -static bool settings_displayAdvancedMenu(void) { - displayMenu(4); - return false; -} +static void settings_displayAdvancedMenu(void) { displayMenu(4); } static bool settings_enterAdvancedMenu(void) { gui_Menu(advancedMenu); return false; @@ -940,7 +882,11 @@ void gui_Menu(const menuitem *menu) { ScrollMessage scrollMessage; for (uint8_t i = 0; menu[i].draw != nullptr; i++) { - scrollContentSize += 1; + if (menu[i].isVisible == nullptr) { + scrollContentSize += 1; // Always visible + } else if (menu[i].isVisible()) { + scrollContentSize += 1; // Selectively visible and chosen to show + } } while ((menu[currentScreen].draw != nullptr) && earlyExit == false) { @@ -952,10 +898,12 @@ void gui_Menu(const menuitem *menu) { // to keep the primary framebuffer intact for the upcoming transition // animation. OLED::useSecondaryFramebuffer(true); - if (menu[currentScreen].draw()) { - currentScreen++; - OLED::useSecondaryFramebuffer(false); - continue; + if (menu[currentScreen].isVisible != nullptr) { + if (!menu[currentScreen].isVisible()) { + currentScreen++; + OLED::useSecondaryFramebuffer(false); + continue; + } } animOpenState = true; From 1bb9254365061e37882879906216b8a41aca78c1 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 25 Sep 2021 10:21:50 +1000 Subject: [PATCH 08/16] Update translation --- source/Core/Inc/Translation.h | 3 ++- source/Core/LangSupport/lang_multi.cpp | 5 +---- source/Core/LangSupport/lang_single.cpp | 5 ++--- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/source/Core/Inc/Translation.h b/source/Core/Inc/Translation.h index 4f601fb8..f90d606c 100644 --- a/source/Core/Inc/Translation.h +++ b/source/Core/Inc/Translation.h @@ -145,7 +145,8 @@ constexpr uint8_t settings_item_index(const SettingsItemIndex i) { return static const char *translatedString(uint16_t index); void prepareTranslations(); -bool settings_displayLanguageSwitch(void); +void settings_displayLanguageSwitch(void); +bool settings_showLanguageSwitch(void); bool settings_setLanguageSwitch(void); #endif /* TRANSLATION_H_ */ diff --git a/source/Core/LangSupport/lang_multi.cpp b/source/Core/LangSupport/lang_multi.cpp index c612d853..eea4176e 100644 --- a/source/Core/LangSupport/lang_multi.cpp +++ b/source/Core/LangSupport/lang_multi.cpp @@ -85,7 +85,4 @@ bool settings_setLanguageSwitch(void) { return selectedLangIndex == (LanguageCount - 1); } -bool settings_displayLanguageSwitch(void) { - OLED::printWholeScreen(translatedString(Tr->SettingsShortNames[static_cast(SettingsItemIndex::LanguageSwitch)])); - return false; -} +void settings_displayLanguageSwitch(void) { OLED::printWholeScreen(translatedString(Tr->SettingsShortNames[static_cast(SettingsItemIndex::LanguageSwitch)])); } diff --git a/source/Core/LangSupport/lang_single.cpp b/source/Core/LangSupport/lang_single.cpp index 75258521..019c0938 100644 --- a/source/Core/LangSupport/lang_single.cpp +++ b/source/Core/LangSupport/lang_single.cpp @@ -2,6 +2,5 @@ bool settings_setLanguageSwitch(void) { return false; } -bool settings_displayLanguageSwitch(void) { - return true; // skip -} +void settings_displayLanguageSwitch(void) {} +bool settings_showLanguageSwitch(void) { return false; } From c05d63edf785580919bc40ad0bbf03d330e9f482 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 25 Sep 2021 10:51:55 +1000 Subject: [PATCH 09/16] Update lang_multi.cpp --- source/Core/LangSupport/lang_multi.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/source/Core/LangSupport/lang_multi.cpp b/source/Core/LangSupport/lang_multi.cpp index eea4176e..fb3fbb41 100644 --- a/source/Core/LangSupport/lang_multi.cpp +++ b/source/Core/LangSupport/lang_multi.cpp @@ -85,4 +85,5 @@ bool settings_setLanguageSwitch(void) { return selectedLangIndex == (LanguageCount - 1); } +bool settings_showLanguageSwitch(void) { return true; } void settings_displayLanguageSwitch(void) { OLED::printWholeScreen(translatedString(Tr->SettingsShortNames[static_cast(SettingsItemIndex::LanguageSwitch)])); } From cadbd3883aafedd3952b2de52cc6ca98cec5df8f Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 25 Sep 2021 11:11:24 +1000 Subject: [PATCH 10/16] Update version.h --- source/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/version.h b/source/version.h index c7d32e68..675a009d 100644 --- a/source/version.h +++ b/source/version.h @@ -4,4 +4,4 @@ * i.e.: BUILD_VERSION = 'Rel. v2.08' --> Will generated to: 'v2.08.1a2b3c4' */ -#define BUILD_VERSION "v2.15" +#define BUILD_VERSION "v2.16" From 5105f916213e11cf867442328dbb0c5885aed476 Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Sat, 25 Sep 2021 03:13:16 +0200 Subject: [PATCH 11/16] Update GUIThread.cpp --- source/Core/Threads/GUIThread.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/Core/Threads/GUIThread.cpp b/source/Core/Threads/GUIThread.cpp index a3ba674c..470ab694 100644 --- a/source/Core/Threads/GUIThread.cpp +++ b/source/Core/Threads/GUIThread.cpp @@ -712,7 +712,7 @@ void showDebugMenu(void) { printVoltage(); break; case 10: - // Print PCB ID number + // Print ACC type OLED::print(AccelTypeNames[(int)DetectedAccelerometerVersion], FontStyle::SMALL); break; case 11: From 6742a7a0e04bde4fd1bf985630ba28dfa388160e Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 25 Sep 2021 11:32:03 +1000 Subject: [PATCH 12/16] Update documentation --- Documentation/Flashing.md | 16 ++++++++------- Documentation/History.md | 43 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/Documentation/Flashing.md b/Documentation/Flashing.md index 0fffd9b4..6551c235 100644 --- a/Documentation/Flashing.md +++ b/Documentation/Flashing.md @@ -83,9 +83,12 @@ Check the extension of your firmware, it should be `.RDY` now. ## Pinecil (Pine64) The MCU used in the Pinecil supports usb-dfu. + To enter DFU mode, hold the button at the back of the iron while connecting to usb over usb-c. Generally all usb controllers work, but some hubs have issues so avoiding hubs may be best. + Once the device is connected while holding the button, the screen will stay **off**. + This is normal, and then you can use the appropriate tool to load the .hex or .bin file as per your OS. You can also refer to the Pine64 [Wiki](https://wiki.pine64.org/wiki/Pinecil). @@ -95,22 +98,21 @@ You can also refer to the Pine64 [Wiki](https://wiki.pine64.org/wiki/Pinecil). Using `dfu-util` you can flash the firmware using a command line as such: ``` -dfu-util -d 28e9:0189 -a 0 -D Pinecil_EN.bin -s 0x08000000:mass-erase:force -``` - -If this command fails with `dfu-util: Error during special command "MASS_ERASE" get_status`, try this instead: - -``` -dfu-util -d 28e9:0189 -a 0 -D Pinecil_EN.bin -s 0x08000000 +dfu-util -D Pinecil_EN.dfu ``` ### Windows For windows the easiest tool to use is the vendors gui tool from [here](http://www.gd32mcu.com/download/down/document_id/176/path_type/1). + Should the link break, its called "GD32 MCU Dfu Tool" and can be grabbed from http://www.gd32mcu.com/en/download/. + You will also need the matching drivers from [here](http://www.gd32mcu.com/download/down/document_id/244/path_type/1) installed if you have not used gigadevice parts before. + These are called "GD32 Dfu Drivers" if the link breaks. +You can also use dfu-util if you wish to set it up, but that is better documented by others + ### FAQ #### [Miniware] The file is showing up with the extension `.ERR` diff --git a/Documentation/History.md b/Documentation/History.md index 2ae4639c..164be06f 100644 --- a/Documentation/History.md +++ b/Documentation/History.md @@ -1,5 +1,48 @@ # Version Changes +## V2.16 + +* Overhaul of the Timer+ADC setup with help from @sandmanRO +* Overhaul of the PID with help from @sandmanRO +* Settings _should_ now upgrade in place to future versions, with resets only happening to new/changed settings +* Shows error if tip runaway (failed temperature sensor) is detected +* USB-PD now has a timeout, to allow forcing QC3 negotiation to start faster +* QC3 Voltages are now adjustable to user desired setpoint +* Added a small tolerance to allow "overvoltage" on QC3 above unit specifications. +* * Please note: Doing this is entirely at your own risk! +* New Advanced view that is much nicer to use and a very good daily driver option from @Mel-kior +* OLED brightness and contrast thanks to @alvinhochun +* Scrollbar is fixed so it doesnt jump around when menus are shown/hidden +* Moved to `.dfu` files from `.bin` to make flashing commands easier +* Every language had translation updates I believe +* Romainian language added + + +## V2.15 + + +## Feature upgrades: + +* MHP30 support +* Multi-lingual firmware combinations now exist for Pinecil +* More fine grained voltage controlled options +* USB-PD improvements (version one and two) +* More configuration options for power pulse +* All font / character encoding has been very reworked +* More translation updates than one can count +* More languages 😱 + +### MHP30 + +The MHP30 is a small reflow station from Miniware. +Thanks to a massive amount of help from @g3gg0 this firmware brings the beginnings of support for this unit. +Also kudo's to @Vinigas and @GoJian for helping with testing. +This is not a _final_ version I'm sure, but this is a working, usable version of firmware support. +Programs the same as any one Miniware unit using drag and drop. +**Note: The boot logo scripts will need updates for this unit, so not supported yet.** + +The flood doors are now open for feature requests for this unit :) + ## V2.14 - Fixing auto rotation bug in the LIS accelerometer in the TS80/TS80P From e0ccc695bb72a155155406389503989a7b4ed3fc Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 25 Sep 2021 11:37:16 +1000 Subject: [PATCH 13/16] Fix VID/PID for dapboot --- source/Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/Makefile b/source/Makefile index 98ee60bc..e3337762 100644 --- a/source/Makefile +++ b/source/Makefile @@ -32,7 +32,7 @@ endif HOST_OUTPUT_DIR=Objects/host DEVICE_DFU_ADDRESS=0x08000000 - +DEVICE_DFU_VID_PID=0x28E9:0x0189 # Enumerate all of the include directories APP_INC_DIR = ./Core/Inc BRIEFLZ_INC_DIR = ./Core/brieflz @@ -102,6 +102,7 @@ CPUFLAGS= -mcpu=cortex-m3 \ flash_size=64k bootldr_size=0x4000 DEVICE_DFU_ADDRESS=0x08004000 +DEVICE_DFU_VID_PID=0x1209:0xDB42 endif ifeq ($(model),$(filter $(model),$(ALL_MHP30_MODELS))) @@ -131,6 +132,7 @@ CPUFLAGS= -mcpu=cortex-m3 \ flash_size=128k bootldr_size=32k DEVICE_DFU_ADDRESS=0x08008000 +DEVICE_DFU_VID_PID=0x1209:0xDB42 endif ifeq ($(model),$(ALL_PINE_MODELS)) $(info Building for Pine64 ) @@ -358,7 +360,7 @@ all: $(ALL_FIRMWARE_TARGETS) $(OBJCOPY) $< -O binary $@ %.dfu : %.bin Makefile - python3 dfuse-pack.py -b $(DEVICE_DFU_ADDRESS)@0:$< -D 0x28E9:0x0189 $@ + python3 dfuse-pack.py -b $(DEVICE_DFU_ADDRESS)@0:$< -D $(DEVICE_DFU_VID_PID) $@ $(HEXFILE_DIR)/$(model)_%.elf : \ $(OUT_OBJS_S) $(OUT_OBJS) $(OUT_OBJS_CPP) \ From 674e0f265d2a8746f574243e369b6a1d55964696 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 25 Sep 2021 11:44:51 +1000 Subject: [PATCH 14/16] Update History.md --- Documentation/History.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/History.md b/Documentation/History.md index 164be06f..e61745d5 100644 --- a/Documentation/History.md +++ b/Documentation/History.md @@ -15,7 +15,7 @@ * Scrollbar is fixed so it doesnt jump around when menus are shown/hidden * Moved to `.dfu` files from `.bin` to make flashing commands easier * Every language had translation updates I believe -* Romainian language added +* Romanian language added ## V2.15 From 71a3e021d7eb771a42a63414500ba5fe0639690c Mon Sep 17 00:00:00 2001 From: Marek Kraus Date: Sat, 25 Sep 2021 10:31:24 +0200 Subject: [PATCH 15/16] Update translation_SK.json --- Translations/translation_SK.json | 545 +++++++++++++++++++------------ 1 file changed, 334 insertions(+), 211 deletions(-) diff --git a/Translations/translation_SK.json b/Translations/translation_SK.json index ea944b95..bc46e8ea 100644 --- a/Translations/translation_SK.json +++ b/Translations/translation_SK.json @@ -1,213 +1,336 @@ { - "languageCode": "SK", - "languageLocalName": "Slovenčina", - "fonts": ["ascii_basic", "latin_extended"], - "messages": { - "SettingsCalibrationDone": "Kalibrácia hotová!", - "SettingsCalibrationWarning": "Najprv sa prosím uistite, že hrot má izbovú teplotu!", - "SettingsResetWarning": "Naozaj chcete obnovit továrenské nastavenia?", - "UVLOWarningString": "Nízke U!", - "UndervoltageString": "Nízke napätie", - "InputVoltageString": "Vstupné U: ", - "WarningTipTempString": "Tep. hrotu: ", - "BadTipString": "ZLÝ HROT", - "SleepingSimpleString": "Chrr", - "SleepingAdvancedString": "Pokojový režim..", - "WarningSimpleString": "PÁLI", - "WarningAdvancedString": "HROT JE HORÚCI !", - "SleepingTipAdvancedString": "Hrot:", - "IdleTipString": "Hrot:", - "IdleSetString": "Cieľ:", - "TipDisconnectedString": "HROT ODPOJENÝ", - "SolderingAdvancedPowerPrompt": "Výkon: ", - "OffString": "Vyp", - "YourGainMessage": "Zisk:" - }, - "messagesWarn": { - "ResetOKMessage": "Reset OK", - "SettingsResetMessage": ["Tov. nas. obnov.", ""], - "NoAccelerometerMessage": ["Bez pohyb. senz.", ""], - "NoPowerDeliveryMessage": ["Chýba čip USB-PD", ""], - "LockingKeysString": "ZABLOK.", - "UnlockingKeysString": "ODBLOK.", - "WarningKeysLockedString": "!ZABLOK!", - "WarningThermalRunaway": ["Thermal", "Runaway"] - }, - "characters": { - "SettingRightChar": "P", - "SettingLeftChar": "L", - "SettingAutoChar": "A", - "SettingOffChar": "Z", - "SettingSlowChar": "P", - "SettingMediumChar": "M", - "SettingFastChar": "R", - "SettingStartNoneChar": "V", - "SettingStartSolderingChar": "Z", - "SettingStartSleepChar": "S", - "SettingStartSleepOffChar": "I", - "SettingSensitivityOff": "Z", - "SettingSensitivityLow": "N", - "SettingSensitivityMedium": "S", - "SettingSensitivityHigh": "V", - "SettingLockDisableChar": "Z", - "SettingLockBoostChar": "B", - "SettingLockFullChar": "P", - "SettingNAChar": "N/A" - }, - "menuGroups": { - "PowerMenu": { - "text2": ["Power", "settings"], - "desc": "Power settings" - }, - "SolderingMenu": { - "text2": ["Nastavenie", "spájkovania"], - "desc": "Nastavenie spájkovania" - }, - "PowerSavingMenu": { - "text2": ["Úsporný", "režim"], - "desc": "Nastavenia režimov úspory energie" - }, - "UIMenu": { - "text2": ["Nastavenie", "zobrazenia"], - "desc": "Nastavenie zobrazenia" - }, - "AdvancedMenu": { - "text2": ["Pokročilé", "nastavenia"], - "desc": "Pokročilé nastavenia" - } - }, - "menuOptions": { - "DCInCutoff": { - "text2": ["Zdroj", "napätia"], - "desc": "Zdroj napätia. Nastavenie napätia pre vypnutie (cutoff) (DC=10V | nS=n*3.3V pre LiIon články)" - }, - "SleepTemperature": { - "text2": ["Pokojová", "teplota"], - "desc": "Pokojová teplota (v nastavených jednotkách)" - }, - "SleepTimeout": { - "text2": ["Pokojový", "režim po"], - "desc": "Pokojový režim po (S=sekundách | M=minútach)" - }, - "ShutdownTimeout": { - "text2": ["Vypnutie", "po"], - "desc": "Čas na vypnutie (minúty)" - }, - "MotionSensitivity": { - "text2": ["Citlivosť", "pohybu"], - "desc": "Citlivosť detekcie pohybu (0=Vyp | 1=Min | ... | 9=Max)" - }, - "TemperatureUnit": { - "text2": ["Jednotka", "teploty"], - "desc": "Jednotky merania teploty (C=stupne Celzia | F=stupne Fahrenheita)" - }, - "AdvancedIdle": { - "text2": ["Detaily v", "pokoj. režime"], - "desc": "Zobraziť detailné informácie v pokojovom režime (T=Zap | F=Vyp)" - }, - "DisplayRotation": { - "text2": ["Orientácia", "displeja"], - "desc": "Orientácia displeja (P=Pravák | L=Ľavák | A=Auto)" - }, - "BoostTemperature": { - "text2": ["Boost", "teplota"], - "desc": "Cieľová teplota pre prudký náhrev (v nastavených jednotkách)" - }, - "AutoStart": { - "text2": ["Automatické", "spustenie"], - "desc": "Pri štarte spustiť režim spájkovania (V=Vyp | Z=Spájkovanie | S=Spanok | I=Spanok izbová teplota)" - }, - "CooldownBlink": { - "text2": ["Blikanie pri", "chladnutí"], - "desc": "Blikanie ukazovateľa teploty počas chladnutia hrotu" - }, - "TemperatureCalibration": { - "text2": ["Kalibrácia", "teploty"], - "desc": "Kalibrácia posunu teploty hrotu" - }, - "SettingsReset": { - "text2": ["Obnovenie", "nastavení"], - "desc": "Obnovenie nastavení na pôvodné hodnoty" - }, - "VoltageCalibration": { - "text2": ["Kalibrácia", "nap. napätia"], - "desc": "Kalibrácia napájacieho napätia. Krátke stlačenie mení nastavenie, dlhé stlačenie pre návrat" - }, - "AdvancedSoldering": { - "text2": ["Detaily počas", "spájkovania"], - "desc": "Zobrazenie detailov počas spájkovania" - }, - "ScrollingSpeed": { - "text2": ["Rýchlosť", "skrolovania"], - "desc": "Rýchlosť pohybu tohto textu" - }, - "QCMaxVoltage": { - "text2": ["Obmedzenie", "výkonu"], - "desc": "Obmedzenie výkonu podľa použitého zdroja" - }, - "PDNegTimeout": { - "text2": ["PD", "timeout"], - "desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers (0: disabled)" - }, - "PowerLimit": { - "text2": ["Obmedzenie", "výkonu"], - "desc": "Obmedzenie výkonu podľa použitého zdroja (watt)" - }, - "ReverseButtonTempChange": { - "text2": ["Otočenie", "tlačidiel +/-"], - "desc": "Prehodenie tlačidiel na nastavovanie teploty" - }, - "TempChangeShortStep": { - "text2": ["Malý krok", "teploty"], - "desc": "Zmena teploty pri krátkom stlačení tlačidla" - }, - "TempChangeLongStep": { - "text2": ["Veľký krok", "teploty"], - "desc": "Zmena teploty pri držaní tlačidla" - }, - "PowerPulsePower": { - "text2": ["Intenzita", "impulzu"], - "desc": "Impulz udržujúci napájací zdroj zapnutý (power banky) (watt)" - }, - "HallEffSensitivity": { - "text2": ["Citliv.", "Hall"], - "desc": "Citlivosť Halloveho senzora pre detekciu spánku (Z=Zakázať | N=Nízka | S=Stredná | V=Vysoká)" - }, - "LockingMode": { - "text2": ["Povoliť zámok", "tlačidiel"], - "desc": "Zamknutie tlačidiel - dlhé stlačenie oboch naraz počas spájkovania (Z=Zakázať | B=Okrem boost | P=Plné zamknutie)" - }, - "MinVolCell": { - "text2": ["Minimum", "voltage"], - "desc": "Minimum allowed voltage per cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)" - }, - "AnimLoop": { - "text2": ["Anim.", "loop"], - "desc": "Loop icon animations in root menu" - }, - "AnimSpeed": { - "text2": ["Anim.", "speed"], - "desc": "Speed of icon animations in menu (O=off | L=low | M=medium | H=high)" - }, - "PowerPulseWait": { - "text2": ["Power pulse", "wait time"], - "desc": "Time to wait before triggering every keep-awake pulse (x 2.5s)" - }, - "PowerPulseDuration": { - "text2": ["Power pulse", "duration"], - "desc": "Keep-awake-pulse duration (x 250ms)" - }, - "LanguageSwitch": { - "text2": ["Jazyk:", " SK Slovenčina"], - "desc": "" - }, - "Brightness": { - "text2": ["Screen", "Brightness"], - "desc": "Adjust the contrast/brightness of the OLED screen" - }, - "ColourInversion": { - "text2": ["Screen", "Invert"], - "desc": "Invert the colours of the OLED screen" - } - } + "languageCode": "SK", + "languageLocalName": "Slovenčina", + "fonts": [ + "ascii_basic", + "latin_extended" + ], + "messages": { + "SettingsCalibrationWarning": "Najprv sa prosím uistite, že hrot má izbovú teplotu!", + "SettingsResetWarning": "Naozaj chcete obnoviť továrenské nastavenia?", + "UVLOWarningString": "Nízke U!", + "UndervoltageString": "Nízke napätie", + "InputVoltageString": "Vstupné U: ", + "SleepingSimpleString": "Chrr", + "SleepingAdvancedString": "Pokojový režim..", + "SleepingTipAdvancedString": "Hrot:", + "IdleTipString": "Hrot:", + "IdleSetString": "Cieľ:", + "TipDisconnectedString": "HROT ODPOJENÝ", + "SolderingAdvancedPowerPrompt": "Výkon: ", + "OffString": "Vyp" + }, + "messagesWarn": { + "ResetOKMessage": "Reset OK", + "SettingsResetMessage": [ + "Nastavenia", + "resetované" + ], + "NoAccelerometerMessage": [ + "Bez pohyb.", + "senzora" + ], + "NoPowerDeliveryMessage": [ + "Chýba čip", + "USB-PD" + ], + "LockingKeysString": "ZABLOK.", + "UnlockingKeysString": "ODBLOK.", + "WarningKeysLockedString": "!ZABLOK!", + "WarningThermalRunaway": [ + "Únik", + "Tepla" + ] + }, + "characters": { + "SettingRightChar": "P", + "SettingLeftChar": "L", + "SettingAutoChar": "A", + "SettingOffChar": "Z", + "SettingSlowChar": "P", + "SettingMediumChar": "S", + "SettingFastChar": "R", + "SettingStartNoneChar": "V", + "SettingStartSolderingChar": "Z", + "SettingStartSleepChar": "S", + "SettingStartSleepOffChar": "I", + "SettingSensitivityOff": "Z", + "SettingSensitivityLow": "N", + "SettingSensitivityMedium": "S", + "SettingSensitivityHigh": "V", + "SettingLockDisableChar": "Z", + "SettingLockBoostChar": "B", + "SettingLockFullChar": "P", + "SettingNAChar": "N/A" + }, + "menuGroups": { + "PowerMenu": { + "text2": [ + "Nastavenie", + "výkonu" + ], + "desc": "Nastavenie výkonu" + }, + "SolderingMenu": { + "text2": [ + "Nastavenie", + "spájkovania" + ], + "desc": "Nastavenie spájkovania" + }, + "PowerSavingMenu": { + "text2": [ + "Úsporný", + "režim" + ], + "desc": "Nastavenia režimov úspory energie" + }, + "UIMenu": { + "text2": [ + "Nastavenie", + "zobrazenia" + ], + "desc": "Nastavenie zobrazenia" + }, + "AdvancedMenu": { + "text2": [ + "Pokročilé", + "nastavenia" + ], + "desc": "Pokročilé nastavenia" + } + }, + "menuOptions": { + "DCInCutoff": { + "text2": [ + "Zdroj", + "napätia" + ], + "desc": "Zdroj napätia. Nastavenie napätia pre vypnutie (cutoff) (DC=10V | nS=n*3.3V pre LiIon články)" + }, + "SleepTemperature": { + "text2": [ + "Pokojová", + "teplota" + ], + "desc": "Pokojová teplota (v nastavených jednotkách)" + }, + "SleepTimeout": { + "text2": [ + "Pokojový", + "režim po" + ], + "desc": "Pokojový režim po (S=sekundách | M=minútach)" + }, + "ShutdownTimeout": { + "text2": [ + "Vypnutie", + "po" + ], + "desc": "Čas na vypnutie (minúty)" + }, + "MotionSensitivity": { + "text2": [ + "Citlivosť", + "pohybu" + ], + "desc": "Citlivosť detekcie pohybu (0=Vyp | 1=Min | ... | 9=Max)" + }, + "TemperatureUnit": { + "text2": [ + "Jednotka", + "teploty" + ], + "desc": "Jednotky merania teploty (C=stupne Celzia | F=stupne Fahrenheita)" + }, + "AdvancedIdle": { + "text2": [ + "Detaily v", + "pokoj. režime" + ], + "desc": "Zobraziť detailné informácie v pokojovom režime (T=Zap | F=Vyp)" + }, + "DisplayRotation": { + "text2": [ + "Orientácia", + "displeja" + ], + "desc": "Orientácia displeja (P=Pravák | L=Ľavák | A=Auto)" + }, + "BoostTemperature": { + "text2": [ + "Boost", + "teplota" + ], + "desc": "Cieľová teplota pre prudký náhrev (v nastavených jednotkách)" + }, + "AutoStart": { + "text2": [ + "Automatické", + "spustenie" + ], + "desc": "Pri štarte spustiť režim spájkovania (V=Vyp | Z=Spájkovanie | S=Spanok | I=Spanok izbová teplota)" + }, + "CooldownBlink": { + "text2": [ + "Blikanie pri", + "chladnutí" + ], + "desc": "Blikanie ukazovateľa teploty počas chladnutia hrotu" + }, + "TemperatureCalibration": { + "text2": [ + "Kalibrácia", + "teploty" + ], + "desc": "Kalibrácia posunu teploty hrotu" + }, + "SettingsReset": { + "text2": [ + "Obnovenie", + "nastavení" + ], + "desc": "Obnovenie nastavení na pôvodné hodnoty" + }, + "VoltageCalibration": { + "text2": [ + "Kalibrácia", + "nap. napätia" + ], + "desc": "Kalibrácia napájacieho napätia. Krátke stlačenie mení nastavenie, dlhé stlačenie pre návrat" + }, + "AdvancedSoldering": { + "text2": [ + "Detaily počas", + "spájkovania" + ], + "desc": "Zobrazenie detailov počas spájkovania" + }, + "ScrollingSpeed": { + "text2": [ + "Rýchlosť", + "skrolovania" + ], + "desc": "Rýchlosť pohybu tohto textu" + }, + "QCMaxVoltage": { + "text2": [ + "Obmedzenie QC", + "napätia" + ], + "desc": "Maximálne QC napätie ktoré si má systém vyžiadať" + }, + "PDNegTimeout": { + "text2": [ + "Čas PD", + "vypršania" + ], + "desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers (0: disabled)" + }, + "PowerLimit": { + "text2": [ + "Obmedzenie", + "výkonu" + ], + "desc": "Obmedzenie výkonu podľa použitého zdroja (watt)" + }, + "ReverseButtonTempChange": { + "text2": [ + "Otočenie", + "tlačidiel +/-" + ], + "desc": "Prehodenie tlačidiel na nastavovanie teploty" + }, + "TempChangeShortStep": { + "text2": [ + "Malý krok", + "teploty" + ], + "desc": "Zmena teploty pri krátkom stlačení tlačidla" + }, + "TempChangeLongStep": { + "text2": [ + "Veľký krok", + "teploty" + ], + "desc": "Zmena teploty pri držaní tlačidla" + }, + "PowerPulsePower": { + "text2": [ + "Intenzita", + "impulzu" + ], + "desc": "Impulz udržujúci napájací zdroj zapnutý (power banky) (watt)" + }, + "HallEffSensitivity": { + "text2": [ + "Citliv.", + "Hall" + ], + "desc": "Citlivosť Halloveho senzora pre detekciu spánku (Z=Zakázať | N=Nízka | S=Stredná | V=Vysoká)" + }, + "LockingMode": { + "text2": [ + "Povoliť zámok", + "tlačidiel" + ], + "desc": "Zamknutie tlačidiel - dlhé stlačenie oboch naraz počas spájkovania (Z=Zakázať | B=Okrem boost | P=Plné zamknutie)" + }, + "MinVolCell": { + "text2": [ + "Minimálne", + "napätie" + ], + "desc": "Minimálne napätie povolené na jeden článok (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)" + }, + "AnimLoop": { + "text2": [ + "Anim.", + "loop" + ], + "desc": "Loop icon animations in root menu" + }, + "AnimSpeed": { + "text2": [ + "Anim.", + "rýchlosť" + ], + "desc": "Rýchlosť animácií ikoniek v menu (O=off | P=pomaly | S=stredne | R=rýchlo)" + }, + "PowerPulseWait": { + "text2": [ + "Power pulse", + "wait time" + ], + "desc": "Time to wait before triggering every keep-awake pulse (x 2.5s)" + }, + "PowerPulseDuration": { + "text2": [ + "Power pulse", + "duration" + ], + "desc": "Keep-awake-pulse duration (x 250ms)" + }, + "LanguageSwitch": { + "text2": [ + "Jazyk:", + " SK Slovenčina" + ], + "desc": "Aktuálny jazyk" + }, + "Brightness": { + "text2": [ + "Jas", + "obrazovky" + ], + "desc": "Mení jas/kontrast OLED displeja" + }, + "ColourInversion": { + "text2": [ + "Invertovať", + "obrazovku" + ], + "desc": "Invertovať farby OLED displeja" + } + } } From 512eff2e741649e5dfda71b42d3d6a92463f1702 Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Sat, 25 Sep 2021 21:34:48 +0200 Subject: [PATCH 16/16] Update translation_DE.json --- Translations/translation_DE.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Translations/translation_DE.json b/Translations/translation_DE.json index 09bddbbb..5f5b7bff 100644 --- a/Translations/translation_DE.json +++ b/Translations/translation_DE.json @@ -4,25 +4,19 @@ "fonts": ["ascii_basic", "latin_extended"], "tempUnitFahrenheit": false, "messages": { - "SettingsCalibrationDone": "Kalibrierung abgeschlossen!", "SettingsCalibrationWarning": "Vor dem Fortfahren muss die Lötspitze vollständig abgekühlt sein!", "SettingsResetWarning": "Sicher, dass alle Werte zurückgesetzt werden sollen?", "UVLOWarningString": "V niedr.", "UndervoltageString": "Unterspannung", "InputVoltageString": "V Eingang: ", - "WarningTipTempString": "Temperatur: ", - "BadTipString": "Spitze Defekt", "SleepingSimpleString": "Zzzz", "SleepingAdvancedString": "Ruhemodus...", - "WarningSimpleString": "HEISS!", - "WarningAdvancedString": "! Achtung Heiß !", "SleepingTipAdvancedString": "Temp:", "IdleTipString": "Ist:", "IdleSetString": " Soll:", "TipDisconnectedString": "Spitze fehlt", "SolderingAdvancedPowerPrompt": "Leistung: ", "OffString": "Aus", - "YourGainMessage": "Dein Faktor:" }, "messagesWarn": { "ResetOKMessage": "Reset OK",