diff --git a/main/displays/menus/statisticsmenu.cpp b/main/displays/menus/statisticsmenu.cpp index a58a139..5b6c52a 100644 --- a/main/displays/menus/statisticsmenu.cpp +++ b/main/displays/menus/statisticsmenu.cpp @@ -126,6 +126,18 @@ class EfficiencyText : public virtual espgui::TextInterface { } }; +class AverageSpeedKmhOverTime : public virtual espgui::TextInterface { + public: std::string text() const override { + return fmt::format("Avg speed: {:.1f} km/h", getAvgKmh()); + } +}; + +class EstimatedKmLeft : public virtual espgui::TextInterface { + public: std::string text() const override { + return fmt::format("est km:{}", getRemainingEstimateRangeString()); + } +}; + class EfficiencyTextColor : public virtual espgui::ColorInterface { public: int color() const override @@ -165,11 +177,13 @@ StatisticsMenu::StatisticsMenu() constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem>(); // constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); + constructMenuItem>(); + constructMenuItem>(); constructMenuItem>(); + constructMenuItem>(); constructMenuItem>(); constructMenuItem, SaveKilometersAction, StaticMenuItemIcon<&bobbyicons::update>>>(); constructMenuItem, ClearCurrentStatsAction, StaticMenuItemIcon<&bobbyicons::reboot>>>(); diff --git a/main/drivingstatistics.cpp b/main/drivingstatistics.cpp index df66b24..ed0efc6 100644 --- a/main/drivingstatistics.cpp +++ b/main/drivingstatistics.cpp @@ -19,6 +19,16 @@ float getAvgWhPerKm() return drivingStatistics.wh_used / (drivingStatistics.meters_driven / 1000.f); } +float getAvgKmh() +{ + return (drivingStatistics.meters_driven / 1000.) / (drivingStatistics.currentDrivingTime.count() / 1000 / 60 / 60); // (meter / 1000) / (ms / 1000 / 60 / 60) +} + +float getEstimatedKmLeft() +{ + return (getRemainingWattHours() / getAvgWhPerKm()); +} + std::string getEfficiencyClassString() { const float avgWhPerKm = getAvgWhPerKm(); @@ -49,6 +59,12 @@ uint16_t getEfficiencyClassColor() else return 0xF800; } +std::string getRemainingEstimateRangeString() +{ + return fmt::format("{:.1f} km", getEstimatedKmLeft()); +} + + void initStatistics() { diff --git a/main/drivingstatistics.h b/main/drivingstatistics.h index 4920e3b..1ec2eed 100644 --- a/main/drivingstatistics.h +++ b/main/drivingstatistics.h @@ -19,5 +19,8 @@ extern DrivingStatistics drivingStatistics; void initStatistics(); void calculateStatistics(); float getAvgWhPerKm(); +float getAvgKmh(); +float getEstimatedKmLeft(); std::string getEfficiencyClassString(); +std::string getRemainingEstimateRangeString(); uint16_t getEfficiencyClassColor();