Merge branch 'master' into 7dayTimers
Resolved Conflicts: Arduino/BTCDieselHeater/src/OLED/ScreenManager.cpp Arduino/BTCDieselHeater/src/OLED/SetTimerScreen.cpp Arduino/BTCDieselHeater/src/OLED/SetTimerScreen.h
This commit is contained in:
commit
df4a1837d9
|
@ -159,6 +159,7 @@ TelnetSpy DebugPort;
|
||||||
sRxLine PCline;
|
sRxLine PCline;
|
||||||
long lastRxTime; // used to observe inter character delays
|
long lastRxTime; // used to observe inter character delays
|
||||||
bool bHasOEMController = false;
|
bool bHasOEMController = false;
|
||||||
|
bool bHasOEMLCDController = false;
|
||||||
bool bHasHtrData = false;
|
bool bHasHtrData = false;
|
||||||
|
|
||||||
bool bReportBlueWireData = REPORT_RAW_DATA;
|
bool bReportBlueWireData = REPORT_RAW_DATA;
|
||||||
|
@ -488,6 +489,7 @@ void loop()
|
||||||
}
|
}
|
||||||
if(CommState.is(CommStates::OEMCtrlRx)) {
|
if(CommState.is(CommStates::OEMCtrlRx)) {
|
||||||
bHasOEMController = false;
|
bHasOEMController = false;
|
||||||
|
bHasOEMLCDController = false;
|
||||||
if(bReportRecyleEvents)
|
if(bReportRecyleEvents)
|
||||||
DebugPort.println("Timeout collecting OEM controller data, returning to Idle State");
|
DebugPort.println("Timeout collecting OEM controller data, returning to Idle State");
|
||||||
}
|
}
|
||||||
|
@ -532,6 +534,7 @@ void loop()
|
||||||
// Skip state machine immediately to BTC_Tx, sending our own settings.
|
// Skip state machine immediately to BTC_Tx, sending our own settings.
|
||||||
bHasHtrData = false;
|
bHasHtrData = false;
|
||||||
bHasOEMController = false;
|
bHasOEMController = false;
|
||||||
|
bHasOEMLCDController = false;
|
||||||
bool isBTCmaster = true;
|
bool isBTCmaster = true;
|
||||||
TxManage.PrepareFrame(DefaultBTCParams, isBTCmaster); // use our parameters, and mix in NV storage values
|
TxManage.PrepareFrame(DefaultBTCParams, isBTCmaster); // use our parameters, and mix in NV storage values
|
||||||
TxManage.Start(timenow);
|
TxManage.Start(timenow);
|
||||||
|
@ -593,6 +596,9 @@ void loop()
|
||||||
|
|
||||||
// filled OEM controller frame
|
// filled OEM controller frame
|
||||||
OEMCtrlFrame.setTime();
|
OEMCtrlFrame.setTime();
|
||||||
|
// LCD controllers use 0x76 as first byte, rotary knobs use 0x78
|
||||||
|
bHasOEMLCDController = (OEMCtrlFrame.Controller.Byte0 != 0x78);
|
||||||
|
|
||||||
CommState.set(CommStates::HeaterRx1);
|
CommState.set(CommStates::HeaterRx1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1125,6 +1131,11 @@ bool hasOEMcontroller()
|
||||||
return bHasOEMController;
|
return bHasOEMController;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool hasOEMLCDcontroller()
|
||||||
|
{
|
||||||
|
return bHasOEMLCDController;
|
||||||
|
}
|
||||||
|
|
||||||
int getSmartError()
|
int getSmartError()
|
||||||
{
|
{
|
||||||
return SmartError.getError();
|
return SmartError.getError();
|
||||||
|
|
|
@ -112,6 +112,9 @@ CDetailedScreen::show()
|
||||||
showGlowPlug(power);
|
showGlowPlug(power);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_showTarget)
|
||||||
|
showFanV(getHeaterInfo().getFan_Voltage());
|
||||||
|
else
|
||||||
showFan(getHeaterInfo().getFan_Actual());
|
showFan(getHeaterInfo().getFan_Actual());
|
||||||
|
|
||||||
showFuel(getHeaterInfo().getPump_Actual());
|
showFuel(getHeaterInfo().getPump_Actual());
|
||||||
|
@ -227,6 +230,7 @@ CDetailedScreen::keyHandler(uint8_t event)
|
||||||
if(event & key_Centre) { // short Centre press - show target
|
if(event & key_Centre) { // short Centre press - show target
|
||||||
_showTarget = millis() + 3500;
|
_showTarget = millis() + 3500;
|
||||||
}
|
}
|
||||||
|
_ScreenManager.reqUpdate();
|
||||||
}
|
}
|
||||||
_keyRepeatCount = -1;
|
_keyRepeatCount = -1;
|
||||||
}
|
}
|
||||||
|
@ -354,6 +358,21 @@ CDetailedScreen::showFan(int RPM)
|
||||||
_printMenuText(X_FAN_ICON + (W_FAN_ICON/2), Y_BASELINE, msg, false, eCentreJustify);
|
_printMenuText(X_FAN_ICON + (W_FAN_ICON/2), Y_BASELINE, msg, false, eCentreJustify);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CDetailedScreen::showFanV(float volts)
|
||||||
|
{
|
||||||
|
// NOTE: fan rotation animation performed in animateOLED
|
||||||
|
_animateRPM = volts != 0; // used by animation routine
|
||||||
|
|
||||||
|
_display.setTextColor(WHITE);
|
||||||
|
char msg[16];
|
||||||
|
sprintf(msg, "%.1fV", volts);
|
||||||
|
#ifdef MINI_FANLABEL
|
||||||
|
CTransientFont AF(_display, &MINIFONT); // temporarily use a mini font
|
||||||
|
#endif
|
||||||
|
_printMenuText(X_FAN_ICON + (W_FAN_ICON/2), Y_BASELINE, msg, false, eCentreJustify);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CDetailedScreen::showFuel(float rate)
|
CDetailedScreen::showFuel(float rate)
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,6 +45,7 @@ class CDetailedScreen : public CScreenHeader
|
||||||
void showBodyThermometer(int actual);
|
void showBodyThermometer(int actual);
|
||||||
void showGlowPlug(float power);
|
void showGlowPlug(float power);
|
||||||
void showFan(int RPM);
|
void showFan(int RPM);
|
||||||
|
void showFanV(float volts);
|
||||||
void showFuel(float rate);
|
void showFuel(float rate);
|
||||||
void showRunState(int state, int errstate);
|
void showRunState(int state, int errstate);
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -37,19 +37,28 @@
|
||||||
|
|
||||||
CFuelMixtureScreen::CFuelMixtureScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
CFuelMixtureScreen::CFuelMixtureScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
||||||
{
|
{
|
||||||
_rowSel = 0;
|
_initUI();
|
||||||
_colSel = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CFuelMixtureScreen::onSelect()
|
CFuelMixtureScreen::onSelect()
|
||||||
{
|
{
|
||||||
|
CPasswordScreen::onSelect();
|
||||||
|
_initUI();
|
||||||
|
|
||||||
adjPump[0] = getHeaterInfo().getPump_Min();
|
adjPump[0] = getHeaterInfo().getPump_Min();
|
||||||
adjPump[1] = getHeaterInfo().getPump_Max();
|
adjPump[1] = getHeaterInfo().getPump_Max();
|
||||||
adjFan[0] = getHeaterInfo().getFan_Min();
|
adjFan[0] = getHeaterInfo().getFan_Min();
|
||||||
adjFan[1] = getHeaterInfo().getFan_Max();
|
adjFan[1] = getHeaterInfo().getFan_Max();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CFuelMixtureScreen::_initUI()
|
||||||
|
{
|
||||||
|
_rowSel = 0;
|
||||||
|
_colSel = 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CFuelMixtureScreen::show()
|
CFuelMixtureScreen::show()
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,6 +34,7 @@ class CFuelMixtureScreen : public CPasswordScreen {
|
||||||
int _rowSel;
|
int _rowSel;
|
||||||
int _colSel;
|
int _colSel;
|
||||||
void _adjustSetting(int dir);
|
void _adjustSetting(int dir);
|
||||||
|
void _initUI();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CFuelMixtureScreen(C128x64_OLED& display, CScreenManager& mgr);
|
CFuelMixtureScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||||
|
|
|
@ -42,21 +42,29 @@ static const int plugPowers[] = { 35, 40, 45, 80, 85, 90};
|
||||||
|
|
||||||
CHeaterSettingsScreen::CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
CHeaterSettingsScreen::CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
||||||
{
|
{
|
||||||
_rowSel = 0;
|
_initUI();
|
||||||
_fanSensor = 1;
|
_fanSensor = 1;
|
||||||
_glowDrive = 5;
|
_glowDrive = 5;
|
||||||
_sysVoltage = 12;
|
_sysVoltage = 12;
|
||||||
_animateCount = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CHeaterSettingsScreen::onSelect()
|
CHeaterSettingsScreen::onSelect()
|
||||||
{
|
{
|
||||||
|
CPasswordScreen::onSelect();
|
||||||
|
_initUI();
|
||||||
_fanSensor = getHeaterInfo().getFan_Sensor();
|
_fanSensor = getHeaterInfo().getFan_Sensor();
|
||||||
_glowDrive = getHeaterInfo().getGlow_Drive();
|
_glowDrive = getHeaterInfo().getGlow_Drive();
|
||||||
_sysVoltage = int(getHeaterInfo().getSystemVoltage());
|
_sysVoltage = int(getHeaterInfo().getSystemVoltage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CHeaterSettingsScreen::_initUI()
|
||||||
|
{
|
||||||
|
_rowSel = 0;
|
||||||
|
_animateCount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CHeaterSettingsScreen::show()
|
CHeaterSettingsScreen::show()
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,6 +36,7 @@ class CHeaterSettingsScreen : public CPasswordScreen
|
||||||
int _fanSensor;
|
int _fanSensor;
|
||||||
int _glowDrive;
|
int _glowDrive;
|
||||||
int _animateCount;
|
int _animateCount;
|
||||||
|
void _initUI();
|
||||||
public:
|
public:
|
||||||
CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr);
|
CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||||
bool show();
|
bool show();
|
||||||
|
|
|
@ -36,6 +36,18 @@
|
||||||
|
|
||||||
|
|
||||||
CPasswordScreen::CPasswordScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
CPasswordScreen::CPasswordScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
||||||
|
{
|
||||||
|
_initUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CPasswordScreen::onSelect()
|
||||||
|
{
|
||||||
|
_initUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CPasswordScreen::_initUI()
|
||||||
{
|
{
|
||||||
_bGetPassword = false;
|
_bGetPassword = false;
|
||||||
_bPasswordOK = false;
|
_bPasswordOK = false;
|
||||||
|
@ -45,7 +57,6 @@ CPasswordScreen::CPasswordScreen(C128x64_OLED& display, CScreenManager& mgr) : C
|
||||||
_SaveTime = 0;
|
_SaveTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPasswordScreen::show()
|
CPasswordScreen::show()
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,8 +38,10 @@ protected:
|
||||||
void _getPassword();
|
void _getPassword();
|
||||||
bool _isPasswordOK() { return _bPasswordOK; };
|
bool _isPasswordOK() { return _bPasswordOK; };
|
||||||
void _showStoringMessage();
|
void _showStoringMessage();
|
||||||
|
void _initUI();
|
||||||
public:
|
public:
|
||||||
CPasswordScreen(C128x64_OLED& display, CScreenManager& mgr);
|
CPasswordScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||||
|
void onSelect();
|
||||||
bool show();
|
bool show();
|
||||||
bool keyHandler(uint8_t event);
|
bool keyHandler(uint8_t event);
|
||||||
bool animate();
|
bool animate();
|
||||||
|
|
|
@ -35,6 +35,26 @@
|
||||||
|
|
||||||
|
|
||||||
CPrimingScreen::CPrimingScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
CPrimingScreen::CPrimingScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
||||||
|
{
|
||||||
|
_initUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CPrimingScreen::onSelect()
|
||||||
|
{
|
||||||
|
_stopPump();
|
||||||
|
_initUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CPrimingScreen::onExit()
|
||||||
|
{
|
||||||
|
_stopPump();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
CPrimingScreen::_initUI()
|
||||||
{
|
{
|
||||||
_PrimeStop = 0;
|
_PrimeStop = 0;
|
||||||
_PrimeCheck = 0;
|
_PrimeCheck = 0;
|
||||||
|
@ -42,7 +62,6 @@ CPrimingScreen::CPrimingScreen(C128x64_OLED& display, CScreenManager& mgr) : CSc
|
||||||
_colSel = 0;
|
_colSel = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPrimingScreen::show()
|
CPrimingScreen::show()
|
||||||
{
|
{
|
||||||
|
@ -92,12 +111,12 @@ CPrimingScreen::show()
|
||||||
// recognise if heater has stopped pump, after an initial holdoff upon first starting
|
// recognise if heater has stopped pump, after an initial holdoff upon first starting
|
||||||
long tDelta = millis() - _PrimeCheck;
|
long tDelta = millis() - _PrimeCheck;
|
||||||
if(_PrimeCheck && tDelta > 0 && pumpHz < 0.1) {
|
if(_PrimeCheck && tDelta > 0 && pumpHz < 0.1) {
|
||||||
stopPump();
|
_stopPump();
|
||||||
}
|
}
|
||||||
// test if time is up, stop priming if so
|
// test if time is up, stop priming if so
|
||||||
tDelta = millis() - _PrimeStop;
|
tDelta = millis() - _PrimeStop;
|
||||||
if(_PrimeStop && tDelta > 0) {
|
if(_PrimeStop && tDelta > 0) {
|
||||||
stopPump();
|
_stopPump();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_PrimeStop) {
|
if(_PrimeStop) {
|
||||||
|
@ -191,7 +210,7 @@ CPrimingScreen::keyHandler(uint8_t event)
|
||||||
_PrimeCheck = millis() + 3000; // holdoff upon start before testing for heater shutting off pump
|
_PrimeCheck = millis() + 3000; // holdoff upon start before testing for heater shutting off pump
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
stopPump();
|
_stopPump();
|
||||||
}
|
}
|
||||||
|
|
||||||
_ScreenManager.reqUpdate();
|
_ScreenManager.reqUpdate();
|
||||||
|
@ -200,7 +219,7 @@ CPrimingScreen::keyHandler(uint8_t event)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CPrimingScreen::stopPump()
|
CPrimingScreen::_stopPump()
|
||||||
{
|
{
|
||||||
reqPumpPrime(false);
|
reqPumpPrime(false);
|
||||||
_PrimeCheck = 0;
|
_PrimeCheck = 0;
|
||||||
|
|
|
@ -33,9 +33,12 @@ class CPrimingScreen : public CScreenHeader {
|
||||||
unsigned long _PrimeCheck;
|
unsigned long _PrimeCheck;
|
||||||
int _rowSel;
|
int _rowSel;
|
||||||
int _colSel;
|
int _colSel;
|
||||||
void stopPump();
|
void _stopPump();
|
||||||
|
void _initUI();
|
||||||
public:
|
public:
|
||||||
CPrimingScreen(C128x64_OLED& display, CScreenManager& mgr);
|
CPrimingScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||||
|
void onSelect();
|
||||||
|
void onExit();
|
||||||
bool show();
|
bool show();
|
||||||
bool keyHandler(uint8_t event);
|
bool keyHandler(uint8_t event);
|
||||||
bool animate() { return CScreen::animate(); };
|
bool animate() { return CScreen::animate(); };
|
||||||
|
|
|
@ -44,6 +44,10 @@ CScreen::onSelect()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CScreen::onExit()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CScreen::_printMenuText(int x, int y, const char* str, bool selected, eJUSTIFY justify, int border, int radius)
|
CScreen::_printMenuText(int x, int y, const char* str, bool selected, eJUSTIFY justify, int border, int radius)
|
||||||
|
|
|
@ -49,6 +49,7 @@ public:
|
||||||
CScreen(C128x64_OLED& disp, CScreenManager& mgr);
|
CScreen(C128x64_OLED& disp, CScreenManager& mgr);
|
||||||
virtual ~CScreen();
|
virtual ~CScreen();
|
||||||
virtual void onSelect();
|
virtual void onSelect();
|
||||||
|
virtual void onExit();
|
||||||
virtual bool animate();
|
virtual bool animate();
|
||||||
virtual bool show();
|
virtual bool show();
|
||||||
virtual bool keyHandler(uint8_t event) { return false; };
|
virtual bool keyHandler(uint8_t event) { return false; };
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "HeaterSettingsScreen.h"
|
#include "HeaterSettingsScreen.h"
|
||||||
#include "SettingsScreen.h"
|
#include "SettingsScreen.h"
|
||||||
#include "TimerChartScreen.h"
|
#include "TimerChartScreen.h"
|
||||||
|
#include "InheritSettingsScreen.h"
|
||||||
#include <Wire.h>
|
#include <Wire.h>
|
||||||
#include "../cfg/pins.h"
|
#include "../cfg/pins.h"
|
||||||
#include "../cfg/BTCConfig.h"
|
#include "../cfg/BTCConfig.h"
|
||||||
|
@ -98,21 +99,22 @@ const unsigned char DieselSplash [] PROGMEM = {
|
||||||
CScreenManager::CScreenManager()
|
CScreenManager::CScreenManager()
|
||||||
{
|
{
|
||||||
_pDisplay = NULL;
|
_pDisplay = NULL;
|
||||||
_currentScreen = -1;
|
_rootMenuScreen = -1;
|
||||||
_timerScreen = -1;
|
_timerScreen = -1;
|
||||||
_settingScreen = -1;
|
_tuningScreen = -1;
|
||||||
_bReqUpdate = false;
|
_bReqUpdate = false;
|
||||||
_bSetTime = false;
|
_bSetTimeScreenActive = false;
|
||||||
|
_bInheritScreenActive = false;
|
||||||
_DimTime = millis() + 60000;
|
_DimTime = millis() + 60000;
|
||||||
_pRebootScreen = NULL;
|
_pRebootScreen = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
CScreenManager::~CScreenManager()
|
CScreenManager::~CScreenManager()
|
||||||
{
|
{
|
||||||
for(int i=0; i < _Screens.size(); i++) {
|
for(int i=0; i < _RootScreens.size(); i++) {
|
||||||
if(_Screens[i]) {
|
if(_RootScreens[i]) {
|
||||||
delete _Screens[i];
|
delete _RootScreens[i];
|
||||||
_Screens[i] = NULL;
|
_RootScreens[i] = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(int i=0; i < _TimerScreens.size(); i++) {
|
for(int i=0; i < _TimerScreens.size(); i++) {
|
||||||
|
@ -154,14 +156,13 @@ CScreenManager::begin(bool bNoClock)
|
||||||
_pDisplay->display();
|
_pDisplay->display();
|
||||||
|
|
||||||
DebugPort.println("Creating Screens");
|
DebugPort.println("Creating Screens");
|
||||||
_Screens.push_back(new CDetailedScreen(*_pDisplay, *this)); // detail control
|
_RootScreens.push_back(new CDetailedScreen(*_pDisplay, *this)); // detail control
|
||||||
_Screens.push_back(new CBasicScreen(*_pDisplay, *this)); // basic control
|
_RootScreens.push_back(new CBasicScreen(*_pDisplay, *this)); // basic control
|
||||||
if(!bNoClock)
|
if(!bNoClock)
|
||||||
_Screens.push_back(new CClockScreen(*_pDisplay, *this)); // clock
|
_RootScreens.push_back(new CClockScreen(*_pDisplay, *this)); // clock
|
||||||
_Screens.push_back(new CPrimingScreen(*_pDisplay, *this)); // mode / priming
|
_RootScreens.push_back(new CPrimingScreen(*_pDisplay, *this)); // mode / priming
|
||||||
_Screens.push_back(new CWiFiScreen(*_pDisplay, *this)); // comms info
|
_RootScreens.push_back(new CWiFiScreen(*_pDisplay, *this)); // comms info
|
||||||
_Screens.push_back(new CSettingsScreen(*_pDisplay, *this)); // tuning info
|
_RootScreens.push_back(new CSettingsScreen(*_pDisplay, *this)); // tuning info
|
||||||
_SetTimeScreen = new CSetClockScreen(*_pDisplay, *this); // clock set
|
|
||||||
_TimerScreens.push_back(new CTimerChartScreen(*_pDisplay, *this, 0)); // timer chart
|
_TimerScreens.push_back(new CTimerChartScreen(*_pDisplay, *this, 0)); // timer chart
|
||||||
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 0)); // set timer 1
|
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 0)); // set timer 1
|
||||||
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 1)); // set timer 2
|
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 1)); // set timer 2
|
||||||
|
@ -177,16 +178,18 @@ CScreenManager::begin(bool bNoClock)
|
||||||
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 11)); // set timer 12
|
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 11)); // set timer 12
|
||||||
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 12)); // set timer 13
|
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 12)); // set timer 13
|
||||||
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 13)); // set timer 14
|
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 13)); // set timer 14
|
||||||
_SettingsScreens.push_back(new CFuelMixtureScreen(*_pDisplay, *this)); // tuning
|
_TuningScreens.push_back(new CFuelMixtureScreen(*_pDisplay, *this)); // tuning
|
||||||
_SettingsScreens.push_back(new CHeaterSettingsScreen(*_pDisplay, *this)); // tuning
|
_TuningScreens.push_back(new CHeaterSettingsScreen(*_pDisplay, *this)); // tuning
|
||||||
|
_SetTimeScreen = new CSetClockScreen(*_pDisplay, *this); // clock set
|
||||||
|
_InheritScreen = new CInheritSettingsScreen(*_pDisplay, *this); // inherit OEM settings
|
||||||
|
|
||||||
#if RTC_USE_DS3231==0 && RTC_USE_DS1307==0 && RTC_USE_PCF8523==0
|
#if RTC_USE_DS3231==0 && RTC_USE_DS1307==0 && RTC_USE_PCF8523==0
|
||||||
_currentScreen = 6; // bring up clock set screen first if using millis based RTC!
|
_rootMenuScreen = 6; // bring up clock set screen first if using millis based RTC!
|
||||||
#else
|
#else
|
||||||
_currentScreen = 1; // basic control screen
|
_rootMenuScreen = 1; // basic control screen
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_switchScreen();
|
_enterScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -195,9 +198,23 @@ CScreenManager::checkUpdate()
|
||||||
if(_DimTime) {
|
if(_DimTime) {
|
||||||
long tDelta = millis() - _DimTime;
|
long tDelta = millis() - _DimTime;
|
||||||
if(tDelta > 0) {
|
if(tDelta > 0) {
|
||||||
|
// time to dim the display
|
||||||
// if(NVstore.getDimTime())
|
// if(NVstore.getDimTime())
|
||||||
_pDisplay->dim(true);
|
_pDisplay->dim(true);
|
||||||
_DimTime = 0;
|
_DimTime = 0;
|
||||||
|
|
||||||
|
_leaveScreen();
|
||||||
|
// fall back to main menu
|
||||||
|
selectTimerScreen(false);
|
||||||
|
selectSetTimeScreen(false);
|
||||||
|
selectSettingsScreen(false);
|
||||||
|
selectInheritScreen(false);
|
||||||
|
// sticky screens are Detailed Control, Basic Control, or Clock.
|
||||||
|
// otherwise return to Basic Control screen
|
||||||
|
if(_rootMenuScreen > 2) {
|
||||||
|
_rootMenuScreen = 1;
|
||||||
|
}
|
||||||
|
_enterScreen();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,13 +225,18 @@ CScreenManager::checkUpdate()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(_bSetTime) {
|
if(_bSetTimeScreenActive) {
|
||||||
_SetTimeScreen->show();
|
_SetTimeScreen->show();
|
||||||
_bReqUpdate = false;
|
_bReqUpdate = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if(_settingScreen >= 0) {
|
else if(_bInheritScreenActive) {
|
||||||
_SettingsScreens[_settingScreen]->show();
|
_InheritScreen->show();
|
||||||
|
_bReqUpdate = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if(_tuningScreen >= 0) {
|
||||||
|
_TuningScreens[_tuningScreen]->show();
|
||||||
_bReqUpdate = false;
|
_bReqUpdate = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -223,8 +245,8 @@ CScreenManager::checkUpdate()
|
||||||
_bReqUpdate = false;
|
_bReqUpdate = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if(_currentScreen >= 0) {
|
else if(_rootMenuScreen >= 0) {
|
||||||
_Screens[_currentScreen]->show();
|
_RootScreens[_rootMenuScreen]->show();
|
||||||
_bReqUpdate = false;
|
_bReqUpdate = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -242,9 +264,11 @@ CScreenManager::reqUpdate()
|
||||||
bool
|
bool
|
||||||
CScreenManager::animate()
|
CScreenManager::animate()
|
||||||
{
|
{
|
||||||
if(_settingScreen >= 0) return _SettingsScreens[_settingScreen]->animate();
|
if(_tuningScreen >= 0) return _TuningScreens[_tuningScreen]->animate();
|
||||||
|
if(_bSetTimeScreenActive) return _SetTimeScreen->animate();
|
||||||
|
if(_bInheritScreenActive) return _InheritScreen->animate();
|
||||||
if(_timerScreen >= 0) return _TimerScreens[_timerScreen]->animate();
|
if(_timerScreen >= 0) return _TimerScreens[_timerScreen]->animate();
|
||||||
if(_currentScreen >= 0) return _Screens[_currentScreen]->animate();
|
if(_rootMenuScreen >= 0) return _RootScreens[_rootMenuScreen]->animate();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,54 +280,75 @@ CScreenManager::refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CScreenManager::_switchScreen()
|
CScreenManager::_enterScreen()
|
||||||
{
|
{
|
||||||
if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onSelect();
|
if(_bSetTimeScreenActive) _SetTimeScreen->onSelect();
|
||||||
else if(_settingScreen >= 0) _SettingsScreens[_settingScreen]->onSelect();
|
else if(_bInheritScreenActive) _InheritScreen->onSelect();
|
||||||
else if(_currentScreen >= 0) _Screens[_currentScreen]->onSelect();
|
else if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onSelect();
|
||||||
|
else if(_tuningScreen >= 0) _TuningScreens[_tuningScreen]->onSelect();
|
||||||
|
else if(_rootMenuScreen >= 0) _RootScreens[_rootMenuScreen]->onSelect();
|
||||||
|
|
||||||
reqUpdate();
|
reqUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CScreenManager::_leaveScreen()
|
||||||
|
{
|
||||||
|
if(_bSetTimeScreenActive) _SetTimeScreen->onExit();
|
||||||
|
else if(_bInheritScreenActive) _InheritScreen->onExit();
|
||||||
|
else if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onExit();
|
||||||
|
else if(_tuningScreen >= 0) _TuningScreens[_tuningScreen]->onExit();
|
||||||
|
else if(_rootMenuScreen >= 0) _RootScreens[_rootMenuScreen]->onExit();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CScreenManager::nextScreen()
|
CScreenManager::nextScreen()
|
||||||
{
|
{
|
||||||
if(_bSetTime) {
|
if(_bSetTimeScreenActive || _bInheritScreenActive) {
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(_timerScreen >= 0) {
|
else if(_timerScreen >= 0) {
|
||||||
|
_leaveScreen();
|
||||||
_timerScreen++;
|
_timerScreen++;
|
||||||
ROLLUPPERLIMIT(_timerScreen, _TimerScreens.size()-1, 0);
|
ROLLUPPERLIMIT(_timerScreen, _TimerScreens.size()-1, 0);
|
||||||
|
_enterScreen();
|
||||||
}
|
}
|
||||||
else if(_settingScreen >= 0) {
|
else if(_tuningScreen >= 0) {
|
||||||
_settingScreen++;
|
_leaveScreen();
|
||||||
ROLLUPPERLIMIT(_settingScreen, _SettingsScreens.size()-1, 0);
|
_tuningScreen++;
|
||||||
|
ROLLUPPERLIMIT(_tuningScreen, _TuningScreens.size()-1, 0);
|
||||||
|
_enterScreen();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_currentScreen++;
|
_leaveScreen();
|
||||||
ROLLUPPERLIMIT(_currentScreen, _Screens.size()-1, 0);
|
_rootMenuScreen++;
|
||||||
|
ROLLUPPERLIMIT(_rootMenuScreen, _RootScreens.size()-1, 0);
|
||||||
|
_enterScreen();
|
||||||
}
|
}
|
||||||
_switchScreen();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CScreenManager::prevScreen()
|
CScreenManager::prevScreen()
|
||||||
{
|
{
|
||||||
if(_bSetTime) {
|
if(_bSetTimeScreenActive || _bInheritScreenActive) {
|
||||||
}
|
}
|
||||||
else if(_timerScreen >=0) {
|
else if(_timerScreen >=0) {
|
||||||
|
_leaveScreen();
|
||||||
_timerScreen--;
|
_timerScreen--;
|
||||||
ROLLLOWERLIMIT(_timerScreen, 0, _TimerScreens.size()-1);
|
ROLLLOWERLIMIT(_timerScreen, 0, _TimerScreens.size()-1);
|
||||||
|
_enterScreen();
|
||||||
}
|
}
|
||||||
else if(_settingScreen >= 0) {
|
else if(_tuningScreen >= 0) {
|
||||||
_settingScreen--;
|
_leaveScreen();
|
||||||
ROLLLOWERLIMIT(_settingScreen, 0, _SettingsScreens.size()-1);
|
_tuningScreen--;
|
||||||
|
ROLLLOWERLIMIT(_tuningScreen, 0, _TuningScreens.size()-1);
|
||||||
|
_enterScreen();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_currentScreen--;
|
_leaveScreen();
|
||||||
ROLLLOWERLIMIT(_currentScreen, 0, _Screens.size()-1);
|
_rootMenuScreen--;
|
||||||
|
ROLLLOWERLIMIT(_rootMenuScreen, 0, _RootScreens.size()-1);
|
||||||
|
_enterScreen();
|
||||||
}
|
}
|
||||||
_switchScreen();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -317,39 +362,58 @@ CScreenManager::keyHandler(uint8_t event)
|
||||||
|
|
||||||
_DimTime = (millis() + NVstore.getDimTime()) | 1;
|
_DimTime = (millis() + NVstore.getDimTime()) | 1;
|
||||||
|
|
||||||
// call handler for active screen
|
// call key handler for active screen
|
||||||
if(_bSetTime) _SetTimeScreen->keyHandler(event);
|
if(_bSetTimeScreenActive) _SetTimeScreen->keyHandler(event);
|
||||||
else if(_settingScreen >= 0) _SettingsScreens[_settingScreen]->keyHandler(event);
|
else if(_bInheritScreenActive) _InheritScreen->keyHandler(event);
|
||||||
|
else if(_tuningScreen >= 0) _TuningScreens[_tuningScreen]->keyHandler(event);
|
||||||
else if(_timerScreen >= 0) _TimerScreens[_timerScreen]->keyHandler(event);
|
else if(_timerScreen >= 0) _TimerScreens[_timerScreen]->keyHandler(event);
|
||||||
else if(_currentScreen >= 0) _Screens[_currentScreen]->keyHandler(event);
|
else if(_rootMenuScreen >= 0) _RootScreens[_rootMenuScreen]->keyHandler(event);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CScreenManager::_cancelBranchScreens()
|
||||||
|
{
|
||||||
|
_timerScreen = -1;
|
||||||
|
_tuningScreen = -1;
|
||||||
|
_bSetTimeScreenActive = false;
|
||||||
|
_bInheritScreenActive = false;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CScreenManager::selectTimerScreen(bool show)
|
CScreenManager::selectTimerScreen(bool show)
|
||||||
{
|
{
|
||||||
|
_leaveScreen();
|
||||||
|
_cancelBranchScreens();
|
||||||
_timerScreen = show ? 0 : -1;
|
_timerScreen = show ? 0 : -1;
|
||||||
_settingScreen = -1;
|
_enterScreen();
|
||||||
_bSetTime = false;
|
|
||||||
_switchScreen();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CScreenManager::selectSettingsScreen(bool show)
|
CScreenManager::selectSettingsScreen(bool show)
|
||||||
{
|
{
|
||||||
_settingScreen = show ? 0 : -1;
|
_leaveScreen();
|
||||||
_timerScreen = -1;
|
_cancelBranchScreens();
|
||||||
_bSetTime = false;
|
_tuningScreen = show ? 0 : -1;
|
||||||
_switchScreen();
|
_enterScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CScreenManager::selectSetTimeScreen(bool show)
|
CScreenManager::selectSetTimeScreen(bool show)
|
||||||
{
|
{
|
||||||
_bSetTime = show;
|
_leaveScreen();
|
||||||
_settingScreen = -1;
|
_cancelBranchScreens();
|
||||||
_timerScreen = -1;
|
_bSetTimeScreenActive = show;
|
||||||
_switchScreen();
|
_enterScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CScreenManager::selectInheritScreen(bool show)
|
||||||
|
{
|
||||||
|
_leaveScreen();
|
||||||
|
_cancelBranchScreens();
|
||||||
|
_bInheritScreenActive = show;
|
||||||
|
_enterScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -31,18 +31,22 @@ class CScreen;
|
||||||
class CRebootScreen;
|
class CRebootScreen;
|
||||||
|
|
||||||
class CScreenManager {
|
class CScreenManager {
|
||||||
std::vector<CScreen*> _Screens;
|
std::vector<CScreen*> _RootScreens;
|
||||||
std::vector<CScreen*> _TimerScreens;
|
std::vector<CScreen*> _TimerScreens;
|
||||||
std::vector<CScreen*> _SettingsScreens;
|
std::vector<CScreen*> _TuningScreens;
|
||||||
CScreen* _SetTimeScreen;
|
CScreen* _SetTimeScreen;
|
||||||
|
CScreen* _InheritScreen;
|
||||||
C128x64_OLED* _pDisplay;
|
C128x64_OLED* _pDisplay;
|
||||||
int _currentScreen;
|
int _rootMenuScreen;
|
||||||
int _timerScreen;
|
int _timerScreen;
|
||||||
int _settingScreen;
|
int _tuningScreen;
|
||||||
bool _bSetTime;
|
bool _bSetTimeScreenActive;
|
||||||
|
bool _bInheritScreenActive;
|
||||||
unsigned long _DimTime;
|
unsigned long _DimTime;
|
||||||
bool _bReqUpdate;
|
bool _bReqUpdate;
|
||||||
void _switchScreen();
|
void _enterScreen();
|
||||||
|
void _leaveScreen();
|
||||||
|
void _cancelBranchScreens();
|
||||||
CRebootScreen* _pRebootScreen;
|
CRebootScreen* _pRebootScreen;
|
||||||
public:
|
public:
|
||||||
CScreenManager();
|
CScreenManager();
|
||||||
|
@ -59,6 +63,7 @@ public:
|
||||||
void selectTimerScreen(bool show);
|
void selectTimerScreen(bool show);
|
||||||
void selectSetTimeScreen(bool show);
|
void selectSetTimeScreen(bool show);
|
||||||
void selectSettingsScreen(bool show);
|
void selectSettingsScreen(bool show);
|
||||||
|
void selectInheritScreen(bool show);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // __SCREEN_MANAGER_H__
|
#endif // __SCREEN_MANAGER_H__
|
||||||
|
|
|
@ -36,6 +36,18 @@
|
||||||
|
|
||||||
|
|
||||||
CSetClockScreen::CSetClockScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
CSetClockScreen::CSetClockScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
||||||
|
{
|
||||||
|
_initUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CSetClockScreen::onSelect()
|
||||||
|
{
|
||||||
|
_initUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CSetClockScreen::_initUI()
|
||||||
{
|
{
|
||||||
_rowSel = 0;
|
_rowSel = 0;
|
||||||
_nextT = millis();
|
_nextT = millis();
|
||||||
|
@ -148,7 +160,7 @@ CSetClockScreen::keyHandler(uint8_t event)
|
||||||
_ScreenManager.selectSetTimeScreen(false);
|
_ScreenManager.selectSetTimeScreen(false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
adjTimeDate(-1);
|
_adjTimeDate(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// press RIGHT
|
// press RIGHT
|
||||||
|
@ -157,7 +169,7 @@ CSetClockScreen::keyHandler(uint8_t event)
|
||||||
_ScreenManager.selectSetTimeScreen(false);
|
_ScreenManager.selectSetTimeScreen(false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
adjTimeDate(+1);
|
_adjTimeDate(+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// press UP
|
// press UP
|
||||||
|
@ -179,11 +191,11 @@ CSetClockScreen::keyHandler(uint8_t event)
|
||||||
if(_rowSel>=1) {
|
if(_rowSel>=1) {
|
||||||
// hold RIGHT
|
// hold RIGHT
|
||||||
if(event & key_Right) {
|
if(event & key_Right) {
|
||||||
adjTimeDate(+1);
|
_adjTimeDate(+1);
|
||||||
}
|
}
|
||||||
// hold LEFT
|
// hold LEFT
|
||||||
if(event & key_Left) {
|
if(event & key_Left) {
|
||||||
adjTimeDate(-1);
|
_adjTimeDate(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -194,7 +206,7 @@ CSetClockScreen::keyHandler(uint8_t event)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CSetClockScreen::adjTimeDate(int dir)
|
CSetClockScreen::_adjTimeDate(int dir)
|
||||||
{
|
{
|
||||||
int days;
|
int days;
|
||||||
switch(_rowSel) {
|
switch(_rowSel) {
|
||||||
|
|
|
@ -36,10 +36,12 @@ class CSetClockScreen : public CScreenHeader {
|
||||||
BTCDateTime working;
|
BTCDateTime working;
|
||||||
unsigned long _SaveTime;
|
unsigned long _SaveTime;
|
||||||
|
|
||||||
void adjTimeDate(int dir);
|
void _adjTimeDate(int dir);
|
||||||
|
void _initUI();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CSetClockScreen(C128x64_OLED& display, CScreenManager& mgr);
|
CSetClockScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||||
|
void onSelect();
|
||||||
bool show();
|
bool show();
|
||||||
void showTime(int);
|
void showTime(int);
|
||||||
bool keyHandler(uint8_t event);
|
bool keyHandler(uint8_t event);
|
||||||
|
|
|
@ -39,9 +39,7 @@ const char* briefDOW[] = { "S", "M", "T", "W", "T", "F", "S" };
|
||||||
|
|
||||||
CSetTimerScreen::CSetTimerScreen(C128x64_OLED& display, CScreenManager& mgr, int instance) : CScreenHeader(display, mgr)
|
CSetTimerScreen::CSetTimerScreen(C128x64_OLED& display, CScreenManager& mgr, int instance) : CScreenHeader(display, mgr)
|
||||||
{
|
{
|
||||||
_rowSel = 0;
|
_initUI();
|
||||||
_colSel = 0;
|
|
||||||
_SaveTime = 0;
|
|
||||||
_ConflictTime = 0;
|
_ConflictTime = 0;
|
||||||
_conflictID = 0;
|
_conflictID = 0;
|
||||||
_timerID = instance;
|
_timerID = instance;
|
||||||
|
@ -50,9 +48,18 @@ CSetTimerScreen::CSetTimerScreen(C128x64_OLED& display, CScreenManager& mgr, int
|
||||||
void
|
void
|
||||||
CSetTimerScreen::onSelect()
|
CSetTimerScreen::onSelect()
|
||||||
{
|
{
|
||||||
|
_initUI();
|
||||||
NVstore.getTimerInfo(_timerID, _timerInfo);
|
NVstore.getTimerInfo(_timerID, _timerInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CSetTimerScreen::_initUI()
|
||||||
|
{
|
||||||
|
_rowSel = 0;
|
||||||
|
_colSel = 0;
|
||||||
|
_SaveTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CSetTimerScreen::show()
|
CSetTimerScreen::show()
|
||||||
{
|
{
|
||||||
|
@ -242,8 +249,8 @@ CSetTimerScreen::keyHandler(uint8_t event)
|
||||||
bHeld = true;
|
bHeld = true;
|
||||||
if(_rowSel == 1) {
|
if(_rowSel == 1) {
|
||||||
if(_colSel < 4) {
|
if(_colSel < 4) {
|
||||||
if(event & key_Left) adjust(-1);
|
if(event & key_Left) _adjust(-1);
|
||||||
if(event & key_Right) adjust(+1);
|
if(event & key_Right) _adjust(+1);
|
||||||
}
|
}
|
||||||
else if(_colSel == 4) {
|
else if(_colSel == 4) {
|
||||||
if(event & key_Right) {
|
if(event & key_Right) {
|
||||||
|
@ -268,7 +275,7 @@ CSetTimerScreen::keyHandler(uint8_t event)
|
||||||
if(event & key_Left) {
|
if(event & key_Left) {
|
||||||
switch(_rowSel) {
|
switch(_rowSel) {
|
||||||
case 1:
|
case 1:
|
||||||
adjust(-1);
|
_adjust(-1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -292,7 +299,7 @@ CSetTimerScreen::keyHandler(uint8_t event)
|
||||||
switch(_rowSel) {
|
switch(_rowSel) {
|
||||||
case 1:
|
case 1:
|
||||||
// adjust selected item
|
// adjust selected item
|
||||||
adjust(+1);
|
_adjust(+1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -320,7 +327,7 @@ CSetTimerScreen::keyHandler(uint8_t event)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
CSetTimerScreen::adjust(int dir)
|
CSetTimerScreen::_adjust(int dir)
|
||||||
{
|
{
|
||||||
int days;
|
int days;
|
||||||
int maskDOW = 0x01 << _colSel; // if doing Day of Week - (_rowSel == 2)
|
int maskDOW = 0x01 << _colSel; // if doing Day of Week - (_rowSel == 2)
|
||||||
|
|
|
@ -38,8 +38,9 @@ class CSetTimerScreen : public CScreenHeader {
|
||||||
unsigned long _ConflictTime;
|
unsigned long _ConflictTime;
|
||||||
int _conflictID;
|
int _conflictID;
|
||||||
sTimer _timerInfo;
|
sTimer _timerInfo;
|
||||||
void adjust(int dir);
|
void _adjust(int dir);
|
||||||
void _printEnabledTimers();
|
void _printEnabledTimers();
|
||||||
|
void _initUI();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CSetTimerScreen(C128x64_OLED& display, CScreenManager& mgr, int instance);
|
CSetTimerScreen(C128x64_OLED& display, CScreenManager& mgr, int instance);
|
||||||
|
|
|
@ -42,9 +42,23 @@ static const int plugPowers[] = { 35, 40, 45, 80, 85, 90};
|
||||||
|
|
||||||
CSettingsScreen::CSettingsScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
CSettingsScreen::CSettingsScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
||||||
{
|
{
|
||||||
_animateCount = 0;
|
_initUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CSettingsScreen::onSelect()
|
||||||
|
{
|
||||||
|
// ensure standard entry to screen - especially after a dimming timeout
|
||||||
|
CPasswordScreen::onSelect();
|
||||||
|
_initUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CSettingsScreen::_initUI()
|
||||||
|
{
|
||||||
|
// ensure standard entry to screen - especially after a dimming timeout
|
||||||
|
_animateCount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CSettingsScreen::show()
|
CSettingsScreen::show()
|
||||||
|
@ -63,14 +77,10 @@ CSettingsScreen::show()
|
||||||
|
|
||||||
sprintf(str, "Min: %.1f/%d", getHeaterInfo().getPump_Min(), getHeaterInfo().getFan_Min());
|
sprintf(str, "Min: %.1f/%d", getHeaterInfo().getPump_Min(), getHeaterInfo().getFan_Min());
|
||||||
_printMenuText(0, Line2, str);
|
_printMenuText(0, Line2, str);
|
||||||
// sprintf(str, "SN-%d", getHeaterInfo().getFan_Sensor());
|
|
||||||
// _printMenuText(_display.width(), yPos, str, false, eRightJustify);
|
|
||||||
|
|
||||||
sprintf(str, "Max: %.1f/%d", getHeaterInfo().getPump_Max(), getHeaterInfo().getFan_Max());
|
sprintf(str, "Max: %.1f/%d", getHeaterInfo().getPump_Max(), getHeaterInfo().getFan_Max());
|
||||||
_printMenuText(0, Line1, str);
|
_printMenuText(0, Line1, str);
|
||||||
// sprintf(str, "PF-%d", getHeaterInfo().getGlow_Drive());
|
|
||||||
// _printMenuText(_display.width(), yPos, str, false, eRightJustify);
|
|
||||||
// navigation line
|
|
||||||
int yPos = 53;
|
int yPos = 53;
|
||||||
int xPos = _display.xCentre();
|
int xPos = _display.xCentre();
|
||||||
_printMenuText(xPos, yPos, "<- enter ->", true, eCentreJustify);
|
_printMenuText(xPos, yPos, "<- enter ->", true, eCentreJustify);
|
||||||
|
@ -82,6 +92,9 @@ CSettingsScreen::show()
|
||||||
bool
|
bool
|
||||||
CSettingsScreen::animate()
|
CSettingsScreen::animate()
|
||||||
{
|
{
|
||||||
|
if(CScreen::animate())
|
||||||
|
return true;
|
||||||
|
|
||||||
char msg[16];
|
char msg[16];
|
||||||
|
|
||||||
if(isPasswordBusy()) { // Password screen activity
|
if(isPasswordBusy()) { // Password screen activity
|
||||||
|
@ -151,8 +164,13 @@ CSettingsScreen::keyHandler(uint8_t event)
|
||||||
}
|
}
|
||||||
// press UP
|
// press UP
|
||||||
if(event & (key_Up | key_Centre)) {
|
if(event & (key_Up | key_Centre)) {
|
||||||
if(hasOEMcontroller())
|
if(hasOEMcontroller()) {
|
||||||
|
if(event & key_Centre)
|
||||||
_reqOEMWarning();
|
_reqOEMWarning();
|
||||||
|
else {
|
||||||
|
_ScreenManager.selectInheritScreen(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
_getPassword();
|
_getPassword();
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,11 +30,13 @@ class CScreenManager;
|
||||||
|
|
||||||
class CSettingsScreen : public CPasswordScreen {
|
class CSettingsScreen : public CPasswordScreen {
|
||||||
int _animateCount;
|
int _animateCount;
|
||||||
|
void _initUI();
|
||||||
public:
|
public:
|
||||||
CSettingsScreen(C128x64_OLED& display, CScreenManager& mgr);
|
CSettingsScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||||
bool show();
|
bool show();
|
||||||
bool keyHandler(uint8_t event);
|
bool keyHandler(uint8_t event);
|
||||||
bool animate();
|
bool animate();
|
||||||
|
void onSelect();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -23,9 +23,6 @@
|
||||||
#include "KeyPad.h"
|
#include "KeyPad.h"
|
||||||
#include "../Protocol/helpers.h"
|
#include "../Protocol/helpers.h"
|
||||||
#include "../Wifi/BTCWifi.h"
|
#include "../Wifi/BTCWifi.h"
|
||||||
// #include "fonts/Tahoma8.h"
|
|
||||||
// #include "fonts/FranklinGothic.h"
|
|
||||||
// #include "fonts/Arial.h"
|
|
||||||
#include "../Utility/NVstorage.h"
|
#include "../Utility/NVstorage.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -40,12 +37,23 @@
|
||||||
#define STA_HOLD_TIME 10
|
#define STA_HOLD_TIME 10
|
||||||
|
|
||||||
CWiFiScreen::CWiFiScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
CWiFiScreen::CWiFiScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
||||||
|
{
|
||||||
|
_initUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CWiFiScreen::onSelect()
|
||||||
|
{
|
||||||
|
_initUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CWiFiScreen::_initUI()
|
||||||
{
|
{
|
||||||
_rowSel = 0;
|
_rowSel = 0;
|
||||||
_bShowMAC = false;
|
_bShowMAC = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CWiFiScreen::show()
|
CWiFiScreen::show()
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,12 +31,14 @@ class CScreenManager;
|
||||||
class CWiFiScreen : public CScreenHeader {
|
class CWiFiScreen : public CScreenHeader {
|
||||||
public:
|
public:
|
||||||
CWiFiScreen(C128x64_OLED& display, CScreenManager& mgr);
|
CWiFiScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||||
|
void onSelect();
|
||||||
bool show();
|
bool show();
|
||||||
bool keyHandler(uint8_t event);
|
bool keyHandler(uint8_t event);
|
||||||
private:
|
private:
|
||||||
int _rowSel;
|
int _rowSel;
|
||||||
int _repeatCount;
|
int _repeatCount;
|
||||||
bool _bShowMAC;
|
bool _bShowMAC;
|
||||||
|
void _initUI();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -50,6 +50,7 @@ extern void resetWebModerator();
|
||||||
extern void resetJSONmoderator();
|
extern void resetJSONmoderator();
|
||||||
extern const char* getBlueWireStatStr();
|
extern const char* getBlueWireStatStr();
|
||||||
extern bool hasOEMcontroller();
|
extern bool hasOEMcontroller();
|
||||||
|
extern bool hasOEMLCDcontroller();
|
||||||
extern int getBlueWireStat();
|
extern int getBlueWireStat();
|
||||||
extern int getSmartError();
|
extern int getSmartError();
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@ Working so far:
|
||||||
To be implemented
|
To be implemented
|
||||||
--------------------------
|
--------------------------
|
||||||
* Add 2 external digital inputs, 2 digital outputs, analogue input 433MHz Rx stream, 433MHz Tx stream connections. This would allow external timer units for example, or analogue temeprature demand (which is still only 1 degree resolution).
|
* Add 2 external digital inputs, 2 digital outputs, analogue input 433MHz Rx stream, 433MHz Tx stream connections. This would allow external timer units for example, or analogue temeprature demand (which is still only 1 degree resolution).
|
||||||
|
* Implement narrow hysteresis to trick heater into a tighter thermostat temperature range. eg tell heater it is 23 degrees when it really is only 22.25 degrees (only 0.25 above set point).
|
||||||
* MQTT pub/sub
|
* MQTT pub/sub
|
||||||
* "fuel gauge" - Integrate pump frequency, assuming a repeatable dose of fuel per pump cycle...
|
* "fuel gauge" - Integrate pump frequency, assuming a repeatable dose of fuel per pump cycle...
|
||||||
* Proper 7 day timer with each day settable for at least 2 times (eg morning/evening)
|
* Proper 7 day timer with each day settable for at least 2 times (eg morning/evening)
|
||||||
|
|
Loading…
Reference in a new issue