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
|
@ -25,7 +25,6 @@
|
||||||
#include "../Protocol/helpers.h"
|
#include "../Protocol/helpers.h"
|
||||||
#include "../Utility/UtilClasses.h"
|
#include "../Utility/UtilClasses.h"
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// CHeaterSettingsScreen
|
// 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)
|
CHeaterSettingsScreen::CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
||||||
{
|
{
|
||||||
_rowSel = 0;
|
_rowSel = 0;
|
||||||
_fanSensor = 1;
|
_fanSensor = 1;
|
||||||
_glowPower = 5;
|
_glowDrive = 5;
|
||||||
_sysVoltage = 12;
|
_sysVoltage = 12;
|
||||||
|
_animateCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CHeaterSettingsScreen::onSelect()
|
CHeaterSettingsScreen::onSelect()
|
||||||
{
|
{
|
||||||
_fanSensor = getHeaterInfo().getFan_Sensor();
|
_fanSensor = getHeaterInfo().getFan_Sensor();
|
||||||
_glowPower = getHeaterInfo().getGlow_Drive();
|
_glowDrive = getHeaterInfo().getGlow_Drive();
|
||||||
_sysVoltage = int(getHeaterInfo().getSystemVoltage());
|
_sysVoltage = int(getHeaterInfo().getSystemVoltage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,12 +61,8 @@ bool
|
||||||
CHeaterSettingsScreen::show()
|
CHeaterSettingsScreen::show()
|
||||||
{
|
{
|
||||||
char msg[20];
|
char msg[20];
|
||||||
int xPos, yPos;
|
|
||||||
_display.clearDisplay();
|
_display.clearDisplay();
|
||||||
|
|
||||||
|
|
||||||
yPos = 14;
|
|
||||||
|
|
||||||
if(!CPasswordScreen::show()) { // for showing "saving settings"
|
if(!CPasswordScreen::show()) { // for showing "saving settings"
|
||||||
|
|
||||||
if(_rowSel == 4) {
|
if(_rowSel == 4) {
|
||||||
|
@ -69,20 +72,14 @@ CHeaterSettingsScreen::show()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_printInverted(_display.xCentre(), 0, " Heater Settings ", true, eCentreJustify);
|
_printInverted(_display.xCentre(), 0, " Heater Settings ", true, eCentreJustify);
|
||||||
_printMenuText(98, yPos, "Glow plug power:", false, eRightJustify);
|
_printMenuText(97, Line3, "System voltage:", false, eRightJustify);
|
||||||
sprintf(msg, "PF-%d", _glowPower);
|
_printMenuText(97, Line2, "Fan sensor:", false, eRightJustify);
|
||||||
_printMenuText(100, yPos, msg, _rowSel == 3);
|
_printMenuText(97, Line1, "Glowplug power:", false, eRightJustify);
|
||||||
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);
|
|
||||||
sprintf(msg, "%dV", _sysVoltage);
|
sprintf(msg, "%dV", _sysVoltage);
|
||||||
_printMenuText(100, yPos, msg, _rowSel == 1);
|
_printMenuText(Column, Line3, msg, _rowSel == 3);
|
||||||
// navigation line
|
// navigation line
|
||||||
yPos = 53;
|
int yPos = 53;
|
||||||
xPos = _display.xCentre();
|
int xPos = _display.xCentre();
|
||||||
_printMenuText(xPos, yPos, "<- exit ->", _rowSel == 0, eCentreJustify);
|
_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
|
bool
|
||||||
CHeaterSettingsScreen::keyHandler(uint8_t event)
|
CHeaterSettingsScreen::keyHandler(uint8_t event)
|
||||||
{
|
{
|
||||||
|
@ -145,7 +197,7 @@ CHeaterSettingsScreen::keyHandler(uint8_t event)
|
||||||
_showStoringMessage();
|
_showStoringMessage();
|
||||||
setSystemVoltage(float(_sysVoltage));
|
setSystemVoltage(float(_sysVoltage));
|
||||||
setFanSensor(_fanSensor);
|
setFanSensor(_fanSensor);
|
||||||
setGlowDrive(_glowPower);
|
setGlowDrive(_glowDrive);
|
||||||
saveNV();
|
saveNV();
|
||||||
_rowSel = 0;
|
_rowSel = 0;
|
||||||
break;
|
break;
|
||||||
|
@ -174,16 +226,16 @@ void
|
||||||
CHeaterSettingsScreen::_adjust(int dir)
|
CHeaterSettingsScreen::_adjust(int dir)
|
||||||
{
|
{
|
||||||
switch(_rowSel) {
|
switch(_rowSel) {
|
||||||
case 1: // system voltage
|
case 1: // glow power
|
||||||
_sysVoltage = (_sysVoltage == 12) ? 24 : 12;
|
_glowDrive += dir;
|
||||||
|
UPPERLIMIT(_glowDrive, 6);
|
||||||
|
LOWERLIMIT(_glowDrive, 1);
|
||||||
break;
|
break;
|
||||||
case 2: // fan sensor
|
case 2: // fan sensor
|
||||||
_fanSensor = (_fanSensor == 1) ? 2 : 1;
|
_fanSensor = (_fanSensor == 1) ? 2 : 1;
|
||||||
break;
|
break;
|
||||||
case 3: // glow power
|
case 3: // system voltage
|
||||||
_glowPower += dir;
|
_sysVoltage = (_sysVoltage == 12) ? 24 : 12;
|
||||||
UPPERLIMIT(_glowPower, 6);
|
|
||||||
LOWERLIMIT(_glowPower, 1);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,10 +34,12 @@ class CHeaterSettingsScreen : public CPasswordScreen
|
||||||
void _adjust(int dir);
|
void _adjust(int dir);
|
||||||
int _sysVoltage;
|
int _sysVoltage;
|
||||||
int _fanSensor;
|
int _fanSensor;
|
||||||
int _glowPower;
|
int _glowDrive;
|
||||||
|
int _animateCount;
|
||||||
public:
|
public:
|
||||||
CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr);
|
CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||||
bool show();
|
bool show();
|
||||||
|
bool animate();
|
||||||
bool keyHandler(uint8_t event);
|
bool keyHandler(uint8_t event);
|
||||||
void onSelect();
|
void onSelect();
|
||||||
};
|
};
|
||||||
|
|
|
@ -43,6 +43,7 @@ public:
|
||||||
bool show();
|
bool show();
|
||||||
bool keyHandler(uint8_t event);
|
bool keyHandler(uint8_t event);
|
||||||
bool animate() { return CScreen::animate(); };
|
bool animate() { return CScreen::animate(); };
|
||||||
|
bool isPasswordBusy() { return (_SaveTime != 0) || _bGetPassword; };
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -199,7 +199,6 @@ CScreenManager::checkUpdate()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if(_settingScreen >= 0) {
|
else if(_settingScreen >= 0) {
|
||||||
DebugPort.println("setting screen show");
|
|
||||||
_SettingsScreens[_settingScreen]->show();
|
_SettingsScreens[_settingScreen]->show();
|
||||||
_bReqUpdate = false;
|
_bReqUpdate = false;
|
||||||
return true;
|
return true;
|
||||||
|
@ -228,15 +227,9 @@ CScreenManager::reqUpdate()
|
||||||
bool
|
bool
|
||||||
CScreenManager::animate()
|
CScreenManager::animate()
|
||||||
{
|
{
|
||||||
if(_settingScreen >= 0) {
|
if(_settingScreen >= 0) return _SettingsScreens[_settingScreen]->animate();
|
||||||
return _SettingsScreens[_settingScreen]->animate();
|
if(_timerScreen >= 0) return _TimerScreens[_timerScreen]->animate();
|
||||||
}
|
if(_currentScreen >= 0) return _Screens[_currentScreen]->animate();
|
||||||
if(_timerScreen >= 0) {
|
|
||||||
return _TimerScreens[_timerScreen]->animate();
|
|
||||||
}
|
|
||||||
if(_currentScreen >= 0) {
|
|
||||||
return _Screens[_currentScreen]->animate();
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,13 +243,9 @@ CScreenManager::refresh()
|
||||||
void
|
void
|
||||||
CScreenManager::_switchScreen()
|
CScreenManager::_switchScreen()
|
||||||
{
|
{
|
||||||
if(_timerScreen >= 0)
|
if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onSelect();
|
||||||
_TimerScreens[_timerScreen]->onSelect();
|
else if(_settingScreen >= 0) _SettingsScreens[_settingScreen]->onSelect();
|
||||||
else if(_settingScreen >= 0) {
|
else if(_currentScreen >= 0) _Screens[_currentScreen]->onSelect();
|
||||||
_SettingsScreens[_settingScreen]->onSelect();
|
|
||||||
}
|
|
||||||
else if(_currentScreen >= 0)
|
|
||||||
_Screens[_currentScreen]->onSelect();
|
|
||||||
|
|
||||||
reqUpdate();
|
reqUpdate();
|
||||||
}
|
}
|
||||||
|
@ -305,21 +294,20 @@ CScreenManager::prevScreen()
|
||||||
void
|
void
|
||||||
CScreenManager::keyHandler(uint8_t event)
|
CScreenManager::keyHandler(uint8_t event)
|
||||||
{
|
{
|
||||||
if(_bSetTime)
|
if(_DimTime == 0) {
|
||||||
_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)
|
|
||||||
_pDisplay->dim(false);
|
_pDisplay->dim(false);
|
||||||
_DimTime = (millis() + NVstore.getDimTime()) | 1;
|
_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
|
void
|
||||||
|
|
Loading…
Reference in a new issue