globalpath truncation

This commit is contained in:
yangyakun
2023-06-05 19:57:43 +08:00
parent ac83361194
commit f46043b0cb
2 changed files with 36 additions and 5 deletions

View File

@@ -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<MogoLocation> mRoutePoints = new ArrayList<>();
private volatile List<MogoLocation> 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<MessagePad.Location> 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<MessagePad.Location> routePoints){
public synchronized void updateRoutePoints(List<MessagePad.Location> routePoints){
mRoutePoints.clear();
List<MogoLocation> latLngModels = CoordinateCalculateRouteUtil
.coordinateConverterWgsToGcjLocations(mContext,routePoints);

View File

@@ -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<MessagePad.Location>?) {
mRoutePoints.clear()
val latLngModels = CoordinateCalculateRouteUtil