1
0
forked from me/IronOS

Merge branch 'master' into ralim/dfuse-header

This commit is contained in:
Ben V. Brown
2021-09-25 11:07:58 +10:00
committed by GitHub
16 changed files with 228 additions and 318 deletions

View File

@@ -8,25 +8,25 @@ assignees: Ralim
--- ---
**Describe the bug** **Describe the bug**
A clear and concise description of what the bug is. <!-- A clear and concise description of what the bug is. -->
**To Reproduce** **To Reproduce**
Steps to reproduce the behavior: <!-- Steps to reproduce the behavior:
1. Go to '...' 1. Go to '...'
2. Click on '....' 2. Click on '....'
3. Scroll down to '....' 3. Scroll down to '....'
4. See error 4. See error -->
**Expected behavior** **Expected behavior**
A clear and concise description of what you expected to happen. <!-- A clear and concise description of what you expected to happen. -->
**Details on your device:** **Details on your device:**
<!-- You can get these from the debug menu by holding the rear button down and then using the front one to cycle through-->
- Device: [e.g. TS80/Pinecil etc] - Device: [e.g. TS80/Pinecil etc]
- Release: [eg 2.15.40087E6] - Release: [eg 2.15.40087E6]
- Power adapter being used: - Power adapter being used:
- If this is an acceleromter related issue, please include its model number here:
Note you can grab these from the debug menu.
**Additional context** **Additional context**
Add any other context about the problem here. <!-- Add any other context about the problem here. -->

View File

@@ -7,4 +7,4 @@ assignees: ''
--- ---
**Questions are preferred to be kept to the discussions tab where possible, but otherwise go for it. be polite and as clear as possible.** <!-- **Questions are preferred to be kept to the discussions tab where possible, but otherwise go for it. be polite and as clear as possible.** -->

View File

@@ -8,13 +8,13 @@ assignees: Ralim
--- ---
**Is your feature request related to a problem? Please describe.** **Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] <!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
**Describe the solution you'd like** **Describe the solution you'd like**
A clear and concise description of what you want to happen. <!-- A clear and concise description of what you want to happen. -->
**Describe alternatives you've considered** **Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered. <!-- A clear and concise description of any alternative solutions or features you've considered. -->
**Additional context** **Additional context**
Add any other context or screenshots about the feature request here. <!-- Add any other context or screenshots about the feature request here. -->

View File

@@ -1,69 +0,0 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [master]
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
schedule:
- cron: "38 23 * * 6"
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: ["cpp", "python"]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- name: chmod
run: chmod +x setup.sh && chmod +x source/build.sh && sudo mkdir -p /build/cache && sudo chmod -R 777 /build
- name: Cached compiler source files
uses: actions/cache@v2.1.6
env:
cache-name: cache-compilers
with:
path: /build/cache
key: ${{ runner.os }}-build-${{ env.cache-name }}
restore-keys: |
${{ runner.os }}-
- name: setup
run: ./setup.sh && cd source && ./build.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View File

@@ -52,18 +52,17 @@ This is shown in degrees C x10, so 200 == 20.0C
The input voltage as read by the internal ADC. Can be used to sanity check its being read correctly. The input voltage as read by the internal ADC. Can be used to sanity check its being read correctly.
### PCB ### ACC
This is slightly miss-named, but preserving the name for now.
This indicates the PCB "version" number, which comes from the TS100 changing the model of accelerometer without warning.
This indicates the accelerometer that is fitted inside the unit. This indicates the accelerometer that is fitted inside the unit.
- 1 = MMA8652 - MMA8652
- 2 = LIS2DH12 - LIS2DH12
- 3 = BMA223 - BMA223
- 4 = MSA301 - MSA301
- 5 = SC7A20 - SC7A20
- 99 = None detected (running in fallback without movement detection) - None detected -> running in fallback without movement detection
- Scanning -> Still searching I2C for one
### PWR ### PWR

View File

@@ -1,17 +1,17 @@
Please try and fill out this template where possible, not all fields are required and can be removed. <!-- Please try and fill out this template where possible, not all fields are required and can be removed. -->
* **Please check if the PR fulfills these requirements** * **Please check if the PR fulfills these requirements**
- [] The changes have been tested locally - [] The changes have been tested locally
- [] There are no breaking changes - [] There are no breaking changes
* **What kind of change does this PR introduce?** * **What kind of change does this PR introduce?**
(Bug fix, feature, docs update, ...) <!-- (Bug fix, feature, docs update, ...) -->
* **What is the current behavior?** * **What is the current behavior?**
(You can also link to an open issue here) <!-- (You can also just link to an open issue here) -->
* **What is the new behavior (if this is a feature change)?** * **What is the new behavior (if this is a feature change)?**

View File

@@ -124,12 +124,24 @@ def get_debug_menu() -> List[str]:
"CTip ", "CTip ",
"CHan ", "CHan ",
"Vin ", "Vin ",
"PCB ", "ACC ",
"PWR ", "PWR ",
"Max ", "Max ",
] ]
def get_accel_names_list() -> List[str]:
return [
"Scanning",
"None",
"MMA8652FC",
"LIS2DH12",
"BMA223",
"MSA301",
"SC7A20",
]
def get_letter_counts( def get_letter_counts(
defs: dict, lang: dict, build_version: str defs: dict, lang: dict, build_version: str
) -> Tuple[List[str], Dict[str, int]]: ) -> Tuple[List[str], Dict[str, int]]:
@@ -189,6 +201,7 @@ def get_letter_counts(
for x in constants: for x in constants:
text_list.append(x[1]) text_list.append(x[1])
text_list.extend(get_debug_menu()) text_list.extend(get_debug_menu())
text_list.extend(get_accel_names_list())
# collapse all strings down into the composite letters and store totals for these # collapse all strings down into the composite letters and store totals for these
@@ -948,6 +961,16 @@ def get_translation_common_text(
f'\t "{convert_string(symbol_conversion_table, c)}",//{c} \n' f'\t "{convert_string(symbol_conversion_table, c)}",//{c} \n'
) )
translation_common_text += "};\n\n" translation_common_text += "};\n\n"
# accel names
translation_common_text += "const char* AccelTypeNames[] = {\n"
for c in get_accel_names_list():
translation_common_text += (
f'\t "{convert_string(symbol_conversion_table, c)}",//{c} \n'
)
translation_common_text += "};\n\n"
return translation_common_text return translation_common_text

View File

@@ -26,6 +26,7 @@ extern const char *SymbolCellCount;
extern const char *SymbolVersionNumber; extern const char *SymbolVersionNumber;
extern const char *DebugMenu[]; extern const char *DebugMenu[];
extern const char *AccelTypeNames[];
enum class SettingsItemIndex : uint8_t { enum class SettingsItemIndex : uint8_t {
DCInCutoff, DCInCutoff,
@@ -145,7 +146,8 @@ constexpr uint8_t settings_item_index(const SettingsItemIndex i) { return static
const char *translatedString(uint16_t index); const char *translatedString(uint16_t index);
void prepareTranslations(); void prepareTranslations();
bool settings_displayLanguageSwitch(void); void settings_displayLanguageSwitch(void);
bool settings_showLanguageSwitch(void);
bool settings_setLanguageSwitch(void); bool settings_setLanguageSwitch(void);
#endif /* TRANSLATION_H_ */ #endif /* TRANSLATION_H_ */

View File

@@ -26,7 +26,8 @@ typedef struct {
uint8_t description; uint8_t description;
// return true if increment reached the maximum value // return true if increment reached the maximum value
bool (*const incrementHandler)(void); 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 // If this is set, we will automatically use the settings increment handler instead, set >= num settings to disable
SettingsOptions autoSettingOption; SettingsOptions autoSettingOption;
} menuitem; } menuitem;

View File

@@ -3,7 +3,6 @@
#include "OLED.hpp" #include "OLED.hpp"
#include "Setup.h" #include "Setup.h"
extern uint8_t DetectedAccelerometerVersion;
extern uint32_t currentTempTargetDegC; extern uint32_t currentTempTargetDegC;
extern bool settingsWereReset; extern bool settingsWereReset;
extern bool usb_pd_available; extern bool usb_pd_available;
@@ -13,8 +12,6 @@ extern "C" {
void vApplicationStackOverflowHook(TaskHandle_t *pxTask, signed portCHAR *pcTaskName); void vApplicationStackOverflowHook(TaskHandle_t *pxTask, signed portCHAR *pcTaskName);
#define NO_DETECTED_ACCELEROMETER 99
#define ACCELEROMETERS_SCANNING 100
// Threads // Threads
void startGUITask(void const *argument); void startGUITask(void const *argument);
void startPIDTask(void const *argument); void startPIDTask(void const *argument);
@@ -26,5 +23,17 @@ extern uint8_t accelInit;
extern TickType_t lastMovementTime; extern TickType_t lastMovementTime;
#ifdef __cplusplus #ifdef __cplusplus
} }
// Accelerometer type
enum class AccelType {
Scanning = 0,
None = 1,
MMA = 2,
LIS = 3,
BMA = 4,
MSA = 5,
SC7 = 6,
};
extern AccelType DetectedAccelerometerVersion;
#endif #endif
#endif /* __MAIN_H */ #endif /* __MAIN_H */

View File

@@ -85,7 +85,5 @@ bool settings_setLanguageSwitch(void) {
return selectedLangIndex == (LanguageCount - 1); return selectedLangIndex == (LanguageCount - 1);
} }
bool settings_displayLanguageSwitch(void) { bool settings_showLanguageSwitch(void) { return true; }
OLED::printWholeScreen(translatedString(Tr->SettingsShortNames[static_cast<uint8_t>(SettingsItemIndex::LanguageSwitch)])); void settings_displayLanguageSwitch(void) { OLED::printWholeScreen(translatedString(Tr->SettingsShortNames[static_cast<uint8_t>(SettingsItemIndex::LanguageSwitch)])); }
return false;
}

View File

@@ -2,6 +2,5 @@
bool settings_setLanguageSwitch(void) { return false; } bool settings_setLanguageSwitch(void) { return false; }
bool settings_displayLanguageSwitch(void) { void settings_displayLanguageSwitch(void) {}
return true; // skip bool settings_showLanguageSwitch(void) { return false; }
}

View File

@@ -17,71 +17,72 @@
void gui_Menu(const menuitem *menu); void gui_Menu(const menuitem *menu);
#ifdef POW_DC #ifdef POW_DC
static bool settings_displayInputVRange(void); static void settings_displayInputVRange(void);
static bool settings_displayInputMinVRange(void); static void settings_displayInputMinVRange(void);
#endif #endif
#ifdef POW_QC #ifdef POW_QC
static bool settings_displayQCInputV(void); static void settings_displayQCInputV(void);
#endif #endif
#ifdef POW_PD #ifdef POW_PD
static bool settings_displayPDNegTimeout(void); static void settings_displayPDNegTimeout(void);
#endif #endif
#ifndef NO_SLEEP_MODE #ifndef NO_SLEEP_MODE
static bool settings_setSleepTemp(void); static bool settings_setSleepTemp(void);
static bool settings_displaySleepTemp(void); static void settings_displaySleepTemp(void);
static bool settings_displaySleepTime(void); static void settings_displaySleepTime(void);
#endif #endif
static bool settings_displayShutdownTime(void); static void settings_displayShutdownTime(void);
static bool settings_displaySensitivity(void); static void settings_displaySensitivity(void);
static bool settings_setTempF(void); static bool settings_setTempF(void);
static bool settings_displayTempF(void); static void settings_displayTempF(void);
static bool settings_displayAdvancedSolderingScreens(void); static void settings_displayAdvancedSolderingScreens(void);
static bool settings_displayAdvancedIDLEScreens(void); static void settings_displayAdvancedIDLEScreens(void);
static bool settings_displayScrollSpeed(void); static void settings_displayScrollSpeed(void);
static bool settings_displayPowerLimit(void); static void settings_displayPowerLimit(void);
#ifndef NO_DISPLAY_ROTATE #ifndef NO_DISPLAY_ROTATE
static bool settings_setDisplayRotation(void); static bool settings_setDisplayRotation(void);
static bool settings_displayDisplayRotation(void); static void settings_displayDisplayRotation(void);
#endif #endif
static bool settings_setBoostTemp(void); static bool settings_setBoostTemp(void);
static bool settings_displayBoostTemp(void); static void settings_displayBoostTemp(void);
static bool settings_displayAutomaticStartMode(void); static void settings_displayAutomaticStartMode(void);
static bool settings_displayLockingMode(void); static void settings_displayLockingMode(void);
static bool settings_displayCoolingBlinkEnabled(void); static void settings_displayCoolingBlinkEnabled(void);
static bool settings_setResetSettings(void); static bool settings_setResetSettings(void);
static bool settings_displayResetSettings(void); static void settings_displayResetSettings(void);
static bool settings_setCalibrate(void); static bool settings_setCalibrate(void);
static bool settings_displayCalibrate(void); static void settings_displayCalibrate(void);
static bool settings_setCalibrateVIN(void); static bool settings_setCalibrateVIN(void);
static bool settings_displayCalibrateVIN(void); static void settings_displayCalibrateVIN(void);
static bool settings_displayReverseButtonTempChangeEnabled(void); static void settings_displayReverseButtonTempChangeEnabled(void);
static bool settings_displayTempChangeShortStep(void); static void settings_displayTempChangeShortStep(void);
static bool settings_displayTempChangeLongStep(void); static void settings_displayTempChangeLongStep(void);
static bool settings_displayPowerPulse(void); static void settings_displayPowerPulse(void);
static bool settings_displayAnimationSpeed(void); static void settings_displayAnimationSpeed(void);
static bool settings_displayAnimationLoop(void); static void settings_displayAnimationLoop(void);
static bool settings_displayPowerPulseWait(void); static void settings_displayPowerPulseWait(void);
static bool settings_displayPowerPulseDuration(void); static bool settings_showPowerPulseOptions(void);
static bool settings_displayBrightnessLevel(void); static void settings_displayPowerPulseDuration(void);
static bool settings_displayInvertColor(void); static void settings_displayBrightnessLevel(void);
static void settings_displayInvertColor(void);
#ifdef HALL_SENSOR #ifdef HALL_SENSOR
static bool settings_displayHallEffect(void); static void settings_displayHallEffect(void);
#endif #endif
// Menu functions // Menu functions
#if defined(POW_DC) || defined(POW_QC) #if defined(POW_DC) || defined(POW_QC)
static bool settings_displayPowerMenu(void); static void settings_displayPowerMenu(void);
static bool settings_enterPowerMenu(void); static bool settings_enterPowerMenu(void);
#endif #endif
static bool settings_displaySolderingMenu(void); static void settings_displaySolderingMenu(void);
static bool settings_enterSolderingMenu(void); static bool settings_enterSolderingMenu(void);
static bool settings_displayPowerSavingMenu(void); static void settings_displayPowerSavingMenu(void);
static bool settings_enterPowerSavingMenu(void); static bool settings_enterPowerSavingMenu(void);
static bool settings_displayUIMenu(void); static void settings_displayUIMenu(void);
static bool settings_enterUIMenu(void); static bool settings_enterUIMenu(void);
static bool settings_displayAdvancedMenu(void); static void settings_displayAdvancedMenu(void);
static bool settings_enterAdvancedMenu(void); static bool settings_enterAdvancedMenu(void);
/* /*
* Root Settings Menu * Root Settings Menu
@@ -134,15 +135,15 @@ const menuitem rootSettingsMenu[] {
*/ */
#if defined(POW_DC) || defined(POW_QC) #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 #endif
{0, settings_enterSolderingMenu, settings_displaySolderingMenu, SettingsOptions::SettingsOptionsLength}, /*Soldering*/ {0, settings_enterSolderingMenu, settings_displaySolderingMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Soldering*/
{0, settings_enterPowerSavingMenu, settings_displayPowerSavingMenu, SettingsOptions::SettingsOptionsLength}, /*Sleep Options Menu*/ {0, settings_enterPowerSavingMenu, settings_displayPowerSavingMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Sleep Options Menu*/
{0, settings_enterUIMenu, settings_displayUIMenu, SettingsOptions::SettingsOptionsLength}, /*UI Menu*/ {0, settings_enterUIMenu, settings_displayUIMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*UI Menu*/
{0, settings_enterAdvancedMenu, settings_displayAdvancedMenu, SettingsOptions::SettingsOptionsLength}, /*Advanced Menu*/ {0, settings_enterAdvancedMenu, settings_displayAdvancedMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Advanced Menu*/
{0, settings_setLanguageSwitch, settings_displayLanguageSwitch, SettingsOptions::SettingsOptionsLength}, /*Language Switch*/ {0, settings_setLanguageSwitch, settings_displayLanguageSwitch, settings_showLanguageSwitch, SettingsOptions::SettingsOptionsLength}, /*Language Switch*/
{ {
0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength 0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength
} // end of menu marker. DO NOT REMOVE } // end of menu marker. DO NOT REMOVE
}; };
@@ -152,16 +153,16 @@ const menuitem powerMenu[] = {
* Power Source * Power Source
*/ */
#ifdef POW_DC #ifdef POW_DC
{SETTINGS_DESC(SettingsItemIndex::DCInCutoff), nullptr, settings_displayInputVRange, SettingsOptions::MinDCVoltageCells}, /*Voltage input*/ {SETTINGS_DESC(SettingsItemIndex::DCInCutoff), nullptr, settings_displayInputVRange, nullptr, SettingsOptions::MinDCVoltageCells}, /*Voltage input*/
{SETTINGS_DESC(SettingsItemIndex::MinVolCell), nullptr, settings_displayInputMinVRange, SettingsOptions::MinVoltageCells}, /*Minimum voltage input*/ {SETTINGS_DESC(SettingsItemIndex::MinVolCell), nullptr, settings_displayInputMinVRange, nullptr, SettingsOptions::MinVoltageCells}, /*Minimum voltage input*/
#endif #endif
#ifdef POW_QC #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 #endif
#ifdef POW_PD #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 #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 #endif
const menuitem solderingMenu[] = { const menuitem solderingMenu[] = {
@@ -172,12 +173,12 @@ const menuitem solderingMenu[] = {
* Temp change short step * Temp change short step
* Temp change long step * Temp change long step
*/ */
{SETTINGS_DESC(SettingsItemIndex::BoostTemperature), settings_setBoostTemp, settings_displayBoostTemp, SettingsOptions::SettingsOptionsLength}, /*Boost Temp*/ {SETTINGS_DESC(SettingsItemIndex::BoostTemperature), settings_setBoostTemp, settings_displayBoostTemp, nullptr, SettingsOptions::SettingsOptionsLength}, /*Boost Temp*/
{SETTINGS_DESC(SettingsItemIndex::AutoStart), nullptr, settings_displayAutomaticStartMode, SettingsOptions::AutoStartMode}, /*Auto start*/ {SETTINGS_DESC(SettingsItemIndex::AutoStart), nullptr, settings_displayAutomaticStartMode, nullptr, SettingsOptions::AutoStartMode}, /*Auto start*/
{SETTINGS_DESC(SettingsItemIndex::TempChangeShortStep), nullptr, settings_displayTempChangeShortStep, SettingsOptions::TempChangeShortStep}, /*Temp change short step*/ {SETTINGS_DESC(SettingsItemIndex::TempChangeShortStep), nullptr, settings_displayTempChangeShortStep, nullptr, SettingsOptions::TempChangeShortStep}, /*Temp change short step*/
{SETTINGS_DESC(SettingsItemIndex::TempChangeLongStep), nullptr, settings_displayTempChangeLongStep, SettingsOptions::TempChangeLongStep}, /*Temp change long step*/ {SETTINGS_DESC(SettingsItemIndex::TempChangeLongStep), nullptr, settings_displayTempChangeLongStep, nullptr, SettingsOptions::TempChangeLongStep}, /*Temp change long step*/
{SETTINGS_DESC(SettingsItemIndex::LockingMode), nullptr, settings_displayLockingMode, SettingsOptions::LockingMode}, /*Locking Mode*/ {SETTINGS_DESC(SettingsItemIndex::LockingMode), nullptr, settings_displayLockingMode, nullptr, SettingsOptions::LockingMode}, /*Locking Mode*/
{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 UIMenu[] = { const menuitem UIMenu[] = {
/* /*
@@ -190,22 +191,22 @@ const menuitem UIMenu[] = {
* Detailed IDLE * Detailed IDLE
* Detailed Soldering * 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() */ 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 #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 #endif
{SETTINGS_DESC(SettingsItemIndex::CooldownBlink), nullptr, settings_displayCoolingBlinkEnabled, SettingsOptions::CoolingTempBlink}, /*Cooling blink warning*/ {SETTINGS_DESC(SettingsItemIndex::CooldownBlink), nullptr, settings_displayCoolingBlinkEnabled, nullptr, SettingsOptions::CoolingTempBlink}, /*Cooling blink warning*/
{SETTINGS_DESC(SettingsItemIndex::ScrollingSpeed), nullptr, settings_displayScrollSpeed, SettingsOptions::DescriptionScrollSpeed}, /*Scroll Speed for descriptions*/ {SETTINGS_DESC(SettingsItemIndex::ScrollingSpeed), nullptr, settings_displayScrollSpeed, nullptr, SettingsOptions::DescriptionScrollSpeed}, /*Scroll Speed for descriptions*/
{SETTINGS_DESC(SettingsItemIndex::ReverseButtonTempChange), nullptr, settings_displayReverseButtonTempChangeEnabled, {SETTINGS_DESC(SettingsItemIndex::ReverseButtonTempChange), nullptr, settings_displayReverseButtonTempChangeEnabled, nullptr,
SettingsOptions::ReverseButtonTempChangeEnabled}, /* Reverse Temp change buttons + - */ SettingsOptions::ReverseButtonTempChangeEnabled}, /* Reverse Temp change buttons + - */
{SETTINGS_DESC(SettingsItemIndex::AnimSpeed), nullptr, settings_displayAnimationSpeed, SettingsOptions::AnimationSpeed}, /*Animation Speed adjustment */ {SETTINGS_DESC(SettingsItemIndex::AnimSpeed), nullptr, settings_displayAnimationSpeed, nullptr, SettingsOptions::AnimationSpeed}, /*Animation Speed adjustment */
{SETTINGS_DESC(SettingsItemIndex::AnimLoop), nullptr, settings_displayAnimationLoop, SettingsOptions::AnimationLoop}, /*Animation Loop switch */ {SETTINGS_DESC(SettingsItemIndex::AnimLoop), nullptr, settings_displayAnimationLoop, nullptr, SettingsOptions::AnimationLoop}, /*Animation Loop switch */
{SETTINGS_DESC(SettingsItemIndex::Brightness), nullptr, settings_displayBrightnessLevel, SettingsOptions::OLEDBrightness}, /*Brightness Level*/ {SETTINGS_DESC(SettingsItemIndex::Brightness), nullptr, settings_displayBrightnessLevel, nullptr, SettingsOptions::OLEDBrightness}, /*Brightness Level*/
{SETTINGS_DESC(SettingsItemIndex::ColourInversion), nullptr, settings_displayInvertColor, SettingsOptions::OLEDInversion}, /*Invert screen colour*/ {SETTINGS_DESC(SettingsItemIndex::ColourInversion), nullptr, settings_displayInvertColor, nullptr, SettingsOptions::OLEDInversion}, /*Invert screen colour*/
{SETTINGS_DESC(SettingsItemIndex::AdvancedIdle), nullptr, settings_displayAdvancedIDLEScreens, SettingsOptions::DetailedIDLE}, /* Advanced idle screen*/ {SETTINGS_DESC(SettingsItemIndex::AdvancedIdle), nullptr, settings_displayAdvancedIDLEScreens, nullptr, SettingsOptions::DetailedIDLE}, /* Advanced idle screen*/
{SETTINGS_DESC(SettingsItemIndex::AdvancedSoldering), nullptr, settings_displayAdvancedSolderingScreens, SettingsOptions::DetailedSoldering}, /* Advanced soldering screen*/ {SETTINGS_DESC(SettingsItemIndex::AdvancedSoldering), nullptr, settings_displayAdvancedSolderingScreens, nullptr, SettingsOptions::DetailedSoldering}, /* Advanced soldering screen*/
{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 PowerSavingMenu[] = { const menuitem PowerSavingMenu[] = {
/* /*
@@ -215,15 +216,15 @@ const menuitem PowerSavingMenu[] = {
* Motion Sensitivity * Motion Sensitivity
*/ */
#ifndef NO_SLEEP_MODE #ifndef NO_SLEEP_MODE
{SETTINGS_DESC(SettingsItemIndex::SleepTemperature), settings_setSleepTemp, settings_displaySleepTemp, SettingsOptions::SettingsOptionsLength}, /*Sleep Temp*/ {SETTINGS_DESC(SettingsItemIndex::SleepTemperature), settings_setSleepTemp, settings_displaySleepTemp, nullptr, SettingsOptions::SettingsOptionsLength}, /*Sleep Temp*/
{SETTINGS_DESC(SettingsItemIndex::SleepTimeout), nullptr, settings_displaySleepTime, SettingsOptions::SleepTime}, /*Sleep Time*/ {SETTINGS_DESC(SettingsItemIndex::SleepTimeout), nullptr, settings_displaySleepTime, nullptr, SettingsOptions::SleepTime}, /*Sleep Time*/
#endif #endif
{SETTINGS_DESC(SettingsItemIndex::ShutdownTimeout), nullptr, settings_displayShutdownTime, SettingsOptions::ShutdownTime}, /*Shutdown Time*/ {SETTINGS_DESC(SettingsItemIndex::ShutdownTimeout), nullptr, settings_displayShutdownTime, nullptr, SettingsOptions::ShutdownTime}, /*Shutdown Time*/
{SETTINGS_DESC(SettingsItemIndex::MotionSensitivity), nullptr, settings_displaySensitivity, SettingsOptions::Sensitivity}, /* Motion Sensitivity*/ {SETTINGS_DESC(SettingsItemIndex::MotionSensitivity), nullptr, settings_displaySensitivity, nullptr, SettingsOptions::Sensitivity}, /* Motion Sensitivity*/
#ifdef HALL_SENSOR #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 #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[] = { const menuitem advancedMenu[] = {
@@ -238,14 +239,15 @@ const menuitem advancedMenu[] = {
* Power Pulse Wait * Power Pulse Wait
* Power Pulse Duration * Power Pulse Duration
*/ */
{SETTINGS_DESC(SettingsItemIndex::PowerLimit), nullptr, settings_displayPowerLimit, SettingsOptions::PowerLimit}, /*Power limit*/ {SETTINGS_DESC(SettingsItemIndex::PowerLimit), nullptr, settings_displayPowerLimit, nullptr, SettingsOptions::PowerLimit}, /*Power limit*/
{SETTINGS_DESC(SettingsItemIndex::SettingsReset), settings_setResetSettings, settings_displayResetSettings, SettingsOptions::SettingsOptionsLength}, /*Resets settings*/ {SETTINGS_DESC(SettingsItemIndex::SettingsReset), settings_setResetSettings, settings_displayResetSettings, nullptr, SettingsOptions::SettingsOptionsLength}, /*Resets settings*/
{SETTINGS_DESC(SettingsItemIndex::TemperatureCalibration), settings_setCalibrate, settings_displayCalibrate, SettingsOptions::SettingsOptionsLength}, /*Calibrate tip*/ {SETTINGS_DESC(SettingsItemIndex::TemperatureCalibration), settings_setCalibrate, settings_displayCalibrate, nullptr, SettingsOptions::SettingsOptionsLength}, /*Calibrate tip*/
{SETTINGS_DESC(SettingsItemIndex::VoltageCalibration), settings_setCalibrateVIN, settings_displayCalibrateVIN, SettingsOptions::SettingsOptionsLength}, /*Voltage input cal*/ {SETTINGS_DESC(SettingsItemIndex::VoltageCalibration), settings_setCalibrateVIN, settings_displayCalibrateVIN, nullptr, SettingsOptions::SettingsOptionsLength}, /*Voltage input cal*/
{SETTINGS_DESC(SettingsItemIndex::PowerPulsePower), nullptr, settings_displayPowerPulse, SettingsOptions::KeepAwakePulse}, /*Power Pulse adjustment */ {SETTINGS_DESC(SettingsItemIndex::PowerPulsePower), nullptr, settings_displayPowerPulse, nullptr, SettingsOptions::KeepAwakePulse}, /*Power Pulse adjustment */
{SETTINGS_DESC(SettingsItemIndex::PowerPulseWait), nullptr, settings_displayPowerPulseWait, SettingsOptions::KeepAwakePulseWait}, /*Power Pulse Wait adjustment*/ {SETTINGS_DESC(SettingsItemIndex::PowerPulseWait), nullptr, settings_displayPowerPulseWait, settings_showPowerPulseOptions, SettingsOptions::KeepAwakePulseWait}, /*Power Pulse Wait adjustment*/
{SETTINGS_DESC(SettingsItemIndex::PowerPulseDuration), nullptr, settings_displayPowerPulseDuration, SettingsOptions::KeepAwakePulseDuration}, /*Power Pulse Duration adjustment*/ {SETTINGS_DESC(SettingsItemIndex::PowerPulseDuration), nullptr, settings_displayPowerPulseDuration, settings_showPowerPulseOptions,
{0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE 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 #ifdef POW_DC
static bool settings_displayInputVRange(void) { static void settings_displayInputVRange(void) {
printShortDescription(SettingsItemIndex::DCInCutoff, 6); printShortDescription(SettingsItemIndex::DCInCutoff, 6);
if (getSettingValue(SettingsOptions::MinDCVoltageCells)) { if (getSettingValue(SettingsOptions::MinDCVoltageCells)) {
@@ -305,10 +307,9 @@ static bool settings_displayInputVRange(void) {
} else { } else {
OLED::print(SymbolDC, FontStyle::LARGE); OLED::print(SymbolDC, FontStyle::LARGE);
} }
return false;
} }
static bool settings_displayInputMinVRange(void) { static void settings_displayInputMinVRange(void) {
if (getSettingValue(SettingsOptions::MinDCVoltageCells)) { if (getSettingValue(SettingsOptions::MinDCVoltageCells)) {
printShortDescription(SettingsItemIndex::MinVolCell, 4); printShortDescription(SettingsItemIndex::MinVolCell, 4);
OLED::printNumber(getSettingValue(SettingsOptions::MinVoltageCells) / 10, 2, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::MinVoltageCells) / 10, 2, FontStyle::LARGE);
@@ -318,12 +319,11 @@ static bool settings_displayInputMinVRange(void) {
printShortDescription(SettingsItemIndex::MinVolCell, 5); printShortDescription(SettingsItemIndex::MinVolCell, 5);
OLED::print(translatedString(Tr->SettingNAChar), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingNAChar), FontStyle::LARGE);
} }
return false;
} }
#endif #endif
#ifdef POW_QC #ifdef POW_QC
static bool settings_displayQCInputV(void) { static void settings_displayQCInputV(void) {
printShortDescription(SettingsItemIndex::QCMaxVoltage, 4); printShortDescription(SettingsItemIndex::QCMaxVoltage, 4);
// These are only used in QC modes // These are only used in QC modes
// Allows setting the voltage negotiated for QC // Allows setting the voltage negotiated for QC
@@ -332,14 +332,13 @@ static bool settings_displayQCInputV(void) {
OLED::print(SymbolDot, FontStyle::LARGE); OLED::print(SymbolDot, FontStyle::LARGE);
OLED::printNumber(voltage % 10, 1, FontStyle::LARGE); OLED::printNumber(voltage % 10, 1, FontStyle::LARGE);
OLED::print(SymbolVolts, FontStyle::LARGE); OLED::print(SymbolVolts, FontStyle::LARGE);
return false;
} }
#endif #endif
#ifdef POW_PD #ifdef POW_PD
static bool settings_displayPDNegTimeout(void) { static void settings_displayPDNegTimeout(void) {
printShortDescription(SettingsItemIndex::PDNegTimeout, 5); printShortDescription(SettingsItemIndex::PDNegTimeout, 5);
auto value = getSettingValue(SettingsOptions::PDNegTimeout); auto value = getSettingValue(SettingsOptions::PDNegTimeout);
if (value == 0) { if (value == 0) {
@@ -347,7 +346,6 @@ static bool settings_displayPDNegTimeout(void) {
} else { } else {
OLED::printNumber(value, 2, FontStyle::LARGE); OLED::printNumber(value, 2, FontStyle::LARGE);
} }
return false;
} }
#endif #endif
@@ -370,13 +368,12 @@ static bool settings_setSleepTemp(void) {
} }
} }
static bool settings_displaySleepTemp(void) { static void settings_displaySleepTemp(void) {
printShortDescription(SettingsItemIndex::SleepTemperature, 5); printShortDescription(SettingsItemIndex::SleepTemperature, 5);
OLED::printNumber(getSettingValue(SettingsOptions::SleepTemp), 3, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::SleepTemp), 3, FontStyle::LARGE);
return false;
} }
static bool settings_displaySleepTime(void) { static void settings_displaySleepTime(void) {
printShortDescription(SettingsItemIndex::SleepTimeout, 5); printShortDescription(SettingsItemIndex::SleepTimeout, 5);
if (getSettingValue(SettingsOptions::SleepTime) == 0) { if (getSettingValue(SettingsOptions::SleepTime) == 0) {
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); 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::printNumber(getSettingValue(SettingsOptions::SleepTime) - 5, 2, FontStyle::LARGE);
OLED::print(SymbolMinutes, FontStyle::LARGE); OLED::print(SymbolMinutes, FontStyle::LARGE);
} }
return false;
} }
#endif #endif
static bool settings_displayShutdownTime(void) { static void settings_displayShutdownTime(void) {
printShortDescription(SettingsItemIndex::ShutdownTimeout, 5); printShortDescription(SettingsItemIndex::ShutdownTimeout, 5);
if (getSettingValue(SettingsOptions::ShutdownTime) == 0) { if (getSettingValue(SettingsOptions::ShutdownTime) == 0) {
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); 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::printNumber(getSettingValue(SettingsOptions::ShutdownTime), 2, FontStyle::LARGE);
OLED::print(SymbolMinutes, FontStyle::LARGE); OLED::print(SymbolMinutes, FontStyle::LARGE);
} }
return false;
} }
static bool settings_setTempF(void) { static bool settings_setTempF(void) {
bool res = nextSettingValue(SettingsOptions::TemperatureInF); bool res = nextSettingValue(SettingsOptions::TemperatureInF);
@@ -434,33 +429,29 @@ static bool settings_setTempF(void) {
return res; return res;
} }
static bool settings_displayTempF(void) { static void settings_displayTempF(void) {
printShortDescription(SettingsItemIndex::TemperatureUnit, 7); printShortDescription(SettingsItemIndex::TemperatureUnit, 7);
OLED::print((getSettingValue(SettingsOptions::TemperatureInF)) ? SymbolDegF : SymbolDegC, FontStyle::LARGE); 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); printShortDescription(SettingsItemIndex::MotionSensitivity, 7);
OLED::printNumber(getSettingValue(SettingsOptions::Sensitivity), 1, FontStyle::LARGE, false); 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); printShortDescription(SettingsItemIndex::AdvancedSoldering, 7);
OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedSoldering)); OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedSoldering));
return false;
} }
static bool settings_displayAdvancedIDLEScreens(void) { static void settings_displayAdvancedIDLEScreens(void) {
printShortDescription(SettingsItemIndex::AdvancedIdle, 7); printShortDescription(SettingsItemIndex::AdvancedIdle, 7);
OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedIDLE)); OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedIDLE));
return false;
} }
static bool settings_displayPowerLimit(void) { static void settings_displayPowerLimit(void) {
printShortDescription(SettingsItemIndex::PowerLimit, 5); printShortDescription(SettingsItemIndex::PowerLimit, 5);
if (getSettingValue(SettingsOptions::PowerLimit) == 0) { if (getSettingValue(SettingsOptions::PowerLimit) == 0) {
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); 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::printNumber(getSettingValue(SettingsOptions::PowerLimit), 2, FontStyle::LARGE);
OLED::print(SymbolWatts, FontStyle::LARGE); OLED::print(SymbolWatts, FontStyle::LARGE);
} }
return false;
} }
static bool settings_displayScrollSpeed(void) { static void settings_displayScrollSpeed(void) {
printShortDescription(SettingsItemIndex::ScrollingSpeed, 7); printShortDescription(SettingsItemIndex::ScrollingSpeed, 7);
OLED::print(translatedString((getSettingValue(SettingsOptions::DescriptionScrollSpeed)) ? Tr->SettingFastChar : Tr->SettingSlowChar), FontStyle::LARGE); OLED::print(translatedString((getSettingValue(SettingsOptions::DescriptionScrollSpeed)) ? Tr->SettingFastChar : Tr->SettingSlowChar), FontStyle::LARGE);
return false;
} }
#ifndef NO_DISPLAY_ROTATE #ifndef NO_DISPLAY_ROTATE
@@ -496,7 +485,7 @@ static bool settings_setDisplayRotation(void) {
return res; return res;
} }
static bool settings_displayDisplayRotation(void) { static void settings_displayDisplayRotation(void) {
printShortDescription(SettingsItemIndex::DisplayRotation, 7); printShortDescription(SettingsItemIndex::DisplayRotation, 7);
switch (getSettingValue(SettingsOptions::OrientationMode)) { switch (getSettingValue(SettingsOptions::OrientationMode)) {
@@ -513,7 +502,6 @@ static bool settings_displayDisplayRotation(void) {
OLED::print(translatedString(Tr->SettingRightChar), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingRightChar), FontStyle::LARGE);
break; break;
} }
return false;
} }
#endif #endif
static bool settings_setBoostTemp(void) { static bool settings_setBoostTemp(void) {
@@ -543,17 +531,16 @@ static bool settings_setBoostTemp(void) {
return value == MAX_TEMP_C; return value == MAX_TEMP_C;
} }
static bool settings_displayBoostTemp(void) { static void settings_displayBoostTemp(void) {
printShortDescription(SettingsItemIndex::BoostTemperature, 5); printShortDescription(SettingsItemIndex::BoostTemperature, 5);
if (getSettingValue(SettingsOptions::BoostTemp)) { if (getSettingValue(SettingsOptions::BoostTemp)) {
OLED::printNumber(getSettingValue(SettingsOptions::BoostTemp), 3, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::BoostTemp), 3, FontStyle::LARGE);
} else { } else {
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); OLED::print(translatedString(Tr->OffString), FontStyle::LARGE);
} }
return false;
} }
static bool settings_displayAutomaticStartMode(void) { static void settings_displayAutomaticStartMode(void) {
printShortDescription(SettingsItemIndex::AutoStart, 7); printShortDescription(SettingsItemIndex::AutoStart, 7);
switch (getSettingValue(SettingsOptions::AutoStartMode)) { switch (getSettingValue(SettingsOptions::AutoStartMode)) {
@@ -573,10 +560,9 @@ static bool settings_displayAutomaticStartMode(void) {
OLED::print(translatedString(Tr->SettingStartNoneChar), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingStartNoneChar), FontStyle::LARGE);
break; break;
} }
return false;
} }
static bool settings_displayLockingMode(void) { static void settings_displayLockingMode(void) {
printShortDescription(SettingsItemIndex::LockingMode, 7); printShortDescription(SettingsItemIndex::LockingMode, 7);
switch (getSettingValue(SettingsOptions::LockingMode)) { switch (getSettingValue(SettingsOptions::LockingMode)) {
@@ -593,13 +579,11 @@ static bool settings_displayLockingMode(void) {
OLED::print(translatedString(Tr->SettingLockDisableChar), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingLockDisableChar), FontStyle::LARGE);
break; break;
} }
return false;
} }
static bool settings_displayCoolingBlinkEnabled(void) { static void settings_displayCoolingBlinkEnabled(void) {
printShortDescription(SettingsItemIndex::CooldownBlink, 7); printShortDescription(SettingsItemIndex::CooldownBlink, 7);
OLED::drawCheckbox(getSettingValue(SettingsOptions::CoolingTempBlink)); OLED::drawCheckbox(getSettingValue(SettingsOptions::CoolingTempBlink));
return false;
} }
static bool settings_setResetSettings(void) { static bool settings_setResetSettings(void) {
@@ -610,10 +594,7 @@ static bool settings_setResetSettings(void) {
return false; return false;
} }
static bool settings_displayResetSettings(void) { static void settings_displayResetSettings(void) { printShortDescription(SettingsItemIndex::SettingsReset, 7); }
printShortDescription(SettingsItemIndex::SettingsReset, 7);
return false;
}
static void setTipOffset() { static void setTipOffset() {
uint16_t setoffset = 0; uint16_t setoffset = 0;
@@ -657,10 +638,7 @@ static bool settings_setCalibrate(void) {
return false; return false;
} }
static bool settings_displayCalibrate(void) { static void settings_displayCalibrate(void) { printShortDescription(SettingsItemIndex::TemperatureCalibration, 5); }
printShortDescription(SettingsItemIndex::TemperatureCalibration, 5);
return false;
}
static bool settings_setCalibrateVIN(void) { static bool settings_setCalibrateVIN(void) {
// Jump to the voltage calibration subscreen // Jump to the voltage calibration subscreen
@@ -701,25 +679,22 @@ static bool settings_setCalibrateVIN(void) {
return false; return false;
} }
static bool settings_displayReverseButtonTempChangeEnabled(void) { static void settings_displayReverseButtonTempChangeEnabled(void) {
printShortDescription(SettingsItemIndex::ReverseButtonTempChange, 7); printShortDescription(SettingsItemIndex::ReverseButtonTempChange, 7);
OLED::drawCheckbox(getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled)); OLED::drawCheckbox(getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled));
return false;
} }
static bool settings_displayTempChangeShortStep(void) { static void settings_displayTempChangeShortStep(void) {
printShortDescription(SettingsItemIndex::TempChangeShortStep, 6); printShortDescription(SettingsItemIndex::TempChangeShortStep, 6);
OLED::printNumber(getSettingValue(SettingsOptions::TempChangeShortStep), 2, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::TempChangeShortStep), 2, FontStyle::LARGE);
return false;
} }
static bool settings_displayTempChangeLongStep(void) { static void settings_displayTempChangeLongStep(void) {
printShortDescription(SettingsItemIndex::TempChangeLongStep, 6); printShortDescription(SettingsItemIndex::TempChangeLongStep, 6);
OLED::printNumber(getSettingValue(SettingsOptions::TempChangeLongStep), 2, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::TempChangeLongStep), 2, FontStyle::LARGE);
return false;
} }
static bool settings_displayPowerPulse(void) { static void settings_displayPowerPulse(void) {
printShortDescription(SettingsItemIndex::PowerPulsePower, 5); printShortDescription(SettingsItemIndex::PowerPulsePower, 5);
if (getSettingValue(SettingsOptions::KeepAwakePulse)) { if (getSettingValue(SettingsOptions::KeepAwakePulse)) {
OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulse) / 10, 1, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulse) / 10, 1, FontStyle::LARGE);
@@ -728,16 +703,14 @@ static bool settings_displayPowerPulse(void) {
} else { } else {
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); OLED::print(translatedString(Tr->OffString), FontStyle::LARGE);
} }
return false;
} }
static bool settings_displayAnimationLoop(void) { static void settings_displayAnimationLoop(void) {
printShortDescription(SettingsItemIndex::AnimLoop, 7); printShortDescription(SettingsItemIndex::AnimLoop, 7);
OLED::drawCheckbox(getSettingValue(SettingsOptions::AnimationLoop)); OLED::drawCheckbox(getSettingValue(SettingsOptions::AnimationLoop));
return false;
} }
static bool settings_displayAnimationSpeed(void) { static void settings_displayAnimationSpeed(void) {
printShortDescription(SettingsItemIndex::AnimSpeed, 7); printShortDescription(SettingsItemIndex::AnimSpeed, 7);
switch (getSettingValue(SettingsOptions::AnimationSpeed)) { switch (getSettingValue(SettingsOptions::AnimationSpeed)) {
case settingOffSpeed_t::SLOW: case settingOffSpeed_t::SLOW:
@@ -753,40 +726,29 @@ static bool settings_displayAnimationSpeed(void) {
OLED::print(translatedString(Tr->SettingOffChar), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingOffChar), FontStyle::LARGE);
break; break;
} }
return false;
} }
static bool settings_displayPowerPulseWait(void) { static bool settings_showPowerPulseOptions(void) { return getSettingValue(SettingsOptions::KeepAwakePulse) > 0; }
if (getSettingValue(SettingsOptions::KeepAwakePulse)) { static void settings_displayPowerPulseWait(void) {
printShortDescription(SettingsItemIndex::PowerPulseWait, 7); printShortDescription(SettingsItemIndex::PowerPulseWait, 7);
OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseWait), 1, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseWait), 1, FontStyle::LARGE);
return false;
} else {
return true; // skip
}
} }
static bool settings_displayPowerPulseDuration(void) { static void settings_displayPowerPulseDuration(void) {
if (getSettingValue(SettingsOptions::KeepAwakePulse)) {
printShortDescription(SettingsItemIndex::PowerPulseDuration, 7); printShortDescription(SettingsItemIndex::PowerPulseDuration, 7);
OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseDuration), 1, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseDuration), 1, FontStyle::LARGE);
return false;
} else {
return true; // skip
}
} }
static bool settings_displayBrightnessLevel(void) { static void settings_displayBrightnessLevel(void) {
OLED::drawArea(0, 0, 16, 16, brightnessIcon); OLED::drawArea(0, 0, 16, 16, brightnessIcon);
OLED::setCursor(5 * FONT_12_WIDTH - 2, 0); OLED::setCursor(5 * FONT_12_WIDTH - 2, 0);
// printShortDescription(SettingsItemIndex::Brightness, 7); // printShortDescription(SettingsItemIndex::Brightness, 7);
OLED::printNumber(getSettingValue(SettingsOptions::OLEDBrightness), 3, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::OLEDBrightness), 3, FontStyle::LARGE);
// While not optimal to apply this here, it is _very_ convienient // While not optimal to apply this here, it is _very_ convienient
OLED::setBrightness(getSettingValue(SettingsOptions::OLEDBrightness)); 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::drawArea(0, 0, 24, 16, invertDisplayIcon);
OLED::setCursor(7 * FONT_12_WIDTH - 2, 0); OLED::setCursor(7 * FONT_12_WIDTH - 2, 0);
// printShortDescription(SettingsItemIndex::ColourInversion, 7); // printShortDescription(SettingsItemIndex::ColourInversion, 7);
@@ -794,11 +756,10 @@ static bool settings_displayInvertColor(void) {
OLED::drawCheckbox(getSettingValue(SettingsOptions::OLEDInversion)); OLED::drawCheckbox(getSettingValue(SettingsOptions::OLEDInversion));
// While not optimal to apply this here, it is _very_ convienient // While not optimal to apply this here, it is _very_ convienient
OLED::setInverseDisplay(getSettingValue(SettingsOptions::OLEDInversion)); OLED::setInverseDisplay(getSettingValue(SettingsOptions::OLEDInversion));
return false;
} }
#ifdef HALL_SENSOR #ifdef HALL_SENSOR
static bool settings_displayHallEffect(void) { static void settings_displayHallEffect(void) {
printShortDescription(SettingsItemIndex::HallEffSensitivity, 7); printShortDescription(SettingsItemIndex::HallEffSensitivity, 7);
switch (getSettingValue(SettingsOptions::HallEffectSensitivity)) { switch (getSettingValue(SettingsOptions::HallEffectSensitivity)) {
case 1: case 1:
@@ -815,7 +776,6 @@ static bool settings_displayHallEffect(void) {
OLED::print(translatedString(Tr->SettingSensitivityOff), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingSensitivityOff), FontStyle::LARGE);
break; break;
} }
return false;
} }
#endif #endif
@@ -860,53 +820,35 @@ static void displayMenu(size_t index) {
} }
// Draw symbol // Draw symbol
// 16 pixel wide image // 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])); OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, (&SettingsMenuIcons[index][(16 * 2) * currentFrame]));
} }
static bool settings_displayCalibrateVIN(void) { static void settings_displayCalibrateVIN(void) { printShortDescription(SettingsItemIndex::VoltageCalibration, 5); }
printShortDescription(SettingsItemIndex::VoltageCalibration, 5);
return false;
}
#if defined(POW_DC) || defined(POW_QC) #if defined(POW_DC) || defined(POW_QC)
static bool settings_displayPowerMenu(void) { static void settings_displayPowerMenu(void) { displayMenu(0); }
displayMenu(0);
return false;
}
static bool settings_enterPowerMenu(void) { static bool settings_enterPowerMenu(void) {
gui_Menu(powerMenu); gui_Menu(powerMenu);
return false; return false;
} }
#endif #endif
static bool settings_displaySolderingMenu(void) { static void settings_displaySolderingMenu(void) { displayMenu(1); }
displayMenu(1);
return false;
}
static bool settings_enterSolderingMenu(void) { static bool settings_enterSolderingMenu(void) {
gui_Menu(solderingMenu); gui_Menu(solderingMenu);
return false; return false;
} }
static bool settings_displayPowerSavingMenu(void) { static void settings_displayPowerSavingMenu(void) { displayMenu(2); }
displayMenu(2);
return false;
}
static bool settings_enterPowerSavingMenu(void) { static bool settings_enterPowerSavingMenu(void) {
gui_Menu(PowerSavingMenu); gui_Menu(PowerSavingMenu);
return false; return false;
} }
static bool settings_displayUIMenu(void) { static void settings_displayUIMenu(void) { displayMenu(3); }
displayMenu(3);
return false;
}
static bool settings_enterUIMenu(void) { static bool settings_enterUIMenu(void) {
gui_Menu(HasFahrenheit ? UIMenu : UIMenu + 1); gui_Menu(HasFahrenheit ? UIMenu : UIMenu + 1);
return false; return false;
} }
static bool settings_displayAdvancedMenu(void) { static void settings_displayAdvancedMenu(void) { displayMenu(4); }
displayMenu(4);
return false;
}
static bool settings_enterAdvancedMenu(void) { static bool settings_enterAdvancedMenu(void) {
gui_Menu(advancedMenu); gui_Menu(advancedMenu);
return false; return false;
@@ -940,7 +882,11 @@ void gui_Menu(const menuitem *menu) {
ScrollMessage scrollMessage; ScrollMessage scrollMessage;
for (uint8_t i = 0; menu[i].draw != nullptr; i++) { 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) { while ((menu[currentScreen].draw != nullptr) && earlyExit == false) {
@@ -952,11 +898,13 @@ void gui_Menu(const menuitem *menu) {
// to keep the primary framebuffer intact for the upcoming transition // to keep the primary framebuffer intact for the upcoming transition
// animation. // animation.
OLED::useSecondaryFramebuffer(true); OLED::useSecondaryFramebuffer(true);
if (menu[currentScreen].draw()) { if (menu[currentScreen].isVisible != nullptr) {
if (!menu[currentScreen].isVisible()) {
currentScreen++; currentScreen++;
OLED::useSecondaryFramebuffer(false); OLED::useSecondaryFramebuffer(false);
continue; continue;
} }
}
animOpenState = true; animOpenState = true;
// The menu entering/exiting transition uses the secondary framebuffer, // The menu entering/exiting transition uses the secondary framebuffer,

View File

@@ -9,7 +9,7 @@
#include "Settings.h" #include "Settings.h"
#include "cmsis_os.h" #include "cmsis_os.h"
#include "power.hpp" #include "power.hpp"
uint8_t DetectedAccelerometerVersion = 0; AccelType DetectedAccelerometerVersion = AccelType::Scanning;
bool settingsWereReset = false; bool settingsWereReset = false;
// FreeRTOS variables // FreeRTOS variables

View File

@@ -713,7 +713,7 @@ void showDebugMenu(void) {
break; break;
case 10: case 10:
// Print PCB ID number // Print PCB ID number
OLED::printNumber(DetectedAccelerometerVersion, 2, FontStyle::SMALL); OLED::print(AccelTypeNames[(int)DetectedAccelerometerVersion], FontStyle::SMALL);
break; break;
case 11: case 11:
// Power negotiation status // Power negotiation status
@@ -768,11 +768,11 @@ void showWarnings() {
// We also want to alert if accel or pd is not detected / not responding // We also want to alert if accel or pd is not detected / not responding
// In this case though, we dont want to nag the user _too_ much // In this case though, we dont want to nag the user _too_ much
// So only show first 2 times // So only show first 2 times
while (DetectedAccelerometerVersion == ACCELEROMETERS_SCANNING) { while (DetectedAccelerometerVersion == AccelType::Scanning) {
osDelay(5); osDelay(5);
} }
// Display alert if accelerometer is not detected // Display alert if accelerometer is not detected
if (DetectedAccelerometerVersion == NO_DETECTED_ACCELEROMETER) { if (DetectedAccelerometerVersion == AccelType::None) {
if (getSettingValue(SettingsOptions::AccelMissingWarningCounter) < 2) { if (getSettingValue(SettingsOptions::AccelMissingWarningCounter) < 2) {
nextSettingValue(SettingsOptions::AccelMissingWarningCounter); nextSettingValue(SettingsOptions::AccelMissingWarningCounter);
saveSettings(); saveSettings();

View File

@@ -29,11 +29,11 @@ uint8_t accelInit = 0;
TickType_t lastMovementTime = 0; TickType_t lastMovementTime = 0;
void detectAccelerometerVersion() { void detectAccelerometerVersion() {
DetectedAccelerometerVersion = ACCELEROMETERS_SCANNING; DetectedAccelerometerVersion = AccelType::Scanning;
#ifdef ACCEL_MMA #ifdef ACCEL_MMA
if (MMA8652FC::detect()) { if (MMA8652FC::detect()) {
if (MMA8652FC::initalize()) { if (MMA8652FC::initalize()) {
DetectedAccelerometerVersion = 1; DetectedAccelerometerVersion = AccelType::MMA;
} }
} else } else
#endif #endif
@@ -41,7 +41,7 @@ void detectAccelerometerVersion() {
if (LIS2DH12::detect()) { if (LIS2DH12::detect()) {
// Setup the ST Accelerometer // Setup the ST Accelerometer
if (LIS2DH12::initalize()) { if (LIS2DH12::initalize()) {
DetectedAccelerometerVersion = 2; DetectedAccelerometerVersion = AccelType::LIS;
} }
} else } else
#endif #endif
@@ -49,7 +49,7 @@ void detectAccelerometerVersion() {
if (BMA223::detect()) { if (BMA223::detect()) {
// Setup the BMA223 Accelerometer // Setup the BMA223 Accelerometer
if (BMA223::initalize()) { if (BMA223::initalize()) {
DetectedAccelerometerVersion = 3; DetectedAccelerometerVersion = AccelType::BMA;
} }
} else } else
#endif #endif
@@ -57,7 +57,7 @@ void detectAccelerometerVersion() {
if (MSA301::detect()) { if (MSA301::detect()) {
// Setup the MSA301 Accelerometer // Setup the MSA301 Accelerometer
if (MSA301::initalize()) { if (MSA301::initalize()) {
DetectedAccelerometerVersion = 4; DetectedAccelerometerVersion = AccelType::MSA;
} }
} else } else
#endif #endif
@@ -65,43 +65,43 @@ void detectAccelerometerVersion() {
if (SC7A20::detect()) { if (SC7A20::detect()) {
// Setup the SC7A20 Accelerometer // Setup the SC7A20 Accelerometer
if (SC7A20::initalize()) { if (SC7A20::initalize()) {
DetectedAccelerometerVersion = 5; DetectedAccelerometerVersion = AccelType::SC7;
} }
} else } else
#endif #endif
{ {
// disable imu sensitivity // disable imu sensitivity
setSettingValue(SettingsOptions::Sensitivity, 0); setSettingValue(SettingsOptions::Sensitivity, 0);
DetectedAccelerometerVersion = NO_DETECTED_ACCELEROMETER; DetectedAccelerometerVersion = AccelType::None;
} }
} }
inline void readAccelerometer(int16_t &tx, int16_t &ty, int16_t &tz, Orientation &rotation) { inline void readAccelerometer(int16_t &tx, int16_t &ty, int16_t &tz, Orientation &rotation) {
#ifdef ACCEL_LIS
if (DetectedAccelerometerVersion == 2) {
LIS2DH12::getAxisReadings(tx, ty, tz);
rotation = LIS2DH12::getOrientation();
} else
#endif
#ifdef ACCEL_MMA #ifdef ACCEL_MMA
if (DetectedAccelerometerVersion == 1) { if (DetectedAccelerometerVersion == AccelType::MMA) {
MMA8652FC::getAxisReadings(tx, ty, tz); MMA8652FC::getAxisReadings(tx, ty, tz);
rotation = MMA8652FC::getOrientation(); rotation = MMA8652FC::getOrientation();
} else } else
#endif #endif
#ifdef ACCEL_LIS
if (DetectedAccelerometerVersion == AccelType::LIS) {
LIS2DH12::getAxisReadings(tx, ty, tz);
rotation = LIS2DH12::getOrientation();
} else
#endif
#ifdef ACCEL_BMA #ifdef ACCEL_BMA
if (DetectedAccelerometerVersion == 3) { if (DetectedAccelerometerVersion == AccelType::BMA) {
BMA223::getAxisReadings(tx, ty, tz); BMA223::getAxisReadings(tx, ty, tz);
rotation = BMA223::getOrientation(); rotation = BMA223::getOrientation();
} else } else
#endif #endif
#ifdef ACCEL_MSA #ifdef ACCEL_MSA
if (DetectedAccelerometerVersion == 4) { if (DetectedAccelerometerVersion == AccelType::MSA) {
MSA301::getAxisReadings(tx, ty, tz); MSA301::getAxisReadings(tx, ty, tz);
rotation = MSA301::getOrientation(); rotation = MSA301::getOrientation();
} else } else
#endif #endif
#ifdef ACCEL_SC7 #ifdef ACCEL_SC7
if (DetectedAccelerometerVersion == 5) { if (DetectedAccelerometerVersion == AccelType::SC7) {
SC7A20::getAxisReadings(tx, ty, tz); SC7A20::getAxisReadings(tx, ty, tz);
rotation = SC7A20::getOrientation(); rotation = SC7A20::getOrientation();
} else } else