Implemented error handler in ChangeValueDisplays

This commit is contained in:
2021-12-29 21:53:47 +01:00
parent 855dbca1ca
commit 4b9a36f507
39 changed files with 336 additions and 418 deletions

View File

@ -8,6 +8,7 @@ set(headers
bluetoothtexthelpers.h bluetoothtexthelpers.h
bmsutils.h bmsutils.h
bobbybuttons.h bobbybuttons.h
bobbyerrorhandler.h
buildserver.h buildserver.h
buttons.h buttons.h
can.h can.h
@ -107,6 +108,7 @@ set(headers
displays/bobbydisplaywithtitle.h displays/bobbydisplaywithtitle.h
displays/bobbygraphdisplay.h displays/bobbygraphdisplay.h
displays/bobbymenudisplay.h displays/bobbymenudisplay.h
displays/bobbypopupdisplay.h
displays/bobbysplitgraphdisplay.h displays/bobbysplitgraphdisplay.h
displays/calibratedisplay.h displays/calibratedisplay.h
displays/calibratevoltagedisplay.h displays/calibratevoltagedisplay.h
@ -183,7 +185,6 @@ set(headers
displays/menus/wifistasettingsmenu.h displays/menus/wifistasettingsmenu.h
displays/metersdisplay.h displays/metersdisplay.h
displays/pingpongdisplay.h displays/pingpongdisplay.h
displays/popups/alertdisplay.h
displays/poweroffdisplay.h displays/poweroffdisplay.h
displays/powersupplydisplay.h displays/powersupplydisplay.h
displays/qrcodedebug.h displays/qrcodedebug.h
@ -241,6 +242,7 @@ set(sources
bluetoothtexthelpers.cpp bluetoothtexthelpers.cpp
bmsutils.cpp bmsutils.cpp
bobbybuttons.cpp bobbybuttons.cpp
bobbyerrorhandler.cpp
buildserver.cpp buildserver.cpp
buttons.cpp buttons.cpp
can.cpp can.cpp
@ -337,6 +339,7 @@ set(sources
displays/bobbydisplaywithtitle.cpp displays/bobbydisplaywithtitle.cpp
displays/bobbygraphdisplay.cpp displays/bobbygraphdisplay.cpp
displays/bobbymenudisplay.cpp displays/bobbymenudisplay.cpp
displays/bobbypopupdisplay.cpp
displays/bobbysplitgraphdisplay.cpp displays/bobbysplitgraphdisplay.cpp
displays/calibratedisplay.cpp displays/calibratedisplay.cpp
displays/calibratevoltagedisplay.cpp displays/calibratevoltagedisplay.cpp
@ -411,7 +414,6 @@ set(sources
displays/menus/wifistasettingsmenu.cpp displays/menus/wifistasettingsmenu.cpp
displays/metersdisplay.cpp displays/metersdisplay.cpp
displays/pingpongdisplay.cpp displays/pingpongdisplay.cpp
displays/popups/alertdisplay.cpp
displays/poweroffdisplay.cpp displays/poweroffdisplay.cpp
displays/powersupplydisplay.cpp displays/powersupplydisplay.cpp
displays/qrcodedebug.cpp displays/qrcodedebug.cpp

View File

@ -1,5 +1,8 @@
#pragma once #pragma once
// system includes
#include <cstdint>
// 3rdparty lib includes // 3rdparty lib includes
#include <accessorinterface.h> #include <accessorinterface.h>
@ -11,7 +14,15 @@
template<typename T> template<typename T>
struct RefAccessorSaveSettings : public virtual espgui::RefAccessor<T> struct RefAccessorSaveSettings : public virtual espgui::RefAccessor<T>
{ {
void setValue(T value) override { espgui::RefAccessor<T>::setValue(value); saveSettings(); }; typename espgui::AccessorInterface<T>::setter_result_t setValue(T value) override
{
espgui::RefAccessor<T>::setValue(value);
if (!saveSettings())
return tl::make_unexpected("saveSettings() failed!");
return {};
};
}; };
template<typename T> template<typename T>
@ -19,6 +30,48 @@ struct NewSettingsAccessor : public virtual espgui::AccessorInterface<T>
{ {
virtual ConfigWrapper<T>& getConfig() const = 0; virtual ConfigWrapper<T>& getConfig() const = 0;
T getValue() const override { return getConfig().value; } T getValue() const override
void setValue(T value) override { configs.write_config(getConfig(), value); } {
return getConfig().value;
}
typename espgui::AccessorInterface<T>::setter_result_t setValue(T value) override
{
return configs.write_config(getConfig(), value);
}
};
template<typename T>
struct NewSettingsChronoAdaptorAccessor;
template<>
struct NewSettingsChronoAdaptorAccessor<espchrono::minutes32> : public virtual espgui::AccessorInterface<int32_t>
{
virtual ConfigWrapper<espchrono::minutes32>& getConfig() const = 0;
int32_t getValue() const override
{
return getConfig().value.count();
}
typename espgui::AccessorInterface<int32_t>::setter_result_t setValue(int32_t value) override
{
return configs.write_config(getConfig(), espchrono::minutes32{value});
}
};
template<>
struct NewSettingsChronoAdaptorAccessor<espchrono::milliseconds32> : public virtual espgui::AccessorInterface<int32_t>
{
virtual ConfigWrapper<espchrono::milliseconds32>& getConfig() const = 0;
int32_t getValue() const override
{
return getConfig().value.count();
}
typename espgui::AccessorInterface<int32_t>::setter_result_t setValue(int32_t value) override
{
return configs.write_config(getConfig(), espchrono::milliseconds32{value});
}
}; };

View File

@ -27,7 +27,13 @@ struct IDcMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRe
struct NMotMaxKmhAccessor : public virtual espgui::AccessorInterface<int16_t> struct NMotMaxKmhAccessor : public virtual espgui::AccessorInterface<int16_t>
{ {
int16_t getValue() const override { return convertToKmh(settings.limits.nMotMax); } int16_t getValue() const override { return convertToKmh(settings.limits.nMotMax); }
void setValue(int16_t value) override { settings.limits.nMotMax = convertFromKmh(value); saveSettings(); } espgui::AccessorInterface<int16_t>::setter_result_t setValue(int16_t value) override
{
settings.limits.nMotMax = convertFromKmh(value);
if (!saveSettings())
return tl::make_unexpected("saveSettings() failed!");
return {};
}
}; };
struct NMotMaxRpmAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.limits.nMotMax; } }; struct NMotMaxRpmAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.limits.nMotMax; } };
struct FieldWeakMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.limits.fieldWeakMax; } }; struct FieldWeakMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.limits.fieldWeakMax; } };
@ -50,32 +56,14 @@ struct CloudTransmitTimeoutAccessor : public RefAccessorSaveSettings<int16_t> {
#endif #endif
// Time // Time
struct TimezoneOffsetAccessor : public virtual espgui::AccessorInterface<int32_t> //struct TimezoneOffsetAccessor : public NewSettingsAccessor<int32_t> { ConfigWrapper<int32_t> &getConfig() const override { return configs.timezoneOffset; } };
{ struct TimezoneOffsetAccessor : public NewSettingsChronoAdaptorAccessor<espchrono::minutes32> { ConfigWrapper<espchrono::minutes32> &getConfig() const override { return configs.timezoneOffset; } };
int32_t getValue() const override { return configs.timezoneOffset.value.count(); } struct DaylightSavingModeAccessor : public NewSettingsAccessor<espchrono::DayLightSavingMode> { ConfigWrapper<espchrono::DayLightSavingMode> &getConfig() const override { return configs.timeDst; } };
void setValue(int32_t value) override { configs.write_config(configs.timezoneOffset, espchrono::minutes32{value}); }
};
struct DaylightSavingModeAccessor : public virtual espgui::AccessorInterface<espchrono::DayLightSavingMode>
{
espchrono::DayLightSavingMode getValue() const override { return configs.timeDst.value; }
void setValue(espchrono::DayLightSavingMode value) override { configs.write_config(configs.timeDst, value); }
};
#ifdef FEATURE_NTP #ifdef FEATURE_NTP
struct TimeServerEnabledAccessor : public virtual espgui::AccessorInterface<bool> struct TimeServerEnabledAccessor : public NewSettingsAccessor<bool> { ConfigWrapper<bool> &getConfig() const override { return configs.timeServerEnabled; } };
{ struct TimeSyncModeAccessor : public NewSettingsAccessor<sntp_sync_mode_t> { ConfigWrapper<sntp_sync_mode_t> &getConfig() const override { return configs.timeSyncMode; } };
bool getValue() const override { return configs.timeServerEnabled.value; } //struct TimeSyncIntervalAccessor : public NewSettingsAccessor<int32_t> { ConfigWrapper<int32_t> &getConfig() const override { return configs.timeSyncInterval; } };
void setValue(bool value) override { configs.write_config(configs.timeServerEnabled, value); } struct TimeSyncIntervalAccessor : public NewSettingsChronoAdaptorAccessor<espchrono::milliseconds32> { ConfigWrapper<espchrono::milliseconds32> &getConfig() const override { return configs.timeSyncInterval; } };
};
struct TimeSyncModeAccessor : public virtual espgui::AccessorInterface<sntp_sync_mode_t>
{
sntp_sync_mode_t getValue() const override { return configs.timeSyncMode.value; }
void setValue(sntp_sync_mode_t value) override { configs.write_config(configs.timeSyncMode, value); }
};
struct TimeSyncIntervalAccessor : public virtual espgui::AccessorInterface<int32_t>
{
int32_t getValue() const override { return configs.timeSyncInterval.value.count(); }
void setValue(int32_t value) override { configs.write_config(configs.timeSyncInterval, espchrono::milliseconds32{value}); }
};
#endif #endif
// Controller Hardware // Controller Hardware
@ -93,7 +81,13 @@ struct WheelDiameterMmAccessor : public RefAccessorSaveSettings<int16_t> { int16
struct WheelDiameterInchAccessor : public virtual espgui::AccessorInterface<float> struct WheelDiameterInchAccessor : public virtual espgui::AccessorInterface<float>
{ {
float getValue() const override { return convertToInch(settings.controllerHardware.wheelDiameter); } float getValue() const override { return convertToInch(settings.controllerHardware.wheelDiameter); }
void setValue(float value) override { settings.controllerHardware.wheelDiameter = convertFromInch(value); saveSettings(); } espgui::AccessorInterface<int16_t>::setter_result_t setValue(float value) override
{
settings.controllerHardware.wheelDiameter = convertFromInch(value);
if (!saveSettings())
return tl::make_unexpected("saveSettings() failed!");
return {};
}
}; };
struct NumMagnetPolesAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.controllerHardware.numMagnetPoles; } }; struct NumMagnetPolesAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.controllerHardware.numMagnetPoles; } };
struct SwapFrontBackAccessor : public RefAccessorSaveSettings<bool> { struct SwapFrontBackAccessor : public RefAccessorSaveSettings<bool> {

View File

@ -1,39 +1,3 @@
#include "wifistaconfigaccessors.h" #include "wifistaconfigaccessors.h"
// local includes
#include "newsettings.h"
using namespace espgui;
bool WifiStaEnabledAccessor::getValue() const { return configs.wifiStaEnabled.value; }
void WifiStaEnabledAccessor::setValue(bool value) { configs.write_config(configs.wifiStaEnabled, value); }
std::string WifiStaConfigSsidAccessor::getValue() const { return configs.wifi_configs[m_index].ssid.value; }
void WifiStaConfigSsidAccessor::setValue(std::string value) { configs.write_config(configs.wifi_configs[m_index].ssid, value); }
std::string WifiStaConfigKeyAccessor::getValue() const { return configs.wifi_configs[m_index].key.value; }
void WifiStaConfigKeyAccessor::setValue(std::string value) { configs.write_config(configs.wifi_configs[m_index].key, value); }
bool WifiStaConfigUseStaticIpAccessor::getValue() const { return configs.wifi_configs[m_index].useStaticIp.value; }
void WifiStaConfigUseStaticIpAccessor::setValue(bool value) { configs.write_config(configs.wifi_configs[m_index].useStaticIp, value); }
wifi_stack::ip_address_t WifiStaConfigStaticIpAccessor::getValue() const { return configs.wifi_configs[m_index].staticIp.value; }
void WifiStaConfigStaticIpAccessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticIp, value); }
wifi_stack::ip_address_t WifiStaConfigStaticSubnetAccessor::getValue() const { return configs.wifi_configs[m_index].staticSubnet.value; }
void WifiStaConfigStaticSubnetAccessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticSubnet, value); }
wifi_stack::ip_address_t WifiStaConfigStaticGatewayAccessor::getValue() const { return configs.wifi_configs[m_index].staticGateway.value; }
void WifiStaConfigStaticGatewayAccessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticGateway, value); }
bool WifiStaConfigUseStaticDnsAccessor::getValue() const { return configs.wifi_configs[m_index].useStaticDns.value; }
void WifiStaConfigUseStaticDnsAccessor::setValue(bool value) { configs.write_config(configs.wifi_configs[m_index].useStaticDns, value); }
wifi_stack::ip_address_t WifiStaConfigStaticDns0Accessor::getValue() const { return configs.wifi_configs[m_index].staticDns0.value; }
void WifiStaConfigStaticDns0Accessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticDns0, value); }
wifi_stack::ip_address_t WifiStaConfigStaticDns1Accessor::getValue() const { return configs.wifi_configs[m_index].staticDns1.value; }
void WifiStaConfigStaticDns1Accessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticDns1, value); }
wifi_stack::ip_address_t WifiStaConfigStaticDns2Accessor::getValue() const { return configs.wifi_configs[m_index].staticDns2.value; }
void WifiStaConfigStaticDns2Accessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticDns2, value); }

View File

@ -9,129 +9,98 @@
#include <accessorinterface.h> #include <accessorinterface.h>
#include <espwifiutils.h> #include <espwifiutils.h>
class WifiStaEnabledAccessor : public virtual espgui::AccessorInterface<bool> // local includes
{ #include "newsettings.h"
public: #include "accessorhelpers.h"
bool getValue() const override;
void setValue(bool value) override;
};
class WifiStaConfigSsidAccessor : public virtual espgui::AccessorInterface<std::string> struct WifiStaEnabledAccessor : public NewSettingsAccessor<bool> { ConfigWrapper<bool> &getConfig() const override { return configs.wifiStaEnabled; } };
class WifiStaConfigSsidAccessor : public virtual NewSettingsAccessor<std::string>
{ {
public: public:
WifiStaConfigSsidAccessor(int index) : m_index{index} {} WifiStaConfigSsidAccessor(int index) : m_index{index} {}
ConfigWrapper<std::string>& getConfig() const override { return configs.wifi_configs[m_index].ssid; }
std::string getValue() const override;
void setValue(std::string value) override;
private: private:
const int m_index; const int m_index;
}; };
class WifiStaConfigKeyAccessor : public virtual espgui::AccessorInterface<std::string> class WifiStaConfigKeyAccessor : public virtual NewSettingsAccessor<std::string>
{ {
public: public:
WifiStaConfigKeyAccessor(int index) : m_index{index} {} WifiStaConfigKeyAccessor(int index) : m_index{index} {}
ConfigWrapper<std::string>& getConfig() const override { return configs.wifi_configs[m_index].key; }
std::string getValue() const override;
void setValue(std::string value) override;
private: private:
const int m_index; const int m_index;
}; };
class WifiStaConfigUseStaticIpAccessor : public virtual espgui::AccessorInterface<bool> class WifiStaConfigUseStaticIpAccessor : public virtual NewSettingsAccessor<bool>
{ {
public: public:
WifiStaConfigUseStaticIpAccessor(int index) : m_index{index} {} WifiStaConfigUseStaticIpAccessor(int index) : m_index{index} {}
ConfigWrapper<bool>& getConfig() const override { return configs.wifi_configs[m_index].useStaticIp; }
bool getValue() const override;
void setValue(bool value) override;
private: private:
const int m_index; const int m_index;
}; };
class WifiStaConfigStaticIpAccessor : public virtual espgui::AccessorInterface<wifi_stack::ip_address_t> class WifiStaConfigStaticIpAccessor : public virtual NewSettingsAccessor<wifi_stack::ip_address_t>
{ {
public: public:
WifiStaConfigStaticIpAccessor(int index) : m_index{index} {} WifiStaConfigStaticIpAccessor(int index) : m_index{index} {}
ConfigWrapper<wifi_stack::ip_address_t>& getConfig() const override { return configs.wifi_configs[m_index].staticIp; }
wifi_stack::ip_address_t getValue() const override;
void setValue(wifi_stack::ip_address_t value) override;
private: private:
const int m_index; const int m_index;
}; };
class WifiStaConfigStaticSubnetAccessor : public virtual espgui::AccessorInterface<wifi_stack::ip_address_t> class WifiStaConfigStaticSubnetAccessor : public virtual NewSettingsAccessor<wifi_stack::ip_address_t>
{ {
public: public:
WifiStaConfigStaticSubnetAccessor(int index) : m_index{index} {} WifiStaConfigStaticSubnetAccessor(int index) : m_index{index} {}
ConfigWrapper<wifi_stack::ip_address_t>& getConfig() const override { return configs.wifi_configs[m_index].staticSubnet; }
wifi_stack::ip_address_t getValue() const override;
void setValue(wifi_stack::ip_address_t value) override;
private: private:
const int m_index; const int m_index;
}; };
class WifiStaConfigStaticGatewayAccessor : public virtual espgui::AccessorInterface<wifi_stack::ip_address_t> class WifiStaConfigStaticGatewayAccessor : public virtual NewSettingsAccessor<wifi_stack::ip_address_t>
{ {
public: public:
WifiStaConfigStaticGatewayAccessor(int index) : m_index{index} {} WifiStaConfigStaticGatewayAccessor(int index) : m_index{index} {}
ConfigWrapper<wifi_stack::ip_address_t>& getConfig() const override { return configs.wifi_configs[m_index].staticGateway; }
wifi_stack::ip_address_t getValue() const override;
void setValue(wifi_stack::ip_address_t value) override;
private: private:
const int m_index; const int m_index;
}; };
class WifiStaConfigUseStaticDnsAccessor : public virtual espgui::AccessorInterface<bool> class WifiStaConfigUseStaticDnsAccessor : public virtual NewSettingsAccessor<bool>
{ {
public: public:
WifiStaConfigUseStaticDnsAccessor(int index) : m_index{index} {} WifiStaConfigUseStaticDnsAccessor(int index) : m_index{index} {}
ConfigWrapper<bool>& getConfig() const override { return configs.wifi_configs[m_index].useStaticDns; }
bool getValue() const override;
void setValue(bool value) override;
private: private:
const int m_index; const int m_index;
}; };
class WifiStaConfigStaticDns0Accessor : public virtual espgui::AccessorInterface<wifi_stack::ip_address_t> class WifiStaConfigStaticDns0Accessor : public virtual NewSettingsAccessor<wifi_stack::ip_address_t>
{ {
public: public:
WifiStaConfigStaticDns0Accessor(int index) : m_index{index} {} WifiStaConfigStaticDns0Accessor(int index) : m_index{index} {}
ConfigWrapper<wifi_stack::ip_address_t>& getConfig() const override { return configs.wifi_configs[m_index].staticDns0; }
wifi_stack::ip_address_t getValue() const override;
void setValue(wifi_stack::ip_address_t value) override;
private: private:
const int m_index; const int m_index;
}; };
class WifiStaConfigStaticDns1Accessor : public virtual espgui::AccessorInterface<wifi_stack::ip_address_t> class WifiStaConfigStaticDns1Accessor : public virtual NewSettingsAccessor<wifi_stack::ip_address_t>
{ {
public: public:
WifiStaConfigStaticDns1Accessor(int index) : m_index{index} {} WifiStaConfigStaticDns1Accessor(int index) : m_index{index} {}
ConfigWrapper<wifi_stack::ip_address_t>& getConfig() const override { return configs.wifi_configs[m_index].staticDns1; }
wifi_stack::ip_address_t getValue() const override;
void setValue(wifi_stack::ip_address_t value) override;
private: private:
const int m_index; const int m_index;
}; };
class WifiStaConfigStaticDns2Accessor : public virtual espgui::AccessorInterface<wifi_stack::ip_address_t> class WifiStaConfigStaticDns2Accessor : public virtual NewSettingsAccessor<wifi_stack::ip_address_t>
{ {
public: public:
WifiStaConfigStaticDns2Accessor(int index) : m_index{index} {} WifiStaConfigStaticDns2Accessor(int index) : m_index{index} {}
ConfigWrapper<wifi_stack::ip_address_t>& getConfig() const override { return configs.wifi_configs[m_index].staticDns2; }
wifi_stack::ip_address_t getValue() const override;
void setValue(wifi_stack::ip_address_t value) override;
private: private:
const int m_index; const int m_index;
}; };

View File

@ -0,0 +1,14 @@
#include "bobbyerrorhandler.h"
// 3rdparty lib includes
#include <screenmanager.h>
// local includes
#include "displays/bobbypopupdisplay.h"
void BobbyErrorHandler::errorOccured(std::string &&error)
{
auto newDisplay = std::make_unique<BobbyPopupDisplay>(std::move(error), std::move(espgui::currentDisplay));
newDisplay->initOverlay();
espgui::currentDisplay = std::move(newDisplay);
}

9
main/bobbyerrorhandler.h Normal file
View File

@ -0,0 +1,9 @@
#pragma once
// 3rdparty lib includes
#include <errorhandlerinterface.h>
struct BobbyErrorHandler : public virtual espgui::ErrorHandlerInterface
{
void errorOccured(std::string &&error) override;
};

View File

@ -5,9 +5,12 @@
// local includes // local includes
#include "bobbybuttons.h" #include "bobbybuttons.h"
#include "bobbyerrorhandler.h"
template<typename Tvalue> template<typename Tvalue>
class BobbyChangeValueDisplay : public espgui::ChangeValueDisplay<Tvalue> class BobbyChangeValueDisplay :
public espgui::ChangeValueDisplay<Tvalue>,
public virtual BobbyErrorHandler
{ {
using Base = espgui::ChangeValueDisplay<Tvalue>; using Base = espgui::ChangeValueDisplay<Tvalue>;

View File

@ -1,5 +1,8 @@
#include "bobbydisplay.h" #include "bobbydisplay.h"
// local includes
#include "bobbybuttons.h"
void BobbyDisplay::rawButtonPressed(uint8_t button) void BobbyDisplay::rawButtonPressed(uint8_t button)
{ {
//Base::rawButtonPressed(button); //Base::rawButtonPressed(button);

View File

@ -3,9 +3,6 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <display.h> #include <display.h>
// local includes
#include "bobbybuttons.h"
class BobbyDisplay : public espgui::Display class BobbyDisplay : public espgui::Display
{ {
using Base = espgui::Display; using Base = espgui::Display;

View File

@ -1,5 +1,8 @@
#include "bobbydisplaywithtitle.h" #include "bobbydisplaywithtitle.h"
// local includes
#include "bobbybuttons.h"
void BobbyDisplayWithTitle::rawButtonPressed(uint8_t button) void BobbyDisplayWithTitle::rawButtonPressed(uint8_t button)
{ {
//Base::rawButtonPressed(button); //Base::rawButtonPressed(button);

View File

@ -3,9 +3,6 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <displaywithtitle.h> #include <displaywithtitle.h>
// local includes
#include "bobbybuttons.h"
class BobbyDisplayWithTitle : public espgui::DisplayWithTitle class BobbyDisplayWithTitle : public espgui::DisplayWithTitle
{ {
using Base = espgui::DisplayWithTitle; using Base = espgui::DisplayWithTitle;

View File

@ -1,5 +1,8 @@
#include "bobbymenudisplay.h" #include "bobbymenudisplay.h"
// local includes
#include "bobbybuttons.h"
void BobbyMenuDisplay::rawButtonPressed(uint8_t button) void BobbyMenuDisplay::rawButtonPressed(uint8_t button)
{ {
//Base::rawButtonPressed(button); //Base::rawButtonPressed(button);

View File

@ -3,9 +3,6 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <menudisplay.h> #include <menudisplay.h>
// local includes
#include "bobbybuttons.h"
class BobbyMenuDisplay : public espgui::MenuDisplay class BobbyMenuDisplay : public espgui::MenuDisplay
{ {
using Base = espgui::MenuDisplay; using Base = espgui::MenuDisplay;

View File

@ -0,0 +1,29 @@
#include "bobbypopupdisplay.h"
// local includes
#include "bobbybuttons.h"
void BobbyPopupDisplay::rawButtonPressed(uint8_t button)
{
//Base::rawButtonPressed(button);
if (const auto translated = translateRawButton(button))
buttonPressed(*translated);
}
void BobbyPopupDisplay::rawButtonReleased(uint8_t button)
{
//Base::rawButtonReleased(button);
if (const auto translated = translateRawButton(button))
buttonReleased(*translated);
}
void BobbyPopupDisplay::buttonPressed(espgui::Button button)
{
//Base::buttonPressed(button);
buttonPressedCommon(button);
}
void BobbyPopupDisplay::buttonReleased(espgui::Button button)
{
//Base::buttonReleased(button);
}

View File

@ -0,0 +1,18 @@
#pragma once
// 3rdparty lib includes
#include <popupdisplay.h>
class BobbyPopupDisplay : public espgui::PopupDisplay
{
using Base = espgui::PopupDisplay;
public:
using Base::Base;
void rawButtonPressed(uint8_t button) override;
void rawButtonReleased(uint8_t button) override;
void buttonPressed(espgui::Button button) override;
void buttonReleased(espgui::Button button) override;
};

View File

@ -18,24 +18,24 @@ using BatteryCellSeriesChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_CELL_SERIES>, espgui::StaticText<TEXT_CELL_SERIES>,
BatterySeriesCellsAccessor, BatterySeriesCellsAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BatteryMenu>>,
espgui::SwitchScreenAction<BatteryMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>
>; >;
using BatteryCellParallelChangeScreen = espgui::makeComponent< using BatteryCellParallelChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_CELL_PARALLEL>, espgui::StaticText<TEXT_CELL_PARALLEL>,
BatteryParallelCellsAccessor, BatteryParallelCellsAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BatteryMenu>>,
espgui::SwitchScreenAction<BatteryMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>
>; >;
using BatteryWHperKMChangeScreen = espgui::makeComponent< using BatteryWHperKMChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint16_t>, BobbyChangeValueDisplay<uint16_t>,
espgui::StaticText<TEXT_BATTERY_WHKM>, espgui::StaticText<TEXT_BATTERY_WHKM>,
BatteryWHperKMAccessor, BatteryWHperKMAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BatteryMenu>>,
espgui::SwitchScreenAction<BatteryMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>
>; >;
using namespace espgui; using namespace espgui;

View File

@ -48,36 +48,36 @@ using SampleCountChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SAMPLECOUNT>, espgui::StaticText<TEXT_SAMPLECOUNT>,
SampleCountAccessor, SampleCountAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
using GasMinChangeScreen = espgui::makeComponent< using GasMinChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_GASMIN>, espgui::StaticText<TEXT_GASMIN>,
GasMinAccessor, GasMinAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
using GasMaxChangeScreen = espgui::makeComponent< using GasMaxChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_GASMAX>, espgui::StaticText<TEXT_GASMAX>,
GasMaxAccessor, GasMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
using BremsMinChangeScreen = espgui::makeComponent< using BremsMinChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_BREMSMIN>, espgui::StaticText<TEXT_BREMSMIN>,
BremsMinAccessor, BremsMinAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
using BremsMaxChangeScreen = espgui::makeComponent< using BremsMaxChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_BREMSMAX>, espgui::StaticText<TEXT_BREMSMAX>,
BremsMaxAccessor, BremsMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW) #if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW)
@ -85,8 +85,8 @@ using DPadDebounceChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_DPADDEBOUNCE>, espgui::StaticText<TEXT_DPADDEBOUNCE>,
DPadDebounceAccessor, DPadDebounceAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
#endif #endif
@ -108,43 +108,43 @@ using GametrakXMinChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKXMIN>, espgui::StaticText<TEXT_SETGAMETRAKXMIN>,
GametrakXMinAccessor, GametrakXMinAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
using GametrakXMaxChangeScreen = espgui::makeComponent< using GametrakXMaxChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKXMAX>, espgui::StaticText<TEXT_SETGAMETRAKXMAX>,
GametrakXMaxAccessor, GametrakXMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
using GametrakYMinChangeScreen = espgui::makeComponent< using GametrakYMinChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKYMIN>, espgui::StaticText<TEXT_SETGAMETRAKYMIN>,
GametrakYMinAccessor, GametrakYMinAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
using GametrakYMaxChangeScreen = espgui::makeComponent< using GametrakYMaxChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKYMAX>, espgui::StaticText<TEXT_SETGAMETRAKYMAX>,
GametrakYMaxAccessor, GametrakYMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
using GametrakDistMinChangeScreen = espgui::makeComponent< using GametrakDistMinChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKDISTMIN>, espgui::StaticText<TEXT_SETGAMETRAKDISTMIN>,
GametrakDistMinAccessor, GametrakDistMinAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
using GametrakDistMaxChangeScreen = espgui::makeComponent< using GametrakDistMaxChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKDISTMAX>, espgui::StaticText<TEXT_SETGAMETRAKDISTMAX>,
GametrakDistMaxAccessor, GametrakDistMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
>; >;
#endif #endif
} // namespace } // namespace

View File

@ -21,8 +21,8 @@ using FrontFreqChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_FRONTFREQ>, espgui::StaticText<TEXT_FRONTFREQ>,
FrontFreqAccessor, FrontFreqAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>
>; >;
struct FrontPatternAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.front.command.buzzer.pattern; } }; struct FrontPatternAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.front.command.buzzer.pattern; } };
@ -30,8 +30,8 @@ using FrontPatternChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_FRONTPATTERN>, espgui::StaticText<TEXT_FRONTPATTERN>,
FrontPatternAccessor, FrontPatternAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>
>; >;
struct BackFreqAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.back.command.buzzer.freq; } }; struct BackFreqAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.back.command.buzzer.freq; } };
@ -39,8 +39,8 @@ using BackFreqChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_BACKFREQ>, espgui::StaticText<TEXT_BACKFREQ>,
BackFreqAccessor, BackFreqAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>
>; >;
struct BackPatternAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.back.command.buzzer.pattern; } }; struct BackPatternAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.back.command.buzzer.pattern; } };
@ -48,37 +48,37 @@ using BackPatternChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_BACKPATTERN>, espgui::StaticText<TEXT_BACKPATTERN>,
BackPatternAccessor, BackPatternAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>
>; >;
using ReverseBeepFreq0ChangeScreen = espgui::makeComponent< using ReverseBeepFreq0ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_REVERSEBEEPFREQ0>, espgui::StaticText<TEXT_REVERSEBEEPFREQ0>,
ReverseBeepFreq0Accessor, ReverseBeepFreq0Accessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>
>; >;
using ReverseBeepFreq1ChangeScreen = espgui::makeComponent< using ReverseBeepFreq1ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_REVERSEBEEPFREQ1>, espgui::StaticText<TEXT_REVERSEBEEPFREQ1>,
ReverseBeepFreq1Accessor, ReverseBeepFreq1Accessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>
>; >;
using ReverseBeepDuration0ChangeScreen = espgui::makeComponent< using ReverseBeepDuration0ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_REVERSEBEEPDURATION0>, espgui::StaticText<TEXT_REVERSEBEEPDURATION0>,
ReverseBeepDuration0Accessor, ReverseBeepDuration0Accessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>
>; >;
using ReverseBeepDuration1ChangeScreen = espgui::makeComponent< using ReverseBeepDuration1ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_REVERSEBEEPDURATION1>, espgui::StaticText<TEXT_REVERSEBEEPDURATION1>,
ReverseBeepDuration1Accessor, ReverseBeepDuration1Accessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>
>; >;
} // namespace } // namespace

View File

@ -24,8 +24,8 @@ using CloudTransmitTimeoutChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDTRANSMITTIMEOUT>, espgui::StaticText<TEXT_CLOUDTRANSMITTIMEOUT>,
CloudTransmitTimeoutAccessor, CloudTransmitTimeoutAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,
espgui::SwitchScreenAction<CloudSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>
>; >;
struct CloudBufferLengthText : public virtual espgui::TextInterface struct CloudBufferLengthText : public virtual espgui::TextInterface
@ -41,16 +41,16 @@ using CloudCollectRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDCOLLECTRATE>, espgui::StaticText<TEXT_CLOUDCOLLECTRATE>,
CloudCollectRateAccessor, CloudCollectRateAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,
espgui::SwitchScreenAction<CloudSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>
>; >;
using CloudSendRateChangeDisplay = espgui::makeComponent< using CloudSendRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDSENDRATE>, espgui::StaticText<TEXT_CLOUDSENDRATE>,
CloudSendRateAccessor, CloudSendRateAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,
espgui::SwitchScreenAction<CloudSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>
>; >;
} // namespace } // namespace

View File

@ -24,38 +24,38 @@ using WheelDiameterMmChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_WHEELDIAMETERMM>, espgui::StaticText<TEXT_WHEELDIAMETERMM>,
WheelDiameterMmAccessor, WheelDiameterMmAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<ControllerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>
>; >;
using WheelDiameterInchChangeScreen = espgui::makeComponent< using WheelDiameterInchChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<float>, BobbyChangeValueDisplay<float>,
espgui::StaticText<TEXT_WHEELDIAMETERINCH>, espgui::StaticText<TEXT_WHEELDIAMETERINCH>,
WheelDiameterInchAccessor, WheelDiameterInchAccessor,
espgui::RatioNumberStep<float, std::ratio<1,10>>, espgui::RatioNumberStep<float, std::ratio<1,10>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<ControllerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>
>; >;
using NumMagnetPolesChangeScreen = espgui::makeComponent< using NumMagnetPolesChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_NUMMAGNETPOLES>, espgui::StaticText<TEXT_NUMMAGNETPOLES>,
NumMagnetPolesAccessor, NumMagnetPolesAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<ControllerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>
>; >;
#ifdef FEATURE_CAN #ifdef FEATURE_CAN
using CanTransmitTimeoutChangeScreen = espgui::makeComponent< using CanTransmitTimeoutChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CANTRANSMITTIMEOUT>, espgui::StaticText<TEXT_CANTRANSMITTIMEOUT>,
CanTransmitTimeoutAccessor, CanTransmitTimeoutAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<ControllerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>
>; >;
using CanReceiveTimeoutChangeScreen = espgui::makeComponent< using CanReceiveTimeoutChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CANRECEIVETIMEOUT>, espgui::StaticText<TEXT_CANRECEIVETIMEOUT>,
CanReceiveTimeoutAccessor, CanReceiveTimeoutAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<ControllerHardwareSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>
>; >;
#endif #endif
} // namespace } // namespace

View File

@ -28,7 +28,7 @@
#include "displays/menus/dynamicdebugmenu.h" #include "displays/menus/dynamicdebugmenu.h"
#include "displays/menus/mainmenu.h" #include "displays/menus/mainmenu.h"
#include "displays/menus/batterydebugmenu.h" #include "displays/menus/batterydebugmenu.h"
#include "displays/popups/alertdisplay.cpp" #include "bobbyerrorhandler.h"
namespace { namespace {
class AlertAction : public espgui::MenuItem class AlertAction : public espgui::MenuItem
@ -37,9 +37,7 @@ public:
std::string text() const override { return "Open popup"; } std::string text() const override { return "Open popup"; }
void triggered() override void triggered() override
{ {
auto newDisplay = std::make_unique<AlertDisplay>("Das\nist\nein sehr langer text, der nicht in eine zeile passt", std::move(currentDisplay)); BobbyErrorHandler{}.errorOccured("Das\nist\nein sehr langer text, der nicht in eine zeile passt");
newDisplay->initOverlay();
currentDisplay = std::move(newDisplay);
} }
}; };
} // namespace } // namespace

View File

@ -37,78 +37,78 @@ using DefaultModeSmoothingChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SMOOTHINGVAL>, espgui::StaticText<TEXT_SMOOTHINGVAL>,
DefaultModeSmoothingAccessor, DefaultModeSmoothingAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
using DefaultModeFwSmoothingLowerLimitChangeDisplay = espgui::makeComponent< using DefaultModeFwSmoothingLowerLimitChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_FWSMOOTHING_LIMIT>, espgui::StaticText<TEXT_FWSMOOTHING_LIMIT>,
DefaultModeEnableFieldWeakSmoothingLowerLimitAccessor, DefaultModeEnableFieldWeakSmoothingLowerLimitAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
using DefaultModeFrontPercentageChangeDisplay = espgui::makeComponent< using DefaultModeFrontPercentageChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_FRONTPERCENTAGE>, espgui::StaticText<TEXT_FRONTPERCENTAGE>,
DefaultModeFrontPercentageAccessor, DefaultModeFrontPercentageAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
using DefaultModeBackPercentageChangeDisplay = espgui::makeComponent< using DefaultModeBackPercentageChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_BACKPERCENTAGE>, espgui::StaticText<TEXT_BACKPERCENTAGE>,
DefaultModeBackPercentageAccessor, DefaultModeBackPercentageAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
using DefaultModeAddSchwelleChangeDisplay = espgui::makeComponent< using DefaultModeAddSchwelleChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_ADDSCHWELLE>, espgui::StaticText<TEXT_ADDSCHWELLE>,
DefaultModeAddSchwelleAccessor, DefaultModeAddSchwelleAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
using DefaultModeGas1WertChangeDisplay = espgui::makeComponent< using DefaultModeGas1WertChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_ADDGASVAL>, espgui::StaticText<TEXT_ADDGASVAL>,
DefaultModeGas1WertAccessor, DefaultModeGas1WertAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
using DefaultModeGas2WertChangeDisplay = espgui::makeComponent< using DefaultModeGas2WertChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SUBGASVAL>, espgui::StaticText<TEXT_SUBGASVAL>,
DefaultModeGas2WertAccessor, DefaultModeGas2WertAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
using DefaultModeBrems1WertChangeDisplay = espgui::makeComponent< using DefaultModeBrems1WertChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_ADDBRAKEVAL>, espgui::StaticText<TEXT_ADDBRAKEVAL>,
DefaultModeBrems1WertAccessor, DefaultModeBrems1WertAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
using DefaultModeBrems2WertChangeDisplay = espgui::makeComponent< using DefaultModeBrems2WertChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SUBBRAKEVAL>, espgui::StaticText<TEXT_SUBBRAKEVAL>,
DefaultModeBrems2WertAccessor, DefaultModeBrems2WertAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
using DefaultModeHybridActivationLimitChangeDisplay = espgui::makeComponent< using DefaultModeHybridActivationLimitChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_HYBRIDACTIVATIONLIMIT>, espgui::StaticText<TEXT_HYBRIDACTIVATIONLIMIT>,
DefaultModeHybridActivationLimitAccessor, DefaultModeHybridActivationLimitAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
using DefaultModeHybridDeactivationLimitChangeDisplay = espgui::makeComponent< using DefaultModeHybridDeactivationLimitChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_HYBRIDDEACTIVATIONLIMIT>, espgui::StaticText<TEXT_HYBRIDDEACTIVATIONLIMIT>,
DefaultModeHybridDeactivationLimitAccessor, DefaultModeHybridDeactivationLimitAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>
>; >;
} // namespace } // namespace

View File

@ -21,8 +21,8 @@ using HandBremsTriggerTimeoutChangeValueDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<uint16_t>, BobbyChangeValueDisplay<uint16_t>,
espgui::StaticText<TEXT_HANDBREMSE_TRIGGERTIMEOUT>, espgui::StaticText<TEXT_HANDBREMSE_TRIGGERTIMEOUT>,
HandbremsTimeoutAccessor, HandbremsTimeoutAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<HandbremsSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<HandbremsSettingsMenu>>,
espgui::SwitchScreenAction<HandbremsSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<HandbremsSettingsMenu>>
>; >;
using HandBremsModeChangeValueDisplay = espgui::makeComponent< using HandBremsModeChangeValueDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<HandbremseMode>, BobbyChangeValueDisplay<HandbremseMode>,

View File

@ -33,8 +33,8 @@ using LarsmModeIterationsChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_SETITERATIONS>, espgui::StaticText<TEXT_SETITERATIONS>,
LarsmModeIterationsAccessor, LarsmModeIterationsAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LarsmModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LarsmModeSettingsMenu>>,
espgui::SwitchScreenAction<LarsmModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LarsmModeSettingsMenu>>
>; >;
} // namespace } // namespace

View File

@ -30,72 +30,72 @@ using LedsCountChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_LEDSCOUNT>, espgui::StaticText<TEXT_LEDSCOUNT>,
LedsCountAccessor, LedsCountAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
espgui::SwitchScreenAction<LedstripMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>
>; >;
using CenterOffsetChangeScreen = espgui::makeComponent< using CenterOffsetChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CENTEROFFSET>, espgui::StaticText<TEXT_CENTEROFFSET>,
CenterOffsetAccessor, CenterOffsetAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
espgui::SwitchScreenAction<LedstripMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>
>; >;
using SmallOffsetChangeScreen = espgui::makeComponent< using SmallOffsetChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SMALLOFFSET>, espgui::StaticText<TEXT_SMALLOFFSET>,
SmallOffsetAccessor, SmallOffsetAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
espgui::SwitchScreenAction<LedstripMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>
>; >;
using BigOffsetChangeScreen = espgui::makeComponent< using BigOffsetChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_BIGOFFSET>, espgui::StaticText<TEXT_BIGOFFSET>,
BigOffsetAccessor, BigOffsetAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
espgui::SwitchScreenAction<LedstripMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>
>; >;
using DeziampereChangeScreen = espgui::makeComponent< using DeziampereChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_LEDSTRIP_MILLIAMP>, espgui::StaticText<TEXT_LEDSTRIP_MILLIAMP>,
DeziampereAccessor, DeziampereAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
espgui::SwitchScreenAction<LedstripMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>
>; >;
using StVOOffsetChangeScreen = espgui::makeComponent< using StVOOffsetChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_STVO_FRONTOFFSET>, espgui::StaticText<TEXT_STVO_FRONTOFFSET>,
LedsStVOFrontOffsetAccessor, LedsStVOFrontOffsetAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
espgui::SwitchScreenAction<LedstripMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>
>; >;
using StVOLengthChangeScreen = espgui::makeComponent< using StVOLengthChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_STVO_FRONTLENGTH>, espgui::StaticText<TEXT_STVO_FRONTLENGTH>,
LedsStVOFrontLengthAccessor, LedsStVOFrontLengthAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
espgui::SwitchScreenAction<LedstripMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>
>; >;
using animationMultiplierChangeScreen = espgui::makeComponent< using animationMultiplierChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_ANIMATION_MULTIPLIER>, espgui::StaticText<TEXT_ANIMATION_MULTIPLIER>,
AnimationMultiplierAccessor, AnimationMultiplierAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
espgui::SwitchScreenAction<LedstripMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>
>; >;
using ledstripBrightnessChangeScreen = espgui::makeComponent< using ledstripBrightnessChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_LEDSTRIP_BRIGHTNESS>, espgui::StaticText<TEXT_LEDSTRIP_BRIGHTNESS>,
LedstripBrightnessAccessor, LedstripBrightnessAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
espgui::SwitchScreenAction<LedstripMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>
>; >;
class AllCustomLedsOffAction : public virtual espgui::ActionInterface class AllCustomLedsOffAction : public virtual espgui::ActionInterface

View File

@ -18,43 +18,43 @@ using IMotMaxChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_IMOTMAX>, espgui::StaticText<TEXT_IMOTMAX>,
IMotMaxAccessor, IMotMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>
>; >;
using IDcMaxChangeScreen = espgui::makeComponent< using IDcMaxChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_IDCMAX>, espgui::StaticText<TEXT_IDCMAX>,
IDcMaxAccessor, IDcMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>
>; >;
using NMotMaxKmhChangeScreen = espgui::makeComponent< using NMotMaxKmhChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_NMOTMAXKMH>, espgui::StaticText<TEXT_NMOTMAXKMH>,
NMotMaxKmhAccessor, NMotMaxKmhAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>
>; >;
using NMotMaxRpmChangeScreen = espgui::makeComponent< using NMotMaxRpmChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_NMOTMAX>, espgui::StaticText<TEXT_NMOTMAX>,
NMotMaxRpmAccessor, NMotMaxRpmAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>
>; >;
using FieldWeakMaxChangeScreen = espgui::makeComponent< using FieldWeakMaxChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_FIELDWEAKMAX>, espgui::StaticText<TEXT_FIELDWEAKMAX>,
FieldWeakMaxAccessor, FieldWeakMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>
>; >;
using PhaseAdvMaxChangeScreen = espgui::makeComponent< using PhaseAdvMaxChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_PHASEADVMAX>, espgui::StaticText<TEXT_PHASEADVMAX>,
PhaseAdvMaxAccessor, PhaseAdvMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>
>; >;
} // namespace } // namespace

View File

@ -20,32 +20,32 @@ using LockscreenPinDigit0ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT0>, espgui::StaticText<TEXT_PINDIGIT0>,
LockscreenPinDigitAccessor<0>, LockscreenPinDigitAccessor<0>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
espgui::SwitchScreenAction<LockscreenSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>
>; >;
using LockscreenPinDigit1ChangeScreen = espgui::makeComponent< using LockscreenPinDigit1ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT1>, espgui::StaticText<TEXT_PINDIGIT1>,
LockscreenPinDigitAccessor<1>, LockscreenPinDigitAccessor<1>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
espgui::SwitchScreenAction<LockscreenSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>
>; >;
using LockscreenPinDigit2ChangeScreen = espgui::makeComponent< using LockscreenPinDigit2ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT2>, espgui::StaticText<TEXT_PINDIGIT2>,
LockscreenPinDigitAccessor<2>, LockscreenPinDigitAccessor<2>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
espgui::SwitchScreenAction<LockscreenSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>
>; >;
using LockscreenPinDigit3ChangeScreen = espgui::makeComponent< using LockscreenPinDigit3ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT3>, espgui::StaticText<TEXT_PINDIGIT3>,
LockscreenPinDigitAccessor<3>, LockscreenPinDigitAccessor<3>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
espgui::SwitchScreenAction<LockscreenSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>
>; >;
} // namespace } // namespace

View File

@ -14,7 +14,7 @@ class GPIOAccessor : public virtual espgui::AccessorInterface<bool>
{ {
public: public:
bool getValue() const override { return digitalRead(PIN); } bool getValue() const override { return digitalRead(PIN); }
void setValue(bool value) override { digitalWrite(PIN, value ? HIGH : LOW); } espgui::AccessorInterface<bool>::setter_result_t setValue(bool value) override { digitalWrite(PIN, value ? HIGH : LOW); return {}; }
}; };
using Mosfet0Accessor = GPIOAccessor<PINS_MOSFET0>; using Mosfet0Accessor = GPIOAccessor<PINS_MOSFET0>;

View File

@ -17,16 +17,16 @@ using MotortestMultiplikatorChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_MOTORTESTMULTIPLIKATOR>, espgui::StaticText<TEXT_MOTORTESTMULTIPLIKATOR>,
MotortestModeMultiplikatorAccessor, MotortestModeMultiplikatorAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<MotortestModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<MotortestModeSettingsMenu>>,
espgui::SwitchScreenAction<MotortestModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<MotortestModeSettingsMenu>>
>; >;
using MotortestMaxPwmChangeDisplay = espgui::makeComponent< using MotortestMaxPwmChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<uint16_t>, BobbyChangeValueDisplay<uint16_t>,
espgui::StaticText<TEXT_MOTORTESTMAXPWM>, espgui::StaticText<TEXT_MOTORTESTMAXPWM>,
MotortestMaxPwmAccessor, MotortestMaxPwmAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<MotortestModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<MotortestModeSettingsMenu>>,
espgui::SwitchScreenAction<MotortestModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<MotortestModeSettingsMenu>>
>; >;
} // namespace } // namespace

View File

@ -49,7 +49,7 @@ namespace {
struct BacklightAccessor : public virtual espgui::AccessorInterface<bool> struct BacklightAccessor : public virtual espgui::AccessorInterface<bool>
{ {
bool getValue() const override { return digitalRead(PINS_LEDBACKLIGHT) != ledBacklightInverted; } bool getValue() const override { return digitalRead(PINS_LEDBACKLIGHT) != ledBacklightInverted; }
void setValue(bool value) override { digitalWrite(PINS_LEDBACKLIGHT, value != ledBacklightInverted); } espgui::AccessorInterface<bool>::setter_result_t setValue(bool value) override { digitalWrite(PINS_LEDBACKLIGHT, value != ledBacklightInverted); return {}; }
}; };
#endif #endif
struct FrontLedAccessor : public espgui::RefAccessor<bool> { bool &getRef() const override { return controllers.front.command.led; } }; struct FrontLedAccessor : public espgui::RefAccessor<bool> { bool &getRef() const override { return controllers.front.command.led; } };

View File

@ -21,8 +21,8 @@ using TempomatModeCruiseMotTgtChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_NCRUISEMOTTGT>, espgui::StaticText<TEXT_NCRUISEMOTTGT>,
TempomatModeCruiseMotTgtAccessor, TempomatModeCruiseMotTgtAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<TempomatModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TempomatModeSettingsMenu>>,
espgui::SwitchScreenAction<TempomatModeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<TempomatModeSettingsMenu>>
>; >;
using TempomatModeModelModeChangeScreen = espgui::makeComponent< using TempomatModeModelModeChangeScreen = espgui::makeComponent<

View File

@ -16,8 +16,8 @@ using StatsUpdateRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_STATSUPDATERATE>, espgui::StaticText<TEXT_STATSUPDATERATE>,
StatsUpdateRateAccessor, StatsUpdateRateAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimersMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimersMenu>>,
espgui::SwitchScreenAction<TimersMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<TimersMenu>>
>; >;
} }

View File

@ -48,8 +48,8 @@ using TimezoneOffsetChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int32_t>, BobbyChangeValueDisplay<int32_t>,
espgui::StaticText<TEXT_OFFSET>, espgui::StaticText<TEXT_OFFSET>,
TimezoneOffsetAccessor, TimezoneOffsetAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>,
espgui::SwitchScreenAction<TimeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>
>; >;
using DaylightSavingModeChangeDisplay = espgui::makeComponent< using DaylightSavingModeChangeDisplay = espgui::makeComponent<
@ -73,8 +73,8 @@ using TimeSyncIntervalChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int32_t>, BobbyChangeValueDisplay<int32_t>,
espgui::StaticText<TEXT_NTPINTERVAL>, espgui::StaticText<TEXT_NTPINTERVAL>,
TimeSyncIntervalAccessor, TimeSyncIntervalAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>,
espgui::SwitchScreenAction<TimeSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>
>; >;
class NtpSyncStatusText : public virtual espgui::TextInterface class NtpSyncStatusText : public virtual espgui::TextInterface

View File

@ -21,8 +21,8 @@ using UdpCloudSendRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_UDPSENDRATE>, espgui::StaticText<TEXT_UDPSENDRATE>,
UdpCloudSendIntervalAccessor, UdpCloudSendIntervalAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<UdpCloudSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<UdpCloudSettingsMenu>>,
espgui::SwitchScreenAction<UdpCloudSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<UdpCloudSettingsMenu>>
>; >;
} // namespace } // namespace

View File

@ -55,8 +55,8 @@ using ApChannelChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_CHANNEL>, espgui::StaticText<TEXT_CHANNEL>,
WifiApChannelAccessor, WifiApChannelAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<WifiApSettingsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<WifiApSettingsMenu>>,
espgui::SwitchScreenAction<WifiApSettingsMenu> espgui::BackActionInterface<espgui::SwitchScreenAction<WifiApSettingsMenu>>
>; >;
using ApAuthmodeChangeScreen = espgui::makeComponent< using ApAuthmodeChangeScreen = espgui::makeComponent<

View File

@ -1,105 +0,0 @@
#include "alertdisplay.h"
// 3rdparty lib includes
#include <tftinstance.h>
#include <screenmanager.h>
#include <cppmacros.h>
AlertDisplay::AlertDisplay(std::string &&message, std::unique_ptr<Display> &&lastDisplay) :
m_message{std::move(message)}, m_lastDisplay{std::move(lastDisplay)}
{
}
void AlertDisplay::initScreen()
{
m_lastDisplay->initScreen();
initOverlay();
}
void AlertDisplay::buttonPressed(espgui::Button button)
{
Base::buttonPressed(button);
switch (button)
{
using espgui::Button;
case Button::Left:
case Button::Right:
closeOverlay();
break;
default:;
}
}
void AlertDisplay::initOverlay()
{
constexpr auto leftMargin = 20;
constexpr auto rightMargin = leftMargin;
constexpr auto topMargin = 50;
constexpr auto bottomMargin = topMargin;
const auto width = espgui::tft.width() - leftMargin - rightMargin;
const auto height = espgui::tft.height() - topMargin - bottomMargin;
const auto right = espgui::tft.width() - rightMargin;
const auto bottom = espgui::tft.height() - bottomMargin;
CPP_UNUSED(right)
//espgui::tft.drawRect(leftMargin, topMargin, espgui::tft.width() - leftMargin - rightMargin, espgui::tft.height() - topMargin - bottomMargin, TFT_WHITE);
//espgui::tft.fillRect(leftMargin + 1, topMargin + 1, espgui::tft.width() - leftMargin - rightMargin - 2, espgui::tft.height() - topMargin - bottomMargin - 2, TFT_BLACK);
espgui::tft.drawSunkenRect(leftMargin, topMargin, width, height,
color565(240, 240, 240),
color565(100, 100, 100),
color565(30, 30, 30));
espgui::tft.setTextColor(TFT_WHITE, color565(30, 30, 30));
int x = leftMargin + 5;
int y = topMargin + 5;
for (char c : m_message)
{
if (c == '\n' || x > espgui::tft.width() - rightMargin - 10)
{
x = leftMargin + 5;
y += espgui::tft.fontHeight(4);
}
if (c != '\n')
{
const auto addedWidth = espgui::tft.drawChar(espgui::tft.decodeUTF8(c), x, y, 4);
x += addedWidth;
}
if (y >= espgui::tft.height() - bottomMargin)
break;
}
espgui::tft.setTextColor(TFT_BLACK, color565(170, 170, 170));
espgui::tft.drawSunkenRect(leftMargin + 15, bottom - 40,
(width - 15 - 10 - 15) / 2,
30,
color565(240, 240, 240),
color565(100, 100, 100),
color565(170, 170, 170));
espgui::tft.drawString("Yes", leftMargin + 18, bottom - 37);
espgui::tft.drawSunkenRect(leftMargin + 15 + ((width - 15 - 30 - 15) / 2) + 15, bottom - 40,
(width - 15 - 10 - 15) / 2,
30,
color565(240, 240, 240),
color565(100, 100, 100),
color565(170, 170, 170));
espgui::tft.drawString("No", leftMargin + 18 + ((width - 15 - 30 - 15) / 2) + 15 + 1, bottom - 37);
}
void AlertDisplay::closeOverlay()
{
auto guard = std::move(espgui::currentDisplay);
espgui::currentDisplay = std::move(m_lastDisplay);
espgui::currentDisplay->initScreen();
}

View File

@ -1,30 +0,0 @@
#pragma once
// system includes
#include <memory>
// local includes
#include "displays/bobbydisplay.h"
class AlertDisplay : public BobbyDisplay
{
using Base = BobbyDisplay;
public:
AlertDisplay(std::string &&message, std::unique_ptr<Display> &&lastDisplay);
//void start() override;
void initScreen() override;
//void update() override;
//void redraw() override;
//void stop() override;
void buttonPressed(espgui::Button button) override;
void initOverlay();
void closeOverlay();
private:
std::string m_message;
std::unique_ptr<Display> m_lastDisplay;
};