steering-wheel/TouchGFX/gui/src/driverview_screen/DriverViewPresenter.cpp

61 lines
1.7 KiB
C++

#include <gui/driverview_screen/DriverViewPresenter.hpp>
#include <gui/driverview_screen/DriverViewView.hpp>
#include "gui/common/NamedField.hpp"
#include "vehicle.h"
DriverViewPresenter::DriverViewPresenter(DriverViewView &v)
: view(v), fields{DF_MinCellVolt, DF_TSVoltageVeh, DF_TSCurrent} {}
void DriverViewPresenter::activate() {
for (size_t i = 0; i < 3; i++) {
view.setFieldType(i, fields[i]);
}
}
void DriverViewPresenter::deactivate() {}
void DriverViewPresenter::vehicleStateUpdated() {
view.setTireTemps(vehicle_state.tire_temps);
view.setTSSoC(vehicle_state.soc);
updateProgress();
updateErrorPopup();
view.updateFieldValues();
}
void DriverViewPresenter::nextScreen() {
static_cast<FrontendApplication *>(Application::getInstance())
->gotoVehicleConfigScreenNoTransition();
}
void DriverViewPresenter::setFieldType(size_t i, DataFieldType type) {
fields[i] = type;
view.setFieldType(i, type);
}
void DriverViewPresenter::updateProgress() {
if (vehicle_state.ts_state == TS_PRECHARGE) {
float progress = 0;
if (vehicle_state.ts_voltage_bat != 0) {
progress =
vehicle_state.ts_voltage_veh / vehicle_state.ts_voltage_bat * 100;
}
view.setProgress(true, DriverViewProgressType::PRECHARGE, progress);
} else if (vehicle_state.r2d_progress > R2D_TSACTIVE &&
vehicle_state.r2d_progress < R2D_INIT_SUCCESS) {
view.setProgress(true, DriverViewProgressType::R2D,
vehicle_state.r2d_progress);
} else {
view.setProgress(false, DriverViewProgressType::PRECHARGE, 0);
}
}
void DriverViewPresenter::updateErrorPopup() {
if (vehicle_state.ts_state == TS_ERROR) {
view.showAMSError();
} else {
view.clearErrorPopup();
}
}