[610][adas]添加平行驾驶相关接口;能否启动自驾接口添加手刹状态判断;修改清扫车云控PB与平行驾驶PB共用

This commit is contained in:
xinfengkun
2023-09-07 20:26:20 +08:00
parent 2f4f6f8d49
commit 76cdcf7e72
26 changed files with 336 additions and 129 deletions

View File

@@ -3,7 +3,7 @@ package com.mogo.och.sweepercloud.callback
import chassis.ChassisStatesOuterClass
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean
import com.mogo.och.sweepercloud.database.bean.WeltDataBean
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.bootable.SweeperBootable.IsBootableResp
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
@@ -22,7 +22,7 @@ interface ISweeperCloudTaskCallback {
/**
* 接取云端任务/正在执行中任务信息回调
*/
fun onSweeperCloudTask(messageType: SweeperCloudTask.MessageType,taskInfo: SweeperTask.TaskInfo?)
fun onSweeperCloudTask(messageType: AiCloudTask.MessageType, taskInfo: SweeperTask.TaskInfo?)
/**
* 云端下发子任务请求pad确认
@@ -42,7 +42,7 @@ interface ISweeperCloudTaskCallback {
/**
* 挂起/恢复
*/
fun onSweeperCloudTaskSuspendResume(messageType: SweeperCloudTask.MessageType,taskId:String,subTaskId:String,code:Code)
fun onSweeperCloudTaskSuspendResume(messageType: AiCloudTask.MessageType,taskId:String,subTaskId:String,code:Code)
/**
* pad请求云端进入自驾

View File

@@ -39,7 +39,7 @@ import com.mogo.och.sweepercloud.constant.SweeperConst;
import com.mogo.och.sweepercloud.database.MyDataBase;
import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils;
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;
@@ -332,7 +332,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
}
@Override
public void onSweeperFutianCloudTask(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
public void onSweeperFutianCloudTask(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
SweeperTask.TaskInfo taskInfo) {
CallerLogger.d(M_SWEEPER + TAG,
@@ -344,7 +344,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
}
@Override
public void onSweeperFutianCloudTaskConfirm(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
public void onSweeperFutianCloudTaskConfirm(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
SweeperTaskConfirm.TaskConfirm taskConfirm) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime" + sysTime + " reqNo" + reqNo + " " +
@@ -356,7 +356,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
}
@Override
public void onSweeperFutianCloudTaskStatus(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
public void onSweeperFutianCloudTaskStatus(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
SweeperTaskStatus.TaskStatusPush taskStatusPush) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime" + sysTime + " reqNo" + reqNo + " " +
"onSweeperFutianCloudTaskStatus" + printMessage(taskStatusPush));
@@ -367,7 +367,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
}
@Override
public void onSweeperFutianCloudTaskStop(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
public void onSweeperFutianCloudTaskStop(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
SweeperTaskStop.StopTaskReq stopTaskReq) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime" + sysTime + " reqNo" + reqNo + " " +
"onSweeperFutianCloudTaskStop" + printMessage(stopTaskReq));
@@ -378,7 +378,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
}
@Override
public void onSweeperFutianCloudTaskSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
public void onSweeperFutianCloudTaskSuspendResume(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime" + sysTime + " reqNo" + reqNo + " " +
"onSweeperFutianCloudTaskSuspendResume" + printMessage(suspendResumeTaskResp));
@@ -390,7 +390,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
}
@Override
public void onSweeperFutianCloudBootable(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
public void onSweeperFutianCloudBootable(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
SweeperBootable.IsBootableResp isBootableResp) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime" + sysTime + " reqNo" + reqNo + " " +
"onSweeperFutianCloudBootable" + printMessage(isBootableResp));
@@ -401,7 +401,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
}
@Override
public void onSweeperFutianCloudBigTaskStatus(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
public void onSweeperFutianCloudBigTaskStatus(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime" + sysTime + " reqNo" + reqNo + " " +
"onSweeperFutianCloudBigTaskStatus" + printMessage(bigTaskStatusPush));
@@ -412,7 +412,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
}
@Override
public void onSweeperFutianCloudTaskCloudSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime,
public void onSweeperFutianCloudTaskCloudSuspendResume(@NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime,
@Nullable SweeperTaskCloudSuspendResume.BigTaskActionPush bigTaskActionPush) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime" + sysTime + " reqNo" + reqNo + " " +
"onSweeperFutianCloudTaskCloudSuspendResume" + printMessage(bigTaskActionPush));
@@ -521,7 +521,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
SweeperTask.GetTaskReq getTaskReq = builder.build();
CallerLogger.d(M_SWEEPER + TAG,
"getCurrentTask:" + printMessage(getTaskReq) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.PadSendGetTaskReq.getNumber());
"getCurrentTask:" + printMessage(getTaskReq) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.PadSendGetTaskReq.getNumber());
getAutoPilotControlManager().sendSweeperGetTaskReq(reqNo, getTaskReq);
}
@@ -534,11 +534,11 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
builder.setTaskId(taskId);
builder.setCode(code);
SweeperTask.StartTaskResp startTaskResp = builder.build();
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTask.getNumber());
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTask.getNumber());
getAutoPilotControlManager().sendSweeperStartTaskResp(reqNo, startTaskResp);
CallerLogger.d(M_SWEEPER + TAG,
"sendSweeperStartTaskResp:" + printMessage(startTaskResp) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.CloudPushTask.getNumber());
"sendSweeperStartTaskResp:" + printMessage(startTaskResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTask.getNumber());
}
/**
@@ -551,9 +551,9 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
builder.setSubTaskId(subTaskId);
builder.setCode(code);
SweeperTaskConfirm.TaskConfirmResp taskConfirmResp = builder.build();
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
CallerLogger.d(M_SWEEPER + TAG,
"sendSweeperTaskConfirmResp" + printMessage(taskConfirmResp) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
"sendSweeperTaskConfirmResp" + printMessage(taskConfirmResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
getAutoPilotControlManager().sendSweeperTaskConfirmResp(reqNo, taskConfirmResp);
}
@@ -569,10 +569,10 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
builder.setTaskId(taskId);
builder.setCode(code);
SweeperTaskStop.StopTaskResp stopTaskResp = builder.build();
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskStop.getNumber());
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTaskStop.getNumber());
CallerLogger.d(M_SWEEPER + TAG,
"sendSweeperStopTaskResp" + printMessage(stopTaskResp) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.CloudPushTaskStop.getNumber());
"sendSweeperStopTaskResp" + printMessage(stopTaskResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskStop.getNumber());
getAutoPilotControlManager().sendSweeperStopTaskResp(reqNo, stopTaskResp);
}
@@ -593,7 +593,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
String reqNo = SweeperCloudTaskUtils.getRequestId();
CallerLogger.d(M_SWEEPER + TAG,
"sendSweeperAutopilotBootable" + printMessage(isBootable) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.PadSendBootable.getNumber());
"sendSweeperAutopilotBootable" + printMessage(isBootable) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.PadSendBootable.getNumber());
getAutoPilotControlManager().sendSweeperAutopilotBootable(reqNo, isBootable);
//SweeperCloudTaskUtils.mockSendCloudBootable();
}
@@ -609,10 +609,10 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
builder.setTaskId(taskId);
builder.setCode(code);
SweeperTaskCloudSuspendResume.BigTaskActionResp resp = builder.build();
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskSuspendResume.getNumber());
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTaskSuspendResume.getNumber());
CallerLogger.d(M_SWEEPER + TAG,
"sendSweeperSuspendResumeTaskResp" + printMessage(resp) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.CloudPushTaskSuspendResume);
"sendSweeperSuspendResumeTaskResp" + printMessage(resp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskSuspendResume);
getAutoPilotControlManager().sendSweeperCloudSuspendResumeTaskResp(reqNo, resp);
}

View File

@@ -19,7 +19,7 @@ import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener
import com.mogo.och.sweepercloud.constant.SweeperConst
import com.mogo.och.sweepercloud.model.SweeperTaskModel
import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask.MessageType
import com.zhjt.mogo.adas.data.AiCloudTask
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.Location
@@ -50,7 +50,7 @@ object SweeperCloudTaskUtils {
* 模拟云控发送任务给pad
*/
@JvmStatic
fun mockSendCloudTaskInfo(messageType: MessageType) {
fun mockSendCloudTaskInfo(messageType: AiCloudTask.MessageType) {
val builder = TaskInfo.newBuilder()
builder.sn = getDriverSn()
builder.taskId = "10"
@@ -169,7 +169,7 @@ object SweeperCloudTaskUtils {
builder.taskId = "10"
builder.subTaskId = "1"
SweeperTaskModel.getInstance().onSweeperFutianCloudTaskConfirm(
MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}",
AiCloudTask.MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}",
System.currentTimeMillis(), builder.build()
)
}
@@ -185,7 +185,7 @@ object SweeperCloudTaskUtils {
builder.subTaskId = "1"
builder.taskStatus = SweeperCommon.TaskStatus.RUNNING
SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStatus(
MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}",
AiCloudTask.MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}",
System.currentTimeMillis(), builder.build()
)
}
@@ -200,7 +200,7 @@ object SweeperCloudTaskUtils {
builder.taskId = "10"
builder.type = SweeperTaskStop.StopTaskType.ADVANCE
SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStop(
MessageType.CloudPushTaskStop, "${System.currentTimeMillis()}",
AiCloudTask.MessageType.CloudPushTaskStop, "${System.currentTimeMillis()}",
System.currentTimeMillis(), builder.build()
)
}
@@ -216,7 +216,7 @@ object SweeperCloudTaskUtils {
builder.taskStatus = SweeperCommon.TaskStatus.FINISHED
builder.systemTime = System.currentTimeMillis()
SweeperTaskModel.getInstance().onSweeperFutianCloudBigTaskStatus(
MessageType.CloudPushBigTaskStatus, "${System.currentTimeMillis()}",
AiCloudTask.MessageType.CloudPushBigTaskStatus, "${System.currentTimeMillis()}",
System.currentTimeMillis(), builder.build()
)
}
@@ -233,7 +233,7 @@ object SweeperCloudTaskUtils {
builder.code = SweeperCommon.Code.SUCCEED
UiThreadHandler.getsUiHandler().postDelayed({
SweeperTaskModel.getInstance().onSweeperFutianCloudBootable(
MessageType.PadSendBootable, "${System.currentTimeMillis()}",
AiCloudTask.MessageType.PadSendBootable, "${System.currentTimeMillis()}",
System.currentTimeMillis(), builder.build()
)
}, 10000)

View File

@@ -70,6 +70,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
import com.zhjt.service.chain.ChainLog
import io.netty.channel.Channel
import mogo.telematics.pad.MessagePad
import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest
import java.util.*
import java.util.concurrent.TimeUnit
@@ -1093,6 +1094,13 @@ class MoGoAutopilotControlProvider :
return AdasManager.getInstance().sendSweeperCloudSuspendResumeTaskResp(reqNo, bigTaskActionResp)
}
override fun sendParallelDrivingReq(
reqNo: String,
parallelRequest: ParallelDrivingRequest.ParallelRequest
): Boolean {
return AdasManager.getInstance().sendParallelDrivingReq(reqNo, parallelRequest)
}
override fun setIsDrawPointCloud(isDrawPointCloud: Boolean) {
if (isDrawPointCloud) {
AdasManager.getInstance().subscribeInterface(

View File

@@ -56,9 +56,9 @@ import com.mogo.support.obu.ObuScene
import com.zhidao.support.adas.high.OnAdasListener
import com.zhjt.mogo.adas.data.bean.AdasParam
import com.zhidao.support.adas.high.common.ProtocolStatus
import com.zhjt.mogo.adas.data.AiCloudTask
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.s_r.SweeperTaskSuspendResume
@@ -73,6 +73,7 @@ import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.v2x.MogoV2X
import mogo.v2x.RoadOverviewEvents
import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass
import mogo_msg.MogoReportMsg
import perception.TrafficLightOuterClass
import planning.RoboSweeperTaskIndexOuterClass
@@ -576,7 +577,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
*/
override fun onSweeperFutianCloudTask(
header: MessagePad.Header,
messageType: SweeperCloudTask.MessageType,
messageType: AiCloudTask.MessageType,
reqNo: String?,
sysTime: Long,
taskInfo: SweeperTask.TaskInfo?
@@ -600,7 +601,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
*/
override fun onSweeperFutianCloudTaskConfirm(
header: MessagePad.Header,
messageType: SweeperCloudTask.MessageType,
messageType: AiCloudTask.MessageType,
reqNo: String?,
sysTime: Long,
taskConfirm: SweeperTaskConfirm.TaskConfirm?
@@ -624,7 +625,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
*/
override fun onSweeperFutianCloudTaskStatus(
header: MessagePad.Header,
messageType: SweeperCloudTask.MessageType,
messageType: AiCloudTask.MessageType,
reqNo: String?,
sysTime: Long,
taskStatusPush: SweeperTaskStatus.TaskStatusPush?
@@ -648,7 +649,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
*/
override fun onSweeperFutianCloudTaskStop(
header: MessagePad.Header,
messageType: SweeperCloudTask.MessageType,
messageType: AiCloudTask.MessageType,
reqNo: String?,
sysTime: Long,
stopTaskReq: SweeperTaskStop.StopTaskReq?
@@ -673,7 +674,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
*/
override fun onSweeperFutianCloudTaskSuspendResume(
header: MessagePad.Header,
messageType: SweeperCloudTask.MessageType,
messageType: AiCloudTask.MessageType,
reqNo: String?,
sysTime: Long,
suspendResumeTaskResp: SweeperTaskSuspendResume.SuspendResumeTaskResp?
@@ -697,7 +698,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
*/
override fun onSweeperFutianCloudBootable(
header: MessagePad.Header,
messageType: SweeperCloudTask.MessageType,
messageType: AiCloudTask.MessageType,
reqNo: String?,
sysTime: Long,
isBootableResp: SweeperBootable.IsBootableResp?
@@ -721,7 +722,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
*/
override fun onSweeperFutianCloudBigTaskStatus(
header: MessagePad.Header,
messageType: SweeperCloudTask.MessageType,
messageType: AiCloudTask.MessageType,
reqNo: String?,
sysTime: Long,
bigTaskStatusPush: SweeperBigTaskStatus.BigTaskStatusPush?
@@ -743,17 +744,37 @@ class MoGoAdasListenerImpl : OnAdasListener {
* @param sysTime 当前时间戳
* @param bigTaskActionPush 数据
*/
override fun onSweeperFutianCloudTaskCloudSuspendResume(header: MessagePad.Header, messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskActionPush: SweeperTaskCloudSuspendResume.BigTaskActionPush?) {
override fun onSweeperFutianCloudTaskCloudSuspendResume(header: MessagePad.Header, messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskActionPush: SweeperTaskCloudSuspendResume.BigTaskActionPush?) {
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudTaskCloudSuspendResume(messageType, reqNo, sysTime, bigTaskActionPush)
}
/**
* 无人化场景
* 平行驾驶请求相关状态反馈
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param parallelTaskProcessNotice 数据
*/
override fun onParallelDrivingResp(
header: MessagePad.Header,
messageType: AiCloudTask.MessageType,
reqNo: String?,
sysTime: Long,
parallelTaskProcessNotice: ParallelTaskProcessNoticeOuterClass.ParallelTaskProcessNotice?
) {
CallerParallelDrivingListenerManager.invokeParallelDrivingListener(parallelTaskProcessNotice)
}
/**
* 清扫车云端任务未知类型
*
* @param header 头
* @param bytes 原始数据
*/
override fun onSweeperFutianCloudTaskUnknown(header: MessagePad.Header, bytes: ByteArray) {
override fun onAiCloudTaskUnknown(header: MessagePad.Header, bytes: ByteArray) {
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudTaskUnknown(bytes)
}

View File

@@ -13,6 +13,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfi
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskResp
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume.BigTaskActionResp
import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest
/**
* @author xiaoyuzhou
@@ -458,6 +459,15 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider {
*/
fun sendSweeperAutopilotBootable(reqNo: String, isBootable: IsBootable): Boolean
/**
* PAD发起平行驾驶请求
*
* @param reqNo 请求编号(目前没有传递需求,可以传null
* @param parallelRequest 参数
* @return boolean
*/
fun sendParallelDrivingReq(reqNo: String, parallelRequest: ParallelDrivingRequest.ParallelRequest): Boolean
/**
* pad收到云端下发暂停恢复响应
* 10、云端下发任务暂停/恢复指令到padtype: 100010sweeper_task_cloud_suspend_resume.proto/BigTaskActionResp

View File

@@ -0,0 +1,16 @@
package com.mogo.eagle.core.function.api.autopilot
import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass
/**
* 平行驾驶状态
*/
interface IMoGoParallelDrivingStatusListener {
/**
* 需要判空
*/
fun onParallelDrivingResp(
parallelTaskProcessNotice: ParallelTaskProcessNoticeOuterClass.ParallelTaskProcessNotice?
)
}

View File

@@ -1,6 +1,6 @@
package com.mogo.eagle.core.function.api.autopilot
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask
import com.zhjt.mogo.adas.data.AiCloudTask
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable.IsBootableResp
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus.BigTaskStatusPush
@@ -24,7 +24,7 @@ interface IMoGoSweeperFutianCloudTaskListener {
* @param sysTime 当前时间戳
* @param taskInfo 数据
*/
fun onSweeperFutianCloudTask(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, taskInfo: SweeperTask.TaskInfo?)
fun onSweeperFutianCloudTask(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, taskInfo: SweeperTask.TaskInfo?)
/**
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto
@@ -34,7 +34,7 @@ interface IMoGoSweeperFutianCloudTaskListener {
* @param sysTime 当前时间戳
* @param taskConfirm 数据
*/
fun onSweeperFutianCloudTaskConfirm(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, taskConfirm: TaskConfirm?)
fun onSweeperFutianCloudTaskConfirm(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, taskConfirm: TaskConfirm?)
/**
* 3、云端下发任务状态到padtype100003-> sweeper_task_status.proto
@@ -44,7 +44,7 @@ interface IMoGoSweeperFutianCloudTaskListener {
* @param sysTime 当前时间戳
* @param taskStatusPush 数据
*/
fun onSweeperFutianCloudTaskStatus(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, taskStatusPush: TaskStatusPush?)
fun onSweeperFutianCloudTaskStatus(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, taskStatusPush: TaskStatusPush?)
/**
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto
@@ -54,7 +54,7 @@ interface IMoGoSweeperFutianCloudTaskListener {
* @param sysTime 当前时间戳
* @param stopTaskReq 数据
*/
fun onSweeperFutianCloudTaskStop(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, stopTaskReq: StopTaskReq?)
fun onSweeperFutianCloudTaskStop(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, stopTaskReq: StopTaskReq?)
/**
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto
@@ -65,7 +65,7 @@ interface IMoGoSweeperFutianCloudTaskListener {
* @param sysTime 当前时间戳
* @param suspendResumeTaskResp 数据
*/
fun onSweeperFutianCloudTaskSuspendResume(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, suspendResumeTaskResp: SuspendResumeTaskResp?)
fun onSweeperFutianCloudTaskSuspendResume(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, suspendResumeTaskResp: SuspendResumeTaskResp?)
/**
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008-> sweeper_autopilot.proto
@@ -75,7 +75,7 @@ interface IMoGoSweeperFutianCloudTaskListener {
* @param sysTime 当前时间戳
* @param isBootableResp 数据
*/
fun onSweeperFutianCloudBootable(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, isBootableResp: IsBootableResp?)
fun onSweeperFutianCloudBootable(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, isBootableResp: IsBootableResp?)
/**
* 9、云端下发pad大任务状态type: 100009-> sweeper_big_task_status.proto
@@ -85,7 +85,7 @@ interface IMoGoSweeperFutianCloudTaskListener {
* @param sysTime 当前时间戳
* @param bigTaskStatusPush 数据
*/
fun onSweeperFutianCloudBigTaskStatus(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskStatusPush: BigTaskStatusPush?)
fun onSweeperFutianCloudBigTaskStatus(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskStatusPush: BigTaskStatusPush?)
/**
* 10、云端下发任务暂停/恢复指令到padtype: 100010-> sweeper_task_cloud_suspend_resume.proto
@@ -95,7 +95,7 @@ interface IMoGoSweeperFutianCloudTaskListener {
* @param sysTime 当前时间戳
* @param bigTaskActionPush 数据
*/
fun onSweeperFutianCloudTaskCloudSuspendResume(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskActionPush: BigTaskActionPush?)
fun onSweeperFutianCloudTaskCloudSuspendResume(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskActionPush: BigTaskActionPush?)
/**
* 清扫车云端任务未知类型

View File

@@ -24,6 +24,7 @@ import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume.BigTaskActionResp
import com.zhjt.service.chain.ChainLog
import com.zhjt.service_biz.BizConfig
import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest
import kotlin.random.Random
@@ -642,6 +643,17 @@ object CallerAutoPilotControlManager {
return providerApi?.sendSweeperCloudSuspendResumeTaskResp(reqNo, bigTaskActionResp) ?: false
}
/**
* PAD发起平行驾驶请求
*
* @param reqNo 请求编号(目前没有传递需求,可以传null
* @param parallelRequest 参数
* @return boolean
*/
fun sendParallelDrivingReq( reqNo: String, parallelRequest: ParallelDrivingRequest.ParallelRequest): Boolean {
return providerApi?.sendParallelDrivingReq(reqNo, parallelRequest) ?: false
}
/**
* 打开点云绘制
*/

View File

@@ -0,0 +1,21 @@
package com.mogo.eagle.core.function.call.autopilot
import com.mogo.eagle.core.function.api.autopilot.IMoGoParallelDrivingStatusListener
import com.mogo.eagle.core.function.call.base.CallerBase
import mogo.telematics.pad.MessagePad
import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass
/**
* 平行驾驶状态回调,云端说有状态变化就回调
*/
object CallerParallelDrivingListenerManager : CallerBase<IMoGoParallelDrivingStatusListener>() {
fun invokeParallelDrivingListener(parallelTaskProcessNotice: ParallelTaskProcessNoticeOuterClass.ParallelTaskProcessNotice?) {
M_LISTENERS.forEach {
val listener = it.value
listener.onParallelDrivingResp(parallelTaskProcessNotice)
}
}
}

View File

@@ -2,7 +2,7 @@ package com.mogo.eagle.core.function.call.autopilot
import com.mogo.eagle.core.function.api.autopilot.IMoGoSweeperFutianCloudTaskListener
import com.mogo.eagle.core.function.call.base.CallerBase
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.s_r.SweeperTaskSuspendResume
@@ -26,7 +26,7 @@ object CallerSweeperFutianCloudTaskListenerManager : CallerBase<IMoGoSweeperFuti
* @param sysTime 当前时间戳
* @param taskInfo 数据
*/
fun invokeSweeperFutianCloudTask(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, taskInfo: SweeperTask.TaskInfo?) {
fun invokeSweeperFutianCloudTask(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, taskInfo: SweeperTask.TaskInfo?) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTask(messageType, reqNo, sysTime, taskInfo)
@@ -41,7 +41,7 @@ object CallerSweeperFutianCloudTaskListenerManager : CallerBase<IMoGoSweeperFuti
* @param sysTime 当前时间戳
* @param taskConfirm 数据
*/
fun invokeSweeperFutianCloudTaskConfirm(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, taskConfirm: SweeperTaskConfirm.TaskConfirm?) {
fun invokeSweeperFutianCloudTaskConfirm(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, taskConfirm: SweeperTaskConfirm.TaskConfirm?) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTaskConfirm(messageType, reqNo, sysTime, taskConfirm)
@@ -56,7 +56,7 @@ object CallerSweeperFutianCloudTaskListenerManager : CallerBase<IMoGoSweeperFuti
* @param sysTime 当前时间戳
* @param taskStatusPush 数据
*/
fun invokeSweeperFutianCloudTaskStatus(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, taskStatusPush: SweeperTaskStatus.TaskStatusPush?) {
fun invokeSweeperFutianCloudTaskStatus(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, taskStatusPush: SweeperTaskStatus.TaskStatusPush?) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTaskStatus(messageType, reqNo, sysTime, taskStatusPush)
@@ -71,7 +71,7 @@ object CallerSweeperFutianCloudTaskListenerManager : CallerBase<IMoGoSweeperFuti
* @param sysTime 当前时间戳
* @param stopTaskReq 数据
*/
fun invokeSweeperFutianCloudTaskStop(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, stopTaskReq: SweeperTaskStop.StopTaskReq?) {
fun invokeSweeperFutianCloudTaskStop(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, stopTaskReq: SweeperTaskStop.StopTaskReq?) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTaskStop(messageType, reqNo, sysTime, stopTaskReq)
@@ -87,7 +87,7 @@ object CallerSweeperFutianCloudTaskListenerManager : CallerBase<IMoGoSweeperFuti
* @param sysTime 当前时间戳
* @param suspendResumeTaskResp 数据
*/
fun invokeSweeperFutianCloudTaskSuspendResume(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, suspendResumeTaskResp: SweeperTaskSuspendResume.SuspendResumeTaskResp?) {
fun invokeSweeperFutianCloudTaskSuspendResume(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, suspendResumeTaskResp: SweeperTaskSuspendResume.SuspendResumeTaskResp?) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTaskSuspendResume(messageType, reqNo, sysTime, suspendResumeTaskResp)
@@ -102,7 +102,7 @@ object CallerSweeperFutianCloudTaskListenerManager : CallerBase<IMoGoSweeperFuti
* @param sysTime 当前时间戳
* @param isBootableResp 数据
*/
fun invokeSweeperFutianCloudBootable(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, isBootableResp: SweeperBootable.IsBootableResp?) {
fun invokeSweeperFutianCloudBootable(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, isBootableResp: SweeperBootable.IsBootableResp?) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudBootable(messageType, reqNo, sysTime, isBootableResp)
@@ -117,7 +117,7 @@ object CallerSweeperFutianCloudTaskListenerManager : CallerBase<IMoGoSweeperFuti
* @param sysTime 当前时间戳
* @param bigTaskStatusPush 数据
*/
fun invokeSweeperFutianCloudBigTaskStatus(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskStatusPush: SweeperBigTaskStatus.BigTaskStatusPush?) {
fun invokeSweeperFutianCloudBigTaskStatus(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskStatusPush: SweeperBigTaskStatus.BigTaskStatusPush?) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudBigTaskStatus(messageType, reqNo, sysTime, bigTaskStatusPush)
@@ -132,7 +132,7 @@ object CallerSweeperFutianCloudTaskListenerManager : CallerBase<IMoGoSweeperFuti
* @param sysTime 当前时间戳
* @param bigTaskActionPush 数据
*/
fun invokeSweeperFutianCloudTaskCloudSuspendResume(messageType: SweeperCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskActionPush: SweeperTaskCloudSuspendResume.BigTaskActionPush?) {
fun invokeSweeperFutianCloudTaskCloudSuspendResume(messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskActionPush: SweeperTaskCloudSuspendResume.BigTaskActionPush?) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTaskCloudSuspendResume(messageType, reqNo, sysTime, bigTaskActionPush)

View File

@@ -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; //9pad大任务状态type: 100009-> sweeper_big_task_status.proto
CloudPushTaskSuspendResume = 100010; //10/padtype: 100010-> sweeper_task_cloud_suspend_resume.proto
ParallelDrivingCmd = 200001; //, <->
}
//
//PAD上行消息
message SweeperMessage
message AiCloudPadMessage
{
uint32 msgType = 1; //使
bytes payload = 2; //

View File

@@ -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
//查看云端和鹰眼的接口

View File

@@ -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; // 具体的请求原因描述,如:因底盘消息掉帧强退自动驾驶
}

View File

@@ -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; //消息具体内容:进入同步状态 ; 同步结束 ; 无法接管 ; 同步异常结束 ; 任务已被拒绝 ; 异常请人工驾驶 ; 平行驾驶异常结束
}

View File

@@ -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());
}
}

View File

@@ -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列表
*

View File

@@ -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();

View File

@@ -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确认type100002-> 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、云端下发任务状态到padtype100003-> 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结束任务type100004-> 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请求挂起任务type100005-> 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、云端下发任务暂停/恢复指令到padtype: 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管理应答

View File

@@ -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, "清扫车指标数据"),

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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状态原因更新
*

View File

@@ -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
//7pad主动拉取当前车辆正在执行任务的完整信息type100007-> 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确认type100002-> 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云端下发任务状态到padtype100003-> 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结束任务type100004-> 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) {
//5pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto
//6pad请求恢复挂起的任务type100006-> 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云端下发任务暂停/恢复指令到padtype: 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);
}
}

View File

@@ -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) {

View File

@@ -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