diff --git a/OCH/sweeper/driver/build.gradle b/OCH/sweeper/driver/build.gradle
index 8468774843..953aa85ca3 100644
--- a/OCH/sweeper/driver/build.gradle
+++ b/OCH/sweeper/driver/build.gradle
@@ -59,6 +59,7 @@ dependencies {
implementation rootProject.ext.dependencies.androidxcardview
implementation rootProject.ext.dependencies.androidxroomruntime
annotationProcessor rootProject.ext.dependencies.androidxroomcompiler
+ implementation rootProject.ext.dependencies.localbroadcastmanager
implementation project(":OCH:mogo-och-common-module")
compileOnly project(":libraries:mogo-map")
diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/SweeperProvider.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/SweeperProvider.java
index 4874610d6c..b7dcc91413 100644
--- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/SweeperProvider.java
+++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/SweeperProvider.java
@@ -122,15 +122,20 @@ public class SweeperProvider implements IMogoOCH, IMoGoSweeperModeListener {
+ SweeperVehicleConfigUtils.isSPCurrentSweeperOperateMode()
+ ", isSPCurrentSweeperCloudMode=" + SweeperVehicleConfigUtils.isSPCurrentSweeperCloudMode());
if (SweeperVehicleConfigUtils.isSPCurrentSweeperOperateMode()) {
+ FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_OPERATE;
showOperateFragment();
} else if (SweeperVehicleConfigUtils.isSPCurrentSweeperCloudMode()) {
+ FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD;
showCloudFragment();
} else if (SweeperVehicleConfigUtils.isDefaultSweeperOperateMode(FunctionBuildConfig.sweeperDefaultMode)) {
+ FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_OPERATE;
showOperateFragment();
} else if (SweeperVehicleConfigUtils.isDefaultSweeperCloudMode(FunctionBuildConfig.sweeperDefaultMode)) {
+ FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD;
showCloudFragment();
} else {
// 默认云控模式
+ FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD;
showCloudFragment();
}
diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/fragment/BaseSweeperCloudTabFragment.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/fragment/BaseSweeperCloudTabFragment.java
index 896fcd1907..6ec468c553 100644
--- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/fragment/BaseSweeperCloudTabFragment.java
+++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/fragment/BaseSweeperCloudTabFragment.java
@@ -2,6 +2,7 @@ package com.mogo.och.sweeper.cloud.fragment;
import static com.mogo.map.MogoMap.DEFAULT;
+import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -13,16 +14,13 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.Group;
import androidx.fragment.app.FragmentTransaction;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.amap.api.maps.model.LatLng;
-import com.google.protobuf.TextFormat;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.mvp.IView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.mvp.Presenter;
-import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
-import com.mogo.eagle.core.data.config.FunctionBuildConfig;
-import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
@@ -33,32 +31,26 @@ import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
import com.mogo.eagle.core.function.view.MapBizView;
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
-import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.listener.MogoMapListenerHandler;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
-import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.sweeper.R;
+import com.mogo.och.sweeper.cloud.view.SweeperCloudTrafficDataView;
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
import com.mogo.och.sweeper.common.callback.ISweeperTaskDataToFragmentCallback;
import com.mogo.och.sweeper.common.callback.IWeltMapSwitchToSmallCallback;
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
-import com.mogo.och.sweeper.cloud.util.AutopilotModeConfigManager;
-import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils;
-import com.mogo.och.sweeper.cloud.view.SweeperCloudTrafficDataView;
import com.mogo.och.sweeper.common.fragment.WeltMapOverViewFragment;
+import com.mogo.och.sweeper.common.view.DebugView;
import com.mogo.och.sweeper.common.view.WeltSmallMapView;
-import com.zhjt.mogo.adas.data.AiCloudTask;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
-import mogo.telematics.pad.MessagePad;
-
/**
* 网约车基础Fragment,主要负责布局通用界面,处理站点面板和通话面板互斥情况
*
@@ -128,105 +120,22 @@ public abstract class BaseSweeperCloudTabFragment {
- ToastUtils.showLong("读取失败=" + err);
- });
- }
- @Override
- public void onParseFailed(String err) {
- ToastUtils.showLong("解析失败=" + err);
- }
-
- @Override
- public void onParse(MessagePad.SetAutopilotModeReq bean) {
- ToastUtils.showLong("下发命令\n" + TextFormat.printer().escapingNonAscii(false).printToString(bean));
- AutopilotControlParameters parameters = new AutopilotControlParameters();
- MessagePad.RouteInfo routeInfo = bean.getRouteInfo();
- if (routeInfo.getRouteID() > 0) {
- parameters.routeID = routeInfo.getRouteID();
- }
- parameters.routeName = routeInfo.getRouteName();
- parameters.startName = routeInfo.getStartName();//拼音
- parameters.endName = routeInfo.getEndName();//拼音
- parameters.startLatLon = new AutopilotControlParameters
- .AutoPilotLonLat(routeInfo.getStartLocation().getLatitude(), routeInfo.getStartLocation().getLongitude());
- parameters.endLatLon = new AutopilotControlParameters
- .AutoPilotLonLat(routeInfo.getEndLocation().getLatitude(), routeInfo.getEndLocation().getLongitude());
- parameters.vehicleType = 10;
- MessagePad.Line line = routeInfo.getLine();
- parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine(
- line.getLineId(), line.getLineName(),
- line.getTrajUrl(), line.getTrajMd5(),
- line.getStopUrl(), line.getStopMd5(),
- line.getTimestamp(), line.getVehicleModel(),
- line.getTrajUrlDpqp(), line.getTrajMd5Dpqp(),
- line.getStopUrlDpqp(), line.getStopMd5Dpqp(),
- line.getTimestampDpqp());
- CallerAutoPilotControlManager.INSTANCE.startAutoPilot(parameters);
- }
- }).read();
- }
- });
- // 模拟 查询当前任务
- findViewById(R.id.btnQueryCurrentTask).setOnClickListener(view ->
- SweeperCloudTaskUtils.mockQueryCurrentTaskInfo()
+ //打开调试面板
+ findViewById(R.id.btnOpenDebugView).setOnClickListener(view -> {
+ Intent intent = new Intent();
+ intent.setAction(DebugView.BROADCAST_ACTION);
+ intent.putExtra(DebugView.BROADCAST_DATA_SHOW, true);
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
+ }
);
- // 模拟 云端发送任务
- findViewById(R.id.btnSendTask).setOnClickListener(view -> {
- SweeperCloudTaskUtils.mockSendCloudTaskInfo(AiCloudTask.MessageType.CloudPushTask);
- UiThreadHandler.postDelayed(() -> {
- debugEndSubTask();
- }, 5000);
-
- }
-
- );
- // 模拟 云端发送子任务确认
- findViewById(R.id.btnSendSubTaskConfirm).setOnClickListener(view ->
- SweeperCloudTaskUtils.mockSendCloudSubTaskConfirm()
- );
-
- // 模拟 云端请求结束大任务
- findViewById(R.id.btnSendEndTask).setOnClickListener(view ->
- SweeperCloudTaskUtils.mockSendCloudBigTaskEnd()
- );
- // 模拟 云端发送子任务状态
- findViewById(R.id.btnSendSubtaskStatus).setOnClickListener(view ->
- SweeperCloudTaskUtils.mockSendCloudUpdateSubTaskStatus()
- );
- // 模拟 云端发送大任务状态
- findViewById(R.id.btnSendTaskStatus).setOnClickListener(view ->
- SweeperCloudTaskUtils.mockSendCloudBigTaskStatus()
- );
- // 模拟 添加高精地图Marker
- findViewById(R.id.btnAddHDMarker).setOnClickListener(view -> {
- // 坐标地址:湖南省衡阳市雁峰区金龙坪街道科学城大道衡山科学城停车场
- SweeperCloudTaskUtils.mockAddHdMarker("marker_sweeper_subtask_123_start",
- 112.57742887355035,
- 26.82068193910221,
- true);
- // 坐标地址:湖南省衡阳市雁峰区岳屏镇雁鸣路
- SweeperCloudTaskUtils.mockAddHdMarker("marker_sweeper_subtask_123_end",
- 112.56666738544979,
- 26.822879976829867,
- false);
- }
- );
- // 模拟 移除高精地图Marker
- findViewById(R.id.btnRemoveHDMarker).setOnClickListener(view ->
- SweeperCloudTaskUtils.mockRemoveHDMarker()
+ //关闭调试面板
+ findViewById(R.id.btnCloseDebugView).setOnClickListener(view -> {
+ Intent intent = new Intent();
+ intent.setAction(DebugView.BROADCAST_ACTION);
+ intent.putExtra(DebugView.BROADCAST_DATA_SHOW, false);
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
+ }
);
mTrafficDataView.getSpeedImage().setOnLongClickListener(new View.OnLongClickListener() {
@Override
diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/fragment/SweeperCloudFragment.kt b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/fragment/SweeperCloudFragment.kt
index ee08acaf38..1a99372c5f 100644
--- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/fragment/SweeperCloudFragment.kt
+++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/fragment/SweeperCloudFragment.kt
@@ -17,8 +17,6 @@ import com.mogo.map.overlay.point.Point
import com.mogo.och.common.module.utils.OCHThreadPoolManager
import com.mogo.och.common.module.voice.VoiceNotice.showNotice
import com.mogo.och.sweeper.R
-import com.mogo.och.sweeper.common.constant.SweeperConst.Companion.TYPE_MARKER_SWEEPER_SUBTASK_START_END
-import com.mogo.och.sweeper.common.database.MyDataBase
import com.mogo.och.sweeper.cloud.presenter.SweeperCloudPresenter
import com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog
import com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudLoadingDialog
@@ -32,6 +30,9 @@ import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createSweeperTaskRe
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createSweeperTaskSuspendDialog
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.printMessage
import com.mogo.och.sweeper.cloud.view.SweeperCloudCurrentTaskInfoView
+import com.mogo.och.sweeper.common.constant.SweeperConst.Companion.TYPE_MARKER_SWEEPER_SUBTASK_START_END
+import com.mogo.och.sweeper.common.database.MyDataBase
+import com.mogo.och.sweeper.common.view.DebugView
import com.zhjt.mogo.adas.data.AiCloudTask
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
@@ -42,8 +43,9 @@ import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
-import kotlinx.android.synthetic.main.fragment_och_sweeper_cloud.*
-import kotlinx.android.synthetic.main.sweeper_cloud_no_data_common_view.*
+import kotlinx.android.synthetic.main.fragment_och_sweeper_cloud.sweeper_cl_work_mode
+import kotlinx.android.synthetic.main.fragment_och_sweeper_cloud.sweeper_current_task_view
+import kotlinx.android.synthetic.main.sweeper_cloud_no_data_common_view.noTaskDataView
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -311,6 +313,7 @@ class SweeperCloudFragment : BaseSweeperCloudTabFragment {
mDialog = sweeperCloudTaskSuspendDialog(it.taskId)
showNotice("云端暂停任务,注意车辆即将停车!")
+ DebugView.printInfoMsg("[任务状态]云端暂停任务,注意车辆即将停车!")
}
else -> {
@@ -579,6 +587,7 @@ class SweeperCloudFragment : BaseSweeperCloudTabFragment 0) {
CallerLogger.d(M_SWEEPER + TAG, "onAutopilotRotting: " + SweeperCloudTaskUtils.printMessage(routeList));
+ DebugView.Companion.printInfoMsg("[MAP全局规划回调] 回调,getWayPointsList.Size=" + routeList.getWayPointsList().size());
// MAP返回路线信息,在1秒内返回了2次,这里加上数据过滤
long current = System.currentTimeMillis();
@@ -290,6 +292,7 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
if (StatusDescriptor.VR_MODE == descriptor) {
if (mControllerStatusCallback != null) {
mControllerStatusCallback.onVRModeChanged(isTrue);
+ DebugView.Companion.printInfoMsg("[VRMode变化] isVRMode=" + isTrue);
}
}
}
@@ -336,6 +339,12 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
CallerLogger.d(M_SWEEPER + TAG,
"messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " onSweeperFutianCloudTask:" + (taskInfo == null ? "null" : SweeperCloudTaskUtils.printMessage(taskInfo)) + " mSweeperTaskCallback:" + mSweeperTaskCallback);
+ DebugView.Companion.printInfoMsg("[云控]云端下发大任务,messageType=" + messageType.getNumber()
+ + ", sysTime=" + sysTime
+ + ", reqNo=" + reqNo
+ + ", taskInfo=("
+ + (taskInfo == null ? "null" : "taskId=" + taskInfo.getTaskId() + ", taskName=" + taskInfo.getTaskName() + ", taskStatus=" + taskInfo.getTaskStatus().name())
+ + ")");
if (mSweeperTaskCallback != null) {
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
mSweeperTaskCallback.onSweeperCloudTask(messageType, taskInfo);
@@ -348,6 +357,12 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
"onSweeperFutianCloudTaskConfirm:" + SweeperCloudTaskUtils.printMessage(taskConfirm));
+ DebugView.Companion.printInfoMsg("[云控]云端下发子任务确认,messageType=" + messageType.getNumber()
+ + ", sysTime=" + sysTime
+ + ", reqNo=" + reqNo
+ + ", taskConfirm=("
+ + (taskConfirm == null ? "null" : "taskId=" + taskConfirm.getTaskId() + ", subTaskId=" + taskConfirm.getSubTaskId() + ", isPop=" + taskConfirm.getIsPop())
+ + ")");
if (mSweeperTaskCallback != null && taskConfirm != null) {
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
mSweeperTaskCallback.onSweeperCloudTaskConfirm(taskConfirm.getTaskId(), taskConfirm.getSubTaskId(), taskConfirm.getIsPop());
@@ -359,6 +374,12 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
SweeperTaskStatus.TaskStatusPush taskStatusPush) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
"onSweeperFutianCloudTaskStatus:" + SweeperCloudTaskUtils.printMessage(taskStatusPush));
+ DebugView.Companion.printInfoMsg("[云控]云端下发子任务状态,messageType=" + messageType.getNumber()
+ + ", sysTime=" + sysTime
+ + ", reqNo=" + reqNo
+ + ", taskStatusPush=("
+ + (taskStatusPush == null ? "null" : "taskId=" + taskStatusPush.getTaskId() + ", subTaskId=" + taskStatusPush.getSubTaskId() + ", taskStatus=" + taskStatusPush.getTaskStatus().name())
+ + ")");
if (mSweeperTaskCallback != null && taskStatusPush != null) {
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
mSweeperTaskCallback.onSweeperCloudTaskStatus(taskStatusPush.getTaskId(), taskStatusPush.getSubTaskId(), taskStatusPush.getTaskStatus());
@@ -370,6 +391,12 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
SweeperTaskStop.StopTaskReq stopTaskReq) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
"onSweeperFutianCloudTaskStop:" + SweeperCloudTaskUtils.printMessage(stopTaskReq));
+ DebugView.Companion.printInfoMsg("[云控]云端请求pad结束大任务,messageType=" + messageType.getNumber()
+ + ", sysTime=" + sysTime
+ + ", reqNo=" + reqNo
+ + ", stopTaskReq=("
+ + (stopTaskReq == null ? "null" : "taskId=" + stopTaskReq.getTaskId() + ", type=" + stopTaskReq.getType() + ", isPop=" + stopTaskReq.getIsPop())
+ + ")");
if (mSweeperTaskCallback != null && stopTaskReq != null) {
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
mSweeperTaskCallback.onSweeperCloudTaskStop(stopTaskReq.getTaskId(), stopTaskReq.getType(), stopTaskReq.getIsPop());
@@ -381,6 +408,12 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
"onSweeperFutianCloudTaskSuspendResume:" + SweeperCloudTaskUtils.printMessage(suspendResumeTaskResp));
+ DebugView.Companion.printInfoMsg("[云控]pad请求挂起/恢复任务云端回执,messageType=" + messageType.getNumber()
+ + ", sysTime=" + sysTime
+ + ", reqNo=" + reqNo
+ + ", suspendResumeTaskResp=("
+ + (suspendResumeTaskResp == null ? "null" : "taskId=" + suspendResumeTaskResp.getTaskId() + ", subTaskId=" + suspendResumeTaskResp.getSubTaskId() + ", code=" + suspendResumeTaskResp.getCode().name())
+ + ")");
if (mSweeperTaskCallback != null && suspendResumeTaskResp != null) {
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
mSweeperTaskCallback.onSweeperCloudTaskSuspendResume(messageType, suspendResumeTaskResp.getTaskId(),
@@ -393,6 +426,12 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
SweeperBootable.IsBootableResp isBootableResp) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
"onSweeperFutianCloudBootable:" + SweeperCloudTaskUtils.printMessage(isBootableResp));
+ DebugView.Companion.printInfoMsg("[云控]pad请求启自驾云端回执,messageType=" + messageType.getNumber()
+ + ", sysTime=" + sysTime
+ + ", reqNo=" + reqNo
+ + ", isBootableResp=("
+ + (isBootableResp == null ? "null" : "taskId=" + isBootableResp.getTaskId() + ", subTaskId=" + isBootableResp.getSubTaskId())
+ + ")");
if (mSweeperTaskCallback != null && isBootableResp != null) {
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
mSweeperTaskCallback.onSweeperCloudBootable(isBootableResp.getTaskId(), isBootableResp.getSubTaskId(), isBootableResp);
@@ -404,6 +443,12 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
"onSweeperFutianCloudBigTaskStatus:" + SweeperCloudTaskUtils.printMessage(bigTaskStatusPush));
+ DebugView.Companion.printInfoMsg("[云控]云端下发大任务状态,messageType=" + messageType.getNumber()
+ + ", sysTime=" + sysTime
+ + ", reqNo=" + reqNo
+ + ", bigTaskStatusPush=("
+ + (bigTaskStatusPush == null ? "null" : "taskId=" + bigTaskStatusPush.getTaskId() + ", taskStatus=" + bigTaskStatusPush.getTaskStatus().name() + ", isPop=" + bigTaskStatusPush.getIsPop())
+ + ")");
if (mSweeperTaskCallback != null && bigTaskStatusPush != null) {
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
mSweeperTaskCallback.onSweeperCloudBigTaskStatus(bigTaskStatusPush.getTaskId(), bigTaskStatusPush.getTaskStatus(), bigTaskStatusPush.getIsPop());
@@ -415,6 +460,12 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
@Nullable SweeperTaskCloudSuspendResume.BigTaskActionPush bigTaskActionPush) {
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
"onSweeperFutianCloudTaskCloudSuspendResume:" + SweeperCloudTaskUtils.printMessage(bigTaskActionPush));
+ DebugView.Companion.printInfoMsg("[云控]云端下发暂停/恢复指令,messageType=" + messageType.getNumber()
+ + ", sysTime=" + sysTime
+ + ", reqNo=" + reqNo
+ + ", bigTaskActionPush=("
+ + (bigTaskActionPush == null ? "null" : "taskId=" + bigTaskActionPush.getTaskId() + ", action=" + bigTaskActionPush.getAction() + ", isPop=" + bigTaskActionPush.getIsPop())
+ + ")");
if (mSweeperTaskCallback != null && bigTaskActionPush != null) {
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
mSweeperTaskCallback.onSweeperCloudBigTaskSuspendResume(bigTaskActionPush.getTaskId(), bigTaskActionPush.getAction(), bigTaskActionPush.getIsPop());
@@ -435,6 +486,7 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
if (mSweeperTaskCallback != null) {
mSweeperTaskCallback.onSweeperFutianCleanSystemState(cleanSystemState);
}
+ DebugView.Companion.printInfoMsg("[域控]接收到上装系统状态并更新");
}
@Override
@@ -458,6 +510,7 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
// CallerLogger.INSTANCE.d(M_SWEEPER + TAG,
// "mSubTaskType:" + mSubTaskType + "+ onSweeperFutianTaskIndexData:" + printMessage(roboSweeperTaskIndex));
// handleWeltData(roboSweeperTaskIndex);
+// DebugView.Companion.printInfoMsg("[域控]接收到贴边数据并更新");
}
/**
@@ -538,6 +591,9 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
getAutoPilotControlManager().sendSweeperStartTaskResp(reqNo, startTaskResp);
CallerLogger.d(M_SWEEPER + TAG,
"sendSweeperStartTaskResp:" + SweeperCloudTaskUtils.printMessage(startTaskResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTask.getNumber());
+ DebugView.Companion.printInfoMsg("[云控]pad发送接收 云端下发大任务信息 回执给云端,taskId=" + taskId
+ + ", StartTaskCode=" + code
+ + ", reqNo=" + reqNo);
}
/**
@@ -551,9 +607,13 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
builder.setCode(code);
SweeperTaskConfirm.TaskConfirmResp taskConfirmResp = builder.build();
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
+ getAutoPilotControlManager().sendSweeperTaskConfirmResp(reqNo, taskConfirmResp);
CallerLogger.d(M_SWEEPER + TAG,
"sendSweeperTaskConfirmResp" + SweeperCloudTaskUtils.printMessage(taskConfirmResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
- getAutoPilotControlManager().sendSweeperTaskConfirmResp(reqNo, taskConfirmResp);
+ DebugView.Companion.printInfoMsg("[云控]pad发送接收 云端下发子任务pad确认 回执给云端,taskId=" + taskId
+ + ", subTaskId=" + subTaskId
+ + ", TaskConfirmCode=" + code
+ + ", reqNo=" + reqNo);
}
/**
@@ -573,6 +633,9 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
CallerLogger.d(M_SWEEPER + TAG,
"sendSweeperStopTaskResp" + SweeperCloudTaskUtils.printMessage(stopTaskResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskStop.getNumber());
getAutoPilotControlManager().sendSweeperStopTaskResp(reqNo, stopTaskResp);
+ DebugView.Companion.printInfoMsg("[云控]pad发送接收 云端请求pad结束大任务 回执给云端,taskId=" + taskId
+ + ", StopTaskCode=" + code
+ + ", reqNo=" + reqNo);
}
/**
@@ -594,6 +657,10 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
CallerLogger.d(M_SWEEPER + TAG,
"sendSweeperAutopilotBootable" + SweeperCloudTaskUtils.printMessage(isBootable) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.PadSendBootable.getNumber());
getAutoPilotControlManager().sendSweeperAutopilotBootable(reqNo, isBootable);
+ DebugView.Companion.printInfoMsg("[云控]pad发送 请求进入自动驾驶 给云端,taskId=" + taskId
+ + ", subTaskId=" + subTaskId
+ + ", lineId=" + lineId
+ + ", reqNo=" + reqNo);
//SweeperCloudTaskUtils.mockSendCloudBootable();
}
@@ -613,6 +680,9 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
CallerLogger.d(M_SWEEPER + TAG,
"sendSweeperSuspendResumeTaskResp" + SweeperCloudTaskUtils.printMessage(resp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskSuspendResume);
getAutoPilotControlManager().sendSweeperCloudSuspendResumeTaskResp(reqNo, resp);
+ DebugView.Companion.printInfoMsg("[云控]pad发送接收 云端下发大任务暂停/恢复 回执给云端,taskId=" + taskId
+ + ", SuspendResumeCode=" + code
+ + ", reqNo=" + reqNo);
}
public CallerAutoPilotControlManager getAutoPilotControlManager() {
@@ -630,7 +700,9 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
@Override
public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) {
-
+ DebugView.Companion.printInfoMsg("[MAP到站通知] 上报到站,endLocation=("
+ + ((arrivalNotification == null || arrivalNotification.getEndLocation() == null) ? "null" : arrivalNotification.getEndLocation().toString())
+ + ")");
}
@Override
@@ -651,6 +723,9 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
getCurrentTask();
}, 10000);
}
+ DebugView.Companion.printInfoMsg(
+ "[域控连接状态变化] status=" + status
+ + ", reason=" + reason);
//CallerLogger.d(M_SWEEPER + TAG, "onAutopilotIpcConnectStatusChanged status:" + status + " reason:" + reason);
}
@@ -678,6 +753,7 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
public void onSweeperFutianCloudTaskUnknown(@NonNull byte[] bytes) {
String string = new String(bytes, StandardCharsets.UTF_8);
CallerLogger.d(M_SWEEPER + TAG, "onSweeperFutianCloudTaskUnknown:" + string);
+ DebugView.Companion.printInfoMsg("[云控]接收到云端未知类型消息,Unknown=" + string);
}
@Override
@@ -689,12 +765,16 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
}
switch (state) {
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE://不可自动驾驶
+ DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_DISABLE,meaning=不可自动驾驶");
break;
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE://人工驾驶
+ DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_ENABLE,meaning=可自动驾驶,人工干预状态");
break;
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING://自动驾驶中
+ DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_RUNNING,meaning=自动驾驶中");
break;
case IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING://平行驾驶
+ DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_PARALLEL_DRIVING,meaning=平行驾驶中");
break;
default:
break;
diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/common/view/DebugView.kt b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/common/view/DebugView.kt
new file mode 100644
index 0000000000..0d1f08f54d
--- /dev/null
+++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/common/view/DebugView.kt
@@ -0,0 +1,137 @@
+package com.mogo.och.sweeper.common.view
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.text.SpannableString
+import android.text.Spanned
+import android.text.method.ScrollingMovementMethod
+import android.text.style.ForegroundColorSpan
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.view.View
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.lifecycle.ProcessLifecycleOwner
+import androidx.lifecycle.lifecycleScope
+import androidx.localbroadcastmanager.content.LocalBroadcastManager
+import com.mogo.commons.utils.MogoAnalyticUtils
+import com.mogo.eagle.core.data.config.FunctionBuildConfig
+import com.mogo.eagle.core.function.main.MainMoGoApplication
+import com.mogo.eagle.core.utilcode.util.UiThreadHandler
+import com.mogo.och.common.module.utils.DateTimeUtil
+import com.mogo.och.sweeper.R
+import kotlinx.android.synthetic.main.sweeper_debug_view_content.view.currentSweeperModeTextView
+import kotlinx.android.synthetic.main.sweeper_debug_view_content.view.debugLogHistoryTextView
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+
+
+class DebugView @JvmOverloads constructor(
+ context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0
+) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) {
+ companion object {
+ const val TAG = "DebugView"
+ private const val ANALYTICS_EVENT_TYPE_DRIVER_SWEEPER_OPERATION_PROCESS_KEY_NODE_LOG =
+ "och.driver.sweeper.operation.process.key.node.log"
+ const val BROADCAST_ACTION = "com.mogo.och.driver.debugview.show"
+ const val BROADCAST_DATA_SHOW = "isShow"
+ private var logHistoryTextView: TextView? = null
+
+ fun printInfoMsg(msg: String) {
+ printMsg("Info $msg", MainMoGoApplication.getApp().getColor(R.color.background_info))
+ trackEvent("Info", msg)
+ }
+
+ fun printWarnMsg(msg: String) {
+ printMsg("Warn $msg", MainMoGoApplication.getApp().getColor(R.color.background_warn))
+ trackEvent("Warn", msg)
+ }
+
+ fun printErrorMsg(msg: String) {
+ printMsg("Error $msg", MainMoGoApplication.getApp().getColor(R.color.background_error))
+ trackEvent("Error", msg)
+ }
+
+ private fun printMsg(msg: String, textColor: Int) {
+ logHistoryTextView?.also {
+ val msg = "${currentDateTimeString()} $msg"
+ val spannableMsg = SpannableString(msg)
+
+ spannableMsg.setSpan(
+ ForegroundColorSpan(textColor), 0, msg.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
+ )
+ UiThreadHandler.post({
+ it.append("\n")
+ it.append(spannableMsg)
+
+ val offset: Int = it.lineCount * it.lineHeight
+ if (offset > it.height) {
+ it.scrollTo(0, offset - it.height)
+ }
+ }, UiThreadHandler.MODE.QUEUE)
+ }
+ }
+
+ /**
+ * 上报埋点
+ */
+ private fun trackEvent(level: String, msg: String) {
+ ProcessLifecycleOwner.get().lifecycleScope.launch(Dispatchers.IO) {
+ val map: MutableMap = HashMap()
+ map["level"] = level
+ map["msg"] = msg
+ MogoAnalyticUtils.track(ANALYTICS_EVENT_TYPE_DRIVER_SWEEPER_OPERATION_PROCESS_KEY_NODE_LOG, map)
+ }
+ }
+
+ private fun currentDateTimeString(): String {
+ return DateTimeUtil.formatCalendarToString(
+ DateTimeUtil.formatLongToCalendar(System.currentTimeMillis()),
+ DateTimeUtil.yyyy_MM_dd_HH_mm_ss
+ )
+ }
+ }
+
+ private val broadcastReceiver = object : BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: Intent) {
+ if (BROADCAST_ACTION == intent.action) {
+ val isShow = intent.getBooleanExtra(BROADCAST_DATA_SHOW, false)
+ visibility = if (isShow) VISIBLE else GONE
+ }
+ }
+ }
+
+ init {
+ initBroadcastReceiver()
+ LayoutInflater.from(context).inflate(R.layout.sweeper_debug_view_content, this, true)
+ debugLogHistoryTextView.movementMethod = ScrollingMovementMethod.getInstance()
+ visibility = GONE
+ logHistoryTextView = debugLogHistoryTextView
+ }
+
+ private fun initBroadcastReceiver() {
+ val intentFilter = IntentFilter()
+ intentFilter.addAction(BROADCAST_ACTION)
+ LocalBroadcastManager.getInstance(context).registerReceiver(broadcastReceiver, intentFilter)
+ }
+
+ fun toggleDebugView() {
+ visibility = if (visibility == View.VISIBLE) View.GONE
+ else View.VISIBLE
+ }
+
+ override fun onAttachedToWindow() {
+ super.onAttachedToWindow()
+ initView()
+ }
+
+ override fun onDetachedFromWindow() {
+ super.onDetachedFromWindow()
+ }
+
+ fun initView() {
+ currentSweeperModeTextView.text = "当前清扫模式:${FunctionBuildConfig.sweeperCurrentMode}"
+ }
+}
\ No newline at end of file
diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/fragment/BaseSweeperOperateTabFragment.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/fragment/BaseSweeperOperateTabFragment.java
index e25b0fa61a..2726d8bf69 100644
--- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/fragment/BaseSweeperOperateTabFragment.java
+++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/fragment/BaseSweeperOperateTabFragment.java
@@ -1,5 +1,6 @@
package com.mogo.och.sweeper.operate.fragment;
+import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -7,12 +8,17 @@ import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.Group;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
import com.amap.api.maps.model.LatLng;
import com.amap.api.navi.model.NaviLatLng;
import com.mogo.commons.mvp.IView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.mvp.Presenter;
-import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
@@ -35,18 +41,14 @@ import com.mogo.och.sweeper.common.callback.IWeltMapSwitchToSmallCallback;
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
import com.mogo.och.sweeper.common.fragment.SweeperAmapNaviFragment;
import com.mogo.och.sweeper.common.fragment.WeltMapOverViewFragment;
-import com.mogo.och.sweeper.operate.view.SweeperOperateTrafficDataView;
+import com.mogo.och.sweeper.common.view.DebugView;
import com.mogo.och.sweeper.common.view.WeltSmallMapView;
+import com.mogo.och.sweeper.operate.view.SweeperOperateTrafficDataView;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.constraintlayout.widget.Group;
-import androidx.fragment.app.FragmentTransaction;
-
/**
* 网约车基础Fragment,主要负责布局通用界面,处理站点面板和通话面板互斥情况
*
@@ -129,23 +131,21 @@ public abstract class BaseSweeperOperateTabFragment
- debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE)
+ //打开调试面板
+ findViewById(R.id.btnOpenDebugView).setOnClickListener(view -> {
+ Intent intent = new Intent();
+ intent.setAction(DebugView.BROADCAST_ACTION);
+ intent.putExtra(DebugView.BROADCAST_DATA_SHOW, true);
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
+ }
);
-
- // 模拟 可自动驾驶,工控机连接正常,且处于人工干预状态
- findViewById(R.id.btnAutopilotEnable).setOnClickListener(view ->
- debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE)
- );
-
- // 模拟 自动驾驶能力,自动驾驶中,可能是停车,可能是行进,但是是机器在处理车的前进后退,不是人
- findViewById(R.id.btnAutopilotRunning).setOnClickListener(view ->
- debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING)
- );
- // 模拟 结束子任务
- findViewById(R.id.btnEndTask).setOnClickListener(view ->
- debugEndSubTask()
+ //关闭调试面板
+ findViewById(R.id.btnCloseDebugView).setOnClickListener(view -> {
+ Intent intent = new Intent();
+ intent.setAction(DebugView.BROADCAST_ACTION);
+ intent.putExtra(DebugView.BROADCAST_DATA_SHOW, false);
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
+ }
);
mTrafficDataView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/model/SweeperOperateTaskModel.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/model/SweeperOperateTaskModel.java
index bda98d4dc9..e40a0b38aa 100644
--- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/model/SweeperOperateTaskModel.java
+++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/model/SweeperOperateTaskModel.java
@@ -3,6 +3,8 @@ package com.mogo.och.sweeper.operate.model;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
import android.content.Context;
+import android.content.Intent;
+import android.net.ConnectivityManager;
import android.util.Log;
import androidx.annotation.NonNull;
@@ -12,6 +14,8 @@ import com.amap.api.maps.model.LatLng;
import com.elegant.network.utils.GsonUtil;
import com.mogo.aicloud.services.socket.IMogoOnMessageListener;
import com.mogo.commons.AbsMogoApplication;
+import com.mogo.commons.module.intent.IMogoIntentListener;
+import com.mogo.commons.module.intent.IntentManager;
import com.mogo.commons.module.status.IMogoStatusChangedListener;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.commons.module.status.StatusDescriptor;
@@ -40,20 +44,21 @@ import com.mogo.och.common.module.utils.PinYinUtil;
import com.mogo.och.common.module.utils.ToastUtilsOch;
import com.mogo.och.common.module.voice.VoiceNotice;
import com.mogo.och.sweeper.R;
+import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
+import com.mogo.och.sweeper.common.callback.ISweeperADASStatusCallback;
+import com.mogo.och.sweeper.common.constant.SweeperConst;
+import com.mogo.och.sweeper.common.util.SweeperAnalyticsManager;
+import com.mogo.och.sweeper.common.view.DebugView;
import com.mogo.och.sweeper.operate.bean.BaseResponse;
import com.mogo.och.sweeper.operate.bean.SubInfo;
import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean;
-import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean;
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskDetailBean;
-import com.mogo.och.sweeper.common.callback.ISweeperADASStatusCallback;
import com.mogo.och.sweeper.operate.callback.ISweeperControllerStatusCallback;
import com.mogo.och.sweeper.operate.callback.ISweeperOperateTaskCallback;
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum;
-import com.mogo.och.sweeper.common.constant.SweeperConst;
import com.mogo.och.sweeper.operate.constant.TaskStatusEnum;
import com.mogo.och.sweeper.operate.net.SweeperOperateServiceManager;
-import com.mogo.och.sweeper.common.util.SweeperAnalyticsManager;
import com.mogo.och.sweeper.operate.util.SweeperTrajectoryManager;
import org.jetbrains.annotations.NotNull;
@@ -137,6 +142,9 @@ public class SweeperOperateTaskModel {
OCHSocketMessageManager.msgMonitorType,
mMogoOnMessageListener);
+ IntentManager.getInstance()
+ .registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener);
+
//2022.1.28
// 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃
// The exception could not be delivered to the consumer because it has already canceled/disposed
@@ -191,7 +199,8 @@ public class SweeperOperateTaskModel {
@Override
public void onAutopilotRotting(MessagePad.GlobalPathResp routeList) {
- if (null != routeList && routeList.getWayPointsList()!=null&&routeList.getWayPointsList().size() > 0) {
+ if (null != routeList && routeList.getWayPointsList() != null && routeList.getWayPointsList().size() > 0) {
+ DebugView.Companion.printInfoMsg("[MAP全局规划回调] 回调,getWayPointsList.Size=" + routeList.getWayPointsList().size());
if (mCurrentSubTaskDetail.getLineId() != mLineId) {//判断是否同一条路线
mLineId = mCurrentSubTaskDetail.getLineId();
points.addAll(coordinateConverterWgsToGcjList(mContext, routeList.getWayPointsList()));
@@ -216,7 +225,7 @@ public class SweeperOperateTaskModel {
*/
public void clearRouteList() {
points.clear();
- mSubTaskType=0;
+ mSubTaskType = 0;
}
/**
@@ -270,10 +279,26 @@ public class SweeperOperateTaskModel {
}
CallerLogger.d(M_SWEEPER + TAG, "onMsgReceived = " + obj.getMessage());
OCHSocketMessageManager.INSTANCE.pushAppOperationalMsgBox(obj.getPushTimeStamp(),
- obj.getMessage(),OCHSocketMessageManager.OPERATION_SYSTEM);
+ obj.getMessage(), OCHSocketMessageManager.OPERATION_SYSTEM);
}
};
+ //监听网络变化,避免启动机器时无网导致无法更新信息
+ private final IMogoIntentListener mNetWorkIntentListener = new IMogoIntentListener() {
+
+ @Override
+ public void onIntentReceived(String intentStr, Intent intent) {
+ CallerLogger.d(TAG, "mNetWorkIntentListener: onIntentReceived=" + intentStr);
+ if ((ConnectivityManager.CONNECTIVITY_ACTION.equals(intentStr))) {
+ if (NetworkUtils.isConnected(mContext)) {
+ DebugView.Companion.printInfoMsg("[网络状态变化] isConnected=true");
+ } else {
+ DebugView.Companion.printErrorMsg("[网络状态变化] isConnected=false");
+ }
+ }
+ }
+ };
+
private final IMogoStatusChangedListener mMogoStatusChangedListener = new IMogoStatusChangedListener() {
// VR mode变更回调
@Override
@@ -281,6 +306,7 @@ public class SweeperOperateTaskModel {
if (StatusDescriptor.VR_MODE == descriptor) {
if (mControllerStatusCallback != null) {
mControllerStatusCallback.onVRModeChanged(isTrue);
+ DebugView.Companion.printInfoMsg("[VRMode变化] isVRMode=" + isTrue);
}
}
}
@@ -294,6 +320,7 @@ public class SweeperOperateTaskModel {
@Override
public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) {
+ DebugView.Companion.printInfoMsg("[启自驾] 执行失败,code=" + startFailedCode + ", msg=" + startFailedMessage);
SweeperAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage);
if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode) {
CallerLogger.e(M_SWEEPER + TAG, "mAdasStartFailureListener = " + startFailedMessage);
@@ -308,7 +335,7 @@ public class SweeperOperateTaskModel {
public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) {
if (null == gnssInfo) return;
CallerLogger.e(M_SWEEPER + TAG, "高德定位到站:mLongitude = " + gnssInfo.getLongitude()
- + ", mLatitude=" + gnssInfo.getLatitude() + ", mSubTaskType=" + mSubTaskType +", mIsSubTaskWorking=" + mIsSubTaskWorking
+ + ", mLatitude=" + gnssInfo.getLatitude() + ", mSubTaskType=" + mSubTaskType + ", mIsSubTaskWorking=" + mIsSubTaskWorking
+ ", isAutopilotSubTaskArriveEndSite=" + isAutopilotSubTaskArriveEndSite
);
if (mControllerStatusCallback != null) {
@@ -362,6 +389,9 @@ public class SweeperOperateTaskModel {
if (distance <= SweeperConst.ARRIVE_AT_END_STATION_DISTANCE) {
CallerLogger.d(M_SWEEPER + TAG, "行程日志-judgeArrivedStation() distance = " + distance
+ " to " + mCurrentSubTaskDetail.getEndSiteName());
+ DebugView.Companion.printInfoMsg(
+ "[自车定位围栏] 触发围栏,围栏范围:" + SweeperConst.ARRIVE_AT_END_STATION_DISTANCE + "米"
+ );
isAutopilotSubTaskArriveEndSite = true;
//到达子任务终点 结束子任务
subTaskEnd(mIsFirstSubtask, mIsLastSubtask, mSubTaskId); //无自动驾驶到终点信息传null
@@ -384,9 +414,11 @@ public class SweeperOperateTaskModel {
* @param isRestart
*/
private void startAutopilot(boolean isRestart) {
+ DebugView.Companion.printInfoMsg("[启自驾] startAutoPilot");
if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) {
ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() +
", 请稍候重试");
+ DebugView.Companion.printErrorMsg("[启自驾]" + OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason());
triggerUnableStartAPReasonEvent();
return;
}
@@ -395,9 +427,11 @@ public class SweeperOperateTaskModel {
AutopilotControlParameters parameters = initAutopilotControlParameters();
if (null == parameters) {
CallerLogger.e(M_SWEEPER + TAG, "行程日志-AutopilotControlParameters is empty.");
+ DebugView.Companion.printErrorMsg("[启自驾]行程日志-AutopilotControlParameters is empty");
return;
}
CallerAutoPilotControlManager.INSTANCE.startAutoPilot(parameters);
+ DebugView.Companion.printInfoMsg("[启自驾] 调用成功");
CallerLogger.d(M_SWEEPER + TAG, "行程日志-开启自动驾驶====" + GsonUtil.jsonFromObject(parameters)
+ " startLatLon=" + parameters.startName + ",endLatLon=" + parameters.endName +
"isRestart = " + isRestart);
@@ -444,6 +478,9 @@ public class SweeperOperateTaskModel {
public void onArriveTaskEnd(MessagePad.ArrivalNotification data) {
//MAP 280 每隔100ms左右返回一次到站, 导致在到达中间站后再次滑动出发后会有时间差,收到一次到站,出现问题
//此处比对 自驾告诉的子任务终点坐标和本地应到子任务终点坐标, 一致时才表示子任务完成
+ DebugView.Companion.printInfoMsg("[MAP到站通知] 上报到站,endLocation=("
+ + ((data == null || data.getEndLocation() == null) ? "null" : data.getEndLocation().toString())
+ + ")");
if (data != null && data.getEndLocation() != null && mCurrentSubTaskDetail != null) {
CallerLogger.d(M_SWEEPER + TAG, "MAP到站通知:" + mCurrentSubTaskDetail.getEndSiteName() + " 经度:"
+ data.getEndLocation().getLongitude() + " 纬度:" + data.getEndLocation().getLatitude());
@@ -494,7 +531,6 @@ public class SweeperOperateTaskModel {
* 将轨迹文件信息同步到鹰眼
*/
private void updateAutopilotControlParameters() {
-
AutopilotControlParameters parameters = initAutopilotControlParameters();
if (null == parameters) {
CallerLogger.e(M_SWEEPER + TAG, "AutopilotControlParameters is empty.");
@@ -503,11 +539,13 @@ public class SweeperOperateTaskModel {
CallerLogger.d(M_SWEEPER + TAG, "AutopilotControlParameters" + GsonUtil.jsonFromObject(parameters));
CallerLogger.d(M_SWEEPER + TAG, "AutopilotControlParameters is update.");
CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters);
+ DebugView.Companion.printInfoMsg("[启自驾] updateAutopilotControlParameters调用成功");
}
private void clearAutopilotControlParameters() {
CallerLogger.d(M_SWEEPER + TAG, "AutopilotControlParameters is clear.");
CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null);
+ DebugView.Companion.printInfoMsg("[启自驾] clearAutopilotControlParameters调用成功");
}
private AutopilotControlParameters initAutopilotControlParameters() {
@@ -538,10 +576,12 @@ public class SweeperOperateTaskModel {
* 获取当前正在执行的任务
*/
public void getCurrentTask() {
+ DebugView.Companion.printInfoMsg("[查询当前任务] 请求中");
SweeperOperateServiceManager.getCurrentTask(mContext, new OchCommonServiceCallback>() {
@Override
public void onSuccess(BaseResponse data) {
CallerLogger.d(M_SWEEPER + TAG, "getCurrentTask:" + GsonUtil.jsonFromObject(data));
+ DebugView.Companion.printInfoMsg("[查询当前任务] 请求success");
if (mSweeperTaskCallback != null && data != null) {
SweeperSubTaskBean sweeperSubTaskBean = data.getData();
if (sweeperSubTaskBean != null && sweeperSubTaskBean.getSubList() != null && sweeperSubTaskBean.getSubList().size() > 0) {
@@ -556,8 +596,10 @@ public class SweeperOperateTaskModel {
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+ DebugView.Companion.printErrorMsg("[查询当前任务] 请求error," + mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+ DebugView.Companion.printErrorMsg("[查询当前任务] 请求error," + mContext.getString(R.string.request_error_tip));
}
}
@@ -566,8 +608,10 @@ public class SweeperOperateTaskModel {
if (ToastUtilsOch.isCustomFastClick(5000)) {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort("网络异常,请稍后重试");
+ DebugView.Companion.printErrorMsg("[查询当前任务] 请求failed, 网络异常,请稍后重试");
} else {
ToastUtils.showShort(msg);
+ DebugView.Companion.printErrorMsg("[查询当前任务] 请求failed, " + msg);
}
}
}
@@ -578,10 +622,12 @@ public class SweeperOperateTaskModel {
* 获取主任务列表
*/
public void getMainTaskList(boolean refresh) {
+ DebugView.Companion.printInfoMsg("[查询主任务] 请求中");
SweeperOperateServiceManager.getMainTaskList(mContext, new OchCommonServiceCallback>>() {
@Override
public void onSuccess(BaseResponse> data) {
CallerLogger.d(M_SWEEPER + TAG, "getMainTaskList:" + GsonUtil.jsonFromObject(data));
+ DebugView.Companion.printInfoMsg("[查询主任务] 请求success");
if (mSweeperTaskCallback != null && data != null && data.getCode() == 0) {
List list = data.getData();
mSweeperTaskCallback.setMainTaskList(list, refresh);
@@ -593,8 +639,10 @@ public class SweeperOperateTaskModel {
if (ToastUtilsOch.isCustomFastClick(5000)) {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort("网络异常,请稍后重试");
+ DebugView.Companion.printErrorMsg("[查询主任务] 请求error, 网络异常,请稍后重试");
} else {
ToastUtils.showShort(msg);
+ DebugView.Companion.printErrorMsg("[查询主任务] 请求error, " + msg);
}
}
}
@@ -603,8 +651,10 @@ public class SweeperOperateTaskModel {
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+ DebugView.Companion.printErrorMsg("[查询主任务] 请求failed, " + mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+ DebugView.Companion.printErrorMsg("[查询主任务] 请求failed, " + mContext.getString(R.string.request_error_tip));
}
}
});
@@ -614,10 +664,12 @@ public class SweeperOperateTaskModel {
* 获取子任务列表
*/
public void getSubTaskList(int taskId, SweeperSubTaskBean sweeperSubTaskBean) {
+ DebugView.Companion.printInfoMsg("[查询子任务] 请求中, taskId=" + taskId);
SweeperOperateServiceManager.getSubTaskList(taskId, mContext, new OchCommonServiceCallback>>() {
@Override
public void onSuccess(BaseResponse> data) {
CallerLogger.d(M_SWEEPER + TAG, "getSubTaskList:" + GsonUtil.jsonFromObject(data));
+ DebugView.Companion.printInfoMsg("[查询子任务] 请求success, taskId=" + taskId);
if (mSweeperTaskCallback != null && data != null && data.getCode() == 0) {
List list = data.getData();
if (list != null && list.size() > 0) {
@@ -634,8 +686,10 @@ public class SweeperOperateTaskModel {
if (ToastUtilsOch.isCustomFastClick(5000)) {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort("网络异常,请稍后重试");
+ DebugView.Companion.printErrorMsg("[查询子任务] 请求failed, 网络异常,请稍后重试, taskId=" + taskId);
} else {
ToastUtils.showShort(msg);
+ DebugView.Companion.printErrorMsg("[查询子任务] 请求failed, " + msg + ", taskId=" + taskId);
}
}
}
@@ -644,8 +698,10 @@ public class SweeperOperateTaskModel {
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+ DebugView.Companion.printErrorMsg("[查询子任务] 请求error, " + mContext.getString(R.string.network_error_tip) + ", taskId=" + taskId);
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+ DebugView.Companion.printErrorMsg("[查询子任务] 请求error, " + mContext.getString(R.string.request_error_tip) + ", taskId=" + taskId);
}
}
});
@@ -655,10 +711,12 @@ public class SweeperOperateTaskModel {
* 获取子任务详情包括轨迹文件信息
*/
public void getSubTaskDetail(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, boolean isStartSubtask) {
+ DebugView.Companion.printInfoMsg("[查询子任务详情及轨迹信息] 请求中, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
SweeperOperateServiceManager.getSubTaskDetail(subTaskId, mContext, new OchCommonServiceCallback>() {
@Override
public void onSuccess(BaseResponse data) {
CallerLogger.d(M_SWEEPER + TAG, "getSubTaskDetail:" + GsonUtil.jsonFromObject(data));
+ DebugView.Companion.printInfoMsg("[查询子任务详情及轨迹信息] 请求success, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
if (data != null) {
mCurrentSubTaskDetail = data.getData();
if (mCurrentSubTaskDetail != null) {
@@ -693,8 +751,10 @@ public class SweeperOperateTaskModel {
if (ToastUtilsOch.isCustomFastClick(5000)) {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort("网络异常,请稍后重试");
+ DebugView.Companion.printErrorMsg("[查询子任务详情及轨迹信息] 请求failed, 网络异常,请稍后重试, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
} else {
ToastUtils.showShort(msg);
+ DebugView.Companion.printErrorMsg("[查询子任务详情及轨迹信息] 请求failed, " + msg + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
}
}
}
@@ -703,8 +763,10 @@ public class SweeperOperateTaskModel {
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+ DebugView.Companion.printErrorMsg("[查询子任务详情及轨迹信息] 请求Error, " + mContext.getString(R.string.network_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+ DebugView.Companion.printErrorMsg("[查询子任务详情及轨迹信息] 请求Error, " + mContext.getString(R.string.request_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
}
}
});
@@ -714,10 +776,12 @@ public class SweeperOperateTaskModel {
* 子任务开始上报
*/
public void subTaskStart(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType) {
+ DebugView.Companion.printInfoMsg("[子任务开始上报] 请求中, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
SweeperOperateServiceManager.subTaskStart(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback>() {
@Override
public void onSuccess(BaseResponse data) {
CallerLogger.d(M_SWEEPER + TAG, "subTaskStart:" + GsonUtil.jsonFromObject(data));
+ DebugView.Companion.printInfoMsg("[子任务开始上报] 请求success, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
if (mSweeperTaskCallback != null && data != null) {
if (data.getData()) {
mIsSubTaskWorking = true;
@@ -743,8 +807,10 @@ public class SweeperOperateTaskModel {
if (ToastUtilsOch.isCustomFastClick(5000)) {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort("网络异常,请稍后重试");
+ DebugView.Companion.printErrorMsg("[子任务开始上报] 请求failed, 网络异常,请稍后重试, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
} else {
ToastUtils.showShort(msg);
+ DebugView.Companion.printErrorMsg("[子任务开始上报] 请求failed, " + msg + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
}
}
}
@@ -753,8 +819,10 @@ public class SweeperOperateTaskModel {
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+ DebugView.Companion.printErrorMsg("[子任务开始上报] 请求error, " + mContext.getString(R.string.network_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+ DebugView.Companion.printErrorMsg("[子任务开始上报] 请求error, " + mContext.getString(R.string.request_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
}
}
});
@@ -764,11 +832,13 @@ public class SweeperOperateTaskModel {
* 子任务结束上报
*/
public void subTaskEnd(boolean isFirst, boolean isEnd, int subTaskId) {
+ DebugView.Companion.printInfoMsg("[子任务结束上报] 请求中, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
SweeperOperateServiceManager.subTaskEnd(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback>() {
@Override
public void onSuccess(BaseResponse data) {
CallerLogger.d(M_SWEEPER + TAG, "subTaskEnd:" +
String.format("isFirst=%b; isEnd=%b; ", isFirst, isEnd) + GsonUtil.jsonFromObject(data));
+ DebugView.Companion.printInfoMsg("[子任务结束上报] 请求success, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
if (data != null) {
if (data.getData()) {
mIsSubTaskWorking = false;
@@ -792,9 +862,11 @@ public class SweeperOperateTaskModel {
if (ToastUtilsOch.isCustomFastClick(5000)) {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort("网络异常,请稍后重试");
+ DebugView.Companion.printErrorMsg("[子任务结束上报] 请求failed, 网络异常,请稍后重试, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
} else {
if (isAutopilotSubTaskArriveEndSite) return;
ToastUtils.showShort(msg);
+ DebugView.Companion.printErrorMsg("[子任务结束上报] 请求failed, " + msg + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
}
}
}
@@ -803,8 +875,10 @@ public class SweeperOperateTaskModel {
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+ DebugView.Companion.printErrorMsg("[子任务结束上报] 请求error, " + mContext.getString(R.string.network_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+ DebugView.Companion.printErrorMsg("[子任务结束上报] 请求error, " + mContext.getString(R.string.request_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
}
}
@@ -815,11 +889,13 @@ public class SweeperOperateTaskModel {
* 子任务跳过上报
*/
public void subTaskSkip(boolean isFirst, boolean isEnd, int subTaskId) {
+ DebugView.Companion.printInfoMsg("[子任务跳过上报] 请求中, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
SweeperOperateServiceManager.subTaskSkip(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback>() {
@Override
public void onSuccess(BaseResponse data) {
CallerLogger.d(M_SWEEPER + TAG, "subTaskSkip:" +
- String.format("isFirst=%b; isEnd=%b; ", isFirst, isEnd)+ GsonUtil.jsonFromObject(data));
+ String.format("isFirst=%b; isEnd=%b; ", isFirst, isEnd) + GsonUtil.jsonFromObject(data));
+ DebugView.Companion.printInfoMsg("[子任务跳过上报] 请求success, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
if (mSweeperTaskCallback != null && data != null) {
if (data.getData()) {
mIsSubTaskWorking = false;
@@ -835,8 +911,10 @@ public class SweeperOperateTaskModel {
if (ToastUtilsOch.isCustomFastClick(5000)) {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort("网络异常,请稍后重试");
+ DebugView.Companion.printErrorMsg("[子任务跳过上报] 请求failed, 网络异常,请稍后重试, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
} else {
ToastUtils.showShort(msg);
+ DebugView.Companion.printErrorMsg("[子任务跳过上报] 请求failed, " + msg + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
}
}
}
@@ -845,8 +923,10 @@ public class SweeperOperateTaskModel {
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+ DebugView.Companion.printErrorMsg("[子任务跳过上报] 请求error, " + mContext.getString(R.string.network_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+ DebugView.Companion.printErrorMsg("[子任务跳过上报] 请求error, " + mContext.getString(R.string.request_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
}
}
});
@@ -856,10 +936,12 @@ public class SweeperOperateTaskModel {
* 主任务重置
*/
public void mainTaskReset(int taskId) {
+ DebugView.Companion.printInfoMsg("[主任务重置] 请求中, taskId=" + taskId);
SweeperOperateServiceManager.mainTaskReset(taskId, mContext, new OchCommonServiceCallback>() {
@Override
public void onSuccess(BaseResponse data) {
CallerLogger.d(M_SWEEPER + TAG, "mainTaskReset:" + GsonUtil.jsonFromObject(data));
+ DebugView.Companion.printInfoMsg("[主任务重置] 请求success, taskId=" + taskId);
// 主任务重置 当前子任务也需重置
mIsSubTaskWorking = false;
isAutopilotSubTaskArriveEndSite = false;
@@ -873,8 +955,10 @@ public class SweeperOperateTaskModel {
if (ToastUtilsOch.isCustomFastClick(5000)) {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort("网络异常,请稍后重试");
+ DebugView.Companion.printErrorMsg("[主任务重置] 请求failed, 网络异常,请稍后重试, taskId=" + taskId);
} else {
ToastUtils.showShort(msg);
+ DebugView.Companion.printErrorMsg("[主任务重置] 请求failed, " + msg + ", taskId=" + taskId);
}
}
}
@@ -883,8 +967,10 @@ public class SweeperOperateTaskModel {
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+ DebugView.Companion.printErrorMsg("[主任务重置] 请求error, " + mContext.getString(R.string.network_error_tip) + ", taskId=" + taskId);
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+ DebugView.Companion.printErrorMsg("[主任务重置] 请求error, " + mContext.getString(R.string.request_error_tip)+ ", taskId=" + taskId);
}
}
});
@@ -893,5 +979,6 @@ public class SweeperOperateTaskModel {
//结束自动驾驶
public void cancelAutoPilot() {
CallerAutoPilotControlManager.INSTANCE.cancelAutoPilot();
+ DebugView.Companion.printInfoMsg("[取消自动驾驶] 请求成功");
}
}
diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java
index 37ba82a05b..0ee3bda143 100644
--- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java
+++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java
@@ -23,6 +23,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.common.module.utils.NumberFormatUtil;
+import com.mogo.och.sweeper.common.view.DebugView;
import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean;
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean;
@@ -130,8 +131,10 @@ public class SweeperOperatePresenter extends Presenter
ThreadUtils.runOnUiThread(() -> mView.startAutoBtn(state));
switch (state) {
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE://不可自动驾驶
+ DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_DISABLE,meaning=不可自动驾驶");
break;
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE://人工驾驶
+ DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_ENABLE,meaning=可自动驾驶,人工干预状态");
if (SweeperOperateTaskModel.getInstance().getSubWorking()) {
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
SweeperOperateTaskModel.getInstance().startBeautificationMode();
@@ -144,6 +147,7 @@ public class SweeperOperatePresenter extends Presenter
}
break;
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING://自动驾驶中
+ DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_RUNNING,meaning=自动驾驶中");
SweeperOperateTaskModel.getInstance().triggerStartServiceEvent(
SweeperOperateTaskModel.getInstance().isRestartAutopilot(), true);
if (SweeperOperateTaskModel.getInstance().getSubWorking()) {
@@ -153,6 +157,7 @@ public class SweeperOperatePresenter extends Presenter
}
break;
case IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING://平行驾驶
+ DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_PARALLEL_DRIVING,meaning=平行驾驶中");
if (SweeperOperateTaskModel.getInstance().getSubWorking()) {
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;//是否强制绘制引导线
@@ -223,6 +228,9 @@ public class SweeperOperatePresenter extends Presenter
@Override
public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) {
+ DebugView.Companion.printInfoMsg(
+ "[域控连接状态变化] status=" + status
+ + ", reason=" + reason);
}
@Override
@@ -237,6 +245,9 @@ public class SweeperOperatePresenter extends Presenter
@Override
public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) {
SweeperOperateTaskModel.getInstance().onArriveTaskEnd(arrivalNotification);
+ DebugView.Companion.printInfoMsg("[MAP到站通知] 上报到站,endLocation=("
+ + ((arrivalNotification == null || arrivalNotification.getEndLocation() == null) ? "null" : arrivalNotification.getEndLocation().toString())
+ + ")");
}
@Override
diff --git a/OCH/sweeper/driver/src/main/res/drawable/sweeper_debug_view_log_history_bg.xml b/OCH/sweeper/driver/src/main/res/drawable/sweeper_debug_view_log_history_bg.xml
new file mode 100644
index 0000000000..3911b44185
--- /dev/null
+++ b/OCH/sweeper/driver/src/main/res/drawable/sweeper_debug_view_log_history_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/sweeper/driver/src/main/res/layout/sweeper_base_fragment.xml b/OCH/sweeper/driver/src/main/res/layout/sweeper_base_fragment.xml
index 283719b8f2..84c1b3dd01 100644
--- a/OCH/sweeper/driver/src/main/res/layout/sweeper_base_fragment.xml
+++ b/OCH/sweeper/driver/src/main/res/layout/sweeper_base_fragment.xml
@@ -81,6 +81,7 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+
+
+
+
+ app:roundLayoutRadius="@dimen/dp_16">
+
+
+
-
-
-
-
+ android:background="#f00"
+ android:text="关闭任务调试面板"
+ android:textSize="@dimen/dp_40"
+ app:layout_constraintRight_toRightOf="@+id/btnOpenDebugView"
+ app:layout_constraintTop_toBottomOf="@+id/btnOpenDebugView" />
-
-
\ No newline at end of file
diff --git a/OCH/sweeper/driver/src/main/res/layout/sweeper_cloud_base_fragment.xml b/OCH/sweeper/driver/src/main/res/layout/sweeper_cloud_base_fragment.xml
index a2efa01f93..76386bdeee 100644
--- a/OCH/sweeper/driver/src/main/res/layout/sweeper_cloud_base_fragment.xml
+++ b/OCH/sweeper/driver/src/main/res/layout/sweeper_cloud_base_fragment.xml
@@ -81,6 +81,7 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+
+
+
+
+ android:visibility="gone">
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+ android:text="关闭任务调试面板"
+ android:textSize="@dimen/dp_40"
+ app:layout_constraintRight_toRightOf="@+id/btnOpenDebugView"
+ app:layout_constraintTop_toBottomOf="@+id/btnOpenDebugView" />
-
-
\ No newline at end of file
diff --git a/OCH/sweeper/driver/src/main/res/layout/sweeper_debug_view_content.xml b/OCH/sweeper/driver/src/main/res/layout/sweeper_debug_view_content.xml
new file mode 100644
index 0000000000..a2ee54c676
--- /dev/null
+++ b/OCH/sweeper/driver/src/main/res/layout/sweeper_debug_view_content.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/sweeper/driver/src/main/res/values/dimens.xml b/OCH/sweeper/driver/src/main/res/values/dimens.xml
index 8cc4e2b53a..91dd9fa3bf 100644
--- a/OCH/sweeper/driver/src/main/res/values/dimens.xml
+++ b/OCH/sweeper/driver/src/main/res/values/dimens.xml
@@ -1,5 +1,5 @@
-
+
300dp
348dp
@@ -151,4 +151,6 @@
13dp
32dp
+
+ 1000dp
\ No newline at end of file
diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt
index aa8933fb86..3ca5453503 100644
--- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt
+++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt
@@ -314,17 +314,24 @@ object FunctionBuildConfig {
var isFaultSlowDown = true
/**
- * 清扫车 默认业务模式(云控)
+ * 清扫车 默认业务模式(打包时默认的模式)
*/
@Volatile
@JvmField
var sweeperDefaultMode = "Cloud"
/**
- * 清扫车 是否能切换当前业务模式
+ * 清扫车 是否能切换当前业务模式(打包时默认的设置)
*/
@Volatile
@JvmField
var sweeperCanSwitchMode = true
+ /**
+ * 清扫车 当前的业务模式
+ */
+ @Volatile
+ @JvmField
+ var sweeperCurrentMode = "Cloud"
+
}
\ No newline at end of file