From 9cc69afd5d0717adee0f99d5bff29bcb19cb517d Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Mon, 11 Oct 2021 00:27:44 +0200 Subject: [PATCH] Voltage Calibration Screen, new battery icon --- icons/battery.png | Bin 7711 -> 251 bytes main/accessors/settingsaccessors.h | 1 + main/displays/calibratevoltagedisplay.h | 39 ++++++++++++- main/icons/battery.h | 74 ++++++++++++------------ main/presets.h | 6 +- main/settings.h | 8 +++ main/texts.h | 8 +++ 7 files changed, 97 insertions(+), 39 deletions(-) diff --git a/icons/battery.png b/icons/battery.png index 385f44f8b4157fc4f31fe5280bec07fcea6c6753..972da02d07cd7200527013da8e3e916ffcbe9202 100644 GIT binary patch delta 163 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 diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 7ee9167..ae7f854 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -173,6 +173,7 @@ struct BatterySeriesCellsAccessor : public RefAccessorSaveSettings { ui struct BatteryParallelCellsAccessor : public RefAccessorSaveSettings { uint8_t &getRef() const override { return settings.battery.cellsParallel; } }; struct BatteryWHperKMAccessor : public RefAccessorSaveSettings { uint16_t &getRef() const override { return settings.battery.watthoursPerKilometer; } }; + struct LockscreenAllowPresetSwitchAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.lockscreen.allowPresetSwitch; } }; template struct LockscreenPinDigitAccessor : public RefAccessorSaveSettings { int8_t &getRef() const override { return settings.lockscreen.pin[index]; } }; diff --git a/main/displays/calibratevoltagedisplay.h b/main/displays/calibratevoltagedisplay.h index f4bb6c0..891b0f8 100644 --- a/main/displays/calibratevoltagedisplay.h +++ b/main/displays/calibratevoltagedisplay.h @@ -11,12 +11,39 @@ #include "actions/switchscreenaction.h" #include "battery.h" #include "menus/batterymenu.h" +#include "widgets/label.h" +#include "globals.h" using namespace espgui; namespace { class CalibrateVoltageDisplay; class BatteryMenu; + + class Save30VCalibrationAction : public virtual ActionInterface + { + public: + void triggered() override { + settings.battery.front30VoltCalibration = controllers.front.feedback.batVoltage; + settings.battery.back30VoltCalibration = controllers.back.feedback.batVoltage; + saveSettings(); + } + }; + + class Save50VCalibrationAction : public virtual ActionInterface + { + public: + void triggered() override { + settings.battery.front50VoltCalibration = controllers.front.feedback.batVoltage; + settings.battery.back50VoltCalibration = controllers.back.feedback.batVoltage; + saveSettings(); + } + }; + + class BatteryVoltageCalibrationFront30VText : public virtual TextInterface { public: std::string text() const override { return fmt::format("30V Front: {:.2f}V", fixBatVoltage(settings.battery.front30VoltCalibration)); } }; + class BatteryVoltageCalibrationBack30VText : public virtual TextInterface { public: std::string text() const override { return fmt::format("30V Back: {:.2f}V", fixBatVoltage(settings.battery.back30VoltCalibration)); } }; + class BatteryVoltageCalibrationFront50VText : public virtual TextInterface { public: std::string text() const override { return fmt::format("50V Front: {:.2f}V", fixBatVoltage(settings.battery.front50VoltCalibration)); } }; + class BatteryVoltageCalibrationBack50VText : public virtual TextInterface { public: std::string text() const override { return fmt::format("50V Back: {:.2f}V", fixBatVoltage(settings.battery.back50VoltCalibration)); } }; } namespace { @@ -28,7 +55,17 @@ namespace { public: CalibrateVoltageDisplay() { - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, Save30VCalibrationAction>>(); + constructMenuItem, Save50VCalibrationAction>>(); + + constructMenuItem>(); + + constructMenuItem>(); + constructMenuItem>(); + constructMenuItem>(); + constructMenuItem>(); + + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // Namespace diff --git a/main/icons/battery.h b/main/icons/battery.h index 7de71cf..315c4ac 100644 --- a/main/icons/battery.h +++ b/main/icons/battery.h @@ -5,42 +5,42 @@ namespace { namespace icons { const Icon<24, 24> battery{{ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0010 (16) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0020 (32) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0030 (48) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0050 (80) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0060 (96) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0070 (112) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) pixels - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0090 (144) pixels - 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x00A0 (160) pixels - 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00B0 (176) pixels - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, // 0x00C0 (192) pixels - 0x001F, 0x001F, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) pixels - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x0000, 0x001F, 0x001F, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x00E0 (224) pixels - 0x001F, 0x001F, 0x001F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, // 0x00F0 (240) pixels - 0x001F, 0x001F, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) pixels - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0110 (272) pixels - 0x001F, 0x001F, 0x001F, 0x001F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0120 (288) pixels - 0x001F, 0x001F, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0130 (304) pixels - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0140 (320) pixels - 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0150 (336) pixels - 0x001F, 0x001F, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) pixels - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0170 (368) pixels - 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x0000, // 0x0180 (384) pixels - 0x001F, 0x001F, 0x001F, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0190 (400) pixels - 0xFFFF, 0xFFFF, 0xFFFF, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x01A0 (416) pixels - 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, // 0x01B0 (432) pixels - 0x0000, 0x0000, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, // 0x01C0 (448) pixels - 0xF7BF, 0xF7BF, 0xF7BF, 0xF7BF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01D0 (464) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01E0 (480) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01F0 (496) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0200 (512) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0210 (528) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0220 (544) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0230 (560) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0240 (576) pixels - }}; +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0010 (16) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0020 (32) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0030 (48) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0050 (80) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0060 (96) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0070 (112) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0080 (128) pixels +0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, // 0x0090 (144) pixels +0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x00A0 (160) pixels +0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00B0 (176) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, // 0x00C0 (192) pixels +0x001F, 0x001F, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00D0 (208) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x0000, 0x001F, 0x001F, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x00E0 (224) pixels +0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, // 0x00F0 (240) pixels +0x001F, 0x001F, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0100 (256) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0110 (272) pixels +0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0120 (288) pixels +0x001F, 0x001F, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0130 (304) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0140 (320) pixels +0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0150 (336) pixels +0x001F, 0x001F, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, // 0x0160 (352) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, // 0x0170 (368) pixels +0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x0000, // 0x0180 (384) pixels +0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0190 (400) pixels +0x0000, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x01A0 (416) pixels +0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, // 0x01B0 (432) pixels +0x0000, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, // 0x01C0 (448) pixels +0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01D0 (464) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01E0 (480) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01F0 (496) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0200 (512) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0210 (528) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0220 (544) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0230 (560) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0240 (576) pixels +}}; } } diff --git a/main/presets.h b/main/presets.h index 6d7cebd..17e2256 100644 --- a/main/presets.h +++ b/main/presets.h @@ -257,7 +257,11 @@ constexpr Settings::Battery defaultBattery { .cellsSeries = 12, .cellsParallel = 4, .cellType = 0, - .watthoursPerKilometer = 10 + .watthoursPerKilometer = 20, + .front30VoltCalibration = 30, + .back30VoltCalibration = 30, + .front50VoltCalibration = 50, + .back50VoltCalibration = 50 }; constexpr Settings defaultSettings { diff --git a/main/settings.h b/main/settings.h index 00ba2d2..ca2a0b0 100644 --- a/main/settings.h +++ b/main/settings.h @@ -176,6 +176,10 @@ struct Settings uint8_t cellsParallel; uint8_t cellType; uint16_t watthoursPerKilometer; + int16_t front30VoltCalibration; + int16_t back30VoltCalibration; + int16_t front50VoltCalibration; + int16_t back50VoltCalibration; } battery; #endif @@ -291,6 +295,10 @@ void Settings::executeForEveryCommonSetting(T &&callable) callable("batteryCP", battery.cellsParallel); callable("batteryType", battery.cellType); callable("whkm", battery.watthoursPerKilometer); + callable("batF30VCal", battery.front30VoltCalibration); + callable("batB30VCal", battery.back30VoltCalibration); + callable("batF50VCal", battery.front50VoltCalibration); + callable("batB50VCal", battery.back50VoltCalibration); callable("lockAlwPresetSw", lockscreen.allowPresetSwitch); callable("lockscreenPin", lockscreen.pin); diff --git a/main/texts.h b/main/texts.h index 5aafe0f..1258fc3 100644 --- a/main/texts.h +++ b/main/texts.h @@ -100,6 +100,14 @@ constexpr char TEXT_BATTERY_TYPE_MH1[] = "MH1 cells"; constexpr char TEXT_BATTERY_TYPE_VTC5[] = "VTC5 cells"; constexpr char TEXT_BATTERY_WHKM[] = "Wh per km"; +//CalibrateVoltageDisplay +constexpr char TEXT_VOLTAGECALIBRATION_30V[] = "Calibrate 30.0V"; +constexpr char TEXT_VOLTAGECALIBRATION_50V[] = "Calibrate 50.0V"; +constexpr char TEXT_VOLTAGECALIBRATION_VALUE_30_FRONT[] = "30V Front"; +constexpr char TEXT_VOLTAGECALIBRATION_VALUE_30_BACK[] = "30V Back"; +constexpr char TEXT_VOLTAGECALIBRATION_VALUE_50_FRONT[] = "50V Front"; +constexpr char TEXT_VOLTAGECALIBRATION_VALUE_50_BACK[] = "50V Back"; + //SettingsMenu //constexpr char TEXT_SETTINGS[] = "Settings"; constexpr char TEXT_BACKLIGHT[] = "Backlight";