Add AMS Error popup
This commit is contained in:
71
TouchGFX/gui/src/containers/ErrorPopup.cpp
Normal file
71
TouchGFX/gui/src/containers/ErrorPopup.cpp
Normal file
@ -0,0 +1,71 @@
|
||||
#include <gui/containers/ErrorPopup.hpp>
|
||||
|
||||
#include "texts/TextKeysAndLanguages.hpp"
|
||||
#include "touchgfx/Unicode.hpp"
|
||||
#include "vehicle.h"
|
||||
|
||||
ErrorPopup::ErrorPopup() {}
|
||||
|
||||
void ErrorPopup::initialize() { ErrorPopupBase::initialize(); }
|
||||
|
||||
void ErrorPopup::showAMSError() {
|
||||
title.setTypedText(T_ERROR_AMS);
|
||||
title.invalidate();
|
||||
switch (vehicle_state.last_ams_error.kind) {
|
||||
case AMS_ERROR_NONE:
|
||||
touchgfx::Unicode::strncpy(detailsBuffer, "UNKNOWN ERROR",
|
||||
sizeof(detailsBuffer) / sizeof(*detailsBuffer));
|
||||
break;
|
||||
case AMS_ERROR_SLAVE_TIMEOUT:
|
||||
touchgfx::Unicode::snprintf(
|
||||
detailsBuffer, sizeof(detailsBuffer) / sizeof(*detailsBuffer),
|
||||
"Slave timeout: Slave %d", vehicle_state.last_ams_error.arg);
|
||||
break;
|
||||
case AMS_ERROR_SLAVE_PANIC: {
|
||||
const char *panicKindStr = "UNKNOWN";
|
||||
switch (vehicle_state.last_ams_slave_panic.kind) {
|
||||
case AMS_SLAVEPANIC_OVERTEMP:
|
||||
panicKindStr = "OVERTEMPERATURE";
|
||||
break;
|
||||
case AMS_SLAVEPANIC_UNDERTEMP:
|
||||
panicKindStr = "UNDERTEMPERATURE";
|
||||
break;
|
||||
case AMS_SLAVEPANIC_OVERVOLTAGE:
|
||||
panicKindStr = "OVERVOLTAGE";
|
||||
break;
|
||||
case AMS_SLAVEPANIC_UNDERVOLTAGE:
|
||||
panicKindStr = "UNDERVOLTAGE";
|
||||
break;
|
||||
case AMS_SLAVEPANIC_TOO_FEW_TEMP:
|
||||
panicKindStr = "TOO FEW TEMP SENSORS";
|
||||
break;
|
||||
case AMS_SLAVEPANIC_OPENWIRE:
|
||||
panicKindStr = "OPEN WIRE";
|
||||
break;
|
||||
}
|
||||
touchgfx::Unicode::UnicodeChar panicKindBuf[32];
|
||||
touchgfx::Unicode::strncpy(panicKindBuf, panicKindStr,
|
||||
sizeof(panicKindBuf) / sizeof(*panicKindBuf));
|
||||
touchgfx::Unicode::snprintf(
|
||||
detailsBuffer, sizeof(detailsBuffer) / sizeof(*detailsBuffer),
|
||||
"Slave panic: Slave %d\n[ID: %d, Kind: %s, Arg: %08x]",
|
||||
vehicle_state.last_ams_slave_panic.id, panicKindBuf,
|
||||
vehicle_state.last_ams_slave_panic.arg);
|
||||
break;
|
||||
}
|
||||
case AMS_ERROR_SHUNT_TIMEOUT:
|
||||
touchgfx::Unicode::strncpy(detailsBuffer, "Shunt timeout",
|
||||
sizeof(detailsBuffer) / sizeof(*detailsBuffer));
|
||||
break;
|
||||
case AMS_ERROR_SHUNT_OVERCURRENT:
|
||||
touchgfx::Unicode::strncpy(detailsBuffer, "Shunt overcurrent",
|
||||
sizeof(detailsBuffer) / sizeof(*detailsBuffer));
|
||||
break;
|
||||
case AMS_ERROR_SHUNT_OVERTEMP:
|
||||
touchgfx::Unicode::strncpy(detailsBuffer, "Shunt overtemperature",
|
||||
sizeof(detailsBuffer) / sizeof(*detailsBuffer));
|
||||
break;
|
||||
}
|
||||
details.setWildcard(detailsBuffer);
|
||||
details.invalidate();
|
||||
}
|
||||
Reference in New Issue
Block a user