Added Wh/km, voltage calibration display and stvo front light switch
This commit is contained in:
@@ -37,6 +37,7 @@ set(headers
|
|||||||
changevaluedisplay_wifi_power_t.h
|
changevaluedisplay_wifi_power_t.h
|
||||||
cloud.h
|
cloud.h
|
||||||
debugcolorhelpers.h
|
debugcolorhelpers.h
|
||||||
|
displays/calibratevoltagedisplay.h
|
||||||
displays/gameoflifedisplay.h
|
displays/gameoflifedisplay.h
|
||||||
displays/graphdisplay.h
|
displays/graphdisplay.h
|
||||||
displays/menus/aboutmenu.h
|
displays/menus/aboutmenu.h
|
||||||
|
@@ -171,6 +171,7 @@ struct LedstripBrightnessAccessor : public RefAccessorSaveSettings<uint8_t> { ui
|
|||||||
// Battery
|
// Battery
|
||||||
struct BatterySeriesCellsAccessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return settings.battery.cellsSeries; } };
|
struct BatterySeriesCellsAccessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return settings.battery.cellsSeries; } };
|
||||||
struct BatteryParallelCellsAccessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return settings.battery.cellsParallel; } };
|
struct BatteryParallelCellsAccessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return settings.battery.cellsParallel; } };
|
||||||
|
struct BatteryWHperKMAccessor : public RefAccessorSaveSettings<uint16_t> { uint16_t &getRef() const override { return settings.battery.watthoursPerKilometer; } };
|
||||||
|
|
||||||
struct LockscreenAllowPresetSwitchAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.lockscreen.allowPresetSwitch; } };
|
struct LockscreenAllowPresetSwitchAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.lockscreen.allowPresetSwitch; } };
|
||||||
template<uint8_t index>
|
template<uint8_t index>
|
||||||
|
34
main/displays/calibratevoltagedisplay.h
Normal file
34
main/displays/calibratevoltagedisplay.h
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// Local includes
|
||||||
|
#include "menudisplay.h"
|
||||||
|
#include "utils.h"
|
||||||
|
#include "menuitem.h"
|
||||||
|
#include "icons/back.h"
|
||||||
|
#include "icons/settings.h"
|
||||||
|
#include "texts.h"
|
||||||
|
#include "actions/dummyaction.h"
|
||||||
|
#include "actions/switchscreenaction.h"
|
||||||
|
#include "battery.h"
|
||||||
|
#include "menus/batterymenu.h"
|
||||||
|
|
||||||
|
using namespace espgui;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class CalibrateVoltageDisplay;
|
||||||
|
class BatteryMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class CalibrateVoltageDisplay :
|
||||||
|
public MenuDisplay,
|
||||||
|
public StaticText<TEXT_BATTERY_CALIBRATE>,
|
||||||
|
public BackActionInterface<SwitchScreenAction<BatteryMenu>>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CalibrateVoltageDisplay()
|
||||||
|
{
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BatteryMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} // Namespace
|
@@ -12,6 +12,7 @@
|
|||||||
#include "mainmenu.h"
|
#include "mainmenu.h"
|
||||||
#include "battery.h"
|
#include "battery.h"
|
||||||
#include "selectbatterytypemenu.h"
|
#include "selectbatterytypemenu.h"
|
||||||
|
#include "displays/calibratevoltagedisplay.h"
|
||||||
|
|
||||||
// Helper
|
// Helper
|
||||||
class currentBatteryStatus : public virtual TextInterface { public: std::string text() const override { return getBatteryPercentageString(); } };
|
class currentBatteryStatus : public virtual TextInterface { public: std::string text() const override { return getBatteryPercentageString(); } };
|
||||||
@@ -20,6 +21,7 @@ using namespace espgui;
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
class BatteryMenu;
|
class BatteryMenu;
|
||||||
|
class CalibrateVoltageDisplay;
|
||||||
|
|
||||||
using BatteryCellSeriesChangeScreen = makeComponent<
|
using BatteryCellSeriesChangeScreen = makeComponent<
|
||||||
ChangeValueDisplay<uint8_t>,
|
ChangeValueDisplay<uint8_t>,
|
||||||
@@ -36,6 +38,14 @@ namespace {
|
|||||||
BackActionInterface<SwitchScreenAction<BatteryMenu>>,
|
BackActionInterface<SwitchScreenAction<BatteryMenu>>,
|
||||||
SwitchScreenAction<BatteryMenu>
|
SwitchScreenAction<BatteryMenu>
|
||||||
>;
|
>;
|
||||||
|
|
||||||
|
using BatteryWHperKMChangeScreen = makeComponent<
|
||||||
|
ChangeValueDisplay<uint16_t>,
|
||||||
|
StaticText<TEXT_BATTERY_WHKM>,
|
||||||
|
BatteryWHperKMAccessor,
|
||||||
|
BackActionInterface<SwitchScreenAction<BatteryMenu>>,
|
||||||
|
SwitchScreenAction<BatteryMenu>
|
||||||
|
>;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@@ -48,9 +58,13 @@ namespace {
|
|||||||
BatteryMenu()
|
BatteryMenu()
|
||||||
{
|
{
|
||||||
constructMenuItem<makeComponent<MenuItem, currentBatteryStatus, DisabledColor, DummyAction>>();
|
constructMenuItem<makeComponent<MenuItem, currentBatteryStatus, DisabledColor, DummyAction>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_CELL_SERIES, BatterySeriesCellsAccessor>, SwitchScreenAction<BatteryCellSeriesChangeScreen>>>();
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_CELL_SERIES, BatterySeriesCellsAccessor>, SwitchScreenAction<BatteryCellSeriesChangeScreen>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_CELL_PARALLEL, BatteryParallelCellsAccessor>, SwitchScreenAction<BatteryCellParallelChangeScreen>>>();
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_CELL_PARALLEL, BatteryParallelCellsAccessor>, SwitchScreenAction<BatteryCellParallelChangeScreen>>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_BATTERY_WHKM, BatteryWHperKMAccessor>, SwitchScreenAction<BatteryWHperKMChangeScreen>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SELECT_CELL_TYPE>, SwitchScreenAction<BatteryTypeMenu>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SELECT_CELL_TYPE>, SwitchScreenAction<BatteryTypeMenu>>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BATTERY_CALIBRATE>, SwitchScreenAction<CalibrateVoltageDisplay>, StaticMenuItemIcon<&icons::settings>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@@ -113,9 +113,10 @@ public:
|
|||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BLINKBEEP>, ToggleBoolAction, CheckboxIcon, EnableBeepWhenBlinkAccessor>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BLINKBEEP>, ToggleBoolAction, CheckboxIcon, EnableBeepWhenBlinkAccessor>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FULLBLINK>, ToggleBoolAction, CheckboxIcon, EnableFullBlinkAccessor>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FULLBLINK>, ToggleBoolAction, CheckboxIcon, EnableFullBlinkAccessor>>();
|
||||||
|
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDSTRIP_STVO>, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOAccessor>>();
|
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDSTRIP_STVO>, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOAccessor>>(); }
|
||||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_STVO_FRONTOFFSET, LedsStVOFrontOffsetAccessor>, SwitchScreenAction<StVOOffsetChangeScreen>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STVO_ENABLEFRONTLIGHT>, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOFrontlight>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_STVO_FRONTLENGTH, LedsStVOFrontLengthAccessor>, SwitchScreenAction<StVOLengthChangeScreen>>>();
|
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_STVO_FRONTOFFSET, LedsStVOFrontOffsetAccessor>, SwitchScreenAction<StVOOffsetChangeScreen>>>(); }
|
||||||
|
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_STVO_FRONTLENGTH, LedsStVOFrontLengthAccessor>, SwitchScreenAction<StVOLengthChangeScreen>>>(); }
|
||||||
|
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SELECTANIMATION>, SwitchScreenAction<LedstripSelectAnimationMenu>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SELECTANIMATION>, SwitchScreenAction<LedstripSelectAnimationMenu>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BLINKANIMATION>, SwitchScreenAction<LedstripSelectBlinkMenu>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BLINKANIMATION>, SwitchScreenAction<LedstripSelectBlinkMenu>>>();
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
#include "widgets/label.h"
|
#include "widgets/label.h"
|
||||||
#include "widgets/progressbar.h"
|
#include "widgets/progressbar.h"
|
||||||
#include "icons/alert.h"
|
#include "icons/alert.h"
|
||||||
|
#include "battery.h"
|
||||||
|
|
||||||
// forward declares
|
// forward declares
|
||||||
namespace {
|
namespace {
|
||||||
@@ -94,6 +95,8 @@ private:
|
|||||||
Label m_labelBrems{90, 15}; // 60, 15
|
Label m_labelBrems{90, 15}; // 60, 15
|
||||||
ProgressBar m_progressBarBrems{150, 15, 90, 15, 0, 1000};
|
ProgressBar m_progressBarBrems{150, 15, 90, 15, 0, 1000};
|
||||||
|
|
||||||
|
Label m_batterypercent{0, 30};
|
||||||
|
|
||||||
BoardStatus m_frontStatus{42};
|
BoardStatus m_frontStatus{42};
|
||||||
BoardStatus m_backStatus{142};
|
BoardStatus m_backStatus{142};
|
||||||
|
|
||||||
@@ -126,6 +129,8 @@ void StatusDisplay::initScreen()
|
|||||||
m_labelBrems.start();
|
m_labelBrems.start();
|
||||||
m_progressBarBrems.start();
|
m_progressBarBrems.start();
|
||||||
|
|
||||||
|
m_batterypercent.start();
|
||||||
|
|
||||||
m_frontStatus.start();
|
m_frontStatus.start();
|
||||||
m_backStatus.start();
|
m_backStatus.start();
|
||||||
|
|
||||||
@@ -161,6 +166,8 @@ void StatusDisplay::redraw()
|
|||||||
m_labelBrems.redraw(brems ? fmt::format("{:.2f}", *brems) : "?");
|
m_labelBrems.redraw(brems ? fmt::format("{:.2f}", *brems) : "?");
|
||||||
m_progressBarBrems.redraw(brems ? *brems : 0);
|
m_progressBarBrems.redraw(brems ? *brems : 0);
|
||||||
|
|
||||||
|
m_batterypercent.redraw(getBatteryPercentageString());
|
||||||
|
|
||||||
m_frontStatus.redraw(controllers.front);
|
m_frontStatus.redraw(controllers.front);
|
||||||
m_backStatus.redraw(controllers.back);
|
m_backStatus.redraw(controllers.back);
|
||||||
|
|
||||||
|
@@ -256,7 +256,8 @@ constexpr Settings::LockscreenSettings defaultLockscreen {
|
|||||||
constexpr Settings::Battery defaultBattery {
|
constexpr Settings::Battery defaultBattery {
|
||||||
.cellsSeries = 12,
|
.cellsSeries = 12,
|
||||||
.cellsParallel = 4,
|
.cellsParallel = 4,
|
||||||
.cellType = 0
|
.cellType = 0,
|
||||||
|
.watthoursPerKilometer = 10
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr Settings defaultSettings {
|
constexpr Settings defaultSettings {
|
||||||
|
@@ -175,6 +175,7 @@ struct Settings
|
|||||||
uint8_t cellsSeries;
|
uint8_t cellsSeries;
|
||||||
uint8_t cellsParallel;
|
uint8_t cellsParallel;
|
||||||
uint8_t cellType;
|
uint8_t cellType;
|
||||||
|
uint16_t watthoursPerKilometer;
|
||||||
} battery;
|
} battery;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -289,6 +290,7 @@ void Settings::executeForEveryCommonSetting(T &&callable)
|
|||||||
callable("batteryCS", battery.cellsSeries);
|
callable("batteryCS", battery.cellsSeries);
|
||||||
callable("batteryCP", battery.cellsParallel);
|
callable("batteryCP", battery.cellsParallel);
|
||||||
callable("batteryType", battery.cellType);
|
callable("batteryType", battery.cellType);
|
||||||
|
callable("whkm", battery.watthoursPerKilometer);
|
||||||
|
|
||||||
callable("lockAlwPresetSw", lockscreen.allowPresetSwitch);
|
callable("lockAlwPresetSw", lockscreen.allowPresetSwitch);
|
||||||
callable("lockscreenPin", lockscreen.pin);
|
callable("lockscreenPin", lockscreen.pin);
|
||||||
|
@@ -98,6 +98,7 @@ constexpr char TEXT_BATTERY_TYPE_22P[] = "22P cells";
|
|||||||
constexpr char TEXT_BATTERY_TYPE_HG2[] = "HG2 cells";
|
constexpr char TEXT_BATTERY_TYPE_HG2[] = "HG2 cells";
|
||||||
constexpr char TEXT_BATTERY_TYPE_MH1[] = "MH1 cells";
|
constexpr char TEXT_BATTERY_TYPE_MH1[] = "MH1 cells";
|
||||||
constexpr char TEXT_BATTERY_TYPE_VTC5[] = "VTC5 cells";
|
constexpr char TEXT_BATTERY_TYPE_VTC5[] = "VTC5 cells";
|
||||||
|
constexpr char TEXT_BATTERY_WHKM[] = "Wh per km";
|
||||||
|
|
||||||
//SettingsMenu
|
//SettingsMenu
|
||||||
//constexpr char TEXT_SETTINGS[] = "Settings";
|
//constexpr char TEXT_SETTINGS[] = "Settings";
|
||||||
|
Reference in New Issue
Block a user