diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index 0ac34706d6..50ea65ce76 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -64,10 +64,8 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst; 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.PinYinUtil; import com.mogo.och.common.module.utils.DateTimeUtil; - -import org.jetbrains.annotations.NotNull; +import com.mogo.och.common.module.utils.PinYinUtil; import java.util.ArrayList; import java.util.List; @@ -84,7 +82,7 @@ import system_master.SystemStatusInfo; public class BusPassengerModel { private static final String TAG = BusPassengerModel.class.getSimpleName(); - private List mRoutePoints = new ArrayList<>(); + private final List mRoutePoints = new ArrayList<>(); private static final class SingletonHolder { private static final BusPassengerModel INSTANCE = new BusPassengerModel(); @@ -97,12 +95,12 @@ public class BusPassengerModel { private Context mContext; private IBusPassengerADASStatusCallback mADASStatusCallback; //Model->Presenter:自动驾驶状态相关 private IBusPassengerAutopilotPlanningCallback mAutopilotPlanningCallback; //Model->Presenter:自动驾驶线路规划 - private Map mControllerStatusCallbackMap = new ConcurrentHashMap<>(); + private final Map mControllerStatusCallbackMap = new ConcurrentHashMap<>(); private IBusPassegerDriverStatusCallback mDriverStatusCallback; //出车收车状态 private IBusPassengerRouteLineInfoCallback mRouteLineInfoCallback; // bus路线信息更新 - private MogoLocation mLocation = null; + private MogoLocation mLocation = null; private BusPassengerRoutesResult routesResult = null; @@ -116,7 +114,7 @@ public class BusPassengerModel { private final Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { - if ( msg.what == MSG_QUERY_BUS_P_STATION ) { + if (msg.what == MSG_QUERY_BUS_P_STATION) { queryDriverOperationStatus(); return true; } @@ -127,7 +125,7 @@ public class BusPassengerModel { private BusPassengerModel() { } - public void init( Context context ) { + public void init(Context context) { mContext = context.getApplicationContext(); initListeners(); // TODO: 2022/3/31 @@ -135,16 +133,16 @@ public class BusPassengerModel { startOrStopOrderLoop(true); } - public void setDriverStatusCallback(IBusPassegerDriverStatusCallback callback){ + public void setDriverStatusCallback(IBusPassegerDriverStatusCallback callback) { this.mDriverStatusCallback = callback; } - public void setRouteLineInfoCallback(IBusPassengerRouteLineInfoCallback callback){ + public void setRouteLineInfoCallback(IBusPassengerRouteLineInfoCallback callback) { this.mRouteLineInfoCallback = callback; } private void queryDriverOperationDelay() { - handler.sendEmptyMessageDelayed( MSG_QUERY_BUS_P_STATION, QUERY_BUS_P_STATION_DELAY ); + handler.sendEmptyMessageDelayed(MSG_QUERY_BUS_P_STATION, QUERY_BUS_P_STATION_DELAY); } private void queryDriverOperationStatus() { @@ -154,7 +152,7 @@ public class BusPassengerModel { public void onSuccess(BusPassengerOperationStatusResponse data) { if (data == null || data.data == null) return; if (mDriverStatusCallback != null) { - CallerLogger.INSTANCE.d( M_BUS_P + TAG, "queryDriverOperationStatus = %s", data.data.plateNumber ); + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "queryDriverOperationStatus = %s", data.data.plateNumber); mDriverStatusCallback.changeOperationStatus(data.data.driverStatus == 1); mDriverStatusCallback.updatePlateNumber(data.data.plateNumber); } @@ -178,13 +176,13 @@ public class BusPassengerModel { }); } - public void queryDriverSiteByCoordinate(){ + public void queryDriverSiteByCoordinate() { BusPassengerServiceManager.queryDriverSiteByCoordinate(mContext , new OchCommonServiceCallback() { @Override public void onSuccess(BusPassengerRoutesResponse data) { - if ( data == null || data.getResult() == null) { - CallerLogger.INSTANCE.d( M_BUS_P + TAG, "queryDriverSiteByCoordinate = null"); + if (data == null || data.getResult() == null) { + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "queryDriverSiteByCoordinate = null"); if (routesResult != null) { routesResult = null; mNextStationIndex = 0; @@ -192,7 +190,7 @@ public class BusPassengerModel { startOrStopCalculateRouteInfo(false); - if (mRouteLineInfoCallback != null){ + if (mRouteLineInfoCallback != null) { mRouteLineInfoCallback.showNoTaskView(); } @@ -200,8 +198,8 @@ public class BusPassengerModel { return; } - if (routesResult != null && data.getResult().equals(routesResult)){ - CallerLogger.INSTANCE.d( M_BUS_P + TAG, "queryDriverSiteByCoordinate = not update"); + if (routesResult != null && data.getResult().equals(routesResult)) { + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "queryDriverSiteByCoordinate = not update"); return; } routesResult = data.getResult(); @@ -210,16 +208,16 @@ public class BusPassengerModel { @Override public void onFail(int code, String msg) { - CallerLogger.INSTANCE.d( M_BUS_P + TAG, "queryDriverSiteByCoordinate = %s", msg - + ", sn = " +BusPassengerServiceManager.INSTANCE.getDriverAppSn()); - if (code == 1003){ + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "queryDriverSiteByCoordinate = %s", msg + + ", sn = " + BusPassengerServiceManager.INSTANCE.getDriverAppSn()); + if (code == 1003) { queryDriverOperationDelay(); } - if (BusPassengerServiceManager.INSTANCE.getDriverAppSn().isEmpty()){ + if (BusPassengerServiceManager.INSTANCE.getDriverAppSn().isEmpty()) { //此处拦截是为了防止过程中乘客屏和司机端断连,拿不到司机端sn, 造成请求失败去刷新了界面 return; } - if (code == 1003){ + if (code == 1003) { routesResult = null; startOrStopCalculateRouteInfo(false); return; @@ -229,35 +227,35 @@ public class BusPassengerModel { } private void updatePassengerRouteInfo(BusPassengerRoutesResult result) { - if (mRouteLineInfoCallback != null){ - mRouteLineInfoCallback.updateLineInfo(result.getName(),result.getRunningDur()); + if (mRouteLineInfoCallback != null) { + mRouteLineInfoCallback.updateLineInfo(result.getName(), result.getRunningDur()); mRouteLineInfoCallback.hideNoTaskView(); - if (result.getSites() != null){ + if (result.getSites() != null) { List stations = result.getSites(); mStations.clear(); mStations.addAll(stations); - for (int i = 0; i< stations.size(); i++){ - BusPassengerStation station = stations.get(i); - if (station.getDrivingStatus() == STATION_STATUS_STOPPED && station.isLeaving() && i+1 < stations.size()){ //离站 - mRouteLineInfoCallback.updateStationsInfo(stations,i+1,false); - if(mNextStationIndex != i+1){ - mTwoStationsRouts.clear(); - startRemainRouteInfo(); - } - mNextStationIndex = i+1; + for (int i = 0; i < stations.size(); i++) { + BusPassengerStation station = stations.get(i); + if (station.getDrivingStatus() == STATION_STATUS_STOPPED && station.isLeaving() && i + 1 < stations.size()) { //离站 + mRouteLineInfoCallback.updateStationsInfo(stations, i + 1, false); + if (mNextStationIndex != i + 1) { + mTwoStationsRouts.clear(); + startRemainRouteInfo(); + } + mNextStationIndex = i + 1; - updateAutopilotControlParameters(result,i); - return; - }else if (station.getDrivingStatus() == STATION_STATUS_STOPPED && !station.isLeaving()){ //到站 - if (i == 0){ - startOrStopRouteAndWipe(false); - } - mPreRouteIndex = 0; - startOrStopCalculateRouteInfo(false); - mRouteLineInfoCallback.updateStationsInfo(stations,i,true); - clearAutopilotControlParameters(); - return; - } + updateAutopilotControlParameters(result, i); + return; + } else if (station.getDrivingStatus() == STATION_STATUS_STOPPED && !station.isLeaving()) { //到站 + if (i == 0) { + startOrStopRouteAndWipe(false); + } + mPreRouteIndex = 0; + startOrStopCalculateRouteInfo(false); + mRouteLineInfoCallback.updateStationsInfo(stations, i, true); + clearAutopilotControlParameters(); + return; + } } } } @@ -267,7 +265,7 @@ public class BusPassengerModel { private void updateAutopilotControlParameters(BusPassengerRoutesResult busRoutesResult, int leaveIndex) { - AutopilotControlParameters parameters = initAutopilotControlParameters(busRoutesResult,leaveIndex); + AutopilotControlParameters parameters = initAutopilotControlParameters(busRoutesResult, leaveIndex); if (null == parameters) { CallerLogger.INSTANCE.e(M_BUS_P + TAG, "AutopilotControlParameters is empty."); return; @@ -283,11 +281,13 @@ public class BusPassengerModel { private AutopilotControlParameters initAutopilotControlParameters(BusPassengerRoutesResult busRoutesResult, int leaveIndex) { - if (busRoutesResult.getSites() == null){ return null ;} + if (busRoutesResult.getSites() == null) { + return null; + } List stations = busRoutesResult.getSites(); if (leaveIndex + 1 > stations.size() - 1) { - CallerLogger.INSTANCE.e(M_BUS_P + TAG, "行程日志-mismatch condition1."); - return null; + CallerLogger.INSTANCE.e(M_BUS_P + TAG, "行程日志-mismatch condition1."); + return null; } BusPassengerStation currentStation = stations.get(leaveIndex); BusPassengerStation nextStation = stations.get(leaveIndex + 1); @@ -339,7 +339,7 @@ public class BusPassengerModel { return; } - mControllerStatusCallbackMap.put(tag,callback); + mControllerStatusCallbackMap.put(tag, callback); } @@ -347,16 +347,16 @@ public class BusPassengerModel { // 2021.11.1重构自动驾驶 实现接口 IMoGoAutopilotStatusListener 注册监听 替换IMogoAdasOCHCallback接口 CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, mGoAutopilotStatusListener); - IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener ); - MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener ); + IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener); + MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); // 定位监听 CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 10,mMapLocationListener); //2021.11.1 自动驾驶路线规划接口 - CallerPlanningRottingListenerManager.INSTANCE.addListener(TAG,moGoAutopilotPlanningListener); + CallerPlanningRottingListenerManager.INSTANCE.addListener(TAG, moGoAutopilotPlanningListener); //监听司机端消息 - CallerTelematicListenerManager.INSTANCE.addListener(TAG,mReceivedMsgListener); + CallerTelematicListenerManager.INSTANCE.addListener(TAG, mReceivedMsgListener); AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext); } @@ -380,7 +380,7 @@ public class BusPassengerModel { private final IReceivedMsgListener mReceivedMsgListener = new IReceivedMsgListener() { @Override public void onReceivedServerSn(@Nullable String sn) { - Logger.d(SceneConstant.M_BUS_P+TAG,"onReceivedServerSn = "+sn); + Logger.d(SceneConstant.M_BUS_P + TAG, "onReceivedServerSn = " + sn); if (mDriverStatusCallback != null) { mDriverStatusCallback.updateDriverSn(sn); } @@ -388,16 +388,16 @@ public class BusPassengerModel { @Override public void onReceivedMsg(int type, @NonNull byte[] byteArray) { - if (OchCommonConst.BUSINESS_STRING == type){ + if (OchCommonConst.BUSINESS_STRING == type) { BaseDPMsg baseMsg = GsonUtils.fromJson(new String(byteArray), BaseDPMsg.class); - Logger.d(SceneConstant.M_BUS_P+TAG,"onReceivedMsg = "+GsonUtils.toJson(baseMsg)); + Logger.d(SceneConstant.M_BUS_P + TAG, "onReceivedMsg = " + GsonUtils.toJson(baseMsg)); - if (baseMsg != null && baseMsg.getType() == DPMsgType.TYPE_COMMON.getType()){ + if (baseMsg != null && baseMsg.getType() == DPMsgType.TYPE_COMMON.getType()) { AppConnectMsg msg = GsonUtils.fromJson(new String(byteArray), AppConnectMsg.class); - if (msg.isViewShow()){ //消息盒子显示内容 + if (msg.isViewShow()) { //消息盒子显示内容 OCHSocketMessageManager.INSTANCE.pushAppOperationalMsgBox( - DateTimeUtil.getCurrentTimeStamp(),msg.getMsg(), + DateTimeUtil.getCurrentTimeStamp(), msg.getMsg(), OCHSocketMessageManager.OPERATION_SYSTEM); } } @@ -408,10 +408,10 @@ public class BusPassengerModel { //监听网络变化,避免启动机器时无网导致无法更新订单信息 private final IMogoIntentListener mNetWorkIntentListener = new IMogoIntentListener() { @Override - public void onIntentReceived( String intentStr, Intent intent ) { - CallerLogger.INSTANCE.d( M_BUS_P + TAG, "onIntentReceived = %s", intentStr ); - if ( ConnectivityManager.CONNECTIVITY_ACTION.equals( intentStr ) ) { - if ( NetworkUtils.isConnected( mContext ) ) { + public void onIntentReceived(String intentStr, Intent intent) { + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "onIntentReceived = %s", intentStr); + if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intentStr)) { + if (NetworkUtils.isConnected(mContext)) { queryDriverOperationStatus(); } } @@ -422,7 +422,7 @@ public class BusPassengerModel { private final IMogoStatusChangedListener mMogoStatusChangedListener = (descriptor, isTrue) -> { if (StatusDescriptor.VR_MODE == descriptor) { if (mControllerStatusCallbackMap.size() > 0) { - for (IBusPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){ + for (IBusPassengerControllerStatusCallback callback : mControllerStatusCallbackMap.values()) { callback.onVRModeChanged(isTrue); } } @@ -432,18 +432,27 @@ public class BusPassengerModel { private final IMoGoChassisLocationGCJ02Listener mMapLocationListener = gnssInfo -> { if (null == gnssInfo) return; mLocation = gnssInfo; - for (IBusPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){ + for (IBusPassengerControllerStatusCallback callback : mControllerStatusCallbackMap.values()) { callback.onCarLocationChanged(gnssInfo); } }; - private volatile int mPreAutoStatus = -1; + private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener() { - private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){ + @Override + public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) { + } + + @Override + public void onAutopilotConnectInfo(boolean connectInfo) { + } + + @Override + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } @Override public void onAutopilotRouteLineId(long lineId) { - } @Override @@ -452,34 +461,24 @@ public class BusPassengerModel { @Override public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo) { - } private boolean arriveAtEnd = false; //乘客app专用字段 @Override - public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - if (autopilotStatusInfo == null) return; - int state = autopilotStatusInfo.getState(); + public void onAutopilotStatusResponse(int state) { if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning(); } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { - if(state != mPreAutoStatus){ - mTwoStationsRouts.clear(); - } + mTwoStationsRouts.clear(); if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotEnable(); } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { - if(state != mPreAutoStatus){ - mTwoStationsRouts.clear(); - } + mTwoStationsRouts.clear(); if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable(); - }else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING){ - if(state != mPreAutoStatus){ - mTwoStationsRouts.clear(); - } + } else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { + mTwoStationsRouts.clear(); if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning(); } - mPreAutoStatus = state; } @Override @@ -498,60 +497,55 @@ public class BusPassengerModel { if (DebugConfig.isDebug()) { // ToastUtils.showShort("到达目的地"); } - if (mADASStatusCallback != null){ + if (mADASStatusCallback != null) { mADASStatusCallback.onAutopilotArriveEnd(); } } @Override public void onAutopilotStatusRespByQuery(@NonNull SystemStatusInfo.StatusInfo status) { - } }; - private final IMoGoPlanningRottingListener moGoAutopilotPlanningListener = new IMoGoPlanningRottingListener(){ - - @Override - public void onAutopilotRotting(@Nullable MessagePad.GlobalPathResp routeList) { - CallerLogger.INSTANCE.d(M_BUS_P + TAG, "onAutopilotRotting = " - + GsonUtil.jsonFromObject(routeList)); - List routePoints = routeList.getWayPointsList(); - if (null != routePoints && routePoints.size() > 0){ - updateRoutePoints(routePoints); - startToRouteAndWipe(); - } + private final IMoGoPlanningRottingListener moGoAutopilotPlanningListener = routeList -> { + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "onAutopilotRotting = " + + GsonUtil.jsonFromObject(routeList)); + List routePoints = routeList.getWayPointsList(); + if (null != routePoints && routePoints.size() > 0) { + updateRoutePoints(routePoints); + startToRouteAndWipe(); } }; - public void updateRoutePoints(List routePoints){ + public void updateRoutePoints(List routePoints) { mRoutePoints.clear(); List latLngModels = CoordinateCalculateRouteUtil - .coordinateConverterWgsToGcjLocations(mContext,routePoints); + .coordinateConverterWgsToGcjLocations(mContext, routePoints); mRoutePoints.addAll(latLngModels); calculateTwoStationsRoute(); } - private void calculateTwoStationsRoute(){ + private void calculateTwoStationsRoute() { //找出前往站对应的轨迹点,拿出两站点的集合 CallerLogger.INSTANCE.d(M_BUS_P + TAG, "mRoutePoints.size() = " + mRoutePoints.size()); if (mRoutePoints.size() > 0) { - if (mStations.size() > 1){ //两个站点及以上要计算两个站点间的轨迹路线 - if (mNextStationIndex <= mStations.size()-1 && mNextStationIndex - 1 >=0){ + if (mStations.size() > 1) { //两个站点及以上要计算两个站点间的轨迹路线 + if (mNextStationIndex <= mStations.size() - 1 && mNextStationIndex - 1 >= 0) { mTwoStationsRouts.clear(); BusPassengerStation stationNext = mStations.get(mNextStationIndex); BusPassengerStation stationCur = mStations.get(mNextStationIndex - 1); //当前站在轨迹中对应的点 int currentRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew(0 - ,mRoutePoints - ,stationCur.getGcjLon(),stationCur.getGcjLat()); + , mRoutePoints + , stationCur.getGcjLon(), stationCur.getGcjLat()); //要前往的站在轨迹中对应的点 int nextRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew(currentRouteIndex - ,mRoutePoints - ,stationNext.getGcjLon(),stationNext.getGcjLat()); + , mRoutePoints + , stationNext.getGcjLon(), stationNext.getGcjLat()); CallerLogger.INSTANCE.d(M_BUS_P + TAG, "轨迹排查==currentRouteIndex = " + currentRouteIndex + ", nextRouteIndex = " + nextRouteIndex); - if (currentRouteIndex < nextRouteIndex){ //如果找到的next在起点的轨迹前面,直接舍弃这个轨迹,不显示 - mTwoStationsRouts.addAll(mRoutePoints.subList(currentRouteIndex,nextRouteIndex + 1)); + if (currentRouteIndex < nextRouteIndex) { //如果找到的next在起点的轨迹前面,直接舍弃这个轨迹,不显示 + mTwoStationsRouts.addAll(mRoutePoints.subList(currentRouteIndex, nextRouteIndex + 1)); } } } @@ -559,10 +553,10 @@ public class BusPassengerModel { // mTwoStationsRouts.clear(); // mTwoStationsRouts.addAll(mRoutePoints); // } - if (mTwoStationsRouts.size() > 0){ + if (mTwoStationsRouts.size() > 0) { float sumLength = CoordinateCalculateRouteUtil.calculateRouteSumLength(mTwoStationsRouts); - SharedPrefsMgr.getInstance(mContext).putInt(BusPassengerConst.BUS_SP_KEY_ORDER_SUM_DIS,(int) sumLength); - if (mAutopilotPlanningCallback != null){ + SharedPrefsMgr.getInstance(mContext).putInt(BusPassengerConst.BUS_SP_KEY_ORDER_SUM_DIS, (int) sumLength); + if (mAutopilotPlanningCallback != null) { mAutopilotPlanningCallback.updateTotalDistance(); } } @@ -572,46 +566,46 @@ public class BusPassengerModel { public void dynamicCalculateRouteInfo() { //计算当前位置和下一站的剩余点集合 //计算剩余点总里程和时间 - if (mTwoStationsRouts.size() == 0){ + if (mTwoStationsRouts.size() == 0) { calculateTwoStationsRoute(); } - if (mTwoStationsRouts.size() > 0 && mLocation != null){ - Map> lastPointsMap = CoordinateCalculateRouteUtil - .getRemainPointListByCompareNew(mPreRouteIndex,mTwoStationsRouts,mLocation); - for (int index: lastPointsMap.keySet()) { - mPreRouteIndex = index; + if (mTwoStationsRouts.size() > 0 && mLocation != null) { + Map> lastPointsMap = CoordinateCalculateRouteUtil + .getRemainPointListByCompareNew(mPreRouteIndex, mTwoStationsRouts, mLocation); + for (int index : lastPointsMap.keySet()) { + mPreRouteIndex = index; break; } - for (List lastPoints: lastPointsMap.values()){ + for (List lastPoints : lastPointsMap.values()) { CallerLogger.INSTANCE.d(M_BUS_P + TAG, "轨迹排查==lastPoints.size() = " + lastPoints.size()); float lastSumLength = 0; - if (lastPoints.size() == 1){ //只是最后一个点,计算当前位置和最后一个点的距离 - if (mNextStationIndex <= mStations.size()-1 && mNextStationIndex >= 0){ + if (lastPoints.size() == 1) { //只是最后一个点,计算当前位置和最后一个点的距离 + if (mNextStationIndex <= mStations.size() - 1 && mNextStationIndex >= 0) { BusPassengerStation stationNext = mStations.get(mNextStationIndex); lastSumLength = CoordinateUtils.calculateLineDistance( stationNext.getGcjLon(), stationNext.getGcjLat(), mLocation.getLongitude(), mLocation.getLatitude()); - }else { + } else { lastSumLength = CoordinateUtils.calculateLineDistance( lastPoints.get(0).getLongitude(), lastPoints.get(0).getLatitude(), mLocation.getLongitude(), mLocation.getLatitude()); } - }else { + } else { lastSumLength = CoordinateCalculateRouteUtil.calculateRouteSumLength(lastPoints); } - double lastTime = lastSumLength / getAverageSpeed() * 3.6 ; //秒 + double lastTime = lastSumLength / getAverageSpeed() * 3.6; //秒 CallerLogger.INSTANCE.d(M_BUS_P + TAG, "轨迹排查==lastSumLength = " + lastSumLength); - if (mAutopilotPlanningCallback != null){ - mAutopilotPlanningCallback.routePlanningToNextStationChanged((long)lastSumLength,(long) lastTime); + if (mAutopilotPlanningCallback != null) { + mAutopilotPlanningCallback.routePlanningToNextStationChanged((long) lastSumLength, (long) lastTime); } } } } - public int getAverageSpeed(){ + public int getAverageSpeed() { return BusPassengerConst.BUS_AVERAGE_SPEED; } @@ -626,19 +620,20 @@ public class BusPassengerModel { /** * 实时轨迹擦除 + * * @param isStart */ - public void startOrStopRouteAndWipe(boolean isStart){ - if (isStart){ + public void startOrStopRouteAndWipe(boolean isStart) { + if (isStart) { BusPassengerModelLoopManager.getInstance().startOrStopRouteAndWipe(); - }else { + } else { mWipePreIndex = 0; BusPassengerModelLoopManager.getInstance().stopOrStopRouteAndWipe(); } } public void loopRouteAndWipe() { - if (mRoutePoints != null && mRoutePoints.size() > 0 && mLocation != null){ + if (mRoutePoints != null && mRoutePoints.size() > 0 && mLocation != null) { int haveArrivedIndex = CoordinateCalculateRouteUtil .getArrivedPointIndexNew(mWipePreIndex, mRoutePoints, @@ -646,17 +641,18 @@ public class BusPassengerModel { mWipePreIndex = haveArrivedIndex; - CallerLogger.INSTANCE.d(M_BUS_P + TAG, "thread = "+ Thread.currentThread().getName()+" haveArrivedIndex== " + haveArrivedIndex); - if (mAutopilotPlanningCallback != null){ + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "thread = " + Thread.currentThread().getName() + " haveArrivedIndex== " + haveArrivedIndex); + if (mAutopilotPlanningCallback != null) { List routePoints = CoordinateCalculateRouteUtil - .coordinateConverterLocationToLatLng(mContext,mRoutePoints); - mAutopilotPlanningCallback.routeResult(routePoints,haveArrivedIndex); + .coordinateConverterLocationToLatLng(mContext, mRoutePoints); + mAutopilotPlanningCallback.routeResult(routePoints, haveArrivedIndex); } } } /** * 开始轮询计算剩余里程和时间 + * * @param isStart */ public void startOrStopCalculateRouteInfo(boolean isStart) { diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index a2d0ae8d4a..625a1405e9 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -34,8 +34,6 @@ import com.mogo.och.common.module.biz.constant.LoginStatusManager; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.voice.VoiceNotice; -import org.jetbrains.annotations.NotNull; - import java.util.ArrayList; import java.util.List; @@ -45,8 +43,6 @@ import system_master.SystemStatusInfo; /** * 网约车小巴 - * - * @author tongchenfei */ public class BusPresenter extends Presenter implements IRefreshBusStationsCallback, ISlidePannelHideCallback @@ -55,7 +51,7 @@ public class BusPresenter extends Presenter private static final String TAG = "BusPresenter"; private int currentAutopilotStatus = -1; - private List mStationList = new ArrayList<>(); + private final List mStationList = new ArrayList<>(); private int mCurrentStation = 0; public BusPresenter(BusFragment view) { @@ -168,9 +164,7 @@ public class BusPresenter extends Presenter } @Override - public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - int state = autopilotStatusInfo.getState(); -// CallerLogger.INSTANCE.d(M_BUS + TAG, "onStateChange: " + state + "currentAutopilotStatus = " + currentAutopilotStatus); + public void onAutopilotStatusResponse(int state) { switch (state) { case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE: if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { @@ -206,26 +200,21 @@ public class BusPresenter extends Presenter && ( (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) && OrderModel.getInstance().isGoingToNextStation() - ) ) { CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); return; } - if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE; } - runOnUIThread(() -> { - mView.onAutopilotStatusChanged(currentAutopilotStatus); - }); + runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); break; case IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING: if (FunctionBuildConfig.isDemoMode && ( (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) && OrderModel.getInstance().isGoingToNextStation() - ) ) { CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); @@ -234,9 +223,7 @@ public class BusPresenter extends Presenter if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING; } - runOnUIThread(() -> { - mView.onAutopilotStatusChanged(currentAutopilotStatus); - }); + runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); break; default: runOnUIThread(() -> mView.onAutopilotEnableChange(false)); @@ -275,8 +262,6 @@ public class BusPresenter extends Presenter /** * 测试使用 - * - * @param status */ public void debugAutoPilotStatus(int status) { AutopilotStatusInfo info = new AutopilotStatusInfo(); @@ -340,4 +325,16 @@ public class BusPresenter extends Presenter public void onStartAdasFailure() { runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); } + + @Override + public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) { + } + + @Override + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + + @Override + public void onAutopilotConnectInfo(boolean connectInfo) { + } } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt index 952df8e571..dd5ffce344 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt @@ -10,7 +10,6 @@ import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLonLat -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener @@ -77,7 +76,8 @@ object CharterPassengerModel { private var mContext: Context = AbsMogoApplication.getApp() //Model->Presenter:自动驾驶状态相关 - var mAutoStatusChnageListener = ConcurrentHashMap() + var mAutoStatusChnageListener = + ConcurrentHashMap() // 定位监听 private val mControllerStatusCallbackMap = @@ -110,17 +110,18 @@ object CharterPassengerModel { * 到站是否播报 key 线路id+业务 value 是否播报 * */ - private var broadcastList : MutableMap = HashMap() + private var broadcastList: MutableMap = HashMap() + // 到站仅一次 private val endKey = "arrivedLine" private val endKeyRequestIng = "arrivedLineRequestIng" private val ending100Key = "arrivingLine" private val min5Speak = "min5Speak" - private var carTypeChageListener: IOrderChangeCallback?=null + private var carTypeChageListener: IOrderChangeCallback? = null - private var subscribeCountDown: Disposable?=null - var switchLine5minWait: Disposable?=null + private var subscribeCountDown: Disposable? = null + var switchLine5minWait: Disposable? = null @Volatile var newCheckedSite: SiteInfoResponse.SiteInfo? = null @@ -147,7 +148,7 @@ object CharterPassengerModel { // 自动驾驶状态变化监听 CallerAutoPilotStatusListenerManager.addListener(TAG, mGoAutopilotStatusListener) // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 4 ,mMapLocationListener) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 4, mMapLocationListener) // 自动驾驶路线规划接口 返回自动驾驶轨迹 CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener) // 登录状态监听 @@ -163,6 +164,7 @@ object CharterPassengerModel { } mControllerStatusCallbackMap[tag] = callback } + fun setAutoStatusCallback(tag: String, callback: ICharterPassengerAutoStatusChangeCallback?) { if (tag.isBlank()) return if (callback == null) { @@ -213,24 +215,17 @@ object CharterPassengerModel { } } - // 前一个自动驾驶状体 - @Volatile - private var mPreAutoStatus = -1 - // 自动驾驶状态监听 private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener = object : IMoGoAutopilotStatusListener { - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - val state = autoPilotStatusInfo.state - if(mPreAutoStatus!=state){ - mPreAutoStatus = state - mAutoStatusChnageListener.forEach { - it.value.onAutoStatusChange(state) - } + override fun onAutopilotStatusResponse(state: Int) { + mAutoStatusChnageListener.forEach { + it.value.onAutoStatusChange(state) } } + override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) { - CallerLogger.d(M_BUS_P + TAG,"底盘给到站信息") + CallerLogger.d(M_BUS_P + TAG, "底盘给到站信息") arriveDest() } } @@ -260,11 +255,15 @@ object CharterPassengerModel { .coordinateConverterWgsToGcjLocations(mContext, routePoints) mRoutePoints = latLngModels } - fun cleanRoutePoints(){ + + fun cleanRoutePoints() { mRoutePoints = null } - fun setStatusChangeListener(tag:String,orderStatusChangeListener: IOrderStatusChangeListener?) { + fun setStatusChangeListener( + tag: String, + orderStatusChangeListener: IOrderStatusChangeListener? + ) { if (tag.isBlank()) return if (orderStatusChangeListener == null) { orderStatusChangeListeners.remove(tag) @@ -272,7 +271,8 @@ object CharterPassengerModel { } orderStatusChangeListeners[tag] = orderStatusChangeListener } - fun setStationDistanceListener(tag:String,orderStatusChangeListener: IDistanceCallback?) { + + fun setStationDistanceListener(tag: String, orderStatusChangeListener: IDistanceCallback?) { if (tag.isBlank()) return if (orderStatusChangeListener == null) { stationDistanceListener.remove(tag) @@ -280,7 +280,8 @@ object CharterPassengerModel { } stationDistanceListener[tag] = orderStatusChangeListener } - fun setOrderLeftTimeListeners(tag:String,orderStatusChangeListener: ITimeCallback?) { + + fun setOrderLeftTimeListeners(tag: String, orderStatusChangeListener: ITimeCallback?) { if (tag.isBlank()) return if (orderStatusChangeListener == null) { orderLeftTimeListeners.remove(tag) @@ -291,14 +292,15 @@ object CharterPassengerModel { orderStatusChangeListener.setOrderTimeCallBack(leftTime) } - fun setCarTypeChangeListener(carTypeChageListener: IOrderChangeCallback?){ + fun setCarTypeChangeListener(carTypeChageListener: IOrderChangeCallback?) { this.carTypeChageListener = carTypeChageListener } fun getCurrentOrderStatus(): OrderStatusEnum { return this.orderStatus } - fun getCurrentOrderInfo():OrderInfoResponse.OrderInfo?{ + + fun getCurrentOrderInfo(): OrderInfoResponse.OrderInfo? { return orderInfo } // endregion @@ -357,13 +359,13 @@ object CharterPassengerModel { BusPassengerServiceManager.queryOrderInfo( mContext, object : OchCommonServiceCallback { override fun onSuccess(data: OrderInfoResponse?) { - CallerLogger.d(M_BUS_P+TAG,"订单信息:$data") - if (data?.data == null){ - if(orderInfo!=null){ + CallerLogger.d(M_BUS_P + TAG, "订单信息:$data") + if (data?.data == null) { + if (orderInfo != null) { // 启动车辆服务状态 startCarStatusLoop() } - }else { + } else { // 判断是否有订单 ordrLagic(data.data) } @@ -382,21 +384,26 @@ object CharterPassengerModel { // 有订单有线路后结束轮训 orderData.let { order -> //设置车模 - if (this.orderInfo?.productType!=orderData.productType) { + if (this.orderInfo?.productType != orderData.productType) { this.carTypeChageListener?.setCarChangeListener(orderData.productType) - CallerLogger.d(M_BUS_P+TAG,"设置车模") + CallerLogger.d(M_BUS_P + TAG, "设置车模") } - if(this.orderInfo?.siteId!=orderData.siteId){ + if (this.orderInfo?.siteId != orderData.siteId) { val coordinateConverterWgsToGcj = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj( mContext, order.wgs84Lon!!, order.wgs84Lat!! ) - this.carTypeChageListener?.setEndStationCallBack(order.siteId,order.siteName,coordinateConverterWgsToGcj.longitude,coordinateConverterWgsToGcj.latitude) + this.carTypeChageListener?.setEndStationCallBack( + order.siteId, + order.siteName, + coordinateConverterWgsToGcj.longitude, + coordinateConverterWgsToGcj.latitude + ) } this.orderInfo?.orderNo?.let { - if(it!=orderData.orderNo){ + if (it != orderData.orderNo) { // orderNo 变后清理 SharedPrefs.getInstance(mContext).remove("${it}$min5Speak") } @@ -413,7 +420,7 @@ object CharterPassengerModel { this.orderInfo = orderData setOrderStatus(OrderStatusEnum.OrdersWithLine) updateAutopilotControlParameters() - }else{ + } else { this.orderInfo = orderData } //计算终点距离 @@ -433,7 +440,7 @@ object CharterPassengerModel { ) // 小于15m到站 if (calculateLineDistance < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE && calculateLineDistance > 0) { - CallerLogger.d(M_BUS_P + TAG,"小于15米到站1") + CallerLogger.d(M_BUS_P + TAG, "小于15米到站1") arriveDest() } if (calculateLineDistance < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE && calculateLineDistance > 0) { @@ -450,7 +457,7 @@ object CharterPassengerModel { fun hasSetLineAndSite(): Pair? { orderInfo?.let { if (it.lineId != null && it.lineId > 0 && it.siteId != null && it.siteId!! > 0) { - if(it.arriveStatus==OrderInfoResponse.ARRIVED){ + if (it.arriveStatus == OrderInfoResponse.ARRIVED) { return null } val lineInfo = LineInfoResponse.LineInfo(it.lineName, it.lineId) @@ -471,7 +478,8 @@ object CharterPassengerModel { } return null } - fun hasOrder():Boolean{ + + fun hasOrder(): Boolean { return orderInfo != null } // endregion @@ -542,7 +550,7 @@ object CharterPassengerModel { private fun startCalibrationLoop() { BusPassengerModelLoopManager.setLoopFunction( TAGCALIBRATION, - LoopInfo(120, ::queryBusinessTime,immediately = true) + LoopInfo(120, ::queryBusinessTime, immediately = true) ) CallerLogger.d(M_BUS_P + TAG, "启动时间校准轮询") } @@ -572,42 +580,43 @@ object CharterPassengerModel { } val leadTime = endlast / 1000 subscribeCountDown = - Observable.intervalRange(0L, leadTime, 0, 5, TimeUnit.SECONDS) - .map { aLong -> leadTime - aLong } - .subscribeOn(Schedulers.io()) - .observeOn(Schedulers.io()) - .subscribe{millisUntilFinished-> - if (millisUntilFinished <= 300L) { - orderInfo?.let { - val isPlayed = SharedPrefs.getInstance(mContext) - .getBoolean("${it.orderNo}$min5Speak", false) - if (!isPlayed) { - //发送 通知 - OCHSocketMessageManager.pushAppOperationalMsgBox( - DateTimeUtil.getCurrentTimeStamp(), - AbsMogoApplication.getApp() - .getString(R.string.m1_end_order_5min), 2 - ) - VoiceManager.surplus5min(VoiceFocusManager.getVoiceCmdCallBack()) - CallerLogger.d(M_BUS_P+ TAG,"倒计时5分钟${it.orderNo}") - SharedPrefs.getInstance(mContext).putBoolean("${it.orderNo}$min5Speak",true) + Observable.intervalRange(0L, leadTime, 0, 5, TimeUnit.SECONDS) + .map { aLong -> leadTime - aLong } + .subscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe { millisUntilFinished -> + if (millisUntilFinished <= 300L) { + orderInfo?.let { + val isPlayed = SharedPrefs.getInstance(mContext) + .getBoolean("${it.orderNo}$min5Speak", false) + if (!isPlayed) { + //发送 通知 + OCHSocketMessageManager.pushAppOperationalMsgBox( + DateTimeUtil.getCurrentTimeStamp(), + AbsMogoApplication.getApp() + .getString(R.string.m1_end_order_5min), 2 + ) + VoiceManager.surplus5min(VoiceFocusManager.getVoiceCmdCallBack()) + CallerLogger.d(M_BUS_P + TAG, "倒计时5分钟${it.orderNo}") + SharedPrefs.getInstance(mContext) + .putBoolean("${it.orderNo}$min5Speak", true) + } } } - } - if(orderInfo==null){ - subscribeCountDown?.let { - if (!it.isDisposed) { - it.dispose() + if (orderInfo == null) { + subscribeCountDown?.let { + if (!it.isDisposed) { + it.dispose() + } } + invokeOrderLeftTimeListeners(-1) + invokeStationDistanceListener(-1, -1) + } else { + invokeOrderLeftTimeListeners(millisUntilFinished) } - invokeOrderLeftTimeListeners(-1) - invokeStationDistanceListener(-1,-1) - }else{ - invokeOrderLeftTimeListeners(millisUntilFinished) + CallerLogger.d(M_BUS_P + TAG, "订单倒计时${millisUntilFinished}") } - CallerLogger.d(M_BUS_P + TAG, "订单倒计时${millisUntilFinished}") - } } } @@ -627,9 +636,12 @@ object CharterPassengerModel { //设置全局轨迹信息 locusInfo = data.data - CallerLogger.d(M_BUS_P+TAG,"查询自动驾驶轨迹信息") - CallerLogger.d(M_BUS_P+TAG,GsonUtil.jsonFromObject( - locusInfo)) + CallerLogger.d(M_BUS_P + TAG, "查询自动驾驶轨迹信息") + CallerLogger.d( + M_BUS_P + TAG, GsonUtil.jsonFromObject( + locusInfo + ) + ) } override fun onFail(code: Int, msg: String) { @@ -667,15 +679,15 @@ object CharterPassengerModel { mLocationGCJ02?.let { orderInfo?.let { order -> CallerLogger.d(M_BUS_P + "calculateDistance", "订单信息:$order") - if(order.siteId==null||order.siteId==0L|| - order.wgs84Lat==null||order.wgs84Lat==0.0|| - order.wgs84Lon==null||order.wgs84Lon==0.0 - ){ + if (order.siteId == null || order.siteId == 0L || + order.wgs84Lat == null || order.wgs84Lat == 0.0 || + order.wgs84Lon == null || order.wgs84Lon == 0.0 + ) { CallerLogger.d(M_BUS_P + "calculateDistance", "站点信息未获得") return } newCheckedSite?.let { - if(it.siteId!=order.siteId){ + if (it.siteId != order.siteId) { CallerLogger.d(M_BUS_P + "calculateDistance", "站点和已选不吻合") return } @@ -699,46 +711,52 @@ object CharterPassengerModel { mogoLocation.latitude ) CallerLogger.d(M_BUS_P + "calculateDistance", "两点距离和站点的直线距离:${lastSumLength}") - if(lastSumLength>100) { - if (mRoutePoints==null||mRoutePoints?.size == 0){ + if (lastSumLength > 100) { + if (mRoutePoints == null || mRoutePoints?.size == 0) { //ToastCharterUtils.showLong("缺少轨迹数据暂停计算") - CallerLogger.d(M_BUS_P + "calculateDistance两点距离", + CallerLogger.d( + M_BUS_P + "calculateDistance两点距离", "缺少轨迹数据" ) return } // 计算距离 - val templastSumLength = + val templastSumLength = CoordinateCalculateRouteUtil.calculateRouteSumLength( mRoutePoints, it, mogoLocation ) - CallerLogger.d(M_BUS_P + TAG, "使用轨迹轨迹:${mRoutePoints?.size}--第一个点${mRoutePoints!![0]}--最后一个点:${mRoutePoints!!.last()}") + CallerLogger.d( + M_BUS_P + TAG, + "使用轨迹轨迹:${mRoutePoints?.size}--第一个点${mRoutePoints!![0]}--最后一个点:${mRoutePoints!!.last()}" + ) CallerLogger.d(M_BUS_P + "calculateDistance", "轨迹计算的距离$templastSumLength") - if(templastSumLength>100){ + if (templastSumLength > 100) { lastSumLength = templastSumLength } } - val lastTime: Double = lastSumLength / CharterPassengerConst.Charter_AVERAGE_SPEED * 3.6 //秒 + val lastTime: Double = + lastSumLength / CharterPassengerConst.Charter_AVERAGE_SPEED * 3.6 //秒 - CallerLogger.d(M_BUS_P + "calculateDistance", + CallerLogger.d( + M_BUS_P + "calculateDistance", "最终信息:lastSumLength: ${lastSumLength}lastTime : $lastTime thread = ${Thread.currentThread().name}" ) - if (lastSumLength < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE&&lastSumLength>0) { - CallerLogger.d(M_BUS_P + TAG,"小于100米到站2") + if (lastSumLength < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE && lastSumLength > 0) { + CallerLogger.d(M_BUS_P + TAG, "小于100米到站2") arriveDestSoon() } - if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE&&lastSumLength>0) { - CallerLogger.d(M_BUS_P + TAG,"小于15米到站2") + if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE && lastSumLength > 0) { + CallerLogger.d(M_BUS_P + TAG, "小于15米到站2") arriveDest() return } - if(order.arriveStatus==OrderInfoResponse.ARRIVING) { + if (order.arriveStatus == OrderInfoResponse.ARRIVING) { invokeStationDistanceListener(lastSumLength.toLong(), lastTime.toLong()) - }else{ - invokeStationDistanceListener(-1,-1) + } else { + invokeStationDistanceListener(-1, -1) } } } @@ -748,7 +766,7 @@ object CharterPassengerModel { private fun setOrderStatus(orderStatus: OrderStatusEnum) { if (this.orderStatus != orderStatus) { - CallerLogger.d(M_BUS_P + TAG,"${this.orderInfo?.orderNo}新的状态:$orderStatus") + CallerLogger.d(M_BUS_P + TAG, "${this.orderInfo?.orderNo}新的状态:$orderStatus") this.orderStatus = orderStatus for (callback in orderStatusChangeListeners.values) { callback.onStatusChange(this.orderStatus) @@ -756,10 +774,10 @@ object CharterPassengerModel { } } - fun setEndOrderStatus(){ + fun setEndOrderStatus() { UiThreadHandler.postDelayed({ setOrderStatus(OrderStatusEnum.NoOrderUse) - },1000) + }, 1000) } /** @@ -786,16 +804,16 @@ object CharterPassengerModel { val calculateLineDistanceNext = CoordinateUtils.calculateLineDistance( currentInfo.longitude, currentInfo.latitude, - data[index+1].GcjLon!!, - data[index+1].GcjLat!! + data[index + 1].GcjLon!!, + data[index + 1].GcjLat!! ) - if(calculateLineDistanceNext= 2) { @@ -815,7 +833,7 @@ object CharterPassengerModel { middle = mutableEntry.value break } - if(middle==0){ + if (middle == 0) { return Pair(1, false) } mLocationGCJ02?.let { @@ -824,7 +842,7 @@ object CharterPassengerModel { // middle middle+1 // middle-1 middle-2 // middle+1 middle+2 - if(middle-1>=0) { + if (middle - 1 >= 0) { val degree = CoordinateCalculateRouteUtil.getDegree( it.longitude, it.latitude, data.get(middle).GcjLon!!, data.get(middle).GcjLat!!, @@ -834,17 +852,17 @@ object CharterPassengerModel { return Pair(middle, false) } } - if(middle+1 90) { - return Pair(middle+1, false) + return Pair(middle + 1, false) } } - if(middle-2>=0) { + if (middle - 2 >= 0) { val degree = CoordinateCalculateRouteUtil.getDegree( it.longitude, it.latitude, data.get(middle - 1).GcjLon!!, data.get(middle - 1).GcjLat!!, @@ -854,11 +872,11 @@ object CharterPassengerModel { return Pair(middle - 1, false) } } - if(middle+2 90) { return Pair(middle + 2, false) @@ -876,21 +894,29 @@ object CharterPassengerModel { BusPassengerServiceManager.endOrder(mContext, it, callback) } } - fun getLineTrajectory(lineId: Long,callback: OchCommonServiceCallback?) { + + fun getLineTrajectory(lineId: Long, callback: OchCommonServiceCallback?) { BusPassengerServiceManager.queryLineLocation(mContext, lineId = lineId.toString(), callback) } @Synchronized fun arriveDest() { val (order, lineId, siteId) = getOrderInfo() - if(order!=null&&lineId!=null&&siteId!=null){ + if (order != null && lineId != null && siteId != null) { val requestSuccessSign = "${siteId}$endKey" val requestIngSign = "${siteId}$endKeyRequestIng"//正在请求中 - CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, - "requestSuccessSign${isSuccess(requestSuccessSign)}---requestIngSign${isSuccess(requestIngSign)}") + CallerLogger.d( + M_BUS_P + BaseDPMsg.TAG, + "requestSuccessSign${isSuccess(requestSuccessSign)}---requestIngSign${ + isSuccess( + requestIngSign + ) + }" + ) if (order.arriveStatus == OrderInfoResponse.ARRIVING) { - if (isSuccess(requestSuccessSign)&&//true 请求还没有成功 false 请求成功 - isSuccess(requestIngSign)) {// true 还没有正在请求 false 正在请求中 + if (isSuccess(requestSuccessSign) &&//true 请求还没有成功 false 请求成功 + isSuccess(requestIngSign) + ) {// true 还没有正在请求 false 正在请求中 val currentTimeStamp = DateTimeUtil.getCurrentTimeStamp() broadcastList[requestIngSign] = true //正在请求中 BusPassengerServiceManager.arriveDest( @@ -898,23 +924,23 @@ object CharterPassengerModel { lindId = lineId, writtenVersion = currentTimeStamp, object : OchCommonServiceCallback { - override fun onSuccess(data: BaseData?) { - if (null != data && 0 == data.code) { - arrivedDeskSuccess(currentTimeStamp,true) - broadcastList[requestIngSign] = false - } - } - - override fun onFail(code: Int, msg: String) { - ToastCharterUtils.showShort("$code:$msg") + override fun onSuccess(data: BaseData?) { + if (null != data && 0 == data.code) { + arrivedDeskSuccess(currentTimeStamp, true) broadcastList[requestIngSign] = false } + } - override fun onError() { - super.onError() - broadcastList[requestIngSign] = false - } - }) + override fun onFail(code: Int, msg: String) { + ToastCharterUtils.showShort("$code:$msg") + broadcastList[requestIngSign] = false + } + + override fun onError() { + super.onError() + broadcastList[requestIngSign] = false + } + }) } } } @@ -922,16 +948,16 @@ object CharterPassengerModel { fun arrivedDeskSuccess( currentTimeStamp: Long, - needSendDriver:Boolean + needSendDriver: Boolean ) { val (order, lineId, siteId) = getOrderInfo() val requestSuccessSign = "${siteId}$endKey" - if (!isSuccess(requestSuccessSign)){ + if (!isSuccess(requestSuccessSign)) { return } - if(order!=null&&lineId!=null&&siteId!=null){ + if (order != null && lineId != null && siteId != null) { VoiceManager.arrivedStation( order.siteName!!, order.siteNameKr ?: "", @@ -948,7 +974,7 @@ object CharterPassengerModel { order.startSiteId ?: 0, order.startSiteName ?: "", siteId.toInt(), - order.siteName?:"", + order.siteName ?: "", true, OrderInfoResponse.ARRIVED, currentTimeStamp @@ -972,15 +998,15 @@ object CharterPassengerModel { } } - private fun getOrderInfo():Triple{ - this.orderInfo?.let { order-> + private fun getOrderInfo(): Triple { + this.orderInfo?.let { order -> this.orderInfo?.lineId?.let { lineId -> this.orderInfo?.siteId?.let { siteId -> - return Triple(order,lineId,siteId) + return Triple(order, lineId, siteId) } } } - return Triple(null,null,null) + return Triple(null, null, null) } @Synchronized @@ -989,7 +1015,8 @@ object CharterPassengerModel { order.siteId?.let { siteId -> if (order.arriveStatus == OrderInfoResponse.ARRIVING) { if (isSuccess("${siteId}$ending100Key")) { - val string = mContext.getString(R.string.arrived_station_left_100,order.siteName) + val string = + mContext.getString(R.string.arrived_station_left_100, order.siteName) VoiceNotice.showNotice(string) broadcastList["${siteId}$ending100Key"] = true } @@ -1025,8 +1052,12 @@ object CharterPassengerModel { } fun leaveStation() { - orderInfo?.siteName?.let {cn-> - VoiceManager.leaveStation(cn,orderInfo?.siteNameKr?:"", VoiceFocusManager.getVoiceCmdCallBack()) + orderInfo?.siteName?.let { cn -> + VoiceManager.leaveStation( + cn, + orderInfo?.siteNameKr ?: "", + VoiceFocusManager.getVoiceCmdCallBack() + ) } } @@ -1050,14 +1081,17 @@ object CharterPassengerModel { return } orderInfo?.let { - if(it.arriveStatus==OrderInfoResponse.ARRIVED){ + if (it.arriveStatus == OrderInfoResponse.ARRIVED) { ToastCharterUtils.showLong("已到达目的地请重新选择线路") return } val parameters = initAutopilotControlParameters() if (null == parameters) { ToastCharterUtils.showShort("请选择站点") - CallerLogger.e(SceneConstant.M_BUS + TAG, "行程日志-AutopilotControlParameters is empty.") + CallerLogger.e( + SceneConstant.M_BUS + TAG, + "行程日志-AutopilotControlParameters is empty." + ) return } ToastCharterUtils.showShort("启动自动驾驶中") @@ -1118,12 +1152,14 @@ object CharterPassengerModel { fun sendTripInfo() { //发送前后屏出站消息 3:代表出站 orderInfo?.let { - CharterSendTripInfoManager.sendCharterTripInfo(LEAVE_STATION, - it.lineName!!,it.startSiteName!!,it.siteName!!,false) + CharterSendTripInfoManager.sendCharterTripInfo( + LEAVE_STATION, + it.lineName!!, it.startSiteName!!, it.siteName!!, false + ) } } - private fun invokeOrderLeftTimeListeners(timeInSecond: Long){ + private fun invokeOrderLeftTimeListeners(timeInSecond: Long) { leftTime = timeInSecond UiThreadHandler.post({ for (value in orderLeftTimeListeners.values) { @@ -1132,7 +1168,7 @@ object CharterPassengerModel { }, UiThreadHandler.MODE.QUEUE) } - private fun invokeStationDistanceListener(meters:Long , timeInSecond:Long){ + private fun invokeStationDistanceListener(meters: Long, timeInSecond: Long) { var tempMeters = meters var tempTimeInSecond = timeInSecond if (orderInfo?.arriveStatus == OrderInfoResponse.ARRIVED) { @@ -1141,7 +1177,7 @@ object CharterPassengerModel { } UiThreadHandler.post({ for (value in stationDistanceListener.values) { - value.setDistancecAndTime(tempMeters,tempTimeInSecond) + value.setDistancecAndTime(tempMeters, tempTimeInSecond) } }, UiThreadHandler.MODE.QUEUE) diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt index 65ba8385e8..0b82c76464 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt @@ -9,7 +9,6 @@ import android.view.ViewGroup import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import chassis.ChassisStatesOuterClass -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoBatteryManagementSystemListener @@ -25,7 +24,6 @@ import com.mogo.eagle.core.utilcode.util.ClickUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.event.DebugView -import com.mogo.och.bus.passenger.model.CharterPassengerModel import kotlinx.android.synthetic.main.m1_statusview_datetime.view.* import me.jessyan.autosize.utils.AutoSizeUtils import org.greenrobot.eventbus.EventBus @@ -47,8 +45,6 @@ class StatusBarView @JvmOverloads constructor( private var mHits = LongArray(COUNTS) - private var preStatus = -1 - private fun continuousClick(type:String) { //每次点击时,数组向前移动一位 System.arraycopy(mHits, 1, mHits, 0, mHits.size - 1) @@ -94,14 +90,10 @@ class StatusBarView @JvmOverloads constructor( tv_power_cos.text = "50%" val state = CallerAutoPilotStatusListenerManager.getState() - setAutoPilotSatusInfo(state) + setAutoPilotStatusInfo(state) } - private fun setAutoPilotSatusInfo(state: Int) { - if(preStatus==state){ - return - } - preStatus = state + private fun setAutoPilotStatusInfo(state: Int) { when (state) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> { actv_auto_status.text = "安全接管中" @@ -126,9 +118,9 @@ class StatusBarView @JvmOverloads constructor( } } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { + override fun onAutopilotStatusResponse(state: Int) { UiThreadHandler.post { - setAutoPilotSatusInfo(autoPilotStatusInfo.state) + setAutoPilotStatusInfo(state) } } diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt index 2b13464cfd..085738af28 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt @@ -10,7 +10,6 @@ import com.magic.mogo.och.charter.fragment.DriverM1Fragment import com.magic.mogo.och.charter.manager.CharterTrajectoryManager import com.magic.mogo.och.charter.model.DriverM1Model import com.mogo.commons.mvp.Presenter -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager @@ -36,8 +35,9 @@ class DriverM1Presenter(view: DriverM1Fragment?) : IMoGoAutopilotStatusListener, StopSideStatusManager.OCHPlanningActionsCallback, IDriverM1ControllerStatusCallback { - private val TAG = DriverM1Presenter::class.java.name - private var mCurrentAutopilotStatus : Int = -1 + companion object{ + private const val TAG = "DriverM1Presenter" + } init { DriverM1Model.get().init(context) @@ -139,19 +139,14 @@ class DriverM1Presenter(view: DriverM1Fragment?) : DriverM1Model.get().onAutopilotArriveAtStation() } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - val status = autoPilotStatusInfo.state - if (mCurrentAutopilotStatus == status) return - - mView?.onAutopilotStatusChanged(status) - mCurrentAutopilotStatus = status - when(status){ - + override fun onAutopilotStatusResponse(state: Int) { + mView?.onAutopilotStatusChanged(state) + when(state){ // IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> { // // // } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING ->{ - DriverM1Model.get().triggerStartServiceEvent(false,true) + DriverM1Model.get().triggerStartServiceEvent(isRestart = false, send = true) } // IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE ->{ // @@ -187,14 +182,12 @@ class DriverM1Presenter(view: DriverM1Fragment?) : } override fun startOpenAutopilot() { - mCurrentAutopilotStatus = -1 ThreadUtils.runOnUiThread { mView?.startAutopilotAnimation() } } override fun onStartAdasFailure() { - mCurrentAutopilotStatus = -1 ThreadUtils.runOnUiThread { mView?.stopAnimAndUpdateBtnStatus() } 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 b5f9fffc80..6b669203e9 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 @@ -300,12 +300,10 @@ class PM2DrivingModel private constructor() { private val mAutoPilotStatusListener: IMoGoAutopilotStatusListener = object : IMoGoAutopilotStatusListener { - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - super.onAutopilotStatusResponse(autoPilotStatusInfo) - val status = autoPilotStatusInfo.state - if (mCurrentAutoStatus == status) return - d(SceneConstant.M_BUS_P+TAG, "onAutopilotStatusResponse ===== $status") - if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != status){ + override fun onAutopilotStatusResponse(state: Int) { //todo yakun 检查逻辑 + super.onAutopilotStatusResponse(state) + d(SceneConstant.M_BUS_P+TAG, "onAutopilotStatusResponse ===== $state") + if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != state){ //美化模式下且行程中 if (FunctionBuildConfig.isDemoMode && mNextStationIndex>= 0 && mNextStationIndex <= mStations.size - 1 @@ -314,11 +312,9 @@ class PM2DrivingModel private constructor() { }else{//非美化模式下 mAutoStatusCallback?.updateAutoStatus(false) } - }else{//自驾状态 2 mAutoStatusCallback?.updateAutoStatus(true) } - mCurrentAutoStatus = status } } diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 0a10e5b41f..fa13468212 100644 --- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -167,14 +167,14 @@ public class BusPresenter extends Presenter @Override public void onAutopilotSNRequest() { - } @Override public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - if (autopilotStatusInfo == null) return; - int state = autopilotStatusInfo.getState(); -// CallerLogger.INSTANCE.d(M_BUS + TAG, "onStateChange: " + state + "currentAutopilotStatus = " + currentAutopilotStatus); + } + + @Override + public void onAutopilotStatusResponse(int state) { switch (state) { case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE: if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { @@ -210,26 +210,21 @@ public class BusPresenter extends Presenter && ( (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) && OrderModel.getInstance().isGoingToNextStation() - ) ) { CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); return; } - if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE; } - runOnUIThread(() -> { - mView.onAutopilotStatusChanged(currentAutopilotStatus); - }); + runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); break; case IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING: if (FunctionBuildConfig.isDemoMode && ( (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) && OrderModel.getInstance().isGoingToNextStation() - ) ) { CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); @@ -238,9 +233,7 @@ public class BusPresenter extends Presenter if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING; } - runOnUIThread(() -> { - mView.onAutopilotStatusChanged(currentAutopilotStatus); - }); + runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); break; default: runOnUIThread(() -> mView.onAutopilotEnableChange(false)); @@ -279,8 +272,6 @@ public class BusPresenter extends Presenter /** * 测试使用 - * - * @param status */ public void debugAutoPilotStatus(int status) { AutopilotStatusInfo info = new AutopilotStatusInfo(); @@ -345,4 +336,12 @@ public class BusPresenter extends Presenter public void onStartAdasFailure() { runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); } + + @Override + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + + @Override + public void onAutopilotConnectInfo(boolean connectInfo) { + } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 900c304582..0979e5a4b9 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -109,7 +109,6 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback } private Context mContext; - private volatile int mPrevAPStatus = -1; //前一次自动驾驶状态值 private volatile TaxiPassengerOrderQueryRespBean.Result mCurrentOCHOrder; //当前订单 private volatile List mInServiceList = Collections.emptyList(); //进行中订单 private volatile List mWaitServiceList = Collections.emptyList(); //待服务订单 @@ -500,8 +499,15 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){ @Override - public void onAutopilotRouteLineId(long lineId) { + public void onAutopilotConnectInfo(boolean connectInfo) { + } + @Override + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + + @Override + public void onAutopilotRouteLineId(long lineId) { } @Override @@ -510,31 +516,26 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback @Override public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo) { + } + @Override + public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { } private boolean arriveAtEnd = false; //乘客app专用字段 @Override - public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - int state = autopilotStatusInfo.getState(); + public void onAutopilotStatusResponse(int state) { // CallerLogger.INSTANCE.d( M_TAXI_P + TAG, "state = %s", state ); if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning(); if (mCurrentOCHOrder != null - && getCurOrderStatus() == TaxiPassengerOrderStatusEnum.UserArriveAtStart - && state != mPrevAPStatus) { - + && getCurOrderStatus() == TaxiPassengerOrderStatusEnum.UserArriveAtStart) { TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotEvent(false, true, mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); - - // 当高频返回autopilot 2时,不重复调用订单状态变更 - mPrevAPStatus = state; // 每个状态单独赋值,解决无订单时已经是2的状态导致的新订单来时无法进入此逻辑更新状态 startServicePilotDone(); } } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { - mPrevAPStatus = state; - if (FunctionBuildConfig.isDemoMode && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { // 当美化模式(演示模式)开启时:且是乘客app、且未到终点时,维持自动驾驶icon开启状态 @@ -544,11 +545,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback arriveAtEnd = false; } } - if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotEnable(); } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { - mPrevAPStatus = state; - if (FunctionBuildConfig.isDemoMode && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { // 当美化模式(演示模式)开启时:且是乘客app、且未到终点时,维持自动驾驶icon开启状态 @@ -558,14 +556,12 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback arriveAtEnd = false; } } - if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable(); } } @Override public void onAutopilotSNRequest() { - } @Override @@ -586,7 +582,6 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback @Override public void onAutopilotStatusRespByQuery(@NonNull SystemStatusInfo.StatusInfo status) { - } }; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index a5525aa653..23918b418c 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -1,5 +1,10 @@ package com.mogo.och.taxi.model; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_OCH_TAXI_START_AUTOPILOT; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_SOURCE_ADAS; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_SOCKET_AUTOPILOT; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; + import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; @@ -91,11 +96,6 @@ import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; import system_master.SystemStatusInfo; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_OCH_TAXI_START_AUTOPILOT; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_SOURCE_ADAS; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_SOCKET_AUTOPILOT; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; - /** * Created by pangfan on 2021/8/19 *

@@ -114,7 +114,6 @@ public class TaxiModel { } private Context mContext; - private volatile int mPrevAPStatus = -1; //前一次自动驾驶状态值 private volatile String mPrevOrderNo = ""; //前一次的新到单id(当次和前一次orderId相同时,本次不再弹出) private volatile OrderQueryRespBean.Result mNewBookingOrder; //新到待抢预约单 private volatile OrderQueryRespBean.Result mCurrentOCHOrder; //当前订单 @@ -133,7 +132,7 @@ public class TaxiModel { private int mPreRouteIndex = 0; private double mLongitude, mLatitude; - private MogoLocation mLocation = null; + private MogoLocation mLocation = null; private LoginService loginService; @@ -248,13 +247,13 @@ public class TaxiModel { @Override public void onMsgReceived(OCHOperationalMessage obj) { - if (obj == null){ + if (obj == null) { CallerLogger.INSTANCE.d(M_TAXI + TAG, "onMsgReceived = null"); return; } - CallerLogger.INSTANCE.d(M_TAXI + TAG, "onMsgReceived = "+obj.getMessage()); + CallerLogger.INSTANCE.d(M_TAXI + TAG, "onMsgReceived = " + obj.getMessage()); OCHSocketMessageManager.INSTANCE.pushAppOperationalMsgBox(obj.getPushTimeStamp(), - obj.getMessage(),OCHSocketMessageManager.OPERATION_SYSTEM); + obj.getMessage(), OCHSocketMessageManager.OPERATION_SYSTEM); } }; @@ -288,11 +287,11 @@ public class TaxiModel { //更新接单状态 public void updateCarStatus() { - if(!LoginStatusManager.isLogin()){ + if (!LoginStatusManager.isLogin()) { loginService.queryLoginStatusByNet(); return; } - TaxiServiceManager.changeOrderServing(mContext,TaxtServingStatusManager.isOpeningOrderStatus(), + TaxiServiceManager.changeOrderServing(mContext, TaxtServingStatusManager.isOpeningOrderStatus(), new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { @@ -347,8 +346,8 @@ public class TaxiModel { //1.1.2. 当本地有currentOrder: //orderId不一致时:通过currentOrder.orderId查询订单状态,并通知ui更新 //orderId一致且orderStatus不一致时:则更新currentOrder,并通知ui更新 - CallerLogger.INSTANCE.d(M_TAXI + TAG,"AutopilotControl-mCurrentOCHOrder = "+mCurrentOCHOrder.orderStatus - + ", orderStatus = " +data.data.servicing.get(0).orderStatus); + CallerLogger.INSTANCE.d(M_TAXI + TAG, "AutopilotControl-mCurrentOCHOrder = " + mCurrentOCHOrder.orderStatus + + ", orderStatus = " + data.data.servicing.get(0).orderStatus); if (!mCurrentOCHOrder.orderNo.equals(data.data.servicing.get(0).orderNo)) { queryCurOrderStatus(); } else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) { @@ -460,7 +459,7 @@ public class TaxiModel { @Override public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); + ToastUtilsOch.showWithCodeMessage(code, msg); } }); } @@ -489,7 +488,7 @@ public class TaxiModel { @Override public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); + ToastUtilsOch.showWithCodeMessage(code, msg); } }); } @@ -543,7 +542,7 @@ public class TaxiModel { @Override public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); + ToastUtilsOch.showWithCodeMessage(code, msg); } }); } @@ -637,7 +636,7 @@ public class TaxiModel { @Override public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); + ToastUtilsOch.showWithCodeMessage(code, msg); } }); } @@ -731,7 +730,7 @@ public class TaxiModel { @Override public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); + ToastUtilsOch.showWithCodeMessage(code, msg); } }); } @@ -747,7 +746,7 @@ public class TaxiModel { TaxiServiceManager.confirmAutopilotConditionByDriver(mContext, mCurrentOCHOrder.orderNo, result, - new OchCommonServiceCallback(){ + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -761,19 +760,19 @@ public class TaxiModel { }); } - public void updateAutopilotStatus(boolean isSafe){ - if (mOrderStatusCallback != null){ + public void updateAutopilotStatus(boolean isSafe) { + if (mOrderStatusCallback != null) { mOrderStatusCallback.onDriverHasCheckedPilotCondition(isSafe); } } - public void queryAutopilotStatus(boolean isStart){ - if (isStart){ + public void queryAutopilotStatus(boolean isStart) { + if (isStart) { queryAutopilotStatus(); } } - public void queryAutopilotStatus(){ + public void queryAutopilotStatus() { if (mCurrentOCHOrder == null) return; TaxiServiceManager.queryAutopilotStatus(mContext, mCurrentOCHOrder.orderNo, new OchCommonServiceCallback() { @@ -819,7 +818,7 @@ public class TaxiModel { SharedPrefsMgr.getInstance(mContext).putString(TaxiConst.SP_KEY_OCH_TAXI_ORDER, GsonUtil.jsonFromObject(data)); - if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()){ + if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()) { if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; @@ -830,7 +829,7 @@ public class TaxiModel { updateAutopilotControlParameters(); } - if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.getCode()){ + if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.getCode()) { if (FunctionBuildConfig.isDemoMode) { CallerLogger.INSTANCE.d(M_TAXI + TAG, "setIPCDemoMode:false"); CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(false); @@ -846,7 +845,7 @@ public class TaxiModel { private void updateAutopilotControlParameters() { AutopilotControlParameters parameters = initAutopilotControlParameters(); - if (null == parameters){ + if (null == parameters) { CallerLogger.INSTANCE.e(M_TAXI + TAG, "AutopilotControlParameters is empty."); return; } @@ -854,7 +853,7 @@ public class TaxiModel { CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters); } - private void clearAutopilotControlParameters(){ + private void clearAutopilotControlParameters() { CallerLogger.INSTANCE.d(M_TAXI + TAG, "AutopilotControlParameters is clear."); CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null); } @@ -905,19 +904,19 @@ public class TaxiModel { //根据开关和后台是否发布轨迹启动自驾 if (FunctionBuildConfig.isPassStartAutopilotCommand && TextUtils.isEmpty(mCurrentOCHOrder.csvFileUrl) - && TextUtils.isEmpty(mCurrentOCHOrder.csvFileUrlDPQP)){ + && TextUtils.isEmpty(mCurrentOCHOrder.csvFileUrlDPQP)) { ToastUtils.showLong("无发布轨迹, 请发布后重试"); CallerLogger.INSTANCE.e(M_TAXI + TAG, "isPassStartAutopilotCommand = " + FunctionBuildConfig.isPassStartAutopilotCommand - + "busRoutesResult.csvFileUrl = "+ mCurrentOCHOrder.csvFileUrl - + "busRoutesResult.csvFileUrlDPQP = "+mCurrentOCHOrder.csvFileUrlDPQP); + + "busRoutesResult.csvFileUrl = " + mCurrentOCHOrder.csvFileUrl + + "busRoutesResult.csvFileUrlDPQP = " + mCurrentOCHOrder.csvFileUrlDPQP); return; } CallerLogger.INSTANCE.e(M_TAXI + TAG, "isPassStartAutopilotCommand = " + FunctionBuildConfig.isPassStartAutopilotCommand); - if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()){ + if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) { ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + ", 请稍候重试"); TaxiAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( @@ -926,17 +925,11 @@ public class TaxiModel { return; } - if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE - == CallerAutoPilotStatusListenerManager.INSTANCE.getState()) { - // TODO: 2021/11/28 工控机存在刚开始状态为0,但是可以开启变为2,工控机解决前不显示此toast -// ToastUtils.showShort("自动驾驶状态为不可用!"); - } - //点击开始自动驾驶按钮订单状态去流转, 不再与自动驾驶是否启动成功挂钩 - if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.getCode()){ + if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.getCode()) { startServicePilotDone(); isRestartAutopilot = false; - }else { + } else { isRestartAutopilot = true; } @@ -950,9 +943,9 @@ public class TaxiModel { CallerAutoPilotControlManager.INSTANCE.startAutoPilot(parameters); CallerLogger.INSTANCE.d(M_TAXI + TAG, "start autopilot with parameter: %s", GsonUtil.jsonFromObject(parameters) - + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr - + "isRestartAutopilot = "+isRestartAutopilot); + + "isRestartAutopilot = " + isRestartAutopilot); TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, false, mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.lineId, mCurrentOCHOrder.orderNo); @@ -1023,7 +1016,6 @@ public class TaxiModel { if (distance <= TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) { arrivedStartPoint(); - return; } } @@ -1034,7 +1026,7 @@ public class TaxiModel { CallerLogger.INSTANCE.d(M_TAXI + TAG, "onIntentReceived = %s", intentStr); if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intentStr)) { if (NetworkUtils.isConnected(mContext)) { - startOrStopOrderLoop(LoginStatusManager.isLogin()&&TaxtServingStatusManager.isOpeningOrderStatus()); + startOrStopOrderLoop(LoginStatusManager.isLogin() && TaxtServingStatusManager.isOpeningOrderStatus()); loginService.queryLoginStatusByNet(); } } @@ -1045,8 +1037,8 @@ public class TaxiModel { @Override public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) { TaxiAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage); - if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode){ - CallerLogger.INSTANCE.e(M_TAXI + TAG, "mAdasStartFailureListener = "+startFailedMessage); + if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode) { + CallerLogger.INSTANCE.e(M_TAXI + TAG, "mAdasStartFailureListener = " + startFailedMessage); mADASStatusCallback.onStartAdasFailure(); } } @@ -1065,7 +1057,7 @@ public class TaxiModel { }; // 自车定位 - private final IMoGoChassisLocationGCJ02Listener mMapLocationLIstener = new IMoGoChassisLocationGCJ02Listener() { + private final IMoGoChassisLocationGCJ02Listener mMapLocationListener = new IMoGoChassisLocationGCJ02Listener() { @Override public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) { //位置变化时,通过围栏判断是否到达x点 @@ -1075,7 +1067,7 @@ public class TaxiModel { judgeStartStation(gnssInfo); } if (getCurOrderStatus() == TaxiOrderStatusEnum.OnTheWayToEnd && - mPrevAPStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + CallerAutoPilotStatusListenerManager.INSTANCE.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { judgeEndStation(gnssInfo); } } @@ -1089,7 +1081,7 @@ public class TaxiModel { } }; - private void judgeEndStation(MogoLocation location) { + private void judgeEndStation(MogoLocation location) { if (mCurrentOCHOrder == null || mCurrentOCHOrder.endSiteGcjPoint == null || mCurrentOCHOrder.endSiteGcjPoint.size() < 2) { return; @@ -1109,7 +1101,6 @@ public class TaxiModel { return; } arriveTerminal(); - return; } } @@ -1158,8 +1149,15 @@ public class TaxiModel { private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener() { @Override - public void onAutopilotRouteLineId(long lineId) { + public void onAutopilotConnectInfo(boolean connectInfo) { + } + @Override + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + + @Override + public void onAutopilotRouteLineId(long lineId) { } @Override @@ -1173,26 +1171,24 @@ public class TaxiModel { @Override public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - int state = autopilotStatusInfo.getState(); + } + + @Override + public void onAutopilotStatusResponse(int state) { if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { - if (state != mPrevAPStatus && mADASStatusCallback != null){ + if (mADASStatusCallback != null) { mADASStatusCallback.onAutopilotRunning(); } if (mCurrentOCHOrder != null - && TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == mCurrentOCHOrder.orderStatus){ - if (state != mPrevAPStatus) { - // 当高频返回autopilot 2时,不重复调用订单状态变更 - mPrevAPStatus = state; // 每个状态单独赋值,解决无订单时已经是2的状态导致的新订单来时无法进入此逻辑更新状态 - - TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, true, - mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.lineId, mCurrentOCHOrder.orderNo); - if (FunctionBuildConfig.isDemoMode) { - // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; - CallerAutoPilotControlManager.INSTANCE.setIgnoreConditionDraw(true); - CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(true); - CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore:置为true(到达出发点且已开启自动驾驶)"); - } + && TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == mCurrentOCHOrder.orderStatus) { + TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, true, + mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.lineId, mCurrentOCHOrder.orderNo); + if (FunctionBuildConfig.isDemoMode) { + // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; + CallerAutoPilotControlManager.INSTANCE.setIgnoreConditionDraw(true); + CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(true); + CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore:置为true(到达出发点且已开启自动驾驶)"); } } } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { @@ -1203,10 +1199,9 @@ public class TaxiModel { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 return; } - if (mADASStatusCallback != null){ + if (mADASStatusCallback != null) { mADASStatusCallback.onAutopilotEnable(); } - mPrevAPStatus = state; } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { if (FunctionBuildConfig.isDemoMode && checkCurrentOCHOrder() @@ -1215,34 +1210,30 @@ public class TaxiModel { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 return; } - if (mADASStatusCallback != null){ + if (mADASStatusCallback != null) { mADASStatusCallback.onAutopilotDisable(); } - mPrevAPStatus = state; - - }else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING){ - if (FunctionBuildConfig.isDemoMode){ + } else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { + if (FunctionBuildConfig.isDemoMode) { if (checkCurrentOCHOrder() && (getCurOrderStatus() == TaxiOrderStatusEnum.OnTheWayToEnd - || getCurOrderStatus() == TaxiOrderStatusEnum.ArriveAtEnd)){//订单中 + || getCurOrderStatus() == TaxiOrderStatusEnum.ArriveAtEnd)) {//订单中 // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 - }else { //美化模式下没订单,显示人工驾驶 - if (mADASStatusCallback != null){ + } else { //美化模式下没订单,显示人工驾驶 + if (mADASStatusCallback != null) { mADASStatusCallback.onAutopilotDisable(); } } return; } - if (mADASStatusCallback != null){ + if (mADASStatusCallback != null) { mADASStatusCallback.onManMachineCoDriving(); } - mPrevAPStatus = state; } } @Override public void onAutopilotSNRequest() { - } @Override @@ -1274,7 +1265,7 @@ public class TaxiModel { @Override public void onAutopilotRotting(MessagePad.GlobalPathResp routeList) { - if (null != routeList && routeList.getWayPointsList() != null){ + if (null != routeList && routeList.getWayPointsList() != null) { CallerLogger.INSTANCE.d(M_TAXI + TAG, "getWayPointsList = " + routeList.getWayPointsList().size()); } @@ -1288,12 +1279,11 @@ public class TaxiModel { /** * 设置路径规划起终点 + * * @param latLngModels */ public void setRouteLineMarker(List latLngModels) { -// List latLngModels = CoordinateCalculateRouteUtil -// .coordinateConverterWgsToGcjListCommon(mContext,models); - if (mAutopilotPlanningCallback != null){ + if (mAutopilotPlanningCallback != null) { mAutopilotPlanningCallback.setLineMarker(latLngModels); } } @@ -1348,7 +1338,7 @@ public class TaxiModel { CallerLogger.INSTANCE.d(M_TAXI + TAG, "--------计算出sumLength开始---------- "); //转换成高德坐标系 - if (mRoutePoints.size() > 0){ + if (mRoutePoints.size() > 0) { mRoutePoints.clear(); } mRoutePoints.addAll(CoordinateCalculateRouteUtil @@ -1364,14 +1354,14 @@ public class TaxiModel { } CallerLogger.INSTANCE.d(M_TAXI + TAG, "--------mRoutePoints.size---------- " + mRoutePoints.size()); - if (mRoutePoints.size() > 0){ + if (mRoutePoints.size() > 0) { reportTotalDisAndTime(); } //开启实时计算剩余距离,剩余时间,预计时间 startOrStopCalculateRouteInfo(true); AmapNaviToDestinationModel.getInstance(mContext).destroyAmaNavi(); - if (mOrderStatusCallback != null){ - mOrderStatusCallback.onNaviToEnd(false,false); + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onNaviToEnd(false, false); } } @@ -1386,18 +1376,18 @@ public class TaxiModel { * 实时计算当前剩余里程和时间 */ public void dynamicCalculateRouteInfo() { - if (mLocation == null){ + if (mLocation == null) { return; } - if (mRoutePoints.size() > 0 && mLocation != null){ - Map> lastPointsMap = CoordinateCalculateRouteUtil - .getRemainPointListByCompareNew(mPreRouteIndex,mRoutePoints, mLocation); + if (mRoutePoints.size() > 0 && mLocation != null) { + Map> lastPointsMap = CoordinateCalculateRouteUtil + .getRemainPointListByCompareNew(mPreRouteIndex, mRoutePoints, mLocation); - for (int index: lastPointsMap.keySet()) { + for (int index : lastPointsMap.keySet()) { mPreRouteIndex = index; break; } - for (List lastPoints: lastPointsMap.values()){ + for (List lastPoints : lastPointsMap.values()) { float lastSumLength = 0; if (lastPoints.size() == 1) { //只是最后一个点,计算当前位置和最后一个点的距离 lastSumLength = CoordinateUtils.calculateLineDistance( @@ -1410,9 +1400,9 @@ public class TaxiModel { double lastTime = lastSumLength / TaxiConst.TAXI_AVERAGE_SPEED * 3.6; //秒 CallerLogger.INSTANCE.d(M_TAXI + "dynamicCalculateRouteInfo" , "---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime - + " thread = "+ Thread.currentThread().getName()); + + " thread = " + Thread.currentThread().getName()); - if (mCurrentOCHOrder != null){ + if (mCurrentOCHOrder != null) { mCurrentOCHOrder.decreaseTravelDistance(lastSumLength); } if (mOrderStatusCallback != null) { @@ -1427,16 +1417,16 @@ public class TaxiModel { } private void routeAndWipe() { - if (mRoutePoints != null && mRoutePoints.size() > 0 && mLocation != null){ + if (mRoutePoints != null && mRoutePoints.size() > 0 && mLocation != null) { int haveArrivedIndex = CoordinateCalculateRouteUtil .getArrivedPointIndexNew(mPreRouteIndex, mRoutePoints, mLocation.getLongitude(), mLocation.getLatitude()); List routePoints = CoordinateCalculateRouteUtil - .coordinateConverterLocationToLatLng(mContext,mRoutePoints); - if (mAutopilotPlanningCallback != null){ - mAutopilotPlanningCallback.routeResult(routePoints,haveArrivedIndex); + .coordinateConverterLocationToLatLng(mContext, mRoutePoints); + if (mAutopilotPlanningCallback != null) { + mAutopilotPlanningCallback.routeResult(routePoints, haveArrivedIndex); } setRouteLineMarker(routePoints); } @@ -1537,7 +1527,7 @@ public class TaxiModel { }); } - public void startServicePilotDone(){ + public void startServicePilotDone() { if (mCurrentOCHOrder == null) return; TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); @@ -1558,7 +1548,7 @@ public class TaxiModel { }); } - public void arrivedStartPoint(){ + public void arrivedStartPoint() { if (mCurrentOCHOrder == null) return; TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; @@ -1579,7 +1569,7 @@ public class TaxiModel { }); } - public void arriveTerminal(){ + public void arriveTerminal() { if (mCurrentOCHOrder == null) return; TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; @@ -1600,7 +1590,7 @@ public class TaxiModel { }); } - public void orderCompleted(){ + public void orderCompleted() { if (mCurrentOCHOrder == null) return; TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; @@ -1622,28 +1612,28 @@ public class TaxiModel { // 登出 public void logout() { - loginService.loginOut(mLatitude,mLongitude); + loginService.loginOut(mLatitude, mLongitude); } //导航去订单终点目的地 - public void startNaviToEndStation(boolean isShow){ - if (mRoutePoints.size() > 0 ){ //使用自驾轨迹 - if (mOrderStatusCallback != null){ - mOrderStatusCallback.onNaviToEnd(false,isShow); + public void startNaviToEndStation(boolean isShow) { + if (mRoutePoints.size() > 0) { //使用自驾轨迹 + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onNaviToEnd(false, isShow); } - }else {//若直接要显示导航地图则直接导航, 若不是则2s后若无轨迹数据使用高德导航 - if (isShow && mRoutePoints.size() == 0 && mOrderStatusCallback != null){ + } else {//若直接要显示导航地图则直接导航, 若不是则2s后若无轨迹数据使用高德导航 + if (isShow && mRoutePoints.size() == 0 && mOrderStatusCallback != null) { - mOrderStatusCallback.onNaviToEnd(true,true); - }else { + mOrderStatusCallback.onNaviToEnd(true, true); + } else { UiThreadHandler.postDelayed(new Runnable() { @Override public void run() { - if (mRoutePoints.size() == 0 && mOrderStatusCallback != null){ - mOrderStatusCallback.onNaviToEnd(true,false); + if (mRoutePoints.size() == 0 && mOrderStatusCallback != null) { + mOrderStatusCallback.onNaviToEnd(true, false); } } - },2000l); + }, 2000l); } } diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java index acf46f64f6..1aca90fd27 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java @@ -117,16 +117,17 @@ public class SweeperPresenter extends Presenter @Override public void onAutopilotRouteLineId(long lineId) { - } @Override public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - if (autopilotStatusInfo == null) return; - CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotStatusResponse state:" + autopilotStatusInfo.getState()); - SweeperTaskModel.getInstance().setAutopilotState(autopilotStatusInfo.getState()); - ThreadUtils.runOnUiThread(() -> mView.startAutoBtn(autopilotStatusInfo.getState())); - switch (autopilotStatusInfo.getState()) { + } + + @Override + public void onAutopilotStatusResponse(int state) { + SweeperTaskModel.getInstance().setAutopilotState(state); + ThreadUtils.runOnUiThread(() -> mView.startAutoBtn(state)); + switch (state) { case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE://不可自动驾驶 break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE://人工驾驶 @@ -207,8 +208,6 @@ public class SweeperPresenter extends Presenter } /** * 测试使用 - * - * @param status */ public void debugAutoPilotStatus(int status) { AutopilotStatusInfo info = new AutopilotStatusInfo(); @@ -237,12 +236,10 @@ public class SweeperPresenter extends Presenter @Override public void onAutopilotSNRequest() { - } @Override public void onStartAdasFailure() { - } public void onArriveTaskEnd(@Nullable MessagePad.ArrivalNotification arrivalNotification) { @@ -251,9 +248,6 @@ public class SweeperPresenter extends Presenter @Override public void onSweeperFutianCleanSystemState(@NonNull ChassisStatesOuterClass.SweeperFuTianTaskSystemStates cleanSystemState) { - if (cleanSystemState == null) { - return; - } long current = System.currentTimeMillis(); if (current - mVehicleStateCurrentTimeMillis <= VEHICLE_STATE_INTERVAL_MILLIS) { return; @@ -279,30 +273,29 @@ public class SweeperPresenter extends Presenter // 纯扫 模式判断:不是另外其他3个模式,同时有清扫方向,说明开启了纯扫模式 boolean clean_mode_pure_sweep = SweeperFutianCmdUtil.checkIfCleanModePureSweep(cleanSystemState); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("开关:") - .append(clean_open_requirement) - .append("\n") - .append("纯扫:") - .append(clean_mode_wash_sweep) - .append("纯洗:") - .append(clean_mode_pure_wash) - .append("纯吸:") - .append(clean_mode_pure_draw) - .append("纯扫:") - .append("\n") - .append(clean_mode_pure_sweep) - .append("左侧:") - .append(clean_direction_left_side) - .append("右侧:") - .append(clean_direction_right_side) - .append("两侧:") - .append("\n") - .append(clean_direction_both_side) - .append("标准:") - .append(clean_intensity_standard) - .append("强力:") - .append(clean_intensity_strong); + String stringBuilder = "开关:" + + clean_open_requirement + + "\n" + + "纯扫:" + + clean_mode_wash_sweep + + "纯洗:" + + clean_mode_pure_wash + + "纯吸:" + + clean_mode_pure_draw + + "纯扫:" + + "\n" + + clean_mode_pure_sweep + + "左侧:" + + clean_direction_left_side + + "右侧:" + + clean_direction_right_side + + "两侧:" + + "\n" + + clean_direction_both_side + + "标准:" + + clean_intensity_standard + + "强力:" + + clean_intensity_strong; CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianCleanSystemState:" + stringBuilder); mView.onSweeperFutianCleanSystemState(cleanSystemState); @@ -310,27 +303,23 @@ public class SweeperPresenter extends Presenter @Override public void onSweeperFutianTaskIndexData(@NonNull RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex roboSweeperTaskIndex) { - if (roboSweeperTaskIndex == null) { - return; - } long current = System.currentTimeMillis(); if (current - mWeltDataCurrentTimeMillis <= WELT_DATA_INTERVAL_MILLIS) { return; } mWeltDataCurrentTimeMillis = current; - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("清扫模式:") - .append(roboSweeperTaskIndex.getCleanMode()) - .append("清扫方向:") - .append(roboSweeperTaskIndex.getCleanDirection()) - .append("清扫强度:") - .append(roboSweeperTaskIndex.getCleanIntensity()) - .append("贴边距离:") - .append(roboSweeperTaskIndex.getDistToRefEdgePoint()) - .append("经度:") - .append(roboSweeperTaskIndex.getLocLon()) - .append("纬度:") - .append(roboSweeperTaskIndex.getLocLat()); + String stringBuilder = "清扫模式:" + + roboSweeperTaskIndex.getCleanMode() + + "清扫方向:" + + roboSweeperTaskIndex.getCleanDirection() + + "清扫强度:" + + roboSweeperTaskIndex.getCleanIntensity() + + "贴边距离:" + + roboSweeperTaskIndex.getDistToRefEdgePoint() + + "经度:" + + roboSweeperTaskIndex.getLocLon() + + "纬度:" + + roboSweeperTaskIndex.getLocLat(); CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianTaskIndexData:" + stringBuilder); String tempLongitude=NumberFormatUtil.cutOutNumber(roboSweeperTaskIndex.getLocLon(), 6); String tempLatitude=NumberFormatUtil.cutOutNumber(roboSweeperTaskIndex.getLocLat(), 6); @@ -458,4 +447,12 @@ public class SweeperPresenter extends Presenter public void setRouteList(@NonNull ArrayList routeList) { mView.setTaskRouteList(routeList); } + + @Override + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + + @Override + public void onAutopilotConnectInfo(boolean connectInfo) { + } } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/V2XBizTrace.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/V2XBizTrace.kt index 10dd9ceb83..2e65d11008 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/V2XBizTrace.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/V2XBizTrace.kt @@ -11,9 +11,9 @@ class V2XBizTrace { companion object { @ChainLog( - linkChainLog = ChainConstant.CHAIN_TYPE_CLOUD_V2N, + linkChainLog = ChainConstant.CHAIN_TYPE_V2X, linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, - nodeAliasCode = ChainConstant.CHAIN_CODE_CLOUD_V2N, + nodeAliasCode = ChainConstant.CHAIN_CODE_V2X_MSG, paramIndexes = [0, 1] ) fun onAck(data: Any, data1: Any) { diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt index acaa5a93a0..e91545a014 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt @@ -6,9 +6,9 @@ import android.util.* import androidx.annotation.* import androidx.localbroadcastmanager.content.* import com.mogo.eagle.core.data.config.* -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_V2N +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_V2X_MSG import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_SOURCE_CLOUD -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_CLOUD_V2N +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_V2X import com.mogo.eagle.core.data.enums.* import com.mogo.eagle.core.data.enums.DataSourceType import com.mogo.eagle.core.data.enums.EventTypeEnumNew.Companion.isRoadEvent @@ -144,9 +144,9 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, * V2XEvent事件回调 */ @ChainLog( - linkChainLog = CHAIN_TYPE_CLOUD_V2N, + linkChainLog = CHAIN_TYPE_V2X, linkCode = CHAIN_SOURCE_CLOUD, - nodeAliasCode = CHAIN_CODE_CLOUD_V2N, + nodeAliasCode = CHAIN_CODE_V2X_MSG, paramIndexes = [0] ) override fun onAck(event: V2XEvent) { @@ -179,9 +179,9 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, @RequiresApi(Build.VERSION_CODES.N) @ChainLog( - linkChainLog = CHAIN_TYPE_CLOUD_V2N, + linkChainLog = CHAIN_TYPE_V2X, linkCode = CHAIN_SOURCE_CLOUD, - nodeAliasCode = CHAIN_CODE_CLOUD_V2N, + nodeAliasCode = CHAIN_CODE_V2X_MSG, paramIndexes = [0] ) override fun onAutopilotIdentifyPlanningObj(planningObjects: List?) { diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index 192e6c24ce..4f6d886445 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -28,11 +28,11 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SO import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SOCKET_TRAJECTORY import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SOCKET_VEHICLE import com.mogo.eagle.core.function.call.autopilot.* -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeArriveAtStation import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotGuardian import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotSNRequest import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotStatusRespByQuery +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.updateAutoPilotDockerInfo import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.updateAutoPilotStatus import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager.invokeAutopilotAbility import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager.invokeAutopilotCarConfigData @@ -127,7 +127,6 @@ class MoGoAdasListenerImpl : OnAdasListener { ) override fun onGnssInfo(header: MessagePad.Header, gnssInfo: MessagePad.GnssInfo) { CallerChassisGnssListenerManager.invokeChassisGnssListener(gnssInfo) - if (gnssInfo != null) { if (1 == FunctionBuildConfig.gpsProvider) { // 同步更新经纬度和系统时间至 AutoPilotStatusListener @@ -363,8 +362,7 @@ class MoGoAdasListenerImpl : OnAdasListener { carConfigResp: MessagePad.CarConfigResp? ) { if (carConfigResp != null) { - val autopilotStatusInfo = getAutoPilotStatusInfo() - autopilotStatusInfo.dockVersion = carConfigResp.dockVersion + updateAutoPilotDockerInfo(carConfigResp.dockVersion) AppConfigInfo.dockerVersion = carConfigResp.dockVersion AppConfigInfo.plateNumber = carConfigResp.plateNumber//车牌号 AppConfigInfo.iPCMacAddress = carConfigResp.macAddress//工控机MAC地址 @@ -686,9 +684,9 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param rsi 数据 */ @ChainLog( - linkChainLog = ChainConstant.CHAIN_TYPE_CLOUD_V2N, + linkChainLog = ChainConstant.CHAIN_TYPE_V2X, linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, - nodeAliasCode = ChainConstant.CHAIN_CODE_CLOUD_V2N, + nodeAliasCode = ChainConstant.CHAIN_CODE_V2X_MSG, paramIndexes = [0, 1] ) override fun onV2nCongestionEvent(header: MessagePad.Header, rsi: MogoV2X.RSI_PB) { @@ -706,9 +704,9 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param parkingViolation 违停 ---包含 静态障碍车 */ @ChainLog( - linkChainLog = ChainConstant.CHAIN_TYPE_CLOUD_V2N, + linkChainLog = ChainConstant.CHAIN_TYPE_V2X, linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, - nodeAliasCode = ChainConstant.CHAIN_CODE_CLOUD_V2N, + nodeAliasCode = ChainConstant.CHAIN_CODE_V2X_MSG, paramIndexes = [0] ) override fun onV2nGlobalPathEvents( diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/server/AsyncDataToAutopilotServer.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/server/AsyncDataToAutopilotServer.kt index b6af9329b4..d4259fc4f8 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/server/AsyncDataToAutopilotServer.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/server/AsyncDataToAutopilotServer.kt @@ -1,7 +1,6 @@ package com.mogo.eagle.core.function.datacenter.autopilot.server import android.annotation.SuppressLint -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener @@ -36,7 +35,6 @@ class AsyncDataToAutopilotServer private constructor() : IMoGoTrafficLightListen } } - private var mPreAutoStatus = AtomicInteger(-1) private var createSubscribe: Disposable? = null fun initServer() { @@ -45,16 +43,11 @@ class AsyncDataToAutopilotServer private constructor() : IMoGoTrafficLightListen } @SuppressLint("CheckResult") - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - super.onAutopilotStatusResponse(autoPilotStatusInfo) - val state = autoPilotStatusInfo.state - if (mPreAutoStatus.get() != state) { - mPreAutoStatus.set(state) - createSubscribe?.let { - if (!it.isDisposed) { - bizLog(SceneConstant.M_ADAS_IMPL + TAG, "自动驾驶状态变化,取消前置轨迹请求,间隔2s重新请求底盘轨迹") - createSubscribe?.dispose() - } + override fun onAutopilotStatusResponse(state: Int) { + createSubscribe?.let { + if (!it.isDisposed) { + bizLog(SceneConstant.M_ADAS_IMPL + TAG, "自动驾驶状态变化,取消前置轨迹请求,间隔2s重新请求底盘轨迹") + createSubscribe?.dispose() } when (state) { diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt index 469d2b742a..5e0262f153 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt @@ -65,10 +65,7 @@ class TeleMsgHandler : IMsgHandler { AdasManager.getInstance().decoderRaw(it.body) } catch (e: Exception) { e.printStackTrace() - CallerLogger.e( - "${SceneConstant.M_ADAS_IMPL}$TAG", - "乘客屏解析数据过程中出现异常:${e.message}" - ) + invokeNettyConnResult("乘客屏解析数据过程中出现异常:${e.message}") } } MogoProtocolMsg.SYNC_MODE_STATUS -> { @@ -144,11 +141,6 @@ class TeleMsgHandler : IMsgHandler { CallerTrafficLightListenerManager.invokeEnterCrossRoad(false) } } - TelematicConstant.OPEN_ROMA_STATUS -> { - ThreadUtils.runOnUiThread { - CallerTelematicListenerManager.invokeReceivedMsg(TelematicConstant.OPEN_ROMA_STATUS,it.body) - } - } TelematicConstant.CONTROL_PASSENGER_DRIVER_MONITOR -> { ThreadUtils.runOnUiThread { CallerTelematicListenerManager.invokeReceivedMsg(TelematicConstant.CONTROL_PASSENGER_DRIVER_MONITOR,it.body) @@ -223,11 +215,6 @@ class TeleMsgHandler : IMsgHandler { TelematicConstant.BUSINESS_STRING -> { CallerTelematicListenerManager.invokeReceivedMsg(TelematicConstant.BUSINESS_STRING, it.body) } - TelematicConstant.OPEN_ROMA_STATUS -> { - ThreadUtils.runOnUiThread { - CallerTelematicListenerManager.invokeReceivedMsg(TelematicConstant.OPEN_ROMA_STATUS,it.body) - } - } else -> { } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/trace/TracingImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/trace/TracingImpl.kt index c9f9ff338c..f04a3971ec 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/trace/TracingImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/trace/TracingImpl.kt @@ -1,7 +1,6 @@ package com.zhjt.mogo_core_function_devatools.status.flow.trace import android.content.* -import com.mogo.eagle.core.data.autopilot.* import com.mogo.eagle.core.function.api.autopilot.* import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion.STATUS_AUTOPILOT_RUNNING import com.mogo.eagle.core.function.call.autopilot.* @@ -37,7 +36,6 @@ internal class TracingImpl(ctx: Context): IFlow(ctx), IMoGoAutopi CallerAutoPilotStatusListenerManager.addListener(TAG, this) } - override fun onAutopilotGuardian(guardianInfo: MogoReportMessage?) { super.onAutopilotGuardian(guardianInfo) val code = guardianInfo?.code @@ -70,9 +68,7 @@ internal class TracingImpl(ctx: Context): IFlow(ctx), IMoGoAutopi } } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - super.onAutopilotStatusResponse(autoPilotStatusInfo) - val state = autoPilotStatusInfo.state + override fun onAutopilotStatusResponse(state: Int) { try { if (ipcStatus.get() != state) { if (state != STATUS_AUTOPILOT_RUNNING) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt index a1392f0591..8ad058e288 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt @@ -66,8 +66,8 @@ class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener { FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_RECORD_NATIVE_LEAK) fwBuildMap[ChainConstant.CHAIN_TYPE_ANR] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_RECORD_ANR) - fwBuildMap[ChainConstant.CHAIN_TYPE_CLOUD_V2N] = - FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_CLOUD_WEB_SOCKET_V2N) + fwBuildMap[ChainConstant.CHAIN_TYPE_V2X] = + FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_V2X) fwBuildMap[ChainConstant.CHAIN_TYPE_HD_MAP] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_HD_MAP_BIZ) fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEAK_NETWORK] = @@ -96,7 +96,7 @@ class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener { ChainLogParam(true, "Native Leak Record") traceInfoCache[ChainConstant.CHAIN_TYPE_ANR] = ChainLogParam(true, "ANR Record") - traceInfoCache[ChainConstant.CHAIN_TYPE_CLOUD_V2N] = + traceInfoCache[ChainConstant.CHAIN_TYPE_V2X] = ChainLogParam(true, "Cloud WebSocket V2N") traceInfoCache[ChainConstant.CHAIN_TYPE_HD_MAP] = ChainLogParam(true, "HD Map Caller") diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/IPCUpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/IPCUpgradeManager.kt index b83a1f0532..f8513dadd1 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/IPCUpgradeManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/IPCUpgradeManager.kt @@ -4,7 +4,6 @@ import android.content.Context import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.cloud.passport.MoGoAiCloudClient -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.deva.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager @@ -72,18 +71,15 @@ class IPCUpgradeManager: IMogoOnMessageListener , //更新下载or升级状态 CallerHmiManager.showAdUpgradeStatus(it) } - - } } /** * 自动驾驶状态信息 - * @param autoPilotStatusInfo 状态信息 */ - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - autopilotStatus = autoPilotStatusInfo.state + override fun onAutopilotStatusResponse(state: Int) { //有升级任务,且不处于自动驾驶状态,进行升级提示 + autopilotStatus = state if(hasIPCUpgradeTask && autopilotStatus!=2){ ipcUpgradeStateInfoTask?.let { var releaseId="" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index e5220ad5a8..d58b361595 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -19,14 +19,12 @@ import androidx.core.content.ContextCompat import androidx.core.view.* import androidx.lifecycle.lifecycleScope import chassis.Chassis -import chassis.ChassisStatesOuterClass import com.mogo.cloud.passport.MoGoAiCloudClient import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.constants.SharedPrefsConstants import com.mogo.commons.debug.DebugConfig import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.data.app.AppConfigInfo -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.constants.MoGoConfig @@ -82,7 +80,6 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.tbRouteDynamicEffe import kotlinx.coroutines.* import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg -import planning.RoboSweeperTaskIndexOuterClass import java.text.SimpleDateFormat import java.util.* import kotlin.collections.component1 @@ -126,8 +123,6 @@ internal class DebugSettingView @JvmOverloads constructor( private var logInfoView: LogInfoView? = null private var logViewAttach = false - @Volatile - private var mAutoPilotStatusInfo: AutopilotStatusInfo? = null private var mGnssInfo: MogoLocation? = null private var accelerationFloatWindow: AccelerationFloatWindow? = null @@ -932,7 +927,7 @@ internal class DebugSettingView @JvmOverloads constructor( clipboardManager?.setPrimaryClip( ClipData.newPlainText( "DockVersion", - mAutoPilotStatusInfo?.dockVersion + CallerAutoPilotStatusListenerManager.getDockerVersion()?:"" ) ) ToastUtils.showLong("docker版本复制成功") @@ -1090,13 +1085,8 @@ internal class DebugSettingView @JvmOverloads constructor( /** * 设置域控制器点击监听 */ + @SuppressLint("SetTextI18n") private fun setDomainControllerCheckedChangeListener() { - - // 初始化工控机 IP信息 - val autoPilotIpAddress = - SharedPrefsMgr.getInstance(context) - .getString(MoGoConfig.AUTOPILOT_IP, FunctionBuildConfig.adasConnectIP) - etAutopilotIP.setText("192.168.1.") etAutopilotIP.text?.let { etAutopilotIP.setSelection(it.length) } //设置工控机IP @@ -1586,8 +1576,9 @@ internal class DebugSettingView @JvmOverloads constructor( } else { tvIpcProtocolVersionInfo.text = "工控机协议版本:${AppConfigInfo.protocolVersionNumber}" } - tvIpcVersionInfo.text = "MAP:${mAutoPilotStatusInfo?.dockVersion}" - tvIpcVersionInfoKey.text = "MAP:${mAutoPilotStatusInfo?.dockVersion}" + val dockerVersion = CallerAutoPilotStatusListenerManager.getDockerVersion() + tvIpcVersionInfo.text = "MAP:$dockerVersion" + tvIpcVersionInfoKey.text = "MAP:$dockerVersion" tvMoGoMapVersion.text = "HD-Map版本:${DebugConfig.getMapVersion()}" tvMoGoMapVersionKey.text = "HD-Map版本:${DebugConfig.getMapVersion()}" tvGitBranchInfo.text = "Git分支:${AppConfigInfo.workingBranchName}" @@ -1658,12 +1649,7 @@ internal class DebugSettingView @JvmOverloads constructor( "司机端Server启动" } else -> { - "乘客端${ - when { - !AppConfigInfo.serverSn.isNullOrEmpty() -> "(司机屏SN是:${AppConfigInfo.serverSn?:""})" - else -> "" - } - }连接" + "乘客端${"(司机屏SN是:${AppConfigInfo.serverSn})"}连接" } } }是否正常:${ @@ -1696,11 +1682,10 @@ internal class DebugSettingView @JvmOverloads constructor( }" ) - mAutoPilotStatusInfo?.let { - val autopilotJson = GsonUtils.toJson(it) - tvAutopilotInfo.text = autopilotJson - tvIpcInfo.text = autopilotJson - tvIpcInfoKey.text = autopilotJson + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfoJsonString().let { + tvAutopilotInfo.text = it + tvIpcInfo.text = it + tvIpcInfoKey.text = it } tvCmdbCarInfoContent.text = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.CAR_INFO)?:"" @@ -1780,8 +1765,7 @@ internal class DebugSettingView @JvmOverloads constructor( /** * 自动驾驶状态回调 */ - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - mAutoPilotStatusInfo = autoPilotStatusInfo + override fun onAutopilotStatusResponse(state: Int) { setAutopilotConnectStatus() } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt index d9698509fa..578be323dd 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt @@ -11,11 +11,9 @@ import android.view.LayoutInflater import android.view.View import android.widget.FrameLayout import com.mogo.eagle.core.data.app.AppConfigInfo -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.deva.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.data.temp.EventLogout import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener 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.CallerAutopilotCarConfigListenerManager @@ -44,7 +42,7 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( context, attrs, defStyleAttr -), IMoGoAutopilotStatusListener { +) { companion object{ private const val TAG = "AutoPilotAndCheckView" @@ -52,8 +50,6 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( private var clickListener: ClickListener? = null private var keyBoardUtil: KeyBoardUtil? = null - @Volatile - private var connectStatus = false private var lastTime = 0L init { @@ -174,7 +170,7 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( svLayout.post { svLayout.fullScroll(View.FOCUS_DOWN) } - if (!connectStatus) { //todo 单次获取 + if (!CallerAutoPilotStatusListenerManager.getConnectStates()) { ToastUtils.showShort("设置车速失败,请启动域控制器") keyBoardUtil?.hideKeyboard() return@setOnTouchListener true @@ -267,20 +263,14 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() - CallerAutoPilotStatusListenerManager.addListener(TAG, this) CallerAutopilotCarConfigListenerManager.addListener(TAG, this) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() - CallerAutoPilotStatusListenerManager.removeListener(TAG) CallerAutopilotCarConfigListenerManager.removeListener(TAG) } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - connectStatus = autoPilotStatusInfo.connectStatus - } - interface ClickListener { fun onClose(v: View) fun showDebugPanelView() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt index 21fd821cf9..96a920d185 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt @@ -6,13 +6,12 @@ import android.util.TypedValue.COMPLEX_UNIT_PX import android.view.LayoutInflater import androidx.appcompat.content.res.AppCompatResources import androidx.constraintlayout.widget.ConstraintLayout -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.autopilot.pnc.PncActionsHelper -import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_ACTIONS -import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult import com.mogo.eagle.core.data.biz.trafficlight.currentRoadTrafficLight import com.mogo.eagle.core.data.biz.trafficlight.isRed +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_ACTIONS +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningActionsListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion.STATUS_AUTOPILOT_RUNNING @@ -40,9 +39,6 @@ class PncActionsView @JvmOverloads constructor( @Volatile private var mTrafficLightResult: TrafficLightResult? = null - @Volatile - private var mAutoPilotStatusInfo: AutopilotStatusInfo? = null - private val bgResources: Int private val topMargin: Float private val txtSize: Float @@ -68,7 +64,7 @@ class PncActionsView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() (tvHmiPncActions.layoutParams as MarginLayoutParams).topMargin = topMargin.toInt() - tvHmiPncActions.setTextSize(COMPLEX_UNIT_PX, txtSize.toFloat()) + tvHmiPncActions.setTextSize(COMPLEX_UNIT_PX, txtSize) CallerAutoPilotStatusListenerManager.addListener(TAG, this) CallerPlanningActionsListenerManager.addListener(TAG, this) @@ -82,10 +78,8 @@ class PncActionsView @JvmOverloads constructor( CallerTrafficLightListenerManager.removeListener(TAG) } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - super.onAutopilotStatusResponse(autoPilotStatusInfo) - mAutoPilotStatusInfo = autoPilotStatusInfo - if (mAutoPilotStatusInfo!!.state != STATUS_AUTOPILOT_RUNNING) { + override fun onAutopilotStatusResponse(state: Int) { + if (state != STATUS_AUTOPILOT_RUNNING) { UiThreadHandler.post { this.background = null tvHmiPncActions.text = "" @@ -96,45 +90,43 @@ class PncActionsView @JvmOverloads constructor( @BizConfig(FOUNDATION, "", BIZ_PNC_ACTIONS) override fun pncActions(planningActionMsg: MessagePad.PlanningActionMsg) { try { - mAutoPilotStatusInfo?.let { - UiThreadHandler.post { - if (it.state == STATUS_AUTOPILOT_RUNNING) { - var actions: String? = null - planningActionMsg.actionMsg?.let { it -> - try { - actions = PncActionsHelper.getAction( - it.drivingState.number, - it.drivingAction.number - ) - } catch (e: Exception) { - e.printStackTrace() - } - //如果是存在云端红绿灯数据条件下,设置云端数据 - if (PncActionsHelper.isWaitingTrafficlight( - it.drivingState.number, - it.drivingAction.number - ) - && mTrafficLightResult != null - && getWaitTrafficLightTime().isNotBlank() - ) { - actions += ",预计${getWaitTrafficLightTime()}秒后通过" - } else { - mTrafficLightResult = null - } + UiThreadHandler.post { + if (CallerAutoPilotStatusListenerManager.getState() == STATUS_AUTOPILOT_RUNNING) { + var actions: String? = null + planningActionMsg.actionMsg?.let { it -> + try { + actions = PncActionsHelper.getAction( + it.drivingState.number, + it.drivingAction.number + ) + } catch (e: Exception) { + e.printStackTrace() } - // update view - if (actions.isNullOrEmpty()) { - this.background = null - tvHmiPncActions.text = "" + //如果是存在云端红绿灯数据条件下,设置云端数据 + if (PncActionsHelper.isWaitingTrafficlight( + it.drivingState.number, + it.drivingAction.number + ) + && mTrafficLightResult != null + && getWaitTrafficLightTime().isNotBlank() + ) { + actions += ",预计${getWaitTrafficLightTime()}秒后通过" } else { - this.background = - AppCompatResources.getDrawable(context, bgResources) - tvHmiPncActions.text = actions + mTrafficLightResult = null } - } else { + } + // update view + if (actions.isNullOrEmpty()) { this.background = null tvHmiPncActions.text = "" + } else { + this.background = + AppCompatResources.getDrawable(context, bgResources) + tvHmiPncActions.text = actions } + } else { + this.background = null + tvHmiPncActions.text = "" } } } catch (e: Exception) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt index c3ead2d664..68927571ed 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt @@ -6,7 +6,6 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.enums.EventTypeEnumNew import com.mogo.eagle.core.data.msgbox.MsgBoxBean @@ -16,7 +15,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager -import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.ThreadUtils @@ -33,31 +31,22 @@ class TakeOverView @JvmOverloads constructor( const val TAG = "TakeOverView" } - private var autopilotStatus: Int = 0 //自动驾驶状态 0代表不可自动驾驶,1代表可自动驾驶,2代表自动驾驶中,7:平行驾驶中 - private var isParallel: Boolean = false //是否是平行驾驶 - - init { LayoutInflater.from(context).inflate(R.layout.view_take_over, this, true) } private var takeOver = false + private var isParallel: Boolean = false //是否是平行驾驶 override fun onAttachedToWindow() { super.onAttachedToWindow() CallerAutoPilotStatusListenerManager.addListener(TAG, this) } - /** - * 自动驾驶状态信息 - * - * @param autoPilotStatusInfo 状态信息 - */ - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - autopilotStatus = autoPilotStatusInfo.state - if(autoPilotStatusInfo.state == 7){ + override fun onAutopilotStatusResponse(state: Int) { + if(state == 7){ isParallel = true - }else if(autoPilotStatusInfo.state == 0 || autoPilotStatusInfo.state == 1){ + }else if(state == 0 || state == 1){ isParallel = false } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt index 8ec86f7842..f42e95f556 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt @@ -6,7 +6,6 @@ import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager @@ -37,7 +36,7 @@ class AutoPilotStatusView constructor( private var mAutopilotStatus: Int = 0 - init{ + init { initView(context) } @@ -119,8 +118,8 @@ class AutoPilotStatusView constructor( } } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - setAutoPilotStatus(autoPilotStatusInfo.state) + override fun onAutopilotStatusResponse(state: Int) { + setAutoPilotStatus(state) } override fun onDetachedFromWindow() { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt index 99b3367b46..c65d538104 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CheckSystemView.kt @@ -6,7 +6,6 @@ import android.view.Gravity import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager @@ -29,12 +28,7 @@ class CheckSystemView @JvmOverloads constructor( const val TAG = "CheckSystemView" } - @Volatile - private var connectStatus = false //是否连接工控机 - @Volatile - private var autopilotStatus: Int? = null //自动驾驶状态 0代表不可自动驾驶,1代表可自动驾驶,2代表自动驾驶中 private var dockerRebootDialog: DockerRebootDialog? = null - private var downloadStatus: String = "" //下载状态 private var upgradeStatus: String = "" //升级状态 @@ -54,7 +48,7 @@ class CheckSystemView @JvmOverloads constructor( dockerRebootDialog = DockerRebootDialog(context) dockerRebootDialog?.setClickListener(object : DockerRebootDialog.ClickListener { override fun confirm() { - if (autopilotStatus == 2) { + if (CallerAutoPilotStatusListenerManager.getState() == 2) { //当前处于自动驾驶状态,不可进行重启,Toast提示 ToastUtils.showShort("请先退出自动驾驶状态") } @@ -106,16 +100,15 @@ class CheckSystemView @JvmOverloads constructor( CallerAutoPilotStatusListenerManager.removeListener(TAG) } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - connectStatus = autoPilotStatusInfo.connectStatus //单次 - autopilotStatus = autoPilotStatusInfo.state + override fun onAutopilotConnectInfo(connectInfo: Boolean) { + super.onAutopilotConnectInfo(connectInfo) ThreadUtils.runOnUiThread { - setViewStatus() + setViewStatus(connectInfo) } } - private fun setViewStatus() { - if (connectStatus) { + private fun setViewStatus(connectInfo:Boolean) { + if (connectInfo) { viewCheckShutDown.requestFocus() viewCheckShutDown.isClickable = true viewCheckReboot.requestFocus() @@ -124,7 +117,6 @@ class CheckSystemView @JvmOverloads constructor( viewCheckShutDown.isClickable = false viewCheckReboot.isClickable = false } - } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.kt index fdbe3d9ce2..f8f11438f0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.kt @@ -94,9 +94,8 @@ class SteeringWheelView : ConstraintLayout, IMoGoChassisSteeringStateListener, private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener = object : IMoGoAutopilotStatusListener { - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { + override fun onAutopilotStatusResponse(state: Int) { ThreadUtils.runOnUiThread { - val state = autoPilotStatusInfo.state d("$M_BUS_P$TAG", "state = %s", state) if (autopilotIV != null) { if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt index 44cbd07239..8fa67f63d3 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt @@ -5,7 +5,6 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.deva.bindingcar.AdUpgradeStateHelper import com.mogo.eagle.core.data.deva.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.data.map.MogoLocation @@ -44,8 +43,6 @@ class SystemVersionView @JvmOverloads constructor( } private var dockerVersion: String? = null //工控机版本 - private var autopilotStatus: Int? = null //自动驾驶状态 0代表不可自动驾驶,1代表可自动驾驶,2代表自动驾驶中 - private var ipcUpgradeStateInfo: IPCUpgradeStateInfo?=null private var needQueryContainers: Boolean = false @@ -320,17 +317,9 @@ class SystemVersionView @JvmOverloads constructor( needQueryContainers = false } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - dockerVersion = autoPilotStatusInfo.dockVersion - autopilotStatus = autoPilotStatusInfo.state - CallerLogger.i( - "$M_HMI$TAG", - "onAutopilotStatusResponse dockerVersion=$dockerVersion , autopilotStatus=$autopilotStatus" - ) - setViewStatus() - } - - private fun setViewStatus() { + override fun onAutopilotDockerInfo(dockerVersion: String) { + super.onAutopilotDockerInfo(dockerVersion) + this.dockerVersion = dockerVersion showCurrentAdVersion() } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/VersionNameView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/VersionNameView.kt index ff0b524d51..922c5c7fa1 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/VersionNameView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/VersionNameView.kt @@ -5,16 +5,12 @@ import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import android.widget.LinearLayout -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.hmi.R -import com.mogo.eagle.core.function.main.AppListActivity import com.mogo.eagle.core.utilcode.kotlin.* -import com.mogo.eagle.core.utilcode.util.ActivityUtils import com.mogo.eagle.core.utilcode.util.AppUtils -import com.mogo.eagle.core.utilcode.util.UiThreadHandler import kotlinx.android.synthetic.main.view_version_name.view.* import kotlinx.coroutines.* @@ -89,11 +85,12 @@ class VersionNameView @JvmOverloads constructor( CallerAutoPilotStatusListenerManager.removeListener(TAG) } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - dockerVersion = autoPilotStatusInfo.dockVersion + override fun onAutopilotDockerInfo(dockerVersion: String) { + super.onAutopilotDockerInfo(dockerVersion) + this.dockerVersion = dockerVersion showCurrentMapVersion() //将工控机版本赋值给BadCase配置常量 - CallerDevaToolsManager.dockerVersion(autoPilotStatusInfo.dockVersion) + CallerDevaToolsManager.dockerVersion(dockerVersion) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java index d348d6f898..5478f6e030 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java @@ -91,12 +91,15 @@ public class MogoRouteOverlayManager implements } @Override - public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autoPilotStatusInfo) { - int mode = autoPilotStatusInfo.getState(); - if (mode == 2) { + public void onAutopilotStatusResponse(int state) { + if (state == 2) { isArriveAtStation.set(false); } - this.autopilotMode.set(mode); + this.autopilotMode.set(state); + } + + @Override + public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autoPilotStatusInfo) { } @Override @@ -135,4 +138,12 @@ public class MogoRouteOverlayManager implements public void onAutopilotRouteLineId(long lineId) { } + + @Override + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + + @Override + public void onAutopilotConnectInfo(boolean connectInfo) { + } } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/view/SmallMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/view/SmallMapView.kt index 9752011274..e9fcf4c49a 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/view/SmallMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/view/SmallMapView.kt @@ -10,7 +10,6 @@ import android.widget.RelativeLayout import androidx.annotation.UiThread import com.amap.api.maps.* import com.amap.api.maps.model.* -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.map.MogoLatLng import com.mogo.eagle.core.data.map.MogoLocation @@ -50,9 +49,6 @@ class SmallMapView @JvmOverloads constructor( private var mContext: Context? = null private var mLocation: MogoLocation? = null - @Volatile - private var autoPilotStatus = 0 - companion object { const val TAG = "SmallMapView" } @@ -318,14 +314,12 @@ class SmallMapView @JvmOverloads constructor( } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - val tempStatus = autoPilotStatusInfo.state - if (tempStatus != 2) { + override fun onAutopilotStatusResponse(state: Int) { + if (state != 2) { UiThreadHandler.post { clearPolyline() } } - autoPilotStatus = tempStatus } override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) { diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt index 9ad7dc0416..69593e1738 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt @@ -29,7 +29,7 @@ class ChainConstant { const val CHAIN_TYPE_SOCKET_P_OBJECTS = 7 const val CHAIN_TYPE_SOCKET_P_ACTIONS = 8 const val CHAIN_TYPE_NATIVE_LEAK = 100 - const val CHAIN_TYPE_CLOUD_V2N = 200 + const val CHAIN_TYPE_V2X = 200 const val CHAIN_TYPE_HD_MAP = 300 const val CHAIN_TYPE_ANR = 400 const val CHAIN_LINK_LOG_WEAK_NETWORK = 500 @@ -44,7 +44,7 @@ class ChainConstant { const val CHAIN_LINK_LOG_ADAS_PLANNING_OBJECTS = "-adasWsPlanningObj" const val CHAIN_LINK_LOG_ADAS_PLANNING_ACTIONS = "-adasWsPlanningActions" const val CHAIN_LINK_LOG_RECORD_NATIVE_LEAK = "-eagleRecordNativeLeak" - const val CHAIN_LINK_LOG_CLOUD_WEB_SOCKET_V2N = "-eagleCloudWSV2N" + const val CHAIN_LINK_LOG_V2X = "-eagleCloudWSV2X" const val CHAIN_LINK_LOG_HD_MAP_BIZ = "-eagleHDMapBiz" const val CHAIN_LINK_LOG_RECORD_ANR = "-eagleRecordANR" const val CHAIN_LINK_LOG_RECORD_WEAK_NETWORK = "-eagleRecordWeakNetwork" @@ -90,7 +90,8 @@ class ChainConstant { const val CHAIN_CODE_HTTP_DNS_CITY_CODE = "CHAIN_CODE_HTTP_DNS_CITY_CODE" const val CHAIN_CODE_HTTP_DNS_ERROR_REASON = "CHAIN_CODE_HTTP_DNS_ERROR_REASON" - const val CHAIN_CODE_CLOUD_V2N = "CHAIN_CODE_CLOUD_V2N" + const val CHAIN_CODE_V2X_MSG = "CHAIN_CODE_V2X_MSG" + const val CHAIN_CODE_MSG_BOX = "CHAIN_CODE_MSG_BOX" const val CHAIN_CODE_INIT_ON_MAP_LOADED = "CHAIN_CODE_INIT_ON_MAP_LOADED" const val CHAIN_CODE_INIT_ON_MAP_INIT = "CHAIN_CODE_INIT_ON_MAP_INIT" diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/multidisplay/TelematicConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/multidisplay/TelematicConstant.kt index d838566521..e7105b12e0 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/multidisplay/TelematicConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/multidisplay/TelematicConstant.kt @@ -10,8 +10,6 @@ class TelematicConstant { const val BUSINESS_STRING = 100 const val SHOW_TRAFFIC_LIGHT = 101 const val HIDE_TRAFFIC_LIGHT = 102 - const val OPEN_ROMA_STATUS = 103 - const val ROMA_UPDATE = 104 const val CONTROL_PASSENGER_DRIVER_MONITOR = 105 const val OBU_RUNREDLIGHT_WARNING = 200 //闯红灯预警开关 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt index 56869e1a99..c4ac1e219b 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt @@ -13,18 +13,33 @@ import system_master.* interface IMoGoAutopilotStatusListener { /** - * 自动驾驶状态信息 TODO 接口优化,拆分业务属性字段 + * 自动驾驶状态信息 * * @param autoPilotStatusInfo 状态信息 */ + @Deprecated("3.3.0之后不建议使用此种回调方式,按需回调,主界面暂时使用用于check检查信息透出") fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {} /** * 自动驾驶状态信息 * - * @param status 状态信息 + * @param state 状态信息 */ - fun onAutopilotStatusResponse(status: Int) {} + fun onAutopilotStatusResponse(state: Int) {} + + /** + * 自动驾驶docker信息 + * + * @param dockerVersion docker版本 + */ + fun onAutopilotDockerInfo(dockerVersion:String){} + + /** + * 自动驾驶连接状态 + * + * @param connectInfo 连接状态 + */ + fun onAutopilotConnectInfo(connectInfo:Boolean){} /** * 自动驾驶到站 diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt index db4badb8df..cf6bcf1ef4 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt @@ -31,8 +31,8 @@ object CallerAutoPilotStatusListenerManager : CallerBase - if(oldValue != newValue){ + private var autopilotState: Int by Delegates.observable(0) { _, oldValue, newValue -> + if (oldValue != newValue) { M_LISTENERS.forEach { val listener = it.value listener.onAutopilotStatusResponse(newValue) @@ -40,12 +40,38 @@ object CallerAutoPilotStatusListenerManager : CallerBase + if (!oldValue.contentEquals(newValue)) { + M_LISTENERS.forEach { + val listener = it.value + listener.onAutopilotDockerInfo(newValue) + } + } + } + + private var connectStatus:Boolean by Delegates.observable(false){_, oldValue, newValue -> + if(oldValue != newValue){ + M_LISTENERS.forEach { + val listener = it.value + listener.onAutopilotConnectInfo(newValue) + } + } + } + @Volatile private var autoPilotMessageCode: String = "" @Volatile private var autoPilotMessageContent: String = "" + override fun doSomeAfterAddListener(tag: String, listener: IMoGoAutopilotStatusListener) { + listener.onAutopilotStatusResponse(mAutopilotStatusInfo) + listener.onAutopilotStatusResponse(autopilotState) + if(dockerV.isNotEmpty()){ + listener.onAutopilotDockerInfo(dockerV) + } + } + /** * 查询AutoPilot状态 */ @@ -61,10 +87,21 @@ object CallerAutoPilotStatusListenerManager : CallerBase { addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI, "添加感知模型到地图中……preVehicleStrWeiZhi="); @@ -1042,8 +1045,6 @@ public class AMapViewWrapper implements IMogoMapView, PointCloudHelper.INSTANCE.setPointCloudColor(color); } - - @Override public void cacheHDDataByCity(IHdCacheListener listener) { if (mMapView.getMapAutoViewHelper() != null) {