Heater settings now explain PF-X and SN-X by toggling their actual effect.
First press if display is dimmed now brightens display but does not perform an action.
This commit is contained in:
parent
a6ea647724
commit
a218218db0
4 changed files with 100 additions and 57 deletions
|
@ -25,7 +25,6 @@
|
|||
#include "../Protocol/helpers.h"
|
||||
#include "../Utility/UtilClasses.h"
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// CHeaterSettingsScreen
|
||||
|
@ -34,19 +33,27 @@
|
|||
//
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static const int Line3 = 14;
|
||||
static const int Line2 = 27;
|
||||
static const int Line1 = 40;
|
||||
static const int Column = 96;
|
||||
|
||||
static const int plugPowers[] = { 35, 40, 45, 80, 85, 90};
|
||||
|
||||
CHeaterSettingsScreen::CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
||||
{
|
||||
_rowSel = 0;
|
||||
_fanSensor = 1;
|
||||
_glowPower = 5;
|
||||
_glowDrive = 5;
|
||||
_sysVoltage = 12;
|
||||
_animateCount = 0;
|
||||
}
|
||||
|
||||
void
|
||||
CHeaterSettingsScreen::onSelect()
|
||||
{
|
||||
_fanSensor = getHeaterInfo().getFan_Sensor();
|
||||
_glowPower = getHeaterInfo().getGlow_Drive();
|
||||
_glowDrive = getHeaterInfo().getGlow_Drive();
|
||||
_sysVoltage = int(getHeaterInfo().getSystemVoltage());
|
||||
}
|
||||
|
||||
|
@ -54,12 +61,8 @@ bool
|
|||
CHeaterSettingsScreen::show()
|
||||
{
|
||||
char msg[20];
|
||||
int xPos, yPos;
|
||||
_display.clearDisplay();
|
||||
|
||||
|
||||
yPos = 14;
|
||||
|
||||
if(!CPasswordScreen::show()) { // for showing "saving settings"
|
||||
|
||||
if(_rowSel == 4) {
|
||||
|
@ -69,20 +72,14 @@ CHeaterSettingsScreen::show()
|
|||
}
|
||||
else {
|
||||
_printInverted(_display.xCentre(), 0, " Heater Settings ", true, eCentreJustify);
|
||||
_printMenuText(98, yPos, "Glow plug power:", false, eRightJustify);
|
||||
sprintf(msg, "PF-%d", _glowPower);
|
||||
_printMenuText(100, yPos, msg, _rowSel == 3);
|
||||
yPos = 27;
|
||||
_printMenuText(98, yPos, "Fan sensor:", false, eRightJustify);
|
||||
sprintf(msg, "SN-%d", _fanSensor);
|
||||
_printMenuText(100, yPos, msg, _rowSel == 2);
|
||||
yPos = 40;
|
||||
_printMenuText(98, yPos, "System voltage:", false, eRightJustify);
|
||||
_printMenuText(97, Line3, "System voltage:", false, eRightJustify);
|
||||
_printMenuText(97, Line2, "Fan sensor:", false, eRightJustify);
|
||||
_printMenuText(97, Line1, "Glowplug power:", false, eRightJustify);
|
||||
sprintf(msg, "%dV", _sysVoltage);
|
||||
_printMenuText(100, yPos, msg, _rowSel == 1);
|
||||
_printMenuText(Column, Line3, msg, _rowSel == 3);
|
||||
// navigation line
|
||||
yPos = 53;
|
||||
xPos = _display.xCentre();
|
||||
int yPos = 53;
|
||||
int xPos = _display.xCentre();
|
||||
_printMenuText(xPos, yPos, "<- exit ->", _rowSel == 0, eCentreJustify);
|
||||
}
|
||||
}
|
||||
|
@ -91,6 +88,61 @@ CHeaterSettingsScreen::show()
|
|||
}
|
||||
|
||||
|
||||
bool
|
||||
CHeaterSettingsScreen::animate()
|
||||
{
|
||||
char msg[16];
|
||||
|
||||
if(isPasswordBusy() || (_rowSel == 4)) { // Password screen activity
|
||||
_printMenuText(Column, Line2, " ");
|
||||
_printMenuText(Column, Line1, " ");
|
||||
if(_rowSel == 4)
|
||||
_printMenuText(_display.xCentre(), 43, "confirm save", false, eCentreJustify);
|
||||
}
|
||||
else {
|
||||
_animateCount++;
|
||||
ROLLUPPERLIMIT(_animateCount, 9, 0);
|
||||
|
||||
if(_rowSel == 1) {
|
||||
_display.drawRect(Column-border, Line1-border, 34, 8+2*border, BLACK);
|
||||
_display.drawRoundRect(Column-border, Line1-border, 34, 8+2*border, radius, WHITE);
|
||||
}
|
||||
else {
|
||||
_printMenuText(Column, Line1, " ");
|
||||
}
|
||||
|
||||
if(_animateCount < 4)
|
||||
sprintf(msg, "PF-%d ", _glowDrive);
|
||||
else
|
||||
sprintf(msg, "(%dW)", plugPowers[_glowDrive-1]);
|
||||
_printMenuText(Column, Line1, msg);
|
||||
|
||||
int xPos = Column;
|
||||
_printMenuText(xPos, Line2, " ", _rowSel == 2); // erase, but create selection loop
|
||||
if(_animateCount < 4) {
|
||||
sprintf(msg, "SN-%d", _fanSensor);
|
||||
_printMenuText(Column, Line2, msg/*, _rowSel == 2*/);
|
||||
}
|
||||
else {
|
||||
_printMenuText(xPos, Line2, "(");
|
||||
xPos += 6;
|
||||
// .
|
||||
// draw old fashioned divide symbol -----
|
||||
// .
|
||||
int barOfs = 3;
|
||||
_display.drawLine(xPos, Line2+barOfs, xPos+4, Line2+barOfs, WHITE);
|
||||
_display.drawPixel(xPos+2, Line2+barOfs-2, WHITE);
|
||||
_display.drawPixel(xPos+2, Line2+barOfs+2, WHITE);
|
||||
xPos += 6;
|
||||
sprintf(msg, "%d)", _fanSensor);
|
||||
_printMenuText(xPos, Line2, msg);
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
CHeaterSettingsScreen::keyHandler(uint8_t event)
|
||||
{
|
||||
|
@ -145,7 +197,7 @@ CHeaterSettingsScreen::keyHandler(uint8_t event)
|
|||
_showStoringMessage();
|
||||
setSystemVoltage(float(_sysVoltage));
|
||||
setFanSensor(_fanSensor);
|
||||
setGlowDrive(_glowPower);
|
||||
setGlowDrive(_glowDrive);
|
||||
saveNV();
|
||||
_rowSel = 0;
|
||||
break;
|
||||
|
@ -174,16 +226,16 @@ void
|
|||
CHeaterSettingsScreen::_adjust(int dir)
|
||||
{
|
||||
switch(_rowSel) {
|
||||
case 1: // system voltage
|
||||
_sysVoltage = (_sysVoltage == 12) ? 24 : 12;
|
||||
case 1: // glow power
|
||||
_glowDrive += dir;
|
||||
UPPERLIMIT(_glowDrive, 6);
|
||||
LOWERLIMIT(_glowDrive, 1);
|
||||
break;
|
||||
case 2: // fan sensor
|
||||
_fanSensor = (_fanSensor == 1) ? 2 : 1;
|
||||
break;
|
||||
case 3: // glow power
|
||||
_glowPower += dir;
|
||||
UPPERLIMIT(_glowPower, 6);
|
||||
LOWERLIMIT(_glowPower, 1);
|
||||
case 3: // system voltage
|
||||
_sysVoltage = (_sysVoltage == 12) ? 24 : 12;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,10 +34,12 @@ class CHeaterSettingsScreen : public CPasswordScreen
|
|||
void _adjust(int dir);
|
||||
int _sysVoltage;
|
||||
int _fanSensor;
|
||||
int _glowPower;
|
||||
int _glowDrive;
|
||||
int _animateCount;
|
||||
public:
|
||||
CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||
bool show();
|
||||
bool animate();
|
||||
bool keyHandler(uint8_t event);
|
||||
void onSelect();
|
||||
};
|
||||
|
|
|
@ -43,6 +43,7 @@ public:
|
|||
bool show();
|
||||
bool keyHandler(uint8_t event);
|
||||
bool animate() { return CScreen::animate(); };
|
||||
bool isPasswordBusy() { return (_SaveTime != 0) || _bGetPassword; };
|
||||
};
|
||||
|
||||
#endif
|
|
@ -199,7 +199,6 @@ CScreenManager::checkUpdate()
|
|||
return true;
|
||||
}
|
||||
else if(_settingScreen >= 0) {
|
||||
DebugPort.println("setting screen show");
|
||||
_SettingsScreens[_settingScreen]->show();
|
||||
_bReqUpdate = false;
|
||||
return true;
|
||||
|
@ -228,15 +227,9 @@ CScreenManager::reqUpdate()
|
|||
bool
|
||||
CScreenManager::animate()
|
||||
{
|
||||
if(_settingScreen >= 0) {
|
||||
return _SettingsScreens[_settingScreen]->animate();
|
||||
}
|
||||
if(_timerScreen >= 0) {
|
||||
return _TimerScreens[_timerScreen]->animate();
|
||||
}
|
||||
if(_currentScreen >= 0) {
|
||||
return _Screens[_currentScreen]->animate();
|
||||
}
|
||||
if(_settingScreen >= 0) return _SettingsScreens[_settingScreen]->animate();
|
||||
if(_timerScreen >= 0) return _TimerScreens[_timerScreen]->animate();
|
||||
if(_currentScreen >= 0) return _Screens[_currentScreen]->animate();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -250,13 +243,9 @@ CScreenManager::refresh()
|
|||
void
|
||||
CScreenManager::_switchScreen()
|
||||
{
|
||||
if(_timerScreen >= 0)
|
||||
_TimerScreens[_timerScreen]->onSelect();
|
||||
else if(_settingScreen >= 0) {
|
||||
_SettingsScreens[_settingScreen]->onSelect();
|
||||
}
|
||||
else if(_currentScreen >= 0)
|
||||
_Screens[_currentScreen]->onSelect();
|
||||
if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onSelect();
|
||||
else if(_settingScreen >= 0) _SettingsScreens[_settingScreen]->onSelect();
|
||||
else if(_currentScreen >= 0) _Screens[_currentScreen]->onSelect();
|
||||
|
||||
reqUpdate();
|
||||
}
|
||||
|
@ -305,21 +294,20 @@ CScreenManager::prevScreen()
|
|||
void
|
||||
CScreenManager::keyHandler(uint8_t event)
|
||||
{
|
||||
if(_bSetTime)
|
||||
_SetTimeScreen->keyHandler(event);
|
||||
else if(_settingScreen >= 0) {
|
||||
DebugPort.println("setting screen keyhandler");
|
||||
_SettingsScreens[_settingScreen]->keyHandler(event);
|
||||
}
|
||||
else if(_timerScreen >= 0)
|
||||
_TimerScreens[_timerScreen]->keyHandler(event);
|
||||
else if(_currentScreen >= 0)
|
||||
_Screens[_currentScreen]->keyHandler(event);
|
||||
|
||||
if(_DimTime == 0)
|
||||
if(_DimTime == 0) {
|
||||
_pDisplay->dim(false);
|
||||
_DimTime = (millis() + NVstore.getDimTime()) | 1;
|
||||
// _DimTime = (millis() + 60000) | 1;
|
||||
return; // initial press when dimmed is thrown away
|
||||
}
|
||||
|
||||
_DimTime = (millis() + NVstore.getDimTime()) | 1;
|
||||
|
||||
// call handler for active screen
|
||||
if(_bSetTime) _SetTimeScreen->keyHandler(event);
|
||||
else if(_settingScreen >= 0) _SettingsScreens[_settingScreen]->keyHandler(event);
|
||||
else if(_timerScreen >= 0) _TimerScreens[_timerScreen]->keyHandler(event);
|
||||
else if(_currentScreen >= 0) _Screens[_currentScreen]->keyHandler(event);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in a new issue