463 lines
11 KiB
Markdown
463 lines
11 KiB
Markdown
#### 说明
|
||
# ADAS LIB
|
||
## 与工控机交互LIB
|
||
|
||
# 使用方法参见【app_ipc_monitoring】中的代码
|
||
|
||
## 可用接口
|
||
~~~java
|
||
/**
|
||
* 设置多设备监听
|
||
*
|
||
* @param l 监听
|
||
*/
|
||
AdasManager.getInstance().setOnMultiDeviceListener(OnMultiDeviceListener l);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 设置工控机数据监听
|
||
*
|
||
* @param l 监听
|
||
*/
|
||
AdasManager.getInstance().setOnAdasListener(OnAdasListener l);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 创建一个连接
|
||
*
|
||
* @param options 连接参数
|
||
* @param onAdasConnectStatusListener 连接状态监听
|
||
*/
|
||
AdasManager.getInstance().create(AdasOptions options, OnAdasConnectStatusListener onAdasConnectStatusListener);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* ADAS LIB 版本
|
||
*
|
||
* @return 版本
|
||
*/
|
||
AdasManager.getInstance().getAdasVersion();
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 获取协议版本
|
||
*
|
||
* @return 版本
|
||
*/
|
||
AdasManager.getInstance().getProtocolVersion();
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 获取工控机配置信息
|
||
*
|
||
* @return 配置信息 未连接为null 断开连接会清空
|
||
*/
|
||
AdasManager.getInstance().getCarConfig();
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 连接工控机
|
||
*/
|
||
AdasManager.getInstance().connect();
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 与工控机断开连接
|
||
*/
|
||
AdasManager.getInstance().disconnect();
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 获取当前工控机的链接状态
|
||
*
|
||
* @return {@link Constants.IPC_CONNECTION_STATUS}
|
||
*/
|
||
AdasManager.getInstance().getIpcConnectionStatus();
|
||
~~~
|
||
~~~java
|
||
|
||
/**
|
||
* Log是否开启打印
|
||
*/
|
||
AdasManager.getInstance().setEnableLog(boolean isEnableLog);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 系统命令请求, 比如系统重启,启用新镜像
|
||
*
|
||
* @param type SystemCmdType。SYSTEMCMD_REBOOT 重启所有节点
|
||
* SystemCmdType。SYSTEMCMD_EMPLOY_NEW_IMAGE 使用新镜像(推镜像)
|
||
* SystemCmdType。SYSTEMCMD_SHUT_DOWN 关机
|
||
* @return boolean
|
||
*/
|
||
AdasManager.getInstance().sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 解析工控机发送过来的数据
|
||
* 多设备时使用
|
||
*
|
||
* @param bytes 数据
|
||
*/
|
||
AdasManager.getInstance().parseIPCData(byte[] bytes);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 获取工控机链接配置
|
||
*
|
||
* @return 工控机链接参数
|
||
*/
|
||
AdasManager.getInstance().getAdasOptions();
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 获取已经链接成功的工控机IP 未连接为null
|
||
*
|
||
* @return ip null:表示未连接
|
||
*/
|
||
AdasManager.getInstance().getIpcConnectedIp();
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 获取已经链接成功的工控机端口
|
||
*
|
||
* @return 端口 未连接为默认端口
|
||
*/
|
||
AdasManager.getInstance().getIpcConnectedPort();
|
||
~~~
|
||
~~~java
|
||
|
||
/**
|
||
* 自动驾驶设备基础信息应答
|
||
*
|
||
* @param sn SN
|
||
* @param environment 1: 研发环境, 2:测试环境, 3:生产环境 4:演示环境
|
||
* @return
|
||
*/
|
||
AdasManager.getInstance().sendBasicInfoResp(@NonNull String sn, int environment);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 设置自动驾驶模式 启动自动驾驶
|
||
*
|
||
* @param mode 1: enter autopilot mode, 0: quit autopilot mode
|
||
* @param source 命令来源: 0: pad模拟(模拟时routeInfo传null), 1: AICloud业务
|
||
* @param routeInfo 自动驾驶路径信息
|
||
* @return
|
||
*/
|
||
AdasManager.getInstance().sendAutoPilotModeReq(int mode, int source, MessagePad.RouteInfo routeInfo);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 设置演示模式
|
||
*
|
||
* @param enable 1: enable, 0: disable
|
||
* @return
|
||
*/
|
||
AdasManager.getInstance().sendDemoModeReq(int enable);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 车机基础信息请求
|
||
*
|
||
* @return
|
||
*/
|
||
AdasManager.getInstance().sendCarConfigReq();
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 记录人工接管原因
|
||
*
|
||
* @param key bag key 唯一标识
|
||
* @param filename 文件路径
|
||
* @param reasonID 接管原因id
|
||
* @param reason 接管原因
|
||
* @return
|
||
*/
|
||
AdasManager.getInstance().sendRecordCause(long key, @NonNull String filename, @NonNull String reasonID, @NonNull String reason);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 同下
|
||
*
|
||
* @param id
|
||
* @param type
|
||
* @return
|
||
*/
|
||
AdasManager.getInstance().startRecordPackage(int id, int type);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 同下
|
||
*
|
||
* @param id
|
||
* @param type
|
||
* @return
|
||
*/
|
||
AdasManager.getInstance().startRecordPackage(int id, int duration, int type);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 同下
|
||
*
|
||
* @param id
|
||
* @param type
|
||
* @return
|
||
*/
|
||
|
||
AdasManager.getInstance().stopRecordPackage(int id, int type);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 数据采集请求 主动录制Bag包
|
||
*
|
||
* @param id 采集id
|
||
* @param duration 采集时间长
|
||
* @param type 采集类型, 1:badcase, 2: map; 3: rests
|
||
* @param isRecord 采集指令, true: 采集, false: 停止采集
|
||
* @param sustain 是否持续采集
|
||
* @return
|
||
*/
|
||
|
||
AdasManager.getInstance().sendRecordData(int id, int duration, int type, boolean isRecord);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 设置自动驾驶最大速度
|
||
*
|
||
* @param speedLimit 最大车辆速度 m/s
|
||
* @return
|
||
*/
|
||
AdasManager.getInstance().sendAutopilotSpeedReq(double speedLimit);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 发送红绿灯数据到工控机
|
||
*
|
||
* @param crossID roadID
|
||
* @param latitude
|
||
* @param longitude
|
||
* @param heading 红绿灯方向
|
||
* @param direction 路的航向角
|
||
* @param lightId 红绿灯ID
|
||
* @param laneNo 车道号
|
||
* @param arrowNo 当前车道对应地面要素转向
|
||
* @param flashYellow 黄灯总时间
|
||
* @param laneDetail 灯态具体信息
|
||
* @return
|
||
*/
|
||
AdasManager.getInstance().sendTrafficLightData(@NonNull String crossID, double latitude, double longitude, @NonNull String heading, @NonNull String direction, int lightId, int laneNo, int arrowNo, int flashYellow, MessagePad.TrafficLightDetail laneDetail);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 自动驾驶路径请求
|
||
*
|
||
* @return
|
||
*/
|
||
AdasManager.getInstance().sendGlobalPathReq();
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 获取工控机固定IP列表
|
||
*
|
||
* @return 返回默认工控机IP列表
|
||
*/
|
||
AdasManager.getInstance().getIPCFixationIPList(Context context);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 增加工控机固定IP
|
||
*
|
||
* @param ipcIP IP
|
||
*/
|
||
AdasManager.getInstance().addIPCFixationIP(Context context, String ipcIP);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 删除指定的工控机固定IP
|
||
*
|
||
* @param ipcIP IP
|
||
*/
|
||
AdasManager.getInstance().delIPCFixationIP(Context context, String ipcIP);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 删除所有工控机固定IP
|
||
*/
|
||
AdasManager.getInstance().delIPCFixationIP(Context context);
|
||
~~~
|
||
|
||
|
||
## OnAdasListener
|
||
### 工控机数据回调
|
||
#### 回调中对象的字段详情参见各个proto文件
|
||
~~~java
|
||
/**
|
||
* 自动驾驶局部轨迹 前车引导线
|
||
*
|
||
* @param header 头
|
||
* @param trajectory 数据
|
||
*/
|
||
void onTrajectory(MessagePad.Header header, MessagePad.Trajectory trajectory);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 障碍物 他车数据
|
||
*
|
||
* @param header 头
|
||
* @param trackedObjects 数据
|
||
*/
|
||
void onTrackedObjects(MessagePad.Header header, MessagePad.TrackedObjects trackedObjects);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 惯导信息
|
||
*
|
||
* @param header 头
|
||
* @param gnssInfo 数据
|
||
*/
|
||
void onGnssInfo(MessagePad.Header header, MessagePad.GnssInfo gnssInfo);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 底盘信息, 透传底盘状态,pb参考底盘
|
||
*
|
||
* @param header 头
|
||
* @param vehicleState 数据
|
||
*/
|
||
void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 自动驾驶状态
|
||
*
|
||
* @param header 头
|
||
* @param autopilotState 数据
|
||
*/
|
||
void onAutopilotState(MessagePad.Header header, MessagePad.AutopilotState autopilotState);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 监控事件报告
|
||
*
|
||
* @param header 头
|
||
* @param mogoReportMessage 数据
|
||
*/
|
||
void onReportMessage(MessagePad.Header header, MogoReportMsg.MogoReportMessage mogoReportMessage);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 感知红绿灯
|
||
*
|
||
* @param header 头
|
||
* @param trafficLights 感知红绿灯
|
||
*/
|
||
void onPerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights trafficLights);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 他车轨迹预测
|
||
*
|
||
* @param header 头
|
||
* @param predictionObjects 他车轨迹预测数据
|
||
*/
|
||
void onPredictionObstacleTrajectory(MessagePad.Header header, Prediction.mPredictionObjects predictionObjects);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 自动驾驶设备基础信息请求
|
||
*
|
||
* @param header 头
|
||
* @param basicInfoReq 数据 目前没有任何参数
|
||
*/
|
||
void onBasicInfoReq(MessagePad.Header header, MessagePad.BasicInfoReq basicInfoReq);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 车机基础信息应答
|
||
*
|
||
* @param header 头
|
||
* @param carConfigResp 数据
|
||
*/
|
||
void onCarConfigResp(MessagePad.Header header, MessagePad.CarConfigResp carConfigResp);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 数据采集结果
|
||
*
|
||
* @param header 头
|
||
* @param recordPanel 数据
|
||
*/
|
||
void onRecordResult(MessagePad.Header header, RecordPanelOuterClass.RecordPanel recordPanel);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 自动驾驶路径应答
|
||
*
|
||
* @param header 头
|
||
* @param globalPathResp 数据
|
||
*/
|
||
void onGlobalPathResp(MessagePad.Header header, MessagePad.GlobalPathResp globalPathResp);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 报警信息
|
||
* 暂时保留,目前没有使用
|
||
*
|
||
* @param header 头
|
||
* @param warn 数据
|
||
*/
|
||
@Deprecated
|
||
void onWarn(MessagePad.Header header, MessagePad.Warn warn);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 到站提醒 自动驾驶站点
|
||
*
|
||
* @param header 头
|
||
* @param arrivalNotification 数据
|
||
*/
|
||
void onArrivalNotification(MessagePad.Header header, MessagePad.ArrivalNotification arrivalNotification);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 向IPC发送命令返回结果
|
||
*
|
||
* @param info
|
||
*/
|
||
void onSSHResult(SSHResult info);
|
||
~~~
|
||
~~~java
|
||
/**
|
||
* 数据错误
|
||
*
|
||
* @param status 错误原因
|
||
* @param bytes 原始数据
|
||
*/
|
||
void onError(ProtocolStatus status, byte[] bytes);
|
||
~~~
|
||
|
||
## OnAdasConnectStatusListener
|
||
### 连接状态监听
|
||
~~~java
|
||
/**
|
||
* 与工控机链接状态变化
|
||
*
|
||
* @param ipcConnectionStatus {@link Constants.IPC_CONNECTION_STATUS}
|
||
* @param reason 连接信息 需要判null
|
||
* 如果ipcConnectionStatus==Constants.IPC_CONNECTION_STATUS.DISCONNECTED&&reason==null 表示主动断开连接
|
||
*/
|
||
void onConnectionIPCStatus(@Define.IPCConnectionStatus int ipcConnectionStatus, @Nullable String reason);
|
||
~~~
|
||
|
||
## OnMultiDeviceListener
|
||
### 多设备链接监听
|
||
~~~java
|
||
/**
|
||
* 转发工控机消息
|
||
* 如果是客户端此回调不会被调用
|
||
*
|
||
* @param bytes 数据
|
||
*/
|
||
void onForwardingIPCMessage(byte[] bytes);
|
||
~~~ |