Display R2D progress

This commit is contained in:
2023-04-26 13:08:34 +02:00
parent 78048052ca
commit b2f5d48b73
19 changed files with 281 additions and 175 deletions

View File

@ -3,11 +3,14 @@
#include "gui/common/NamedField.hpp"
#include "gui/containers/DriverViewFieldSelection.hpp"
#include "touchgfx/Unicode.hpp"
#include "touchgfx/containers/scrollers/DrawableList.hpp"
#include "vehicle.h"
#include <gui/driverview_screen/DriverViewPresenter.hpp>
#include <gui_generated/driverview_screen/DriverViewViewBase.hpp>
enum class DriverViewProgressType { PRECHARGE, R2D };
class DriverViewView : public DriverViewViewBase {
public:
DriverViewView();
@ -23,7 +26,7 @@ public:
void setTireTemps(const TireTemps &temps);
void setTSSoC(uint8_t soc);
void setPrecharge(bool active, float progress);
void setProgress(bool active, DriverViewProgressType type, float progress);
void selectPrevField() override;
void selectNextField() override;
@ -43,6 +46,8 @@ private:
size_t selectedField;
size_t selectedFieldType;
DataFieldType fieldTypes[NUM_FIELDS];
touchgfx::Unicode::UnicodeChar r2dProgBuffer[16];
};
#endif // DRIVERVIEWVIEW_HPP

View File

@ -24,9 +24,13 @@ void DriverViewPresenter::vehicleStateUpdated() {
progress =
vehicle_state.ts_voltage_veh / vehicle_state.ts_voltage_bat * 100;
}
view.setPrecharge(true, progress);
view.setProgress(true, DriverViewProgressType::PRECHARGE, progress);
} else if (vehicle_state.r2d_progress != R2D_NONE &&
vehicle_state.r2d_progress != R2D_INIT_SUCCESS) {
view.setProgress(true, DriverViewProgressType::R2D,
vehicle_state.r2d_progress);
} else {
view.setPrecharge(false, 0);
view.setProgress(false, DriverViewProgressType::PRECHARGE, 0);
}
view.updateFieldValues();

View File

@ -2,6 +2,7 @@
#include "gui/containers/DriverViewField.hpp"
#include "gui/driverview_screen/DriverViewPresenter.hpp"
#include "texts/TextKeysAndLanguages.hpp"
#include "touchgfx/Unicode.hpp"
#include <gui/driverview_screen/DriverViewView.hpp>
#include <stddef.h>
@ -46,18 +47,37 @@ void DriverViewView::setTSSoC(uint8_t soc) {
tsSoC.invalidate();
}
void DriverViewView::setPrecharge(bool active, float progress) {
void DriverViewView::setProgress(bool active, DriverViewProgressType type,
float progress) {
if (active) {
prechargeLabel.setVisible(true);
switch (type) {
case DriverViewProgressType::PRECHARGE:
prechargeLabel.setVisible(true);
r2dLabel.setVisible(false);
progressBar.setValue(progress);
break;
case DriverViewProgressType::R2D:
touchgfx::Unicode::snprintf(
r2dProgBuffer, sizeof(r2dProgBuffer) / sizeof(*r2dProgBuffer), "%d",
progress);
r2dLabel.setWildcard(r2dProgBuffer);
r2dLabel.setVisible(true);
prechargeLabel.setVisible(false);
progressBar.setValue(progress * 100 / 8);
break;
}
prechargeLabel.invalidate();
prechargeProgress.setVisible(true);
prechargeProgress.setValue(progress);
prechargeProgress.invalidate();
} else if (prechargeLabel.isVisible() || prechargeProgress.isVisible()) {
r2dLabel.invalidate();
progressBar.setVisible(true);
progressBar.invalidate();
} else if (prechargeLabel.isVisible() || r2dLabel.isVisible() ||
progressBar.isVisible()) {
prechargeLabel.setVisible(false);
prechargeLabel.invalidate();
prechargeProgress.setVisible(false);
prechargeProgress.invalidate();
r2dLabel.setVisible(false);
r2dLabel.invalidate();
progressBar.setVisible(false);
progressBar.invalidate();
}
}