summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-10-03 09:52:30 +1100
committerjacqueline <me@jacqueline.id.au>2023-10-03 09:52:30 +1100
commitf2bad894cdac88b94a358cebdb062f426b191d1b (patch)
tree4458a1f306055a14bed33b7f81516c3c0c766c1a
parent3df4cc9e3de6af480d1ff78376a7d811c9270561 (diff)
downloadtangara-fw-f2bad894cdac88b94a358cebdb062f426b191d1b.tar.gz
Show battery voltage in top bar
-rw-r--r--src/battery/battery.cpp1
-rw-r--r--src/battery/include/battery.hpp1
-rw-r--r--src/ui/widget_top_bar.cpp8
3 files changed, 7 insertions, 3 deletions
diff --git a/src/battery/battery.cpp b/src/battery/battery.cpp
index 92185db7..aea99654 100644
--- a/src/battery/battery.cpp
+++ b/src/battery/battery.cpp
@@ -84,6 +84,7 @@ auto Battery::Update() -> void {
state_ = BatteryState{
.percent = percent,
+ .millivolts = mV,
.is_charging = is_charging,
};
EmitEvent();
diff --git a/src/battery/include/battery.hpp b/src/battery/include/battery.hpp
index 32e02347..314cd373 100644
--- a/src/battery/include/battery.hpp
+++ b/src/battery/include/battery.hpp
@@ -25,6 +25,7 @@ class Battery {
struct BatteryState {
uint_fast8_t percent;
+ uint32_t millivolts;
bool is_charging;
bool operator==(const BatteryState& other) const {
diff --git a/src/ui/widget_top_bar.cpp b/src/ui/widget_top_bar.cpp
index ba9ee5cb..93cd32a4 100644
--- a/src/ui/widget_top_bar.cpp
+++ b/src/ui/widget_top_bar.cpp
@@ -82,11 +82,13 @@ TopBar::TopBar(lv_obj_t* parent,
bindings_.push_back(model.battery_state.onChangedAndNow(
[=](const battery::Battery::BatteryState& state) {
+ std::ostringstream voltage;
+ voltage << (state.millivolts / 1000) << "."
+ << (state.millivolts / 100 % 10) << "V";
if (state.is_charging) {
- lv_label_set_text(charging, "+");
- } else {
- lv_label_set_text(charging, "");
+ voltage << "+";
}
+ lv_label_set_text(charging, voltage.str().c_str());
if (state.percent >= 95) {
lv_img_set_src(battery, &kIconBatteryFull);