From 0a7b6145af005b4c074d07817e81be19825efcde Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 8 Jul 2017 18:12:28 +1000 Subject: [PATCH] V1.10.2 Closes #16 Fixes pressing a button to exit the settings prompts --- workspace/ts100/inc/Modes.h | 2 +- workspace/ts100/src/Modes.c | 162 +++++++++++++++++++----------------- workspace/ts100/ts100.xml | 16 +++- 3 files changed, 98 insertions(+), 82 deletions(-) diff --git a/workspace/ts100/inc/Modes.h b/workspace/ts100/inc/Modes.h index efc071ef..c9dbf914 100644 --- a/workspace/ts100/inc/Modes.h +++ b/workspace/ts100/inc/Modes.h @@ -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, diff --git a/workspace/ts100/src/Modes.c b/workspace/ts100/src/Modes.c index e98e9e67..0c70f80a 100644 --- a/workspace/ts100/src/Modes.c +++ b/workspace/ts100/src/Modes.c @@ -5,16 +5,16 @@ * Author: Ralim */ #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 ", + " Sleep Temperature ", " Sleep Timeout ", + " Shutdown Timeout ", " 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); } } diff --git a/workspace/ts100/ts100.xml b/workspace/ts100/ts100.xml index c610a25d..967d8c13 100644 --- a/workspace/ts100/ts100.xml +++ b/workspace/ts100/ts100.xml @@ -1,9 +1,19 @@ - - + + + + + + + + +]> + + ts100 - stm32f103t8ux SWD ST-Link + stm32f103t8ux