diff --git a/src/displays/menus/mainmenu.h b/src/displays/menus/mainmenu.h index 622b946..e32cb3f 100644 --- a/src/displays/menus/mainmenu.h +++ b/src/displays/menus/mainmenu.h @@ -25,6 +25,7 @@ class SelectModeMenu; class ProfilesMenu; class PresetsMenu; class GraphsMenu; +class PowerSupplyDisplay; class BmsMenu; class SettingsMenu; class Lockscreen; @@ -49,6 +50,9 @@ public: constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::presets>>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::graph>>>(); +#ifdef FEATURE_CAN + constructMenuItem, SwitchScreenAction>>(); +#endif #ifdef FEATURE_BMS constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::bms>>>(); #endif diff --git a/src/displays/powersupplydisplay.h b/src/displays/powersupplydisplay.h new file mode 100644 index 0000000..378da1d --- /dev/null +++ b/src/displays/powersupplydisplay.h @@ -0,0 +1,68 @@ +#pragma once + +#include + +#include "display.h" +#include "actions/switchscreenaction.h" +#include "globals.h" +#include "widgets/label.h" + +namespace { +class MainMenu; +class MetersDisplay; +class StatusDisplay; +} +namespace { +#ifdef FEATURE_CAN +class PowerSupplyDisplay : public Display +{ +public: + void initScreen() override; + void redraw() override; + + void confirm() override; + void back() override; + void rotate(int offset) override; + + Label m_voltageLabel{120, 50}; + Label m_currentLabel{120, 75}; +}; + +void PowerSupplyDisplay::initScreen() +{ + tft.fillScreen(TFT_BLACK); + tft.setTextColor(TFT_WHITE, TFT_BLACK); + + tft.setTextFont(4); + + tft.drawString("Voltage:", 0, m_voltageLabel.y()); + m_voltageLabel.start(); + tft.drawString("Current:", 0, m_currentLabel.y()); + m_currentLabel.start(); +} + +void PowerSupplyDisplay::redraw() +{ + m_voltageLabel.redraw(String{50.4} + 'V'); + m_currentLabel.redraw(String{15.1} + 'A'); +} + +void PowerSupplyDisplay::confirm() +{ + +} + +void PowerSupplyDisplay::back() +{ + +} + +void PowerSupplyDisplay::rotate(int offset) +{ +// if (offset < 0) +// switchScreen(); +// else if (offset > 0) +// switchScreen(); +} +#endif +} diff --git a/src/main.cpp b/src/main.cpp index 75ef3d6..d7dc7bf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -63,6 +63,7 @@ #include "displays/metersdisplay.h" #include "displays/pingpongdisplay.h" #include "displays/poweroffdisplay.h" +#include "displays/powersupplydisplay.h" #include "displays/spirodisplay.h" #include "displays/starfielddisplay.h" #include "displays/statusdisplay.h" diff --git a/src/texts.h b/src/texts.h index 972db9b..e81a5f0 100644 --- a/src/texts.h +++ b/src/texts.h @@ -363,4 +363,8 @@ constexpr char TEXT_WIFI_POWER_5dBm[] = "5dBm"; constexpr char TEXT_WIFI_POWER_2dBm[] = "2dBm"; constexpr char TEXT_WIFI_POWER_MINUS_1dBm[] = "-1dBm"; //constexpr char TEXT_BACK[] = "Back"; + +#ifdef FEATURE_CAN +constexpr char TEXT_POWERSUPPLY[] = "Powersupply"; +#endif }