stw24/TouchGFX/gui/src/containers/DriverViewStatusItem.cpp

70 lines
2.0 KiB
C++
Raw Normal View History

2023-05-22 07:22:44 +02:00
#include <gui/containers/DriverViewStatusItem.hpp>
#include "texts/TextKeysAndLanguages.hpp"
#include "vehicle_state.h"
2023-05-22 07:22:44 +02:00
DriverViewStatusItem::DriverViewStatusItem() {}
void DriverViewStatusItem::initialize() {
DriverViewStatusItemBase::initialize();
}
void DriverViewStatusItem::setType(DriverViewStatusType type) {
this->type = type;
}
void DriverViewStatusItem::update() {
switch (type) {
case DriverViewStatusType::TS_R2D:
if (vehicle_state.ts_state == TS_ERROR) {
text.setTypedText(T_TS);
bg.setColor(COLOR_ERROR);
} else if (vehicle_state.ts_state == TS_INACTIVE) {
text.setTypedText(T_TS);
bg.setColor(COLOR_OFF);
} else if (vehicle_state.r2d_progress == R2D_INIT_SUCCESS) {
text.setTypedText(T_R2D);
bg.setColor(COLOR_OK);
} else {
text.setTypedText(T_TS);
bg.setColor(COLOR_TS);
}
break;
case DriverViewStatusType::AMS:
text.setTypedText(T_AMS);
bg.setColor(vehicle_state.ts_state == TS_ERROR ? COLOR_ERROR : COLOR_OK);
break;
case DriverViewStatusType::SDC:
text.setTypedText(T_SDC);
bg.setColor(vehicle_state.sdc_closed ? COLOR_OK : COLOR_WARNING);
break;
case DriverViewStatusType::SCS:
text.setTypedText(T_SCS);
bg.setColor(vehicle_state.errors.err_scs ? COLOR_ERROR : COLOR_OK);
break;
case DriverViewStatusType::PDU:
text.setTypedText(T_PDU);
bg.setColor(vehicle_state.errors.err_pdu ? COLOR_ERROR : COLOR_OK);
break;
case DriverViewStatusType::INV:
text.setTypedText(T_INV);
if (vehicle_state.errors.err_invl || vehicle_state.errors.err_invr) {
bg.setColor(COLOR_ERROR);
} else if (vehicle_state.errors.invl_ready &&
vehicle_state.errors.invr_ready) {
bg.setColor(COLOR_OK);
} else {
bg.setColor(COLOR_OFF);
}
break;
2023-05-22 08:51:29 +02:00
case DriverViewStatusType::LV:
text.setTypedText(T_LV);
// TODO: Set color based on LV SoC
bg.setColor(COLOR_OFF);
break;
2023-05-22 07:22:44 +02:00
}
text.invalidate();
bg.invalidate();
}