diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index ae7f854..46ad53a 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -172,6 +172,7 @@ struct LedstripBrightnessAccessor : public RefAccessorSaveSettings { ui struct BatterySeriesCellsAccessor : public RefAccessorSaveSettings { uint8_t &getRef() const override { return settings.battery.cellsSeries; } }; 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 BatteryApplyCalibrationAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.battery.applyCalibration; } }; struct LockscreenAllowPresetSwitchAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.lockscreen.allowPresetSwitch; } }; diff --git a/main/displays/calibratevoltagedisplay.h b/main/displays/calibratevoltagedisplay.h index 891b0f8..025e88d 100644 --- a/main/displays/calibratevoltagedisplay.h +++ b/main/displays/calibratevoltagedisplay.h @@ -57,6 +57,8 @@ namespace { { constructMenuItem, Save30VCalibrationAction>>(); constructMenuItem, Save50VCalibrationAction>>(); + constructMenuItem, ToggleBoolAction, CheckboxIcon, BatteryApplyCalibrationAccessor>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem>(); @@ -65,7 +67,6 @@ namespace { constructMenuItem>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // Namespace diff --git a/main/presets.h b/main/presets.h index 17e2256..5320ad6 100644 --- a/main/presets.h +++ b/main/presets.h @@ -261,7 +261,8 @@ constexpr Settings::Battery defaultBattery { .front30VoltCalibration = 30, .back30VoltCalibration = 30, .front50VoltCalibration = 50, - .back50VoltCalibration = 50 + .back50VoltCalibration = 50, + .applyCalibration = false }; constexpr Settings defaultSettings { diff --git a/main/settings.h b/main/settings.h index ca2a0b0..1b88a38 100644 --- a/main/settings.h +++ b/main/settings.h @@ -180,6 +180,7 @@ struct Settings int16_t back30VoltCalibration; int16_t front50VoltCalibration; int16_t back50VoltCalibration; + bool applyCalibration; } battery; #endif @@ -299,6 +300,7 @@ void Settings::executeForEveryCommonSetting(T &&callable) callable("batB30VCal", battery.back30VoltCalibration); callable("batF50VCal", battery.front50VoltCalibration); callable("batB50VCal", battery.back50VoltCalibration); + callable("applyBatCal", battery.applyCalibration); callable("lockAlwPresetSw", lockscreen.allowPresetSwitch); callable("lockscreenPin", lockscreen.pin); diff --git a/main/texts.h b/main/texts.h index 1258fc3..e1eae2d 100644 --- a/main/texts.h +++ b/main/texts.h @@ -99,6 +99,7 @@ constexpr char TEXT_BATTERY_TYPE_HG2[] = "HG2 cells"; constexpr char TEXT_BATTERY_TYPE_MH1[] = "MH1 cells"; constexpr char TEXT_BATTERY_TYPE_VTC5[] = "VTC5 cells"; constexpr char TEXT_BATTERY_WHKM[] = "Wh per km"; +constexpr char TEXT_BATTERY_APPLYCALIB[] = "Apply calibration"; //CalibrateVoltageDisplay constexpr char TEXT_VOLTAGECALIBRATION_30V[] = "Calibrate 30.0V"; diff --git a/main/utils.h b/main/utils.h index e032f4e..98a6c0f 100644 --- a/main/utils.h +++ b/main/utils.h @@ -64,6 +64,16 @@ float fixBatVoltage(int16_t value) return value/100.; } +float fixFrontBatVoltage(int16_t value) +{ + float frontVoltage = fixBatVoltage(value); + // settings.battery.front30VoltCalibration // Front 30.0V + // settings.battery.back30VoltCalibration // Back 30.0V + // settings.battery.front50VoltCalibration // Front 50.0V + // settings.battery.back50VoltCalibration // Back 50.0V + return frontVoltage; +} + float fixBoardTemp(int16_t value) { return value/10.;