Brake temps & pressures, total distance

This commit is contained in:
2023-05-19 15:36:23 +02:00
parent 243577fdcc
commit c159d9bda9
27 changed files with 461 additions and 71 deletions

View File

@ -13,7 +13,7 @@ CountedEnum(DataFieldType, size_t, DF_TSState, DF_ASState, DF_ActiveMission,
DF_IniChkState, DF_LapCount, DF_TireTempFL, DF_TireTempFR,
DF_TireTempRL, DF_TireTempRR, DF_MinCellVolt, DF_MaxCellTemp,
DF_TSSoC, DF_LVSoC, DF_TSCurrent, DF_TSVoltageBat, DF_TSVoltageVeh,
DF_Speed, DF_BBal);
DF_Speed, DF_BBal, DF_BPF, DF_BPR, DF_DistanceTotal);
enum class NamedFieldKind { Float, Bool, Text, Int };

View File

@ -19,11 +19,14 @@ public:
*/
void setTempThresholds(int *thresholds);
void setSmallText(bool small);
protected:
private:
int temp;
int tempThresholds[4];
Unicode::UnicodeChar valueBuffer[3];
Unicode::UnicodeChar valueBuffer[4];
bool small;
void updateValueBuffer();
};

View File

@ -270,6 +270,10 @@ NamedFieldDescription dataFieldDescs[] = {
VEH_FIELD(ts_voltage_veh)},
[DF_Speed] = {NamedFieldKind::Float, "SPEED", 3, 0, VEH_FIELD(speed)},
[DF_BBal] = {NamedFieldKind::Float, "BBAL", 3, 1, get_zero},
[DF_BPF] = {NamedFieldKind::Float, "BPF", 3, 1, VEH_FIELD(brake_press_f)},
[DF_BPR] = {NamedFieldKind::Float, "BPR", 3, 1, VEH_FIELD(brake_press_r)},
[DF_DistanceTotal] = {NamedFieldKind::Float, "DIST", 3, 1,
VEH_FIELD(distance_total)},
};
static_assert(sizeof(dataFieldDescs) / sizeof(dataFieldDescs[0]) ==

View File

@ -2,6 +2,7 @@
#include <cstring>
#include "texts/TextKeysAndLanguages.hpp"
#include "touchgfx/Color.hpp"
#include "touchgfx/Unicode.hpp"
@ -9,7 +10,10 @@ Temperature::Temperature() : temp{0}, tempThresholds{0, 0, 0, 0} {
updateValueBuffer();
}
void Temperature::initialize() { TemperatureBase::initialize(); }
void Temperature::initialize() {
TemperatureBase::initialize();
setSmallText(false);
}
void Temperature::setTemp(int temp_in_celsius) {
if (temp_in_celsius < 0) {
@ -42,10 +46,25 @@ void Temperature::setTempThresholds(int *thresholds) {
memcpy(tempThresholds, thresholds, sizeof(tempThresholds));
}
void Temperature::setSmallText(bool small_) {
this->small = small_;
if (small_) {
value.setTypedText(T_NUMBERSMALLWILDCARD);
value.setHeight(33);
value.setY(14);
} else {
value.setTypedText(T_NUMBERWILDCARD);
value.setHeight(50);
value.setY(0);
}
updateValueBuffer();
}
void Temperature::updateValueBuffer() {
// Unicode::utoa(temp, valueBuffer, 3, 10);
const char *format = small ? "%03d" : "%02d";
Unicode::snprintf(valueBuffer,
sizeof(valueBuffer) / sizeof(Unicode::UnicodeChar), "%02d",
sizeof(valueBuffer) / sizeof(Unicode::UnicodeChar), format,
temp);
value.setWildcard(valueBuffer);
}

View File

@ -17,11 +17,20 @@ void DriverViewView::setupScreen() {
getField(i).setType(fieldTypes[i]);
}
fieldTypeSelection.setNumberOfItems(DataFieldType_COUNT);
int tireThresholds[4] = {35, 40, 50, 60};
tireTempFL.setTempThresholds(tireThresholds);
tireTempFR.setTempThresholds(tireThresholds);
tireTempRL.setTempThresholds(tireThresholds);
tireTempRR.setTempThresholds(tireThresholds);
// int tireThresholds[4] = {35, 40, 50, 60};
// tireTempFL.setTempThresholds(tireThresholds);
// tireTempFR.setTempThresholds(tireThresholds);
// tireTempRL.setTempThresholds(tireThresholds);
// tireTempRR.setTempThresholds(tireThresholds);
int brakeThresholds[4] = {100, 150, 200, 250};
tireTempFL.setSmallText(true);
tireTempFL.setTempThresholds(brakeThresholds);
tireTempFR.setSmallText(true);
tireTempFR.setTempThresholds(brakeThresholds);
tireTempRL.setSmallText(true);
tireTempRL.setTempThresholds(brakeThresholds);
tireTempRR.setSmallText(true);
tireTempRR.setTempThresholds(brakeThresholds);
int invThresholds[4] = {30, 40, 50, 60};
invTempL.setTempThresholds(invThresholds);
invTempR.setTempThresholds(invThresholds);
@ -49,10 +58,10 @@ void DriverViewView::updateFieldValues() {
}
void DriverViewView::setTemps(const Temperatures &temps) {
tireTempFL.setTemp(roundf(temps.tire_fl));
tireTempFR.setTemp(roundf(temps.tire_fr));
tireTempRL.setTemp(roundf(temps.tire_rl));
tireTempRR.setTemp(roundf(temps.tire_rr));
tireTempFL.setTemp(roundf(temps.brake_fl));
tireTempFR.setTemp(roundf(temps.brake_fr));
tireTempRL.setTemp(roundf(temps.brake_rl));
tireTempRR.setTemp(roundf(temps.brake_rr));
invTempL.setTemp(roundf(temps.inv_l));
invTempR.setTemp(roundf(temps.inv_r));
motorTempL.setTemp(roundf(temps.mot_l));