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