Merge pull request #138 from bobbycar-graz/cpp-refactor

More Cpp refactoring
This commit is contained in:
CommanderRedYT
2021-12-07 16:11:35 +01:00
committed by GitHub
24 changed files with 462 additions and 120 deletions

View File

@ -100,6 +100,7 @@ set(headers
displays/menus/presetsmenu.h
displays/menus/profilesmenu.h
displays/menus/selectbatterytypemenu.h
displays/menus/selectbuildserverbranch.h
displays/menus/selectbuildservermenu.h
displays/menus/selectmodemenu.h
displays/menus/selectotabuildmenu.h
@ -297,6 +298,7 @@ set(sources
displays/menus/presetsmenu.cpp
displays/menus/profilesmenu.cpp
displays/menus/selectbatterytypemenu.cpp
displays/menus/selectbuildserverbranch.cpp
displays/menus/selectbuildservermenu.cpp
displays/menus/selectmodemenu.cpp
displays/menus/selectotabuildmenu.cpp

View File

@ -10,7 +10,7 @@ using namespace espgui;
namespace {
#ifdef FEATURE_LEDSTRIP
template<int16_t type>
template<uint16_t type>
class LedStripSetAnimationAction : public virtual ActionInterface
{
public:

View File

@ -4,9 +4,8 @@
#include "textinterface.h"
#include "ble_bobby.h"
namespace {
#ifdef FEATURE_BLE
struct BleServerPeerDevicesText : public virtual TextInterface {
struct BleServerPeerDevicesText : public virtual espgui::TextInterface {
public:
std::string text() const override
{
@ -17,7 +16,7 @@ public:
}
};
struct BleCharacSubscribedText : public virtual TextInterface {
struct BleCharacSubscribedText : public virtual espgui::TextInterface {
public:
std::string text() const override
{
@ -28,4 +27,3 @@ public:
}
};
#endif
}

View File

@ -18,7 +18,111 @@
#include "esp_http_client.h"
#ifdef FEATURE_OTA
namespace buildserver {
uint16_t count_available_buildserver()
{
uint16_t count = 0;
for (const auto &otaServer : stringSettings.otaServers) {
if (!otaServer.url.empty()) count++;
}
return count;
}
namespace SelectBranch {
cpputils::DelayedConstruction<AsyncHttpRequest> request;
bool request_running{false};
bool constructedMenu{false};
std::string request_failed{};
std::vector<std::string> branches{};
void setup_request()
{
if (!request.constructed())
{
request.construct("ota-descriptor-request", espcpputils::CoreAffinity::Core0);
}
}
void start_descriptor_request(std::string server_base_url)
{
if (!request.constructed())
{
ESP_LOGW("BOBBY", "request is im oarsch");
return;
}
const auto url = fmt::format("{}/otaDescriptor?username={}&branches", server_base_url, OTA_USERNAME);
ESP_LOGD("BOBBY", "requesting data...");
if (const auto result = request->start(url); !result)
{
ESP_LOGW("BOBBY", "request start failed");
return;
}
request_running = true;
constructedMenu = false;
}
void check_descriptor_request()
{
if (!request.constructed())
{
ESP_LOGW("BOBBY", "request is im oarsch");
request_running = false;
request_failed = "request is im oarsch";
return;
}
if (!request->finished())
{
// ESP_LOGW("BOBBY", "Request has not finished yet.");
return;
}
const auto helper = cpputils::makeCleanupHelper([](){ request->clearFinished(); });
const std::string content = std::move(request->takeBuffer());
if (const auto result = request->result(); !result)
{
ESP_LOGW("BOBBY", "request failed: %.*s", result.error().size(), result.error().data());
request_failed = result.error();
return;
}
const auto result = request->result();
ESP_LOGW("BOBBY", "Request finished: %s", content.c_str());
parse_response(content);
request_running = false;
request_failed = {};
}
void parse_response(std::string response)
{
StaticJsonDocument<1024> doc;
if (const auto error = deserializeJson(doc, response))
{
ESP_LOGE("BOBBY", "Error parsing server-response => %s (%s)", error.c_str(), response.c_str());
return;
}
JsonArray arr = doc.as<JsonArray>();
branches.resize(arr.size());
for(JsonVariant v : arr) {
branches.push_back(v);
}
}
bool get_request_running()
{
return request_running;
}
} // namespace SelectBranch
namespace SelectBuild {
void buildMenuFromJson(std::string json);
void buildMenuRequestError(std::string error);
@ -27,7 +131,7 @@ namespace buildserver {
std::array<std::string, 10> availableVersions{};
bool request_running{false};
std::string request_failed{};
bool parsing_finished{true};
bool parsing_finished{false};
cpputils::DelayedConstruction<AsyncHttpRequest> request;
std::string get_ota_url_from_index(uint16_t index)
@ -52,15 +156,6 @@ namespace buildserver {
}
}
uint16_t count_available_buildserver()
{
uint16_t count = 0;
for (const auto &otaServer : stringSettings.otaServers) {
if (!otaServer.url.empty()) count++;
}
return count;
}
std::string get_hash_url(std::string hash)
{
return fmt::format(url_for_hashes, hash);
@ -73,7 +168,10 @@ namespace buildserver {
std::string get_descriptor_url(std::string base_url)
{
return fmt::format("{}/otaDescriptor?username={}", base_url, OTA_USERNAME);
if (stringSettings.otaServerBranch.empty())
return fmt::format("{}/otaDescriptor?username={}", base_url, OTA_USERNAME);
else
return fmt::format("{}/otaDescriptor?username={}&branch={}", base_url, OTA_USERNAME, stringSettings.otaServerBranch);
}
void parse_response_into_variables(std::string response)
@ -172,5 +270,6 @@ namespace buildserver {
{
return request_running;
}
}
} // namespace SelectBuild
} // namespace buildserver
#endif

View File

@ -8,6 +8,24 @@
#ifdef FEATURE_OTA
namespace buildserver {
uint16_t count_available_buildserver();
namespace SelectBranch {
extern cpputils::DelayedConstruction<AsyncHttpRequest> request;
extern bool request_running;
extern bool constructedMenu;
void setup_request();
void start_descriptor_request(std::string server_base_url);
void check_descriptor_request();
void parse_response(std::string response);
bool get_request_running();
extern std::string request_failed;
extern std::vector<std::string> branches;
} // namespace SelectBranch
namespace SelectBuild {
void buildMenuFromJson(std::string json);
void buildMenuRequestError(std::string error);
@ -20,7 +38,6 @@ namespace buildserver {
extern cpputils::DelayedConstruction<AsyncHttpRequest> request;
std::string get_ota_url_from_index(uint16_t index);
uint16_t count_available_buildserver();
std::string get_hash_url(std::string hash);
std::string get_latest_url();
std::string get_descriptor_url(std::string base_url);
@ -29,5 +46,6 @@ namespace buildserver {
void start_descriptor_request(std::string server_base_url);
void check_descriptor_request();
bool get_request_running();
}
} // namespace SelectBuild
} // namespace buildserver
#endif

View File

@ -0,0 +1,30 @@
#include "blesettingsmenu.h"
// local includes
#include "accessors/settingsaccessors.h"
#include "actions/dummyaction.h"
#include "actions/switchscreenaction.h"
#include "actions/toggleboolaction.h"
#include "bletexthelpers.h"
#include "checkboxicon.h"
#include "displays/menus/settingsmenu.h"
#include "icons/back.h"
#include "texts.h"
#ifdef FEATURE_BLE
using namespace espgui;
BleSettingsMenu::BleSettingsMenu()
{
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BLEENABLED>, ToggleBoolAction, CheckboxIcon, BleEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, BleServerPeerDevicesText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, BleCharacSubscribedText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
void BleSettingsMenu::back()
{
switchScreen<SettingsMenu>();
}
#endif

View File

@ -2,32 +2,16 @@
// local includes
#include "menudisplay.h"
#include "menuitem.h"
#include "actions/switchscreenaction.h"
#include "actions/toggleboolaction.h"
#include "checkboxicon.h"
#include "bletexthelpers.h"
#include "accessors/settingsaccessors.h"
#include "icons/back.h"
#include "texts.h"
using namespace espgui;
namespace {
#ifdef FEATURE_BLE
class BleSettingsMenu :
public MenuDisplay,
public StaticText<TEXT_BLESETTINGS>,
public BackActionInterface<SwitchScreenAction<SettingsMenu>>
public espgui::MenuDisplay,
public espgui::StaticText<TEXT_BLESETTINGS>
{
public:
BleSettingsMenu()
{
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BLEENABLED>, ToggleBoolAction, CheckboxIcon, BleEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, BleServerPeerDevicesText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, BleCharacSubscribedText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
BleSettingsMenu();
void back() override;
};
#endif
} // namespace

View File

@ -0,0 +1,46 @@
#include "ledstripselectanimationmenu.h"
// Local includes
#include "actions/dummyaction.h"
#include "actions/ledstripanimationactions.h"
#include "actions/switchscreenaction.h"
#include "icons/back.h"
#include "ledstripdefines.h"
#include "ledstripmenu.h"
using namespace espgui;
#ifdef FEATURE_LEDSTRIP
std::string currentSelectedAnimationText::text() const
{
switch (animation_type) {
case LedstripAnimation::DefaultRainbow:
return TEXT_ANIMATION_DEFAULTRAINBOW;
case LedstripAnimation::BetterRainbow:
return TEXT_ANIMATION_BETTERRAINBOW;
case LedstripAnimation::SpeedSync:
return TEXT_ANIMATION_SPEEDSYNCANIMATION;
case LedstripAnimation::CustomColor:
return TEXT_ANIMATION_CUSTOMCOLOR;
default:
return "Animation Unkown";
}
}
LedstripSelectAnimationMenu::LedstripSelectAnimationMenu()
{
constructMenuItem<makeComponent<MenuItem, currentSelectedAnimationText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_DEFAULTRAINBOW>, LedStripSetAnimationAction<LedstripAnimation::DefaultRainbow>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_BETTERRAINBOW>, LedStripSetAnimationAction<LedstripAnimation::BetterRainbow>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_SPEEDSYNCANIMATION>, LedStripSetAnimationAction<LedstripAnimation::SpeedSync>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_CUSTOMCOLOR>, LedStripSetAnimationAction<LedstripAnimation::CustomColor>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<LedstripMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
void LedstripSelectAnimationMenu::back()
{
switchScreen<LedstripMenu>();
}
#endif

View File

@ -2,54 +2,21 @@
// Local includes
#include "menudisplay.h"
#include "utils.h"
#include "menuitem.h"
#include "ledstrip.h"
#include "ledstripselectanimationmenu.h"
#include "icons/back.h"
#include "texts.h"
#include "actions/dummyaction.h"
#include "actions/ledstripanimationactions.h"
#include "actions/switchscreenaction.h"
#include "ledstrip.h"
#include "ledstripdefines.h"
#ifdef FEATURE_LEDSTRIP
class currentSelectedAnimationText : public virtual TextInterface { public: std::string text() const override {
switch (animation_type) {
case LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW:
return TEXT_ANIMATION_DEFAULTRAINBOW;
case LEDSTRIP_ANIMATION_TYPE_BETTERRAINBOW:
return TEXT_ANIMATION_BETTERRAINBOW;
case LEDSTRIP_ANIMATION_TYPE_SPEEDSYNCANIMATION:
return TEXT_ANIMATION_SPEEDSYNCANIMATION;
case LEDSTRIP_ANIMATION_TYPE_CUSTOMCOLOR:
return TEXT_ANIMATION_CUSTOMCOLOR;
default:
return "Animation Unkown";
}
};
class currentSelectedAnimationText : public virtual espgui::TextInterface {
public:
std::string text() const override;
};
using namespace espgui;
namespace {
class LedstripSelectAnimationMenu :
public MenuDisplay,
public StaticText<TEXT_SELECTANIMATION>,
public BackActionInterface<SwitchScreenAction<LedstripMenu>>
{
public:
LedstripSelectAnimationMenu()
{
constructMenuItem<makeComponent<MenuItem, currentSelectedAnimationText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_DEFAULTRAINBOW>, LedStripSetAnimationAction<LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_BETTERRAINBOW>, LedStripSetAnimationAction<LEDSTRIP_ANIMATION_TYPE_BETTERRAINBOW>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_SPEEDSYNCANIMATION>, LedStripSetAnimationAction<LEDSTRIP_ANIMATION_TYPE_SPEEDSYNCANIMATION>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_CUSTOMCOLOR>, LedStripSetAnimationAction<LEDSTRIP_ANIMATION_TYPE_CUSTOMCOLOR>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<LedstripMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
};
} // Namespace
class LedstripSelectAnimationMenu :
public espgui::MenuDisplay,
public espgui::StaticText<TEXT_SELECTANIMATION>
{
public:
LedstripSelectAnimationMenu();
void back() override;
};
#endif

View File

@ -10,6 +10,7 @@
#include "icons/presets.h"
#include "icons/update.h"
#include "displays/menus/selectotabuildmenu.h"
#include "displays/menus/selectbuildserverbranch.h"
#include "displays/menus/selectbuildservermenu.h"
#include "displays/menus/mainmenu.h"
#include "displays/updatedisplay.h"
@ -21,6 +22,7 @@ using namespace espgui;
OtaMenu::OtaMenu()
{
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SELECTBUILD>, SwitchScreenAction<SelectBuildMenu>, StaticMenuItemIcon<&bobbyicons::presets>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SELECT_BRANCH>, SwitchScreenAction<SelectBuildserverBranchMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UPDATENOW>, SwitchScreenAction<UpdateDisplay>, StaticMenuItemIcon<&bobbyicons::update>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SELECTBUILDSERVERMENU>, SwitchScreenAction<SelectBuildServerMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();

View File

@ -0,0 +1,23 @@
#include "profilesmenu.h"
// local includes
#include "actions/switchprofileaction.h"
#include "actions/switchscreenaction.h"
#include "displays/menus/mainmenu.h"
#include "icons/back.h"
#include "menudisplay.h"
#include "texts.h"
ProfilesMenu::ProfilesMenu()
{
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE0>, SwitchProfileAction<0>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE1>, SwitchProfileAction<1>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE2>, SwitchProfileAction<2>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE3>, SwitchProfileAction<3>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
void ProfilesMenu::back()
{
switchScreen<MainMenu>();
}

View File

@ -2,27 +2,13 @@
// local includes
#include "menudisplay.h"
#include "actions/switchprofileaction.h"
#include "actions/switchscreenaction.h"
#include "icons/back.h"
#include "texts.h"
using namespace espgui;
namespace {
class ProfilesMenu :
public MenuDisplay,
public StaticText<TEXT_PROFILES>,
public BackActionInterface<SwitchScreenAction<MainMenu>>
public espgui::MenuDisplay,
public espgui::StaticText<TEXT_PROFILES>
{
public:
ProfilesMenu()
{
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE0>, SwitchProfileAction<0>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE1>, SwitchProfileAction<1>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE2>, SwitchProfileAction<2>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE3>, SwitchProfileAction<3>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
ProfilesMenu();
void back() override;
};
} // namespace

View File

@ -0,0 +1,128 @@
#ifdef FEATURE_OTA
#include "selectbuildserverbranch.h"
// 3rd party includes
#include <espwifistack.h>
// local includes
#include "actions/dummyaction.h"
#include "actions/switchscreenaction.h"
#include "buildserver.h"
#include "displays/menus/otamenu.h"
#include "globals.h"
#include "icons/back.h"
#include "icons/reboot.h"
#include "utils.h"
#define ERR_MESSAGE(text) \
constructMenuItem<makeComponent<MenuItem, StaticText<text>, DefaultFont, StaticColor<TFT_RED>, DummyAction>>(); \
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<OtaMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); \
return;
using namespace espgui;
using namespace buildserver;
using namespace SelectBuildServerBranch;
namespace SelectBuildServerBranch {
std::string CurrentBranch::text() const
{
return stringSettings.otaServerBranch.empty() ? "All builds" : stringSettings.otaServerBranch;
}
std::string BranchMenuItem::text() const
{
return m_name;
}
void BranchMenuItem::setName(std::string &&name)
{
m_name = std::move(name);
}
void BranchMenuItem::setName(const std::string &name)
{
m_name = name;
}
void BranchMenuItem::triggered()
{
stringSettings.otaServerBranch = m_name;
saveSettings();
}
void ClearBranchAction::triggered()
{
stringSettings.otaServerBranch = {};
saveSettings();
}
}
SelectBuildserverBranchMenu::SelectBuildserverBranchMenu()
{
using namespace SelectBuildServerBranch;
if (count_available_buildserver() < 1)
{
ERR_MESSAGE(TEXT_OTA_NOBUILDSERVERAVAILABLE); // E:No server saved.
}
if (stringSettings.otaServerUrl.empty())
{
ERR_MESSAGE(TEXT_OTA_NOBUILDSERVERSELECTED); // E:No server selected.
}
if (const auto staStatus = wifi_stack::get_sta_status(); staStatus != wifi_stack::WiFiStaStatus::CONNECTED)
{
ERR_MESSAGE(TEXT_OTA_NOCONNECTION); // E:No internet.
}
SelectBranch::setup_request();
SelectBranch::start_descriptor_request(stringSettings.otaServerUrl);
}
void SelectBuildserverBranchMenu::update()
{
using namespace SelectBranch;
if(get_request_running())
{
check_descriptor_request();
if (!request_failed.empty())
{
this->buildMenuRequestError(request_failed);
request_failed = {};
}
}
if (!constructedMenu && branches.size() > 0)
{
constructedMenu = true;
constructMenuItem<makeComponent<MenuItem, CurrentBranch, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
for (const std::string &branch : branches)
{
if (branch.empty())
continue;
auto &menuitem = constructMenuItem<BranchMenuItem>();
menuitem.setName(branch);
}
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SELECT_BRANCH_CLEAR>, ClearBranchAction, StaticMenuItemIcon<&bobbyicons::reboot>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<OtaMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
Base::update();
}
void SelectBuildserverBranchMenu::back()
{
switchScreen<OtaMenu>();
}
void SelectBuildserverBranchMenu::buildMenuRequestError(std::string error)
{
auto &item = constructMenuItem<makeComponent<MenuItem, ChangeableText, DefaultFont, StaticColor<TFT_RED>, DummyAction>>();
item.setTitle(error);
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<OtaMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
#endif

View File

@ -0,0 +1,46 @@
#pragma once
// 3rd party includes
#include <menudisplay.h>
#include <texts.h>
#ifdef FEATURE_OTA
namespace SelectBuildServerBranch {
class CurrentBranch : public virtual espgui::TextInterface
{
public:
std::string text() const override;
};
class BranchMenuItem : public espgui::MenuItem
{
public:
std::string text() const override;
void setName(std::string &&name);
void setName(const std::string &name);
void triggered() override;
private:
std::string m_name;
};
class ClearBranchAction : public virtual espgui::ActionInterface
{
public:
void triggered() override;
};
}
class SelectBuildserverBranchMenu :
public espgui::MenuDisplay,
public espgui::StaticText<TEXT_SELECT_BRANCH>
{
using Base = espgui::MenuDisplay;
public:
SelectBuildserverBranchMenu();
void buildMenuRequestError(std::string error);
void update() override;
void back() override;
};
#endif

View File

@ -15,7 +15,7 @@
#ifdef FEATURE_OTA
using namespace buildserver;
using namespace buildserver::SelectBuild;
using namespace espgui;
namespace {

View File

@ -19,7 +19,7 @@
#define MESSAGE(text) constructMenuItem<makeComponent<MenuItem, StaticText<text>, DefaultFont, StaticColor<TFT_RED>, DummyAction>>()
using namespace espgui;
using namespace buildserver;
using namespace buildserver::SelectBuild;
namespace {
template<int item_color>
@ -50,7 +50,7 @@ private:
SelectBuildMenu::SelectBuildMenu()
{
if (count_available_buildserver() < 1)
if (buildserver::count_available_buildserver() < 1)
{
MESSAGE(TEXT_OTA_NOBUILDSERVERAVAILABLE);
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<OtaMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();

View File

@ -16,8 +16,8 @@ using namespace std::chrono_literals;
std::vector<CRGB> leds;
uint8_t gHue = 0;
int16_t blinkAnimation = LEDSTRIP_OVERWRITE_NONE;
int16_t animation_type = LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW;
uint16_t blinkAnimation = LEDSTRIP_OVERWRITE_NONE;
uint16_t animation_type = LedstripAnimation::DefaultRainbow;
void initLedStrip()
@ -215,10 +215,10 @@ void showAnimation()
{
if (settings.ledstrip.enableLedAnimation && !simplified && !(asyncOtaTaskStarted && settings.ledstrip.otaMode != OtaAnimationModes::None))
{
if (animation_type == LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW) showDefaultLedstrip();
else if (animation_type == LEDSTRIP_ANIMATION_TYPE_BETTERRAINBOW) showBetterRainbow();
else if (animation_type == LEDSTRIP_ANIMATION_TYPE_SPEEDSYNCANIMATION) showSpeedSyncAnimation();
else if (animation_type == LEDSTRIP_ANIMATION_TYPE_CUSTOMCOLOR) showCustomColor();
if (animation_type == LedstripAnimation::DefaultRainbow) showDefaultLedstrip();
else if (animation_type == LedstripAnimation::BetterRainbow) showBetterRainbow();
else if (animation_type == LedstripAnimation::SpeedSync) showSpeedSyncAnimation();
else if (animation_type == LedstripAnimation::CustomColor) showCustomColor();
else showDefaultLedstrip();
}
else if (asyncOtaTaskStarted && settings.ledstrip.otaMode != OtaAnimationModes::None)

View File

@ -29,8 +29,8 @@ enum OtaAnimationModes
extern std::vector<CRGB> leds;
extern uint8_t gHue;
extern int16_t blinkAnimation;
extern int16_t animation_type;
extern uint16_t blinkAnimation;
extern uint16_t animation_type;
void showDefaultLedstrip();
void showAnimation();

View File

@ -1,4 +1,5 @@
#pragma once
#include <cstdint>
/*
* This file contains a few defines, so you don't have to remember which ledstrip animation is which number
*/
@ -13,11 +14,12 @@
#endif
#define LEDSTRIP_OVERWRITE_BLINKBOTH 3
#define LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW 0
#define LEDSTRIP_ANIMATION_TYPE_BETTERRAINBOW 1
#define LEDSTRIP_ANIMATION_TYPE_SPEEDSYNCANIMATION 2
#define LEDSTRIP_ANIMATION_TYPE_CUSTOMCOLOR 3
enum LedstripAnimation : uint16_t {
DefaultRainbow,
BetterRainbow,
SpeedSync,
CustomColor
};
#define BLINK_LEFT_EXPR blinkAnimation != LEDSTRIP_OVERWRITE_BLINKRIGHT
#define BLINK_RIGHT_EXPR blinkAnimation != LEDSTRIP_OVERWRITE_BLINKLEFT

View File

@ -51,6 +51,7 @@ StringSettings makeDefaultStringSettings()
.otaServerUrl = {},
#endif
.ap_password = STRING(AP_PASSWORD),
.otaServerBranch = {}
};
}
} // namespace presets

View File

@ -256,7 +256,7 @@ constexpr Settings::Ledstrip defaultLedstrip {
#ifdef LEDSTRIP_ANIMATION_DEFAULT
.animationType = LEDSTRIP_ANIMATION_DEFAULT,
#else
.animationType = LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW,
.animationType = LedstripAnimation::DefaultRainbow,
#endif
.enableFullBlink = false,
.enableStVO = false,

View File

@ -49,6 +49,7 @@ struct StringSettings
std::string dns_key;
#endif
std::string ap_password;
std::string otaServerBranch;
};
template<typename T>
@ -118,6 +119,7 @@ void StringSettings::executeForEveryCommonSetting(T &&callable)
callable("dnskey", dns_key);
#endif
callable("ap_pw", ap_password);
callable("otaBranch", otaServerBranch);
}
template<typename T>

View File

@ -533,4 +533,8 @@ char TEXT_STATSCLEAR[] = "Clear current km";
char TEXT_POWERSUPPLY[] = "Powersupply";
#endif
char TEXT_REENABLE_MENUITEMS[] = "Show advanced";
//SelectBuildserverBranchMenu
char TEXT_SELECT_BRANCH[] = "Select Branch";
char TEXT_SELECT_BRANCH_CLEAR[] = "Clear Branch";
} // namespace

View File

@ -532,6 +532,10 @@ extern char TEXT_STATSCLEAR[];
extern char TEXT_POWERSUPPLY[];
#endif
extern char TEXT_REENABLE_MENUITEMS[];
//SelectBuildserverBranchMenu
extern char TEXT_SELECT_BRANCH[];
extern char TEXT_SELECT_BRANCH_CLEAR[];
} // namespace
using namespace bobbytexts;