Fixing up settings
Split advanced settings Fix menu button handling
This commit is contained in:
@@ -21,13 +21,14 @@ typedef struct {
|
||||
uint16_t SleepTemp; //temp to drop to in sleep
|
||||
uint8_t SleepTime; //minutes timeout to sleep
|
||||
uint8_t cutoutSetting; // The voltage we cut out at for under voltage
|
||||
uint8_t OrientationMode; //If true we want to invert the display for lefties
|
||||
uint8_t sensitivity; //Sensitivity of accelerometer (5 bits)
|
||||
uint8_t autoStartMode; //Should the unit automatically jump straight into soldering mode when power is applied
|
||||
uint8_t OrientationMode:2; //If true we want to invert the display for lefties
|
||||
uint8_t sensitivity :4; //Sensitivity of accelerometer (5 bits)
|
||||
uint8_t autoStartMode :2; //Should the unit automatically jump straight into soldering mode when power is applied
|
||||
uint8_t ShutdownTime; //Time until unit shuts down if left alone
|
||||
uint8_t boostModeEnabled; //Boost mode swaps BUT_A in soldering mode to temporary soldering temp over-ride
|
||||
uint8_t coolingTempBlink; //Should the temperature blink on the cool down screen until its <50C
|
||||
uint8_t advancedScreens; //If enabled we draw more detailed screens with smaller fonts
|
||||
uint8_t boostModeEnabled :1; //Boost mode swaps BUT_A in soldering mode to temporary soldering temp over-ride
|
||||
uint8_t coolingTempBlink :1; //Should the temperature blink on the cool down screen until its <50C
|
||||
uint8_t detailedIDLE :1; //Detailed idle screen
|
||||
uint8_t detailedSoldering :1; //Detailed soldering screens
|
||||
uint8_t temperatureInF; //Should the temp be in F or C (true is F)
|
||||
uint16_t voltageDiv; //Voltage divisor factor
|
||||
uint16_t BoostTemp; //Boost mode set point for the iron
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
#ifndef TRANSLATION_H_
|
||||
#define TRANSLATION_H_
|
||||
|
||||
extern const char* SettingsLongNames[15];
|
||||
extern const char* SettingsShortNames[15];
|
||||
extern const char* SettingsLongNames[16];
|
||||
extern const char* SettingsShortNames[16];
|
||||
extern const char* SettingsCalibrationWarning;
|
||||
extern const char* UVLOWarningString;
|
||||
extern const char* SleepingSimpleString;
|
||||
|
||||
@@ -77,7 +77,8 @@ void resetSettings() {
|
||||
systemSettings.SolderingTemp = 320; //Default soldering temp is 320.0 C
|
||||
systemSettings.cutoutSetting = 0; //default to no cut-off voltage
|
||||
systemSettings.version = SETTINGSVERSION; //Store the version number to allow for easier upgrades
|
||||
systemSettings.advancedScreens = 0; //Do we show detailed screens?
|
||||
systemSettings.detailedSoldering = 0; // Detailed soldering screen
|
||||
systemSettings.detailedIDLE=0; // Detailed idle screen (off for first time users)
|
||||
systemSettings.OrientationMode = 2; //Default to automatic
|
||||
systemSettings.sensitivity = 7; //Default high sensitivity
|
||||
systemSettings.voltageDiv = 117; //Default divider from schematic
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "Translation.h"
|
||||
|
||||
#ifdef LANG_EN
|
||||
const char* SettingsLongNames[15] = {
|
||||
const char* SettingsLongNames[16] = {
|
||||
/*These are all the help text for all the settings.*/
|
||||
/*No requirements on spacing or length*/
|
||||
"Power source. Sets cutoff voltage. <DC 10V> <S 3.3V per cell>", //Power Source
|
||||
@@ -16,7 +16,7 @@ const char* SettingsLongNames[15] = {
|
||||
"Shutdown Timeout <Minutes>", //Shutdown Time
|
||||
"Motion Sensitivity <0.Off 1.least sensitive 9.most sensitive>", //Motion Sensitivity
|
||||
"Temperature Unit <C=Celsius F=Fahrenheit>", //Temp Unit
|
||||
"Display detailed information in a smaller font.", //Detailed Information
|
||||
"Display detailed information in a smaller font on the idle screen.", //Detailed Information
|
||||
"Display Orientation <A. Automatic L. Left Handed R. Right Handed>", //Orientation
|
||||
"Enable front key enters boost mode 450C mode when soldering", //Boost enable
|
||||
"Temperature when in \"boost\" mode", //Boost Temp
|
||||
@@ -25,11 +25,12 @@ const char* SettingsLongNames[15] = {
|
||||
"Calibrate tip offset.", //Calibrate Tip
|
||||
"Reset all settings", //Reset Settings
|
||||
"VIN Calibration. Buttons adjust, long press to exit", //VIN Cal
|
||||
"Display detailed information while soldering",//ADV SLD
|
||||
};
|
||||
|
||||
const char* SettingsCalibrationWarning = "Please ensure the tip is at room temperature before continuing!";
|
||||
const char* UVLOWarningString = "LOW VOLT"; //Fixed width 8 chars
|
||||
const char* SleepingSimpleString = "ZZzz"; // Must be <= 4 chars
|
||||
const char* SleepingSimpleString = "Zzzz"; // Must be <= 4 chars
|
||||
const char* SleepingAdvancedString = "Sleeping..."; // <=17 chars
|
||||
const char* WarningSimpleString = "HOT!"; //Must be <= 4 chars
|
||||
const char* WarningAdvancedString = "WARNING! TIP HOT!";
|
||||
@@ -41,14 +42,14 @@ const char SettingLeftChar = 'L';
|
||||
const char SettingAutoChar = 'A';
|
||||
#endif
|
||||
|
||||
const char* SettingsShortNames[15] = { /**/
|
||||
const char* SettingsShortNames[16] = { /**/
|
||||
"PWRSC ", // Power Source (DC or batt)
|
||||
"STMP ", // Sleep Temperature
|
||||
"STME ", // Sleep Timeout
|
||||
"SHTME ", // Shutdown Temperature
|
||||
"MSENSE ", // Motion sensitivity level
|
||||
"TMPUNT ", //Temp in F and C
|
||||
"ADVDSP ", // Advanced display mode enable
|
||||
"ADVIDL ", // Advanced idle display mode enable
|
||||
"DSPROT ", // Display rotation mode
|
||||
"BOOST ", // Boost enabled
|
||||
"BTMP ", // Boost temperature
|
||||
@@ -56,4 +57,6 @@ const char* SettingsShortNames[15] = { /**/
|
||||
"CLBLNK ", // Cooldown blink
|
||||
"TMP CAL?", // Temperature calibration enter menu
|
||||
"RESET? ", // Settings reset command
|
||||
"CAL VIN?", };
|
||||
"CAL VIN?",
|
||||
"ADVSLD ", //advanced soldering screens
|
||||
};
|
||||
|
||||
@@ -21,8 +21,11 @@ static void settings_setSensitivity(void);
|
||||
static void settings_displaySensitivity(void);
|
||||
static void settings_setTempF(void);
|
||||
static void settings_displayTempF(void);
|
||||
static void settings_setAdvancedScreens(void);
|
||||
static void settings_displayAdvancedScreens(void);
|
||||
static void settings_setAdvancedSolderingScreens(void);
|
||||
static void settings_displayAdvancedSolderingScreens(void);
|
||||
static void settings_setAdvancedIDLEScreens(void);
|
||||
static void settings_displayAdvancedIDLEScreens(void);
|
||||
|
||||
static void settings_setDisplayRotation(void);
|
||||
static void settings_displayDisplayRotation(void);
|
||||
static void settings_setBoostModeEnabled(void);
|
||||
@@ -48,7 +51,8 @@ const menuitem settingsMenu[] = { /*Struct used for all settings options in the
|
||||
{ (const char*) SettingsLongNames[3], { settings_setShutdownTime }, { settings_displayShutdownTime } }, /*Shutdown Time*/
|
||||
{ (const char*) SettingsLongNames[4], { settings_setSensitivity }, { settings_displaySensitivity } },/* Motion Sensitivity*/
|
||||
{ (const char*) SettingsLongNames[5], { settings_setTempF }, { settings_displayTempF } },/* Motion Sensitivity*/
|
||||
{ (const char*) SettingsLongNames[6], { settings_setAdvancedScreens }, { settings_displayAdvancedScreens } },/* Advanced screens*/
|
||||
{ (const char*) SettingsLongNames[6], { settings_setAdvancedIDLEScreens }, { settings_displayAdvancedIDLEScreens } },/* Advanced screens*/
|
||||
{ (const char*) SettingsLongNames[15], { settings_setAdvancedSolderingScreens }, { settings_displayAdvancedSolderingScreens } },/* Advanced screens*/
|
||||
{ (const char*) SettingsLongNames[7], { settings_setDisplayRotation }, { settings_displayDisplayRotation } }, /*Display Rotation*/
|
||||
{ (const char*) SettingsLongNames[8], { settings_setBoostModeEnabled }, { settings_displayBoostModeEnabled } }, /*Enable Boost*/
|
||||
{ (const char*) SettingsLongNames[9], { settings_setBoostTemp }, { settings_displayBoostTemp } }, /*Boost Temp*/
|
||||
@@ -129,16 +133,29 @@ static void settings_displaySensitivity(void) {
|
||||
lcd.printNumber(systemSettings.sensitivity, 1);
|
||||
}
|
||||
|
||||
static void settings_setAdvancedScreens(void) {
|
||||
systemSettings.advancedScreens = !systemSettings.advancedScreens;
|
||||
static void settings_setAdvancedSolderingScreens(void) {
|
||||
systemSettings.detailedSoldering = !systemSettings.detailedSoldering;
|
||||
}
|
||||
static void settings_displayAdvancedScreens(void) {
|
||||
lcd.print(SettingsShortNames[6]);
|
||||
if (systemSettings.advancedScreens)
|
||||
static void settings_displayAdvancedSolderingScreens(void) {
|
||||
lcd.print(SettingsShortNames[15]);
|
||||
if (systemSettings.detailedSoldering)
|
||||
lcd.drawChar(SettingTrueChar);
|
||||
else
|
||||
lcd.drawChar(SettingFalseChar);
|
||||
}
|
||||
|
||||
static void settings_setAdvancedIDLEScreens(void) {
|
||||
systemSettings.detailedIDLE = !systemSettings.detailedIDLE;
|
||||
}
|
||||
static void settings_displayAdvancedIDLEScreens(void) {
|
||||
lcd.print(SettingsShortNames[6]);
|
||||
if (systemSettings.detailedIDLE)
|
||||
lcd.drawChar(SettingTrueChar);
|
||||
else
|
||||
lcd.drawChar(SettingFalseChar);
|
||||
}
|
||||
|
||||
|
||||
static void settings_setDisplayRotation(void) {
|
||||
systemSettings.OrientationMode++;
|
||||
systemSettings.OrientationMode = systemSettings.OrientationMode % 3;
|
||||
@@ -169,9 +186,14 @@ static void settings_displayBoostModeEnabled(void) {
|
||||
lcd.drawChar(SettingFalseChar);
|
||||
}
|
||||
static void settings_setBoostTemp(void) {
|
||||
systemSettings.BoostTemp += 10; //Go up 10C at a time
|
||||
if (systemSettings.BoostTemp > 450)
|
||||
systemSettings.BoostTemp = 250; //loop back at 250
|
||||
systemSettings.BoostTemp += 10; //Go up 10 at a time
|
||||
if (systemSettings.temperatureInF) {
|
||||
if (systemSettings.BoostTemp > 850)
|
||||
systemSettings.BoostTemp = 480; //loop back at 250
|
||||
} else {
|
||||
if (systemSettings.BoostTemp > 450)
|
||||
systemSettings.BoostTemp = 250; //loop back at 250
|
||||
}
|
||||
}
|
||||
static void settings_displayBoostTemp(void) {
|
||||
lcd.print(SettingsShortNames[9]);
|
||||
|
||||
@@ -173,7 +173,7 @@ static bool checkVoltageForExit() {
|
||||
if ((v < lookupVoltageLevel(systemSettings.cutoutSetting))) {
|
||||
lcd.clearScreen();
|
||||
lcd.setCursor(0, 0);
|
||||
if (systemSettings.advancedScreens) {
|
||||
if (systemSettings.detailedSoldering) {
|
||||
lcd.setFont(1);
|
||||
lcd.print("Undervoltage");
|
||||
lcd.setCursor(0, 8);
|
||||
@@ -295,13 +295,49 @@ static void gui_settingsMenu() {
|
||||
lcd.setFont(0);
|
||||
lcd.clearScreen();
|
||||
lcd.setCursor(0, 0);
|
||||
|
||||
ButtonState buttons = getButtonState();
|
||||
|
||||
switch (buttons) {
|
||||
case BUTTON_BOTH:
|
||||
earlyExit = true; //will make us exit next loop
|
||||
break;
|
||||
case BUTTON_F_SHORT:
|
||||
//increment
|
||||
if (descriptionStart == 0)
|
||||
settingsMenu[currentScreen].incrementHandler.func();
|
||||
else
|
||||
descriptionStart = 0;
|
||||
break;
|
||||
case BUTTON_B_SHORT:
|
||||
if (descriptionStart == 0)
|
||||
currentScreen++;
|
||||
else
|
||||
descriptionStart = 0;
|
||||
break;
|
||||
case BUTTON_F_LONG:
|
||||
if (HAL_GetTick() - autoRepeatTimer > 200) {
|
||||
settingsMenu[currentScreen].incrementHandler.func();
|
||||
autoRepeatTimer = HAL_GetTick();
|
||||
}
|
||||
break;
|
||||
case BUTTON_B_LONG:
|
||||
if (HAL_GetTick() - autoRepeatTimer > 200) {
|
||||
currentScreen++;
|
||||
autoRepeatTimer = HAL_GetTick();
|
||||
}
|
||||
break;
|
||||
case BUTTON_NONE:
|
||||
break;
|
||||
}
|
||||
|
||||
if (HAL_GetTick() - lastButtonTime < 4000) {
|
||||
settingsMenu[currentScreen].draw.func();
|
||||
descriptionStart = 0;
|
||||
|
||||
} else {
|
||||
//Draw description
|
||||
//draw string starting from descriptionOffset
|
||||
int16_t maxOffset = strlen(settingsMenu[currentScreen].description)+5;
|
||||
int16_t maxOffset = strlen(settingsMenu[currentScreen].description) + 5;
|
||||
if (descriptionStart == 0)
|
||||
descriptionStart = HAL_GetTick();
|
||||
|
||||
@@ -310,37 +346,7 @@ static void gui_settingsMenu() {
|
||||
lcd.setCursor(12 * (7 - descriptionOffset), 0);
|
||||
lcd.print(settingsMenu[currentScreen].description);
|
||||
}
|
||||
ButtonState buttons = getButtonState();
|
||||
if (descriptionStart | (HAL_GetTick() - descriptionStart < 500))
|
||||
buttons = BUTTON_NONE;
|
||||
else {
|
||||
switch (buttons) {
|
||||
case BUTTON_BOTH:
|
||||
earlyExit = true; //will make us exit next loop
|
||||
break;
|
||||
case BUTTON_F_SHORT:
|
||||
//increment
|
||||
settingsMenu[currentScreen].incrementHandler.func();
|
||||
break;
|
||||
case BUTTON_B_SHORT:
|
||||
currentScreen++;
|
||||
break;
|
||||
case BUTTON_F_LONG:
|
||||
if (HAL_GetTick() - autoRepeatTimer > 200) {
|
||||
settingsMenu[currentScreen].incrementHandler.func();
|
||||
autoRepeatTimer = HAL_GetTick();
|
||||
}
|
||||
break;
|
||||
case BUTTON_B_LONG:
|
||||
if (HAL_GetTick() - autoRepeatTimer > 200) {
|
||||
currentScreen++;
|
||||
autoRepeatTimer = HAL_GetTick();
|
||||
}
|
||||
break;
|
||||
case BUTTON_NONE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
lcd.refresh(); //update the LCD
|
||||
GUIDelay();
|
||||
HAL_IWDG_Refresh(&hiwdg);
|
||||
@@ -350,13 +356,13 @@ static void gui_settingsMenu() {
|
||||
resetSettings();
|
||||
saveSettings();
|
||||
}
|
||||
static void gui_showTipTempWarning() {
|
||||
static int gui_showTipTempWarning() {
|
||||
for (;;) {
|
||||
|
||||
uint16_t tipTemp = tipMeasurementToC(getTipRawTemp(0));
|
||||
lcd.clearScreen();
|
||||
lcd.setCursor(0, 0);
|
||||
if (systemSettings.advancedScreens) {
|
||||
if (systemSettings.detailedSoldering) {
|
||||
lcd.setFont(1);
|
||||
lcd.print(WarningAdvancedString);
|
||||
lcd.setCursor(0, 8);
|
||||
@@ -389,11 +395,13 @@ static void gui_showTipTempWarning() {
|
||||
}
|
||||
lcd.refresh();
|
||||
ButtonState buttons = getButtonState();
|
||||
if (buttons == BUTTON_B_SHORT || buttons == BUTTON_F_SHORT || buttons == BUTTON_BOTH)
|
||||
return;
|
||||
if (buttons == BUTTON_F_SHORT)
|
||||
return 1;
|
||||
else if (buttons == BUTTON_B_SHORT || buttons == BUTTON_BOTH)
|
||||
return 0;
|
||||
|
||||
if (tipTemp < 30)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
HAL_IWDG_Refresh(&hiwdg);
|
||||
GUIDelay();
|
||||
@@ -424,7 +432,7 @@ static int gui_SolderingSleepingMode() {
|
||||
|
||||
lcd.clearScreen();
|
||||
lcd.setCursor(0, 0);
|
||||
if (systemSettings.advancedScreens) {
|
||||
if (systemSettings.detailedSoldering) {
|
||||
lcd.setFont(1);
|
||||
lcd.print(SleepingAdvancedString);
|
||||
lcd.setCursor(0, 8);
|
||||
@@ -449,7 +457,7 @@ static int gui_SolderingSleepingMode() {
|
||||
else
|
||||
lcd.drawSymbol(1);
|
||||
}
|
||||
if (systemSettings.ShutdownTime)//only allow shutdown exit if time > 0
|
||||
if (systemSettings.ShutdownTime) //only allow shutdown exit if time > 0
|
||||
if (lastMovementTime)
|
||||
if (((uint32_t) (HAL_GetTick() - lastMovementTime))
|
||||
> (uint32_t) (systemSettings.ShutdownTime * 60 * 1000)) {
|
||||
@@ -646,15 +654,9 @@ void startGUITask(void const * argument) {
|
||||
/*
|
||||
for (;;) {
|
||||
HAL_IWDG_Refresh(&hiwdg);
|
||||
lcd.clearScreen();
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.setFont(0);
|
||||
lcd.print("");
|
||||
lcd.refresh();
|
||||
osDelay(100);
|
||||
HAL_IWDG_Refresh(&hiwdg);
|
||||
|
||||
}*/
|
||||
}
|
||||
*/
|
||||
//^ Kept here for a way to block this thread
|
||||
for (;;) {
|
||||
ButtonState buttons = getButtonState();
|
||||
@@ -717,7 +719,8 @@ void startGUITask(void const * argument) {
|
||||
if (tempWarningState == 0) {
|
||||
currentlyActiveTemperatureTarget = 0; //ensure tip is off
|
||||
lcd.displayOnOff(true); //force LCD on
|
||||
gui_showTipTempWarning();
|
||||
if (gui_showTipTempWarning() == 1)
|
||||
gui_solderingMode(); //re-enter into soldering mode if user pressed the front button
|
||||
tempWarningState = 1;
|
||||
}
|
||||
} else
|
||||
@@ -725,7 +728,7 @@ void startGUITask(void const * argument) {
|
||||
// Clear the lcd buffer
|
||||
lcd.clearScreen();
|
||||
lcd.setCursor(0, 0);
|
||||
if (systemSettings.advancedScreens) {
|
||||
if (systemSettings.detailedIDLE) {
|
||||
lcd.setFont(1);
|
||||
if (tipTemp > 470) {
|
||||
lcd.print("Tip Disconnected!");
|
||||
@@ -853,7 +856,28 @@ void startMOVTask(void const * argument) {
|
||||
datay[currentPointer] = ty;
|
||||
dataz[currentPointer] = tz;
|
||||
currentPointer = (currentPointer + 1) % MOVFilter;
|
||||
#if ACCELDEBUG
|
||||
//Debug for Accel
|
||||
|
||||
avgx = avgy = avgz = 0;
|
||||
for (uint8_t i = 0; i < MOVFilter; i++) {
|
||||
avgx += datax[i];
|
||||
avgy += datay[i];
|
||||
avgz += dataz[i];
|
||||
}
|
||||
avgx /= MOVFilter;
|
||||
avgy /= MOVFilter;
|
||||
avgz /= MOVFilter;
|
||||
lcd.setFont(1);
|
||||
lcd.setCursor(0,0);
|
||||
lcd.printNumber(abs(avgx - tx), 5);
|
||||
lcd.print(" ");
|
||||
lcd.printNumber(abs(avgy - ty), 5);
|
||||
lcd.setCursor(0, 8);
|
||||
lcd.printNumber(abs(avgz - tz), 5);
|
||||
lcd.refresh();
|
||||
|
||||
#endif
|
||||
//Only run the actual processing if the sensitivity is set (aka we are enabled)
|
||||
if (systemSettings.sensitivity) {
|
||||
//calculate averages
|
||||
@@ -874,7 +898,6 @@ void startMOVTask(void const * argument) {
|
||||
lastMovementTime = HAL_GetTick();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
osDelay(20); //Slow down update rate
|
||||
|
||||
Reference in New Issue
Block a user