From 116f343523ff0141bc9531df8d6e7f474fe4bc0b Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Sun, 2 Jan 2022 04:07:19 +0100 Subject: [PATCH] transfered settings.boardcomputerHardware, settings.cloudSettings and udpCloudSettings --- main/accessors/settingsaccessors.h | 30 +++++++------- main/cloud.cpp | 8 ++-- main/displays/menus/mainmenu.cpp | 4 +- main/displays/menus/presetsmenu.cpp | 6 +++ main/displays/statusdisplay.cpp | 2 +- main/main.cpp | 2 +- main/newsettings.h | 49 ++++++++++++++++++++++ main/potis.cpp | 6 +-- main/presets.h | 46 --------------------- main/settings.h | 63 ----------------------------- main/udpcloud.cpp | 12 +++--- 11 files changed, 87 insertions(+), 141 deletions(-) diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 5d432e3..affb85a 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -44,8 +44,8 @@ struct BleEnabledAccessor : public NewSettingsAccessor { ConfigWrapper { bool &getRef() const override { return settings.cloudSettings.cloudEnabled; } }; -struct CloudTransmitTimeoutAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.cloudSettings.cloudTransmitTimeout; } }; +struct CloudEnabledAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.cloudSettings.cloudEnabled; } }; +struct CloudTransmitTimeoutAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.cloudSettings.cloudTransmitTimeout; } }; #endif // Time @@ -115,26 +115,26 @@ struct BremsMaxAccessor : public NewSettingsAccessor { ConfigWrapper { ConfigWrapper &getConfig() const override { return configs.dpadDebounce; } }; #endif #ifdef FEATURE_GAMETRAK -struct GametrakXMinAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakXMin; } }; -struct GametrakXMaxAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakXMax; } }; -struct GametrakYMinAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakYMin; } }; -struct GametrakYMaxAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakYMax; } }; -struct GametrakDistMinAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakDistMin; } }; -struct GametrakDistMaxAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakDistMax; } }; +struct GametrakXMinAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.boardcomputerHardware.gametrakXMin; } }; +struct GametrakXMaxAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.boardcomputerHardware.gametrakXMax; } }; +struct GametrakYMinAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.boardcomputerHardware.gametrakYMin; } }; +struct GametrakYMaxAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.boardcomputerHardware.gametrakYMax; } }; +struct GametrakDistMinAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.boardcomputerHardware.gametrakDistMin; } }; +struct GametrakDistMaxAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.boardcomputerHardware.gametrakDistMax; } }; #endif -struct StatsUpdateRateAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.statsUpdateRate; } }; +struct StatsUpdateRateAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.boardcomputerHardware.timersSettings.statsUpdateRate; } }; // Cloud #ifdef FEATURE_CLOUD -struct CloudCollectRateAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.cloudCollectRate; } }; -struct CloudSendRateAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.cloudSendRate; } }; +struct CloudCollectRateAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.boardcomputerHardware.timersSettings.cloudCollectRate; } }; +struct CloudSendRateAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.boardcomputerHardware.timersSettings.cloudSendRate; } }; #endif #ifdef FEATURE_UDPCLOUD -struct UdpCloudSendIntervalAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.udpSendRateMs; } }; -struct UdpCloudEnabledAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.udpCloudSettings.udpCloudEnabled; } }; -struct CloudDebugEnableAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.udpCloudSettings.enableCloudDebug; } }; -struct UdpUseStdStringAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.udpCloudSettings.udpUseStdString; } }; +struct UdpCloudSendIntervalAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.boardcomputerHardware.timersSettings.udpSendRateMs; } }; +struct UdpCloudEnabledAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.udpCloudSettings.udpCloudEnabled; } }; +struct CloudDebugEnableAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.udpCloudSettings.enableCloudDebug; } }; +struct UdpUseStdStringAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.udpCloudSettings.udpUseStdString; } }; #endif // DefaultMode diff --git a/main/cloud.cpp b/main/cloud.cpp index 850e651..f070c51 100644 --- a/main/cloud.cpp +++ b/main/cloud.cpp @@ -36,7 +36,7 @@ std::optional lastCloudSend; void initCloud() { - if (settings.cloudSettings.cloudEnabled && + if (configs.cloudSettings.cloudEnabled.value && !configs.cloudUrl.value.empty()) { createCloud(); @@ -54,14 +54,14 @@ void updateCloud() { const auto now = espchrono::millis_clock::now(); - if (!lastCloudCollect || now - *lastCloudCollect >= std::chrono::milliseconds{settings.boardcomputerHardware.timersSettings.cloudCollectRate}) + if (!lastCloudCollect || now - *lastCloudCollect >= std::chrono::milliseconds{configs.boardcomputerHardware.timersSettings.cloudCollectRate.value}) { cloudCollect(); lastCloudCollect = now; } - if (!lastCloudSend || now - *lastCloudSend >= 1000ms/settings.boardcomputerHardware.timersSettings.cloudSendRate) + if (!lastCloudSend || now - *lastCloudSend >= 1000ms/configs.boardcomputerHardware.timersSettings.cloudSendRate.value) { cloudSend(); @@ -165,7 +165,7 @@ void cloudCollect() void cloudSend() { - if (settings.cloudSettings.cloudEnabled && + if (configs.cloudSettings.cloudEnabled.value && !configs.cloudUrl.value.empty()) { if (!cloudClient) diff --git a/main/displays/menus/mainmenu.cpp b/main/displays/menus/mainmenu.cpp index 024fc6b..1df83dd 100644 --- a/main/displays/menus/mainmenu.cpp +++ b/main/displays/menus/mainmenu.cpp @@ -10,7 +10,7 @@ #include "displays/menus/selectmodemenu.h" #include "displays/menus/ledstripmenu.h" #include "actions/modesettingsaction.h" -#include "displays/menus/presetsmenu.h" +// #include "displays/menus/presetsmenu.h" // temporarily disabled #include "displays/menus/profilesmenu.h" #include "displays/menus/graphsmenu.h" #include "displays/menus/batterymenu.h" @@ -116,7 +116,7 @@ MainMenu::MainMenu() #endif constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::demos>>>(); if (SHOWITEM) { constructMenuItem, SwitchScreenAction>>(); } - if (SHOWITEM) { constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::presets>>>(); } +// if (SHOWITEM) { constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::presets>>>(); } // temporarily disabled if (SHOWITEM) { constructMenuItem, SwitchScreenAction>>(); } constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::poweroff>>>(); constructMenuItem, RebootAction, StaticMenuItemIcon<&bobbyicons::reboot>>>(); diff --git a/main/displays/menus/presetsmenu.cpp b/main/displays/menus/presetsmenu.cpp index 4ab1657..272fc67 100644 --- a/main/displays/menus/presetsmenu.cpp +++ b/main/displays/menus/presetsmenu.cpp @@ -1,3 +1,8 @@ +// This menu is disabled because of issues with the new config system. It may be reenabled in the near future. + +// ALso reenable in mainmenu!! + +/* #include "presetsmenu.h" // local includes @@ -113,3 +118,4 @@ void PresetsMenu::back() { switchScreen(); } +*/ diff --git a/main/displays/statusdisplay.cpp b/main/displays/statusdisplay.cpp index 716c8d0..51f37d5 100644 --- a/main/displays/statusdisplay.cpp +++ b/main/displays/statusdisplay.cpp @@ -115,7 +115,7 @@ void StatusDisplay::redraw() tft.setTextFont(2); #ifdef FEATURE_UDPCLOUD - if(settings.udpCloudSettings.udpCloudEnabled && settings.udpCloudSettings.enableCloudDebug) + if(configs.udpCloudSettings.udpCloudEnabled.value && configs.udpCloudSettings.enableCloudDebug.value) { tft.fillRect(125, 258, 8, 8, (visualSendUdpPacket) ? TFT_DARKGREY : TFT_BLACK); } diff --git a/main/main.cpp b/main/main.cpp index 99a41e6..2cc2acf 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -102,7 +102,7 @@ extern "C" void app_main() schedulerTask.loop(); } - if (!lastStatsUpdate || now - *lastStatsUpdate >= 1000ms/settings.boardcomputerHardware.timersSettings.statsUpdateRate) + if (!lastStatsUpdate || now - *lastStatsUpdate >= 1000ms/configs.boardcomputerHardware.timersSettings.statsUpdateRate.value) { updateAccumulators(); pushStats(); diff --git a/main/newsettings.h b/main/newsettings.h index 265172c..9e53106 100644 --- a/main/newsettings.h +++ b/main/newsettings.h @@ -183,6 +183,7 @@ public: struct { ConfigWrapper bleEnabled {true, DoReset, {}, "bleEnabled" }; } bleSettings; + struct { ConfigWrapper wheelDiameter {DEFAULT_WHEELDIAMETER, DoReset, {}, "wheelDiameter" }; ConfigWrapper numMagnetPoles {15, DoReset, {}, "numMagnetPoles" }; @@ -192,6 +193,33 @@ public: ConfigWrapper canTransmitTimeout {200, DoReset, {}, "canTransmitTime" }; ConfigWrapper canReceiveTimeout {0, DoReset, {}, "canReceiveTimeo" }; } controllerHardware; + + struct { + ConfigWrapper gametrakXMin {0, DoReset, {}, "gametrakXMin" }; + ConfigWrapper gametrakXMax {4095, DoReset, {}, "gametrakXMax" }; + ConfigWrapper gametrakYMin {0, DoReset, {}, "gametrakYMin" }; + ConfigWrapper gametrakYMax {4095, DoReset, {}, "gametrakYMax" }; + ConfigWrapper gametrakDistMin {0, DoReset, {}, "gametrakDistMin" }; + ConfigWrapper gametrakDistMax {4095, DoReset, {}, "gametrakDistMax" }; + struct { + ConfigWrapper statsUpdateRate{50, DoReset, {}, "statsUpdateRate" }; + ConfigWrapper cloudCollectRate{100, DoReset, {}, "cloudCollectRat" }; + ConfigWrapper cloudSendRate {1, DoReset, {}, "cloudSendRate" }; + ConfigWrapper udpSendRateMs {65, DoReset, {}, "udpSendRate" }; + } timersSettings; + } boardcomputerHardware; + + struct { + ConfigWrapper cloudEnabled {false, DoReset, {}, "cloudEnabled" }; + ConfigWrapper cloudTransmitTimeout{10, DoReset, {}, "clodTransmTmout" }; + } cloudSettings; + + struct { + ConfigWrapper udpUid {0, DoReset, {}, "cloudUDPUid" }; + ConfigWrapper udpCloudEnabled {false, DoReset, {}, "enUdpCloud" }; + ConfigWrapper enableCloudDebug {false, DoReset, {}, "debugCloud" }; + ConfigWrapper udpUseStdString {false, DoReset, {}, "udpusestdstr" }; + } udpCloudSettings; // end old settings ConfigWrapper ledStripMaxMilliamps {3000, DoReset, {}, "ledMaxMilliamps" }; @@ -392,6 +420,27 @@ public: x(controllerHardware.sendBackCanCmd) \ x(controllerHardware.canTransmitTimeout) \ x(controllerHardware.canReceiveTimeout) \ + \ + x(boardcomputerHardware.gametrakXMin) \ + x(boardcomputerHardware.gametrakYMin) \ + x(boardcomputerHardware.gametrakXMax) \ + x(boardcomputerHardware.gametrakYMax) \ + x(boardcomputerHardware.gametrakDistMin) \ + x(boardcomputerHardware.gametrakDistMax) \ + \ + x(boardcomputerHardware.timersSettings.statsUpdateRate) \ + x(boardcomputerHardware.timersSettings.cloudCollectRate) \ + x(boardcomputerHardware.timersSettings.cloudSendRate) \ + x(boardcomputerHardware.timersSettings.udpSendRateMs) \ + \ + x(cloudSettings.cloudEnabled) \ + x(cloudSettings.cloudTransmitTimeout) \ + \ + x(udpCloudSettings.udpUid) \ + x(udpCloudSettings.udpCloudEnabled) \ + x(udpCloudSettings.enableCloudDebug) \ + x(udpCloudSettings.udpUseStdString) \ + \ //x(ledStripMaxMilliamps) template diff --git a/main/potis.cpp b/main/potis.cpp index 3d80e52..0e32744 100644 --- a/main/potis.cpp +++ b/main/potis.cpp @@ -76,12 +76,12 @@ void readPotis() #ifdef FEATURE_GAMETRAK raw_gametrakX = sampleMultipleTimes(PINS_GAMETRAKX); - gametrakX = cpputils::mapValueClamped(raw_gametrakX, settings.boardcomputerHardware.gametrakXMin, settings.boardcomputerHardware.gametrakXMax, 0., 1000.); + gametrakX = cpputils::mapValueClamped(raw_gametrakX, configs.boardcomputerHardware.gametrakXMin.value, configs.boardcomputerHardware.gametrakXMax.value, 0., 1000.); raw_gametrakY = sampleMultipleTimes(PINS_GAMETRAKY); - gametrakY = cpputils::mapValueClamped(raw_gametrakY, settings.boardcomputerHardware.gametrakYMin, settings.boardcomputerHardware.gametrakYMax, 0., 1000.); + gametrakY = cpputils::mapValueClamped(raw_gametrakY, configs.boardcomputerHardware.gametrakYMin.value, configs.boardcomputerHardware.gametrakYMax.value, 0., 1000.); raw_gametrakDist = sampleMultipleTimes(PINS_GAMETRAKDIST); - gametrakDist = cpputils::mapValueClamped(raw_gametrakDist, settings.boardcomputerHardware.gametrakDistMin, settings.boardcomputerHardware.gametrakDistMax, 0., 1000.); + gametrakDist = cpputils::mapValueClamped(raw_gametrakDist, configs.boardcomputerHardware.gametrakDistMin.value, configs.boardcomputerHardware.gametrakDistMax.value, 0., 1000.); #endif } diff --git a/main/presets.h b/main/presets.h index fa5aa32..12ae736 100644 --- a/main/presets.h +++ b/main/presets.h @@ -69,45 +69,6 @@ constexpr Settings::ControllerHardware spinnerControllerHardware { .invertBackRight = !DEFAULT_INVERTBACKRIGHT, }; -constexpr Settings::BoardcomputerHardware::TimersSettings defaultTimersSettings { - .statsUpdateRate = 50, -#ifdef FEATURE_CLOUD - .cloudCollectRate = 100, - .cloudSendRate = 1, -#endif -#ifdef FEATURE_UDPCLOUD - .udpSendRateMs = 65, -#endif -}; - -constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware { -#ifdef FEATURE_GAMETRAK - .gametrakXMin = DEFAULT_GAMETRAKXMIN, - .gametrakXMax = DEFAULT_GAMETRAKXMAX, - .gametrakYMin = DEFAULT_GAMETRAKYMIN, - .gametrakYMax = DEFAULT_GAMETRAKYMAX, - .gametrakDistMin = DEFAULT_GAMETRAKDISTMIN, - .gametrakDistMax = DEFAULT_GAMETRAKDISTMAX, -#endif - .timersSettings = defaultTimersSettings -}; - -#ifdef FEATURE_CLOUD -constexpr Settings::CloudSettings defaultCloudSettings { - .cloudEnabled = false, - .cloudTransmitTimeout = 10 -}; -#endif - -#ifdef FEATURE_UDPCLOUD -constexpr Settings::UdpCloudSettings defaultUdpCloudSettings { - .udpUid = 0, - .udpCloudEnabled = false, - .enableCloudDebug = false, - .udpUseStdString = false -}; -#endif - constexpr Settings::DefaultMode defaultDefaultMode { .modelMode = UnifiedModelMode::FocTorque, // profileSetting .squareGas = true, @@ -243,13 +204,6 @@ constexpr Settings::ESPNOW defaultEspNowSettings { constexpr Settings defaultSettings { .limits = defaultLimits, .controllerHardware = defaultControllerHardware, - .boardcomputerHardware = defaultBoardcomputerHardware, -#ifdef FEATURE_CLOUD - .cloudSettings = defaultCloudSettings, -#endif -#ifdef FEATURE_UDPCLOUD - .udpCloudSettings = defaultUdpCloudSettings, -#endif .defaultMode = defaultDefaultMode, .tempomatMode = defaultTempomatMode, .larsmMode = defaultLarsmMode, diff --git a/main/settings.h b/main/settings.h index 05edf54..1f9a03d 100644 --- a/main/settings.h +++ b/main/settings.h @@ -37,39 +37,6 @@ struct Settings bool invertFrontLeft, invertFrontRight, invertBackLeft, invertBackRight; // profileSetting } controllerHardware; - struct BoardcomputerHardware { -#ifdef FEATURE_GAMETRAK - int16_t gametrakXMin, gametrakXMax, gametrakYMin, gametrakYMax, gametrakDistMin, gametrakDistMax; -#endif - - struct TimersSettings { - int16_t statsUpdateRate; -#ifdef FEATURE_CLOUD - int16_t cloudCollectRate; - int16_t cloudSendRate; -#endif -#ifdef FEATURE_UDPCLOUD - int16_t udpSendRateMs; -#endif - } timersSettings; - } boardcomputerHardware; - -#ifdef FEATURE_CLOUD - struct CloudSettings { - bool cloudEnabled; - int16_t cloudTransmitTimeout; // in ms - } cloudSettings; -#endif - -#ifdef FEATURE_UDPCLOUD - struct UdpCloudSettings { - uint32_t udpUid; - bool udpCloudEnabled; - bool enableCloudDebug; - bool udpUseStdString; - } udpCloudSettings; -#endif - struct DefaultMode { UnifiedModelMode modelMode; // profileSetting bool squareGas; @@ -183,36 +150,6 @@ struct Settings template void Settings::executeForEveryCommonSetting(T &&callable) { -#ifdef FEATURE_GAMETRAK - callable("gametrakXMin", boardcomputerHardware.gametrakXMin); - callable("gametrakXMax", boardcomputerHardware.gametrakXMax); - callable("gametrakYMin", boardcomputerHardware.gametrakYMin); - callable("gametrakYMax", boardcomputerHardware.gametrakYMax); - callable("gametrakDistMin", boardcomputerHardware.gametrakDistMin); - callable("gametrakDistMax", boardcomputerHardware.gametrakDistMax); -#endif - - callable("statsUpdateRate", boardcomputerHardware.timersSettings.statsUpdateRate); -#ifdef FEATURE_CLOUD - callable("cloudCollectRat", boardcomputerHardware.timersSettings.cloudCollectRate); - callable("cloudSendRate", boardcomputerHardware.timersSettings.cloudSendRate); -#endif -#ifdef FEATURE_UDPCLOUD - callable("udpSendRate", boardcomputerHardware.timersSettings.udpSendRateMs); -#endif - -#ifdef FEATURE_CLOUD - callable("cloudEnabled", cloudSettings.cloudEnabled); - callable("clodTransmTmout", cloudSettings.cloudTransmitTimeout); -#endif - -#ifdef FEATURE_UDPCLOUD - callable("cloudUDPUid", udpCloudSettings.udpUid); - callable("enUdpCloud", udpCloudSettings.udpCloudEnabled); - callable("debugCloud", udpCloudSettings.enableCloudDebug); - callable("udpusestdstr", udpCloudSettings.udpUseStdString); -#endif - #ifdef FEATURE_LEDSTRIP callable("enableLedAnimat", ledstrip.enableLedAnimation); callable("enableBrakeLigh", ledstrip.enableBrakeLights); diff --git a/main/udpcloud.cpp b/main/udpcloud.cpp index 8c13dea..2d17fb9 100644 --- a/main/udpcloud.cpp +++ b/main/udpcloud.cpp @@ -40,7 +40,7 @@ void udpCloudInit() void udpCloudUpdate() { - if (settings.udpCloudSettings.udpCloudEnabled) + if (configs.udpCloudSettings.udpCloudEnabled.value && configs.udpCloudSettings.udpUid.touched()) sendUdpCloudPacket(); } @@ -94,7 +94,7 @@ std::string buildUdpCloudJson() // const auto w_per_kmh = watt / avgSpeedKmh; // User ID - doc["uid"] = settings.udpCloudSettings.udpUid; + doc["uid"] = configs.udpCloudSettings.udpUid.value; doc["upt"] = uptime; const auto addController = [&](const Controller &controller, const bool isBack) { @@ -192,8 +192,8 @@ std::string buildUdpCloudString() buf += "{"; // User ID - if(settings.udpCloudSettings.udpUid) - buf += fmt::format("\"uid\":{},", settings.udpCloudSettings.udpUid); + if(configs.udpCloudSettings.udpUid.value) + buf += fmt::format("\"uid\":{},", configs.udpCloudSettings.udpUid.value); else buf += "\"uid\":null,"; @@ -309,7 +309,7 @@ std::string buildUdpCloudString() void sendUdpCloudPacket() { - EVERY_N_MILLIS(settings.boardcomputerHardware.timersSettings.udpSendRateMs) { + EVERY_N_MILLIS(configs.boardcomputerHardware.timersSettings.udpSendRateMs.value) { if (espchrono::ago(timestampLastFailed) < 2s) { visualSendUdpPacket = false; @@ -360,7 +360,7 @@ void sendUdpCloudPacket() wifi_stack::UdpSender udpCloudSender; std::string buf; - buf = settings.udpCloudSettings.udpUseStdString ? buildUdpCloudString() : buildUdpCloudJson(); + buf = configs.udpCloudSettings.udpUseStdString.value ? buildUdpCloudString() : buildUdpCloudJson(); if (const auto result = udpCloudSender.send(receipient, buf); !result)