diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index b32f39aa8e..87f0874556 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -66,6 +66,7 @@ import com.mogo.och.bus.passenger.network.BusPassengerServiceManager; import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; +import com.mogo.och.common.module.utils.RxUtils; import com.mogo.och.data.bean.BusRoutesResult; import com.mogo.och.data.bean.BusStationBean; import com.mogo.och.data.bean.BusTransferData; @@ -77,6 +78,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import io.reactivex.disposables.Disposable; import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; import system_master.SystemStatusInfo; @@ -87,8 +89,9 @@ import system_master.SystemStatusInfo; public class BusPassengerModel { private static final String TAG = BusPassengerModel.class.getSimpleName(); - private List mRoutePoints = new ArrayList<>(); - + private volatile List mRoutePoints = new ArrayList<>(); + // 1s内只接受一次轨迹 + private volatile Disposable globalPathTruncation; private static final class SingletonHolder { private static final BusPassengerModel INSTANCE = new BusPassengerModel(); } @@ -527,10 +530,21 @@ public class BusPassengerModel { private final IMoGoPlanningRottingListener moGoAutopilotPlanningListener = new IMoGoPlanningRottingListener(){ @Override - public void onAutopilotRotting(@Nullable MessagePad.GlobalPathResp routeList) { + public synchronized void onAutopilotRotting(@Nullable MessagePad.GlobalPathResp routeList) { CallerLogger.INSTANCE.d(M_BUS_P + TAG, "onAutopilotRotting = " + GsonUtil.jsonFromObject(routeList)); List routePoints = routeList.getWayPointsList(); + + if(globalPathTruncation!=null&&!globalPathTruncation.isDisposed()){ + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "1s内不可以接受轨迹"); + return; + } + + globalPathTruncation = RxUtils.INSTANCE.createSubscribe(1_000, () -> { + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "可以接受轨迹"); + return null; + }); + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "接受轨迹中"); if (null != routePoints && routePoints.size() > 0){ updateRoutePoints(routePoints); startToRouteAndWipe(); @@ -538,7 +552,7 @@ public class BusPassengerModel { } }; - public void updateRoutePoints(List routePoints){ + public synchronized void updateRoutePoints(List routePoints){ mRoutePoints.clear(); List latLngModels = CoordinateCalculateRouteUtil .coordinateConverterWgsToGcjLocations(mContext,routePoints); diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt index 8df2542c2d..214f37bbf2 100644 --- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt +++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt @@ -19,7 +19,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager @@ -47,9 +46,11 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.BusTransferData +import io.reactivex.disposables.Disposable import mogo.telematics.pad.MessagePad import kotlin.math.abs @@ -80,6 +81,9 @@ class PM2DrivingModel private constructor() { private var operationStatus: PM2OperationStatusResponse.Result? = null + @Volatile + private var globalPathTruncation: Disposable? = null + private val handler = Handler(Handler.Callback { msg -> if (msg.what == MSG_QUERY_BUS_P_STATION) { queryDriverOperationStatus() @@ -251,16 +255,29 @@ class PM2DrivingModel private constructor() { } private val moGoAutopilotPlanningListener = object : IMoGoPlanningRottingListener{ + + @Synchronized override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) { d(SceneConstant.M_BUS_P + TAG, "och-rotting==globalPathResp = " + GsonUtils.toJson(globalPathResp)) globalPathResp?.let { d(SceneConstant.M_BUS_P + TAG, "och-rotting==wayPointsSize = " + it.wayPointsList.size) + + if (globalPathTruncation != null && !globalPathTruncation!!.isDisposed) { + d(SceneConstant.M_BUS_P + TAG, "1s内不可以接受轨迹") + return@let + } + + globalPathTruncation = RxUtils.createSubscribe(1_000) { + d(SceneConstant.M_BUS_P + TAG, "可以接受轨迹") + } + d(SceneConstant.M_BUS_P + TAG, "接受轨迹中") updateRoutePoints(it.wayPointsList) } } } + @Synchronized fun updateRoutePoints(routePoints: List?) { mRoutePoints.clear() val latLngModels = CoordinateCalculateRouteUtil