diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt index b3b59484e0..de26159ab3 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt @@ -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) /** * 云端同步大任务状态 diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java index 0f493d7d2b..f04c9f2128 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java @@ -92,9 +92,6 @@ public abstract class BaseSweeperTabFragment - 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 { @@ -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() { diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java index e58124bd38..b059615e1d 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java @@ -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 } @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 diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudLoadingDialog.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudLoadingDialog.kt index a367363817..f333e53dc8 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudLoadingDialog.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudLoadingDialog.kt @@ -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() diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt index b929c977da..39a8df7e6a 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt @@ -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() } } \ No newline at end of file diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperCurrentTaskInfoView.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperCurrentTaskInfoView.kt index 0ebb28d761..3bdbcea852 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperCurrentTaskInfoView.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperCurrentTaskInfoView.kt @@ -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 { //特殊处理当前暂无执行中任务的情况 diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltSmallMapView.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltSmallMapView.kt index 8a0f20968f..4db516bb7a 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltSmallMapView.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltSmallMapView.kt @@ -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 + } } /** diff --git a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml index ab9eac8b72..45cac70989 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml +++ b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml @@ -94,29 +94,18 @@ - - - + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="@dimen/dp_36" + android:layout_marginTop="@dimen/dp_27" + app:roundLayoutRadius="@dimen/dp_16" + > + app:layout_constraintEnd_toEndOf="parent"/>