Added build flags for BMS and OTA
This commit is contained in:
@@ -58,6 +58,7 @@ build_flags =
|
||||
-DPINS_TX2=26
|
||||
-DPINS_GAS=35
|
||||
-DPINS_BREMS=33
|
||||
-DFEATURE_OTA
|
||||
|
||||
|
||||
|
||||
@@ -83,6 +84,7 @@ build_flags =
|
||||
-DDEFAULT_GASMAX=3700
|
||||
-DDEFAULT_BREMSMIN=1300
|
||||
-DDEFAULT_BREMSMAX=4000
|
||||
-DFEATURE_BMS
|
||||
|
||||
[env:feedc0de_usb]
|
||||
platform = ${common_env_data.platform}
|
||||
@@ -152,7 +154,7 @@ build_flags =
|
||||
platform = ${common_env_data.platform}
|
||||
board = ${common_env_data.board}
|
||||
framework = ${common_env_data.framework}
|
||||
board_build.partitions = ${common_env_data.board_build.partitions}
|
||||
board_build.partitions = bobbycar_noota.csv
|
||||
lib_deps = ${common_env_data.lib_deps}
|
||||
lib_compat_mode = ${common_env_data.lib_compat_mode}
|
||||
build_unflags = ${common_env_data.build_unflags}
|
||||
|
@@ -6,6 +6,7 @@
|
||||
#include "globals.h"
|
||||
|
||||
namespace {
|
||||
#ifdef FEATURE_BMS
|
||||
class BluetoothConnectBmsAction : public virtual ActionInterface
|
||||
{
|
||||
public:
|
||||
@@ -19,4 +20,5 @@ public:
|
||||
}
|
||||
}
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#include "bmsutils.h"
|
||||
|
||||
namespace {
|
||||
#ifdef FEATURE_BMS
|
||||
class BmsTurnOffChargeAction : public virtual ActionInterface
|
||||
{
|
||||
public:
|
||||
@@ -16,4 +17,5 @@ public:
|
||||
}
|
||||
}
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#include "bmsutils.h"
|
||||
|
||||
namespace {
|
||||
#ifdef FEATURE_BMS
|
||||
class BmsTurnOffDischargeAction : public virtual ActionInterface
|
||||
{
|
||||
public:
|
||||
@@ -16,4 +17,5 @@ public:
|
||||
}
|
||||
}
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#include "bmsutils.h"
|
||||
|
||||
namespace {
|
||||
#ifdef FEATURE_BMS
|
||||
class BmsTurnOnChargeAction : public virtual ActionInterface
|
||||
{
|
||||
public:
|
||||
@@ -16,4 +17,5 @@ public:
|
||||
}
|
||||
}
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#include "bmsutils.h"
|
||||
|
||||
namespace {
|
||||
#ifdef FEATURE_BMS
|
||||
class BmsTurnOnDischargeAction : public virtual ActionInterface
|
||||
{
|
||||
public:
|
||||
@@ -16,4 +17,5 @@ public:
|
||||
}
|
||||
}
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@
|
||||
#include "globals.h"
|
||||
|
||||
namespace {
|
||||
#ifdef FEATURE_BMS
|
||||
namespace bms {
|
||||
constexpr auto autoReconnect = false; // causes hangs when not available
|
||||
|
||||
@@ -119,4 +120,5 @@ void update()
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@@ -14,6 +14,7 @@ class MetersDisplay;
|
||||
class StatusDisplay;
|
||||
}
|
||||
namespace {
|
||||
#ifdef FEATURE_BMS
|
||||
class BmsDisplay : public DemoDisplay, public SwitchScreenAction<MainMenu>
|
||||
{
|
||||
public:
|
||||
@@ -86,4 +87,5 @@ void BmsDisplay::rotate(int offset)
|
||||
else if (offset > 0)
|
||||
switchScreen<StatusDisplay>();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@@ -21,6 +21,7 @@ class MainMenu;
|
||||
}
|
||||
|
||||
namespace {
|
||||
#ifdef FEATURE_BMS
|
||||
class BmsMenu :
|
||||
public MenuDisplay,
|
||||
public StaticText<TEXT_BMS>,
|
||||
@@ -36,4 +37,5 @@ class BmsMenu :
|
||||
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>
|
||||
>
|
||||
{};
|
||||
#endif
|
||||
}
|
||||
|
@@ -23,6 +23,7 @@ using SumCurrentGraphDisplay = makeComponent<GraphDisplay<1>, StaticText<TEXT_SU
|
||||
using SumAbsoluteCurrentGraphDisplay = makeComponent<GraphDisplay<1>, StaticText<TEXT_SUMABSOLUTECURRENT>, MultiStatisticsSingleImpl, SumAbsoluteCurrentStatistics>;
|
||||
using FrontVoltageGraphDisplay = makeComponent<GraphDisplay<1>, StaticText<TEXT_FRONTVOLTAGE>, MultiStatisticsSingleImpl, FrontVoltageStatistics>;
|
||||
using BackVoltageGraphDisplay = makeComponent<GraphDisplay<1>, StaticText<TEXT_BACKVOLTAGE>, MultiStatisticsSingleImpl, BackVoltageStatistics>;
|
||||
#ifdef FEATURE_BMS
|
||||
using BmsVoltageGraphDisplay = makeComponent<GraphDisplay<1>, StaticText<TEXT_BMSVOLTAGE>, MultiStatisticsSingleImpl, BmsVoltageStatistics>;
|
||||
using BmsCurrentGraphDisplay = makeComponent<GraphDisplay<1>, StaticText<TEXT_BMSCURRENT>, MultiStatisticsSingleImpl, BmsCurrentStatistics>;
|
||||
using BmsPowerGraphDisplay = makeComponent<GraphDisplay<1>, StaticText<TEXT_BMSPOWER>, MultiStatisticsSingleImpl, BmsPowerStatistics>;
|
||||
@@ -35,6 +36,7 @@ class SumCurrentsComparisonStatistics : public virtual MultiStatisticsInterface<
|
||||
}
|
||||
};
|
||||
using SumCurrentsComparisonGraphDisplay = makeComponent<GraphDisplay<2>, StaticText<TEXT_SUMCURRENTSCOMPARISON>, SumCurrentsComparisonStatistics>;
|
||||
#endif
|
||||
|
||||
class MotorCurrentsStatistics : public virtual MultiStatisticsInterface<4>
|
||||
{
|
||||
@@ -58,10 +60,12 @@ class GraphsMenu :
|
||||
makeComponent<MenuItem, StaticText<TEXT_SUMABSOLUTECURRENT>, SwitchScreenAction<SumAbsoluteCurrentGraphDisplay>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_FRONTVOLTAGE>, SwitchScreenAction<FrontVoltageGraphDisplay>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_BACKVOLTAGE>, SwitchScreenAction<BackVoltageGraphDisplay>>,
|
||||
#ifdef FEATURE_BMS
|
||||
makeComponent<MenuItem, StaticText<TEXT_BMSVOLTAGE>, SwitchScreenAction<BmsVoltageGraphDisplay>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_BMSCURRENT>, SwitchScreenAction<BmsCurrentGraphDisplay>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_BMSPOWER>, SwitchScreenAction<BmsPowerGraphDisplay>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_SUMCURRENTSCOMPARISON>, SwitchScreenAction<SumCurrentsComparisonGraphDisplay>>,
|
||||
#endif
|
||||
makeComponent<MenuItem, StaticText<TEXT_MOTORCURRENTS>, SwitchScreenAction<MotorCurrentsGraphDisplay>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_DUALGRAPHS>, SwitchScreenAction<DualGraphDisplay>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>
|
||||
|
@@ -40,7 +40,9 @@ class MainMenu :
|
||||
makeComponent<MenuItem, StaticText<TEXT_SELECTMODE>, SwitchScreenAction<SelectModeMenu>, StaticMenuItemIcon<&icons::modes>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_PRESETS>, SwitchScreenAction<PresetsMenu>, StaticMenuItemIcon<&icons::presets>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_GRAPHS>, SwitchScreenAction<GraphsMenu>, StaticMenuItemIcon<&icons::graph>>,
|
||||
#ifdef FEATURE_BMS
|
||||
makeComponent<MenuItem, StaticText<TEXT_BMS>, SwitchScreenAction<BmsMenu>, StaticMenuItemIcon<&icons::bms>>,
|
||||
#endif
|
||||
makeComponent<MenuItem, StaticText<TEXT_SETTINGS>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::settings>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_LOCKVEHICLE>, SwitchScreenAction<Lockscreen>, StaticMenuItemIcon<&icons::lock>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_DEMOS>, SwitchScreenAction<DemosMenu>, StaticMenuItemIcon<&icons::demos>>,
|
||||
|
@@ -45,7 +45,9 @@ class SettingsMenu :
|
||||
makeComponent<MenuItem, StaticText<TEXT_MODESSETTINGS>, SwitchScreenAction<ModesSettingsMenu>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_CONTROLLERHARDWARESETTINGS>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::hardware>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_BOARDCOMPUTERHARDWARESETTINGS>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::hardware>>,
|
||||
#ifdef FEATURE_BMS
|
||||
makeComponent<MenuItem, StaticText<TEXT_AUTOCONNECTBMS>, ToggleBoolAction, CheckboxIcon, AutoConnectBmsAccessor>,
|
||||
#endif
|
||||
makeComponent<MenuItem, StaticText<TEXT_BUZZER>, SwitchScreenAction<BuzzerMenu>, StaticMenuItemIcon<&icons::buzzer>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_FRONTLED>, ToggleBoolAction, CheckboxIcon, FrontLedAccessor>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_BACKLED>, ToggleBoolAction, CheckboxIcon, BackLedAccessor>,
|
||||
|
@@ -87,7 +87,11 @@ void MetersDisplay::rotate(int offset)
|
||||
if (offset < 0)
|
||||
switchScreen<StatusDisplay>();
|
||||
else if (offset > 0)
|
||||
#ifdef FEATURE_BMS
|
||||
switchScreen<BmsDisplay>();
|
||||
#else
|
||||
switchScreen<StatusDisplay>();
|
||||
#endif
|
||||
}
|
||||
|
||||
void MetersDisplay::analogMeter()
|
||||
|
@@ -163,7 +163,11 @@ void StatusDisplay::redraw()
|
||||
void StatusDisplay::rotate(int offset)
|
||||
{
|
||||
if (offset < 0)
|
||||
#ifdef FEATURE_BMS
|
||||
switchScreen<BmsDisplay>();
|
||||
#else
|
||||
switchScreen<MetersDisplay>();
|
||||
#endif
|
||||
else if (offset > 0)
|
||||
switchScreen<MetersDisplay>();
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@ class StatusDisplay;
|
||||
}
|
||||
|
||||
namespace {
|
||||
#ifdef FEATURE_OTA
|
||||
class UpdateDisplay : public Display
|
||||
{
|
||||
public:
|
||||
@@ -90,4 +91,5 @@ void UpdateDisplay::confirm()
|
||||
if (m_finished)
|
||||
switchScreen<StatusDisplay>();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@@ -67,8 +67,10 @@ void setup()
|
||||
//WiFi.begin("McDonalds Free WiFi 2.4GHz", "Passwort_123");
|
||||
|
||||
BluetoothBeginMasterAction{}.triggered();
|
||||
#ifdef FEATURE_BMS
|
||||
if (settings.autoConnectBms)
|
||||
BluetoothConnectBmsAction{}.triggered();
|
||||
#endif
|
||||
|
||||
front.serial.get().begin(38400, SERIAL_8N1, PINS_RX1, PINS_TX1);
|
||||
back.serial.get().begin(38400, SERIAL_8N1, PINS_RX2, PINS_TX2);
|
||||
@@ -83,7 +85,9 @@ void setup()
|
||||
|
||||
currentMode = &modes::defaultMode;
|
||||
|
||||
#ifdef FEATURE_OTA
|
||||
initOta();
|
||||
#endif
|
||||
|
||||
initWebserver();
|
||||
|
||||
@@ -160,9 +164,13 @@ void loop()
|
||||
|
||||
handleSerial();
|
||||
|
||||
#ifdef FEATURE_OTA
|
||||
handleOta();
|
||||
#endif
|
||||
|
||||
handleWebserver();
|
||||
|
||||
#ifdef FEATURE_BMS
|
||||
bms::update();
|
||||
#endif
|
||||
}
|
||||
|
@@ -1,11 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef FEATURE_OTA
|
||||
#include <ArduinoOTA.h>
|
||||
#endif
|
||||
|
||||
#include "screens.h"
|
||||
#include "displays/updatedisplay.h"
|
||||
|
||||
namespace {
|
||||
#ifdef FEATURE_OTA
|
||||
void initOta()
|
||||
{
|
||||
ArduinoOTA
|
||||
@@ -42,4 +45,5 @@ void handleOta()
|
||||
{
|
||||
ArduinoOTA.handle();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@@ -68,7 +68,9 @@ constexpr Settings::LarsmMode defaultLarsmMode {
|
||||
};
|
||||
|
||||
constexpr Settings defaultSettings{
|
||||
#ifdef FEATURE_BMS
|
||||
.autoConnectBms = false,
|
||||
#endif
|
||||
.reverseBeep = true,
|
||||
.reverseBeepFreq0 = 3,
|
||||
.reverseBeepFreq1 = 0,
|
||||
|
@@ -55,7 +55,9 @@ union X {
|
||||
AboutMenu aboutMenu;
|
||||
AccessPointWifiSettingsMenu accessPointWifiSettingsMenu;
|
||||
BluetoothSettingsMenu bluetoothSettingsMenu;
|
||||
#ifdef FEATURE_BMS
|
||||
BmsMenu bmsMenu;
|
||||
#endif
|
||||
BuzzerMenu buzzerMenu;
|
||||
FrontCommandDebugMenu frontCommandDebugMenu;
|
||||
BackCommandDebugMenu backCommandDebugMenu;
|
||||
@@ -91,7 +93,9 @@ union X {
|
||||
WifiScanMenu wifiScanMenu;
|
||||
WifiSettingsMenu wifiSettingsMenu;
|
||||
|
||||
#ifdef FEATURE_BMS
|
||||
BmsDisplay bmsDisplay;
|
||||
#endif
|
||||
CalibrateDisplay calibrateDisplay;
|
||||
DualGraphDisplay dualGraphDisplay;
|
||||
GameOfLifeDisplay gameOfLifeDisplay;
|
||||
@@ -102,7 +106,9 @@ union X {
|
||||
SpiroDisplay spiroDisplay;
|
||||
StarfieldDisplay starFieldDisplay;
|
||||
StatusDisplay statusDisplay;
|
||||
#ifdef FEATURE_OTA
|
||||
UpdateDisplay updateDisplay;
|
||||
#endif
|
||||
|
||||
FrontFreqChangeScreen changeFrontFreq;
|
||||
FrontPatternChangeScreen changeFrontPattern;
|
||||
@@ -158,10 +164,12 @@ union X {
|
||||
SumAbsoluteCurrentGraphDisplay sumAbsoluteCurrentGraphDisplay;
|
||||
FrontVoltageGraphDisplay frontVoltageGraphDisplay;
|
||||
BackVoltageGraphDisplay backVoltageGraphDisplay;
|
||||
#ifdef FEATURE_BMS
|
||||
BmsVoltageGraphDisplay bmsVoltageGraphDisplay;
|
||||
BmsCurrentGraphDisplay bmsCurrentGraphDisplay;
|
||||
BmsPowerGraphDisplay bmsPowerGraphDisplay;
|
||||
SumCurrentsComparisonGraphDisplay sumCurrentsComparisonGraphDisplay;
|
||||
#endif
|
||||
MotorCurrentsGraphDisplay motorCurrentsGraphDisplay;
|
||||
} displays;
|
||||
|
||||
@@ -169,7 +177,9 @@ template<typename T> T &getRefByType() = delete;
|
||||
template<> decltype(displays.aboutMenu) &getRefByType<decltype(displays.aboutMenu)>() { return displays.aboutMenu; }
|
||||
template<> decltype(displays.accessPointWifiSettingsMenu) &getRefByType<decltype(displays.accessPointWifiSettingsMenu)>() { return displays.accessPointWifiSettingsMenu; }
|
||||
template<> decltype(displays.bluetoothSettingsMenu) &getRefByType<decltype(displays.bluetoothSettingsMenu)>() { return displays.bluetoothSettingsMenu; }
|
||||
#ifdef FEATURE_BMS
|
||||
template<> decltype(displays.bmsMenu) &getRefByType<decltype(displays.bmsMenu)>() { return displays.bmsMenu; }
|
||||
#endif
|
||||
template<> decltype(displays.buzzerMenu) &getRefByType<decltype(displays.buzzerMenu)>() { return displays.buzzerMenu; }
|
||||
template<> decltype(displays.boardcomputerHardwareSettingsMenu) &getRefByType<decltype(displays.boardcomputerHardwareSettingsMenu)>() { return displays.boardcomputerHardwareSettingsMenu; }
|
||||
template<> decltype(displays.controllerHardwareSettingsMenu) &getRefByType<decltype(displays.controllerHardwareSettingsMenu)>() { return displays.controllerHardwareSettingsMenu; }
|
||||
@@ -205,7 +215,9 @@ template<> decltype(displays.stationWifiSettingsMenu) &
|
||||
template<> decltype(displays.wifiScanMenu) &getRefByType<decltype(displays.wifiScanMenu)>() { return displays.wifiScanMenu; }
|
||||
template<> decltype(displays.wifiSettingsMenu) &getRefByType<decltype(displays.wifiSettingsMenu)>() { return displays.wifiSettingsMenu; }
|
||||
|
||||
#ifdef FEATURE_BMS
|
||||
template<> decltype(displays.bmsDisplay) &getRefByType<decltype(displays.bmsDisplay)>() { return displays.bmsDisplay; }
|
||||
#endif
|
||||
template<> decltype(displays.calibrateDisplay) &getRefByType<decltype(displays.calibrateDisplay)>() { return displays.calibrateDisplay; }
|
||||
template<> decltype(displays.dualGraphDisplay) &getRefByType<decltype(displays.dualGraphDisplay)>() { return displays.dualGraphDisplay; }
|
||||
template<> decltype(displays.gameOfLifeDisplay) &getRefByType<decltype(displays.gameOfLifeDisplay)>() { return displays.gameOfLifeDisplay; }
|
||||
@@ -216,7 +228,9 @@ template<> decltype(displays.poweroffDisplay) &
|
||||
template<> decltype(displays.spiroDisplay) &getRefByType<decltype(displays.spiroDisplay)>() { return displays.spiroDisplay; }
|
||||
template<> decltype(displays.starFieldDisplay) &getRefByType<decltype(displays.starFieldDisplay)>() { return displays.starFieldDisplay; }
|
||||
template<> decltype(displays.statusDisplay) &getRefByType<decltype(displays.statusDisplay)>() { return displays.statusDisplay; }
|
||||
#ifdef FEATURE_OTA
|
||||
template<> decltype(displays.updateDisplay) &getRefByType<decltype(displays.updateDisplay)>() { return displays.updateDisplay; }
|
||||
#endif
|
||||
|
||||
template<> decltype(displays.changeFrontFreq) &getRefByType<decltype(displays.changeFrontFreq)>() { return displays.changeFrontFreq; }
|
||||
template<> decltype(displays.changeFrontPattern) &getRefByType<decltype(displays.changeFrontPattern)>() { return displays.changeFrontPattern; }
|
||||
@@ -272,10 +286,12 @@ template<> decltype(displays.sumCurrentGraphDisplay) &
|
||||
template<> decltype(displays.sumAbsoluteCurrentGraphDisplay) &getRefByType<decltype(displays.sumAbsoluteCurrentGraphDisplay)>() { return displays.sumAbsoluteCurrentGraphDisplay; }
|
||||
template<> decltype(displays.frontVoltageGraphDisplay) &getRefByType<decltype(displays.frontVoltageGraphDisplay)>() { return displays.frontVoltageGraphDisplay; }
|
||||
template<> decltype(displays.backVoltageGraphDisplay) &getRefByType<decltype(displays.backVoltageGraphDisplay)>() { return displays.backVoltageGraphDisplay; }
|
||||
#ifdef FEATURE_BMS
|
||||
template<> decltype(displays.bmsVoltageGraphDisplay) &getRefByType<decltype(displays.bmsVoltageGraphDisplay)>() { return displays.bmsVoltageGraphDisplay; }
|
||||
template<> decltype(displays.bmsCurrentGraphDisplay) &getRefByType<decltype(displays.bmsCurrentGraphDisplay)>() { return displays.bmsCurrentGraphDisplay; }
|
||||
template<> decltype(displays.bmsPowerGraphDisplay) &getRefByType<decltype(displays.bmsPowerGraphDisplay)>() { return displays.bmsPowerGraphDisplay; }
|
||||
template<> decltype(displays.sumCurrentsComparisonGraphDisplay) &getRefByType<decltype(displays.sumCurrentsComparisonGraphDisplay)>() { return displays.sumCurrentsComparisonGraphDisplay; }
|
||||
#endif
|
||||
template<> decltype(displays.motorCurrentsGraphDisplay) &getRefByType<decltype(displays.motorCurrentsGraphDisplay)>() { return displays.motorCurrentsGraphDisplay; }
|
||||
|
||||
|
||||
|
@@ -9,7 +9,9 @@ enum class LarsmModeMode : uint8_t { Mode1, Mode2, Mode3, Mode4 };
|
||||
|
||||
struct Settings
|
||||
{
|
||||
#ifdef FEATURE_BMS
|
||||
bool autoConnectBms;
|
||||
#endif
|
||||
bool reverseBeep;
|
||||
uint8_t reverseBeepFreq0;
|
||||
uint8_t reverseBeepFreq1;
|
||||
@@ -71,7 +73,9 @@ struct Settings
|
||||
template<typename T>
|
||||
void Settings::executeForEverySetting(T &&callable)
|
||||
{
|
||||
#ifdef FEATURE_BMS
|
||||
callable("autoConnectBms", autoConnectBms);
|
||||
#endif
|
||||
callable("reverseBeep", reverseBeep);
|
||||
callable("revBeepFreq0", reverseBeepFreq0);
|
||||
callable("revBeepFreq1", reverseBeepFreq1);
|
||||
|
@@ -12,7 +12,9 @@ struct RefAccessorSaveSettings : public virtual RefAccessor<T>
|
||||
void setValue(T value) override { RefAccessor<T>::setValue(value); saveSettings(); };
|
||||
};
|
||||
|
||||
#ifdef FEATURE_BMS
|
||||
struct AutoConnectBmsAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.autoConnectBms; } };
|
||||
#endif
|
||||
struct ReverseBeepAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.reverseBeep; } };
|
||||
struct ReverseBeepFreq0Accessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return settings.reverseBeepFreq0; } };
|
||||
struct ReverseBeepFreq1Accessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return settings.reverseBeepFreq1; } };
|
||||
|
@@ -9,7 +9,11 @@
|
||||
namespace {
|
||||
namespace statistics {
|
||||
using ContainerType = ring_buffer<float, 200>;
|
||||
ContainerType gas, brems, avgSpeed, avgSpeedKmh, sumCurrent, sumAbsoluteCurrent, frontVoltage, backVoltage, frontLeftCurrent, frontRightCurrent, backLeftCurrent, backRightCurrent, bmsVoltage, bmsCurrent, bmsPower;
|
||||
ContainerType gas, brems, avgSpeed, avgSpeedKmh, sumCurrent, sumAbsoluteCurrent, frontVoltage, backVoltage, frontLeftCurrent, frontRightCurrent, backLeftCurrent, backRightCurrent
|
||||
#ifdef FEATURE_BMS
|
||||
, bmsVoltage, bmsCurrent, bmsPower
|
||||
#endif
|
||||
;
|
||||
}
|
||||
|
||||
void pushStats()
|
||||
@@ -32,9 +36,11 @@ void pushStats()
|
||||
statistics::backLeftCurrent.push_back(fixCurrent(back.feedback.left.current));
|
||||
statistics::backRightCurrent.push_back(fixCurrent(back.feedback.right.current));
|
||||
}
|
||||
#ifdef FEATURE_BMS
|
||||
statistics::bmsVoltage.push_back(bms::voltage);
|
||||
statistics::bmsCurrent.push_back(bms::current);
|
||||
statistics::bmsPower.push_back(bms::power);
|
||||
#endif
|
||||
}
|
||||
|
||||
class BufferAccessorInterface
|
||||
@@ -58,9 +64,11 @@ using SumCurrentStatistics = BufferAccessorImpl<statistics::sumCurrent>;
|
||||
using SumAbsoluteCurrentStatistics = BufferAccessorImpl<statistics::sumAbsoluteCurrent>;
|
||||
using FrontVoltageStatistics = BufferAccessorImpl<statistics::frontVoltage>;
|
||||
using BackVoltageStatistics = BufferAccessorImpl<statistics::backVoltage>;
|
||||
#ifdef FEATURE_BMS
|
||||
using BmsVoltageStatistics = BufferAccessorImpl<statistics::bmsVoltage>;
|
||||
using BmsCurrentStatistics = BufferAccessorImpl<statistics::bmsCurrent>;
|
||||
using BmsPowerStatistics = BufferAccessorImpl<statistics::bmsPower>;
|
||||
#endif
|
||||
using FrontLeftCurrentStatistics = BufferAccessorImpl<statistics::frontLeftCurrent>;
|
||||
using FrontRightCurrentStatistics = BufferAccessorImpl<statistics::frontRightCurrent>;
|
||||
using BackLeftCurrentStatistics = BufferAccessorImpl<statistics::backLeftCurrent>;
|
||||
|
Reference in New Issue
Block a user