[610][adas]添加平行驾驶相关接口;能否启动自驾接口添加手刹状态判断;修改清扫车云控PB与平行驾驶PB共用
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
syntax = "proto3";
|
||||
package com.zhjt.mogo.adas.data.sweeper;
|
||||
package com.zhjt.mogo.adas.data;
|
||||
|
||||
//清扫车云端任务调度
|
||||
|
||||
@@ -17,11 +17,13 @@ enum MessageType
|
||||
PadSendBootable = 100008; //8、接管后回自驾-pad上报状态给云端 云端下发启动自驾(type: 100008)-> sweeper_bootable.proto
|
||||
CloudPushBigTaskStatus = 100009; //9、云端下发pad大任务状态(type: 100009)-> sweeper_big_task_status.proto
|
||||
CloudPushTaskSuspendResume = 100010; //10、云端下发任务暂停/恢复指令到pad(type: 100010)-> sweeper_task_cloud_suspend_resume.proto
|
||||
|
||||
ParallelDrivingCmd = 200001; //无人化场景,平行驾驶请求相关指令及状态反馈, 云控<->鹰眼双向透传
|
||||
}
|
||||
|
||||
//云下行消息
|
||||
//PAD上行消息
|
||||
message SweeperMessage
|
||||
message AiCloudPadMessage
|
||||
{
|
||||
uint32 msgType = 1; //消息类型,响应请求时,使用对应请求的消息类型
|
||||
bytes payload = 2; //消息内容
|
||||
@@ -72,6 +72,7 @@ enum MessageType
|
||||
MsgTypeFSMStatusReasonQueryReq = 0x10123; //fsm状态原因查询
|
||||
MsgTypeFSMStatusReasonQueryResp = 0x10124; //fsm状态原因查询应答
|
||||
MsgTypeGetDebugInfo = 0x10125; //debug信息查询 pad->telematics
|
||||
MsgTypeParallelDrivingCmd = 0x10126; //无人化场景,平行驾驶请求相关指令及状态反馈, 云控<->鹰眼双向透传
|
||||
}
|
||||
|
||||
message Header
|
||||
@@ -713,3 +714,7 @@ message SessionInfo
|
||||
|
||||
//message definition for MsgTypeSSMState
|
||||
//refer to ssm_info.proto for details
|
||||
|
||||
//message definition for MsgTypeParallelDrivingCmd
|
||||
//查看云端和鹰眼的接口
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
syntax = "proto3";
|
||||
package mogo.yycp.paralleldriving.protocol;
|
||||
option java_package = "mogo.yycp.paralleldriving.protocol";
|
||||
|
||||
message ParallelRequest {
|
||||
string sn = 1;
|
||||
int32 type = 2; //类型:1,预接管,2,鹰眼请求 3 遇困,4,自检异常
|
||||
int32 takeover = 3; //1接管请求,2取消请求接管
|
||||
string code = 4 ; // 请求上报的类型,如:"PAD_ACTIVE",用于描述type的具体内容,不同的code可以对应同一个type
|
||||
string reason = 5; // 具体的请求原因描述,如:因底盘消息掉帧强退自动驾驶
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
syntax = "proto3";
|
||||
package mogo.yycp.paralleldriving.protocol;
|
||||
option java_package = "mogo.yycp.paralleldriving.protocol";
|
||||
|
||||
message ParallelTaskProcessNotice {
|
||||
string code = 1; // 消息code: START_SYNC ; EXIT_SYNC ; UNABLE_TAKEOVER ; EXCEPTION_EXIT_SYNC ; TASK_REJECTED ; PARALLEL_EXCEPTION_MANUAL_DRIVING ; EXCEPTION_EXIT_PARALLEL_DRIVING
|
||||
string content = 2; //消息具体内容:进入同步状态 ; 同步结束 ; 无法接管 ; 同步异常结束 ; 任务已被拒绝 ; 异常请人工驾驶 ; 平行驾驶异常结束
|
||||
}
|
||||
@@ -45,9 +45,9 @@ import com.zhidao.support.adas.high.subscribe.SubscribeInterface;
|
||||
import com.zhidao.support.adas.high.subscribe.SubscribeInterfaceOptions;
|
||||
import com.zhidao.support.adas.high.thread.DispatchHandler;
|
||||
import com.zhjt.mogo.adas.data.AdasConstants;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.zhjt.mogo.adas.data.bean.AdasParam;
|
||||
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume;
|
||||
@@ -71,6 +71,7 @@ import common.HeaderOuterClass;
|
||||
import function_state_management.FSMStatusReasonQueryOuterClass;
|
||||
import mogo.telematics.ParamSetCmdOuterClass;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest;
|
||||
import okio.ByteString;
|
||||
|
||||
/**
|
||||
@@ -1889,15 +1890,16 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送清扫车指令到云控
|
||||
* 发送云控指令
|
||||
*
|
||||
* @param messageType 消息类型
|
||||
* @param reqNo 请求编号
|
||||
* @param payload 有效数据
|
||||
* @param padMessageType PAD到域控消息类型
|
||||
* @param messageType PAD到AI云消息类型
|
||||
* @param reqNo 请求编号
|
||||
* @param payload 有效数据
|
||||
* @return boolean
|
||||
*/
|
||||
private boolean sendSweeperCloudTaskCmd(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, @NonNull com.google.protobuf.ByteString payload) {
|
||||
SweeperCloudTask.SweeperMessage.Builder builder = SweeperCloudTask.SweeperMessage.newBuilder()
|
||||
private boolean sendAiCloudTaskCmd(@NonNull MessageType padMessageType, @NonNull AiCloudTask.MessageType messageType, @NonNull String reqNo, @NonNull com.google.protobuf.ByteString payload) {
|
||||
AiCloudTask.AiCloudPadMessage.Builder builder = AiCloudTask.AiCloudPadMessage.newBuilder()
|
||||
.setMsgType(messageType.getNumber())
|
||||
.setSysTime(System.currentTimeMillis());
|
||||
if (!TextUtils.isEmpty(reqNo)) {
|
||||
@@ -1906,8 +1908,8 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
if (payload != null && !payload.isEmpty()) {
|
||||
builder.setPayload(payload);
|
||||
}
|
||||
SweeperCloudTask.SweeperMessage message = builder.build();
|
||||
return sendPBMessage(MessageType.TYPE_SEND_SWEEPER_CLOUD_TASK_CMD.typeCode, message.toByteArray());
|
||||
AiCloudTask.AiCloudPadMessage message = builder.build();
|
||||
return sendPBMessage(padMessageType.typeCode, message.toByteArray());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1920,7 +1922,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
*/
|
||||
@Override
|
||||
public boolean sendSweeperStartTaskResp(@NonNull String reqNo, @NonNull SweeperTask.StartTaskResp startTaskResp) {
|
||||
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.CloudPushTask, reqNo, startTaskResp.toByteString());
|
||||
return sendAiCloudTaskCmd(MessageType.TYPE_SEND_SWEEPER_CLOUD_TASK_CMD, AiCloudTask.MessageType.CloudPushTask, reqNo, startTaskResp.toByteString());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1933,7 +1935,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
*/
|
||||
@Override
|
||||
public boolean sendSweeperTaskConfirmResp(@NonNull String reqNo, @NonNull SweeperTaskConfirm.TaskConfirmResp taskConfirmResp) {
|
||||
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.CloudPushTaskConfirm, reqNo, taskConfirmResp.toByteString());
|
||||
return sendAiCloudTaskCmd(MessageType.TYPE_SEND_SWEEPER_CLOUD_TASK_CMD, AiCloudTask.MessageType.CloudPushTaskConfirm, reqNo, taskConfirmResp.toByteString());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1946,7 +1948,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
*/
|
||||
@Override
|
||||
public boolean sendSweeperStopTaskResp(@NonNull String reqNo, @NonNull SweeperTaskStop.StopTaskResp stopTaskResp) {
|
||||
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.CloudPushTaskStop, reqNo, stopTaskResp.toByteString());
|
||||
return sendAiCloudTaskCmd(MessageType.TYPE_SEND_SWEEPER_CLOUD_TASK_CMD, AiCloudTask.MessageType.CloudPushTaskStop, reqNo, stopTaskResp.toByteString());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1961,7 +1963,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
*/
|
||||
@Override
|
||||
public boolean sendSweeperSuspendResumeTaskReq(boolean isSuspend, @NonNull String reqNo, @NonNull SweeperTaskSuspendResume.SuspendResumeTaskReq suspendResumeTaskReq) {
|
||||
return sendSweeperCloudTaskCmd(isSuspend ? SweeperCloudTask.MessageType.PadSendTaskSuspend : SweeperCloudTask.MessageType.PadSendTaskResume, reqNo, suspendResumeTaskReq.toByteString());
|
||||
return sendAiCloudTaskCmd(MessageType.TYPE_SEND_SWEEPER_CLOUD_TASK_CMD, isSuspend ? AiCloudTask.MessageType.PadSendTaskSuspend : AiCloudTask.MessageType.PadSendTaskResume, reqNo, suspendResumeTaskReq.toByteString());
|
||||
}
|
||||
|
||||
|
||||
@@ -1975,7 +1977,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
*/
|
||||
@Override
|
||||
public boolean sendSweeperGetTaskReq(@NonNull String reqNo, @NonNull SweeperTask.GetTaskReq getTaskReq) {
|
||||
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.PadSendGetTaskReq, reqNo, getTaskReq.toByteString());
|
||||
return sendAiCloudTaskCmd(MessageType.TYPE_SEND_SWEEPER_CLOUD_TASK_CMD, AiCloudTask.MessageType.PadSendGetTaskReq, reqNo, getTaskReq.toByteString());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1988,7 +1990,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
*/
|
||||
@Override
|
||||
public boolean sendSweeperAutopilotBootable(@NonNull String reqNo, @NonNull SweeperBootable.IsBootable isBootable) {
|
||||
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.PadSendBootable, reqNo, isBootable.toByteString());
|
||||
return sendAiCloudTaskCmd(MessageType.TYPE_SEND_SWEEPER_CLOUD_TASK_CMD, AiCloudTask.MessageType.PadSendBootable, reqNo, isBootable.toByteString());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2001,7 +2003,20 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
*/
|
||||
@Override
|
||||
public boolean sendSweeperCloudSuspendResumeTaskResp(@NonNull String reqNo, @NonNull SweeperTaskCloudSuspendResume.BigTaskActionResp bigTaskActionResp) {
|
||||
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.CloudPushTaskSuspendResume, reqNo, bigTaskActionResp.toByteString());
|
||||
return sendAiCloudTaskCmd(MessageType.TYPE_SEND_SWEEPER_CLOUD_TASK_CMD, AiCloudTask.MessageType.CloudPushTaskSuspendResume, reqNo, bigTaskActionResp.toByteString());
|
||||
}
|
||||
|
||||
/**
|
||||
* PAD发起平行驾驶请求
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param parallelRequest 参数
|
||||
* @return boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean sendParallelDrivingReq(@NonNull String reqNo, @NonNull ParallelDrivingRequest.ParallelRequest parallelRequest) {
|
||||
return sendAiCloudTaskCmd(MessageType.TYPE_SEND_PARALLEL_DRIVING_REQ, AiCloudTask.MessageType.ParallelDrivingCmd, reqNo, parallelRequest.toByteString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ import java.util.regex.Pattern;
|
||||
import bag_manager.BagManagerOuterClass;
|
||||
import chassis.SpecialVehicleTaskCmdOuterClass;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest;
|
||||
|
||||
/**
|
||||
* @ProjectName: lib-adas-fpga
|
||||
@@ -1194,6 +1195,18 @@ public class AdasManager implements IAdasNetCommApi {
|
||||
return mChannel != null && mChannel.sendSweeperCloudSuspendResumeTaskResp(reqNo, bigTaskActionResp);
|
||||
}
|
||||
|
||||
/**
|
||||
* PAD发起平行驾驶请求
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param parallelRequest 参数
|
||||
* @return boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean sendParallelDrivingReq(@NonNull String reqNo, @NonNull ParallelDrivingRequest.ParallelRequest parallelRequest) {
|
||||
return mChannel != null && mChannel.sendParallelDrivingReq(reqNo, parallelRequest);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取工控机固定IP列表
|
||||
*
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.Set;
|
||||
import bag_manager.BagManagerOuterClass;
|
||||
import chassis.SpecialVehicleTaskCmdOuterClass;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest;
|
||||
|
||||
/**
|
||||
* @author nie yunlong
|
||||
@@ -750,6 +751,15 @@ public interface IAdasNetCommApi {
|
||||
*/
|
||||
boolean sendSweeperCloudSuspendResumeTaskResp(@NonNull String reqNo, @NonNull SweeperTaskCloudSuspendResume.BigTaskActionResp bigTaskActionResp);
|
||||
|
||||
/**
|
||||
* PAD发起平行驾驶请求
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param parallelRequest 参数
|
||||
* @return boolean
|
||||
*/
|
||||
boolean sendParallelDrivingReq(@NonNull String reqNo, @NonNull ParallelDrivingRequest.ParallelRequest parallelRequest);
|
||||
|
||||
// TODO 需求暂停 待讨论
|
||||
// boolean getRoutes();
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@ import com.mogo.support.obu.ObuScene;
|
||||
import com.zhidao.support.adas.high.common.MessageType;
|
||||
import com.zhidao.support.adas.high.common.ProtocolStatus;
|
||||
import com.zhjt.mogo.adas.data.AdasConstants;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.zhjt.mogo.adas.data.bean.AdasParam;
|
||||
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
|
||||
import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason;
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus;
|
||||
@@ -29,6 +29,7 @@ import function_state_management.FunctionStates;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import mogo.v2x.MogoV2X;
|
||||
import mogo.v2x.RoadOverviewEvents;
|
||||
import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass;
|
||||
import mogo_msg.MogoReportMsg;
|
||||
import perception.TrafficLightOuterClass;
|
||||
import planning.RoboSweeperTaskIndexOuterClass;
|
||||
@@ -302,7 +303,7 @@ public interface OnAdasListener {
|
||||
* @param sysTime 当前时间戳
|
||||
* @param taskInfo 数据
|
||||
*/
|
||||
void onSweeperFutianCloudTask(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTask.TaskInfo taskInfo);
|
||||
void onSweeperFutianCloudTask(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTask.TaskInfo taskInfo);
|
||||
|
||||
/**
|
||||
* 2、云端下发子任务,请求pad确认(type:100002)-> sweeper_task_confirm.proto
|
||||
@@ -313,7 +314,7 @@ public interface OnAdasListener {
|
||||
* @param sysTime 当前时间戳
|
||||
* @param taskConfirm 数据
|
||||
*/
|
||||
void onSweeperFutianCloudTaskConfirm(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskConfirm.TaskConfirm taskConfirm);
|
||||
void onSweeperFutianCloudTaskConfirm(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskConfirm.TaskConfirm taskConfirm);
|
||||
|
||||
/**
|
||||
* 3、云端下发任务状态到pad(type:100003)-> sweeper_task_status.proto
|
||||
@@ -324,7 +325,7 @@ public interface OnAdasListener {
|
||||
* @param sysTime 当前时间戳
|
||||
* @param taskStatusPush 数据
|
||||
*/
|
||||
void onSweeperFutianCloudTaskStatus(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskStatus.TaskStatusPush taskStatusPush);
|
||||
void onSweeperFutianCloudTaskStatus(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskStatus.TaskStatusPush taskStatusPush);
|
||||
|
||||
/**
|
||||
* 4、云端请求pad结束任务(type:100004)-> sweeper_task_stop.proto
|
||||
@@ -335,7 +336,7 @@ public interface OnAdasListener {
|
||||
* @param sysTime 当前时间戳
|
||||
* @param stopTaskReq 数据
|
||||
*/
|
||||
void onSweeperFutianCloudTaskStop(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskStop.StopTaskReq stopTaskReq);
|
||||
void onSweeperFutianCloudTaskStop(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskStop.StopTaskReq stopTaskReq);
|
||||
|
||||
/**
|
||||
* 5、pad请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto
|
||||
@@ -347,7 +348,7 @@ public interface OnAdasListener {
|
||||
* @param sysTime 当前时间戳
|
||||
* @param suspendResumeTaskResp 数据
|
||||
*/
|
||||
void onSweeperFutianCloudTaskSuspendResume(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp);
|
||||
void onSweeperFutianCloudTaskSuspendResume(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp);
|
||||
|
||||
/**
|
||||
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾(type: 100008)-> sweeper_autopilot.proto
|
||||
@@ -358,7 +359,7 @@ public interface OnAdasListener {
|
||||
* @param sysTime 当前时间戳
|
||||
* @param isBootableResp 数据
|
||||
*/
|
||||
void onSweeperFutianCloudBootable(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperBootable.IsBootableResp isBootableResp);
|
||||
void onSweeperFutianCloudBootable(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperBootable.IsBootableResp isBootableResp);
|
||||
|
||||
/**
|
||||
* 9、云端下发pad大任务状态(type: 100009)-> sweeper_big_task_status.proto
|
||||
@@ -369,7 +370,7 @@ public interface OnAdasListener {
|
||||
* @param sysTime 当前时间戳
|
||||
* @param bigTaskStatusPush 数据
|
||||
*/
|
||||
void onSweeperFutianCloudBigTaskStatus(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush);
|
||||
void onSweeperFutianCloudBigTaskStatus(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush);
|
||||
|
||||
/**
|
||||
* 10、云端下发任务暂停/恢复指令到pad(type: 100010)-> sweeper_task_cloud_suspend_resume.proto
|
||||
@@ -380,15 +381,27 @@ public interface OnAdasListener {
|
||||
* @param sysTime 当前时间戳
|
||||
* @param bigTaskActionPush 数据
|
||||
*/
|
||||
void onSweeperFutianCloudTaskCloudSuspendResume(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskCloudSuspendResume.BigTaskActionPush bigTaskActionPush);
|
||||
void onSweeperFutianCloudTaskCloudSuspendResume(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskCloudSuspendResume.BigTaskActionPush bigTaskActionPush);
|
||||
|
||||
/**
|
||||
* 清扫车云端任务未知类型
|
||||
* 无人化场景
|
||||
* 平行驾驶请求相关状态反馈
|
||||
*
|
||||
* @param header 头
|
||||
* @param messageType 消息类型
|
||||
* @param reqNo 请求编号
|
||||
* @param sysTime 当前时间戳
|
||||
* @param parallelTaskProcessNotice 数据
|
||||
*/
|
||||
void onParallelDrivingResp(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable ParallelTaskProcessNoticeOuterClass.ParallelTaskProcessNotice parallelTaskProcessNotice);
|
||||
|
||||
/**
|
||||
* AI云端任务未知类型
|
||||
*
|
||||
* @param header 头
|
||||
* @param bytes 原始数据
|
||||
*/
|
||||
void onSweeperFutianCloudTaskUnknown(@NonNull MessagePad.Header header, @NonNull byte[] bytes);
|
||||
void onAiCloudTaskUnknown(@NonNull MessagePad.Header header, @NonNull byte[] bytes);
|
||||
|
||||
/**
|
||||
* Bag管理应答
|
||||
|
||||
@@ -73,6 +73,8 @@ public enum MessageType {
|
||||
TYPE_RECEIVE_SWEEPER_CLOUD_TASK_CMD(MessagePad.MessageType.MsgTypeTaskCmd, "云控下发清扫车任务指令"),
|
||||
TYPE_SEND_FSM_STATUS_REASON_QUERY_REQ(MessagePad.MessageType.MsgTypeFSMStatusReasonQueryReq, "FSM状态原因查询"),
|
||||
TYPE_RECEIVE_FSM_STATUS_REASON_QUERY_RESP(MessagePad.MessageType.MsgTypeFSMStatusReasonQueryResp, "FSM状态原因查询应答"),
|
||||
TYPE_SEND_PARALLEL_DRIVING_REQ(MessagePad.MessageType.MsgTypeParallelDrivingCmd, "平行驾驶请求"),
|
||||
TYPE_RECEIVE_PARALLEL_DRIVING_STATUS(MessagePad.MessageType.MsgTypeParallelDrivingCmd, "平行驾驶状态"),
|
||||
//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, "清扫车指标数据"),
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.util.TimerTask;
|
||||
|
||||
import chassis.Chassis;
|
||||
import chassis.ChassisStatesOuterClass;
|
||||
import chassis.VehicleStateOuterClass;
|
||||
import system_master.SystemStatusInfo;
|
||||
|
||||
/**
|
||||
@@ -26,6 +27,7 @@ public class AutopilotAbility250 {
|
||||
private static final String TAG = AutopilotAbility250.class.getSimpleName();
|
||||
private volatile Timer timer;
|
||||
private ChassisStatesOuterClass.ChassisStates chassisStates;
|
||||
private VehicleStateOuterClass.VehicleState vehicleState;
|
||||
private int mapVersion = -1;//MAP版本
|
||||
private int masterVersion = -1;//Master版本
|
||||
private OnAutopilotAbilityListener listener;
|
||||
@@ -57,6 +59,10 @@ public class AutopilotAbility250 {
|
||||
this.chassisStates = chassisStates;
|
||||
}
|
||||
|
||||
protected void setVehicleState(VehicleStateOuterClass.VehicleState vehicleState) {
|
||||
this.vehicleState = vehicleState;
|
||||
}
|
||||
|
||||
private void onCallback(SystemStatusInfo.StatusInfo statusInfo) {
|
||||
boolean isAutopilotAbility = true;//是否能启动自动驾驶
|
||||
ArrayList<UnableAutopilotReason> unableAutopilotReasons = null;//不能启动自动驾驶原因
|
||||
@@ -144,17 +150,19 @@ public class AutopilotAbility250 {
|
||||
unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "档位异常");
|
||||
}
|
||||
}
|
||||
//TODO 关于手刹:不同车型的实现不同所以目前没法使用此字段
|
||||
|
||||
// //电子驻车制动系统
|
||||
// if (chassisStates.hasEpbSystemStates()) {
|
||||
// ChassisStatesOuterClass.EPBSystemStates epb = chassisStates.getEpbSystemStates();
|
||||
// if (epb.hasEpbEnableState()){
|
||||
// epb.getEpbWorkState();
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
if (vehicleState != null) {
|
||||
//TODO 关于手刹:目前只有老底盘中存在这个字段,df360开始,其他车型未知
|
||||
//电子驻车制动系统
|
||||
if (vehicleState.hasParkingBrake()) {
|
||||
boolean isBrake = vehicleState.getParkingBrake();
|
||||
if (isBrake) {
|
||||
isAutopilotAbility = false;
|
||||
unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "施加驻车");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (listener != null) {
|
||||
listener.onAutopilotAbility(isAutopilotAbility, unableAutopilotReasons);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import java.util.ArrayList;
|
||||
|
||||
import chassis.Chassis;
|
||||
import chassis.ChassisStatesOuterClass;
|
||||
import chassis.VehicleStateOuterClass;
|
||||
import system_master.SsmInfo;
|
||||
|
||||
/**
|
||||
@@ -21,6 +22,7 @@ import system_master.SsmInfo;
|
||||
public class AutopilotAbility350And360 {
|
||||
private static final String TAG = AutopilotAbility250.class.getSimpleName();
|
||||
private ChassisStatesOuterClass.ChassisStates chassisStates;
|
||||
private VehicleStateOuterClass.VehicleState vehicleState;
|
||||
private int masterVersion = -1;//Master版本
|
||||
private OnAutopilotAbilityListener listener;
|
||||
|
||||
@@ -43,6 +45,10 @@ public class AutopilotAbility350And360 {
|
||||
this.chassisStates = chassisStates;
|
||||
}
|
||||
|
||||
protected void setVehicleState(VehicleStateOuterClass.VehicleState vehicleState) {
|
||||
this.vehicleState = vehicleState;
|
||||
}
|
||||
|
||||
private void onCallback(SsmInfo.SsmStatusInf statusInfo) {
|
||||
boolean isAutopilotAbility = true;//是否能启动自动驾驶
|
||||
ArrayList<UnableAutopilotReason> unableAutopilotReasons = null;//不能启动自动驾驶原因
|
||||
@@ -117,17 +123,19 @@ public class AutopilotAbility350And360 {
|
||||
unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "档位异常");
|
||||
}
|
||||
}
|
||||
//TODO 关于手刹:不同车型的实现不同所以目前没法使用此字段
|
||||
|
||||
// //电子驻车制动系统
|
||||
// if (chassisStates.hasEpbSystemStates()) {
|
||||
// ChassisStatesOuterClass.EPBSystemStates epb = chassisStates.getEpbSystemStates();
|
||||
// if (epb.hasEpbEnableState()){
|
||||
// epb.getEpbWorkState();
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
if (vehicleState != null) {
|
||||
//TODO 关于手刹:目前只有老底盘中存在这个字段,df360开始,其他车型未知
|
||||
//电子驻车制动系统
|
||||
if (vehicleState.hasParkingBrake()) {
|
||||
boolean isBrake = vehicleState.getParkingBrake();
|
||||
if (isBrake) {
|
||||
isAutopilotAbility = false;
|
||||
unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "施加驻车");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (listener != null) {
|
||||
listener.onAutopilotAbility(isAutopilotAbility, unableAutopilotReasons);
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import java.util.TimerTask;
|
||||
|
||||
import chassis.Chassis;
|
||||
import chassis.ChassisStatesOuterClass;
|
||||
import chassis.VehicleStateOuterClass;
|
||||
import function_state_management.FSMStatusReasonQueryOuterClass;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import system_master.SsmInfo;
|
||||
@@ -206,6 +207,20 @@ public class AutopilotAbilityManager implements AutopilotAbility230.OnAutopilotA
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 老底盘中手刹状态更新(新底盘PB中没有所以单独传递)
|
||||
*
|
||||
* @param vehicleState 底盘
|
||||
*/
|
||||
public void setVehicleState(VehicleStateOuterClass.VehicleState vehicleState) {
|
||||
if (autopilotAbility250 != null) {
|
||||
autopilotAbility250.setVehicleState(vehicleState);
|
||||
}
|
||||
if (autopilotAbility350And360 != null) {
|
||||
autopilotAbility350And360.setVehicleState(vehicleState);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* FSM OFF状态原因更新
|
||||
*
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.zhidao.support.adas.high.OnAdasListener;
|
||||
import com.zhidao.support.adas.high.common.ByteUtil;
|
||||
import com.zhidao.support.adas.high.common.CupidLogUtils;
|
||||
import com.zhidao.support.adas.high.protocol.RawData;
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus;
|
||||
@@ -20,32 +20,33 @@ import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass;
|
||||
|
||||
/**
|
||||
* 清扫车云端任务调度
|
||||
* 云控任务:清扫车任务调度、无人化场景,平行驾驶请求相关指令及状态反馈
|
||||
*/
|
||||
public class SweeperCloudTaskMessage extends MyAbstractMessageHandler {
|
||||
public class AiCloudTaskMessage extends MyAbstractMessageHandler {
|
||||
|
||||
public SweeperCloudTaskMessage() {
|
||||
public AiCloudTaskMessage() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
|
||||
byte[] bytes = raw.originalData.toByteArray();
|
||||
SweeperCloudTask.SweeperMessage message = SweeperCloudTask.SweeperMessage.parser().parseFrom(bytes, raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
|
||||
AdasChannel.calculateTimeConsumingOnDispatchRaw("清扫车云端任务调度", raw.receiveTime);
|
||||
AiCloudTask.AiCloudPadMessage message = AiCloudTask.AiCloudPadMessage.parser().parseFrom(bytes, 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();
|
||||
SweeperCloudTask.MessageType msgType = SweeperCloudTask.MessageType.forNumber(message.getMsgType());//消息类型,响应请求时,使用对应请求的消息类型
|
||||
AiCloudTask.MessageType msgType = AiCloudTask.MessageType.forNumber(message.getMsgType());//消息类型,响应请求时,使用对应请求的消息类型
|
||||
String reqNo = message.getReqNo(); //请求编号,响应请求时,使用请求方的请求编号
|
||||
long sysTime = message.getSysTime(); //当前时间戳
|
||||
ByteString payload = message.getPayload();
|
||||
CupidLogUtils.i("SweeperCloudTaskMessage", "MsgType=" + (msgType == null ? "null" : msgType.getNumber()) + " reqNo=" + reqNo + " sysTime=" + sysTime);
|
||||
boolean isExistPayload = payload != null && !payload.isEmpty();
|
||||
if (msgType == SweeperCloudTask.MessageType.CloudPushTask || msgType == SweeperCloudTask.MessageType.PadSendGetTaskReq) {
|
||||
if (msgType == AiCloudTask.MessageType.CloudPushTask || msgType == AiCloudTask.MessageType.PadSendGetTaskReq) {
|
||||
//1、云端下发大任务信息(type: 100001)-> sweeper_task.proto
|
||||
//7、pad主动拉取当前车辆正在执行任务的完整信息(type:100007)-> sweeper_task.proto
|
||||
SweeperTask.TaskInfo taskInfo = null;
|
||||
@@ -55,7 +56,7 @@ public class SweeperCloudTaskMessage extends MyAbstractMessageHandler {
|
||||
// Log.i("SweeperCloudTaskMessage", " msgType=" + msgType + " " + (taskInfo == null ? "null" :
|
||||
// TextFormat.printer().escapingNonAscii(false).printToString(taskInfo)));
|
||||
adasListener.onSweeperFutianCloudTask(header, msgType, reqNo, sysTime, taskInfo);
|
||||
} else if (msgType == SweeperCloudTask.MessageType.CloudPushTaskConfirm) {
|
||||
} else if (msgType == AiCloudTask.MessageType.CloudPushTaskConfirm) {
|
||||
//2、云端下发子任务,请求pad确认(type:100002)-> sweeper_task_confirm.proto
|
||||
SweeperTaskConfirm.TaskConfirm taskConfirm = null;
|
||||
if (isExistPayload) {
|
||||
@@ -64,7 +65,7 @@ public class SweeperCloudTaskMessage extends MyAbstractMessageHandler {
|
||||
// Log.i("SweeperCloudTaskMessage", " msgType=" + msgType + " " + (taskConfirm == null ? "null" :
|
||||
// TextFormat.printer().escapingNonAscii(false).printToString(taskConfirm)));
|
||||
adasListener.onSweeperFutianCloudTaskConfirm(header, msgType, reqNo, sysTime, taskConfirm);
|
||||
} else if (msgType == SweeperCloudTask.MessageType.CloudPushTaskStatus) {
|
||||
} else if (msgType == AiCloudTask.MessageType.CloudPushTaskStatus) {
|
||||
//3、云端下发任务状态到pad(type:100003)-> sweeper_task_status.proto
|
||||
SweeperTaskStatus.TaskStatusPush taskStatusPush = null;
|
||||
if (isExistPayload) {
|
||||
@@ -73,7 +74,7 @@ public class SweeperCloudTaskMessage extends MyAbstractMessageHandler {
|
||||
// Log.i("SweeperCloudTaskMessage", " msgType=" + msgType + " " + (taskStatusPush == null ? "null" :
|
||||
// TextFormat.printer().escapingNonAscii(false).printToString(taskStatusPush)));
|
||||
adasListener.onSweeperFutianCloudTaskStatus(header, msgType, reqNo, sysTime, taskStatusPush);
|
||||
} else if (msgType == SweeperCloudTask.MessageType.CloudPushTaskStop) {
|
||||
} else if (msgType == AiCloudTask.MessageType.CloudPushTaskStop) {
|
||||
//4、云端请求pad结束任务(type:100004)-> sweeper_task_stop.proto
|
||||
SweeperTaskStop.StopTaskReq stopTaskReq = null;
|
||||
if (isExistPayload) {
|
||||
@@ -82,7 +83,7 @@ public class SweeperCloudTaskMessage extends MyAbstractMessageHandler {
|
||||
// Log.i("SweeperCloudTaskMessage", " msgType=" + msgType + " " + (stopTaskReq == null ? "null" :
|
||||
// TextFormat.printer().escapingNonAscii(false).printToString(stopTaskReq)));
|
||||
adasListener.onSweeperFutianCloudTaskStop(header, msgType, reqNo, sysTime, stopTaskReq);
|
||||
} else if (msgType == SweeperCloudTask.MessageType.PadSendTaskSuspend || msgType == SweeperCloudTask.MessageType.PadSendTaskResume) {
|
||||
} else if (msgType == AiCloudTask.MessageType.PadSendTaskSuspend || msgType == AiCloudTask.MessageType.PadSendTaskResume) {
|
||||
//5、pad请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto
|
||||
//6、pad请求恢复挂起的任务(type:100006)-> sweeper_task_suspend_resume.proto
|
||||
SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp = null;
|
||||
@@ -92,7 +93,7 @@ public class SweeperCloudTaskMessage extends MyAbstractMessageHandler {
|
||||
// Log.i("SweeperCloudTaskMessage", " msgType=" + msgType + " " + (suspendResumeTaskResp == null ? "null" :
|
||||
// TextFormat.printer().escapingNonAscii(false).printToString(suspendResumeTaskResp)));
|
||||
adasListener.onSweeperFutianCloudTaskSuspendResume(header, msgType, reqNo, sysTime, suspendResumeTaskResp);
|
||||
} else if (msgType == SweeperCloudTask.MessageType.PadSendBootable) {
|
||||
} else if (msgType == AiCloudTask.MessageType.PadSendBootable) {
|
||||
//8、接管后回自驾-pad上报状态给云端 云端下发启动自驾(type: 100008)-> sweeper_autopilot.proto
|
||||
SweeperBootable.IsBootableResp isBootableResp = null;
|
||||
if (isExistPayload) {
|
||||
@@ -101,7 +102,7 @@ public class SweeperCloudTaskMessage extends MyAbstractMessageHandler {
|
||||
// Log.i("SweeperCloudTaskMessage", " msgType=" + msgType + " " + (isBootableResp == null ? "null" :
|
||||
// TextFormat.printer().escapingNonAscii(false).printToString(isBootableResp)));
|
||||
adasListener.onSweeperFutianCloudBootable(header, msgType, reqNo, sysTime, isBootableResp);
|
||||
} else if (msgType == SweeperCloudTask.MessageType.CloudPushBigTaskStatus) {
|
||||
} else if (msgType == AiCloudTask.MessageType.CloudPushBigTaskStatus) {
|
||||
//9、云端下发pad大任务状态(type: 100009)-> sweeper_big_task_status.proto
|
||||
SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush = null;
|
||||
if (isExistPayload) {
|
||||
@@ -110,7 +111,7 @@ public class SweeperCloudTaskMessage extends MyAbstractMessageHandler {
|
||||
// Log.i("SweeperCloudTaskMessage", " msgType=" + msgType + " " + (bigTaskStatusPush == null ? "null" :
|
||||
// TextFormat.printer().escapingNonAscii(false).printToString(bigTaskStatusPush)));
|
||||
adasListener.onSweeperFutianCloudBigTaskStatus(header, msgType, reqNo, sysTime, bigTaskStatusPush);
|
||||
} else if (msgType == SweeperCloudTask.MessageType.CloudPushTaskSuspendResume) {
|
||||
} else if (msgType == AiCloudTask.MessageType.CloudPushTaskSuspendResume) {
|
||||
//10、云端下发任务暂停/恢复指令到pad(type: 100010)
|
||||
SweeperTaskCloudSuspendResume.BigTaskActionPush bigTaskActionPush = null;
|
||||
if (isExistPayload) {
|
||||
@@ -119,12 +120,19 @@ public class SweeperCloudTaskMessage extends MyAbstractMessageHandler {
|
||||
// Log.i("SweeperCloudTaskMessage", " msgType=" + msgType + " " + (bigTaskActionPush == null ? "null" :
|
||||
// TextFormat.printer().escapingNonAscii(false).printToString(bigTaskActionPush)));
|
||||
adasListener.onSweeperFutianCloudTaskCloudSuspendResume(header, msgType, reqNo, sysTime, bigTaskActionPush);
|
||||
} else if (msgType == AiCloudTask.MessageType.ParallelDrivingCmd) {
|
||||
//无人化场景,平行驾驶请求相关指令及状态反馈
|
||||
ParallelTaskProcessNoticeOuterClass.ParallelTaskProcessNotice parallelTaskProcessNotice = null;
|
||||
if (isExistPayload) {
|
||||
parallelTaskProcessNotice = ParallelTaskProcessNoticeOuterClass.ParallelTaskProcessNotice.parseFrom(payload);
|
||||
}
|
||||
adasListener.onParallelDrivingResp(header, msgType, reqNo, sysTime, parallelTaskProcessNotice);
|
||||
} else {
|
||||
//未知数据类型
|
||||
CupidLogUtils.i("SweeperCloudTaskMessage", " 错误数据=" + ByteUtil.byteArrToHex(bytes));
|
||||
adasListener.onSweeperFutianCloudTaskUnknown(header, bytes);
|
||||
adasListener.onAiCloudTaskUnknown(header, bytes);
|
||||
}
|
||||
}
|
||||
AdasChannel.calculateTimeConsumingBusiness("清扫车云端任务调度", nowTime);
|
||||
AdasChannel.calculateTimeConsumingBusiness("云控任务", nowTime);
|
||||
}
|
||||
}
|
||||
@@ -42,7 +42,7 @@ public class MyMessageFactory implements IMyMessageFactory {
|
||||
private IMsg v2nCongestionEventMessage;//主车附近事件推送
|
||||
private IMsg v2nGlobalPathEventsMessage;//主车路径全局事件推送
|
||||
private IMsg getParamRespMessage;//参数获取应答
|
||||
private IMsg sweeperCloudTaskMessage;//云控下发清扫车任务指令
|
||||
private IMsg aiCloudTaskMessage;//云控任务:清扫车任务指令、无人化场景,平行驾驶请求相关指令及状态反馈
|
||||
private IMsg m1StitchedVideoMessage;//M1拼接视频
|
||||
private IMsg fSMStatusReasonRespondMessage;//FSM状态原因查询
|
||||
|
||||
@@ -228,12 +228,12 @@ public class MyMessageFactory implements IMyMessageFactory {
|
||||
getParamRespMessage = new GetParamRespMessage();
|
||||
}
|
||||
return getParamRespMessage;
|
||||
} else if (messageType == MessageType.TYPE_RECEIVE_SWEEPER_CLOUD_TASK_CMD.typeCode) {
|
||||
//云控下发清扫车任务指令
|
||||
if (sweeperCloudTaskMessage == null) {
|
||||
sweeperCloudTaskMessage = new SweeperCloudTaskMessage();
|
||||
} else if (messageType == MessageType.TYPE_RECEIVE_SWEEPER_CLOUD_TASK_CMD.typeCode || messageType == MessageType.TYPE_RECEIVE_PARALLEL_DRIVING_STATUS.typeCode) {
|
||||
//云控任务:清扫车任务指令、无人化场景,平行驾驶请求相关指令及状态反馈
|
||||
if (aiCloudTaskMessage == null) {
|
||||
aiCloudTaskMessage = new AiCloudTaskMessage();
|
||||
}
|
||||
return sweeperCloudTaskMessage;
|
||||
return aiCloudTaskMessage;
|
||||
} else if (messageType == MessageType.TYPE_RECEIVE_M1_STITCHED_VIDEO.typeCode) {
|
||||
//M1拼接视频
|
||||
if (m1StitchedVideoMessage == null) {
|
||||
|
||||
@@ -26,6 +26,7 @@ public class VehicleStateMessage extends MyAbstractMessageHandler {
|
||||
long nowTime = 0;
|
||||
if (CupidLogUtils.isEnableLog())
|
||||
nowTime = SystemClock.elapsedRealtime();
|
||||
AutopilotAbilityManager.getInstance().setVehicleState(vehicleState);
|
||||
ChassisStatesOuterClass.ChassisStates chassisStates = compatibility(adasListener, raw, vehicleState);
|
||||
if (adasListener != null) {
|
||||
//TODO 暂时关闭老底盘转发 后期 会删除 onVehicleState
|
||||
|
||||
Reference in New Issue
Block a user