mirror of
https://github.com/Ralim/IronOS.git
synced 2025-02-26 07:53:55 +00:00
V1.10.2
Closes #16 Fixes pressing a button to exit the settings prompts
This commit is contained in:
@@ -29,7 +29,7 @@ enum {
|
||||
TEMPCAL, //Cal tip temp offset
|
||||
|
||||
} operatingMode;
|
||||
#define SETTINGSOPTIONSCOUNT 9 /*Number of settings in the settings menu*/
|
||||
#define SETTINGSOPTIONSCOUNT 9 /*Number of settings in the settings menu-1*/
|
||||
|
||||
enum {
|
||||
UVCO = 0,
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
* Author: Ralim <ralim@ralimtek.com>
|
||||
*/
|
||||
#include "Modes.h"
|
||||
const char *SettingsLongNames[] = { " Undervoltage Cutout (V)",
|
||||
" Sleep Temperature (C)", " Sleep Timeout (Minutes)",
|
||||
" Shutdown Timeout (Minutes)", " Motion Detection",
|
||||
const char *SettingsLongNames[] = { " Undervoltage Cutout <V>",
|
||||
" Sleep Temperature <C>", " Sleep Timeout <Minutes>",
|
||||
" Shutdown Timeout <Minutes>", " Motion Detection",
|
||||
" Motion Sensitivity", " Temperature Unit",
|
||||
" Temperature Rounding Amount",
|
||||
" Temperature Display Update Rate",
|
||||
" Flip Display for Left Hand" };
|
||||
const uint8_t SettingsLongNamesLengths[] = { 29, 27, 29, 32, 22, 24, 22, 33, 37,
|
||||
25 };
|
||||
uint8_t CalStatus = 0;
|
||||
uint8_t StatusFlags = 0;
|
||||
//This does the required processing and state changes
|
||||
void ProcessUI() {
|
||||
uint8_t Buttons = getButtons(); //read the buttons status
|
||||
@@ -94,70 +94,75 @@ void ProcessUI() {
|
||||
case SETTINGS:
|
||||
//Settings is the mode with the most logic
|
||||
//Here we are in the menu so we need to increment through the sub menus / increase the value
|
||||
if (StatusFlags == 4 && Buttons!=0) {
|
||||
//The user pressed the button to breakout of the settings help prompt
|
||||
StatusFlags=0;
|
||||
} else {
|
||||
if (Buttons & BUT_A) {
|
||||
//A key iterates through the menu
|
||||
if (settingsPage == SETTINGSOPTIONSCOUNT) {
|
||||
//Roll off the end
|
||||
settingsPage = 0; //reset
|
||||
operatingMode = STARTUP; //reset back to the startup
|
||||
saveSettings(); //Save the settings
|
||||
} else {
|
||||
++settingsPage; //move to the next option
|
||||
}
|
||||
} else if (Buttons & BUT_B) {
|
||||
//B changes the value selected
|
||||
switch (settingsPage) {
|
||||
case UVCO:
|
||||
//we are incrementing the cutout voltage
|
||||
systemSettings.cutoutVoltage += 1; //Go up 1V at a jump
|
||||
if (systemSettings.cutoutVoltage > 24)
|
||||
systemSettings.cutoutVoltage = 10;
|
||||
break;
|
||||
case SLEEP_TEMP:
|
||||
systemSettings.SleepTemp += 100; //Go up 10C at a time
|
||||
if (systemSettings.SleepTemp > 3000)
|
||||
systemSettings.SleepTemp = 1000;//cant sleep higher than 300
|
||||
break;
|
||||
case SLEEP_TIME:
|
||||
++systemSettings.SleepTime; //Go up 1 minute at a time
|
||||
if (systemSettings.SleepTime > 30)
|
||||
systemSettings.SleepTime = 1;//cant set time over 30 mins
|
||||
//Remember that ^ is the time of no movement
|
||||
break;
|
||||
case SHUTDOWN_TIME:
|
||||
++systemSettings.ShutdownTime;
|
||||
if (systemSettings.ShutdownTime > 60)
|
||||
systemSettings.ShutdownTime = 0; //wrap to off
|
||||
break;
|
||||
case MOTIONDETECT:
|
||||
systemSettings.movementEnabled =
|
||||
!systemSettings.movementEnabled;
|
||||
break;
|
||||
case TEMPDISPLAY:
|
||||
systemSettings.displayTempInF =
|
||||
!systemSettings.displayTempInF;
|
||||
break;
|
||||
case LEFTY:
|
||||
systemSettings.flipDisplay = !systemSettings.flipDisplay;
|
||||
break;
|
||||
case MOTIONSENSITIVITY:
|
||||
systemSettings.sensitivity++;
|
||||
systemSettings.sensitivity = systemSettings.sensitivity % 3;
|
||||
|
||||
if (Buttons & BUT_A) {
|
||||
//A key iterates through the menu
|
||||
if (settingsPage == SETTINGSOPTIONSCOUNT) {
|
||||
//Roll off the end
|
||||
settingsPage = 0; //reset
|
||||
operatingMode = STARTUP; //reset back to the startup
|
||||
saveSettings(); //Save the settings
|
||||
} else {
|
||||
++settingsPage; //move to the next option
|
||||
}
|
||||
} else if (Buttons & BUT_B) {
|
||||
//B changes the value selected
|
||||
switch (settingsPage) {
|
||||
case UVCO:
|
||||
//we are incrementing the cutout voltage
|
||||
systemSettings.cutoutVoltage += 1; //Go up 1V at a jump
|
||||
if (systemSettings.cutoutVoltage > 24)
|
||||
systemSettings.cutoutVoltage = 10;
|
||||
break;
|
||||
case SLEEP_TEMP:
|
||||
systemSettings.SleepTemp += 100; //Go up 10C at a time
|
||||
if (systemSettings.SleepTemp > 3000)
|
||||
systemSettings.SleepTemp = 1000;//cant sleep higher than 300
|
||||
break;
|
||||
case SLEEP_TIME:
|
||||
++systemSettings.SleepTime; //Go up 1 minute at a time
|
||||
if (systemSettings.SleepTime > 30)
|
||||
systemSettings.SleepTime = 1; //cant set time over 30 mins
|
||||
//Remember that ^ is the time of no movement
|
||||
break;
|
||||
case SHUTDOWN_TIME:
|
||||
++systemSettings.ShutdownTime;
|
||||
if (systemSettings.ShutdownTime > 60)
|
||||
systemSettings.ShutdownTime = 0; //wrap to off
|
||||
break;
|
||||
case MOTIONDETECT:
|
||||
systemSettings.movementEnabled =
|
||||
!systemSettings.movementEnabled;
|
||||
break;
|
||||
case TEMPDISPLAY:
|
||||
systemSettings.displayTempInF = !systemSettings.displayTempInF;
|
||||
break;
|
||||
case LEFTY:
|
||||
systemSettings.flipDisplay = !systemSettings.flipDisplay;
|
||||
break;
|
||||
case MOTIONSENSITIVITY:
|
||||
systemSettings.sensitivity++;
|
||||
systemSettings.sensitivity = systemSettings.sensitivity % 3;
|
||||
break;
|
||||
case TEMPROUNDING:
|
||||
systemSettings.temperatureRounding++;
|
||||
systemSettings.temperatureRounding =
|
||||
systemSettings.temperatureRounding % 3;
|
||||
break;
|
||||
case DISPUPDATERATE:
|
||||
systemSettings.displayUpdateSpeed++;
|
||||
systemSettings.displayUpdateSpeed =
|
||||
systemSettings.displayUpdateSpeed % 3;
|
||||
break;
|
||||
|
||||
break;
|
||||
case TEMPROUNDING:
|
||||
systemSettings.temperatureRounding++;
|
||||
systemSettings.temperatureRounding =
|
||||
systemSettings.temperatureRounding % 3;
|
||||
break;
|
||||
case DISPUPDATERATE:
|
||||
systemSettings.displayUpdateSpeed++;
|
||||
systemSettings.displayUpdateSpeed =
|
||||
systemSettings.displayUpdateSpeed % 3;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -217,10 +222,10 @@ void ProcessUI() {
|
||||
|
||||
if (Buttons == BUT_A) {
|
||||
//Single button press, cycle over to the DC display
|
||||
CalStatus = 0;
|
||||
StatusFlags = 0;
|
||||
operatingMode = DCINDISP;
|
||||
} else if (Buttons == BUT_B) {
|
||||
CalStatus = 0;
|
||||
StatusFlags = 0;
|
||||
operatingMode = TEMPCAL;
|
||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||
//If the user is holding both button, exit the screen
|
||||
@@ -231,13 +236,13 @@ void ProcessUI() {
|
||||
break;
|
||||
case DCINDISP: {
|
||||
//This lets the user check the input voltage
|
||||
if (CalStatus == 0) {
|
||||
if (StatusFlags == 0) {
|
||||
if (Buttons == BUT_A) {
|
||||
//Single button press, cycle over to the temp display
|
||||
operatingMode = THERMOMETER;
|
||||
} else if (Buttons == BUT_B) {
|
||||
//dc cal mode
|
||||
CalStatus = 1;
|
||||
StatusFlags = 1;
|
||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||
//If the user is holding both button, exit the screen
|
||||
operatingMode = STARTUP;
|
||||
@@ -255,7 +260,7 @@ void ProcessUI() {
|
||||
else
|
||||
systemSettings.voltageDiv++;
|
||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||
CalStatus = 0;
|
||||
StatusFlags = 0;
|
||||
saveSettings();
|
||||
}
|
||||
if (systemSettings.voltageDiv < 120)
|
||||
@@ -272,13 +277,13 @@ void ProcessUI() {
|
||||
operatingMode = THERMOMETER;
|
||||
} else if (Buttons == BUT_A) {
|
||||
//Try and calibrate
|
||||
if (CalStatus == 0) {
|
||||
if (StatusFlags == 0) {
|
||||
if ((readTipTemp() < 300) && (readSensorTemp() < 300)) {
|
||||
CalStatus = 1;
|
||||
StatusFlags = 1;
|
||||
systemSettings.tempCalibration = readTipTemp();
|
||||
saveSettings();
|
||||
} else {
|
||||
CalStatus = 2;
|
||||
StatusFlags = 2;
|
||||
}
|
||||
}
|
||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||
@@ -394,6 +399,7 @@ void DrawUI() {
|
||||
case SETTINGS:
|
||||
//We are prompting the user the setting name
|
||||
if (millis() - getLastButtonPress() > 3000) {
|
||||
StatusFlags=4;
|
||||
//If the user has idled for > 3 seconds, show the long name for the selected setting instead
|
||||
//draw from settingsLongTestScrollPos through to end of screen
|
||||
uint8_t lengthLeft = SettingsLongNamesLengths[settingsPage]
|
||||
@@ -543,7 +549,7 @@ void DrawUI() {
|
||||
case DCINDISP: {
|
||||
uint16_t voltage = readDCVoltage(systemSettings.voltageDiv); //get X10 voltage
|
||||
|
||||
if (CalStatus == 0 || ((millis() % 1000) > 500)) {
|
||||
if (StatusFlags == 0 || ((millis() % 1000) > 500)) {
|
||||
OLED_DrawString("IN", 2);
|
||||
OLED_DrawChar((voltage / 100) % 10, 2);
|
||||
voltage -= (voltage / 100) * 100;
|
||||
@@ -560,11 +566,11 @@ void DrawUI() {
|
||||
break;
|
||||
case TEMPCAL: {
|
||||
|
||||
if (CalStatus == 0) {
|
||||
if (StatusFlags == 0) {
|
||||
OLED_DrawString("CAL TEMP", 8);
|
||||
} else if (CalStatus == 1) {
|
||||
} else if (StatusFlags == 1) {
|
||||
OLED_DrawString("CAL OK ", 8);
|
||||
} else if (CalStatus == 2) {
|
||||
} else if (StatusFlags == 2) {
|
||||
OLED_DrawString("CAL FAIL", 8);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<targetDefinitions xmlns="http://openstm32.org/stm32TargetDefinitions" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://openstm32.org/stm32TargetDefinitions stm32TargetDefinitions.xsd">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE targetDefinitions [
|
||||
<!ELEMENT targetDefinitions (board)>
|
||||
<!ELEMENT board (name, dbgIF+, dbgDEV, mcuId)>
|
||||
<!ELEMENT name (#PCDATA)>
|
||||
<!ELEMENT dbgIF (#PCDATA)>
|
||||
<!ELEMENT dbgDEV (#PCDATA)>
|
||||
<!ELEMENT mcuId (#PCDATA)>
|
||||
<!ATTLIST board id CDATA #REQUIRED>
|
||||
]>
|
||||
|
||||
<targetDefinitions>
|
||||
<board id="ts100">
|
||||
<name>ts100</name>
|
||||
<mcuId>stm32f103t8ux</mcuId>
|
||||
<dbgIF>SWD</dbgIF>
|
||||
<dbgDEV>ST-Link</dbgDEV>
|
||||
<mcuId>stm32f103t8ux</mcuId>
|
||||
</board>
|
||||
</targetDefinitions>
|
||||
|
||||
Reference in New Issue
Block a user