SPORT HMI for Audi

There are some indications of Sport_HMI app for Audi MIB2 firmware. But no-one yet have enabled it. Let's check methods from the VW/Skoda/Seat units and let's check how the LSD.JXE in Audi looks like when it comes to references to sport modes.
VW/Seat/Skoda SportHMI enabling methods
There are two things needed in Volkswagen, SEAT, and Skoda vehicles to enable Sport HMI (VW Performance Monitor, SEAT Sport Information, Skoda Sport Information):
- enabling proper adaptation channels:
0x05F → adaptation → Car_Function_Adaptations_Gen2 → [LO]_menu_display_SportHMI → on
0x05F → adaptation → Car_Function_Adaptations_Gen2 → [LO]_menu_display_SportHMI_over_threshold_high → on
- uploading valid FEC / SWaP code to module 0x5F:
00060400
GUI assets in Audi firmware

There's a file SPORT_HMI.kzb
- a .kzb package. After extracting, it looks like Audi firmware contains some GUI assets for Sport Display submenu. There's clock gauge for power and torque, as well as bar gauge for temperature and boost. Also rendered fonts for the large readouts inside the clock gauges.
So if we are looking for needed textures - all is here.
Sport and Sport Kombi classes
It looks like there are two separate apps related to Sport Display feature:
SportHMI
SportHMI-Kombi
Kombi
can be used to distinguish app version designed for instrument cluster ("Kombiinstrument")
Here's a statement that creates the screen:
protected Screen createScreen(int n, int n2) { switch (n) { (...) case 600289: { return CarScreenBag1.cARSPORTMAIN(this, n2);
And this one executes conditions
@Override public void executeCondition(int n, int n2, HMIView[] hMIViewArray, int n3) { switch (n2) { (...) case 600289: { this.executeConditioncARSPORTMAINScreen(n, hMIViewArray, n3); break; }
...which look like this:
private void executeConditioncARSPORTMAINScreen(int n, HMIView[] hMIViewArray, int n2) { switch (n) { case 601056: { if (hMIViewArray[0] == null) break; ((ScreenWidgetEVO)hMIViewArray[0]).setOpenSelectionDrawerByHkReturn(!this.evaluateSimpleChoiceModelValueEqualsCondition(-534050560, n2, -214497024)); break; } case 602113: { if (hMIViewArray[0] != null) { ((ContainerController)hMIViewArray[0]).setVisible(this.evaluateSimpleChoiceModelValueEqualsCondition(19925248, n2, 1)); } if (hMIViewArray[1] == null) break; ((OilTemperatureGaugeController)hMIViewArray[1]).setVisible(this.evaluateSimpleChoiceModelValueEqualsCondition(19925248, n2, 1)); break; } case 602114: { if (hMIViewArray[0] == null) break; ((ChargingAirPressureGaugeController)hMIViewArray[0]).setVisible(this.evaluateSimpleChoiceModelValueEqualsCondition(36702464, n2, 1)); break; } case 602116: { if (hMIViewArray[0] == null) break; ((ContainerController)hMIViewArray[0]).setVisible(this.evaluateSimpleChoiceModelValueEqualsCondition(70256896, n2, 1)); break; } case 602118: { if (hMIViewArray[0] == null) break; ((ContainerController)hMIViewArray[0]).setVisible(this.evaluateSimpleChoiceModelValueEqualsCondition(103811328, n2, 1)); break; } } }
State machine class is also referring to the SportHMI:
public static final int LD_CAR_SEL_SPORTDISPLAY;
Meaning of the above would be "Sport Display was selected from the CAR menu Left Drawer".
//TODO
//TODO
Modifications
//TODO ideas:
- oil temp → gearbox temp
- boost pressure → oil pressure
- torque → steering angle
- power → tachometer