Display R2D progress
This commit is contained in:
@ -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
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user