{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508964342,"data":{"id":71712604,"title":"12.2交互时序","slug":"dnzhxf","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"

1. API概念图

2. 业务场景

2.1 初始化

服务管理初始化

定位服务初始化

算路/引导服务初始化

离线下载服务初始化

2.1.1 时序图


注意:EHP服务功能,依赖于定位、算路、引导及离线下载服务先初始化,且各服务初始化和EHP服务初始化需在同个线程。

2.1.2 依赖

(1)定位初始化依赖

需要定位功能参数funcs包含LocFuncEHPEnable。

LocModeType locModeType = new LocModeType();\nlocModeType.funcs |= LocFuncSwitch.LocFuncEHPEnable;\nPosService.init();

(2)资源依赖

a. 兼容模式(默认,一般都是这个)

HMI重点关注EhpConfig.dat文件的拷贝与路径配置。根据项目需求不同,分为单渠道包和多渠道包。

具体如何区分单渠道包和多渠道包,可见《单个包支持多渠道配置的对接》、《服务管理/初始化》;

简单识别方式:查看收到的AutoSDK包里面的目录:

多渠道包目录示例

a1. 单渠道包的处理(默认):

单渠道包,默认使用包内的资源文件,按如下时序调用:

// initBaseInitParam\nBaseInitParam param = new BaseInitParam();\nparam.assetPath = "your_assetPath"; // eg: your_assetPath="/android_assets/blRes/"; 存在文件:assets/blRes/EhpConfig.dat\nServiceMgr.getServiceMgrInstance().initBaseLibs(param, app);\n\n// initBL\nBLInitParam blInitParam = new BLInitParam();\nblInitParam.dataPath.cfgFilePath = "your_cfgFilePath"; // local path\nblInitParam.*** = ***;\nServiceMgr.getServiceMgrInstance().initBL(blInitParam);\n// initBL时,AutoSDK默认会将“your_assetPath/EhpConfig.dat”拷贝到"your_cfgFilePath"目录下面\n    \n// otherInit\n// ***\n// initEHP\nEHPInitParam ehpInitParam = new EHPInitParam();\n// set EhpConfig.dat path;  HMI需要再显式告知ehpService“EhpConfig.dat”的位置\nehpInitParam.configPath = "your_cfgFilePath" + "/EhpConfig.dat"; \nehpInitParam.*** = ***;\nehpService.init(ehpInitParam);

a2. 多渠道包的处理

多渠道包,需要HMI主动拷贝资源文件,参考《单个包支持多渠道配置的对接》,调用时序与单渠道一致。多渠道包的用法,不清楚的请咨询高德项目经理。

b. 新双域模式

⚠️ 此模式由高德项目经理在出包时配置,无法通过后期接口调用修改,除非是项目经理明确是这个模式,否则都不需要关注。如有不清楚,请与高德项目经理联系并确认。

a1. 单渠道包的处理(默认):

// initBaseInitParam\nBaseInitParam param = new BaseInitParam();\nparam.assetPath = "your_assetPath"; // eg: your_assetPath="/android_assets/blRes/"; 存在文件:assets/blRes/EhpConfig.dat\nServiceMgr.getServiceMgrInstance().initBaseLibs(param, app);\n\n// initBL\nBLInitParam blInitParam = new BLInitParam();\nblInitParam.dataPath.cfgFilePath = "your_cfgFilePath"; // local path\nblInitParam.*** = ***;\nServiceMgr.getServiceMgrInstance().initBL(blInitParam);\n// initBL时,AutoSDK默认会将“your_assetPath/EhpConfig.dat”拷贝到"your_cfgFilePath"目录下面\n    \n// otherInit\n// ***\n\n// initEHP\nEHPInitParam ehpInitParam = new EHPInitParam();\n// ⚠️ 双域不需要配置configPath\n// ehpInitParam.configPath = "your_cfgFilePath" + "/EhpConfig.dat"; \nehpInitParam.*** = ***;\nehpService.init(ehpInitParam);

a2. 多渠道包的处理

多渠道包,需要HMI主动拷贝资源文件,参考《单个包支持多渠道配置的对接》,调用时序与单渠道一致。多渠道包的用法,不清楚的请咨询高德项目经理。

2.1.3 核心接口

boolean com.autonavi.gbl.ehp.EHPService.init(EHPInitParam initEHP)

请注意检查函数的返回值,通常return false的场景表示配置文件不存在


      com.autonavi.gbl.ehp.model.EHPInitParam

配置项

是否必填

配置项含义

取值

默认值

生效条件

注意事项

configPath

配置文件EhpConfig.dat存放路径

需要用户配置

为空

初始化

enableSimulatedNavi

模拟导航是否支持ehp功能

true/false

false

模拟导航

台架测试时,为了验证EHP是否能否正常播发,可以设置enableSimulatedNavi=true。此时会将模拟定位信号输入给EHP,并进行一定程度的播发。正常使用请保持enableSimulatedNavi=false。

enableNoRouteSendOnInit

配置EHPV2与EHPV3建立连接时是否发送无导航路径信息,默认为true,设置为false则建立连接时不向EHPV3发送无导航路径信息

true/false

true

有双域通信功能

请参考下面导航路线同步,只在崩溃后重启为避免EHPV3导航路径重置时可设置。

address

指定双域通信IP地址,不指定则使用配置文件中默认设置

ipv4地址

空字符串

有双域通信功能

请跟双域产品确认后设置

port

指定双域通信端口号,不指定则使用配置文件中默认设置

端口号数字

0

有双域通信功能

请跟双域产品确认后设置

2.1.4 调用示例

/**\n * 初始化ehp服务\n */\npublic boolean initEhpService() {\n\tif (mEHPService == null) {\n\t\tmEHPService = (EHPService) ServiceMgr.getServiceMgrInstance().getBLService(SingleServiceID.EHPSingleServiceID);\n\t}\n\tEHPInitParam ehpInitParam = new EHPInitParam();\n\treturn mEHPService.init(ehpInitParam);\n}

2.2 反初始化

2.2.1 时序图

2.2.2 调用示例

/**\n * 反初始化ehp服务\n */\npublic boolean uninitEhpService() {\n\tif (isEhpInited()) {\n\t\tmEHPService.removeOutputObserver(mObserver);//mObserver保存在实例中\n\t\tmEHPService.unInit();\n\t\treturn true;\n\t}\n\treturn false;\n}

2.3 网络状态同步

2.3.1 使用场景

【必须】EHP功能依赖网络,请确保在网络变化时调用。

2.3.2 调用示例

ServiceMgr.getServiceMgrInstance().networkChange(networkStatus);\nEHPService.updateNetworkStatus(networkStatus);

注意:当前两个接口均需要调用。

2.4 导航路线同步

2.4.1 使用场景

开始导航和结束导航场景。

2.4.2 时序图

2.4.3 注意事项

在开始导航时,HMI会将导航路线设置到AutoSDK,并由AutoSDK经由双域通信播发给EHPv3。

播发过程中,有三个控制路线通知的时机:

(1)初始化时,通过EHPInitParam.enableNoRouteSendOnInit控制和EHP v3建立连接时,是否发送无导航路线通知,默认true表示发送。通常只有出现崩溃重启不希望中断EHPv3的路线时,才考虑设置enableNoRouteSendOnInit为false。

(2)在AutoSDK通知双域通信时,EHPService有setAutoUpdateRoute()的接口用于控制AutoSDK是否通知EHP/双域通信导航路径。

(3)HMI可以通过EHPService.setConfigValue决定导航路线是否通知EHPv3。对应下图红色逻辑。

可进行的控制参考EHPConfigType:

    /**\n   * 配置EHPV2无导航路径信息时是否通知EHPV3,默认为true,设置为false则无导航路径(非建立连接)时不通知EHPV3\n   */\n    public final static int EHP_CONFIG_TYPE_NOROUTE_SEND = 1;\n    /**\n   * 配置EHPV2收到导航路径信息是否通知EHPV3,默认为true ,设置为false后SetNaviPath()不通知EHPV3\n   */\n    public final static int EHP_CONFIG_TYPE_ROUTE_SEND = 2;

2.5 ADASIS v2协议回调通知

2.5.1 使用场景

如果项目需要使用EHP输出协议(ADASIS v2)协议来获取Short Range/Long Range等消息时,需要进行对接。

具体的ADASIS v2协议请参考《EHP输出协议介绍》

2.5.2 时序图


2.5.3 核心接口

添加Ehp的消息透出观察者,EHP的Adas消息以此接口的Observer对外进行透出

boolean com.autonavi.gbl.ehp.EHPService.addOutputObserver(IEHPOutputObserver output)

删除Ehp的消息透出观察者

boolean com.autonavi.gbl.ehp.EHPService.removeOutputObserver(IEHPOutputObserver output)

清除Ehp的消息透出观察者

boolean com.autonavi.gbl.ehp.EHPService.clearOutputObserver()


交互协议观察者,通过output接口输出json协议

void com.autonavi.gbl.ehp.observer.IEHPOutputObserver.output(String key,byte[] buffer)  

2.5.4 调用示例


private IEHPOutputObserver mObserver;\n/**\n * 协议观察者实现类\n */\npublic class EHPOutputObserver implements IEHPOutputObserver {\n\t/**\n\t * buffer 为输出json协议串内容\n\t */\n    @Override\n    public void output(String type, byte[] buffer) {\n        final String msg = new String(buffer);\n        // 将type和buffer内容回调给客户端\n    }\n}\n\n/**\n * 协议观察者添加\n */\npublic boolean addEhpOutputObserver(IEHPOutputObserver observer) {\n\tif (observer != null && isEhpInited()) {\n        mObserver = observer;\n\t\treturn mEHPService.addOutputObserver(observer);\n\t}\n\treturn false;\n}\n\n/**\n * 转发 EhpOutput或者EHR 数据给 EHP\n * 该接口只透传数据,不解析Json数据,目前用来传递 UsageMode和CarMode 以及 EHR反馈的激活信号\n * @param jsonMsg json字符串,如: "{\\"UsageMode\\": 1, \\"CarMode\\":0}"\n * @return 是否透传成功\n */\npublic boolean inputExternalMsg(String jsonMsg) {\n\tif (isEhpInited()) {\n\t\tmEHPService.inputMsg(jsonMsg);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n\n/**\n * 反初始化ehp服务\n */\npublic boolean uninitEhpService() {\n\tif (isEhpInited()) {\n\t\tmEHPService.removeOutputObserver(mObserver);\n\t\tmEHPService.unInit();\n\t\treturn true;\n\t}\n\treturn false;\n}

2.6 EHP离线地图数据

EHP需要特定的离线数据以支持坡度、曲率获取(_adas.ans)以及车道连通性获取(_lane.ans)。

使用方法请参考《EHP离线数据下载》

2.7 重置预测树

2.7.1 使用场景

HMI按照需要重置EHP预测树。

接口:

void com.autonavi.gbl.ehp.EHPService.resetPredictiveTree()



","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-11-09 08:35:57","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":393,"collectCount":0,"estimateDate":15,"docStatus":0,"permissions":true,"overView":false}}