.EHP (Electronic Horizon Provider):即电子地平线提供者,为ADAS应用提供超视距前方路形和数据信息
说明:客户端通过服务管理ServiceMgr获取到EHPService后进行进行相关业务接口的调用。
--------------------------------------------------------------------------------
/**
* 初始化ehp服务
*/
public boolean initEhpService() {
if (mEHPService == null) {
mEHPService = (EHPService) ServiceMgr.getServiceMgrInstance().getBLService(SingleServiceID.EHPSingleServiceID);
}
EHPInitParam ehpInitParam = new EHPInitParam();
ehpInitParam.configPath = AutoConstant.PATH + "EhpConfig.dat"; // 设置 EhpConfig.json 文件路径
return mEHPService.init(ehpInitParam);
}
/**
* 协议观察者实现类
*/
public class EHPOutputObserver implements IEHPOutputObserver {
/**
* buffer 为输出json协议串内容
*/
@Override
public void output(String type, byte[] buffer) {
final String msg = new String(buffer);
// 将type和buffer内容回调给客户端
}
}
/**
* 协议观察者添加
*/
public boolean addEhpOutputObserver(IEHPOutputObserver observer) {
if (observer != null && isEhpInited()) {
return mEHPService.addOutputObserver(observer);
}
return false;
}
/**
* 设置是否允许监听到SetNaviPath自动向EHP通知
*/
public boolean setAutoUpdateRoute(boolean autoNotify) {
if (isEhpInited()) {
return mEHPService.setAutoUpdateRoute(autoNotify);
}
return false;
}
/**
* 转发 EhpOutput或者EHR 数据给 EHP
* 该接口只透传数据,不解析Json数据,目前用来传递 UsageMode和CarMode 以及 EHR反馈的激活信号
* @param jsonMsg json字符串,如: "{\"UsageMode\": 1, \"CarMode\":0}"
* @return 是否透传成功
*/
public boolean inputExternalMsg(String jsonMsg) {
if (isEhpInited()) {
mEHPService.inputMsg(jsonMsg);
return true;
}
return false;
}
/**
* 反初始化ehp服务
*/
public boolean uninitEhpService() {
if (isEhpInited()) {
mEHPService.clearOutputObserver();
mEHPService.unInit();
return true;
}
return false;
}
------------------------------------------------------------------------------------------
EHP服务初始化后建议调用setAutoUpdateRoute(false)进行控制;在引导服务设置路线GuideService.setNaviPath(naviPath, mainIndex)发起导航之前,根据主路径pathID变化,再调用EHPService.setAutoUpdateRoute接口
1: 如果导航主路径pathID没有变化,就设置EHPService.setAutoUpdateRoute(false)
2: 如果导航主路径pathID有变化,就设置EHPService.setAutoUpdateRoute(true)
特别备注:setAutoUpdateRoute接口,在setNaviPath()之前同个线程调用
离线数据
下载后a1.zip数据包解压后,m2_adas.ans 、m2_lane.ans即为EHP离线数据,是和其他基础导航地图数据一起打包,通过地图数据服务MapDataService下载控制,并通知EHPService服务更新数据,完成下载过程。
--------------------------------------------------------------------------------------------
EHP初始化依赖EhpConfig.dat,放在assets/blRes目录下,需要拷贝到文件系统目录。并通过EHPInitParam.configPath进行指定,要求路径包含EhpConfig.dat的完整路径。
定位参数
LocModeType locModeType =newLocModeType(); locModeType.funcs |=LocFuncSwitch.LocFuncEHPEnable;PosService.init();
-----------------------------------------------------------
假如是对接前期,没实车情况下,需要验证EHP的功能,可以打开enableSimulatedNavi
网络状态
EHPService.updateNetworkStatus(networkStatus);
---------------------------------------------------------------------------------------------
从610开始不再需要,500和550需要主动调用。
HMI在OnDeletePath和OnSelectMainPathStatus回调中转线程调用了SetNaviPath,才保证了EHP的正常功能。
OnDeletePath时调用示例:
NaviPath.setType(RouteType.RouteTypeOnDeletePath); setNaviPath(NaviPath, index);
OnSelectMainPathStatus时调用示例:
NaviPath.setType(RouteType.RouteTypeOnSelectMainPath); setNaviPath(NaviPath, index);
EHP输出协议数据
定义的6个消息:
Av2Position(位置消息,描述车辆当前位置和构建路网之间的关系);
Av2Stub(根路径消息,描述一个分叉路口的一条分支路与父path的夹角等信息,表示的是一条新的Path的起点);
Av2Segment(路段消息,描述所构建路网上必选属性信息,如道路等级(RoadClass)、道路构成(Form Way)、限速、道路设施等);
Av2ProfileShort(短属性消息,描述10bit的道路其他属性,如坡度,曲率等);
Av2ProfileLong(长属性消息,描述32bit的道路其他属性,如经纬度坐标、交通标志、车道等);
Av2Metadata(元数据消息,描述路网全局性属性,例如限速单位、驾驶规则、城市编码等);