[sweeper-cloud]pad端请求云控是否可以进入自驾逻辑处理
This commit is contained in:
@@ -4,6 +4,8 @@ import chassis.ChassisStatesOuterClass
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable.IsBootableResp
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon.Code
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask
|
||||
@@ -43,7 +45,7 @@ interface ISweeperCloudTaskCallback {
|
||||
/**
|
||||
* pad请求云端进入自驾
|
||||
*/
|
||||
fun onSweeperCloudBootable(taskId:String,subTaskId:String,code:Code)
|
||||
fun onSweeperCloudBootable(taskId:String,subTaskId:String,isBootableResp: IsBootableResp)
|
||||
|
||||
/**
|
||||
* 云端同步大任务状态
|
||||
|
||||
@@ -92,9 +92,6 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
protected int getLayoutId() {
|
||||
return R.layout.sweeper_base_fragment;
|
||||
}
|
||||
|
||||
private View panelView;
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
return true;
|
||||
@@ -106,7 +103,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
groupTestPanel = findViewById(R.id.groupTestPanel);
|
||||
flTaskListPanelContainer = findViewById(R.id.module_mogo_och_task_list_container);
|
||||
mTrafficDataView = findViewById(R.id.sweeper_arc);
|
||||
panelView = LayoutInflater.from(getContext()).inflate(getTaskListPanelViewId(), flTaskListPanelContainer);
|
||||
LayoutInflater.from(getContext()).inflate(getTaskListPanelViewId(), flTaskListPanelContainer);
|
||||
mSwitchMapModeImage = findViewById(R.id.sweeper_switch_model_icon);
|
||||
mSettingBtn = findViewById(R.id.sweeper_setting_model_icon);
|
||||
mCardBtn = findViewById(R.id.sweeper_card_model_icon);
|
||||
@@ -487,7 +484,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
* 模拟云端发送任务信息
|
||||
*/
|
||||
public void mockSendCloudTaskInfo() {
|
||||
SweeperCloudTaskUtils.mockSendCloudTaskInfo(SweeperCloudTask.MessageType.CloudPushTask);
|
||||
SweeperCloudTaskUtils.mockSendCloudTaskInfo(SweeperCloudTask.MessageType.PadSendGetTaskReq);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,6 +6,7 @@ import androidx.lifecycle.lifecycleScope
|
||||
import chassis.ChassisStatesOuterClass
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion.STATUS_AUTOPILOT_ENABLE
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
@@ -23,6 +24,7 @@ import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskNor
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.printMessage
|
||||
import com.mogo.och.sweepercloud.view.SweeperCurrentTaskInfoView
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.SubTaskInfo
|
||||
@@ -51,6 +53,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
private var mSubTaskType: TaskModel = TaskModel.DEFAULT_MODEL //1:自动驾驶子任务 2:人工驾驶子任务 -1:未知任务类型
|
||||
private var mCurrentSubTaskInfo: SubTaskInfo? = null//当前正在执行的子任务
|
||||
private val mLoadingDialog: SweeperCloudLoadingDialog by lazy { SweeperCloudLoadingDialog(requireContext()) }
|
||||
private var mDialog:SweeperCloudDialog?=null
|
||||
|
||||
override fun getTagName(): String {
|
||||
return "SweepersFragment"
|
||||
@@ -105,8 +108,14 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
* 设置各种监听事件
|
||||
*/
|
||||
private fun initListener() {
|
||||
getCurrentView().setOnClickListener {
|
||||
|
||||
getCurrentView().getAutoBtn().setOnClickListener {
|
||||
//前置条件 必须处于人工驾驶,并且有正在执行的子任务,才能请求云端进入自驾
|
||||
mCurrentSubTaskInfo?.let {
|
||||
if (mPresenter?.autopilotState == STATUS_AUTOPILOT_ENABLE) {
|
||||
mLoadingDialog.showLoading()
|
||||
mPresenter?.sendSweeperAutopilotBootable(mTaskInfo?.taskId, it.subTaskId, it.lineId.toLong())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,11 +158,13 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
* 设置当前子任务终点
|
||||
*/
|
||||
private fun setEndStationMarker(position: Int) {
|
||||
mSubMutableList?.let { subList ->
|
||||
val endPoint = subList[position].endLocation
|
||||
val endLatLng = LatLng(endPoint.latitude, endPoint.longitude)
|
||||
super.mCurrentTaskEndStation = endLatLng
|
||||
setCurrentTaskEndMarker(endLatLng)
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
mSubMutableList?.let { subList ->
|
||||
val endPoint = subList[position].endLocation
|
||||
val endLatLng = LatLng(endPoint.latitude, endPoint.longitude)
|
||||
super.mCurrentTaskEndStation = endLatLng
|
||||
setCurrentTaskEndMarker(endLatLng)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,11 +242,14 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
return
|
||||
}
|
||||
val timeout: String = getTimeSpent(it.taskEndTime)
|
||||
var dialog: SweeperCloudDialog?
|
||||
//数据重复导致连续弹窗
|
||||
if (mDialog!=null&& mDialog!!.isShowing){
|
||||
return
|
||||
}
|
||||
if (stopTaskType == SweeperTaskStop.StopTaskType.NORMAL) {
|
||||
dialog = sweeperCloudTaskNormalEndDialog(true)
|
||||
mDialog = sweeperCloudTaskNormalEndDialog()
|
||||
} else {
|
||||
dialog = createSweeperTaskEndDialog(context, object : SweeperCloudDialogClickListener {
|
||||
mDialog = createSweeperTaskEndDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.MANUAL_CONFIRM)
|
||||
mLoadingDialog.showLoading()
|
||||
@@ -259,7 +273,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
|
||||
}, stopTaskType, timeout)
|
||||
}
|
||||
dialog?.show()
|
||||
mDialog?.show()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -267,12 +281,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
/**
|
||||
* 大任务/子任务正常结束弹窗
|
||||
*/
|
||||
private fun sweeperCloudTaskNormalEndDialog(isBigTaskEnd: Boolean): SweeperCloudDialog? {
|
||||
private fun sweeperCloudTaskNormalEndDialog(): SweeperCloudDialog? {
|
||||
return createSweeperTaskNormalEndDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
if (isBigTaskEnd) {
|
||||
resetTaskInfoPanel()
|
||||
}
|
||||
ToastUtils.showLong("任务已结束")
|
||||
resetTaskInfoPanel()
|
||||
}
|
||||
|
||||
override fun onRefuseOrEnd() {
|
||||
@@ -280,9 +293,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
|
||||
override fun onCountDownStop() {
|
||||
if (isBigTaskEnd) {
|
||||
resetTaskInfoPanel()
|
||||
}
|
||||
ToastUtils.showLong("任务已结束")
|
||||
resetTaskInfoPanel()
|
||||
}
|
||||
|
||||
override fun onNext() {
|
||||
@@ -305,8 +317,12 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
//大任务正常结束
|
||||
if (subTaskStatus == SweeperBigTaskStatus.BigTaskStatus.FINISHED) {
|
||||
val dialog = sweeperCloudTaskNormalEndDialog(true)
|
||||
dialog?.show()
|
||||
//数据重复导致连续弹窗
|
||||
if (mDialog!=null&& mDialog!!.isShowing){
|
||||
return
|
||||
}
|
||||
mDialog=sweeperCloudTaskNormalEndDialog()
|
||||
mDialog?.show()
|
||||
return
|
||||
}
|
||||
//大任务处于取消状态 异常状态pad端都显示无任务列表
|
||||
@@ -316,6 +332,18 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* pad请求云端进入自动驾驶回调
|
||||
*/
|
||||
fun onSweeperCloudAutopilotBootable(taskId: String, subTaskId: String, isBootableResp: SweeperBootable.IsBootableResp) {
|
||||
mLoadingDialog.hideLoading()
|
||||
if (isBootableResp.code == SweeperCommon.Code.SUCCEED) {
|
||||
ToastUtils.showLong("请求成功")
|
||||
} else {
|
||||
ToastUtils.showLong("请求失败")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置任务面板为无数据状态
|
||||
*/
|
||||
@@ -403,7 +431,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
if (mTaskInfo?.taskId != taskId) return
|
||||
val subInfo = bySubTaskIdFindSubTaskInfo(subTaskId)
|
||||
subInfo?.let {
|
||||
val dialog = createConfirmStartSubTaskDialog(context, object : SweeperCloudDialogClickListener {
|
||||
//数据重复导致连续弹窗
|
||||
if (mDialog!=null&& mDialog!!.isShowing){
|
||||
return
|
||||
}
|
||||
mDialog = createConfirmStartSubTaskDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
ToastUtils.showLong("确认")
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_CONFIRM)
|
||||
@@ -429,7 +461,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
|
||||
}, it)
|
||||
dialog?.show()
|
||||
mDialog?.show()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -439,7 +471,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
private fun receivedTaskInfoDialog() {
|
||||
mTaskInfo?.let {
|
||||
mPresenter?.sendSweeperStartTaskResp(it.taskId, SweeperTask.StartTaskCode.RECEIVED)
|
||||
val dialog = createReceivedTaskInfoDialog(context, object : SweeperCloudDialogClickListener {
|
||||
//数据重复导致连续弹窗
|
||||
if (mDialog!=null&& mDialog!!.isShowing){
|
||||
return
|
||||
}
|
||||
mDialog = createReceivedTaskInfoDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
ToastUtils.showLong("确认")
|
||||
mPresenter?.sendSweeperStartTaskResp(it.taskId, SweeperTask.StartTaskCode.MANUAL_CONFIRM)
|
||||
@@ -468,7 +504,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
|
||||
}, it)
|
||||
dialog?.show()
|
||||
mDialog?.show()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -456,9 +456,9 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
public void getCurrentTask() {
|
||||
SweeperTask.GetTaskReq.Builder builder = SweeperTask.GetTaskReq.newBuilder();
|
||||
builder.setSn(getDriverSn());
|
||||
String reqNo = String.valueOf(System.currentTimeMillis());
|
||||
String reqNo = SweeperCloudTaskUtils.getRequestId();
|
||||
SweeperTask.GetTaskReq getTaskReq = builder.build();
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "getCurrentTask:" + printMessage(getTaskReq) + " reqNo:" + reqNo);
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "getCurrentTask:" + printMessage(getTaskReq) + " reqNo:" + reqNo +" messageType:"+ SweeperCloudTask.MessageType.PadSendGetTaskReq.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperGetTaskReq(reqNo, getTaskReq);
|
||||
// TODO: 2023/5/5 模拟云控获取任务
|
||||
UiThreadHandler.postDelayed(() -> {
|
||||
@@ -478,7 +478,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
SweeperTask.StartTaskResp startTaskResp = builder.build();
|
||||
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTask.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperStartTaskResp(reqNo, startTaskResp);
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperStartTaskResp:" + printMessage(startTaskResp) + " reqNo:" + reqNo);
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperStartTaskResp:" + printMessage(startTaskResp) + " reqNo:" + reqNo+" messageType:"+ SweeperCloudTask.MessageType.CloudPushTask.getNumber());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -492,7 +492,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
builder.setCode(code);
|
||||
SweeperTaskConfirm.TaskConfirmResp taskConfirmResp = builder.build();
|
||||
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperTaskConfirmResp" + printMessage(taskConfirmResp) + " reqNo:" + reqNo);
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperTaskConfirmResp" + printMessage(taskConfirmResp) + " reqNo:" + reqNo+" messageType:"+ SweeperCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperTaskConfirmResp(reqNo, taskConfirmResp);
|
||||
}
|
||||
|
||||
@@ -509,7 +509,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
builder.setCode(code);
|
||||
SweeperTaskStop.StopTaskResp stopTaskResp = builder.build();
|
||||
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskStop.getNumber());
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperStopTaskResp" + printMessage(stopTaskResp) + " reqNo:" + reqNo);
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperStopTaskResp" + printMessage(stopTaskResp) + " reqNo:" + reqNo+" messageType:"+ SweeperCloudTask.MessageType.CloudPushTaskStop.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperStopTaskResp(reqNo, stopTaskResp);
|
||||
}
|
||||
|
||||
@@ -527,9 +527,11 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
builder.setSubTaskId(subTaskId);
|
||||
builder.setLineId(lineId);
|
||||
SweeperBootable.IsBootable isBootable = builder.build();
|
||||
String reqNo = String.valueOf(System.currentTimeMillis());
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperAutopilotBootable" + printMessage(isBootable) + " reqNo:" + reqNo);
|
||||
String reqNo = SweeperCloudTaskUtils.getRequestId();
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperAutopilotBootable" + printMessage(isBootable) + " reqNo:" + reqNo+" messageType:"+ SweeperCloudTask.MessageType.PadSendBootable.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperAutopilotBootable(reqNo, isBootable);
|
||||
// TODO: 2023/5/16
|
||||
SweeperCloudTaskUtils.mockSendCloudBootable();
|
||||
}
|
||||
|
||||
public CallerAutoPilotControlManager getAutoPilotControlManager() {
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweepercloud.fragment.SweeperFragment;
|
||||
import com.mogo.och.sweepercloud.model.SweeperTaskModel;
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus;
|
||||
@@ -190,8 +191,8 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudBootable(@NonNull String taskId, @NonNull String subTaskId, SweeperCommon.Code code) {
|
||||
|
||||
public void onSweeperCloudBootable(@NonNull String taskId, @NonNull String subTaskId, SweeperBootable.IsBootableResp isBootableResp) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudAutopilotBootable(taskId, subTaskId,isBootableResp));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -35,7 +35,7 @@ class SweeperCloudLoadingDialog : BaseFloatDialog, LifecycleObserver {
|
||||
private fun startRotation() {
|
||||
objectAnimator = ObjectAnimator.ofFloat(mLoadingView, "rotation", 0f, 720f)
|
||||
objectAnimator?.let {
|
||||
it.duration = 1800
|
||||
it.duration = 3000
|
||||
it.repeatCount = -1
|
||||
it.interpolator = LinearInterpolator()
|
||||
it.start()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.mogo.och.sweepercloud.util
|
||||
|
||||
import android.content.Context
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.google.protobuf.MessageOrBuilder
|
||||
import com.google.protobuf.TextFormat
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
@@ -11,6 +12,7 @@ import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener
|
||||
import com.mogo.och.sweepercloud.model.SweeperTaskModel
|
||||
import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask.MessageType
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.*
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus
|
||||
@@ -18,6 +20,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus.BigTaskStat
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirm
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
|
||||
import java.util.*
|
||||
|
||||
object SweeperCloudTaskUtils {
|
||||
const val TAG = "SweeperCloudTaskUtils"
|
||||
@@ -39,7 +42,7 @@ object SweeperCloudTaskUtils {
|
||||
subBuilder0.subTaskId = "1"
|
||||
subBuilder0.subTaskName = "海水浴场-佛兴禅寺(前岛贴右)"
|
||||
subBuilder0.taskModel = TaskModel.AUTO
|
||||
subBuilder0.taskStatus = SweeperCommon.TaskStatus.FINISHED
|
||||
subBuilder0.taskStatus = SweeperCommon.TaskStatus.TO_START
|
||||
val startLocation0 = Location.newBuilder()
|
||||
startLocation0.siteName = "自动驾驶子任务起点0"
|
||||
startLocation0.wgsLongitude = 121.6421189511
|
||||
@@ -99,13 +102,34 @@ object SweeperCloudTaskUtils {
|
||||
endLocation2.latitude = 37.48032689641474
|
||||
subBuilder2.endLocation = endLocation2.build()
|
||||
builder.addSubList(subBuilder2.build())
|
||||
//第四个子任务
|
||||
val subBuilder3 = SubTaskInfo.newBuilder()
|
||||
subBuilder3.subTaskId = "4"
|
||||
subBuilder3.subTaskName = "海水浴场-佛兴禅寺(前岛贴左第四个任务)"
|
||||
subBuilder3.taskModel = TaskModel.MANUAL
|
||||
subBuilder3.taskStatus = SweeperCommon.TaskStatus.TO_START
|
||||
val startLocation3 = Location.newBuilder()
|
||||
startLocation3.siteName = "人工驾驶子任务起点3"
|
||||
startLocation3.wgsLongitude = 121.31344761929978
|
||||
startLocation3.wgsLatitude = 37.53205755535642
|
||||
startLocation3.longitude = 121.3185679517558
|
||||
startLocation3.latitude = 37.5329694887952
|
||||
subBuilder3.startLocation = startLocation3.build()
|
||||
val endLocation3 = Location.newBuilder()
|
||||
endLocation3.siteName = "人工驾驶子任务终点3"
|
||||
endLocation3.wgsLongitude = 121.4551205070834
|
||||
endLocation3.wgsLatitude = 37.47936696980237
|
||||
endLocation3.longitude = 121.46030960742117
|
||||
endLocation3.latitude = 37.48032689641474
|
||||
subBuilder3.endLocation = endLocation3.build()
|
||||
builder.addSubList(subBuilder3.build())
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudTask(
|
||||
messageType,
|
||||
"${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(),
|
||||
builder.build()
|
||||
)
|
||||
CallerLogger.d(SceneConstant.M_SWEEPER + TAG, "messageType:" + messageType + "taskInfo:" + printMessage(builder.build()))
|
||||
CallerLogger.d(SceneConstant.M_SWEEPER + TAG, "messageType:" + messageType.number + "taskInfo:" + printMessage(builder.build()))
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -131,7 +155,7 @@ object SweeperCloudTaskUtils {
|
||||
val builder = SweeperTaskStatus.TaskStatusPush.newBuilder()
|
||||
builder.sn = getDriverSn()
|
||||
builder.taskId = "10"
|
||||
builder.subTaskId = "3"
|
||||
builder.subTaskId = "1"
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.RUNNING
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStatus(
|
||||
MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}",
|
||||
@@ -170,6 +194,24 @@ object SweeperCloudTaskUtils {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 模拟云端发送是否可以启动自驾
|
||||
*/
|
||||
@JvmStatic
|
||||
fun mockSendCloudBootable() {
|
||||
val builder = SweeperBootable.IsBootableResp.newBuilder()
|
||||
builder.sn = getDriverSn()
|
||||
builder.taskId = "10"
|
||||
builder.subTaskId = "1"
|
||||
builder.code = SweeperCommon.Code.SUCCEED
|
||||
UiThreadHandler.getsUiHandler().postDelayed({
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudBootable(
|
||||
MessageType.PadSendBootable, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
}, 10000)
|
||||
}
|
||||
|
||||
private fun getDriverSn(): String? {
|
||||
return MoGoAiCloudClientConfig.getInstance().sn
|
||||
}
|
||||
@@ -277,6 +319,10 @@ object SweeperCloudTaskUtils {
|
||||
|
||||
@JvmStatic
|
||||
fun printMessage(message: MessageOrBuilder): String {
|
||||
return TextFormat.printer().escapingNonAscii(false).printToString(message)
|
||||
return "\n"+TextFormat.printer().escapingNonAscii(false).printToString(message)
|
||||
}
|
||||
@JvmStatic
|
||||
fun getRequestId():String{
|
||||
return UUID.randomUUID().toString()
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.sweepercloud.R
|
||||
@@ -34,6 +35,10 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
setSubTaskState(false)
|
||||
}
|
||||
|
||||
fun getAutoBtn(): TextView {
|
||||
return tvStartAuto
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前任务数据
|
||||
*/
|
||||
@@ -46,7 +51,12 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
tvTaskName.text = taskName
|
||||
val calendarStart = DateTimeUtil.formatLongToCalendar(taskStartTime)
|
||||
val calendarEnd = DateTimeUtil.formatLongToCalendar(taskEndTime)
|
||||
tvTaskTime.text = "${DateTimeUtil.formatCalendarToString(calendarStart, DateTimeUtil.HH_mm)}-${DateTimeUtil.formatCalendarToString(calendarEnd, DateTimeUtil.HH_mm)}"
|
||||
tvTaskTime.text = "${DateTimeUtil.formatCalendarToString(calendarStart, DateTimeUtil.HH_mm)}-${
|
||||
DateTimeUtil.formatCalendarToString(
|
||||
calendarEnd,
|
||||
DateTimeUtil.HH_mm
|
||||
)
|
||||
}"
|
||||
}
|
||||
listTask?.let {
|
||||
//特殊处理当前暂无执行中任务的情况
|
||||
|
||||
@@ -212,9 +212,11 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
|
||||
* 设置当前任务的终点
|
||||
*/
|
||||
fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) {
|
||||
endStationMarker?.remove()
|
||||
endStationMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_small_end_marker_icon)))
|
||||
endStationMarker?.position = coordinatesLatLng
|
||||
ThreadUtils.runOnUiThread {
|
||||
endStationMarker?.remove()
|
||||
endStationMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_small_end_marker_icon)))
|
||||
endStationMarker?.position = coordinatesLatLng
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -94,29 +94,18 @@
|
||||
<com.mogo.och.common.module.wigets.OCHRoundConstraintLayout
|
||||
android:layout_width="@dimen/dp_711"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_27"
|
||||
android:layout_marginEnd="@dimen/dp_36"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:roundLayoutRadius="@dimen/dp_16">
|
||||
|
||||
<!-- <com.mogo.eagle.core.function.hmi.ui.widget.MogoVideoView
|
||||
android:id="@+id/sweeper_video_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_401"
|
||||
android:src="#999999"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />-->
|
||||
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginEnd="@dimen/dp_36"
|
||||
android:layout_marginTop="@dimen/dp_27"
|
||||
app:roundLayoutRadius="@dimen/dp_16"
|
||||
>
|
||||
<com.mogo.och.sweepercloud.view.WeltSmallMapView
|
||||
android:id="@+id/sweeper_task_welt_small_map"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_401"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
</com.mogo.och.common.module.wigets.OCHRoundConstraintLayout>
|
||||
|
||||
<ImageView
|
||||
|
||||
Reference in New Issue
Block a user