Added fault state popup

This commit is contained in:
Yury Shuvakin
2023-03-26 23:45:49 +03:00
parent 960dd6ba88
commit 649c9ed2a0
19 changed files with 715 additions and 85 deletions

View File

@@ -161,7 +161,7 @@ void Commands::processPacket(QByteArray data)
values.opState = opStateToStr((OperationalStateTypedef)vb.vbPopFrontUint8());
values.balanceActive = vb.vbPopFrontUint8();
values.faultState = faultStateToStr((bms_fault_code)vb.vbPopFrontUint8());
values.faultState = faultStateToString((bms_fault_code)vb.vbPopFrontUint8());
emit valuesReceived(values);
} break;
@@ -271,6 +271,12 @@ void Commands::processPacket(QByteArray data)
emit ackReceived(tr("Network settings applied successfully"));
break;
}
case COMM_GET_FAULT_STATE:
{
const auto state = static_cast<bms_fault_code>(vb.vbPopFrontUint16());
emit faultStateReceived(faultStateToType(state), faultStateToString(state));
break;
}
default:
break;
}
@@ -367,6 +373,13 @@ void Commands::setNetSettings(QStringList settings)
emitData(vb);
}
void Commands::getFaultState()
{
VByteArray vb;
vb.vbAppendInt8(COMM_GET_FAULT_STATE);
emitData(vb);
}
void Commands::sendTerminalCmd(QString cmd)
{
VByteArray vb;
@@ -615,34 +628,67 @@ QString Commands::opStateToStr(OperationalStateTypedef fault)
}
}
QString Commands::faultStateToStr(bms_fault_code fault)
QString Commands::faultStateToString(bms_fault_code fault)
{
switch (fault) {
case FAULT_CODE_NONE: return "System OK";
case FAULT_CODE_PACK_OVER_VOLTAGE: return "Pack overvoltage";
case FAULT_CODE_PACK_UNDER_VOLTAGE: return "Pack undervoltage";
case FAULT_CODE_LOAD_OVER_VOLTAGE: return "Load overvoltage";
case FAULT_CODE_LOAD_UNDER_VOLTAGE: return "Load undervoltage";
case FAULT_CODE_CHARGER_OVER_VOLTAGE: return "Charger overvoltage";
case FAULT_CODE_CHARGER_UNDER_VOLTAGE: return "Charger undervoltgae";
case FAULT_CODE_CELL_HARD_OVER_VOLTAGE: return "Cell hard overvoltage";
case FAULT_CODE_CELL_HARD_UNDER_VOLTAGE: return "Cell hard undervoltage";
case FAULT_CODE_CELL_SOFT_OVER_VOLTAGE: return "Cell soft overvoltage";
case FAULT_CODE_CELL_SOFT_UNDER_VOLTAGE: return "Cell soft undervoltage";
case FAULT_CODE_MAX_UVP_OVP_ERRORS: return "MAX OVP/UVP errors";
case FAULT_CODE_MAX_UVT_OVT_ERRORS: return "MAX OVT/UVT errors";
case FAULT_CODE_OVER_CURRENT: return "Over current";
case FAULT_CODE_OVER_TEMP_BMS: return "Over temp BMS";
case FAULT_CODE_UNDER_TEMP_BMS: return "Under temp BMS";
case FAULT_CODE_DISCHARGE_OVER_TEMP_CELLS: return "Discharge over temp cell";
case FAULT_CODE_DISCHARGE_UNDER_TEMP_CELLS: return "Discharge under temp cell";
case FAULT_CODE_CHARGE_OVER_TEMP_CELLS: return "Charge over temp cell";
case FAULT_CODE_CHARGE_UNDER_TEMP_CELLS: return "Charge under temp cell";
case FAULT_CODE_PRECHARGE_TIMEOUT: return "Precharge timeout";
case FAULT_CODE_DISCHARGE_RETRY: return "Discharge retry";
case FAULT_CODE_CHARGE_RETRY: return "Charge retry";
case FAULT_CODE_CHARGER_DISCONNECT: return "Charge retry";
default: return "Unknown fault";
switch (fault)
{
case FAULT_CODE_NONE: return tr("System ok");
case FAULT_CODE_PACK_OVER_VOLTAGE: return tr("Pack overvoltage");
case FAULT_CODE_PACK_UNDER_VOLTAGE: return tr("Pack undervoltage");
case FAULT_CODE_LOAD_OVER_VOLTAGE: return tr("Load overvoltage");
case FAULT_CODE_LOAD_UNDER_VOLTAGE: return tr("Load undervoltage");
case FAULT_CODE_CHARGER_OVER_VOLTAGE: return tr("Charger overvoltage");
case FAULT_CODE_CHARGER_UNDER_VOLTAGE: return tr("Charger undervoltgae");
case FAULT_CODE_CELL_HARD_OVER_VOLTAGE: return tr("Cell hard overvoltage");
case FAULT_CODE_CELL_HARD_UNDER_VOLTAGE: return tr("Cell hard undervoltage");
case FAULT_CODE_CELL_SOFT_OVER_VOLTAGE: return tr("Cell soft overvoltage");
case FAULT_CODE_CELL_SOFT_UNDER_VOLTAGE: return tr("Cell soft undervoltage");
case FAULT_CODE_MAX_UVP_OVP_ERRORS: return tr("Too high or too low voltage");
case FAULT_CODE_MAX_UVT_OVT_ERRORS: return tr("Too high or too low temperature");
case FAULT_CODE_OVER_CURRENT: return tr("Over current");
case FAULT_CODE_OVER_TEMP_BMS: return tr("Over temperature BMS");
case FAULT_CODE_UNDER_TEMP_BMS: return tr("Under temperature BMS");
case FAULT_CODE_DISCHARGE_OVER_TEMP_CELLS: return tr("Discharge over temperature cell");
case FAULT_CODE_DISCHARGE_UNDER_TEMP_CELLS: return tr("Discharge under temperature cell");
case FAULT_CODE_CHARGE_OVER_TEMP_CELLS: return tr("Charge over temperature cell");
case FAULT_CODE_CHARGE_UNDER_TEMP_CELLS: return tr("Charge under temperature cell");
case FAULT_CODE_PRECHARGE_TIMEOUT: return tr("Precharge timeout");
case FAULT_CODE_DISCHARGE_RETRY: return tr("Discharge retry");
case FAULT_CODE_CHARGE_RETRY: return tr("Charge retry");
case FAULT_CODE_CHARGER_DISCONNECT: return tr("Charge retry");
default: return tr("Unknown state");
}
}
DataTypes::StateType Commands::faultStateToType(bms_fault_code fault)
{
switch (fault)
{
case FAULT_CODE_NONE: return DataTypes::StateType::Good;
case FAULT_CODE_PACK_OVER_VOLTAGE: return DataTypes::StateType::Error;
case FAULT_CODE_PACK_UNDER_VOLTAGE: return DataTypes::StateType::Error;
case FAULT_CODE_LOAD_OVER_VOLTAGE: return DataTypes::StateType::Error;
case FAULT_CODE_LOAD_UNDER_VOLTAGE: return DataTypes::StateType::Error;
case FAULT_CODE_CHARGER_OVER_VOLTAGE: return DataTypes::StateType::Error;
case FAULT_CODE_CHARGER_UNDER_VOLTAGE: return DataTypes::StateType::Error;
case FAULT_CODE_CELL_HARD_OVER_VOLTAGE: return DataTypes::StateType::Error;
case FAULT_CODE_CELL_HARD_UNDER_VOLTAGE: return DataTypes::StateType::Error;
case FAULT_CODE_CELL_SOFT_OVER_VOLTAGE: return DataTypes::StateType::Error;
case FAULT_CODE_CELL_SOFT_UNDER_VOLTAGE: return DataTypes::StateType::Error;
case FAULT_CODE_MAX_UVP_OVP_ERRORS: return DataTypes::StateType::Error;
case FAULT_CODE_MAX_UVT_OVT_ERRORS: return DataTypes::StateType::Error;
case FAULT_CODE_OVER_CURRENT: return DataTypes::StateType::Error;
case FAULT_CODE_OVER_TEMP_BMS: return DataTypes::StateType::Error;
case FAULT_CODE_UNDER_TEMP_BMS: return DataTypes::StateType::Error;
case FAULT_CODE_DISCHARGE_OVER_TEMP_CELLS: return DataTypes::StateType::Error;
case FAULT_CODE_DISCHARGE_UNDER_TEMP_CELLS: return DataTypes::StateType::Error;
case FAULT_CODE_CHARGE_OVER_TEMP_CELLS: return DataTypes::StateType::Error;
case FAULT_CODE_CHARGE_UNDER_TEMP_CELLS: return DataTypes::StateType::Error;
case FAULT_CODE_PRECHARGE_TIMEOUT: return DataTypes::StateType::Warning;
case FAULT_CODE_DISCHARGE_RETRY: return DataTypes::StateType::Info;
case FAULT_CODE_CHARGE_RETRY: return DataTypes::StateType::Info;
case FAULT_CODE_CHARGER_DISCONNECT: return DataTypes::StateType::Info;
default: return DataTypes::StateType::Info;
}
}