#### 说明 # 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); ~~~