[Connected Car] cm0002:
Found something interesting, digging further ive found that the app system that is run is the Xlet java framework. Knowing this i went and decompiled the program called kona, which i think is more of a master application manager for the entire system, digging inside the code a found a class file marked OpenNavActiviation.java and the code makes references to the dbus service com.harman.service.opennav.OpenNavActivationImpl. ive posted the code below, however this looks like the key to enabling the Navigation on non-navigation units, like the dealer can, but without having to pay them >:)

/*
* Decompiled with CFR 0_114.
*/
package kona.opennav;

import com.harman.logger.SystemLogger;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import kona.opennav.OpenNavActivationListener;
import kona.opennav.OpenNavException;
import kona.opennav.OpenNaviPackageDescription;
import net.sf.microlog.core.Logger;

public class OpenNavActivation {
public static final int ACTIVATION_CODE_STATUS_SUCCESS = 0;
public static final int ACTIVATION_CODE_STATUS_FAILURE = -1;
private static final String OPENNAVACTIVATION_CLASS_PATH = "com.harman.service.opennav.OpenNavActivationImpl";
private static OpenNavActivation openNavActivation;
private Class openNavActivationImplClass = null;
private Object openNavActivationImplObject = null;

private OpenNavActivation() throws OpenNavException {
try {
this.openNavActivationImplClass = Class.forName("com.harman.service.opennav.OpenNavActivationImpl");
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
if (this.openNavActivationImplClass == null) {
throw new RuntimeException("OpenNavActivation service is not supported.");
}
try {
Method getInstanceMethod = this.openNavActivationImplClass.getDeclaredMethod("getInstance", new Class[0]);
if (getInstanceMethod != null) {
try {
this.openNavActivationImplObject = getInstanceMethod.invoke(null, new Class[0]);
}
catch (IllegalArgumentException e) {
SystemLogger.LOGGER.error("OpenNavActivation: contructor ", e);
this.openNavActivationImplObject = null;
}
catch (IllegalAccessException e) {
SystemLogger.LOGGER.error("OpenNavActivation: contructor ", e);
this.openNavActivationImplObject = null;
}
catch (InvocationTargetException e) {
SystemLogger.LOGGER.error("OpenNavActivation: contructor ", e);
e.printStackTrace();
this.openNavActivationImplObject = null;
}
}
}
catch (SecurityException e) {
SystemLogger.LOGGER.error("OpenNavActivation: contructor ", e);
this.openNavActivationImplObject = null;
}
catch (NoSuchMethodException e) {
SystemLogger.LOGGER.error("OpenNavActivation: contructor ", e);
this.openNavActivationImplObject = null;
}
if (this.openNavActivationImplObject == null) {
throw new OpenNavException("Navigation Service is not available.");
}
}

public static OpenNavActivation getInstance() throws OpenNavException {
if (openNavActivation == null) {
openNavActivation = new OpenNavActivation();
}
return openNavActivation;
}

public void registerOpenNavActivationListener(OpenNavActivationListener activationListener) throws OpenNavException {
try {
Class[] arrclass = new Class[1];
Class class_ = OpenNavActivationListener.class;
arrclass[0] = class_;
Method getActivationPkgListMethod = this.openNavActivationImplClass.getMethod("getNaviPackageListForActivation", arrclass);
try {
getActivationPkgListMethod.invoke(this.openNavActivationImplObject, activationListener);
}
catch (IllegalArgumentException e) {
SystemLogger.LOGGER.error("OpenNavActivation: registerOpenNavActivationListener ", e);
}
catch (IllegalAccessException e) {
SystemLogger.LOGGER.error("OpenNavActivation: registerOpenNavActivationListener ", e);
}
catch (InvocationTargetException e) {
SystemLogger.LOGGER.error("OpenNavActivation: registerOpenNavActivationListener ", e);
throw new OpenNavException("Navigation Service is not available.");
}
}
catch (SecurityException e) {
SystemLogger.LOGGER.error("OpenNavActivation: registerOpenNavActivationListener ", e);
}
catch (NoSuchMethodException e) {
SystemLogger.LOGGER.error("OpenNavActivation: registerOpenNavActivationListener ", e);
}
}

public int setActivationCode(OpenNaviPackageDescription packageDiscription) throws OpenNavException {
int code;
if (packageDiscription == null || packageDiscription.getActivationCode() == null) {
throw new NullPointerException("OpennaviPackageDescription and activationCode should not be null");
}
code = -1;
try {
Class[] arrclass = new Class[1];
Class class_ = OpenNaviPackageDescription.class;
arrclass[0] = class_;
Method method = this.openNavActivationImplClass.getMethod("applyActivationCode", arrclass);
try {
Object objectCode = method.invoke(this.openNavActivationImplObject, packageDiscription);
code = (Integer)objectCode;
}
catch (IllegalArgumentException e) {
SystemLogger.LOGGER.error("OpenNavActivation: setActivationCode ", e);
}
catch (IllegalAccessException e) {
SystemLogger.LOGGER.error("OpenNavActivation: setActivationCode ", e);
}
catch (InvocationTargetException e) {
SystemLogger.LOGGER.error("OpenNavActivation: setActivationCode ", e);
throw new OpenNavException("Navigation Service is not available.");
}
}
catch (SecurityException e) {
SystemLogger.LOGGER.error("OpenNavActivation: setActivationCode ", e);
}
catch (NoSuchMethodException e) {
SystemLogger.LOGGER.error("OpenNavActivation: setActivationCode ", e);
}
return code;
}

public boolean isNavActivated() throws OpenNavException {
boolean isNavActive;
isNavActive = false;
try {
Method isNavActiveMethod = this.openNavActivationImplClass.getDeclaredMethod("isNavActivated", new Class[0]);
try {
Boolean returnVal = (Boolean)isNavActiveMethod.invoke(this.openNavActivationImplObject, new Class[0]);
isNavActive = returnVal;
}
catch (IllegalArgumentException e) {
SystemLogger.LOGGER.error("OpenNavActivation: isNavActivated ", e);
}
catch (IllegalAccessException e) {
SystemLogger.LOGGER.error("OpenNavActivation: isNavActivated ", e);
}
catch (InvocationTargetException e) {
SystemLogger.LOGGER.error("OpenNavActivation: isNavActivated ", e);
throw new OpenNavException("Navigation Service is not available.");
}
}
catch (SecurityException e) {
SystemLogger.LOGGER.error("OpenNavActivation: isNavActivated ", e);
}
catch (NoSuchMethodException e) {
SystemLogger.LOGGER.error("OpenNavActivation: isNavActivated ", e);
}
return isNavActive;
}
}