Files
MoGoEagleEye/libraries/mogo-adas
yangyakun 83dd65eb8d [8.5.0]
[车门、安全带、站点停车]
2026-04-20 16:57:30 +08:00
..
2026-04-20 16:57:30 +08:00
2022-01-18 18:19:06 +08:00
2022-01-18 18:19:06 +08:00
2022-01-18 18:19:06 +08:00

说明

ADAS LIB

与工控机交互LIB

使用方法参见【app_ipc_monitoring】中的代码

可用接口

    /**
     * 设置多设备监听
     *
     * @param l 监听
     */
    AdasManager.getInstance().setOnMultiDeviceListener(OnMultiDeviceListener l);
    /**
     * 设置工控机数据监听
     *
     * @param l 监听
     */
    AdasManager.getInstance().setOnAdasListener(OnAdasListener l);
    /**
     * 创建一个连接
     *
     * @param options                     连接参数
     * @param onAdasConnectStatusListener 连接状态监听
     */
    AdasManager.getInstance().create(AdasOptions options, OnAdasConnectStatusListener onAdasConnectStatusListener);
    /**
     * ADAS LIB 版本
     *
     * @return 版本
     */
    AdasManager.getInstance().getAdasVersion();
    /**
     * 获取协议版本
     *
     * @return 版本
     */
    AdasManager.getInstance().getProtocolVersion();
    /**
     * 获取工控机配置信息
     *
     * @return 配置信息 未连接为null 断开连接会清空
     */
    AdasManager.getInstance().getCarConfig();
    /**
     * 连接工控机
     */
    AdasManager.getInstance().connect();
    /**
     * 与工控机断开连接
     */
    AdasManager.getInstance().disconnect();
    /**
     * 获取当前工控机的链接状态
     *
     * @return {@link Constants.IPC_CONNECTION_STATUS}
     */
    AdasManager.getInstance().getIpcConnectionStatus();

    /**
     * Log是否开启打印
     */
    AdasManager.getInstance().setEnableLog(boolean isEnableLog);
    /**
     * 系统命令请求, 比如系统重启,启用新镜像
     *
     * @param type SystemCmdType。SYSTEMCMD_REBOOT 重启所有节点
     *             SystemCmdType。SYSTEMCMD_EMPLOY_NEW_IMAGE 使用新镜像(推镜像)
     *             SystemCmdType。SYSTEMCMD_SHUT_DOWN 关机
     * @return boolean
     */
    AdasManager.getInstance().sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type);
    /**
     * 解析工控机发送过来的数据
     * 多设备时使用
     *
     * @param bytes 数据
     */
    AdasManager.getInstance().parseIPCData(byte[] bytes);
    /**
     * 获取工控机链接配置
     *
     * @return 工控机链接参数
     */
    AdasManager.getInstance().getAdasOptions();
    /**
     * 获取已经链接成功的工控机IP 未连接为null
     *
     * @return ip   null:表示未连接
     */
    AdasManager.getInstance().getIpcConnectedIp();
    /**
     * 获取已经链接成功的工控机端口
     *
     * @return 端口  未连接为默认端口
     */
    AdasManager.getInstance().getIpcConnectedPort();

    /**
     * 自动驾驶设备基础信息应答
     *
     * @param sn          SN
     * @param environment 1: 研发环境, 2:测试环境, 3:生产环境 4:演示环境
     * @return
     */
    AdasManager.getInstance().sendBasicInfoResp(@NonNull String sn, int environment);
    /**
     * 设置自动驾驶模式 启动自动驾驶
     *
     * @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);
    /**
     * 设置演示模式
     *
     * @param enable 1: enable, 0: disable
     * @return
     */
    AdasManager.getInstance().sendDemoModeReq(int enable);
    /**
     * 车机基础信息请求
     *
     * @return
     */
    AdasManager.getInstance().sendCarConfigReq();
    /**
     * 记录人工接管原因
     *
     * @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);
    /**
     * 同下
     *
     * @param id
     * @param type
     * @return
     */
    AdasManager.getInstance().startRecordPackage(int id, int type);
    /**
     * 同下
     *
     * @param id
     * @param type
     * @return
     */
    AdasManager.getInstance().startRecordPackage(int id, int duration, int type);
    /**
     * 同下
     *
     * @param id
     * @param type
     * @return
     */

    AdasManager.getInstance().stopRecordPackage(int id, int type);
    /**
     * 数据采集请求  主动录制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);
    /**
     * 设置自动驾驶最大速度
     *
     * @param speedLimit 最大车辆速度 m/s
     * @return
     */
    AdasManager.getInstance().sendAutopilotSpeedReq(double speedLimit);
    /**
     * 发送红绿灯数据到工控机
     *
     * @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);
    /**
     * 自动驾驶路径请求
     *
     * @return
     */
    AdasManager.getInstance().sendGlobalPathReq();
    /**
     * 获取工控机固定IP列表
     *
     * @return 返回默认工控机IP列表
     */
    AdasManager.getInstance().getIPCFixationIPList(Context context);
    /**
     * 增加工控机固定IP
     *
     * @param ipcIP IP
     */
    AdasManager.getInstance().addIPCFixationIP(Context context, String ipcIP);
    /**
     * 删除指定的工控机固定IP
     *
     * @param ipcIP IP
     */
    AdasManager.getInstance().delIPCFixationIP(Context context, String ipcIP);
    /**
     * 删除所有工控机固定IP
     */
    AdasManager.getInstance().delIPCFixationIP(Context context);

OnAdasListener

工控机数据回调

回调中对象的字段详情参见各个proto文件

    /**
     * 自动驾驶局部轨迹 前车引导线
     *
     * @param header     头
     * @param trajectory 数据
     */
    void onTrajectory(MessagePad.Header header, MessagePad.Trajectory trajectory);
    /**
     * 障碍物 他车数据
     *
     * @param header         头
     * @param trackedObjects 数据
     */
    void onTrackedObjects(MessagePad.Header header, MessagePad.TrackedObjects trackedObjects);
    /**
     * 惯导信息
     *
     * @param header   头
     * @param gnssInfo 数据
     */
    void onGnssInfo(MessagePad.Header header, MessagePad.GnssInfo gnssInfo);
    /**
     * 底盘信息, 透传底盘状态pb参考底盘
     *
     * @param header       头
     * @param vehicleState 数据
     */
    void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState);
    /**
     * 自动驾驶状态
     *
     * @param header         头
     * @param autopilotState 数据
     */
    void onAutopilotState(MessagePad.Header header, MessagePad.AutopilotState autopilotState);
    /**
     * 监控事件报告
     *
     * @param header            头
     * @param mogoReportMessage 数据
     */
    void onReportMessage(MessagePad.Header header, MogoReportMsg.MogoReportMessage mogoReportMessage);
    /**
     * 感知红绿灯
     *
     * @param header        头
     * @param trafficLights 感知红绿灯
     */
    void onPerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights trafficLights);
    /**
     * 他车轨迹预测
     *
     * @param header        头
     * @param predictionObjects 他车轨迹预测数据
     */
    void onPredictionObstacleTrajectory(MessagePad.Header header, Prediction.mPredictionObjects predictionObjects);
    /**
     * 自动驾驶设备基础信息请求
     *
     * @param header       头
     * @param basicInfoReq 数据 目前没有任何参数
     */
    void onBasicInfoReq(MessagePad.Header header, MessagePad.BasicInfoReq basicInfoReq);
    /**
     * 车机基础信息应答
     *
     * @param header        头
     * @param carConfigResp 数据
     */
    void onCarConfigResp(MessagePad.Header header, MessagePad.CarConfigResp carConfigResp);
    /**
     * 数据采集结果
     *
     * @param header      头
     * @param recordPanel 数据
     */
    void onRecordResult(MessagePad.Header header, RecordPanelOuterClass.RecordPanel recordPanel);
    /**
     * 自动驾驶路径应答
     *
     * @param header         头
     * @param globalPathResp 数据
     */
    void onGlobalPathResp(MessagePad.Header header, MessagePad.GlobalPathResp globalPathResp);
    /**
     * 报警信息
     * 暂时保留,目前没有使用
     *
     * @param header 头
     * @param warn   数据
     */
    @Deprecated
    void onWarn(MessagePad.Header header, MessagePad.Warn warn);
    /**
     * 到站提醒 自动驾驶站点
     *
     * @param header              头
     * @param arrivalNotification 数据
     */
    void onArrivalNotification(MessagePad.Header header, MessagePad.ArrivalNotification arrivalNotification);
    /**
     * 向IPC发送命令返回结果
     *
     * @param info
     */
    void onSSHResult(SSHResult info);
    /**
     * 数据错误
     *
     * @param status 错误原因
     * @param bytes  原始数据
     */
    void onError(ProtocolStatus status, byte[] bytes);

OnAdasConnectStatusListener

连接状态监听

    /**
     * 与工控机链接状态变化
     *
     * @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

多设备链接监听

    /**
     * 转发工控机消息
     * 如果是客户端此回调不会被调用
     *
     * @param bytes 数据
     */
    void onForwardingIPCMessage(byte[] bytes);