add basic system overview screen with can watchdogs and brake pressure

This commit is contained in:
Leonard Gies 2025-08-01 01:12:29 +02:00
parent 4354b03907
commit 77ba4249d3
Signed by: l.gies
GPG Key ID: 6F6FB9338EE44F71
28 changed files with 838 additions and 87 deletions

View File

@ -43,7 +43,7 @@ typedef enum {
typedef enum {
SDC_OFF = 0,
SDC_PDU_OK = 1, //
SDC_PDU_OK = 1,
SDC_RES_OK = 2,
SDC_AMS_OK = 3,
SDC_IMD_OK = 4,
@ -218,6 +218,25 @@ typedef struct {
uint16_t inv_warnings_1;
uint16_t inv_warnings_2;
struct {
bool snf : 1; // sensor node front
bool db : 1; // dashboard
bool ftcu : 1;
bool pdu : 1;
bool snr : 1; // sensor node rear
bool ams : 1;
bool shunt : 1;
} watchdog_timeout; // true if watchdog timed out
struct {
uint32_t snf; // sensor node front
uint32_t db; // dashboard
uint32_t ftcu;
uint32_t pdu;
uint32_t snr; // sensor node rear
uint32_t ams;
uint32_t shunt;
} watchdog_times; // last received message
ParamType last_param_confirmed;
uint8_t drs_led_active;

View File

@ -12,6 +12,8 @@
#include "vehicle_state.h"
#include <stdbool.h>
#define CHECK_WATCHDOG(param, timeout) vehicle_state.watchdog_timeout.param = tick - vehicle_state.watchdog_times.param >= timeout
// CAN filter constants
#define CAN_ID_AMS_SLAVE_PANIC 0x009
#define CAN_ID_AMS_STATUS 0x00A
@ -39,6 +41,9 @@
#define CAN_ID_PDU_CURRENT3 0x0CC
#define CAN_ID_PDU_CURRENT4 0x0CD
#define CAN_ID_SNF_100Hz_1 0x0D3 // only for watchdog
#define CAN_ID_SNR_100Hz 0x0D4 // only for watchdog
#define CAN_ID_DASHBOARD 0x420
#define CAN_ID_SSU 0x500
@ -109,6 +114,8 @@ void vehicle_thread_entry(ULONG hfdcan_addr) {
ftcan_add_filter(CAN_ID_PDU_CURRENT2, 0x7FF);
ftcan_add_filter(CAN_ID_PDU_CURRENT3, 0x7FF);
ftcan_add_filter(CAN_ID_PDU_CURRENT4, 0x7FF);
ftcan_add_filter(CAN_ID_SNF_100Hz_1, 0x7FF);
ftcan_add_filter(CAN_ID_SNR_100Hz, 0x7FF);
ftcan_add_filter(CAN_ID_DASHBOARD, 0x7FF);
ftcan_add_filter(CAN_ID_SSU, 0x7FF);
ftcan_add_filter(CAN_ID_SHUNT_CURRENT, 0x7FF);
@ -137,6 +144,16 @@ void vehicle_thread_entry(ULONG hfdcan_addr) {
}
tx_event_flags_set(&gui_update_events, GUI_UPDATE_VEHICLE_STATE, TX_OR);
#endif
uint32_t tick = HAL_GetTick();
CHECK_WATCHDOG(snf, 300);
CHECK_WATCHDOG(db, 600);
CHECK_WATCHDOG(ftcu, 300);
CHECK_WATCHDOG(pdu, 300);
CHECK_WATCHDOG(snr, 300);
CHECK_WATCHDOG(ams, 300);
CHECK_WATCHDOG(shunt, 300);
tx_event_flags_set(&gui_update_events, GUI_UPDATE_VEHICLE_STATE, TX_OR);
}
}
@ -184,15 +201,18 @@ float calculate_lv_soc(float lv_voltage) {
}
void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
uint32_t tick = HAL_GetTick();
const uint8_t *ptr;
switch (id) {
case CAN_ID_AMS_SLAVE_PANIC:
vehicle_state.watchdog_times.ams = tick;
vehicle_state.last_ams_slave_panic.id = data[0];
vehicle_state.last_ams_slave_panic.kind = data[1];
ptr = &data[2];
vehicle_state.last_ams_slave_panic.arg = ftcan_unmarshal_unsigned(&ptr, 4);
break;
case CAN_ID_AMS_STATUS:
vehicle_state.watchdog_times.ams = tick;
vehicle_state.ts_state = data[0] & 0x7F;
vehicle_state.sdc_closed = (data[0] & 0x80) >> 7;
vehicle_state.soc_ts = data[1];
@ -207,30 +227,37 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
vehicle_state.ams_error = (data[7] & 0x04) >> 2;
break;
case CAN_ID_AMS_ERROR:
vehicle_state.watchdog_times.ams = tick;
vehicle_state.last_ams_error.kind = data[0];
vehicle_state.last_ams_error.arg = data[1];
break;
case CAN_ID_AMS_DCDC:
vehicle_state.watchdog_times.ams = tick;
ptr = &data[0];
vehicle_state.dcdc_temp = ftcan_unmarshal_signed(&ptr, 2) * 0.01f;
vehicle_state.dcdc_current = ftcan_unmarshal_signed(&ptr, 2) * 0.001f;
break;
case CAN_ID_PWM_DUTYCYLE:
vehicle_state.watchdog_times.ftcu = tick;
// TODO
break;
case CAN_ID_PWM_CONFIG:
vehicle_state.watchdog_times.ftcu = tick;
// TODO
break;
case CAN_ID_FTCU_TIMINGS:
vehicle_state.watchdog_times.ftcu = tick;
vehicle_state.lap_time_best = (data[0] | (data[1] << 8)) * 0.01f;
vehicle_state.lap_time_last = (data[2] | (data[3] << 8)) * 0.01f;
vehicle_state.sector_time_best = (data[4] | (data[5] << 8)) * 0.01f;
vehicle_state.sector_time_last = (data[6] | (data[7] << 8)) * 0.01f;
break;
case CAN_ID_FTCU_DAMPER:
vehicle_state.watchdog_times.ftcu = tick;
// TODO
break;
case CAN_ID_FTCU_WHEELSPEED:
vehicle_state.watchdog_times.ftcu = tick;
vehicle_state.wheel_speeds.wss_fl = data[0] | ((data[1] & 0x0F) << 8);
vehicle_state.wheel_speeds.wss_fr = ((data[1] >> 4) & 0x0F) | (data[2] << 4);
vehicle_state.wheel_speeds.wss_rl = data[3] | ((data[4] & 0x0F) << 8);
@ -238,19 +265,23 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
vehicle_state.distance_session = data[6] | (data[7] << 8);
break;
case CAN_ID_FTCU_BRAKE_T:
vehicle_state.watchdog_times.ftcu = tick;
vehicle_state.temps.brake_fl = (data[0] | (data[1] << 8)) * 0.01f;
vehicle_state.temps.brake_fr = (data[2] | (data[3] << 8)) * 0.01f;
vehicle_state.temps.brake_rl = (data[4] | (data[5] << 8)) * 0.01f;
vehicle_state.temps.brake_rr = (data[6] | (data[7] << 8)) * 0.01f;
break;
case CAN_ID_FTCU_COOLING:
vehicle_state.watchdog_times.ftcu = tick;
// TODO
break;
case CAN_ID_FTCU_PNEUMATIK:
vehicle_state.watchdog_times.ftcu = tick;
vehicle_state.tank_pressure_1 = data[0] | ((data[1] & 0x0F) << 8);
vehicle_state.tank_pressure_2 = data[2] | ((data[3] & 0x0F) << 8);
break;
case CAN_ID_FTCU_DRIVER:
vehicle_state.watchdog_times.ftcu = tick;
vehicle_state.apps_percent = data[0];
vehicle_state.brake_pressure_f = (data[1] | ((data[2] & 0x0F) << 8)) * 0.1f;
vehicle_state.brake_pressure_r = (((data[2] >> 4) & 0x0F) | (data[3] << 4)) * 0.1f;
@ -260,9 +291,11 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
vehicle_state.sector_count = data[7];
break;
case CAN_ID_AS_MISSION_FB:
vehicle_state.watchdog_times.ftcu = tick;
vehicle_state.active_mission = data[0] & 0b111;
break;
case CAN_ID_STW_STATUS:
vehicle_state.watchdog_times.ftcu = tick;
// vehicle_state.lap_count = data[0] & 0b111111;
vehicle_state.errors.err_pdu = (data[0] >> 6) & 0b1;
vehicle_state.errors.err_res = (data[0] >> 7) & 0b1;
@ -285,52 +318,71 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
vehicle_state.initial_checkup_state = data[6];
break;
case CAN_ID_FTCU_PARAM_CONFIRMED:
vehicle_state.watchdog_times.ftcu = tick;
vehicle_state.last_param_confirmed = data[0];
tx_event_flags_set(&gui_update_events, GUI_UPDATE_PARAM_CONFIRMED, TX_OR);
break;
case CAN_ID_FTCU_TELEMETRIE1:
vehicle_state.watchdog_times.ftcu = tick;
// TODO
break;
case CAN_ID_FTCU_TELEMETRIE2:
vehicle_state.watchdog_times.ftcu = tick;
// TODO
break;
case CAN_ID_PDU_RESPONSE:
vehicle_state.watchdog_times.pdu = tick;
// TODO
break;
case CAN_ID_PDU_CURRENT1:
vehicle_state.watchdog_times.pdu = tick;
// TODO
break;
case CAN_ID_PDU_CURRENT2:
vehicle_state.watchdog_times.pdu = tick;
// TODO
break;
case CAN_ID_PDU_CURRENT3:
vehicle_state.watchdog_times.pdu = tick;
// TODO
break;
case CAN_ID_PDU_CURRENT4:
vehicle_state.watchdog_times.pdu = tick;
ptr = &data[2];
vehicle_state.lv_voltage = ftcan_unmarshal_signed(&ptr, 2) * 0.001f;
vehicle_state.lv_soc = calculate_lv_soc(vehicle_state.lv_voltage);
break;
case CAN_ID_SNF_100Hz_1:
vehicle_state.watchdog_times.snf = tick;
break;
case CAN_ID_SNR_100Hz:
vehicle_state.watchdog_times.snr = tick;
break;
case CAN_ID_DASHBOARD:
vehicle_state.watchdog_times.db = tick;
// TODO
break;
case CAN_ID_SSU:
// TODO
break;
case CAN_ID_SHUNT_CURRENT:
vehicle_state.watchdog_times.shunt = tick;
// The first two bytes of shunt result messages are metadata
ptr = &data[2];
vehicle_state.ts_current = ftcan_unmarshal_signed(&ptr, 4) * 0.001f;
break;
case CAN_ID_SHUNT_VOLTAGE1:
vehicle_state.watchdog_times.shunt = tick;
ptr = &data[2];
vehicle_state.ts_voltage_bat = ftcan_unmarshal_signed(&ptr, 4) * -0.001f;
break;
case CAN_ID_SHUNT_VOLTAGE2:
vehicle_state.watchdog_times.shunt = tick;
ptr = &data[2];
vehicle_state.ts_voltage_veh = vehicle_state.ts_voltage_bat - (ftcan_unmarshal_signed(&ptr, 4) * -0.001f);
break;
case CAN_ID_SHUNT_TEMPERATURE:
vehicle_state.watchdog_times.shunt = tick;
ptr = &data[2];
vehicle_state.shunt_temperature = ftcan_unmarshal_signed(&ptr, 4) * 0.1f;
break;

View File

@ -11,10 +11,10 @@
"logo_dv_small_white.png": {
"layout_rotation": "90"
},
"logo_dv_small.png": {
"Fasttube_Logo_small_white.png": {
"layout_rotation": "90"
},
"Fasttube_Logo_small_white.png": {
"logo_dv_small.png": {
"layout_rotation": "90"
}
},

View File

@ -5,6 +5,24 @@
</Languages>
<Texts>
<TextGroup Id="Status">
<Text Id="Shunt" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">Shunt</Translation>
</Text>
<Text Id="statusWildcard" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="DB" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">DB</Translation>
</Text>
<Text Id="FTCU" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">FTCU</Translation>
</Text>
<Text Id="SNR" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">SNR</Translation>
</Text>
<Text Id="SNF" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">SNF</Translation>
</Text>
<Text Id="LV" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">LV</Translation>
</Text>
@ -171,6 +189,30 @@
</Text>
</TextGroup>
<TextGroup Id="Unsorted">
<Text Id="__SingleUse_HTV5" Alignment="Left" TypographyId="Default_Bold">
<Translation Language="GB">BRAKES</Translation>
</Text>
<Text Id="__SingleUse_N52Q" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_SCTC" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_OEMA" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_VKTM" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_Z106" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_YZ9T" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_SNQD" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_C17G" Alignment="Left" TypographyId="Chinat_Small">
<Translation Language="GB">AS &lt;value&gt;</Translation>
</Text>
@ -253,7 +295,7 @@
<Translation Language="GB">DANG:</Translation>
</Text>
<Text Id="__SingleUse_F9I5" Alignment="Center" TypographyId="Default_Bold">
<Translation Language="GB"></Translation>
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_9L8R" Alignment="Left" TypographyId="Default">
<Translation Language="GB">&lt;value&gt;</Translation>

View File

@ -38,6 +38,9 @@ public:
// SDC
void gotoSDCScreenNoTransition();
// SystemOverview
void gotoSystemOverviewScreenNoTransition();
protected:
touchgfx::Callback<FrontendApplicationBase> transitionCallback;
FrontendHeap& frontendHeap;
@ -60,6 +63,9 @@ protected:
// SDC
void gotoSDCScreenNoTransitionImpl();
// SystemOverview
void gotoSystemOverviewScreenNoTransitionImpl();
};
#endif // FRONTENDAPPLICATIONBASE_HPP

View File

@ -24,6 +24,8 @@
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
#include <gui/sdc_screen/SDCView.hpp>
#include <gui/sdc_screen/SDCPresenter.hpp>
#include <gui/systemoverview_screen/SystemOverviewView.hpp>
#include <gui/systemoverview_screen/SystemOverviewPresenter.hpp>
/**
@ -52,7 +54,8 @@ public:
touchgfx::meta::TypeList< DebugViewView,
touchgfx::meta::TypeList< VehicleConfigView,
touchgfx::meta::TypeList< SDCView,
touchgfx::meta::Nil > > > > >
touchgfx::meta::TypeList< SystemOverviewView,
touchgfx::meta::Nil > > > > > >
> GeneratedViewTypes;
/**
@ -70,7 +73,8 @@ public:
touchgfx::meta::TypeList< DebugViewPresenter,
touchgfx::meta::TypeList< VehicleConfigPresenter,
touchgfx::meta::TypeList< SDCPresenter,
touchgfx::meta::Nil > > > > >
touchgfx::meta::TypeList< SystemOverviewPresenter,
touchgfx::meta::Nil > > > > > >
> GeneratedPresenterTypes;
/**

View File

@ -7,7 +7,7 @@
#include <gui/common/FrontendApplication.hpp>
#include <touchgfx/containers/Container.hpp>
#include <touchgfx/widgets/BoxWithBorder.hpp>
#include <touchgfx/widgets/TextArea.hpp>
#include <touchgfx/widgets/TextAreaWithWildcard.hpp>
class DriverViewStatusItemBase : public touchgfx::Container
{
@ -25,7 +25,7 @@ protected:
* Member Declarations
*/
touchgfx::BoxWithBorder bg;
touchgfx::TextArea text;
touchgfx::TextAreaWithOneWildcard text;
private:

View File

@ -0,0 +1,56 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#ifndef SYSTEMOVERVIEWVIEWBASE_HPP
#define SYSTEMOVERVIEWVIEWBASE_HPP
#include <gui/common/FrontendApplication.hpp>
#include <mvp/View.hpp>
#include <gui/systemoverview_screen/SystemOverviewPresenter.hpp>
#include <touchgfx/widgets/Box.hpp>
#include <touchgfx/containers/Container.hpp>
#include <gui/containers/DriverViewStatusItem.hpp>
#include <touchgfx/widgets/TextArea.hpp>
class SystemOverviewViewBase : public touchgfx::View<SystemOverviewPresenter>
{
public:
SystemOverviewViewBase();
virtual ~SystemOverviewViewBase();
virtual void setupScreen();
protected:
FrontendApplication& application() {
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
}
/*
* Member Declarations
*/
touchgfx::Box __background;
touchgfx::Container statusItems;
DriverViewStatusItem statusTS_R2D;
DriverViewStatusItem status1;
DriverViewStatusItem statusSDC;
DriverViewStatusItem statusSCS;
DriverViewStatusItem status2;
DriverViewStatusItem status3;
DriverViewStatusItem status4;
DriverViewStatusItem statusINV;
DriverViewStatusItem statusAMS;
DriverViewStatusItem statusShunt;
DriverViewStatusItem statusLV;
DriverViewStatusItem statusSNR;
DriverViewStatusItem statusPDU;
DriverViewStatusItem statusFTCU;
DriverViewStatusItem statusDB;
DriverViewStatusItem statusSNF;
DriverViewStatusItem statusBPR;
DriverViewStatusItem statusBPF;
touchgfx::TextArea textArea1;
private:
};
#endif // SYSTEMOVERVIEWVIEWBASE_HPP

View File

@ -21,6 +21,8 @@
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
#include <gui/sdc_screen/SDCView.hpp>
#include <gui/sdc_screen/SDCPresenter.hpp>
#include <gui/systemoverview_screen/SystemOverviewView.hpp>
#include <gui/systemoverview_screen/SystemOverviewPresenter.hpp>
using namespace touchgfx;
@ -118,3 +120,16 @@ void FrontendApplicationBase::gotoSDCScreenNoTransitionImpl()
{
touchgfx::makeTransition<SDCView, SDCPresenter, touchgfx::NoTransition, Model >(&currentScreen, &currentPresenter, frontendHeap, &currentTransition, &model);
}
// SystemOverview
void FrontendApplicationBase::gotoSystemOverviewScreenNoTransition()
{
transitionCallback = touchgfx::Callback<FrontendApplicationBase>(this, &FrontendApplicationBase::gotoSystemOverviewScreenNoTransitionImpl);
pendingScreenTransitionCallback = &transitionCallback;
}
void FrontendApplicationBase::gotoSystemOverviewScreenNoTransitionImpl()
{
touchgfx::makeTransition<SystemOverviewView, SystemOverviewPresenter, touchgfx::NoTransition, Model >(&currentScreen, &currentPresenter, frontendHeap, &currentTransition, &model);
}

View File

@ -144,4 +144,13 @@ void MissionSelectViewBase::handleKeyEvent(uint8_t key)
application().gotoSDCScreenNoTransition();
}
if(79 == key)
{
//DummyChangeSystemOverviewView
//When hardware button 79 clicked change screen to SystemOverview
//Go to SystemOverview with no screen transition
application().gotoSystemOverviewScreenNoTransition();
}
}

View File

@ -0,0 +1,103 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#include <gui_generated/systemoverview_screen/SystemOverviewViewBase.hpp>
#include <touchgfx/Color.hpp>
#include <texts/TextKeysAndLanguages.hpp>
SystemOverviewViewBase::SystemOverviewViewBase()
{
__background.setPosition(0, 0, 480, 320);
__background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
add(__background);
statusItems.setPosition(0, 0, 480, 320);
statusTS_R2D.setXY(12, 280);
statusItems.add(statusTS_R2D);
status1.setXY(77, 280);
statusItems.add(status1);
statusSDC.setXY(142, 280);
statusItems.add(statusSDC);
statusSCS.setXY(207, 280);
statusItems.add(statusSCS);
status2.setXY(272, 280);
statusItems.add(status2);
status3.setXY(337, 280);
statusItems.add(status3);
status4.setXY(402, 280);
statusItems.add(status4);
statusINV.setXY(337, 218);
statusItems.add(statusINV);
statusAMS.setXY(402, 202);
statusItems.add(statusAMS);
statusShunt.setXY(402, 234);
statusItems.add(statusShunt);
statusLV.setXY(337, 185);
statusItems.add(statusLV);
statusSNR.setXY(402, 169);
statusItems.add(statusSNR);
statusPDU.setXY(402, 136);
statusItems.add(statusPDU);
statusFTCU.setXY(337, 120);
statusItems.add(statusFTCU);
statusDB.setXY(337, 87);
statusItems.add(statusDB);
statusSNF.setXY(402, 70);
statusItems.add(statusSNF);
statusBPR.setXY(12, 63);
statusItems.add(statusBPR);
statusBPF.setXY(12, 30);
statusItems.add(statusBPF);
add(statusItems);
textArea1.setXY(12, 5);
textArea1.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
textArea1.setLinespacing(0);
textArea1.setTypedText(touchgfx::TypedText(T___SINGLEUSE_HTV5));
add(textArea1);
}
SystemOverviewViewBase::~SystemOverviewViewBase()
{
}
void SystemOverviewViewBase::setupScreen()
{
statusTS_R2D.initialize();
status1.initialize();
statusSDC.initialize();
statusSCS.initialize();
status2.initialize();
status3.initialize();
status4.initialize();
statusINV.initialize();
statusAMS.initialize();
statusShunt.initialize();
statusLV.initialize();
statusSNR.initialize();
statusPDU.initialize();
statusFTCU.initialize();
statusDB.initialize();
statusSNF.initialize();
statusBPR.initialize();
statusBPF.initialize();
}

View File

@ -1 +1 @@
{"remap":"yes","language":"GB","language_index":0,"copy_translations":"no","indices":[["490","T_LV"],["376","T_PDU"],["482","T_SCS"],["486","T_SDC"],["478","T_R2D"],["475","T_TS"],["470","T_INV"],["364","T_AMS"],["210","T_ERROR_AMS"],["175","T_DEBUGVIEWFIELD_TITLE"],["175","T_DRIVERVIEWFIELD_TITLE"],["175","T_NUMBERSMALLWILDCARD"],["416","T_FIELD_BBAL"],["355","T_FIELD_TSVOLTVEH"],["348","T_FIELD_TSVOLTBAT"],["392","T_FIELD_LVSOC"],["410","T_FIELD_TSSOC"],["431","T_FIELD_MAXCELLTEMP"],["441","T_FIELD_TIREFL"],["446","T_FIELD_TIREFR"],["451","T_FIELD_TIRERL"],["456","T_FIELD_TIRERR"],["426","T_FIELD_LAPCOUNT"],["277","T_FIELD_INICHKSTATE"],["386","T_FIELD_ERR"],["486","T_FIELD_SDC"],["293","T_FIELD_INVRREADY"],["285","T_FIELD_INVLREADY"],["317","T_FIELD_R2DPROGRESS"],["301","T_FIELD_ACTIVEMISSION"],["261","T_FIELD_ASSTATE"],["333","T_FIELD_TSSTATE"],["175","T_NUMBERWILDCARD"],["175","T_DEFAULTWILDCARD_CENTERED"],["175","T_DEFAULTWILDCARD_RIGHTALIGNED"],["474","T_FIELD_TSCURRENT"],["461","T_FIELD_MINCELLVOLT"],["404","T_FIELD_SPEED"],["177","T_INSPECTION_HUGE"],["252","T_EBS_HUGE"],["199","T_TRACKDRIVE_HUGE"],["220","T_AUTOX_HUGE"],["325","T_SKIDPAD_HUGE"],["146","T_ACCEL_HUGE"],["35","T_INVALID_HUGE"],["116","T_MANUAL"],["177","T_INSPECTION"],["252","T_EBS"],["199","T_TRACKDRIVE"],["220","T_AUTOX"],["325","T_SKIDPAD"],["146","T_ACCEL"],["172","T___SINGLEUSE_C17G"],["362","T___SINGLEUSE_XFW7"],["368","T___SINGLEUSE_N50J"],["466","T___SINGLEUSE_V38H"],["436","T___SINGLEUSE_XC1X"],["243","T___SINGLEUSE_KI1B"],["159","T___SINGLEUSE_QNHI"],["0","T___SINGLEUSE_43KA"],["374","T___SINGLEUSE_YRU7"],["421","T___SINGLEUSE_E6D7"],["175","T___SINGLEUSE_ZEKA"],["131","T___SINGLEUSE_0L75"],["100","T___SINGLEUSE_GA13"],["175","T___SINGLEUSE_THUG"],["175","T___SINGLEUSE_CO7A"],["175","T___SINGLEUSE_A0LF"],["175","T___SINGLEUSE_166C"],["84","T___SINGLEUSE_OOU3"],["68","T___SINGLEUSE_2FPP"],["175","T___SINGLEUSE_2S21"],["175","T___SINGLEUSE_OQ6P"],["309","T___SINGLEUSE_590R"],["269","T___SINGLEUSE_Z78U"],["175","T___SINGLEUSE_LLOZ"],["175","T___SINGLEUSE_232C"],["398","T___SINGLEUSE_JFR7"],["380","T___SINGLEUSE_3MDX"],["17","T___SINGLEUSE_F9I5"],["175","T___SINGLEUSE_9L8R"],["17","T___SINGLEUSE_1NKF"],["175","T___SINGLEUSE_J5UH"],["478","T___SINGLEUSE_NGUK"],["175","T___SINGLEUSE_4E84"],["175","T___SINGLEUSE_YTAB"],["188","T___SINGLEUSE_RWCE"],["230","T___SINGLEUSE_HMH2"],["240","T___SINGLEUSE_PHFD"],["341","T___SINGLEUSE_H6UX"],["175","T___SINGLEUSE_20H3"],["52","T___SINGLEUSE_M5X7"],["18","T___SINGLEUSE_6GPV"]]}
{"remap":"yes","language":"GB","language_index":0,"copy_translations":"no","indices":[["410","T_SHUNT"],["175","T_STATUSWILDCARD"],["509","T_DB"],["427","T_FTCU"],["505","T_SNR"],["501","T_SNF"],["512","T_LV"],["376","T_PDU"],["493","T_SCS"],["497","T_SDC"],["489","T_R2D"],["486","T_TS"],["481","T_INV"],["364","T_AMS"],["210","T_ERROR_AMS"],["175","T_DEBUGVIEWFIELD_TITLE"],["175","T_DRIVERVIEWFIELD_TITLE"],["175","T_NUMBERSMALLWILDCARD"],["422","T_FIELD_BBAL"],["355","T_FIELD_TSVOLTVEH"],["348","T_FIELD_TSVOLTBAT"],["392","T_FIELD_LVSOC"],["416","T_FIELD_TSSOC"],["442","T_FIELD_MAXCELLTEMP"],["452","T_FIELD_TIREFL"],["457","T_FIELD_TIREFR"],["462","T_FIELD_TIRERL"],["467","T_FIELD_TIRERR"],["437","T_FIELD_LAPCOUNT"],["277","T_FIELD_INICHKSTATE"],["386","T_FIELD_ERR"],["497","T_FIELD_SDC"],["293","T_FIELD_INVRREADY"],["285","T_FIELD_INVLREADY"],["317","T_FIELD_R2DPROGRESS"],["301","T_FIELD_ACTIVEMISSION"],["261","T_FIELD_ASSTATE"],["333","T_FIELD_TSSTATE"],["175","T_NUMBERWILDCARD"],["175","T_DEFAULTWILDCARD_CENTERED"],["175","T_DEFAULTWILDCARD_RIGHTALIGNED"],["485","T_FIELD_TSCURRENT"],["472","T_FIELD_MINCELLVOLT"],["404","T_FIELD_SPEED"],["177","T_INSPECTION_HUGE"],["252","T_EBS_HUGE"],["199","T_TRACKDRIVE_HUGE"],["220","T_AUTOX_HUGE"],["325","T_SKIDPAD_HUGE"],["146","T_ACCEL_HUGE"],["35","T_INVALID_HUGE"],["116","T_MANUAL"],["177","T_INSPECTION"],["252","T_EBS"],["199","T_TRACKDRIVE"],["220","T_AUTOX"],["325","T_SKIDPAD"],["146","T_ACCEL"],["341","T___SINGLEUSE_HTV5"],["175","T___SINGLEUSE_N52Q"],["175","T___SINGLEUSE_SCTC"],["175","T___SINGLEUSE_OEMA"],["175","T___SINGLEUSE_VKTM"],["175","T___SINGLEUSE_Z106"],["175","T___SINGLEUSE_YZ9T"],["175","T___SINGLEUSE_SNQD"],["172","T___SINGLEUSE_C17G"],["362","T___SINGLEUSE_XFW7"],["368","T___SINGLEUSE_N50J"],["477","T___SINGLEUSE_V38H"],["447","T___SINGLEUSE_XC1X"],["243","T___SINGLEUSE_KI1B"],["159","T___SINGLEUSE_QNHI"],["0","T___SINGLEUSE_43KA"],["374","T___SINGLEUSE_YRU7"],["432","T___SINGLEUSE_E6D7"],["175","T___SINGLEUSE_ZEKA"],["131","T___SINGLEUSE_0L75"],["100","T___SINGLEUSE_GA13"],["175","T___SINGLEUSE_THUG"],["175","T___SINGLEUSE_CO7A"],["175","T___SINGLEUSE_A0LF"],["175","T___SINGLEUSE_166C"],["84","T___SINGLEUSE_OOU3"],["68","T___SINGLEUSE_2FPP"],["175","T___SINGLEUSE_2S21"],["175","T___SINGLEUSE_OQ6P"],["309","T___SINGLEUSE_590R"],["269","T___SINGLEUSE_Z78U"],["175","T___SINGLEUSE_LLOZ"],["175","T___SINGLEUSE_232C"],["398","T___SINGLEUSE_JFR7"],["380","T___SINGLEUSE_3MDX"],["175","T___SINGLEUSE_F9I5"],["175","T___SINGLEUSE_9L8R"],["17","T___SINGLEUSE_1NKF"],["175","T___SINGLEUSE_J5UH"],["489","T___SINGLEUSE_NGUK"],["175","T___SINGLEUSE_4E84"],["175","T___SINGLEUSE_YTAB"],["188","T___SINGLEUSE_RWCE"],["230","T___SINGLEUSE_HMH2"],["240","T___SINGLEUSE_PHFD"],["341","T___SINGLEUSE_H6UX"],["175","T___SINGLEUSE_20H3"],["52","T___SINGLEUSE_M5X7"],["18","T___SINGLEUSE_6GPV"]]}

View File

@ -1 +1 @@
{"languages":["GB"],"textids":["T_LV","T_PDU","T_SCS","T_SDC","T_R2D","T_TS","T_INV","T_AMS","T_ERROR_AMS","T_DEBUGVIEWFIELD_TITLE","T_DRIVERVIEWFIELD_TITLE","T_NUMBERSMALLWILDCARD","T_FIELD_BBAL","T_FIELD_TSVOLTVEH","T_FIELD_TSVOLTBAT","T_FIELD_LVSOC","T_FIELD_TSSOC","T_FIELD_MAXCELLTEMP","T_FIELD_TIREFL","T_FIELD_TIREFR","T_FIELD_TIRERL","T_FIELD_TIRERR","T_FIELD_LAPCOUNT","T_FIELD_INICHKSTATE","T_FIELD_ERR","T_FIELD_SDC","T_FIELD_INVRREADY","T_FIELD_INVLREADY","T_FIELD_R2DPROGRESS","T_FIELD_ACTIVEMISSION","T_FIELD_ASSTATE","T_FIELD_TSSTATE","T_NUMBERWILDCARD","T_DEFAULTWILDCARD_CENTERED","T_DEFAULTWILDCARD_RIGHTALIGNED","T_FIELD_TSCURRENT","T_FIELD_MINCELLVOLT","T_FIELD_SPEED","T_INSPECTION_HUGE","T_EBS_HUGE","T_TRACKDRIVE_HUGE","T_AUTOX_HUGE","T_SKIDPAD_HUGE","T_ACCEL_HUGE","T_INVALID_HUGE","T_MANUAL","T_INSPECTION","T_EBS","T_TRACKDRIVE","T_AUTOX","T_SKIDPAD","T_ACCEL","T___SINGLEUSE_C17G","T___SINGLEUSE_XFW7","T___SINGLEUSE_N50J","T___SINGLEUSE_V38H","T___SINGLEUSE_XC1X","T___SINGLEUSE_KI1B","T___SINGLEUSE_QNHI","T___SINGLEUSE_43KA","T___SINGLEUSE_YRU7","T___SINGLEUSE_E6D7","T___SINGLEUSE_ZEKA","T___SINGLEUSE_0L75","T___SINGLEUSE_GA13","T___SINGLEUSE_THUG","T___SINGLEUSE_CO7A","T___SINGLEUSE_A0LF","T___SINGLEUSE_166C","T___SINGLEUSE_OOU3","T___SINGLEUSE_2FPP","T___SINGLEUSE_2S21","T___SINGLEUSE_OQ6P","T___SINGLEUSE_590R","T___SINGLEUSE_Z78U","T___SINGLEUSE_LLOZ","T___SINGLEUSE_232C","T___SINGLEUSE_JFR7","T___SINGLEUSE_3MDX","T___SINGLEUSE_F9I5","T___SINGLEUSE_9L8R","T___SINGLEUSE_1NKF","T___SINGLEUSE_J5UH","T___SINGLEUSE_NGUK","T___SINGLEUSE_4E84","T___SINGLEUSE_YTAB","T___SINGLEUSE_RWCE","T___SINGLEUSE_HMH2","T___SINGLEUSE_PHFD","T___SINGLEUSE_H6UX","T___SINGLEUSE_20H3","T___SINGLEUSE_M5X7","T___SINGLEUSE_6GPV"]}
{"languages":["GB"],"textids":["T_SHUNT","T_STATUSWILDCARD","T_DB","T_FTCU","T_SNR","T_SNF","T_LV","T_PDU","T_SCS","T_SDC","T_R2D","T_TS","T_INV","T_AMS","T_ERROR_AMS","T_DEBUGVIEWFIELD_TITLE","T_DRIVERVIEWFIELD_TITLE","T_NUMBERSMALLWILDCARD","T_FIELD_BBAL","T_FIELD_TSVOLTVEH","T_FIELD_TSVOLTBAT","T_FIELD_LVSOC","T_FIELD_TSSOC","T_FIELD_MAXCELLTEMP","T_FIELD_TIREFL","T_FIELD_TIREFR","T_FIELD_TIRERL","T_FIELD_TIRERR","T_FIELD_LAPCOUNT","T_FIELD_INICHKSTATE","T_FIELD_ERR","T_FIELD_SDC","T_FIELD_INVRREADY","T_FIELD_INVLREADY","T_FIELD_R2DPROGRESS","T_FIELD_ACTIVEMISSION","T_FIELD_ASSTATE","T_FIELD_TSSTATE","T_NUMBERWILDCARD","T_DEFAULTWILDCARD_CENTERED","T_DEFAULTWILDCARD_RIGHTALIGNED","T_FIELD_TSCURRENT","T_FIELD_MINCELLVOLT","T_FIELD_SPEED","T_INSPECTION_HUGE","T_EBS_HUGE","T_TRACKDRIVE_HUGE","T_AUTOX_HUGE","T_SKIDPAD_HUGE","T_ACCEL_HUGE","T_INVALID_HUGE","T_MANUAL","T_INSPECTION","T_EBS","T_TRACKDRIVE","T_AUTOX","T_SKIDPAD","T_ACCEL","T___SINGLEUSE_HTV5","T___SINGLEUSE_N52Q","T___SINGLEUSE_SCTC","T___SINGLEUSE_OEMA","T___SINGLEUSE_VKTM","T___SINGLEUSE_Z106","T___SINGLEUSE_YZ9T","T___SINGLEUSE_SNQD","T___SINGLEUSE_C17G","T___SINGLEUSE_XFW7","T___SINGLEUSE_N50J","T___SINGLEUSE_V38H","T___SINGLEUSE_XC1X","T___SINGLEUSE_KI1B","T___SINGLEUSE_QNHI","T___SINGLEUSE_43KA","T___SINGLEUSE_YRU7","T___SINGLEUSE_E6D7","T___SINGLEUSE_ZEKA","T___SINGLEUSE_0L75","T___SINGLEUSE_GA13","T___SINGLEUSE_THUG","T___SINGLEUSE_CO7A","T___SINGLEUSE_A0LF","T___SINGLEUSE_166C","T___SINGLEUSE_OOU3","T___SINGLEUSE_2FPP","T___SINGLEUSE_2S21","T___SINGLEUSE_OQ6P","T___SINGLEUSE_590R","T___SINGLEUSE_Z78U","T___SINGLEUSE_LLOZ","T___SINGLEUSE_232C","T___SINGLEUSE_JFR7","T___SINGLEUSE_3MDX","T___SINGLEUSE_F9I5","T___SINGLEUSE_9L8R","T___SINGLEUSE_1NKF","T___SINGLEUSE_J5UH","T___SINGLEUSE_NGUK","T___SINGLEUSE_4E84","T___SINGLEUSE_YTAB","T___SINGLEUSE_RWCE","T___SINGLEUSE_HMH2","T___SINGLEUSE_PHFD","T___SINGLEUSE_H6UX","T___SINGLEUSE_20H3","T___SINGLEUSE_M5X7","T___SINGLEUSE_6GPV"]}

View File

@ -1 +1 @@
{"remap":"yes","languages":["Gb"],"characters":[68,65,83,72,10,66,79,84,83,10,73,78,69,82,84,73,65,0,67,104,111,111,115,101,32,97,32,109,105,115,115,105,111,110,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,33,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,0,80,114,101,115,115,117,114,101,32,65,99,99,32,49,58,0,80,114,101,115,115,117,114,101,32,65,99,99,32,50,58,0,80,114,101,115,115,117,114,101,32,70,114,111,110,116,58,0,77,97,110,117,97,108,32,68,114,105,118,105,110,103,0,80,114,101,115,115,117,114,101,32,82,101,97,114,58,0,65,99,99,101,108,101,114,97,116,105,111,110,0,83,68,66,10,82,69,83,10,83,68,67,76,0,65,83,32,2,0,73,110,115,112,101,99,116,105,111,110,0,80,65,82,65,77,69,84,69,82,83,0,84,114,97,99,107,100,114,105,118,101,0,65,77,83,32,69,114,114,79,114,0,65,117,116,111,99,114,111,115,115,0,80,82,69,67,72,65,82,71,69,0,2,37,0,66,83,80,68,10,72,86,68,0,69,66,83,32,84,101,115,116,0,65,83,83,84,65,84,69,0,68,83,80,69,69,68,58,0,73,67,83,84,65,84,69,0,73,78,86,76,82,68,89,0,73,78,86,82,82,68,89,0,77,73,83,83,73,79,78,0,77,83,80,69,69,68,58,0,82,50,68,80,82,79,71,0,83,107,105,100,112,97,100,0,84,83,83,84,65,84,69,0,66,82,65,75,69,83,0,84,83,86,66,65,84,0,84,83,86,86,69,72,0,10,10,65,77,83,0,10,10,73,77,68,0,10,10,80,68,85,0,68,65,78,71,58,0,69,82,82,79,82,0,76,86,83,79,67,0,77,65,78,71,58,0,83,80,69,69,68,0,84,83,83,79,67,0,66,66,65,76,0,73,78,73,84,0,76,65,80,83,0,84,77,65,88,0,84,83,77,83,0,84,84,70,76,0,84,84,70,82,0,84,84,82,76,0,84,84,82,82,0,86,77,73,78,0,65,67,67,0,73,78,86,0,73,84,83,0,82,50,68,0,83,67,83,0,83,68,67,0,76,86,0],"copy_translations_to_ram":"no"}
{"remap":"yes","languages":["Gb"],"characters":[68,65,83,72,10,66,79,84,83,10,73,78,69,82,84,73,65,0,67,104,111,111,115,101,32,97,32,109,105,115,115,105,111,110,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,33,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,0,80,114,101,115,115,117,114,101,32,65,99,99,32,49,58,0,80,114,101,115,115,117,114,101,32,65,99,99,32,50,58,0,80,114,101,115,115,117,114,101,32,70,114,111,110,116,58,0,77,97,110,117,97,108,32,68,114,105,118,105,110,103,0,80,114,101,115,115,117,114,101,32,82,101,97,114,58,0,65,99,99,101,108,101,114,97,116,105,111,110,0,83,68,66,10,82,69,83,10,83,68,67,76,0,65,83,32,2,0,73,110,115,112,101,99,116,105,111,110,0,80,65,82,65,77,69,84,69,82,83,0,84,114,97,99,107,100,114,105,118,101,0,65,77,83,32,69,114,114,79,114,0,65,117,116,111,99,114,111,115,115,0,80,82,69,67,72,65,82,71,69,0,2,37,0,66,83,80,68,10,72,86,68,0,69,66,83,32,84,101,115,116,0,65,83,83,84,65,84,69,0,68,83,80,69,69,68,58,0,73,67,83,84,65,84,69,0,73,78,86,76,82,68,89,0,73,78,86,82,82,68,89,0,77,73,83,83,73,79,78,0,77,83,80,69,69,68,58,0,82,50,68,80,82,79,71,0,83,107,105,100,112,97,100,0,84,83,83,84,65,84,69,0,66,82,65,75,69,83,0,84,83,86,66,65,84,0,84,83,86,86,69,72,0,10,10,65,77,83,0,10,10,73,77,68,0,10,10,80,68,85,0,68,65,78,71,58,0,69,82,82,79,82,0,76,86,83,79,67,0,77,65,78,71,58,0,83,80,69,69,68,0,83,104,117,110,116,0,84,83,83,79,67,0,66,66,65,76,0,70,84,67,85,0,73,78,73,84,0,76,65,80,83,0,84,77,65,88,0,84,83,77,83,0,84,84,70,76,0,84,84,70,82,0,84,84,82,76,0,84,84,82,82,0,86,77,73,78,0,65,67,67,0,73,78,86,0,73,84,83,0,82,50,68,0,83,67,83,0,83,68,67,0,83,78,70,0,83,78,82,0,68,66,0,76,86,0],"copy_translations_to_ram":"no"}

View File

@ -1 +1 @@
{"databases":{"GB":[[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[3,"CENTER","LTR"],[5,"LEFT","LTR"],[2,"CENTER","LTR"],[6,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[1,"LEFT","LTR"],[1,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[5,"CENTER","LTR"],[0,"LEFT","LTR"],[3,"CENTER","LTR"],[1,"RIGHT","LTR"],[1,"LEFT","LTR"],[4,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]],"DEFAULT":[[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[3,"CENTER","LTR"],[5,"LEFT","LTR"],[2,"CENTER","LTR"],[6,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[1,"LEFT","LTR"],[1,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[5,"CENTER","LTR"],[0,"LEFT","LTR"],[3,"CENTER","LTR"],[1,"RIGHT","LTR"],[1,"LEFT","LTR"],[4,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]]},"database_list":["GB"],"fonts":{"getFont_inter_20_4bpp":0,"getFont_CHINN____30_4bpp":1,"getFont_CHINN____20_4bpp":2,"getFont_CHINN____40_4bpp":3,"getFont_intersb_50_4bpp":4,"getFont_interb_20_4bpp":5,"getFont_inter_33_4bpp":6},"generate_font_format":"0","copy_translations_to_ram":"no"}
{"databases":{"GB":[[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[3,"CENTER","LTR"],[5,"LEFT","LTR"],[2,"CENTER","LTR"],[6,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[5,"LEFT","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[1,"LEFT","LTR"],[1,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[5,"CENTER","LTR"],[0,"LEFT","LTR"],[3,"CENTER","LTR"],[1,"RIGHT","LTR"],[1,"LEFT","LTR"],[4,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]],"DEFAULT":[[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[3,"CENTER","LTR"],[5,"LEFT","LTR"],[2,"CENTER","LTR"],[6,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[5,"LEFT","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[5,"CENTER","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[1,"LEFT","LTR"],[1,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[0,"RIGHT","LTR"],[0,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[5,"CENTER","LTR"],[0,"LEFT","LTR"],[3,"CENTER","LTR"],[1,"RIGHT","LTR"],[1,"LEFT","LTR"],[4,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]]},"database_list":["GB"],"fonts":{"getFont_inter_20_4bpp":0,"getFont_CHINN____30_4bpp":1,"getFont_CHINN____20_4bpp":2,"getFont_CHINN____40_4bpp":3,"getFont_intersb_50_4bpp":4,"getFont_interb_20_4bpp":5,"getFont_inter_33_4bpp":6},"generate_font_format":"0","copy_translations_to_ram":"no"}

View File

@ -12,6 +12,12 @@ enum LANGUAGES
enum TEXTS
{
T_SHUNT,
T_STATUSWILDCARD,
T_DB,
T_FTCU,
T_SNR,
T_SNF,
T_LV,
T_PDU,
T_SCS,
@ -64,6 +70,14 @@ enum TEXTS
T_AUTOX,
T_SKIDPAD,
T_ACCEL,
T___SINGLEUSE_HTV5,
T___SINGLEUSE_N52Q,
T___SINGLEUSE_SCTC,
T___SINGLEUSE_OEMA,
T___SINGLEUSE_VKTM,
T___SINGLEUSE_Z106,
T___SINGLEUSE_YZ9T,
T___SINGLEUSE_SNQD,
T___SINGLEUSE_C17G,
T___SINGLEUSE_XFW7,
T___SINGLEUSE_N50J,

View File

@ -10,32 +10,38 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE;
// Remap all strings
TEXT_LOCATION_FLASH_PRAGMA
KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
490, // T_LV: "LV"
410, // T_SHUNT: "Shunt"
175, // T_STATUSWILDCARD: "<>"
509, // T_DB: "DB"
427, // T_FTCU: "FTCU"
505, // T_SNR: "SNR"
501, // T_SNF: "SNF"
512, // T_LV: "LV"
376, // T_PDU: "PDU"
482, // T_SCS: "SCS"
486, // T_SDC: "SDC"
478, // T_R2D: "R2D"
475, // T_TS: "TS"
470, // T_INV: "INV"
493, // T_SCS: "SCS"
497, // T_SDC: "SDC"
489, // T_R2D: "R2D"
486, // T_TS: "TS"
481, // T_INV: "INV"
364, // T_AMS: "AMS"
210, // T_ERROR_AMS: "AMS ErrOr"
175, // T_DEBUGVIEWFIELD_TITLE: "<>"
175, // T_DRIVERVIEWFIELD_TITLE: "<>"
175, // T_NUMBERSMALLWILDCARD: "<>"
416, // T_FIELD_BBAL: "BBAL"
422, // T_FIELD_BBAL: "BBAL"
355, // T_FIELD_TSVOLTVEH: "TSVVEH"
348, // T_FIELD_TSVOLTBAT: "TSVBAT"
392, // T_FIELD_LVSOC: "LVSOC"
410, // T_FIELD_TSSOC: "TSSOC"
431, // T_FIELD_MAXCELLTEMP: "TMAX"
441, // T_FIELD_TIREFL: "TTFL"
446, // T_FIELD_TIREFR: "TTFR"
451, // T_FIELD_TIRERL: "TTRL"
456, // T_FIELD_TIRERR: "TTRR"
426, // T_FIELD_LAPCOUNT: "LAPS"
416, // T_FIELD_TSSOC: "TSSOC"
442, // T_FIELD_MAXCELLTEMP: "TMAX"
452, // T_FIELD_TIREFL: "TTFL"
457, // T_FIELD_TIREFR: "TTFR"
462, // T_FIELD_TIRERL: "TTRL"
467, // T_FIELD_TIRERR: "TTRR"
437, // T_FIELD_LAPCOUNT: "LAPS"
277, // T_FIELD_INICHKSTATE: "ICSTATE"
386, // T_FIELD_ERR: "ERROR"
486, // T_FIELD_SDC: "SDC"
497, // T_FIELD_SDC: "SDC"
293, // T_FIELD_INVRREADY: "INVRRDY"
285, // T_FIELD_INVLREADY: "INVLRDY"
317, // T_FIELD_R2DPROGRESS: "R2DPROG"
@ -45,8 +51,8 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
175, // T_NUMBERWILDCARD: "<>"
175, // T_DEFAULTWILDCARD_CENTERED: "<>"
175, // T_DEFAULTWILDCARD_RIGHTALIGNED: "<>"
474, // T_FIELD_TSCURRENT: "ITS"
461, // T_FIELD_MINCELLVOLT: "VMIN"
485, // T_FIELD_TSCURRENT: "ITS"
472, // T_FIELD_MINCELLVOLT: "VMIN"
404, // T_FIELD_SPEED: "SPEED"
177, // T_INSPECTION_HUGE: "Inspection"
252, // T_EBS_HUGE: "EBS Test"
@ -62,16 +68,24 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
220, // T_AUTOX: "Autocross"
325, // T_SKIDPAD: "Skidpad"
146, // T_ACCEL: "Acceleration"
341, // T___SINGLEUSE_HTV5: "BRAKES"
175, // T___SINGLEUSE_N52Q: "<>"
175, // T___SINGLEUSE_SCTC: "<>"
175, // T___SINGLEUSE_OEMA: "<>"
175, // T___SINGLEUSE_VKTM: "<>"
175, // T___SINGLEUSE_Z106: "<>"
175, // T___SINGLEUSE_YZ9T: "<>"
175, // T___SINGLEUSE_SNQD: "<>"
172, // T___SINGLEUSE_C17G: "AS <>"
362, // T___SINGLEUSE_XFW7: "\n\nAMS"
368, // T___SINGLEUSE_N50J: "\n\nIMD"
466, // T___SINGLEUSE_V38H: "ACC"
436, // T___SINGLEUSE_XC1X: "TSMS"
477, // T___SINGLEUSE_V38H: "ACC"
447, // T___SINGLEUSE_XC1X: "TSMS"
243, // T___SINGLEUSE_KI1B: "BSPD\nHVD"
159, // T___SINGLEUSE_QNHI: "SDB\nRES\nSDCL"
0, // T___SINGLEUSE_43KA: "DASH\nBOTS\nINERTIA"
374, // T___SINGLEUSE_YRU7: "\n\nPDU"
421, // T___SINGLEUSE_E6D7: "INIT"
432, // T___SINGLEUSE_E6D7: "INIT"
175, // T___SINGLEUSE_ZEKA: "<>"
131, // T___SINGLEUSE_0L75: "Pressure Rear:"
100, // T___SINGLEUSE_GA13: "Pressure Front:"
@ -79,8 +93,8 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
175, // T___SINGLEUSE_CO7A: "<>"
175, // T___SINGLEUSE_A0LF: "<>"
175, // T___SINGLEUSE_166C: "<>"
84, // T___SINGLEUSE_OOU3: "Pressure Acc B:"
68, // T___SINGLEUSE_2FPP: "Pressure Acc A:"
84, // T___SINGLEUSE_OOU3: "Pressure Acc 2:"
68, // T___SINGLEUSE_2FPP: "Pressure Acc 1:"
175, // T___SINGLEUSE_2S21: "<>"
175, // T___SINGLEUSE_OQ6P: "<>"
309, // T___SINGLEUSE_590R: "MSPEED:"
@ -89,11 +103,11 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
175, // T___SINGLEUSE_232C: "<>"
398, // T___SINGLEUSE_JFR7: "MANG:"
380, // T___SINGLEUSE_3MDX: "DANG:"
17, // T___SINGLEUSE_F9I5: ""
175, // T___SINGLEUSE_F9I5: "<>"
175, // T___SINGLEUSE_9L8R: "<>"
17, // T___SINGLEUSE_1NKF: ""
175, // T___SINGLEUSE_J5UH: "<>"
478, // T___SINGLEUSE_NGUK: "R2D"
489, // T___SINGLEUSE_NGUK: "R2D"
175, // T___SINGLEUSE_4E84: "<>"
175, // T___SINGLEUSE_YTAB: "<>"
188, // T___SINGLEUSE_RWCE: "PARAMETERS"

View File

@ -102,24 +102,29 @@ KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCA
0x4c, 0x56, 0x53, 0x4f, 0x43, 0x0, // @392 "LVSOC"
0x4d, 0x41, 0x4e, 0x47, 0x3a, 0x0, // @398 "MANG:"
0x53, 0x50, 0x45, 0x45, 0x44, 0x0, // @404 "SPEED"
0x54, 0x53, 0x53, 0x4f, 0x43, 0x0, // @410 "TSSOC"
0x42, 0x42, 0x41, 0x4c, 0x0, // @416 "BBAL"
0x49, 0x4e, 0x49, 0x54, 0x0, // @421 "INIT"
0x4c, 0x41, 0x50, 0x53, 0x0, // @426 "LAPS"
0x54, 0x4d, 0x41, 0x58, 0x0, // @431 "TMAX"
0x54, 0x53, 0x4d, 0x53, 0x0, // @436 "TSMS"
0x54, 0x54, 0x46, 0x4c, 0x0, // @441 "TTFL"
0x54, 0x54, 0x46, 0x52, 0x0, // @446 "TTFR"
0x54, 0x54, 0x52, 0x4c, 0x0, // @451 "TTRL"
0x54, 0x54, 0x52, 0x52, 0x0, // @456 "TTRR"
0x56, 0x4d, 0x49, 0x4e, 0x0, // @461 "VMIN"
0x41, 0x43, 0x43, 0x0, // @466 "ACC"
0x49, 0x4e, 0x56, 0x0, // @470 "INV"
0x49, 0x54, 0x53, 0x0, // @474 "ITS"
0x52, 0x32, 0x44, 0x0, // @478 "R2D"
0x53, 0x43, 0x53, 0x0, // @482 "SCS"
0x53, 0x44, 0x43, 0x0, // @486 "SDC"
0x4c, 0x56, 0x0 // @490 "LV"
0x53, 0x68, 0x75, 0x6e, 0x74, 0x0, // @410 "Shunt"
0x54, 0x53, 0x53, 0x4f, 0x43, 0x0, // @416 "TSSOC"
0x42, 0x42, 0x41, 0x4c, 0x0, // @422 "BBAL"
0x46, 0x54, 0x43, 0x55, 0x0, // @427 "FTCU"
0x49, 0x4e, 0x49, 0x54, 0x0, // @432 "INIT"
0x4c, 0x41, 0x50, 0x53, 0x0, // @437 "LAPS"
0x54, 0x4d, 0x41, 0x58, 0x0, // @442 "TMAX"
0x54, 0x53, 0x4d, 0x53, 0x0, // @447 "TSMS"
0x54, 0x54, 0x46, 0x4c, 0x0, // @452 "TTFL"
0x54, 0x54, 0x46, 0x52, 0x0, // @457 "TTFR"
0x54, 0x54, 0x52, 0x4c, 0x0, // @462 "TTRL"
0x54, 0x54, 0x52, 0x52, 0x0, // @467 "TTRR"
0x56, 0x4d, 0x49, 0x4e, 0x0, // @472 "VMIN"
0x41, 0x43, 0x43, 0x0, // @477 "ACC"
0x49, 0x4e, 0x56, 0x0, // @481 "INV"
0x49, 0x54, 0x53, 0x0, // @485 "ITS"
0x52, 0x32, 0x44, 0x0, // @489 "R2D"
0x53, 0x43, 0x53, 0x0, // @493 "SCS"
0x53, 0x44, 0x43, 0x0, // @497 "SDC"
0x53, 0x4e, 0x46, 0x0, // @501 "SNF"
0x53, 0x4e, 0x52, 0x0, // @505 "SNR"
0x44, 0x42, 0x0, // @509 "DB"
0x4c, 0x56, 0x0 // @512 "LV"
};
TEXT_LOCATION_FLASH_PRAGMA

View File

@ -36,6 +36,12 @@ const touchgfx::TypedText::TypedTextData typedText_database_GB[] TEXT_LOCATION_F
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 3, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
@ -80,6 +86,14 @@ const touchgfx::TypedText::TypedTextData typedText_database_GB[] TEXT_LOCATION_F
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
@ -132,6 +146,12 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 3, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
@ -176,6 +196,14 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },

View File

@ -5,7 +5,22 @@
#include "touchgfx/hal/Types.hpp"
#include <gui_generated/containers/DriverViewStatusItemBase.hpp>
enum class DriverViewStatusType { TS_R2D, AMS, SDC, SCS, PDU, INV, LV };
enum class DriverViewStatusType {
TS_R2D,
AMS,
SDC,
SCS,
PDU,
INV,
LV,
SNF,
DB,
FTCU,
SNR,
Shunt,
BPR,
BPF,
};
class DriverViewStatusItem : public DriverViewStatusItemBase {
public:
@ -18,20 +33,17 @@ public:
void update();
static inline colortype COLOR_OFF =
touchgfx::Color::getColorFromRGB(0x00, 0x00, 0x00);
static inline colortype COLOR_OK =
touchgfx::Color::getColorFromRGB(0x0D, 0xBF, 0x00);
static inline colortype COLOR_WARNING =
touchgfx::Color::getColorFromRGB(0xEB, 0xC4, 0x00);
static inline colortype COLOR_ERROR =
touchgfx::Color::getColorFromRGB(0xC5, 0x0E, 0x1F);
static inline colortype COLOR_TS =
touchgfx::Color::getColorFromRGB(0xEB, 0x7D, 0x00);
static inline colortype COLOR_OFF = touchgfx::Color::getColorFromRGB(0x00, 0x00, 0x00); // #000000
static inline colortype COLOR_OK = touchgfx::Color::getColorFromRGB(0x0D, 0xBF, 0x00); // #0DBF00
static inline colortype COLOR_WARNING = touchgfx::Color::getColorFromRGB(0xEB, 0xC4, 0x00); // #EBC400
static inline colortype COLOR_ERROR = touchgfx::Color::getColorFromRGB(0xC5, 0x0E, 0x1F); // #C50E1F
static inline colortype COLOR_TS = touchgfx::Color::getColorFromRGB(0xEB, 0x7D, 0x00); // #EB7D00
static inline colortype COLOR_BLUE = touchgfx::Color::getColorFromRGB(0x00, 0x8F, 0xEE); // #008FEE
protected:
private:
DriverViewStatusType type;
touchgfx::Unicode::UnicodeChar valueBuffer[16];
};
#endif // DRIVERVIEWSTATUSITEM_HPP

View File

@ -0,0 +1,38 @@
#ifndef SYSTEMOVERVIEWPRESENTER_HPP
#define SYSTEMOVERVIEWPRESENTER_HPP
#include <gui/model/ModelListener.hpp>
#include <mvp/Presenter.hpp>
using namespace touchgfx;
class SystemOverviewView;
class SystemOverviewPresenter : public touchgfx::Presenter, public ModelListener {
public:
SystemOverviewPresenter(SystemOverviewView &v);
/**
* The activate function is called automatically when this screen is "switched in"
* (ie. made active). Initialization logic can be placed here.
*/
virtual void activate();
/**
* The deactivate function is called automatically when this screen is "switched out"
* (ie. made inactive). Teardown functionality can be placed here.
*/
virtual void deactivate();
virtual ~SystemOverviewPresenter() {}
void vehicleStateUpdated() override;
void nextScreen() override;
private:
SystemOverviewPresenter();
SystemOverviewView &view;
};
#endif // SYSTEMOVERVIEWPRESENTER_HPP

View File

@ -0,0 +1,19 @@
#ifndef SYSTEMOVERVIEWVIEW_HPP
#define SYSTEMOVERVIEWVIEW_HPP
#include <gui/systemoverview_screen/SystemOverviewPresenter.hpp>
#include <gui_generated/systemoverview_screen/SystemOverviewViewBase.hpp>
class SystemOverviewView : public SystemOverviewViewBase {
public:
SystemOverviewView();
virtual ~SystemOverviewView() {}
virtual void setupScreen();
virtual void tearDownScreen();
void updateItems();
protected:
};
#endif // SYSTEMOVERVIEWVIEW_HPP

View File

@ -27,5 +27,5 @@ void AMIPresenter::vehicleStateUpdated() {
void AMIPresenter::nextScreen() {
FrontendApplication *app = static_cast<FrontendApplication *>(FrontendApplication::getInstance());
app->gotoSDCScreenNoTransition();
app->gotoVehicleConfigScreenNoTransition();
}

View File

@ -8,7 +8,13 @@ DriverViewStatusItem::DriverViewStatusItem() {}
void DriverViewStatusItem::initialize() { DriverViewStatusItemBase::initialize(); }
void DriverViewStatusItem::setType(DriverViewStatusType type) { this->type = type; }
void DriverViewStatusItem::setType(DriverViewStatusType type) { //
this->type = type;
if (type == DriverViewStatusType::LV || type == DriverViewStatusType::BPF || type == DriverViewStatusType::BPR) {
text.setTypedText(T_STATUSWILDCARD); // TODO rename wildcard typed text to more general name
}
}
void DriverViewStatusItem::update() {
switch (type) {
@ -27,22 +33,28 @@ void DriverViewStatusItem::update() {
bg.setColor(COLOR_TS);
}
break;
case DriverViewStatusType::AMS:
text.setTypedText(T_AMS);
bg.setColor(vehicle_state.ts_state == TS_ERROR ? COLOR_ERROR : COLOR_OK);
bg.setColor(vehicle_state.watchdog_timeout.ams ? 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);
// bg.setColor(vehicle_state.errors.err_pdu ? COLOR_ERROR : COLOR_OK);
bg.setColor(vehicle_state.watchdog_timeout.pdu ? COLOR_ERROR : COLOR_OK);
break;
case DriverViewStatusType::INV:
text.setTypedText(T_INV);
if (vehicle_state.errors.err_inv_1 || vehicle_state.errors.err_inv_2) {
@ -53,17 +65,61 @@ void DriverViewStatusItem::update() {
bg.setColor(COLOR_OFF);
}
break;
case DriverViewStatusType::LV:
text.setTypedText(T_LV);
// if (vehicle_state.soc_lv < 10) {
// bg.setColor(COLOR_ERROR);
// } else if (vehicle_state.soc_lv < 30) {
// bg.setColor(COLOR_WARNING);
// } else {
// bg.setColor(COLOR_OK);
// }
// TODO
bg.setColor(COLOR_OK);
Unicode::snprintf(valueBuffer, 8, "LV:%d%%", (int)(vehicle_state.lv_soc));
text.setWildcard(valueBuffer);
if (vehicle_state.lv_soc < 20) {
bg.setColor(COLOR_ERROR);
} else if (vehicle_state.lv_soc < 40) {
bg.setColor(COLOR_WARNING);
} else {
bg.setColor(COLOR_OK);
}
break;
case DriverViewStatusType::SNF:
text.setTypedText(T_SNF);
bg.setColor(vehicle_state.watchdog_timeout.snf ? COLOR_ERROR : COLOR_OK);
break;
case DriverViewStatusType::DB:
text.setTypedText(T_DB);
bg.setColor(vehicle_state.watchdog_timeout.db ? COLOR_ERROR : COLOR_OK);
break;
case DriverViewStatusType::FTCU:
text.setTypedText(T_FTCU);
bg.setColor(vehicle_state.watchdog_timeout.ftcu ? COLOR_ERROR : COLOR_OK);
break;
case DriverViewStatusType::SNR:
text.setTypedText(T_SNR);
bg.setColor(vehicle_state.watchdog_timeout.snr ? COLOR_ERROR : COLOR_OK);
break;
case DriverViewStatusType::Shunt:
text.setTypedText(T_SHUNT);
bg.setColor(vehicle_state.watchdog_timeout.shunt ? COLOR_ERROR : COLOR_OK);
break;
case DriverViewStatusType::BPF: {
float params[3] = {5.0, 1.0, vehicle_state.brake_pressure_f};
Unicode::snprintfFloats(valueBuffer, 10, "F:%*.*f", params);
text.setWildcard(valueBuffer);
bg.setColor(vehicle_state.brake_pressure_f >= 30 ? COLOR_BLUE : COLOR_OFF);
break;
}
case DriverViewStatusType::BPR: {
float params[3] = {5.0, 1.0, vehicle_state.brake_pressure_r};
Unicode::snprintfFloats(valueBuffer, 10, "R:%*.*f", params);
text.setWildcard(valueBuffer);
bg.setColor(vehicle_state.brake_pressure_r >= 30 ? COLOR_BLUE : COLOR_OFF);
break;
}
default:
break;
}
text.invalidate();

View File

@ -0,0 +1,16 @@
#include <gui/systemoverview_screen/SystemOverviewPresenter.hpp>
#include <gui/systemoverview_screen/SystemOverviewView.hpp>
SystemOverviewPresenter::SystemOverviewPresenter(SystemOverviewView &v) : view(v) {}
void SystemOverviewPresenter::activate() {}
void SystemOverviewPresenter::deactivate() {}
void SystemOverviewPresenter::vehicleStateUpdated() { //
view.updateItems();
}
void SystemOverviewPresenter::nextScreen() {
static_cast<FrontendApplication *>(Application::getInstance())->gotoSDCScreenNoTransition();
}

View File

@ -0,0 +1,42 @@
#include <gui/systemoverview_screen/SystemOverviewView.hpp>
SystemOverviewView::SystemOverviewView() {}
void SystemOverviewView::setupScreen() {
SystemOverviewViewBase::setupScreen();
statusTS_R2D.setType(DriverViewStatusType::TS_R2D);
statusAMS.setType(DriverViewStatusType::AMS);
statusSDC.setType(DriverViewStatusType::SDC);
statusSCS.setType(DriverViewStatusType::SCS);
statusPDU.setType(DriverViewStatusType::PDU);
statusINV.setType(DriverViewStatusType::INV);
statusLV.setType(DriverViewStatusType::LV);
statusDB.setType(DriverViewStatusType::DB);
statusFTCU.setType(DriverViewStatusType::FTCU);
statusSNF.setType(DriverViewStatusType::SNF);
statusSNR.setType(DriverViewStatusType::SNR);
statusShunt.setType(DriverViewStatusType::Shunt);
statusBPF.setType(DriverViewStatusType::BPF);
statusBPR.setType(DriverViewStatusType::BPR);
status1.setVisible(false);
status2.setVisible(false);
status3.setVisible(false);
status4.setVisible(false);
}
class StatusItemUpdateCallback : public touchgfx::GenericCallback<touchgfx::Drawable &> {
virtual void execute(Drawable &item) override {
DriverViewStatusItem &statusItem = static_cast<DriverViewStatusItem &>(item);
statusItem.update();
}
virtual bool isValid() const override { return true; }
};
void SystemOverviewView::updateItems() {
StatusItemUpdateCallback cb;
statusItems.forEachChild(&cb);
}
void SystemOverviewView::tearDownScreen() { SystemOverviewViewBase::tearDownScreen(); }

View File

@ -2,18 +2,14 @@
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
#include <gui/vehicleconfig_screen/VehicleConfigView.hpp>
VehicleConfigPresenter::VehicleConfigPresenter(VehicleConfigView &v)
: view(v) {}
VehicleConfigPresenter::VehicleConfigPresenter(VehicleConfigView &v) : view(v) {}
void VehicleConfigPresenter::activate() {}
void VehicleConfigPresenter::deactivate() {}
void VehicleConfigPresenter::nextScreen() {
static_cast<FrontendApplication *>(Application::getInstance())
->gotoSDCScreenNoTransition();
static_cast<FrontendApplication *>(Application::getInstance())->gotoSystemOverviewScreenNoTransition();
}
void VehicleConfigPresenter::paramConfirmed() {
view.abxParamConfirmed(vehicle_state.last_param_confirmed);
}
void VehicleConfigPresenter::paramConfirmed() { view.abxParamConfirmed(vehicle_state.last_param_confirmed); }

View File

@ -204,6 +204,18 @@
"ScreenTransitionType": "ScreenTransitionNone",
"ActionComponent": "SDC"
}
},
{
"InteractionName": "DummyChangeSystemOverviewView",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 79
},
"Action": {
"Type": "ActionGotoScreen",
"ScreenTransitionType": "ScreenTransitionNone",
"ActionComponent": "SystemOverview"
}
}
]
},
@ -1368,6 +1380,198 @@
}
],
"Interactions": []
},
{
"Name": "SystemOverview",
"Components": [
{
"Type": "Container",
"Name": "statusItems",
"Width": 480,
"Height": 320,
"Components": [
{
"Type": "CustomContainerInstance",
"Name": "statusTS_R2D",
"X": 12,
"Y": 280,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "status1",
"X": 77,
"Y": 280,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusSDC",
"X": 142,
"Y": 280,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusSCS",
"X": 207,
"Y": 280,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "status2",
"X": 272,
"Y": 280,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "status3",
"X": 337,
"Y": 280,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "status4",
"X": 402,
"Y": 280,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusINV",
"X": 337,
"Y": 218,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusAMS",
"X": 402,
"Y": 202,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusShunt",
"X": 402,
"Y": 234,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusLV",
"X": 337,
"Y": 185,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusSNR",
"X": 402,
"Y": 169,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusPDU",
"X": 402,
"Y": 136,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusFTCU",
"X": 337,
"Y": 120,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusDB",
"X": 337,
"Y": 87,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusSNF",
"X": 402,
"Y": 70,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusBPR",
"X": 12,
"Y": 63,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
},
{
"Type": "CustomContainerInstance",
"Name": "statusBPF",
"X": 12,
"Y": 30,
"Width": 65,
"Height": 33,
"CustomContainerDefinitionName": "DriverViewStatusItem"
}
]
},
{
"Type": "TextArea",
"Name": "textArea1",
"X": 12,
"Y": 5,
"Width": 80,
"Height": 25,
"TextId": "__SingleUse_HTV5",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"AutoSize": true
}
],
"Interactions": []
}
],
"CustomContainerDefinitions": [
@ -1845,7 +2049,8 @@
"Red": 255,
"Green": 255,
"Blue": 255
}
},
"Wildcard1": {}
}
],
"Interactions": []