61 lines
1.7 KiB
C++
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();
|
|
}
|
|
}
|