[dev_sweeper310][adas]云控清扫车收发接口添加,添加接口使用说明
This commit is contained in:
@@ -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确认(type:100002)-> 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结束任务(type:100004)-> 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请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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: 100008)sweeper_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(
|
||||
|
||||
@@ -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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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确认(type:100002)-> 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、云端下发任务状态到pad(type:100003)-> 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结束任务(type:100004)-> 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请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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管理应答
|
||||
*
|
||||
|
||||
@@ -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确认(type:100002)-> sweeper_task_confirm.proto/TaskConfirmResp 响应信息
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param taskConfirmResp 参数
|
||||
* @return boolean
|
||||
*/
|
||||
fun sendSweeperTaskConfirmResp(reqNo: String, taskConfirmResp: TaskConfirmResp): Boolean
|
||||
|
||||
/**
|
||||
* 结束任务响应
|
||||
* 4、云端请求pad结束任务(type:100004)-> sweeper_task_stop.proto/StopTaskResp 响应信息
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param stopTaskResp 参数
|
||||
* @return boolean
|
||||
*/
|
||||
fun sendSweeperStopTaskResp(reqNo: String, stopTaskResp: StopTaskResp): Boolean
|
||||
|
||||
/**
|
||||
* 挂起任务 恢复挂起的任务
|
||||
* 5、pad请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> sweeper_task.proto/GetTaskReq
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param getTaskReq 参数
|
||||
* @return boolean
|
||||
*/
|
||||
fun sendSweeperGetTaskReq(reqNo: String, getTaskReq: GetTaskReq): Boolean
|
||||
|
||||
/**
|
||||
* pad上报是否可以进自驾
|
||||
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾(type: 100008)sweeper_bootable.proto/IsBootable
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param isBootable 参数
|
||||
* @return boolean
|
||||
*/
|
||||
fun sendSweeperAutopilotBootable(reqNo: String, isBootable: IsBootable): Boolean
|
||||
|
||||
/**
|
||||
* 打开点云绘制
|
||||
*
|
||||
|
||||
@@ -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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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确认(type:100002)-> sweeper_task_confirm.proto
|
||||
*
|
||||
* @param messageType 消息类型
|
||||
* @param reqNo 请求编号
|
||||
* @param sysTime 当前时间戳
|
||||
* @param taskConfirm 数据
|
||||
*/
|
||||
fun onSweeperFutianCloudTaskConfirm(messageType: SweeperCloudTask.MessageType, reqNo: String, sysTime: Long, taskConfirm: TaskConfirm)
|
||||
|
||||
/**
|
||||
* 3、云端下发任务状态到pad(type:100003)-> 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结束任务(type:100004)-> 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请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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)
|
||||
|
||||
}
|
||||
@@ -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确认(type:100002)-> 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结束任务(type:100004)-> 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请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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: 100008)sweeper_bootable.proto/IsBootable
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param isBootable 参数
|
||||
* @return boolean
|
||||
*/
|
||||
fun sendSweeperAutopilotBootable( reqNo: String, isBootable: IsBootable): Boolean {
|
||||
return providerApi?.sendSweeperAutopilotBootable(reqNo, isBootable) ?: false
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 打开点云绘制
|
||||
*/
|
||||
|
||||
@@ -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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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确认(type:100002)-> 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、云端下发任务状态到pad(type:100003)-> 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结束任务(type:100004)-> 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请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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 {
|
||||
//发送方为自己发送的同类消息,依次进行编号。编号数值为0~127,循环使用。
|
||||
//该数据字段用于接收方对来自同一发送方的同一类消息,进行连续收包的监控和丢包的统计。
|
||||
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:未知数据源类型;
|
||||
//——selfinfo:RSU 自身信息;
|
||||
//——v2x:来源于参与者自身的 v2x 广播消息;
|
||||
//——video:来源于视频传感器;
|
||||
//——microwaveRadar:来源于微波雷达传感器;
|
||||
//——loop:来源于地磁线圈传感器;
|
||||
//——lidar:来源于激光雷达传感器;
|
||||
//——integrated:2 类或以上感知数据的融合结果。
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; //全部事件数据
|
||||
}
|
||||
184
libraries/mogo-adas-data/src/main/proto/sweeper/README.md
Normal file
184
libraries/mogo-adas-data/src/main/proto/sweeper/README.md
Normal file
@@ -0,0 +1,184 @@
|
||||
# 大型清扫车云端调度链路pad-云 PB定义
|
||||
## 此目录内PB文件仅用于云端下发清扫车任务
|
||||
|清扫车功能|PB|
|
||||
|:-|:-|
|
||||
|清扫车云端任务调度|sweeper/sweeper_cloud_task.proto|
|
||||
|1、云端下发大任务信息(type: 100001)|sweeper/sweeper_task.proto|
|
||||
|2、云端下发子任务,请求pad确认(type:100002)|sweeper/sweeper_task_confirm.proto|
|
||||
|3、云端下发任务状态到pad(type:100003)|sweeper/sweeper_task_status.proto|
|
||||
|4、云端请求pad结束任务(type:100004)|sweeper/sweeper_task_stop.proto|
|
||||
|5、pad请求挂起任务(type:100005)|sweeper/sweeper_task_suspend_resume.proto|
|
||||
|6、pad请求恢复挂起的任务(type:100006)|sweeper/sweeper_task_suspend_resume.proto|
|
||||
|7、pad主动拉取当前车辆正在执行任务的完整信息(type:100007)|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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> sweeper_task.proto/GetTaskReq
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param getTaskReq 参数
|
||||
* @return boolean
|
||||
*/
|
||||
CallerAutoPilotControlManager.INSTANCE.sendSweeperGetTaskReq() 回复上面回调
|
||||
~~~
|
||||
|
||||
~~~
|
||||
服务端发:
|
||||
/**
|
||||
* 2、云端下发子任务,请求pad确认(type:100002)-> 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确认(type:100002)-> sweeper_task_confirm.proto/TaskConfirmResp 响应信息
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param taskConfirmResp 参数
|
||||
* @return boolean
|
||||
*/
|
||||
CallerAutoPilotControlManager.INSTANCE.sendSweeperTaskConfirmResp()
|
||||
~~~
|
||||
|
||||
~~~
|
||||
服务端发:
|
||||
/**
|
||||
* 3、云端下发任务状态到pad(type:100003)-> 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结束任务(type:100004)-> 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结束任务(type:100004)-> sweeper_task_stop.proto/StopTaskResp 响应信息
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param stopTaskResp 参数
|
||||
* @return boolean
|
||||
*/
|
||||
CallerAutoPilotControlManager.INSTANCE.sendSweeperStopTaskResp()
|
||||
~~~
|
||||
|
||||
~~~
|
||||
客户端发:
|
||||
/**
|
||||
* 挂起任务 恢复挂起的任务
|
||||
* 5、pad请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
|
||||
*
|
||||
* @param isSuspend true:挂起任务 false:恢复挂起的任务
|
||||
* @param reqNo 请求编号
|
||||
* @param suspendResumeTaskReq 参数
|
||||
* @return boolean
|
||||
*/
|
||||
CallerAutoPilotControlManager.INSTANCE.sendSweeperSuspendResumeTaskReq()
|
||||
|
||||
服务端回复:
|
||||
/**
|
||||
* 5、pad请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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: 100008)sweeper_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)
|
||||
|
||||
客户端回复:
|
||||
无
|
||||
~~~
|
||||
@@ -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、响应信息
|
||||
//无
|
||||
@@ -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; //响应详情
|
||||
}
|
||||
|
||||
@@ -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确认(type:100002)-> sweeper_task_confirm.proto
|
||||
CloudPushTaskStatus = 100003; //3、云端下发任务状态到pad(type:100003)-> sweeper_task_status.proto
|
||||
CloudPushTaskStop = 100004; //4、云端请求pad结束任务(type:100004)-> sweeper_task_stop.proto
|
||||
PadSendTaskSuspend = 100005; //5、pad请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto
|
||||
PadSendTaskResume = 100006; //6、pad请求恢复挂起的任务(type:100006)-> sweeper_task_suspend_resume.proto
|
||||
PadSendGetTaskReq = 100007; //7、pad主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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; //当前时间戳
|
||||
}
|
||||
@@ -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; // 失败
|
||||
}
|
||||
@@ -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主动拉取当前车辆正在执行任务的完整信息 (type:100007) ****/
|
||||
|
||||
//7.1、请求信息
|
||||
/**
|
||||
pad主动拉取当前车辆正在执行任务的完整信息请求
|
||||
*/
|
||||
message GetTaskReq {
|
||||
string sn = 1;// sn
|
||||
}
|
||||
|
||||
//7.2、响应信息 (同1.1请求信息)
|
||||
@@ -0,0 +1,34 @@
|
||||
syntax = "proto3";
|
||||
package com.zhjt.mogo.adas.data.sweeper.task.confirm;
|
||||
|
||||
|
||||
/**** 2、云端下发子任务,请求pad确认 (type:100002) ****/
|
||||
|
||||
//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; //响应状态
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
syntax = "proto3";
|
||||
package com.zhjt.mogo.adas.data.sweeper.task.status;
|
||||
|
||||
import "sweeper/sweeper_common.proto";
|
||||
|
||||
/**** 3、云端下发任务状态到pad (type:100003) ****/
|
||||
|
||||
//3.1、请求信息
|
||||
message TaskStatusPush {
|
||||
string sn = 1;// sn
|
||||
string taskId = 2;// 大任务编号
|
||||
string subTaskId = 3;// 子任务编号
|
||||
common.TaskStatus TaskStatus = 4;// 子任务状态
|
||||
uint64 systemTime = 5; // 时间戳
|
||||
}
|
||||
|
||||
//3.2、响应信息
|
||||
// 无
|
||||
@@ -0,0 +1,41 @@
|
||||
syntax = "proto3";
|
||||
package com.zhjt.mogo.adas.data.sweeper.task.stop;
|
||||
|
||||
|
||||
/**** 4、云端请求pad结束任务 (type:100004) ****/
|
||||
|
||||
//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; //响应状态
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
syntax = "proto3";
|
||||
package com.zhjt.mogo.adas.data.sweeper.task;
|
||||
|
||||
import "sweeper/sweeper_common.proto";
|
||||
|
||||
/**** 5、pad请求挂起任务 (type:100005) ****/
|
||||
/**** 6、pad请求恢复挂起的任务 (type:100006) ****/
|
||||
|
||||
//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; //响应详情
|
||||
}
|
||||
@@ -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确认(type:100002)-> 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结束任务(type:100004)-> 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请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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: 100008)sweeper_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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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确认(type:100002)-> 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结束任务(type:100004)-> 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请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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: 100008)sweeper_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列表
|
||||
*
|
||||
|
||||
@@ -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确认(type:100002)-> sweeper_task_confirm.proto/TaskConfirmResp 响应信息
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param taskConfirmResp 参数
|
||||
* @return boolean
|
||||
*/
|
||||
boolean sendSweeperTaskConfirmResp(@NonNull String reqNo, @NonNull SweeperTaskConfirm.TaskConfirmResp taskConfirmResp);
|
||||
|
||||
/**
|
||||
* 结束任务响应
|
||||
* 4、云端请求pad结束任务(type:100004)-> sweeper_task_stop.proto/StopTaskResp 响应信息
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param stopTaskResp 参数
|
||||
* @return boolean
|
||||
*/
|
||||
boolean sendSweeperStopTaskResp(@NonNull String reqNo, @NonNull SweeperTaskStop.StopTaskResp stopTaskResp);
|
||||
|
||||
/**
|
||||
* 挂起任务 恢复挂起的任务
|
||||
* 5、pad请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto/SuspendResumeTaskReq
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> sweeper_task.proto/GetTaskReq
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param getTaskReq 参数
|
||||
* @return boolean
|
||||
*/
|
||||
boolean sendSweeperGetTaskReq(@NonNull String reqNo, @NonNull SweeperTask.GetTaskReq getTaskReq);
|
||||
|
||||
/**
|
||||
* pad上报是否可以进自驾
|
||||
* 8、接管后回自驾-pad上报状态给云端 云端下发启动自驾(type: 100008)sweeper_bootable.proto/IsBootable
|
||||
*
|
||||
* @param reqNo 请求编号
|
||||
* @param isBootable 参数
|
||||
* @return boolean
|
||||
*/
|
||||
boolean sendSweeperAutopilotBootable(@NonNull String reqNo, @NonNull SweeperBootable.IsBootable isBootable);
|
||||
|
||||
// TODO 需求暂停 待讨论
|
||||
// boolean getRoutes();
|
||||
|
||||
|
||||
@@ -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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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确认(type:100002)-> 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、云端下发任务状态到pad(type:100003)-> 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结束任务(type:100004)-> 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请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto
|
||||
* 6、pad请求恢复挂起的任务(type:100006)-> 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管理应答
|
||||
*
|
||||
|
||||
@@ -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, "清扫车指标数据"),
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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主动拉取当前车辆正在执行任务的完整信息(type:100007)-> 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确认(type:100002)-> 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、云端下发任务状态到pad(type:100003)-> 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结束任务(type:100004)-> 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请求挂起任务(type:100005)-> sweeper_task_suspend_resume.proto
|
||||
//6、pad请求恢复挂起的任务(type:100006)-> 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user