[dev_sweeper310][adas]云控清扫车收发接口添加,添加接口使用说明

This commit is contained in:
xinfengkun
2023-04-26 17:05:19 +08:00
parent 22c8e10708
commit 59db2bf7c4
28 changed files with 2107 additions and 60 deletions

View File

@@ -55,6 +55,11 @@ import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS
import com.zhidao.support.adas.high.common.CupidLogUtils
import com.zhidao.support.adas.high.common.MessageType
import com.zhjt.mogo.adas.data.bean.MogoReport
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.SweeperTaskSuspendResume
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.TracingConstants
import io.netty.channel.Channel
@@ -829,6 +834,80 @@ class MoGoAutopilotControlProvider :
AdasManager.getInstance().sendRoboSweeperFuTianTaskCmd(fuTianTaskCmd)
}
/**
* 开始大任务响应
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto/StartTaskResp 响应信息
*
* @param reqNo 请求编号
* @param startTaskResp 参数
* @return boolean
*/
override fun sendSweeperStartTaskResp(reqNo: String, startTaskResp: SweeperTask.StartTaskResp): Boolean {
return AdasManager.getInstance().sendSweeperStartTaskResp(reqNo, startTaskResp)
}
/**
* 子任务安全员确认响应
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto/TaskConfirmResp 响应信息
*
* @param reqNo 请求编号
* @param taskConfirmResp 参数
* @return boolean
*/
override fun sendSweeperTaskConfirmResp(reqNo: String, taskConfirmResp: SweeperTaskConfirm.TaskConfirmResp): Boolean {
return AdasManager.getInstance().sendSweeperTaskConfirmResp(reqNo, taskConfirmResp)
}
/**
* 结束任务响应
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto/StopTaskResp 响应信息
*
* @param reqNo 请求编号
* @param stopTaskResp 参数
* @return boolean
*/
override fun sendSweeperStopTaskResp(reqNo: String, stopTaskResp: SweeperTaskStop.StopTaskResp): Boolean {
return AdasManager.getInstance().sendSweeperStopTaskResp(reqNo, stopTaskResp)
}
/**
* 挂起任务 恢复挂起的任务
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
*
* @param isSuspend true挂起任务 false恢复挂起的任务
* @param reqNo 请求编号
* @param suspendResumeTaskReq 参数
* @return boolean
*/
override fun sendSweeperSuspendResumeTaskReq(isSuspend: Boolean, reqNo: String, suspendResumeTaskReq: SweeperTaskSuspendResume.SuspendResumeTaskReq): Boolean {
return AdasManager.getInstance().sendSweeperSuspendResumeTaskReq(isSuspend,reqNo, suspendResumeTaskReq)
}
/**
* pad主动拉取当前车辆正在执行任务的完整信息请求
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto/GetTaskReq
*
* @param reqNo 请求编号
* @param getTaskReq 参数
* @return boolean
*/
override fun sendSweeperGetTaskReq(reqNo: String, getTaskReq: SweeperTask.GetTaskReq): Boolean {
return AdasManager.getInstance().sendSweeperGetTaskReq(reqNo, getTaskReq)
}
/**
* pad上报是否可以进自驾
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008sweeper_bootable.proto/IsBootable
*
* @param reqNo 请求编号
* @param isBootable 参数
* @return boolean
*/
override fun sendSweeperAutopilotBootable(reqNo: String, isBootable: SweeperBootable.IsBootable): Boolean {
return AdasManager.getInstance().sendSweeperAutopilotBootable(reqNo, isBootable)
}
override fun setIsDrawPointCloud(isDrawPointCloud: Boolean) {
if (isDrawPointCloud) {
AdasManager.getInstance().subscribeInterface(

View File

@@ -60,6 +60,14 @@ import com.zhidao.support.adas.high.AdasManager
import com.zhidao.support.adas.high.OnAdasListener
import com.zhidao.support.adas.high.common.ProtocolStatus
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.SweeperTaskSuspendResume
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm
import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD
import function_state_management.FunctionStates
@@ -615,6 +623,99 @@ class MoGoAdasListenerImpl : OnAdasListener {
}
}
/**
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskInfo 数据
*/
override fun onSweeperFutianCloudTask(header: MessagePad.Header, messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskInfo: SweeperTask.TaskInfo) {
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudTask(messageType, reqNo, sysTime, taskInfo)
}
/**
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskConfirm 数据
*/
override fun onSweeperFutianCloudTaskConfirm(header: MessagePad.Header, messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskConfirm: SweeperTaskConfirm.TaskConfirm) {
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudTaskConfirm(messageType, reqNo, sysTime, taskConfirm)
}
/**
* 3、云端下发任务状态到padtype100003-> sweeper_task_status.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskStatusPush 数据
*/
override fun onSweeperFutianCloudTaskStatus(header: MessagePad.Header, messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskStatusPush: SweeperTaskStatus.TaskStatusPush) {
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudTaskStatus(messageType, reqNo, sysTime, taskStatusPush)
}
/**
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param stopTaskReq 数据
*/
override fun onSweeperFutianCloudTaskStop(header: MessagePad.Header, messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, stopTaskReq: SweeperTaskStop.StopTaskReq) {
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudTaskStop(messageType, reqNo, sysTime, stopTaskReq)
}
/**
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param suspendResumeTaskResp 数据
*/
override fun onSweeperFutianCloudTaskSuspendResume(header: MessagePad.Header, messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, suspendResumeTaskResp: SweeperTaskSuspendResume.SuspendResumeTaskResp) {
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudTaskSuspendResume(messageType, reqNo, sysTime, suspendResumeTaskResp)
}
/**
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008-> sweeper_autopilot.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param isBootableResp 数据
*/
override fun onSweeperFutianCloudBootable(header: MessagePad.Header, messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, isBootableResp: SweeperBootable.IsBootableResp) {
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudBootable(messageType, reqNo, sysTime, isBootableResp)
}
/**
* 9、云端下发pad大任务状态type: 100009-> sweeper_big_task_status.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param bigTaskStatusPush 数据
*/
override fun onSweeperFutianCloudBigTaskStatus(header: MessagePad.Header, messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, bigTaskStatusPush: SweeperBigTaskStatus.BigTaskStatusPush) {
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudBigTaskStatus(messageType, reqNo, sysTime, bigTaskStatusPush)
}
/**
* Bag管理应答
*

View File

@@ -2,9 +2,15 @@ package com.mogo.eagle.core.function.api.autopilot
import chassis.SpecialVehicleTaskCmdOuterClass
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity
import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult
import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable.IsBootable
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.GetTaskReq
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.StartTaskResp
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTaskSuspendResume.SuspendResumeTaskReq
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirmResp
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskResp
/**
* @author xiaoyuzhou
@@ -291,6 +297,69 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider {
*/
fun sendSweeperFuTianTaskCmd(fuTianTaskCmd: SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd)
/**
* 开始大任务响应
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto/StartTaskResp 响应信息
*
* @param reqNo 请求编号
* @param startTaskResp 参数
* @return boolean
*/
fun sendSweeperStartTaskResp(reqNo: String, startTaskResp: StartTaskResp): Boolean
/**
* 子任务安全员确认响应
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto/TaskConfirmResp 响应信息
*
* @param reqNo 请求编号
* @param taskConfirmResp 参数
* @return boolean
*/
fun sendSweeperTaskConfirmResp(reqNo: String, taskConfirmResp: TaskConfirmResp): Boolean
/**
* 结束任务响应
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto/StopTaskResp 响应信息
*
* @param reqNo 请求编号
* @param stopTaskResp 参数
* @return boolean
*/
fun sendSweeperStopTaskResp(reqNo: String, stopTaskResp: StopTaskResp): Boolean
/**
* 挂起任务 恢复挂起的任务
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
*
* @param isSuspend true挂起任务 false恢复挂起的任务
* @param reqNo 请求编号
* @param suspendResumeTaskReq 参数
* @return boolean
*/
fun sendSweeperSuspendResumeTaskReq(isSuspend: Boolean, reqNo: String, suspendResumeTaskReq: SuspendResumeTaskReq): Boolean
/**
* pad主动拉取当前车辆正在执行任务的完整信息请求
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto/GetTaskReq
*
* @param reqNo 请求编号
* @param getTaskReq 参数
* @return boolean
*/
fun sendSweeperGetTaskReq(reqNo: String, getTaskReq: GetTaskReq): Boolean
/**
* pad上报是否可以进自驾
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008sweeper_bootable.proto/IsBootable
*
* @param reqNo 请求编号
* @param isBootable 参数
* @return boolean
*/
fun sendSweeperAutopilotBootable(reqNo: String, isBootable: IsBootable): Boolean
/**
* 打开点云绘制
*

View File

@@ -0,0 +1,89 @@
package com.mogo.eagle.core.function.api.autopilot
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask
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.SweeperTaskSuspendResume.SuspendResumeTaskResp
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus.BigTaskStatusPush
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirm
import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus.TaskStatusPush
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskReq
/**
* 清扫车(福田)云端任务接口
*/
interface IMoGoSweeperFutianCloudTaskListener {
/**
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskInfo 数据
*/
fun onSweeperFutianCloudTask(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskInfo: SweeperTask.TaskInfo)
/**
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskConfirm 数据
*/
fun onSweeperFutianCloudTaskConfirm(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskConfirm: TaskConfirm)
/**
* 3、云端下发任务状态到padtype100003-> sweeper_task_status.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskStatusPush 数据
*/
fun onSweeperFutianCloudTaskStatus(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskStatusPush: TaskStatusPush)
/**
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param stopTaskReq 数据
*/
fun onSweeperFutianCloudTaskStop(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, stopTaskReq: StopTaskReq)
/**
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param suspendResumeTaskResp 数据
*/
fun onSweeperFutianCloudTaskSuspendResume(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, suspendResumeTaskResp: SuspendResumeTaskResp)
/**
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008-> sweeper_autopilot.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param isBootableResp 数据
*/
fun onSweeperFutianCloudBootable(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, isBootableResp: IsBootableResp)
/**
* 9、云端下发pad大任务状态type: 100009-> sweeper_big_task_status.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param bigTaskStatusPush 数据
*/
fun onSweeperFutianCloudBigTaskStatus(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, bigTaskStatusPush: BigTaskStatusPush)
}

View File

@@ -3,22 +3,29 @@ package com.mogo.eagle.core.function.call.autopilot
import android.os.SystemClock
import chassis.SpecialVehicleTaskCmdOuterClass
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity
import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_ADAS
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT
import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotControlProvider
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable.IsBootable
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.GetTaskReq
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.StartTaskResp
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTaskSuspendResume.SuspendResumeTaskReq
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirmResp
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskResp
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.TracingConstants
import com.zhjt.service_biz.BizConfig
import kotlin.random.Random
/**
*@author xiaoyuzhou
*@date 2021/10/14 2:15 下午
@@ -422,6 +429,81 @@ object CallerAutoPilotControlManager {
providerApi?.sendSweeperFuTianTaskCmd(fuTianTaskCmd)
}
/**
* 开始大任务响应
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto/StartTaskResp 响应信息
*
* @param reqNo 请求编号
* @param startTaskResp 参数
* @return boolean
*/
fun sendSweeperStartTaskResp( reqNo: String, startTaskResp: StartTaskResp): Boolean {
return providerApi?.sendSweeperStartTaskResp(reqNo, startTaskResp) ?: false
}
/**
* 子任务安全员确认响应
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto/TaskConfirmResp 响应信息
*
* @param reqNo 请求编号
* @param taskConfirmResp 参数
* @return boolean
*/
fun sendSweeperTaskConfirmResp( reqNo: String, taskConfirmResp: TaskConfirmResp): Boolean {
return providerApi?.sendSweeperTaskConfirmResp(reqNo, taskConfirmResp) ?: false
}
/**
* 结束任务响应
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto/StopTaskResp 响应信息
*
* @param reqNo 请求编号
* @param stopTaskResp 参数
* @return boolean
*/
fun sendSweeperStopTaskResp( reqNo: String, stopTaskResp: StopTaskResp): Boolean {
return providerApi?.sendSweeperStopTaskResp(reqNo, stopTaskResp) ?: false
}
/**
* 挂起任务 恢复挂起的任务
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
*
* @param isSuspend true挂起任务 false恢复挂起的任务
* @param reqNo 请求编号
* @param suspendResumeTaskReq 参数
* @return boolean
*/
fun sendSweeperSuspendResumeTaskReq(isSuspend: Boolean, reqNo: String, suspendResumeTaskReq: SuspendResumeTaskReq): Boolean {
return providerApi?.sendSweeperSuspendResumeTaskReq(isSuspend, reqNo, suspendResumeTaskReq) ?: false
}
/**
* pad主动拉取当前车辆正在执行任务的完整信息请求
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto/GetTaskReq
*
* @param reqNo 请求编号
* @param getTaskReq 参数
* @return boolean
*/
fun sendSweeperGetTaskReq( reqNo: String, getTaskReq: GetTaskReq): Boolean {
return providerApi?.sendSweeperGetTaskReq(reqNo, getTaskReq) ?: false
}
/**
* pad上报是否可以进自驾
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008sweeper_bootable.proto/IsBootable
*
* @param reqNo 请求编号
* @param isBootable 参数
* @return boolean
*/
fun sendSweeperAutopilotBootable( reqNo: String, isBootable: IsBootable): Boolean {
return providerApi?.sendSweeperAutopilotBootable(reqNo, isBootable) ?: false
}
/**
* 打开点云绘制
*/

View File

@@ -0,0 +1,125 @@
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.sweeper.bootable.SweeperBootable
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTaskSuspendResume
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm
import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
/**
* 清扫车(福田)云端任务接口
*/
object CallerSweeperFutianCloudTaskListenerManager : CallerBase<IMoGoSweeperFutianCloudTaskListener>() {
/**
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskInfo 数据
*/
fun invokeSweeperFutianCloudTask(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskInfo: SweeperTask.TaskInfo) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTask(messageType, reqNo, sysTime, taskInfo)
}
}
/**
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskConfirm 数据
*/
fun invokeSweeperFutianCloudTaskConfirm(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskConfirm: SweeperTaskConfirm.TaskConfirm) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTaskConfirm(messageType, reqNo, sysTime, taskConfirm)
}
}
/**
* 3、云端下发任务状态到padtype100003-> sweeper_task_status.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskStatusPush 数据
*/
fun invokeSweeperFutianCloudTaskStatus(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskStatusPush: SweeperTaskStatus.TaskStatusPush) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTaskStatus(messageType, reqNo, sysTime, taskStatusPush)
}
}
/**
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param stopTaskReq 数据
*/
fun invokeSweeperFutianCloudTaskStop(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, stopTaskReq: SweeperTaskStop.StopTaskReq) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTaskStop(messageType, reqNo, sysTime, stopTaskReq)
}
}
/**
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param suspendResumeTaskResp 数据
*/
fun invokeSweeperFutianCloudTaskSuspendResume(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, suspendResumeTaskResp: SweeperTaskSuspendResume.SuspendResumeTaskResp) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudTaskSuspendResume(messageType, reqNo, sysTime, suspendResumeTaskResp)
}
}
/**
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008-> sweeper_autopilot.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param isBootableResp 数据
*/
fun invokeSweeperFutianCloudBootable(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, isBootableResp: SweeperBootable.IsBootableResp) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudBootable(messageType, reqNo, sysTime, isBootableResp)
}
}
/**
* 9、云端下发pad大任务状态type: 100009-> sweeper_big_task_status.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param bigTaskStatusPush 数据
*/
fun invokeSweeperFutianCloudBigTaskStatus(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, bigTaskStatusPush: SweeperBigTaskStatus.BigTaskStatusPush) {
M_LISTENERS.forEach {
val listener = it.value
listener.onSweeperFutianCloudBigTaskStatus(messageType, reqNo, sysTime, bigTaskStatusPush)
}
}
}

View File

@@ -0,0 +1,10 @@
syntax = "proto3";
package function_state_management;
message FSMStatusReasonQuery {
uint32 type = 1; // 0:default, 1:请求反馈原因
}
message FSMStatusReasonRespond {
repeated string fsm_status_reason_respond = 1;
}

View File

@@ -62,6 +62,13 @@ enum MessageType
MsgTypeBagManagerCmd = 0x1011b; //bag管理
MsgTypePlanningCmd = 0x1011c; //给planning的指令
MsgTypeSetParamReqV2 = 0x1011d; //设置参数命令V2
MsgTypeV2nCongestionEvent = 0x1011e; //主车附近拥堵事件推送, 透传
MsgTypeV2nGlobalPathEvents = 0x1011f; //主车路径全局事件推送, 透传
MsgTypeGetParamReq = 0x10120; //参数获取请求
MsgTypeGetParamResp = 0x10121; //参数获取应答
MsgTypeTaskCmd = 0x10122; //云控任务指令, 云控<->鹰眼双向透传
MsgTypeFSMStatusReasonQueryReq = 0x10123; //fsm状态原因查询
MsgTypeFSMStatusReasonQueryResp = 0x10124; //fsm状态原因查询应答
}
message Header
@@ -141,10 +148,21 @@ message TrackedObject
string strUuid = 101;//String类型车辆ID
}
message LocalizationInfo{
double stamp = 1; //seconds
float longitude = 2;
float latitude = 3;
float alt = 4;
float heading = 5;
}
message BlindAreaData
{
float angleResolution = 1;
repeated int32 distances = 2;
float angleResolution = 1; //degrees
repeated int32 distances = 2; //unit: cm
LocalizationInfo localizationInfo = 3;
float maxRange = 4; //unit: m
}
message TrackedObjects
@@ -231,6 +249,7 @@ message Line
message TrajectoryDownloadReq
{
Line line = 1; //路线
uint32 source = 2; //指令来源: 0: default, 1:pad, 2:aicloud
}
// message definition for MessageType: MsgTypeBasicInfoReq
@@ -238,7 +257,7 @@ message BasicInfoReq
{
}
// message definition for MessageType: MsgTypeBasicInfoRsp
// message definition for MessageType: MsgTypeBasicInfoResp
message BasicInfoResp
{
string sn = 1;
@@ -273,7 +292,7 @@ message RouteInfo
message SetAutopilotModeReq
{
uint32 mode = 1; //1: enter autopilot mode, 0: quit autopilot mode
uint32 source = 2; //命令来源: 0: pad模拟, 1: aicloud业务
uint32 source = 2; //命令来源: 0: pad模拟, 1: pad业务, 2:aicloud
RouteInfo routeInfo = 3; //自动驾驶路径信息
}
@@ -299,6 +318,8 @@ message CarConfigResp
double maxSpeedLimit = 6; //最大自动驾驶限速, 单位m/s
double minAcceleration = 7; //最小加速度, 单位m/s²
double maxAcceleration = 8; //最大加速度, 单位m/s²
string carType = 9; //车辆类型
string subCarType = 10; //车辆子类型
}
// message definition for MsgTypeRecordCause
@@ -562,7 +583,13 @@ message PlanningActionMsg
//message definition for MsgTypeSetParamReq
message SetOneParam
{
uint32 type = 1; // 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s)
uint32 type = 1; // 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s)
// 3:AEB开关(bool) 0:关闭自动紧急制动功能 1:启用自动紧急制动功能
// 4:限制绕障开关(bool) 0:正常绕障 1限制绕障 默认0
// 5:停车让行线前避让等待开关(bool) 0:停车让行线前无需等待 1:停车让行线前需要等待 默认0
// 6:地图限速功能开关(bool) 0:不使用地图限速功能 1:使用地图限速功能 默认0
// 7:环岛模式开关(bool) 0:普通模式 1:环岛模式 默认0
// 8:弱网减速停车策略开关(bool) 0:关闭弱网减速停车策略 1:使用弱网减速停车策略
string value = 2; // 转成字符串的值
}
@@ -599,16 +626,43 @@ message TripInfoEvent
//message definition for MsgTypePlanningCmd
message PullOverCmd
{
uint32 cmd = 1; //0: default 1: 靠边停车 2:重新起步
uint32 cmd = 1; //0: default 1: 靠边停车 2:重新起步 3:紧急停车
}
message LaneChangeCmd
{
uint32 cmd = 1; //0: default 1: 左变道 2:右变道 3:超车 4:恢复自动决策
}
message PlanningCmd
{
PullOverCmd pullOverCmd = 1;
LaneChangeCmd laneChangeCmd = 2;
}
//message definition for MsgTypeSetParamReqV2
//refer to param_set_cmd.proto for details
//message definition for MsgTypeBackCameraVideo
//payload:jpeg data
//payload:jpeg data
//message definition for MsgTypeV2nCongestionEvent
//refer to RSI_PB in mogo_v2x.proto for details
//message definition for MsgTypeV2nGlobalPathEvents
//refer to road_overview_events.proto for details
//message definition for MsgTypeGetParamReq
//复用 SetParamReq
//message definition for MsgTypeGetParamResp
//复用 SetParamReq
//message definition for MsgTypeTaskCmd
//查看云端和鹰眼的接口
//message definition for MsgTypeFSMStatusReasonQueryReq
//refer to FSMStatusReasonQuery.proto for details
//message definition for MsgTypeFSMStatusReasonQueryResp
//refer to FSMStatusReasonQuery.proto for details

View File

@@ -1,88 +1,573 @@
syntax = "proto2";
package mogo.v2x;
import "header.proto";
message VerticalOffset_PB{
oneof VerticalOffset{
int32 offset1 = 1;
int32 offset2 = 2;
int32 offset3 = 3;
int32 offset4 = 4;
int32 offset5 = 5;
int32 offset6 = 6;
int32 elevation = 7;
}
//-- Vertical Offset
//-- All below in steps of 10cm above or below the reference ellipsoid
//offset1 VertOffset-B07, -- with a range of +- 6.3 meters vertical
//offset2 VertOffset-B08, -- with a range of +- 12.7 meters vertical
//offset3 VertOffset-B09, -- with a range of +- 25.5 meters vertical
//offset4 VertOffset-B10, -- with a range of +- 51.1 meters vertical
//offset5 VertOffset-B11, -- with a range of +- 102.3 meters vertical
//offset6 VertOffset-B12, -- with a range of +- 204.7 meters vertical
//elevation Elevation -- with a range of -409.5 to + 6143.9 meters
oneof VerticalOffset{
int32 offset1 = 1;
int32 offset2 = 2;
int32 offset3 = 3;
int32 offset4 = 4;
int32 offset5 = 5;
int32 offset6 = 6;
int32 elevation = 7;
}
}
message VehicleSize_PB {
required int32 width = 1;
required int32 length = 2;
optional int32 height = 3;
required int32 width = 1;
required int32 length = 2;
optional int32 height = 3;
}
message AccelerationSet4Way_PB {
required int32 lon = 1;
required int32 lat = 2;
required int32 vert = 3;
required int32 yaw = 4;
required int32 lon = 1;
required int32 lat = 2;
required int32 vert = 3;
required int32 yaw = 4;
}
//////////////////////////////////////////////////////////////////
//经纬度偏差,来描述一个坐标点的相对位置。约定偏差值等于真实值减去参考值。
//提供了 7 种尺度的描述方式
message PositionOffsetLL_PB{
oneof PositionOffsetLL{
Position_LL_24B position_LL1 = 1;
Position_LL_28B position_LL2 = 2;
Position_LL_32B position_LL3 = 3;
Position_LL_36B position_LL4 = 4;
Position_LL_44B position_LL5 = 5;
Position_LL_48B position_LL6 = 6;
Position_LLmD_64b position_LatLon = 7;
}
//position-LL1 Position-LL-24B,
//-- within +- 22.634554 meters of the reference position
//position-LL2 Position-LL-28B,
//-- within +- 90.571389 meters of the reference position
//position-LL3 Position-LL-32B,
//-- within +- 362.31873 meters of the reference position
//position-LL4 Position-LL-36B,
//-- within +- 01.449308 Kmeters of the reference position
//position-LL5 Position-LL-44B,
//-- within +- 23.189096 Kmeters of the reference position
//position-LL6 Position-LL-48B,
//-- within +- 92.756481 Kmeters of the reference position
//position-LatLon Position-LLmD-64b
oneof PositionOffsetLL{
Position_LL_24B position_LL1 = 1;
Position_LL_28B position_LL2 = 2;
Position_LL_32B position_LL3 = 3;
Position_LL_36B position_LL4 = 4;
Position_LL_44B position_LL5 = 5;
Position_LL_48B position_LL6 = 6;
Position_LLmD_64b position_LatLon = 7;
}
}
message Position_LL_24B{
// (-2048..2047)
required int64 lon = 1;
required int64 lat = 2;
// (-2048..2047)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LL_28B{
// (-8192..8191)
required int64 lon = 1;
required int64 lat = 2;
// (-8192..8191)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LL_32B{
// (-32768..32767)
required int64 lon = 1;
required int64 lat = 2;
// (-32768..32767)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LL_36B{
// (-131072..131071)
required int64 lon = 1;
required int64 lat = 2;
// (-131072..131071)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LL_44B{
// (-2097152..2097151)
required int64 lon = 1;
required int64 lat = 2;
// (-2097152..2097151)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LL_48B{
// (-8388608..8388607)
required int64 lon = 1;
required int64 lat = 2;
// (-8388608..8388607)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LLmD_64b{
// 定义经度数值。东经为正,西经为负。
//分辨率为1e-7°。
required int64 lon = 1;
required int64 lat = 2;
// 定义经度数值。东经为正,西经为负。
//分辨率为1e-7°。
required int64 lon = 1;
required int64 lat = 2;
}
//////////////////////////////////////////////////////////////////
message PositionOffsetLLV_PB{
required PositionOffsetLL_PB offsetLL = 1;
required PositionOffsetLL_PB offsetLL = 1;
optional VerticalOffset_PB offsetV = 2;
}
optional VerticalOffset_PB offsetV = 2;
/************************************************/
message RoadSideInformation_PB {
//发送方为自己发送的同类消息依次进行编号。编号数值为0127循环使用。
//该数据字段用于接收方对来自同一发送方的同一类消息,进行连续收包的监控和丢包的统计。
required int64 msgCnt = 1;
//数值用来表示当前年份已经过去的总分钟数UTC时间
//其分辨率为1分钟。该数值配合DSecond数值则可以表示以毫秒记的全年已过去的总时间。
optional int64 moy = 2;
//RSU_ID
required String_PB id = 3;
//RSU 对应坐标
required Position3D_PB refPos = 4;
//交通事件内容
optional RTEList_PB rtes = 5;
//交通标志内容
optional RTSList_PB rtss = 6;
}
message String_PB {
required uint32 string_type = 1;
required string str_value = 2;
}
message Position3D_PB {
required int64 lat = 1;
required int64 Long = 2;
optional int64 elevation = 3;
}
message RTEList_PB {
//定义道路交通事件集合。
//至少包含1个道路交通事件信息最多包含8个。
repeated RTEData_PB rteData = 1;
}
message RTEData_PB {
//(0..255)
required int64 rteId = 1;
// required EventType_PB eventType=2;
required int32 eventType = 2;
required EventSource_PB eventSource = 3;
optional PositionOffsetLLV_PB eventPos = 4;
// 分辨率为10 cm。
// (0..65535)
optional int64 eventRadius = 5;
//提供ASCII字符文本形式支持长度1字节到512字节。该类型不提供
//提供中文编码形式符合GB2312-80的编码规则1个中文字符由2字节信息编码支持长度1到256
//个中文字符
//Description
optional String_PB description = 6;
optional RSITimeDetails_PB timeDetails = 7;
// 表示RSI消息中不同类型交通事件或交通标志的优先级。数值长度占8位其中低五位为0为无效
//位高三位为有效数据位。数值有效范围是B00000000到B11100000分别表示8档由低到高的优先级。
//对应 RSIPriority
optional String_PB priority = 8;
optional ReferencePathList_PB referencePaths = 9;
optional ReferenceLinkList_PB referenceLinks = 10;
//定义置信度。
//分辨率为0.005。
// 0-200
optional int32 eventConfidence = 11;
}
message EventSource_PB {
//unknown(0), -- 0 Unknown
//police(1), -- 1 traffic police
//government(2), -- 2 govenment
//meteorological(3), -- 3 meteorological department
//internet(4), -- 4 internet services
//detection(5), -- 5 local detection
enum EventSource{
EventSource_unknown = 0;
EventSource_police = 1;
EventSource_government = 2;
EventSource_meteorological = 3;
EventSource_internet = 4;
EventSource_detection = 5;
};
required EventSource event_source = 1;
}
message RSITimeDetails_PB{
//数值用来表示当前年份已经过去的总分钟数UTC时间
//其分辨率为1分钟。该数值配合DSecond数值则可以表示以毫秒记的全年已过去的总时间。
//(0..527040)
optional int64 startTime = 1;
optional int64 endTime = 2;
optional TimeConfidence_PB endTimeConfidence = 3;
}
message TimeConfidence_PB {
//unavailable (0), -- Not Equipped or unavailable
//time-100-000 (1), -- Better than 100 Seconds
//time-050-000 (2), -- Better than 50 Seconds
//time-020-000 (3), -- Better than 20 Seconds
//time-010-000 (4), -- Better than 10 Seconds
//time-002-000 (5), -- Better than 2 Seconds
//time-001-000 (6), -- Better than 1 Second
//time-000-500 (7), -- Better than 0.5 Seconds
//time-000-200 (8), -- Better than 0.2 Seconds
//time-000-100 (9), -- Better than 0.1 Seconds
//time-000-050 (10), -- Better than 0.05 Seconds
//time-000-020 (11), -- Better than 0.02 Seconds
//time-000-010 (12), -- Better than 0.01 Seconds
//time-000-005 (13), -- Better than 0.005 Seconds
//time-000-002 (14), -- Better than 0.002 Seconds
//time-000-001 (15), -- Better than 0.001 Seconds
//-- Better than one millisecond
//time-000-000-5 (16), -- Better than 0.000,5 Seconds
//time-000-000-2 (17), -- Better than 0.000,2 Seconds
//time-000-000-1 (18), -- Better than 0.000,1 Seconds
//time-000-000-05 (19), -- Better than 0.000,05 Seconds
//time-000-000-02 (20), -- Better than 0.000,02 Seconds
//time-000-000-01 (21), -- Better than 0.000,01 Seconds
//time-000-000-005 (22), -- Better than 0.000,005 Seconds
//time-000-000-002 (23), -- Better than 0.000,002 Seconds
//time-000-000-001 (24), -- Better than 0.000,001 Seconds
//-- Better than one micro second
//time-000-000-000-5 (25), -- Better than 0.000,000,5 Seconds
//time-000-000-000-2 (26), -- Better than 0.000,000,2 Seconds
//time-000-000-000-1 (27), -- Better than 0.000,000,1 Seconds
//time-000-000-000-05 (28), -- Better than 0.000,000,05 Seconds
//time-000-000-000-02 (29), -- Better than 0.000,000,02 Seconds
//time-000-000-000-01 (30), -- Better than 0.000,000,01 Seconds
//time-000-000-000-005 (31), -- Better than 0.000,000,005 Seconds
//time-000-000-000-002 (32), -- Better than 0.000,000,002 Seconds
//time-000-000-000-001 (33), -- Better than 0.000,000,001 Seconds
//-- Better than one nano second
//time-000-000-000-000-5 (34), -- Better than 0.000,000,000,5 Seconds
//time-000-000-000-000-2 (35), -- Better than 0.000,000,000,2 Seconds
//time-000-000-000-000-1 (36), -- Better than 0.000,000,000,1 Seconds
//time-000-000-000-000-05 (37), -- Better than 0.000,000,000,05 Seconds
//time-000-000-000-000-02 (38), -- Better than 0.000,000,000,02 Seconds
//time-000-000-000-000-01 (39) -- Better than 0.000,000,000,01 Seconds
enum TimeConfidence {
TimeConfidence_unavailable = 0;
TimeConfidence_time_100_000 = 1;
TimeConfidence_time_050_000 = 2;
TimeConfidence_time_020_000 = 3;
TimeConfidence_time_010_000 = 4;
TimeConfidence_time_002_000 = 5;
TimeConfidence_time_001_000 = 6;
TimeConfidence_time_000_500 = 7;
TimeConfidence_time_000_200 = 8;
TimeConfidence_time_000_100 = 9;
TimeConfidence_time_000_050 = 10;
TimeConfidence_time_000_020 = 11;
TimeConfidence_time_000_010 = 12;
TimeConfidence_time_000_005 = 13;
TimeConfidence_time_000_002 = 14;
TimeConfidence_time_000_001 = 15;
TimeConfidence_time_000_000_5 = 16;
TimeConfidence_time_000_000_2 = 17;
TimeConfidence_time_000_000_1 = 18;
TimeConfidence_time_000_000_05 = 19;
TimeConfidence_time_000_000_02 = 20;
TimeConfidence_time_000_000_01 = 21;
TimeConfidence_time_000_000_005 = 22;
TimeConfidence_time_000_000_002 = 23;
TimeConfidence_time_000_000_001 = 24;
TimeConfidence_time_000_000_000_5 = 25;
TimeConfidence_time_000_000_000_2 = 26;
TimeConfidence_time_000_000_000_1 = 27;
TimeConfidence_time_000_000_000_05 = 28;
TimeConfidence_time_000_000_000_02 = 29;
TimeConfidence_time_000_000_000_01 = 30;
TimeConfidence_time_000_000_000_005 = 31;
TimeConfidence_time_000_000_000_002 = 32;
TimeConfidence_time_000_000_000_001 = 33;
TimeConfidence_time_000_000_000_000_5 = 34;
TimeConfidence_time_000_000_000_000_2 = 35;
TimeConfidence_time_000_000_000_000_1 = 36;
TimeConfidence_time_000_000_000_000_05 = 37;
TimeConfidence_time_000_000_000_000_02 = 38;
TimeConfidence_time_000_000_000_000_01 = 39;
};
optional TimeConfidence time_confidence = 1;
}
message ReferencePathList_PB {
//SIZE(1..8)
repeated ReferencePath_PB referencePath = 1;
}
message ReferenceLinkList_PB {
//(1-16)
repeated ReferenceLink_PB ReferenceLink = 1;
}
message RTSList_PB {
//定义道路交通标志集合。
//至少包含1个道路交通标志信息最多包含16个
repeated RTSData_PB rtsData = 1;
}
message RTSData_PB {
//(0..255)
required int64 rtsId = 1;
// required SignType_PB signType=2;
required int32 signType = 2;
optional PositionOffsetLLV_PB signPos = 3;
optional String_PB description = 4;
optional RSITimeDetails_PB timeDetails = 5;
optional String_PB priority = 6;
optional ReferencePathList_PB referencePaths = 7;
optional ReferenceLinkList_PB referenceLinks = 8;
}
message ReferencePath_PB {
required PathPointList_PB activePath = 1;
//表示绝对值半径大小。
//分辨率为10 cm。
//(0..65535)
required int64 pathRadius = 2;
}
message PathPointList_PB {
//(1..32))
repeated PositionOffsetLLV_PB offsetLLV = 1;
}
message ReferenceLink_PB {
required NodeReferenceID_PB upstreamNodeId = 1;
required NodeReferenceID_PB downstreamNodeId = 2;
optional ReferenceLanes_PB referenceLanes = 3;
}
message NodeReferenceID_PB {
//0-65535
optional int64 region = 1;
//0-65535
required int64 id = 2;
}
message ReferenceLanes_PB {
enum ReferenceLanesType{
ReferenceLanesType_reserved = 0;
ReferenceLanesType_lane1 = 1;
ReferenceLanesType_lane2 = 2;
ReferenceLanesType_lane3 = 3;
ReferenceLanesType_lane4 = 4;
ReferenceLanesType_lane5 = 5;
ReferenceLanesType_lane6 = 6;
ReferenceLanesType_lane7 = 7;
ReferenceLanesType_lane8 = 8;
ReferenceLanesType_lane9 = 9;
ReferenceLanesType_lane10 = 10;
ReferenceLanesType_lane11 = 11;
ReferenceLanesType_lane12 = 12;
ReferenceLanesType_lane13 = 13;
ReferenceLanesType_lane14 = 14;
ReferenceLanesType_lane15 = 15;
};
required ReferenceLanesType lane = 1;
}
message RSI_PB {
required RoadSideInformation_PB rsiFrame = 1;
optional common.Header header = 2;
}
message VehicleClassification_PB {
required int32 classification = 1;
optional int32 fuelType = 2;
}
message MotionConfidenceSet_PB {
enum SpeedConfidence_PB {
SpeedConfidence_unavailable = 0;
SpeedConfidence_prec100ms = 1;
SpeedConfidence_prec10ms = 2;
SpeedConfidence_prec5ms = 3;
SpeedConfidence_prec1ms = 4;
SpeedConfidence_prec0_1ms = 5;
SpeedConfidence_prec0_05ms = 6;
SpeedConfidence_prec0_01ms = 7;
}
optional SpeedConfidence_PB speedCfd = 1;
enum HeadingConfidence_PB {
HeadingConfidence_unavailable = 0;
HeadingConfidence_prec10deg = 1;
HeadingConfidence_prec05deg = 2;
HeadingConfidence_prec01deg = 3;
HeadingConfidence_prec0_d1deg = 4;
HeadingConfidence_prec0_d05deg = 5;
HeadingConfidence_prec0_d01deg = 6;
HeadingConfidence_prec0_d0125deg = 7;
}
optional HeadingConfidence_PB headingCfd = 2;
enum SteeringWheelAngleConfidence_PB {
SteeringWheelAngleConfidence_unavailable = 0;
SteeringWheelAngleConfidence_prec2deg = 1;
SteeringWheelAngleConfidence_prec1deg = 2;
SteeringWheelAngleConfidence_prec0_02deg = 3;
}
optional SteeringWheelAngleConfidence_PB steerCfd = 3;
}
message TransmissionState_PB{
// neutral (0), -- Neutral
//park (1), -- Park
//forwardGears (2), -- Forward gears
//reverseGears (3), -- Reverse gears
//reserved1 (4),
//reserved2 (5),
//reserved3 (6),
//unavailable (7)-- not-equipped or unavailable value,
//-- Any related speed is relative to the vehicle reference frame used
enum TransmissionState{
TransmissionState_neutral = 1;
TransmissionState_park = 2;
TransmissionState_forwardGears = 3;
TransmissionState_reverseGears = 4;
TransmissionState_reserved1 = 5;
TransmissionState_reserved2 = 6;
TransmissionState_reserved3 = 7;
TransmissionState_unavailable = 8;
};
required TransmissionState transmission_state = 1;
}
message PositionConfidenceSet_PB {
enum PositionConfidence_PB {
PositionConfidence_unavailable = 0;
PositionConfidence_a500m = 1;
PositionConfidence_a200m = 2;
PositionConfidence_a100m = 3;
PositionConfidence_a50m = 4;
PositionConfidence_a20m = 5;
PositionConfidence_a10m = 6;
PositionConfidence_a5m = 7;
PositionConfidence_a2m = 8;
PositionConfidence_a1m = 9;
PositionConfidence_a50cm = 10;
PositionConfidence_a20cm = 11;
PositionConfidence_a10cm = 12;
PositionConfidence_a5cm = 13;
PositionConfidence_a2cm = 14;
PositionConfidence_a1cm = 15;
}
required PositionConfidence_PB poscon = 1;
enum ElevationConfidence_PB {
ElevationConfidence_unavailable = 0;
ElevationConfidence_elev_500_00 = 1;
ElevationConfidence_elev_200_00 = 2;
ElevationConfidence_elev_100_00 = 3;
ElevationConfidence_elev_050_00 = 4;
ElevationConfidence_elev_020_00 = 5;
ElevationConfidence_elev_010_00 = 6;
ElevationConfidence_elev_005_00 = 7;
ElevationConfidence_elev_002_00 = 8;
ElevationConfidence_elev_001_00 = 9;
ElevationConfidence_elev_000_50 = 10;
ElevationConfidence_elev_000_20 = 11;
ElevationConfidence_elev_000_10 = 12;
ElevationConfidence_elev_000_05 = 13;
ElevationConfidence_elev_000_02 = 14;
ElevationConfidence_elev_000_01 = 15;
}
optional ElevationConfidence_PB elevationCon = 2;
}
message SourceType_PB{
//定义交通参与者数据的来源。包括以下类型:
//——unknown未知数据源类型
//——selfinfoRSU 自身信息;
//——v2x来源于参与者自身的 v2x 广播消息;
//——video来源于视频传感器
//——microwaveRadar来源于微波雷达传感器
//——loop来源于地磁线圈传感器
//——lidar来源于激光雷达传感器
//——integrated2 类或以上感知数据的融合结果。
enum SourceType{
SourceType_unknown = 1;
SourceType_selfinfo = 2;
SourceType_v2x = 3;
SourceType_video = 4;
SourceType_microwaveRadar = 5;
SourceType_loop = 6;
SourceType_lidar = 7;
SourceType_integrated = 8;
};
required SourceType source_type = 1;
}
message ParticipantData_PB{
//ptcType ParticipantType,
//ptcId INTEGER (0..65535),
//-- temporary ID set by RSU
//-- 0 is RSU itself
//-- 1..255 represent participants detected by RSU
//-- ptcId of different participant needs to be unique in RSU
//source SourceType,
//id OCTET STRING (SIZE(8)) OPTIONAL,
//-- temperary vehicle ID from BSM
//secMark DSecond,
//pos PositionOffsetLLV,
//posConfidence PositionConfidenceSet,
//transmission TransmissionState OPTIONAL,
//speed Speed,
//heading Heading,
//angle SteeringWheelAngle OPTIONAL,
//motionCfd MotionConfidenceSet OPTIONAL,
//accelSet AccelerationSet4Way OPTIONAL,
//size VehicleSize,
//-- Size of participant including motor/non-motor/pedestrian/rsu
//-- is represented by DE_VehilceSize
//vehicleClass VehicleClassification OPTIONAL,
// required ParticipantType_PB ptcType = 1;
required int64 ptcType = 1;
required int32 ptcId = 2;//不同参与者的ptcId在RSU中需要是唯一的,
required SourceType_PB source = 3;
optional String_PB id = 4; // 车的临时id,跟BSM消息一致
/* DSecond */ //1分钟内的毫秒级时刻分辨率为1毫秒有效范围时0~59999.60000及以上表示未知或无效数值
required int64 secMark = 5;
required PositionOffsetLLV_PB pos = 6; // 中心位置
required PositionConfidenceSet_PB posConfidence = 7;
optional TransmissionState_PB transmission = 8; // 车辆挡位
//速度 0.02m/s
required int32 speed = 9;
//航向角
required int32 heading = 10;
//SteeringWheelAngle_t 方向盘转角(-126..127)
optional int32 angle = 11;
optional MotionConfidenceSet_PB motionCfd = 12;
optional AccelerationSet4Way_PB accelSet = 13;
required VehicleSize_PB size = 14;
optional VehicleClassification_PB vehicleClass = 15;
}
message ParticipantList_PB{
// 定义交通参与者列表。应用于RSM消息中表示RSU当前探测到的所有或者部分交通参与者信息
// size 为1-16个
repeated ParticipantData_PB participantData = 1;
}
message RoadsideSafetyMessage_PB {
/* MsgCount */
//发送方为自己发送的同类消息,依次进行编号。编号数值为 0 ~ 127。
//当发送方开始发起某一类数据时,它可以随机选择起始编号,随后依次递增。发送方也可以在
//连续发送相同的数据帧时,选择使用相同的 MsgCount 消息编号。编号到达 127 后,则下一个回到 0。
required int64 msgCnt = 1;
required String_PB id = 2; //RSU_ID
required Position3D_PB refPos = 3; // 三维坐标
required ParticipantList_PB participants = 4; //交通参与者信息
}
message RSM_PB {
required RoadsideSafetyMessage_PB rsmFrame = 1;
optional common.Header header = 2;
}

View File

@@ -4,7 +4,8 @@ package mogo.telematics;
enum ParamSetType
{
ParamSetTypeNone = 0;
ParamSetTypeBlindArea = 1;
ParamSetTypeBlindArea = 1; //bool, 0:off 1:on
ParamSetTypeV2N = 2; //bool, 0:不发给PnC 1:发给Pnc
}
message ParamSetCmd

View File

@@ -0,0 +1,14 @@
syntax = "proto2";
package mogo.v2x;
//下发的时机与频率:
//自车在自动驾驶状态时,云端推送自动驾驶路线上的全局事件, 频率 1HZ; 手动驾驶不推送;
message RoadOverviewData {
required uint64 msgId = 1; // 消息ID
required uint64 timestamp = 2; //unix时间戳
optional bytes constructData = 3; //施工 RSI_PB
optional bytes triangleData = 4; //三角牌 RSI_PB
optional bytes congestionData = 5; //拥堵 RSI_PB
optional bytes parkingViolationData = 6; //违停 ---包含 静态障碍车 RSM_PB
optional uint32 eventCount = 7; //全部事件数据
}

View File

@@ -0,0 +1,184 @@
# 大型清扫车云端调度链路pad-云 PB定义
## 此目录内PB文件仅用于云端下发清扫车任务
|清扫车功能|PB|
|:-|:-|
|清扫车云端任务调度|sweeper/sweeper_cloud_task.proto|
|1、云端下发大任务信息type: 100001|sweeper/sweeper_task.proto|
|2、云端下发子任务请求pad确认type100002|sweeper/sweeper_task_confirm.proto|
|3、云端下发任务状态到padtype100003|sweeper/sweeper_task_status.proto|
|4、云端请求pad结束任务type100004|sweeper/sweeper_task_stop.proto|
|5、pad请求挂起任务type100005|sweeper/sweeper_task_suspend_resume.proto|
|6、pad请求恢复挂起的任务type100006|sweeper/sweeper_task_suspend_resume.proto|
|7、pad主动拉取当前车辆正在执行任务的完整信息type100007|sweeper/sweeper_task.proto|
|8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008|sweeper/sweeper_bootable.proto|
|9、云端下发pad大任务状态type: 100009|sweeper/sweeper_big_task_status.proto|
# 接口使用说明
## 回调接口类IMoGoSweeperFutianCloudTaskListener
## 下发接口类CallerAutoPilotControlManager
~~~
服务端发:
/**
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskInfo 数据
*/
fun onSweeperFutianCloudTask(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskInfo: SweeperTask.TaskInfo)
客户端回复:
/**
* 开始大任务响应
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto/StartTaskResp 响应信息
*
* @param reqNo 请求编号
* @param startTaskResp 参数
* @return boolean
*/
CallerAutoPilotControlManager.INSTANCE.sendSweeperStartTaskResp();
客户端发:
/**
* pad主动拉取当前车辆正在执行任务的完整信息请求
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto/GetTaskReq
*
* @param reqNo 请求编号
* @param getTaskReq 参数
* @return boolean
*/
CallerAutoPilotControlManager.INSTANCE.sendSweeperGetTaskReq() 回复上面回调
~~~
~~~
服务端发:
/**
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskConfirm 数据
*/
fun onSweeperFutianCloudTaskConfirm(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskConfirm: TaskConfirm)
客户端回复:
/**
* 子任务安全员确认响应
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto/TaskConfirmResp 响应信息
*
* @param reqNo 请求编号
* @param taskConfirmResp 参数
* @return boolean
*/
CallerAutoPilotControlManager.INSTANCE.sendSweeperTaskConfirmResp()
~~~
~~~
服务端发:
/**
* 3、云端下发任务状态到padtype100003-> sweeper_task_status.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskStatusPush 数据
*/
fun onSweeperFutianCloudTaskStatus(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskStatusPush: TaskStatusPush)
客户端回复:
~~~
~~~
服务端发:
/**
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param stopTaskReq 数据
*/
fun onSweeperFutianCloudTaskStop(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, stopTaskReq: StopTaskReq)
客户端回复:
/**
* 结束任务响应
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto/StopTaskResp 响应信息
*
* @param reqNo 请求编号
* @param stopTaskResp 参数
* @return boolean
*/
CallerAutoPilotControlManager.INSTANCE.sendSweeperStopTaskResp()
~~~
~~~
客户端发:
/**
* 挂起任务 恢复挂起的任务
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
*
* @param isSuspend true挂起任务 false恢复挂起的任务
* @param reqNo 请求编号
* @param suspendResumeTaskReq 参数
* @return boolean
*/
CallerAutoPilotControlManager.INSTANCE.sendSweeperSuspendResumeTaskReq()
服务端回复:
/**
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param suspendResumeTaskResp 数据
*/
fun onSweeperFutianCloudTaskSuspendResume(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, suspendResumeTaskResp: SuspendResumeTaskResp)
~~~
~~~
客户端发:
/**
* pad上报是否可以进自驾
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008sweeper_bootable.proto/IsBootable
*
* @param reqNo 请求编号
* @param isBootable 参数
* @return boolean
*/
CallerAutoPilotControlManager.INSTANCE.sendSweeperAutopilotBootable(
服务端回复:
/**
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008-> sweeper_autopilot.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param isBootableResp 数据
*/
fun onSweeperFutianCloudBootable(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, isBootableResp: IsBootableResp)
~~~
~~~
服务端发:
/**
* 9、云端下发pad大任务状态type: 100009-> sweeper_big_task_status.proto
*
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param bigTaskStatusPush 数据
*/
fun onSweeperFutianCloudBigTaskStatus(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, bigTaskStatusPush: BigTaskStatusPush)
客户端回复:
~~~

View File

@@ -0,0 +1,25 @@
syntax = "proto3";
package com.zhjt.mogo.adas.data.sweeper.task.big;
/**** 9、云端下发pad大任务状态type: 100009 ****/
//9.1、请求信息
// 任务状态
enum BigTaskStatus {
TO_START = 0; //待开始
RUNNING = 1; // 运行中
CANCLE = 2; // 取消
FINISHED = 3; // 结束
ABNORMAL = 4; // 异常
}
message BigTaskStatusPush {
string sn = 1;// sn
string taskId = 2;// 大任务编号
BigTaskStatus TaskStatus = 3;// 大任务状态
uint64 systemTime = 4; // 时间戳
}
//4.2、响应信息
//无

View File

@@ -0,0 +1,32 @@
syntax = "proto3";
package com.zhjt.mogo.adas.data.sweeper.bootable;
import "sweeper/sweeper_common.proto";
/**** 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008 ****/
//8.1、请求信息
/**
pad 上报是否可以进自驾
*/
message IsBootable {
string sn = 1; // sn
string taskId = 2; // 大任务Id
string subTaskId = 3; // 子任务id
uint64 lineId = 4; //路线id
}
//8.2、响应信息
/**
云端响应
*/
message IsBootableResp {
string sn = 1;// sn
string taskId = 2;// 大任务编号
string subTaskId = 3;// 子任务ID
common.Code code = 4; //响应状态
string msg = 5; //响应详情
}

View File

@@ -0,0 +1,29 @@
syntax = "proto3";
package com.zhjt.mogo.adas.data.sweeper;
//清扫车云端任务调度
//消息类型 msgType
enum MessageType
{
DefaultType = 0;
CloudPushTask = 100001; //1、云端下发大任务信息type: 100001-> sweeper_task.proto
CloudPushTaskConfirm = 100002; //2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto
CloudPushTaskStatus = 100003; //3、云端下发任务状态到padtype100003-> sweeper_task_status.proto
CloudPushTaskStop = 100004; //4、云端请求pad结束任务type100004-> sweeper_task_stop.proto
PadSendTaskSuspend = 100005; //5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto
PadSendTaskResume = 100006; //6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto
PadSendGetTaskReq = 100007; //7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto
PadSendBootable = 100008; //8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008-> sweeper_bootable.proto
CloudPushBigTaskStatus = 100009; //9、云端下发pad大任务状态type: 100009-> sweeper_big_task_status.proto
}
//云下行消息
//PAD上行消息
message SweeperMessage
{
uint32 msgType = 1; //消息类型,响应请求时,使用对应请求的消息类型
bytes payload = 2; //消息内容
string reqNo = 3; //请求编号,响应请求时,使用请求方的请求编号
uint64 sysTime = 4; //当前时间戳
}

View File

@@ -0,0 +1,17 @@
syntax = "proto3";
package com.zhjt.mogo.adas.data.sweeper.common;
// 任务状态
enum TaskStatus {
TO_START = 0; //待开始
RUNNING = 1; // 运行中
SUSPENDED = 2; // 暂停
FINISHED = 3; // 结束
ABNORMAL = 4; // *异常
}
// 响应状态
enum Code {
SUCCEED = 0; // 成功
FAILED = 1; // 失败
}

View File

@@ -0,0 +1,87 @@
syntax = "proto3";
package com.zhjt.mogo.adas.data.sweeper.task;
import "sweeper/sweeper_common.proto";
/**** 1、云端下发大任务信息type: 100001 ****/
//1.1、请求信息
/**
点位信息
*/
message Location
{
double wgsLongitude = 1; // wgs84经度
double wgsLatitude = 2; // wgs84维度
double longitude = 3; // gcj02经度
double latitude = 4; // gcj02维度
string siteName = 5; // 站点名称
string address = 6; // 站点详细地址
}
// 任务类型枚举
enum TaskModel
{
AUTO = 0; //自动驾驶
MANUAL = 1; //人工驾驶
}
/**
子任务列表
*/
message SubTaskInfo
{
string subTaskId = 1; // 子任务编号
string subTaskName = 2; // 子任务名称
TaskModel taskModel = 3; // 任务类型
Location startLocation = 4; // 起点
Location endLocation = 5; // 终点
uint32 lineId = 6; // 路线Id
string lineName = 7; // 路线名称
common.TaskStatus taskStatus = 8; // 任务状态
}
/**
调度任务
*/
message TaskInfo {
string sn = 1; // sn
string taskId = 2; // 大任务Id
string taskName = 3; // 大任务名称
uint64 taskStartTime = 4; //任务开始时间 时间戳
uint64 taskEndTime = 5; //任务预计结束时间 时间戳
uint64 currentTime = 6; //当前时间戳
repeated SubTaskInfo subList = 7; // 子任务列表信息
}
//1.2、响应信息
// 响应状态
enum StartTaskCode {
MANUAL_CONFIRM = 0; // 安全员确认执行任务-pad
MANUAL_REFUSE = 1; // 安全员拒绝任务-pad
RECEIVED = 2; // 收到任务
OVER_TIME = 3; // 超时未确认
}
/**
开始大任务响应
*/
message StartTaskResp {
string sn = 1;// sn
string taskId = 2;// 大任务编号
StartTaskCode code = 3; //响应状态
}
/**** 7、pad主动拉取当前车辆正在执行任务的完整信息 (type100007) ****/
//7.1、请求信息
/**
pad主动拉取当前车辆正在执行任务的完整信息请求
*/
message GetTaskReq {
string sn = 1;// sn
}
//7.2 (1.1)

View File

@@ -0,0 +1,34 @@
syntax = "proto3";
package com.zhjt.mogo.adas.data.sweeper.task.confirm;
/**** 2、云端下发子任务请求pad确认 (type100002) ****/
//2.1、请求信息
/**
子任务安全员确认请求
*/
message TaskConfirm {
string sn = 1;// sn
string taskId = 2;// 大任务编号
string subTaskId = 3;// 子任务编号
}
//2.2、响应信息
// 响应状态
enum TaskConfirmCode {
MANUAL_CONFIRM = 0; // 安全员确认执行任务-pad
MANUAL_REFUSE_ALL = 1; // 安全员拒绝全部任务-pad
MANUAL_REFUSE_SINGLE = 2; // 安全员拒绝单个子任务-pad
OVER_TIME = 3; // 超时未确认
}
/**
子任务安全员确认响应
*/
message TaskConfirmResp {
string sn = 1;// sn
string taskId = 2;// 大任务编号
string subTaskId = 3;// 子任务编号
TaskConfirmCode code = 4; //响应状态
}

View File

@@ -0,0 +1,18 @@
syntax = "proto3";
package com.zhjt.mogo.adas.data.sweeper.task.status;
import "sweeper/sweeper_common.proto";
/**** 3、云端下发任务状态到pad (type100003) ****/
//3.1、请求信息
message TaskStatusPush {
string sn = 1;// sn
string taskId = 2;// 大任务编号
string subTaskId = 3;// 子任务编号
common.TaskStatus TaskStatus = 4;// 子任务状态
uint64 systemTime = 5; // 时间戳
}
//3.2、响应信息
// 无

View File

@@ -0,0 +1,41 @@
syntax = "proto3";
package com.zhjt.mogo.adas.data.sweeper.task.stop;
/**** 4、云端请求pad结束任务 (type100004) ****/
//4.1、请求信息
// 任务状态
enum StopTaskType {
TIMEOUT = 0; //超时结束
ADVANCE = 1; // 提前结束
NORMAL = 2; // 正常结束
}
/**
云端结束任务请求
*/
message StopTaskReq {
string sn = 1;// sn
string taskId = 2;// 大任务ID
StopTaskType type = 3; //任务结束类型
}
//4.2、响应信息
// 响应状态
enum StopTaskCode {
MANUAL_CONFIRM = 0; // 安全员确认
MANUAL_REFUSE = 1; // 安全员拒绝
OVER_TIME = 2; // 超时未确认
}
/**
结束任务响应
*/
message StopTaskResp {
string sn = 1;// sn
string taskId = 2;// 大任务编号
StopTaskCode code = 3; //响应状态
}

View File

@@ -0,0 +1,34 @@
syntax = "proto3";
package com.zhjt.mogo.adas.data.sweeper.task;
import "sweeper/sweeper_common.proto";
/**** 5、pad请求挂起任务 (type100005) ****/
/**** 6、pad请求恢复挂起的任务 (type100006) ****/
//5.1、请求信息
//6.1、请求信息
/**
pad挂起任务请求
pad恢复挂起的任务请求
*/
message SuspendResumeTaskReq {
string sn = 1;// sn
string taskId = 2;// 大任务ID
string subTaskId = 3;// 大任务ID
}
//5.2、响应信息
//6.2、响应信息
/**
挂起任务响应
恢复挂起的任务响应
*/
message SuspendResumeTaskResp {
string sn = 1;// sn
string taskId = 2;// 大任务编号
string subTaskId = 3;// 子任务ID
common.Code code = 4; //响应状态
string msg = 5; //响应详情
}

View File

@@ -45,6 +45,12 @@ 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.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.SweeperTaskSuspendResume;
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm;
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
import com.zhjt.service.chain.ChainLog;
import com.zhjt.service.chain.TracingConstants;
@@ -1568,5 +1574,107 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
}
/**
* 发送清扫车指令到云控
*
* @param messageType 消息类型
* @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()
.setMsgType(messageType.getNumber())
.setSysTime(System.currentTimeMillis());
if (!TextUtils.isEmpty(reqNo)) {
builder.setReqNo(reqNo);
}
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());
}
/**
* 开始大任务响应
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto/StartTaskResp 响应信息
*
* @param reqNo 请求编号
* @param startTaskResp 参数
* @return boolean
*/
@Override
public boolean sendSweeperStartTaskResp(@NonNull String reqNo, @NonNull SweeperTask.StartTaskResp startTaskResp) {
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.CloudPushTask, reqNo, startTaskResp.toByteString());
}
/**
* 子任务安全员确认响应
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto/TaskConfirmResp 响应信息
*
* @param reqNo 请求编号
* @param taskConfirmResp 参数
* @return boolean
*/
@Override
public boolean sendSweeperTaskConfirmResp(@NonNull String reqNo, @NonNull SweeperTaskConfirm.TaskConfirmResp taskConfirmResp) {
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.CloudPushTaskConfirm, reqNo, taskConfirmResp.toByteString());
}
/**
* 结束任务响应
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto/StopTaskResp 响应信息
*
* @param reqNo 请求编号
* @param stopTaskResp 参数
* @return boolean
*/
@Override
public boolean sendSweeperStopTaskResp(@NonNull String reqNo, @NonNull SweeperTaskStop.StopTaskResp stopTaskResp) {
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.CloudPushTaskStop, reqNo, stopTaskResp.toByteString());
}
/**
* 结束任务响应
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
*
* @param isSuspend true挂起任务 false恢复挂起的任务
* @param reqNo 请求编号
* @param suspendResumeTaskReq 参数
* @return boolean
*/
@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());
}
/**
* pad主动拉取当前车辆正在执行任务的完整信息请求
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto/GetTaskReq
*
* @param reqNo 请求编号
* @param getTaskReq 参数
* @return boolean
*/
@Override
public boolean sendSweeperGetTaskReq(@NonNull String reqNo, @NonNull SweeperTask.GetTaskReq getTaskReq) {
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.PadSendGetTaskReq, reqNo, getTaskReq.toByteString());
}
/**
* pad上报是否可以进自驾
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008sweeper_bootable.proto/IsBootable
*
* @param reqNo 请求编号
* @param isBootable 参数
* @return boolean
*/
@Override
public boolean sendSweeperAutopilotBootable(@NonNull String reqNo, @NonNull SweeperBootable.IsBootable isBootable) {
return sendSweeperCloudTaskCmd(SweeperCloudTask.MessageType.PadSendBootable, reqNo, isBootable.toByteString());
}
}

View File

@@ -10,6 +10,11 @@ import com.zhidao.support.adas.high.common.Constants;
import com.zhidao.support.adas.high.common.Define;
import com.zhidao.support.adas.high.common.MessageType;
import com.zhidao.support.adas.high.common.ReceiveTimeoutManager;
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.SweeperTaskSuspendResume;
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm;
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
import java.util.HashSet;
import java.util.List;
@@ -822,6 +827,86 @@ public class AdasManager implements IAdasNetCommApi {
return mChannel != null && mChannel.sendBagManagerCmd(bagManager);
}
/**
* 开始大任务响应
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto/StartTaskResp 响应信息
*
* @param reqNo 请求编号
* @param startTaskResp 参数
* @return boolean
*/
@Override
public boolean sendSweeperStartTaskResp(@NonNull String reqNo, @NonNull SweeperTask.StartTaskResp startTaskResp) {
return mChannel != null && mChannel.sendSweeperStartTaskResp(reqNo, startTaskResp);
}
/**
* 子任务安全员确认响应
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto/TaskConfirmResp 响应信息
*
* @param reqNo 请求编号
* @param taskConfirmResp 参数
* @return boolean
*/
@Override
public boolean sendSweeperTaskConfirmResp(@NonNull String reqNo, @NonNull SweeperTaskConfirm.TaskConfirmResp taskConfirmResp) {
return mChannel != null && mChannel.sendSweeperTaskConfirmResp(reqNo, taskConfirmResp);
}
/**
* 结束任务响应
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto/StopTaskResp 响应信息
*
* @param reqNo 请求编号
* @param stopTaskResp 参数
* @return boolean
*/
@Override
public boolean sendSweeperStopTaskResp(@NonNull String reqNo, @NonNull SweeperTaskStop.StopTaskResp stopTaskResp) {
return mChannel != null && mChannel.sendSweeperStopTaskResp(reqNo, stopTaskResp);
}
/**
* 挂起任务 恢复挂起的任务
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
*
* @param isSuspend true挂起任务 false恢复挂起的任务
* @param reqNo 请求编号
* @param suspendResumeTaskReq 参数
* @return boolean
*/
@Override
public boolean sendSweeperSuspendResumeTaskReq(boolean isSuspend, @NonNull String reqNo, @NonNull SweeperTaskSuspendResume.SuspendResumeTaskReq suspendResumeTaskReq) {
return mChannel != null && mChannel.sendSweeperSuspendResumeTaskReq(isSuspend, reqNo, suspendResumeTaskReq);
}
/**
* pad主动拉取当前车辆正在执行任务的完整信息请求
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto/GetTaskReq
*
* @param reqNo 请求编号
* @param getTaskReq 参数
* @return boolean
*/
@Override
public boolean sendSweeperGetTaskReq(@NonNull String reqNo, @NonNull SweeperTask.GetTaskReq getTaskReq) {
return mChannel != null && mChannel.sendSweeperGetTaskReq(reqNo, getTaskReq);
}
/**
* pad上报是否可以进自驾
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008sweeper_bootable.proto/IsBootable
*
* @param reqNo 请求编号
* @param isBootable 参数
* @return boolean
*/
@Override
public boolean sendSweeperAutopilotBootable(@NonNull String reqNo, @NonNull SweeperBootable.IsBootable isBootable) {
return mChannel != null && mChannel.sendSweeperAutopilotBootable(reqNo, isBootable);
}
/**
* 获取工控机固定IP列表
*

View File

@@ -6,6 +6,11 @@ import com.zhidao.support.adas.high.bean.VersionCompatibility;
import com.zhidao.support.adas.high.common.Constants;
import com.zhidao.support.adas.high.common.Define;
import com.zhidao.support.adas.high.common.MessageType;
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.SweeperTaskSuspendResume;
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm;
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
import java.util.List;
import java.util.Set;
@@ -506,6 +511,69 @@ public interface IAdasNetCommApi {
*/
boolean sendBagManagerCmd(BagManagerOuterClass.BagManager bagManager);
/**
* 开始大任务响应
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto/StartTaskResp 响应信息
*
* @param reqNo 请求编号
* @param startTaskResp 参数
* @return boolean
*/
boolean sendSweeperStartTaskResp(@NonNull String reqNo, @NonNull SweeperTask.StartTaskResp startTaskResp);
/**
* 子任务安全员确认响应
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto/TaskConfirmResp 响应信息
*
* @param reqNo 请求编号
* @param taskConfirmResp 参数
* @return boolean
*/
boolean sendSweeperTaskConfirmResp(@NonNull String reqNo, @NonNull SweeperTaskConfirm.TaskConfirmResp taskConfirmResp);
/**
* 结束任务响应
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto/StopTaskResp 响应信息
*
* @param reqNo 请求编号
* @param stopTaskResp 参数
* @return boolean
*/
boolean sendSweeperStopTaskResp(@NonNull String reqNo, @NonNull SweeperTaskStop.StopTaskResp stopTaskResp);
/**
* 挂起任务 恢复挂起的任务
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
*
* @param isSuspend true挂起任务 false恢复挂起的任务
* @param reqNo 请求编号
* @param suspendResumeTaskReq 参数
* @return boolean
*/
boolean sendSweeperSuspendResumeTaskReq(boolean isSuspend, @NonNull String reqNo, @NonNull SweeperTaskSuspendResume.SuspendResumeTaskReq suspendResumeTaskReq);
/**
* pad主动拉取当前车辆正在执行任务的完整信息请求
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto/GetTaskReq
*
* @param reqNo 请求编号
* @param getTaskReq 参数
* @return boolean
*/
boolean sendSweeperGetTaskReq(@NonNull String reqNo, @NonNull SweeperTask.GetTaskReq getTaskReq);
/**
* pad上报是否可以进自驾
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008sweeper_bootable.proto/IsBootable
*
* @param reqNo 请求编号
* @param isBootable 参数
* @return boolean
*/
boolean sendSweeperAutopilotBootable(@NonNull String reqNo, @NonNull SweeperBootable.IsBootable isBootable);
// TODO 需求暂停 待讨论
// boolean getRoutes();

View File

@@ -1,8 +1,18 @@
package com.zhidao.support.adas.high;
import androidx.annotation.NonNull;
import com.mogo.support.obu.ObuScene;
import com.zhidao.support.adas.high.common.ProtocolStatus;
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.SweeperTaskSuspendResume;
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus;
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm;
import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus;
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
import org.jetbrains.annotations.NotNull;
@@ -253,6 +263,85 @@ public interface OnAdasListener {
*/
void onSweeperTaskIndexData(MessagePad.Header header, RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex roboSweeperTaskIndex);
/**
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto
* 7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskInfo 数据
*/
void onSweeperFutianCloudTask(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime, @NonNull SweeperTask.TaskInfo taskInfo);
/**
* 2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskConfirm 数据
*/
void onSweeperFutianCloudTaskConfirm(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime, @NonNull SweeperTaskConfirm.TaskConfirm taskConfirm);
/**
* 3、云端下发任务状态到padtype100003-> sweeper_task_status.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param taskStatusPush 数据
*/
void onSweeperFutianCloudTaskStatus(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime, @NonNull SweeperTaskStatus.TaskStatusPush taskStatusPush);
/**
* 4、云端请求pad结束任务type100004-> sweeper_task_stop.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param stopTaskReq 数据
*/
void onSweeperFutianCloudTaskStop(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime, @NonNull SweeperTaskStop.StopTaskReq stopTaskReq);
/**
* 5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto
* 6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param suspendResumeTaskResp 数据
*/
void onSweeperFutianCloudTaskSuspendResume(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime, @NonNull SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp);
/**
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008-> sweeper_autopilot.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param isBootableResp 数据
*/
void onSweeperFutianCloudBootable(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime, @NonNull SweeperBootable.IsBootableResp isBootableResp);
/**
* 9、云端下发pad大任务状态type: 100009-> sweeper_big_task_status.proto
*
* @param header 头
* @param messageType 消息类型
* @param reqNo 请求编号
* @param sysTime 当前时间戳
* @param bigTaskStatusPush 数据
*/
void onSweeperFutianCloudBigTaskStatus(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime, @NonNull SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush);
/**
* Bag管理应答
*

View File

@@ -59,6 +59,8 @@ public enum MessageType {
TYPE_SEND_BAG_MANAGER_CMD(MessagePad.MessageType.MsgTypeBagManagerCmd, "Bag管理请求"),
TYPE_RECEIVE_BAG_MANAGER_CMD(MessagePad.MessageType.MsgTypeBagManagerCmd, "Bag管理应答"),
TYPE_SEND_PLANNING_CMD(MessagePad.MessageType.MsgTypePlanningCmd, "给Planning指令"),
TYPE_SEND_SWEEPER_CLOUD_TASK_CMD(MessagePad.MessageType.MsgTypeTaskCmd, "发送清扫车指令到云控"),
TYPE_RECEIVE_SWEEPER_CLOUD_TASK_CMD(MessagePad.MessageType.MsgTypeTaskCmd, "云控下发清扫车任务指令"),
//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

@@ -38,6 +38,7 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg bagManagerMessage;//Bag管理应答
private IMsg backCameraVideoMessage;//清扫车后摄像头
private IMsg pointCloudMessage;//3D点云
private IMsg sweeperCloudTaskMessage;//云控下发清扫车任务指令
private final AutopilotReview autopilotReview;
@@ -197,6 +198,12 @@ public class MyMessageFactory implements IMyMessageFactory {
backCameraVideoMessage = new BackCameraVideoMessage();
}
return backCameraVideoMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_SWEEPER_CLOUD_TASK_CMD.typeCode) {
//云控下发清扫车任务指令
if (sweeperCloudTaskMessage == null) {
sweeperCloudTaskMessage = new SweeperCloudTaskMessage();
}
return sweeperCloudTaskMessage;
} else {
//MessageType.TYPE_DEFAULT.typeCode
return null;

View File

@@ -0,0 +1,78 @@
package com.zhidao.support.adas.high.msg;
import android.os.SystemClock;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.zhidao.support.adas.high.AdasChannel;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.protocol.RawData;
import com.zhjt.mogo.adas.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.SweeperTaskSuspendResume;
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus;
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm;
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;
/**
* 清扫车云端任务调度
*/
public class SweeperCloudTaskMessage extends MyAbstractMessageHandler {
public SweeperCloudTaskMessage() {
}
@Override
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
SweeperCloudTask.SweeperMessage message = SweeperCloudTask.SweeperMessage.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
AdasChannel.calculateTimeConsumingOnDispatchRaw("清扫车云端任务调度", raw.receiveTime);
long nowTime = 0;
if (CupidLogUtils.isEnableLog())
nowTime = SystemClock.elapsedRealtime();
if (adasListener != null) {
MessagePad.Header header = raw.getHeader();
SweeperCloudTask.MessageType msgType = SweeperCloudTask.MessageType.forNumber(message.getMsgType());//消息类型,响应请求时,使用对应请求的消息类型
String reqNo = message.getReqNo(); //请求编号,响应请求时,使用请求方的请求编号
long sysTime = message.getSysTime(); //当前时间戳
ByteString payload = message.getPayload();
if (msgType == SweeperCloudTask.MessageType.CloudPushTask || msgType == SweeperCloudTask.MessageType.PadSendGetTaskReq) {
//1、云端下发大任务信息type: 100001-> sweeper_task.proto
//7、pad主动拉取当前车辆正在执行任务的完整信息type100007-> sweeper_task.proto
SweeperTask.TaskInfo taskInfo = SweeperTask.TaskInfo.parseFrom(payload);
adasListener.onSweeperFutianCloudTask(header, msgType, reqNo, sysTime, taskInfo);
} else if (msgType == SweeperCloudTask.MessageType.CloudPushTaskConfirm) {
//2、云端下发子任务请求pad确认type100002-> sweeper_task_confirm.proto
SweeperTaskConfirm.TaskConfirm taskConfirm = SweeperTaskConfirm.TaskConfirm.parseFrom(payload);
adasListener.onSweeperFutianCloudTaskConfirm(header, msgType, reqNo, sysTime, taskConfirm);
} else if (msgType == SweeperCloudTask.MessageType.CloudPushTaskStatus) {
//3、云端下发任务状态到padtype100003-> sweeper_task_status.proto
SweeperTaskStatus.TaskStatusPush taskStatusPush = SweeperTaskStatus.TaskStatusPush.parseFrom(payload);
adasListener.onSweeperFutianCloudTaskStatus(header, msgType, reqNo, sysTime, taskStatusPush);
} else if (msgType == SweeperCloudTask.MessageType.CloudPushTaskStop) {
//4、云端请求pad结束任务type100004-> sweeper_task_stop.proto
SweeperTaskStop.StopTaskReq stopTaskReq = SweeperTaskStop.StopTaskReq.parseFrom(payload);
adasListener.onSweeperFutianCloudTaskStop(header, msgType, reqNo, sysTime, stopTaskReq);
} else if (msgType == SweeperCloudTask.MessageType.PadSendTaskSuspend || msgType == SweeperCloudTask.MessageType.PadSendTaskResume) {
//5、pad请求挂起任务type100005-> sweeper_task_suspend_resume.proto
//6、pad请求恢复挂起的任务type100006-> sweeper_task_suspend_resume.proto
SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp = SweeperTaskSuspendResume.SuspendResumeTaskResp.parseFrom(payload);
adasListener.onSweeperFutianCloudTaskSuspendResume(header, msgType, reqNo, sysTime, suspendResumeTaskResp);
} else if (msgType == SweeperCloudTask.MessageType.PadSendBootable) {
//8、接管后回自驾-pad上报状态给云端 云端下发启动自驾type: 100008-> sweeper_autopilot.proto
SweeperBootable.IsBootableResp isBootableResp = SweeperBootable.IsBootableResp.parseFrom(payload);
adasListener.onSweeperFutianCloudBootable(header, msgType, reqNo, sysTime, isBootableResp);
} else if (msgType == SweeperCloudTask.MessageType.CloudPushBigTaskStatus) {
//9、云端下发pad大任务状态type: 100009-> sweeper_big_task_status.proto
SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush = SweeperBigTaskStatus.BigTaskStatusPush.parseFrom(payload);
adasListener.onSweeperFutianCloudBigTaskStatus(header, msgType, reqNo, sysTime, bigTaskStatusPush);
}
// adasListener.onBagManagerCmd(raw.getHeader(), bagManager);
}
AdasChannel.calculateTimeConsumingBusiness("清扫车云端任务调度", nowTime);
}
}