1
0
forked from me/IronOS
Files
IronOS/workspace/TS100/src/gui.cpp
Ben V. Brown 347968e4ef Fillout settings functions
Settings menu works
Movement working & TMP calibrated
Tip reading sensibily
Accuracy seems ok
Trimmed down overshoot by biasing integral
Saving to flash working, detailed idle
Sleep mode
Description scrolls
Building for DFU working
Motion detection update
Use manual alg instead, using highpass filter, then sum current change vs rolling average
Re-shuffle the pwm code organisation
2017-09-12 12:59:06 +10:00

197 lines
6.7 KiB
C++

/*
* gui.cpp
*
* Created on: 3Sep.,2017
* Author: Ben V. Brown
*/
#include "gui.h"
static void settings_setInputVRange(void);
static void settings_displayInputVRange(void);
static void settings_setSleepTemp(void);
static void settings_displaySleepTemp(void);
static void settings_setSleepTime(void);
static void settings_displaySleepTime(void);
static void settings_setShutdownTime(void);
static void settings_displayShutdownTime(void);
static void settings_setSensitivity(void);
static void settings_displaySensitivity(void);
static void settings_setAdvancedScreens(void);
static void settings_displayAdvancedScreens(void);
static void settings_setDisplayRotation(void);
static void settings_displayDisplayRotation(void);
static void settings_setBoostModeEnabled(void);
static void settings_displayBoostModeEnabled(void);
static void settings_setBoostTemp(void);
static void settings_displayBoostTemp(void);
static void settings_setAutomaticStartMode(void);
static void settings_displayAutomaticStartMode(void);
static void settings_setCoolingBlinkEnabled(void);
static void settings_displayCoolingBlinkEnabled(void);
static void settings_setResetSettings(void);
static void settings_displayResetSettings(void);
bool settingsResetRequest=false;
const menuitem settingsMenu[] = { /*Struct used for all settings options in the settings menu*/
{ (const char*) SettingsLongNames[0], { settings_setInputVRange }, { settings_displayInputVRange } },/*Voltage input*/
{ (const char*) SettingsLongNames[1], { settings_setSleepTemp }, { settings_displaySleepTemp } }, /*Sleep Temp*/
{ (const char*) SettingsLongNames[2], { settings_setSleepTime }, { settings_displaySleepTime } }, /*Sleep Time*/
{ (const char*) SettingsLongNames[3], { settings_setShutdownTime }, { settings_displayShutdownTime } }, /*Shutdown Time*/
{ (const char*) SettingsLongNames[4], { settings_setSensitivity }, { settings_displaySensitivity } },/* Motion Sensitivity*/
{ (const char*) SettingsLongNames[4], { settings_setAdvancedScreens }, { settings_displayAdvancedScreens } },/* Advanced screens*/
{ (const char*) SettingsLongNames[6], { settings_setDisplayRotation }, { settings_displayDisplayRotation } }, /**/
{ (const char*) SettingsLongNames[7], { settings_setBoostModeEnabled }, { settings_displayBoostModeEnabled } }, /**/
{ (const char*) SettingsLongNames[8], { settings_setBoostTemp }, { settings_displayBoostTemp } }, /**/
{ (const char*) SettingsLongNames[9], { settings_setAutomaticStartMode }, { settings_displayAutomaticStartMode } },/**/
{ (const char*) SettingsLongNames[10], { settings_setCoolingBlinkEnabled }, { settings_displayCoolingBlinkEnabled } }, /**/
{ (const char*) SettingsLongNames[11], { settings_setResetSettings }, { settings_displayResetSettings } }, /**/
{ NULL, { NULL }, { NULL } } //end of menu marker. DO NOT REMOVE
};
static void settings_setInputVRange(void) {
systemSettings.cutoutSetting = (systemSettings.cutoutSetting + 1) % 5;
}
static void settings_displayInputVRange(void) {
lcd.print(SettingsShortNames[0]);
if (systemSettings.cutoutSetting) {
lcd.drawChar('0' + 2 + systemSettings.cutoutSetting);
lcd.drawChar('S');
} else {
lcd.print("DC");
}
}
static void settings_setSleepTemp(void) {
systemSettings.SleepTemp += 10;
if (systemSettings.SleepTemp > 300)
systemSettings.SleepTemp = 50;
}
static void settings_displaySleepTemp(void) {
lcd.print(SettingsShortNames[1]);
lcd.printNumber(systemSettings.SleepTemp, 3);
}
static void settings_setSleepTime(void) {
++systemSettings.SleepTime; //Go up 1 minute at a time
if (systemSettings.SleepTime > 16)
systemSettings.SleepTime = 1; //can't set time over 30 mins
//Remember that ^ is the time of no movement
}
static void settings_displaySleepTime(void) {
lcd.print(SettingsShortNames[2]);
if (systemSettings.SleepTime < 6) {
lcd.printNumber(systemSettings.SleepTime * 10, 2);
lcd.drawChar('S');
} else {
lcd.printNumber(systemSettings.SleepTime - 5, 2);
lcd.drawChar('M');
}
}
static void settings_setShutdownTime(void) {
++systemSettings.ShutdownTime;
if (systemSettings.ShutdownTime > 60)
systemSettings.ShutdownTime = 0; //wrap to off
}
static void settings_displayShutdownTime(void) {
lcd.print(SettingsShortNames[3]);
lcd.printNumber(systemSettings.ShutdownTime, 2);
}
static void settings_setSensitivity(void) {
systemSettings.sensitivity++;
systemSettings.sensitivity = systemSettings.sensitivity % 10;
}
static void settings_displaySensitivity(void) {
lcd.print(SettingsShortNames[4]);
lcd.printNumber(systemSettings.sensitivity, 1);
}
static void settings_setAdvancedScreens(void) {
systemSettings.advancedScreens = !systemSettings.advancedScreens;
}
static void settings_displayAdvancedScreens(void) {
lcd.print(SettingsShortNames[5]);
if (systemSettings.advancedScreens)
lcd.drawChar('T');
else
lcd.drawChar('F');
}
static void settings_setDisplayRotation(void) {
systemSettings.OrientationMode++;
systemSettings.OrientationMode = systemSettings.OrientationMode % 3;
}
static void settings_displayDisplayRotation(void) {
lcd.print(SettingsShortNames[6]);
switch (systemSettings.OrientationMode) {
case 0:
lcd.drawChar('R');
break;
case 1:
lcd.drawChar('L');
break;
case 2:
lcd.drawChar('A');
break;
}
}
static void settings_setBoostModeEnabled(void) {
systemSettings.boostModeEnabled = !systemSettings.boostModeEnabled;
}
static void settings_displayBoostModeEnabled(void) {
lcd.print(SettingsShortNames[7]);
if (systemSettings.boostModeEnabled)
lcd.drawChar('T');
else
lcd.drawChar('F');
}
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
}
static void settings_displayBoostTemp(void) {
lcd.print(SettingsShortNames[8]);
lcd.printNumber(systemSettings.BoostTemp, 3);
}
static void settings_setAutomaticStartMode(void) {
systemSettings.autoStartMode++;
systemSettings.autoStartMode %= 2;
}
static void settings_displayAutomaticStartMode(void) {
lcd.print(SettingsShortNames[9]);
switch (systemSettings.autoStartMode) {
case 0:
lcd.drawChar('F');
break;
case 1:
lcd.drawChar('T');
break;
}
}
static void settings_setCoolingBlinkEnabled(void) {
systemSettings.coolingTempBlink = !systemSettings.coolingTempBlink;
}
static void settings_displayCoolingBlinkEnabled(void) {
lcd.print(SettingsShortNames[10]);
if (systemSettings.coolingTempBlink)
lcd.drawChar('T');
else
lcd.drawChar('F');
}
static void settings_setResetSettings(void) {
settingsResetRequest = !settingsResetRequest;
}
static void settings_displayResetSettings(void) {
lcd.print(SettingsShortNames[11]);
if (settingsResetRequest)
lcd.drawChar('T');
else
lcd.drawChar('F');
}