[690][adas]新增人工接管时给PAD发后摄像头数据请求与响应
This commit is contained in:
@@ -1338,6 +1338,21 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 接管时前方和后方摄像头数据请求的响应
|
||||
*
|
||||
* @param header 头
|
||||
* @param isFront true:前方摄像头 false:后方摄像头
|
||||
* @param data 数据
|
||||
*/
|
||||
override fun onCaptureImgOnTakeOver(
|
||||
header: MessagePad.Header,
|
||||
isFront: Boolean,
|
||||
data: MessagePad.CaptureImgOnTakeOver
|
||||
) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否可以启动自动驾驶
|
||||
* 使用方法查看:app_ipc_monitoring/uiMainActivity/onAutopilotAbility
|
||||
|
||||
@@ -95,6 +95,8 @@ public enum MessageType {
|
||||
TYPE_RECEIVE_SSM_FUNC_MSG(MessagePad.MessageType.MsgTypeSSMFuncMsg, "SSM功能响应"),
|
||||
TYPE_SEND_SSM_FUNC_STATUS_QUERY(MessagePad.MessageType.MsgTypeSSMFuncStatusQuery, "SSM功能状态查询"),
|
||||
TYPE_RECEIVE_SSM_FUNC_STATUS_QUERY(MessagePad.MessageType.MsgTypeSSMFuncStatusQuery, "SSM功能状态响应"),
|
||||
TYPE_SEND_CAPTURE_IMG_REQ_ON_TAKE_OVER(MessagePad.MessageType.MsgTypeCaptureImgReqOnTakeOver, "接管时摄像头数据请求"),
|
||||
|
||||
//TODO 透传原始pb文件中不存在以下type。由于Java中无法强转,所以在mogo-adas-data/message_pad.proto中放开注释
|
||||
TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"),
|
||||
TYPE_RECEIVE_SWEEPER_TASK_INDEX_DATA(MessagePad.MessageType.MsgTypeSweeperTaskIndexData, "清扫车指标数据"),
|
||||
@@ -106,6 +108,11 @@ public enum MessageType {
|
||||
TYPE_RECEIVE_CAMERA_CALIB_CHECK_DATA120_BACK(MessagePad.MessageType.MsgTypeCameraCalibCheckData120Back, "相机标定检查视频120后"),
|
||||
TYPE_RECEIVE_CAMERA_CALIB_CHECK_DATA120_LEFT(MessagePad.MessageType.MsgTypeCameraCalibCheckData120Left, "相机标定检查视频120左"),
|
||||
TYPE_RECEIVE_CAMERA_CALIB_CHECK_DATA120_RIGHT(MessagePad.MessageType.MsgTypeCameraCalibCheckData120Right, "相机标定检查视频120右"),
|
||||
|
||||
|
||||
TYPE_RECEIVE_CAPTURE_FRONT_IMG_ON_TAKE_OVER(MessagePad.MessageType.MsgTypeCaptureFrontImgOnTakeOver, "人工接管时给PAD发前摄像头数据响应"),
|
||||
TYPE_RECEIVE_CAPTURE_BACK_IMG_ON_TAKE_OVER(MessagePad.MessageType.MsgTypeCaptureBackImgOnTakeOver, "人工接管时给PAD发后摄像头数据响应"),
|
||||
|
||||
;
|
||||
|
||||
|
||||
|
||||
@@ -24,6 +24,8 @@ enum MessageType
|
||||
MsgTypeCameraCalibCheckData120Back = 0x01004; //相机标定检查视频, 10hz, jpeg. image_raw_back
|
||||
MsgTypeCameraCalibCheckData120Left = 0x01005; //相机标定检查视频, 10hz, jpeg. image_raw_left
|
||||
MsgTypeCameraCalibCheckData120Right = 0x01006; //相机标定检查视频, 10hz, jpeg. image_raw_right
|
||||
MsgTypeCaptureFrontImgOnTakeOver = 0x01007;//人工接管时给PAD发前摄像头数据响应
|
||||
MsgTypeCaptureBackImgOnTakeOver = 0x01008;//人工接管时给PAD发后摄像头数据响应
|
||||
|
||||
MsgTypeTrajectory = 0x10000; //局部轨迹,车前引导线 定频10hz
|
||||
MsgTypeTrackedObjects = 0x10001; //障碍物信息 定频10hz
|
||||
@@ -97,6 +99,7 @@ enum MessageType
|
||||
MsgTypePowerUnit = 0x1012e;//电源模块通信
|
||||
MsgTypeSSMFuncMsg = 0x1012f;//SSM功能(上下行)
|
||||
MsgTypeSSMFuncStatusQuery = 0x10130;//SSM功能状态查询及返回(上下行)
|
||||
MsgTypeCaptureImgReqOnTakeOver = 0x10132;//人工接管时PAD请求前后摄像头数据
|
||||
}
|
||||
|
||||
message Header
|
||||
@@ -940,4 +943,11 @@ message CollisionReport
|
||||
double longitude = 1;
|
||||
double latitude = 2;
|
||||
double timestamp = 3;//时间, 单位:秒
|
||||
}
|
||||
|
||||
//message definition for MsgTypeCaptureImgReqOnTakeOver MsgTypeCaptureFrontImgOnTakeOver MsgTypeCaptureBackImgOnTakeOver
|
||||
message CaptureImgOnTakeOver
|
||||
{
|
||||
uint32 uuid = 1;
|
||||
bytes data = 2;
|
||||
}
|
||||
@@ -3049,6 +3049,26 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
return sendSsmFuncMsg(true, system_master.SsmInfo.MessageType.STATION_STATUS_QUERY, SsmInfo.OrderInfo.newBuilder().setOrderId(orderId).build().toByteString());
|
||||
}
|
||||
|
||||
/**
|
||||
* 人工接管时获取前方和后方摄像头数据
|
||||
* 一次请求域控回调次两次摄像头数据 根据{@link MessagePad.CaptureImgOnTakeOver#getUuid()}进行区分是否是哪次请求
|
||||
* 例如下发uuid = 1 域控正常会回调两次响应接口 两次的uuid都是1,通过isFront区分是前方还是后方摄像头
|
||||
* 域控响应接口{@link OnAdasListener#onCaptureImgOnTakeOver(MessagePad.Header, boolean, MessagePad.CaptureImgOnTakeOver)}
|
||||
*
|
||||
* @param uuid 消息id,域控回调时会回复对应的值
|
||||
* @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID
|
||||
* * >=0:表示添加到WS发送消息队列
|
||||
* * =0:表示乘客屏模式添加到WS发送消息队列
|
||||
* * -1L:添加到WS发送消息队列失败
|
||||
*/
|
||||
@Override
|
||||
public long sendCaptureImgReqOnTakeOver(int uuid) {
|
||||
MessagePad.CaptureImgOnTakeOver.Builder builder = MessagePad.CaptureImgOnTakeOver.newBuilder()
|
||||
.setUuid(uuid);
|
||||
MessagePad.CaptureImgOnTakeOver req = builder.build();
|
||||
return sendPBMessage(MessageType.TYPE_SEND_CAPTURE_IMG_REQ_ON_TAKE_OVER, req.toByteArray());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1855,6 +1855,23 @@ public class AdasManager implements IAdasNetCommApi {
|
||||
return mChannel == null ? -1L : mChannel.sendSsmFuncQueryAutoPilotStation(orderId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 人工接管时获取前方和后方摄像头数据
|
||||
* 一次请求域控回调次两次摄像头数据 根据{@link MessagePad.CaptureImgOnTakeOver#getUuid()}进行区分是否是哪次请求
|
||||
* 例如下发uuid = 1 域控正常会回调两次响应接口 两次的uuid都是1,通过isFront区分是前方还是后方摄像头
|
||||
* 域控响应接口{@link OnAdasListener#onCaptureImgOnTakeOver(MessagePad.Header, boolean, MessagePad.CaptureImgOnTakeOver)}
|
||||
*
|
||||
* @param uuid 消息id,域控回调时会回复对应的值
|
||||
* @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID
|
||||
* * >=0:表示添加到WS发送消息队列
|
||||
* * =0:表示乘客屏模式添加到WS发送消息队列
|
||||
* * -1L:添加到WS发送消息队列失败
|
||||
*/
|
||||
@Override
|
||||
public long sendCaptureImgReqOnTakeOver(int uuid) {
|
||||
return mChannel == null ? -1L : mChannel.sendCaptureImgReqOnTakeOver(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询节点状态
|
||||
*
|
||||
|
||||
@@ -1344,6 +1344,20 @@ public interface IAdasNetCommApi {
|
||||
*/
|
||||
long sendSsmFuncQueryAutoPilotStation(@NonNull String orderId);
|
||||
|
||||
/**
|
||||
* 人工接管时获取前方和后方摄像头数据
|
||||
* 一次请求域控回调次两次摄像头数据 根据{@link MessagePad.CaptureImgOnTakeOver#getUuid()}进行区分是否是哪次请求
|
||||
* 例如下发uuid = 1 域控正常会回调两次响应接口 两次的uuid都是1,通过isFront区分是前方还是后方摄像头
|
||||
* 域控响应接口{@link OnAdasListener#onCaptureImgOnTakeOver(MessagePad.Header, boolean, MessagePad.CaptureImgOnTakeOver)}
|
||||
*
|
||||
* @param uuid 消息id,域控回调时会回复对应的值
|
||||
* @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID
|
||||
* * >=0:表示添加到WS发送消息队列
|
||||
* * =0:表示乘客屏模式添加到WS发送消息队列
|
||||
* * -1L:添加到WS发送消息队列失败
|
||||
*/
|
||||
long sendCaptureImgReqOnTakeOver(int uuid);
|
||||
|
||||
// TODO 需求暂停 待讨论
|
||||
// boolean getRoutes();
|
||||
|
||||
|
||||
@@ -638,6 +638,15 @@ public interface OnAdasListener {
|
||||
*/
|
||||
void onNodeStateInfo(@NonNull NodeStateInfo stateInfo);
|
||||
|
||||
/**
|
||||
* 接管时前方和后方摄像头数据请求的响应
|
||||
*
|
||||
* @param header 头
|
||||
* @param isFront true:前方摄像头 false:后方摄像头
|
||||
* @param data 数据
|
||||
*/
|
||||
void onCaptureImgOnTakeOver(@NonNull MessagePad.Header header, boolean isFront, @NonNull MessagePad.CaptureImgOnTakeOver data);
|
||||
|
||||
/**
|
||||
* 是否有能力启动自动驾驶
|
||||
*
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.zhidao.support.adas.high.msg;
|
||||
|
||||
import android.os.SystemClock;
|
||||
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
import com.zhidao.support.adas.high.AdasChannel;
|
||||
import com.zhidao.support.adas.high.OnAdasListener;
|
||||
import com.zhidao.support.adas.high.common.CupidLogUtils;
|
||||
import com.zhidao.support.adas.high.protocol.RawData;
|
||||
import com.zhjt.mogo.adas.common.MessageType;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
|
||||
/**
|
||||
* 接管时前方和后方摄像头数据请求的响应
|
||||
*/
|
||||
public class CaptureImgOnTakeOverMessage extends MyAbstractMessageHandler {
|
||||
|
||||
@Override
|
||||
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
|
||||
MessagePad.CaptureImgOnTakeOver data = MessagePad.CaptureImgOnTakeOver.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
|
||||
AdasChannel.calculateTimeConsumingOnDispatchRaw("接管时前方和后方摄像头数据请求的响应", raw.receiveTime);
|
||||
long nowTime = 0;
|
||||
if (CupidLogUtils.isEnableLog())
|
||||
nowTime = SystemClock.elapsedRealtime();
|
||||
if (adasListener != null) {
|
||||
MessagePad.Header header = raw.getHeader();
|
||||
adasListener.onCaptureImgOnTakeOver(header, header.getMsgType() == MessageType.TYPE_RECEIVE_CAPTURE_FRONT_IMG_ON_TAKE_OVER.typeCode, data);
|
||||
}
|
||||
AdasChannel.calculateTimeConsumingBusiness("接管时前方和后方摄像头数据请求的响应", nowTime);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -55,6 +55,7 @@ public class MyMessageFactory implements IMyMessageFactory {
|
||||
private IMsg laneMarksTranMessage;//车道线
|
||||
private IMsg powerUnitMessage;//电源模块
|
||||
private IMsg padSsmFuncMsgMessage;//SSM功能
|
||||
private IMsg captureImgOnTakeOverMessage;//接管时前方和后方摄像头数据请求的响应
|
||||
|
||||
private final AutopilotReview autopilotReview;
|
||||
private final TurnLightState lightLeft = new TurnLightState();
|
||||
@@ -317,6 +318,12 @@ public class MyMessageFactory implements IMyMessageFactory {
|
||||
padSsmFuncMsgMessage = new PadSsmFuncMsgMessage();
|
||||
}
|
||||
return padSsmFuncMsgMessage;
|
||||
} else if (messageType == MessageType.TYPE_RECEIVE_CAPTURE_FRONT_IMG_ON_TAKE_OVER.typeCode || messageType == MessageType.TYPE_RECEIVE_CAPTURE_BACK_IMG_ON_TAKE_OVER.typeCode) {
|
||||
//接管时正前方和后方摄像头数据请求的响应
|
||||
if (captureImgOnTakeOverMessage == null) {
|
||||
captureImgOnTakeOverMessage = new CaptureImgOnTakeOverMessage();
|
||||
}
|
||||
return captureImgOnTakeOverMessage;
|
||||
} else {
|
||||
//MessageType.TYPE_DEFAULT.typeCode
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user