Qibla Mekka Kaaba compass

From MIB-Helper.com Wiki
Revision as of 21:17, 8 January 2025 by Mr-fix (talk | contribs) (Created page with "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 <code>compass</code> 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 <code>.kzb</code> references to GUI assets as well as function called <code> isMekkaCompass...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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