From 11a461bfdd057c8d8d4829dcbefc7932f17beba9 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Sun, 27 Feb 2022 23:42:55 +0100 Subject: [PATCH] Added basic battery graph display --- main/CMakeLists.txt | 4 ++- main/displays/batterygraphdisplay.cpp | 38 +++++++++++++++++++++++++++ main/displays/batterygraphdisplay.h | 17 ++++++++++++ main/displays/menus/batterymenu.cpp | 4 +++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 main/displays/batterygraphdisplay.cpp create mode 100644 main/displays/batterygraphdisplay.h diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 178b088..37241cb 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -42,8 +42,8 @@ set(headers bobbycheckbox.h bobbyerrorhandler.h bobbyquickactions.h - bobbytypesafeenum.h bobbyschedulertask.h + bobbytypesafeenum.h buildserver.h can.h changevaluedisplay_bluetoothmode.h @@ -59,6 +59,7 @@ set(headers debugcolorhelpers.h debuginputhandler.h debugtexthelpers.h + displays/batterygraphdisplay.h displays/bmsdisplay.h displays/bobbychangevaluedisplay.h displays/bobbydisplay.h @@ -294,6 +295,7 @@ set(sources debugcolorhelpers.cpp debuginputhandler.cpp debugtexthelpers.cpp + displays/batterygraphdisplay.cpp displays/bmsdisplay.cpp displays/bobbychangevaluedisplay.cpp displays/bobbydisplay.cpp diff --git a/main/displays/batterygraphdisplay.cpp b/main/displays/batterygraphdisplay.cpp new file mode 100644 index 0000000..9f699ba --- /dev/null +++ b/main/displays/batterygraphdisplay.cpp @@ -0,0 +1,38 @@ +#include "batterygraphdisplay.h" + +// 3rdparty lib includes +#include + +// local includes +#include "displays/menus/batterymenu.h" + +namespace { + constexpr char TEXT_BATTERY_GRAPH[] = "Battery Level"; +} // namespace + +void BatteryGraphDisplay::initScreen() { + Base::initScreen(); +} + +std::string BatteryGraphDisplay::text() const { + return TEXT_BATTERY_GRAPH; +} + +void BatteryGraphDisplay::redraw() { + Base::redraw(); +} + +void BatteryGraphDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (button) + { + using espgui::Button; + case Button::Left: + case Button::Right: + espgui::switchScreen(); + break; + default:; + } +} diff --git a/main/displays/batterygraphdisplay.h b/main/displays/batterygraphdisplay.h new file mode 100644 index 0000000..1e08061 --- /dev/null +++ b/main/displays/batterygraphdisplay.h @@ -0,0 +1,17 @@ +#pragma once + +// 3rdparty lib includes + +// local includes +#include "bobbydisplaywithtitle.h" + +class BatteryGraphDisplay : public BobbyDisplayWithTitle { + using Base = BobbyDisplayWithTitle; + +public: + std::string text() const override; + void initScreen() override; + void redraw() override; + + void buttonPressed(espgui::Button button) override; +}; diff --git a/main/displays/menus/batterymenu.cpp b/main/displays/menus/batterymenu.cpp index c027654..022fb33 100644 --- a/main/displays/menus/batterymenu.cpp +++ b/main/displays/menus/batterymenu.cpp @@ -14,8 +14,10 @@ // Local includes #include "accessors/settingsaccessors.h" #include "battery.h" +#include "displays/batterygraphdisplay.h" #include "displays/bobbychangevaluedisplay.h" #include "displays/calibratevoltagedisplay.h" +#include "icons/graph.h" #include "icons/settings.h" #include "mainmenu.h" #include "typesafeenumchangemenu.h" @@ -26,6 +28,7 @@ constexpr char TEXT_BATTERY[] = "Battery"; constexpr char TEXT_CELL_SERIES[] = "Cells (Series)"; constexpr char TEXT_CELL_PARALLEL[] = "Cells (Parallel)"; constexpr char TEXT_SELECT_CELL_TYPE[] = "Select Cell Type"; +constexpr char TEXT_SHOW_BATTERY_GRAPH[] = "Battery Graph"; constexpr char TEXT_BATTERY_CALIBRATE[] = "Calibrate Voltages"; constexpr char TEXT_BATTERY_WHKM[] = "Wh per km"; constexpr char TEXT_BATTERY_APPLYCALIB[] = "Apply calibration"; @@ -78,6 +81,7 @@ BatteryMenu::BatteryMenu() constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem>(&configs.battery.cellType); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::graph>>>(); constructMenuItem>(); constructMenuItem>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::settings>>>();