Qibla Mekka Kaaba compass
There's a function in called Mekka Compass mentioned in Audi MMI User Manual. Let's investigate how to enable it in the Audi MHI2 MMI system.
Basic research
First thing that I tried was to enable compass adaptation channels. Sadly, no change.
Deep research
Since I had access to decompiled LSD.JXE, I started to search for "mekka" reference. I've found .kzb references to GUI assets as well as function called isMekkaCompassAvailable in file de/audi/thgu/navi/app/util/Util.java:
public static final boolean isMekkaCompassAvailable(IFrameworkAccess iFrameworkAccess) {
return iFrameworkAccess.getSysConst(4396) == 1;
}
Looks like system constant 4396 stores information about the availability of the feature. So let's check where and how this value is set.
I've inspected file de/audi/mib/config/AbstractSysConstManager.java and found this:
boolean bl2 = this.getSysConst(532) == 12;
this.setSysConstBool(4396, bl2);
Looks simple. It checks if constant 532 is set to 12. If yes, it set's the constant 4396 to true. So where and how's the constant 532 set?
In the same file as above, there's part of the code that sets it:
this.setSysConst(532, coding.getCountry());
I'm not going to dig through the getCountry() function, because I believe I know where it's leading me to. Let's check module 0x5F long coding, byte 3 - byte_3_Country_Navigation. Which values can be coded there and if 12 would mean something?
"keine" 0 "EU" 1 "NAR" 2 "MSA" 3 "Korea" 4 "China" 5 "Japan" 6 "AsiaPacific" 7 "Australia" 8 "South Africa" 9 "NEAST" 10 "NMAfrica" 11 "MEAST" 12 "CentralAsia" 13 "India" 14 "Israel" 15 "Taiwan" 16 "MSA 2 (Chile)" 17 "China 2" 18 "China 3" 19
Bingo! 12 is MEAST - Middle East! So it looks like all is needed is module 5F coding for proper region, and that's it!
Effects
TODO