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 3967989855..417304b26e 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 @@ -29,7 +29,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener; import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener; import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener; -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager; @@ -65,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; @@ -85,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(); @@ -98,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; @@ -117,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; } @@ -128,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 @@ -136,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() { @@ -155,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); } @@ -179,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; @@ -193,7 +190,7 @@ public class BusPassengerModel { startOrStopCalculateRouteInfo(false); - if (mRouteLineInfoCallback != null){ + if (mRouteLineInfoCallback != null) { mRouteLineInfoCallback.showNoTaskView(); } @@ -201,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(); @@ -211,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; @@ -230,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; + } } } } @@ -268,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; @@ -284,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); @@ -340,7 +339,7 @@ public class BusPassengerModel { return; } - mControllerStatusCallbackMap.put(tag,callback); + mControllerStatusCallbackMap.put(tag, callback); } @@ -348,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, mMapLocationListener); + 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); } @@ -381,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); } @@ -389,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); } } @@ -409,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(); } } @@ -423,31 +422,33 @@ 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); } } } }; - private final IMoGoChassisLocationGCJ02Listener mMapLocationListener = new IMoGoChassisLocationGCJ02Listener() { - @Override - public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) { - if (null == gnssInfo) return; - mLocation = gnssInfo; - for (IBusPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){ - callback.onCarLocationChanged(gnssInfo); - } + private final IMoGoChassisLocationGCJ02Listener mMapLocationListener = gnssInfo -> { + if (null == gnssInfo) return; + mLocation = gnssInfo; + 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 onAutopilotDockerInfo(@NonNull String dockerVersion) { + } @Override public void onAutopilotRouteLineId(long lineId) { - } @Override @@ -456,34 +457,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 @@ -502,60 +493,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)); } } } @@ -563,10 +549,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(); } } @@ -576,46 +562,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; } @@ -630,19 +616,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, @@ -650,17 +637,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-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java index 6f8411205b..bffa069b93 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java @@ -32,7 +32,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Liste import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.och.bus.passenger.R; -import com.mogo.och.bus.passenger.callback.IBusPassengerMapViewCallback; import com.mogo.och.bus.passenger.utils.BusPassengerMapAssetStyleUtil; import java.util.ArrayList; @@ -103,7 +102,7 @@ public class BusPassengerMapDirectionView initAMapView(); // 注册定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, this); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 10,this); } @Override diff --git a/OCH/mogo-och-bus-passenger/src/main/assets/map_style.data b/OCH/mogo-och-bus-passenger/src/main/assets/map_style.data index 8e06219090..efcf9bf6c4 100644 Binary files a/OCH/mogo-och-bus-passenger/src/main/assets/map_style.data and b/OCH/mogo-och-bus-passenger/src/main/assets/map_style.data differ diff --git a/OCH/mogo-och-bus-passenger/src/main/assets/map_style_extra.data b/OCH/mogo-och-bus-passenger/src/main/assets/map_style_extra.data index e5a16d46be..ff5d9fb51b 100644 Binary files a/OCH/mogo-och-bus-passenger/src/main/assets/map_style_extra.data and b/OCH/mogo-och-bus-passenger/src/main/assets/map_style_extra.data differ diff --git a/OCH/mogo-och-bus/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java b/OCH/mogo-och-bus/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java index aa43036428..d15d629105 100644 --- a/OCH/mogo-och-bus/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/mogo-och-bus/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java @@ -94,8 +94,6 @@ public class OrderModel { private int backgroundCurrentStationIndex = 0;//A->B 此处值是A站点索引 private static volatile OrderModel sInstance; - public double mLongitude = 0; - public double mLatitude = 0; private Context mContext; private final List stationList = new ArrayList<>(); private BusRoutesResult busRoutesResult = null; @@ -153,7 +151,7 @@ public class OrderModel { mContext = AbsMogoApplication.getApp(); loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation(); // 定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, mMapLocationListener); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,10, mMapLocationListener); MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); @@ -382,8 +380,6 @@ public class OrderModel { @Override public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) { if (null == gnssInfo) return; - mLongitude = gnssInfo.getLongitude(); - mLatitude = gnssInfo.getLatitude(); if (mControllerStatusCallback != null) { mControllerStatusCallback.onCarLocationChanged(gnssInfo); } @@ -606,7 +602,7 @@ public class OrderModel { private void onStartAutopilot(int leaveIndex) { //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 isGoingToNextStation = true; - if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { startAutopilot(false, leaveIndex); } else { @@ -1113,6 +1109,8 @@ public class OrderModel { // 车机端上传心跳数据(只在出车状态时上传) public void runCarHeartbeat() { + double mLatitude = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLatitude(); + double mLongitude =CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLongitude(); OrderServiceManager.runCarHeartbeat(mContext, mLongitude, mLatitude, new OchCommonServiceCallback() { @Override @@ -1138,6 +1136,8 @@ public class OrderModel { // 登出 public void logout() { + double mLatitude = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLatitude(); + double mLongitude =CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLongitude(); loginService.loginOut(mLatitude, mLongitude); } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 7b70977f1b..7a584acfbb 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -158,7 +158,7 @@ public abstract class BaseBusTabFragment }); initListener(); - setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); + setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); ctvAutopilotStatus.setOnClickListener(new OnPreventFastClickListener() { @Override @@ -301,9 +301,6 @@ public abstract class BaseBusTabFragment @Override public void onAutopilotRecordResult(@Nullable RecordPanelOuterClass.RecordPanel recordPanel) { -// if (!HmiBuildConfig.isShowBadCaseView && recordPanel != null && recordPanel.getType() == 1 && recordPanel.getStat() == 100) { -// CallerDevaToolsManager.INSTANCE.onReceiveBadCaseRecord(recordPanel); -// } } @Override @@ -448,7 +445,7 @@ public abstract class BaseBusTabFragment public void stopAnimAndUpdateBtnStatus() { stopAutopilotAnimation(); - updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); + updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); } /** @@ -522,7 +519,7 @@ public abstract class BaseBusTabFragment public void run() { //未启动成功做处理 if (isAnimateRunning) {// 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态 stopAutopilotAnimation(); - updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); + updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); } } }, TIMER_START_AUTOPILOT_INTERVAL); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index bcb1422d46..cd80f7b6e0 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -13,7 +13,6 @@ import androidx.constraintlayout.widget.Group; import androidx.annotation.Nullable; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.commons.AbsMogoApplication; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.map.CenterLine; import com.mogo.eagle.core.data.temp.EventLogout; @@ -108,7 +107,7 @@ public class BusFragment extends BaseBusTabFragment groupStationsPanel = findViewById(R.id.group_stations_panel); noDataView = findViewById(R.id.no_line_data_view); - CallerLogger.INSTANCE.d(M_BUS + TAG, "initView: " + CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); + CallerLogger.INSTANCE.d(M_BUS + TAG, "initView: " + CallerAutoPilotStatusListenerManager.INSTANCE.getState()); // 初始化的时候设置 UI 按钮状态 showAutopilotBiz(); @@ -455,7 +454,7 @@ public class BusFragment extends BaseBusTabFragment } //清除鹰眼右下角小地图轨迹 - CallerLogger.INSTANCE.d(SceneConstant.M_MAP, "clearBusStationsMarkers --------->"); + CallerLogger.INSTANCE.d(SceneConstant.M_BUS, "clearBusStationsMarkers --------->"); smallMapView.clearPolyline(); } @@ -532,7 +531,7 @@ public class BusFragment extends BaseBusTabFragment public void onClick(View v) { if (v.getId() == R.id.switch_line_btn) {//切换路线条件: 自动驾驶过程中,点击则toast提示:自动驾驶中,不可切换路线 //本次行程未结束,不支持切换路线。点击则toast提示:当前行程未完成,不可切换路线 - if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { ToastUtils.showLong(getResources().getString(R.string.bus_switch_line_btn_warning1)); return; 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..d41c027b53 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,13 @@ 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) { + } + } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java index b37e399e18..947adbfc0c 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java @@ -50,13 +50,13 @@ public class BusAnalyticsManager { CallerLogger.INSTANCE.e( M_BUS + "triggerStartAutopilotFailureEvent", failMsg ); - if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_FAILURE_CODE, failCode); mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_FAILURE_MSG, failMsg); } mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_RESULT - , CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == + , CallerAutoPilotStatusListenerManager.INSTANCE.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING); MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/view/SlidePanelView.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/view/SlidePanelView.java index f04edddbdb..e010f37a76 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/view/SlidePanelView.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/view/SlidePanelView.java @@ -54,6 +54,7 @@ public class SlidePanelView extends View { NORMAL_TEXT_MARGIN_RIGHT = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_NORMAL_TEXT_MARGIN_RIGHT, NORMAL_TEXT_MARGIN_RIGHT); SHORT_TEXT_MARGIN_LEFT = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_SHORT_TEXT_MARGIN_LEFT, SHORT_TEXT_MARGIN_LEFT); SHORT_TEXT_MARGIN_RIGHT = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_SHORT_TEXT_MARGIN_RIGHT, SHORT_TEXT_MARGIN_RIGHT); + mTypedArray.recycle(); init(); } @@ -129,7 +130,7 @@ public class SlidePanelView extends View { textPaint.setShader(textGradient); textPaint.getFontMetrics(blockTextMetrics); int size = AutoSizeUtils.dp2px(getContext(), 120); - BitmapFactory.Options opts = new BitmapFactory.Options(); + BitmapFactory.Options opts = new BitmapFactory.Options(); //todo yakun 优化 opts.inDensity = (int) AutoSizeConfig.getInstance().getInitDensity(); bmBlock = BitmapFactory.decodeResource(getResources(), R.drawable.bus_base_slide_block,opts); bmBlock = Bitmap.createScaledBitmap(bmBlock, size, size, true); 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/presenter/BusPassengerFunctionOrderPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt index 1e2a850544..d7bd2cb1ac 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt @@ -9,7 +9,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.och.bus.passenger.utils.ToastCharterUtils @@ -185,7 +184,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : override fun onDestroy(owner: LifecycleOwner) { super.onDestroy(owner) - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "onDestroy") + CallerLogger.d(M_BUS_P + TAG, "onDestroy") RxUtils.disposeSubscribe(subscribeSelectLine) RxUtils.disposeSubscribe(subscribeSelectSite) BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP) @@ -196,7 +195,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : /** * 接收司机屏反馈信息 */ - val msgReceived = object : IReceivedMsgListener { + private val msgReceived = object : IReceivedMsgListener { override fun onReceivedMsg(type: Int, byteArray: ByteArray) { UiThreadHandler.post { if (type == OchCommonConst.BUSINESS_STRING) { @@ -287,7 +286,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : ToastCharterUtils.showShort("断开和司机端连接、请联系安全员") BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP) mView?.hideDataDriverRefuse() - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "endAni666") + CallerLogger.d(M_BUS_P + TAG, "endAni666") } } @@ -316,7 +315,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : val gnssSpeed = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed if (gnssSpeed < 0.5) { - when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { + when (CallerAutoPilotStatusListenerManager.getState()) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 return true } @@ -325,13 +324,13 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { // 自动驾驶中 - when (StopSideStatusManager.stopSiteStatus) { + return when (StopSideStatusManager.stopSiteStatus) { StopSideStatusManager.Status.EndingSuccess -> { - return true + true } else ->{ ToastCharterUtils.showShort("自动驾驶中无法切换线路") - return false + false } } } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt index be25f6b913..a06052e277 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt @@ -163,7 +163,7 @@ class BusPassengerPresenter(view: MainFragment?) : } OrderStatusEnum.OrdersWithLine -> {} OrderStatusEnum.NoOrderUse -> { - when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { + when (CallerAutoPilotStatusListenerManager.getState()) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 ToastCharterUtils.showShort("设备未就绪请稍等,请安全员主动停止车辆") } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt index 1409785af6..a3d1cde613 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt @@ -57,7 +57,7 @@ class M1ContainFragment : setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏 } - private fun setCheckView() { + private fun setCheckView() { //todo yakun 优化 CallerLogger.d(M_BUS_P+ TAG, "setCheckView") when (tab) { VIDEOTAB -> { diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt index a7ad0f56cd..bd02492dd7 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt @@ -82,7 +82,7 @@ class GoViewWithArrive @JvmOverloads constructor( ToastCharterUtils.showShort(string) return } - when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { + when (CallerAutoPilotStatusListenerManager.getState()) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 ToastCharterUtils.showShort("设备未就绪请稍等") } @@ -122,7 +122,7 @@ class GoViewWithArrive @JvmOverloads constructor( }) RxUtils.disposeSubscribe(startAutoTimeOut) startAutoTimeOut = RxUtils.createSubscribe(20_000) { - if (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { + if (CallerAutoPilotStatusListenerManager.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { val string = AbsMogoApplication.getApp().getString(R.string.m1_start_auto_fail) ToastCharterUtils.showLong(string) } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt index 444c35b3da..8266b48292 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt @@ -29,7 +29,7 @@ class StopSiteView @JvmOverloads constructor( } private fun stopSite(){ - when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { + when (CallerAutoPilotStatusListenerManager.getState()) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 ToastCharterUtils.showShort("设备未就绪请稍等,请稍后再试") } 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 df793fbdf9..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) @@ -93,15 +89,11 @@ class StatusBarView @JvmOverloads constructor( progress.progress = 50 tv_power_cos.text = "50%" - val state = CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state - setAutoPilotSatusInfo(state) + val state = CallerAutoPilotStatusListenerManager.getState() + 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/manager/CharterAnalyticsManager.java b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterAnalyticsManager.java index 7418517a4d..0338c6f393 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterAnalyticsManager.java +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterAnalyticsManager.java @@ -49,13 +49,13 @@ public class CharterAnalyticsManager { CallerLogger.INSTANCE.e( M_BUS + "triggerStartAutopilotFailureEvent", failMsg ); - if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ mStartAutopilotParams.put(CharterConst.EVENT_PARAM_START_FAILURE_CODE, failCode); mStartAutopilotParams.put(CharterConst.EVENT_PARAM_START_FAILURE_MSG, failMsg); } mStartAutopilotParams.put(CharterConst.EVENT_PARAM_START_RESULT - , CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == + , CallerAutoPilotStatusListenerManager.INSTANCE.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING); MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index 65ca0483fa..e77143325d 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -110,8 +110,7 @@ class DriverM1Model { fun init(context: Context) { mContext = context // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, mMapLocationListener) -// CallerChassisLocationGCJ02ListenerManager.setListenerHz(TAG,2) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10,mMapLocationListener) //开启自驾后 异常信息返回 OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener) 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-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt index 0527ff1675..96bc9a4150 100644 --- a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt +++ b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt @@ -17,7 +17,7 @@ import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.mvp.Presenter import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getState import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.initAiCollect import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.initBadCase @@ -126,7 +126,7 @@ abstract class CharterBaseFragment?>() : } }) initListener() - setAutopilotBtnStatus(getAutoPilotStatusInfo().state) + setAutopilotBtnStatus(getState()) ctvAutopilotStatus!!.setOnClickListener(object : OnPreventFastClickListener() { override fun onClickImpl(v: View) { restartAutopilot() @@ -394,7 +394,7 @@ abstract class CharterBaseFragment?>() : open fun stopAnimAndUpdateBtnStatus() { stopAutopilotAnimation() - updateAutopilotStatus(getAutoPilotStatusInfo().state) + updateAutopilotStatus(getState()) } @@ -453,7 +453,7 @@ abstract class CharterBaseFragment?>() : //未启动成功做处理 if (isAnimateRunning) { // 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态 stopAutopilotAnimation() - updateAutopilotStatus(getAutoPilotStatusInfo().state) + updateAutopilotStatus(getState()) } }, CharterConst.TIMER_START_AUTOPILOT_INTERVAL) } diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/trajectorymamager/DistanceDegree.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/trajectorymamager/DistanceDegree.kt index 3cf5bb7d5a..d0c11e1810 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/trajectorymamager/DistanceDegree.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/trajectorymamager/DistanceDegree.kt @@ -2,7 +2,7 @@ package com.mogo.och.common.module.manager.trajectorymamager data class DistanceDegree(var distance:Float,var degree:Double?,var isNext:Boolean?):Comparable{ override fun compareTo(other: DistanceDegree): Int { - // 对比面积 + // 对比距离 if(distance == other.distance){ return 0; } else if(distance < other.distance){ diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/trajectorymamager/TrajectoryAndDistanceManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/trajectorymamager/TrajectoryAndDistanceManager.kt index 70f247b76d..be6369dc1b 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/trajectorymamager/TrajectoryAndDistanceManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/trajectorymamager/TrajectoryAndDistanceManager.kt @@ -16,7 +16,7 @@ import mogo.telematics.pad.MessagePad import java.util.ArrayList import java.util.concurrent.ConcurrentHashMap -object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ +object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ private val distanceListeners: ConcurrentHashMap = ConcurrentHashMap() private val trajectoryListeners: ConcurrentHashMap = ConcurrentHashMap() @@ -26,15 +26,15 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ const val TAGDISTANCE = "BusPassengerModelDistance" - fun addListener(tag: String, listener: IDistanceListener) { + fun addDistanceListener(tag: String, listener: IDistanceListener) { if (distanceListeners.containsKey(tag)) { return } distanceListeners[tag] = listener } - fun addListener(tag: String, listener: ITrajectoryListener) { + fun addTrajectoryListener(tag: String, listener: ITrajectoryListener) { if (trajectoryListeners.containsKey(tag)) { return } trajectoryListeners[tag] = listener } - fun addListener(tag: String, listener: ITrajectoryWithStationListener) { + fun addTrajectoryWithStationListener(tag: String, listener: ITrajectoryWithStationListener) { if (trajectoryWithStationListeners.containsKey(tag)) { return } trajectoryWithStationListeners[tag] = listener } @@ -74,6 +74,7 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ d(M_OCHCOMMON + TAG, "收到轨迹:${it.size}第一个点${it[0]}最后一个点:${it.last()}") endCalculateDistanceLoop() updateRoutePoints(it) + preCarLocationIndexInTrajectory = 0 startCalculateDistanceLoop() } } @@ -121,7 +122,6 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ private fun calculateDistance() { //mLocation gcj坐标 CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let { - if (mRoutePoints.isNullOrEmpty() || endStationInfo.stationPoint == null) { d(M_OCHCOMMON + TAG, "没有轨迹或站点坐标停止计算") //结束距离计算 @@ -175,6 +175,11 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ val carLocationInfo = CoordinateCalculateRouteUtil.getNearestPointInfo( preCarLocationIndexInTrajectory, mRoutePoints!!, location ) + if(carLocationInfo.second==null||carLocationInfo.third>1_000){ + preCarLocationIndexInTrajectory = 0 + return + } + d(M_OCHCOMMON+ TAG,"距离车最近的点:${carLocationInfo.first} 点下后面的轨迹:${carLocationInfo.second} 距离点的距离:${carLocationInfo.third}") preCarLocationIndexInTrajectory = carLocationInfo.first // 计算结束站点在轨迹中的信息 这个是一个常量可以缓存 @@ -210,9 +215,9 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ var lastSumLength = 0f val stationIndex = endStationInfo.index?:0 - if (preCarLocationIndexInTrajectory < stationIndex) { + if (carLocationInfo.first < stationIndex-1) { // subList 是[) 需要的是[] - val subList = mRoutePoints!!.subList(preCarLocationIndexInTrajectory, stationIndex + 1) + val subList = mRoutePoints!!.subList(carLocationInfo.first, stationIndex + 1) // 轨迹点所有的距离 lastSumLength = CoordinateCalculateRouteUtil.calculateRouteSumLength(subList) val stationDistance = endStationInfo.distance ?: 0f @@ -221,16 +226,15 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ } else {// isNext = false lastSumLength += stationDistance } - - if (carLocationInfo.second == true) { + if (carLocationInfo.second == true) {// 是否是下一个 true 下一个 lastSumLength += carLocationInfo.third } else { lastSumLength -= carLocationInfo.third } } else { - val lastPoints = mRoutePoints!![endStationInfo.index!!] + val lastPoints = endStationInfo.stationPoint lastSumLength = CoordinateUtils.calculateLineDistance( - lastPoints.longitude, lastPoints.latitude, + lastPoints!!.longitude, lastPoints!!.latitude, location.longitude, location.latitude ) } @@ -272,21 +276,20 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ location: MogoLocation ) { if (mRoutePoints.isNullOrEmpty()) return - var tempPoints = mutableListOf() val routeArrivied = mutableListOf() val routeArriving = mutableListOf() + var fromCut = 0 + var endCut = mRoutePoints!!.size if (startStationInfo.stationPoint != null && startStationInfo.isNext != null && startStationInfo.index != null && startStationInfo.distance != null ) { if(startStationInfo.isNext==true){ - tempPoints.addAll(mRoutePoints!!.subList(startStationInfo.index!!,mRoutePoints!!.size)) + fromCut = startStationInfo.index!! }else{ - tempPoints.addAll(mRoutePoints!!.subList(startStationInfo.index!!+1,mRoutePoints!!.size)) + fromCut = startStationInfo.index!!+1 } - }else{ - tempPoints.addAll(mRoutePoints!!) } if (endStationInfo.stationPoint != null @@ -294,21 +297,19 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ && endStationInfo.index != null && endStationInfo.distance != null ) { - val index = endStationInfo.index!! if(endStationInfo.isNext==true){ - tempPoints = tempPoints.subList(0, index-1) + endCut = endStationInfo.index!! }else{ - tempPoints = tempPoints.subList(0, index) + endCut = endStationInfo.index!!+1 } } - if(carLocationInfo.second==true){// isNext = true - routeArrivied.addAll(tempPoints.subList(0,carLocationInfo.first)) - routeArriving.addAll(mRoutePoints!!.subList(carLocationInfo.first,mRoutePoints!!.size)) + routeArrivied.addAll(mRoutePoints!!.subList(fromCut,carLocationInfo.first)) + routeArriving.addAll(mRoutePoints!!.subList(carLocationInfo.first,endCut)) }else{// isNext = false val indexNext = carLocationInfo.first+1 - routeArrivied.addAll(tempPoints.subList(0,indexNext)) - routeArriving.addAll(mRoutePoints!!.subList(indexNext,mRoutePoints!!.size)) + routeArrivied.addAll(mRoutePoints!!.subList(fromCut,indexNext)) + routeArriving.addAll(mRoutePoints!!.subList(indexNext,endCut)) } routeArrivied.add(0, startStationInfo.stationPoint!!) diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index 2f5abc824e..5679d2d878 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -346,7 +346,7 @@ public class BusPassengerModel { IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener ); MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener ); // 定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, mMapLocationListener); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 10,mMapLocationListener); //2021.11.1 自动驾驶路线规划接口 CallerPlanningRottingListenerManager.INSTANCE.addListener(TAG,moGoAutopilotPlanningListener); diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java index 672bb15b87..21e33faa4f 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java @@ -103,7 +103,7 @@ public class BusPassengerMapDirectionView initAMapView(); // 注册定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, this); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 10,this); } @Override 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 214f37bbf2..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 @@ -119,8 +119,7 @@ class PM2DrivingModel private constructor() { CallerAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener) // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, mMapLocationListener) -// CallerChassisLocationGCJ02ListenerManager.setListenerHz(TAG,2)//设置2hz, 1s返回2次 + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10,mMapLocationListener) //司乘屏通信监听 CallerTelematicListenerManager.addListener(TAG,mReceivedMsgListener) @@ -301,16 +300,10 @@ class PM2DrivingModel private constructor() { private val mAutoPilotStatusListener: IMoGoAutopilotStatusListener = object : IMoGoAutopilotStatusListener { - override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) { - super.onAutopilotArriveAtStation(arrivalNotification) - } - - 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 @@ -319,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-passenger/src/main/assets/map_style.data b/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style.data index 8e06219090..efcf9bf6c4 100644 Binary files a/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style.data and b/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style.data differ diff --git a/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style_extra.data b/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style_extra.data index e5a16d46be..ff5d9fb51b 100644 Binary files a/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style_extra.data and b/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style_extra.data differ diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 2afd1c117d..fcaa20a6ad 100644 --- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -161,7 +161,7 @@ public abstract class BaseBusTabFragment }); initListener(); - setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); + setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); ctvAutopilotStatus.setOnClickListener(new OnPreventFastClickListener() { @Override @@ -308,9 +308,6 @@ public abstract class BaseBusTabFragment @Override public void onAutopilotRecordResult(@Nullable RecordPanelOuterClass.RecordPanel recordPanel) { -// if (!HmiBuildConfig.isShowBadCaseView && recordPanel != null && recordPanel.getType() == 1 && recordPanel.getStat() == 100) { -// CallerDevaToolsManager.INSTANCE.onReceiveBadCaseRecord(recordPanel); -// } } @Override @@ -455,7 +452,7 @@ public abstract class BaseBusTabFragment public void stopAnimAndUpdateBtnStatus() { stopAutopilotAnimation(); - updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); + updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); } /** @@ -529,7 +526,7 @@ public abstract class BaseBusTabFragment public void run() { //未启动成功做处理 if (isAnimateRunning) {// 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态 stopAutopilotAnimation(); - updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); + updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); } } }, TIMER_START_AUTOPILOT_INTERVAL); diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index 737a96683a..2ee9511215 100644 --- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -113,7 +113,7 @@ public class BusFragment extends BaseBusTabFragment groupStationsPanel = findViewById(R.id.group_stations_panel); noDataView = findViewById(R.id.no_line_data_view); - CallerLogger.INSTANCE.d(M_BUS + TAG, "initView: " + CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()); + CallerLogger.INSTANCE.d(M_BUS + TAG, "initView: " + CallerAutoPilotStatusListenerManager.INSTANCE.getState()); // 初始化的时候设置 UI 按钮状态 showAutopilotBiz(); @@ -461,7 +461,7 @@ public class BusFragment extends BaseBusTabFragment } //清除鹰眼右下角小地图轨迹 - CallerLogger.INSTANCE.d(SceneConstant.M_MAP, "clearBusStationsMarkers --------->"); + CallerLogger.INSTANCE.d(SceneConstant.M_BUS, "clearBusStationsMarkers --------->"); smallMapView.clearPolyline(); } @@ -535,7 +535,7 @@ public class BusFragment extends BaseBusTabFragment public void onClick(View v) { if (v.getId() == R.id.switch_line_btn) {//切换路线条件: 自动驾驶过程中,点击则toast提示:自动驾驶中,不可切换路线 //本次行程未结束,不支持切换路线。点击则toast提示:当前行程未完成,不可切换路线 - if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { ToastUtils.showLong(getResources().getString(R.string.bus_switch_line_btn_warning1)); return; diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java index 1b008172e8..787429540c 100644 --- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -163,8 +163,7 @@ public class OrderModel { mContext = AbsMogoApplication.getApp(); loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation(); // 定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,mMapLocationListener); -// CallerChassisLocationGCJ02ListenerManager.INSTANCE.setListenerHz(TAG,2);//设置5hz, 1s返回一次 + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,10,mMapLocationListener); MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); @@ -700,7 +699,7 @@ public class OrderModel { private void onStartAutopilot(int leaveIndex) { //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 isGoingToNextStation = true; - if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { startAutopilot(false, leaveIndex); } else { 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..ea411d37b0 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,9 @@ public class BusPresenter extends Presenter public void onStartAdasFailure() { runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); } + + @Override + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + } diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java index b37e399e18..947adbfc0c 100644 --- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java +++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java @@ -50,13 +50,13 @@ public class BusAnalyticsManager { CallerLogger.INSTANCE.e( M_BUS + "triggerStartAutopilotFailureEvent", failMsg ); - if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_FAILURE_CODE, failCode); mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_FAILURE_MSG, failMsg); } mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_RESULT - , CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == + , CallerAutoPilotStatusListenerManager.INSTANCE.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING); MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); 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 daaf6b231c..3ebb43d7ba 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(); //待服务订单 @@ -241,7 +240,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback IntentManager.getInstance().registerIntentListener( ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener ); MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); // 定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,mMapLocationListener); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,10,mMapLocationListener); //2021.11.1 自动驾驶路线规划接口 CallerPlanningRottingListenerManager.INSTANCE.addListener(TAG,moGoAutopilotPlanningListener); @@ -477,7 +476,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback // 自车定位 private final IMoGoChassisLocationGCJ02Listener mMapLocationListener = new IMoGoChassisLocationGCJ02Listener() { @Override - public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) { + public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) { //todo mingjun 优化 //位置变化时,通过围栏判断是否到达x点 if (null == gnssInfo) return; if (checkCurrentOCHOrder()) { @@ -500,8 +499,11 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){ @Override - public void onAutopilotRouteLineId(long lineId) { + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + @Override + public void onAutopilotRouteLineId(long lineId) { } @Override @@ -510,31 +512,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 +541,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 +552,12 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback arriveAtEnd = false; } } - if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable(); } } @Override public void onAutopilotSNRequest() { - } @Override @@ -586,7 +578,6 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback @Override public void onAutopilotStatusRespByQuery(@NonNull SystemStatusInfo.StatusInfo status) { - } }; diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index 3254104ca0..05a1063d44 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -97,7 +97,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState()), 1000L); } @NonNull diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java index 7b18908634..3a5a53d67a 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java @@ -104,7 +104,7 @@ public class TaxiPassengerMapDirectionView initAMapView(); // 注册定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, this); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 10,this); } @Override diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.java index 21ff9ef517..a3b8d863a1 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.java @@ -52,7 +52,7 @@ public class TaxiPassengerAnalyticsManager { CallerLogger.INSTANCE.e( M_BUS + "triggerStartAutopilotFailureEvent", failMsg ); - if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_FAILURE_CODE, failCode); mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_FAILURE_MSG, @@ -60,7 +60,7 @@ public class TaxiPassengerAnalyticsManager { } mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_RESULT - , CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == + , CallerAutoPilotStatusListenerManager.INSTANCE.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING); MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); 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 d07526da74..d9684e0c27 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; @@ -75,7 +80,6 @@ import com.mogo.och.taxi.utils.OrderUtil; import com.mogo.och.taxi.utils.TaxiAnalyticsManager; import com.mogo.och.taxi.utils.TaxiTrajectoryManager; import com.zhjt.service.chain.ChainLog; -import com.zhjt.service.chain.TracingConstants; import org.jetbrains.annotations.NotNull; @@ -92,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_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_ADAS; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; - /** * Created by pangfan on 2021/8/19 *

@@ -115,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; //当前订单 @@ -134,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; @@ -224,7 +222,7 @@ public class TaxiModel { MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); //定位监听, 传false是高德坐标系 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,mMapLocationLIstener); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,10, mMapLocationListener); //2021.11.1 自动驾驶路线规划接口 CallerPlanningRottingListenerManager.INSTANCE.addListener(TAG, moGoAutopilotPlanningListener); @@ -249,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); } }; @@ -289,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) { @@ -348,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) { @@ -461,7 +459,7 @@ public class TaxiModel { @Override public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); + ToastUtilsOch.showWithCodeMessage(code, msg); } }); } @@ -490,7 +488,7 @@ public class TaxiModel { @Override public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); + ToastUtilsOch.showWithCodeMessage(code, msg); } }); } @@ -544,7 +542,7 @@ public class TaxiModel { @Override public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); + ToastUtilsOch.showWithCodeMessage(code, msg); } }); } @@ -638,7 +636,7 @@ public class TaxiModel { @Override public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); + ToastUtilsOch.showWithCodeMessage(code, msg); } }); } @@ -732,7 +730,7 @@ public class TaxiModel { @Override public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); + ToastUtilsOch.showWithCodeMessage(code, msg); } }); } @@ -748,7 +746,7 @@ public class TaxiModel { TaxiServiceManager.confirmAutopilotConditionByDriver(mContext, mCurrentOCHOrder.orderNo, result, - new OchCommonServiceCallback(){ + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -762,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() { @@ -820,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; @@ -831,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); @@ -847,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; } @@ -855,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); } @@ -891,12 +889,10 @@ public class TaxiModel { * 以当前订单为基础,开启自动驾驶 **/ @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, - linkCode = CHAIN_LINK_ADAS, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT, - paramIndexes = {-1}, // - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_OCH_TAXI_START_AUTOPILOT, + paramIndexes = {-1} ) public void startAutoPilot() { @@ -908,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( @@ -929,17 +925,11 @@ public class TaxiModel { return; } - if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE - == CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().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; } @@ -953,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); @@ -1026,7 +1016,6 @@ public class TaxiModel { if (distance <= TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) { arrivedStartPoint(); - return; } } @@ -1037,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(); } } @@ -1048,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(); } } @@ -1068,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点 @@ -1078,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); } } @@ -1092,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; @@ -1112,7 +1101,6 @@ public class TaxiModel { return; } arriveTerminal(); - return; } } @@ -1161,8 +1149,11 @@ public class TaxiModel { private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener() { @Override - public void onAutopilotRouteLineId(long lineId) { + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + @Override + public void onAutopilotRouteLineId(long lineId) { } @Override @@ -1176,26 +1167,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) { @@ -1206,10 +1195,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() @@ -1218,34 +1206,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 @@ -1277,7 +1261,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()); } @@ -1291,12 +1275,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); } } @@ -1351,7 +1334,7 @@ public class TaxiModel { CallerLogger.INSTANCE.d(M_TAXI + TAG, "--------计算出sumLength开始---------- "); //转换成高德坐标系 - if (mRoutePoints.size() > 0){ + if (mRoutePoints.size() > 0) { mRoutePoints.clear(); } mRoutePoints.addAll(CoordinateCalculateRouteUtil @@ -1367,14 +1350,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); } } @@ -1389,18 +1372,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( @@ -1413,9 +1396,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) { @@ -1430,16 +1413,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); } @@ -1540,7 +1523,7 @@ public class TaxiModel { }); } - public void startServicePilotDone(){ + public void startServicePilotDone() { if (mCurrentOCHOrder == null) return; TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); @@ -1561,7 +1544,7 @@ public class TaxiModel { }); } - public void arrivedStartPoint(){ + public void arrivedStartPoint() { if (mCurrentOCHOrder == null) return; TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; @@ -1582,7 +1565,7 @@ public class TaxiModel { }); } - public void arriveTerminal(){ + public void arriveTerminal() { if (mCurrentOCHOrder == null) return; TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; @@ -1603,7 +1586,7 @@ public class TaxiModel { }); } - public void orderCompleted(){ + public void orderCompleted() { if (mCurrentOCHOrder == null) return; TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; @@ -1625,28 +1608,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/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index 72c76408eb..fde991f2ac 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -329,7 +329,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS if (null != location){ runOnUIThread(() -> { mView.updateSpeedView((float) location.getGnssSpeed()); - mView.updateLocation(location.getLatitude(),location.getLongitude()); }); } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index 2bd1fc7c0d..8b928582cb 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -228,7 +228,7 @@ public abstract class BaseTaxiTabFragment @@ -363,9 +363,6 @@ public abstract class BaseTaxiTabFragment grabOrderFragmentWR; + private WeakReference serverOrdersFragmentWR; private WeakReference personalDialogFragment = null; - protected double mCurLatitude = 0.0; - protected double mCurLongitude = 0.0; private LoginService loginService; @Override @@ -120,32 +118,34 @@ public class TaxiFragment extends BaseTaxiTabFragment(TaxiServerOrdersFragment.newInstance()); + grabOrderFragmentWR = new WeakReference<>(TaxiGrabOrderFragment.newInstance()); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); //默认显示OCHTaxiServerOrdersFragment - transaction.add(R.id.fragment_container, serverOrdersFragment).show(serverOrdersFragment); - transaction.add(R.id.fragment_container, grabOrderFragment).hide(grabOrderFragment); + transaction.add(R.id.fragment_container, serverOrdersFragmentWR.get()).show(serverOrdersFragmentWR.get()); + transaction.add(R.id.fragment_container, grabOrderFragmentWR.get()).hide(grabOrderFragmentWR.get()); transaction.commitAllowingStateLoss(); } private void showGrabFragmentAndUpdate() { FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); - if (grabOrderFragment == null) { - grabOrderFragment = TaxiGrabOrderFragment.newInstance(); - transaction.add(R.id.fragment_container, grabOrderFragment).show(grabOrderFragment).commitAllowingStateLoss(); + if (grabOrderFragmentWR == null || grabOrderFragmentWR.get() == null) { + grabOrderFragmentWR = new WeakReference<>(TaxiGrabOrderFragment.newInstance()); + transaction.add(R.id.fragment_container, grabOrderFragmentWR.get()) + .show(grabOrderFragmentWR.get()).commitAllowingStateLoss(); } else { - transaction.show(grabOrderFragment).hide(serverOrdersFragment).commitAllowingStateLoss(); + transaction.show(grabOrderFragmentWR.get()).hide(serverOrdersFragmentWR.get()).commitAllowingStateLoss(); } } public void showServerFragmentAndUpdate() { FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); - if (serverOrdersFragment == null) { - serverOrdersFragment = TaxiServerOrdersFragment.newInstance(); - transaction.add(R.id.fragment_container, serverOrdersFragment).show(serverOrdersFragment); + if (serverOrdersFragmentWR == null || serverOrdersFragmentWR.get() == null) { + serverOrdersFragmentWR = new WeakReference<>(TaxiServerOrdersFragment.newInstance()); + transaction.add(R.id.fragment_container, serverOrdersFragmentWR.get()) + .show(serverOrdersFragmentWR.get()); } else { - transaction.show(serverOrdersFragment).hide(grabOrderFragment).commitAllowingStateLoss(); + transaction.show(serverOrdersFragmentWR.get()).hide(grabOrderFragmentWR.get()).commitAllowingStateLoss(); } } @@ -210,8 +210,8 @@ public class TaxiFragment extends BaseTaxiTabFragment waitServiceList) { if (null == waitServiceList) return; - if (null == serverOrdersFragment) return; - serverOrdersFragment.onOrdersWaitServiceChanged(waitServiceList); + if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return; + serverOrdersFragmentWR.get().onOrdersWaitServiceChanged(waitServiceList); } public void queryCurOrderRouteInfo() { @@ -333,18 +333,13 @@ public class TaxiFragment extends BaseTaxiTabFragment @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,9 @@ public class SweeperPresenter extends Presenter public void setRouteList(@NonNull ArrayList routeList) { mView.setTaskRouteList(routeList); } + + @Override + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + } diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/util/SweeperAnalyticsManager.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/util/SweeperAnalyticsManager.java index bf01bbf0b5..5977e000fb 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/util/SweeperAnalyticsManager.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/util/SweeperAnalyticsManager.java @@ -51,13 +51,13 @@ public class SweeperAnalyticsManager { CallerLogger.INSTANCE.e( M_SWEEPER + "triggerStartAutopilotFailureEvent", failMsg ); - if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_START_FAILURE_CODE, failCode); mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_START_FAILURE_MSG, failMsg); } mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_START_RESULT - , CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == + , CallerAutoPilotStatusListenerManager.INSTANCE.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING); MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); diff --git a/app/config/urlConfig.json b/app/config/urlConfig.json index 3f1a8642b2..e5c9512703 100644 --- a/app/config/urlConfig.json +++ b/app/config/urlConfig.json @@ -115,25 +115,25 @@ }, "saas": { "qa": { - "och_url": "https://och-a.zhidaozhixing.com", - "shuttle_url": "https://och-a.zhidaozhixing.com", - "passport_url": "https://och-a.zhidaozhixing.com/arch/passport/", - "socket_base_url": "https://och-a.zhidaozhixing.com/arch/push/", - "socket_tech_url": "https://och-a.zhidaozhixing.com/arch/", - "eagle_mis_url": "http://eagle-mis-a.zhidaozhixing.com/", - "eagle_dns_url": "http://eagle-dns-a.zhidaozhixing.com/", - "bind_driver_qr_url": "https://tech.zhidaohulian.com?pipe=asafety&sn=%1$s", + "och_url": "https://mogogo-driver-qa.zhidaozhixing.com", + "shuttle_url": "https://mogogo-driver-qa.zhidaozhixing.com", + "passport_url": "https://mogogo-driver-qa.zhidaozhixing.com/arch/passport/", + "socket_base_url": "https://mogogo-driver-qa.zhidaozhixing.com/arch/push/", + "socket_tech_url": "https://mogogo-driver-qa.zhidaozhixing.com/arch/", + "eagle_mis_url": "https://mogogo-qa.zhidaozhixing.com/", + "eagle_dns_url": "https://mogogo-qa.zhidaozhixing.com/", + "bind_driver_qr_url": "https://och-mini-mogogo.zhidaozhixing.com?pipe=mogogosafety&sn=%1$s", "chart_socket_url":"" }, "online": { - "och_url": "https://tech.zhidaohulian.com", + "och_url": "https://mogogo-driver.zhidaozhixing.com", "shuttle_url": "https://mogogo-driver.zhidaozhixing.com", "passport_url": "https://mogogo-driver.zhidaozhixing.com/arch/passport/", "socket_base_url": "https://mogogo-driver.zhidaozhixing.com/arch/push/", "socket_tech_url": "https://mogogo-driver.zhidaozhixing.com/arch/", "eagle_mis_url": "https://mogogo.zhidaozhixing.com/", "eagle_dns_url": "https://mogogo.zhidaozhixing.com/", - "bind_driver_qr_url": "https://tech.zhidaohulian.com?pipe=asafety&sn=%1$s", + "bind_driver_qr_url": "https://och-mini-mogogo.zhidaozhixing.com?pipe=mogogosafety&sn=%1$s", "chart_socket_url":"" }, "demo": { diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index f35d8258c0..1c46d04e73 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -11,6 +11,7 @@ import com.mogo.eagle.core.utilcode.util.SharedPrefs; import com.mogo.launcher.crash.CrashSystem; import com.mogo.launcher.startup.ARouterStartUp; import com.mogo.launcher.startup.ConfigStartUp; +import com.zhjt.service.chain.TraceNodeCore; /** * @author congtaowang @@ -22,9 +23,9 @@ public class MogoApplication extends MainMoGoApplication { @Override public void onCreate() { + TraceNodeCore.Companion.getTraceNodeCore().setDebugMode(true); //todo ARouterStartUp.init(this); ConfigStartUp.init(this); - CallerStartUpManager.initStageOne(); tryEnableStrictMode(); super.onCreate(); } diff --git a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt index 5ccbec8187..70cc28725c 100644 --- a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt @@ -132,7 +132,6 @@ object ConfigStartUp { val mapParams = MapParams.init() mapParams.setDebugMode(false) // 1-使用本地地图数据,0-使用在线地图数据 //.setDataFileSource(1) - .setDebugMode(false) .setIsRecordLogs(false) .setCoordinateType(MapParams.COORDINATETYPE_GCJ02) .setPerspectiveMode(MapParams.MAP_PERSPECTIVE_UP_CAR) diff --git a/build.gradle b/build.gradle index 92ae14d02d..3349642047 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ buildscript { classpath "com.alibaba:arouter-register:10.0.5_mogo" classpath 'com.tencent.bugly:symtabfileuploader:2.2.1' classpath "com.bytedance.android.byteX:base-plugin:${plugin_version}" - classpath "com.mogo.cloud:hook:${plugin_version}" + classpath "com.mogo.cloud:hook:${service_chain_version}" classpath "com.mogo.cloud:bizconfig:${plugin_version}" classpath 'com.volcengine:apm_insight_plugin:1.4.2' classpath "com.mogo.thread.opt:plg:${plugin_version}" diff --git a/config.gradle b/config.gradle index f3f81b0b37..266ba7ac30 100644 --- a/config.gradle +++ b/config.gradle @@ -113,8 +113,8 @@ ext { circleimageview : "de.hdodenhof:circleimageview:3.0.1", //plugin - mogochainbase : "com.mogo.cloud:service-chain:${plugin_version}", - mogochainplugin : "com.mogo.cloud:hook:${plugin_version}", + mogochainbase : "com.mogo.cloud:service-chain:${service_chain_version}", + mogochainplugin : "com.mogo.cloud:hook:${service_chain_version}", mogoservicebiz : "com.mogo.cloud:service-biz:${plugin_version}", mogobizconfig : "com.mogo.cloud:bizconfig:${plugin_version}", diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/DispatchAutoPilotManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/DispatchAutoPilotManager.kt index b8bc49e6b7..4305686ca9 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/DispatchAutoPilotManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/DispatchAutoPilotManager.kt @@ -3,7 +3,6 @@ package com.mogo.eagle.function.biz.dispatch import android.content.Context import android.os.Handler import android.os.Message -import android.util.Log import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.commons.voice.AIAssist @@ -16,12 +15,13 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener import com.mogo.eagle.core.function.api.hmi.autopilot.IMoGoCheckAutoPilotBtnListener 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.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getState import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BIZ import com.mogo.eagle.core.utilcode.util.CoordinateUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.function.biz.dispatch.network.DispatchServiceModel.Companion.DISPATCH_COMPLETED @@ -36,7 +36,7 @@ import com.zhjt.mogo.adas.data.bean.MogoReport import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg - +//todo emArrow 添加biz链路日志 //负责监听自动驾驶状态并进行状态上报,自动驾驶路线上报,接收调度指令展示指令弹窗 class DispatchAutoPilotManager private constructor() : IMogoOnMessageListener, @@ -73,10 +73,7 @@ class DispatchAutoPilotManager private constructor() : msg.obj as DispatchAdasAutoPilotLocReceiverBean CallerHmiManager.showDispatchDialog(msgData) } else if (msg.what == MSG_TYPE_UPLOAD_AUTOPILOT_STATUS) { - dispatchServiceModel.uploadAutopilotStatus( - getAutoPilotStatusInfo().state, - getAutoPilotStatusInfo().reason - ) + dispatchServiceModel.uploadAutopilotStatus(getState(), "") sendEmptyMessageDelayed(MSG_TYPE_UPLOAD_AUTOPILOT_STATUS, 1000L) } else if(msg.what == MSG_TYPE_UPLOAD_AUTOPILOT_ROTTING){ val data = msg.obj as MessagePad.GlobalPathResp @@ -119,7 +116,7 @@ class DispatchAutoPilotManager private constructor() : } override fun onMsgReceived(adasAutoPilotLocReceiverBean: DispatchAdasAutoPilotLocReceiverBean?) { - Log.i(TAG,"onMsgReceived 收到云调度长链接") + CallerLogger.i("$M_BIZ$TAG","onMsgReceived 收到云调度长链接, adasAutoPilotLocReceiver:${adasAutoPilotLocReceiverBean?:""}") if (adasAutoPilotLocReceiverBean != null && adasAutoPilotLocReceiverBean.startLat != 0.0 && adasAutoPilotLocReceiverBean.startLon != 0.0) { receiverBean = adasAutoPilotLocReceiverBean val message = Message() @@ -133,41 +130,9 @@ class DispatchAutoPilotManager private constructor() : val mAutoPilotLine = AutopilotControlParameters.AutoPilotLine(it.lineId.toLong(),it.trajUrl,it.trajMd5,it.stopUrl,it.stopMd5,it.timestamp, it.vehicleModel,it.trajUrl_dpqp,it.trajMd5_dpqp,it.stopUrl_dpqp,it.stopMd5_dpqp,it.timestamp_dpqp) CallerAutoPilotControlManager.sendTrajectoryDownloadReq(mAutoPilotLine) - Log.i(TAG,"调用路线下载逻辑") + CallerLogger.i("$M_BIZ$TAG","调用路线下载逻辑") } } - - adasAutoPilotLocReceiverBean?.let { - Log.i(TAG,"taskId="+it.taskId) - Log.i(TAG,"type="+it.type) - Log.i(TAG,"source="+it.source) - Log.i(TAG,"lineName="+it.lineName) - Log.i(TAG,"stopMd5_dpqp="+it.stopMd5_dpqp) - Log.i(TAG,"stopUrl_dpqp="+it.stopUrl_dpqp) - Log.i(TAG,"trajMd5_dpqp="+it.trajMd5_dpqp) - Log.i(TAG,"trajUrl_dpqp="+it.trajUrl_dpqp) - Log.i(TAG,"stopMd5_dpqp="+it.stopMd5_dpqp) - Log.i(TAG,"stopMd5="+it.stopMd5) - Log.i(TAG,"stopUrl="+it.stopUrl) - Log.i(TAG,"trajUrl="+it.trajUrl) - Log.i(TAG,"trajMd5="+it.trajMd5) - Log.i(TAG,"endLocAddress="+it.endLocAddress) - Log.i(TAG,"flightInfo="+it.flightInfo) - Log.i(TAG,"poiId="+it.poiId) - Log.i(TAG,"startLocAddress="+it.startLocAddress) - Log.i(TAG,"taskInfo="+it.taskInfo) - Log.i(TAG,"taskTime="+it.taskTime) - Log.i(TAG,"vehicleModel="+it.vehicleModel) - Log.i(TAG,"endLat="+it.endLat) - Log.i(TAG,"endLon="+it.endLon) - Log.i(TAG,"lineId="+it.lineId) - Log.i(TAG,"startLat="+it.startLat) - Log.i(TAG,"startLon="+it.startLon) - Log.i(TAG,"stopsList="+it.stopsList) - Log.i(TAG,"timestamp="+it.timestamp) - Log.i(TAG,"systemTime="+it.systemTime) - Log.i(TAG,"timestamp_dpqp="+it.timestamp_dpqp) - } } private fun startAutoPilot() { @@ -231,8 +196,7 @@ class DispatchAutoPilotManager private constructor() : currentAutopilot.endLatLon = AutopilotControlParameters.AutoPilotLonLat(it.endLat, it.endLon) currentAutopilot.vehicleType = 10 - CallerLogger.d(SceneConstant.Companion.M_DISPATCH + TAG, "开启自动驾驶====$currentAutopilot") - Log.i(TAG,"开启自动驾驶====$currentAutopilot") + CallerLogger.d(M_BIZ + TAG, "开启自动驾驶====$currentAutopilot") CallerAutoPilotControlManager.startAutoPilot(currentAutopilot) } } @@ -260,7 +224,7 @@ class DispatchAutoPilotManager private constructor() : onSuccess = { //取消自动驾驶 CallerAutoPilotControlManager.cancelAutoPilot() - Log.i(TAG,"stopAffirm 取消自动驾驶") + CallerLogger.i("$M_BIZ$TAG","stopAffirm 取消自动驾驶") }, onError = {}) } } @@ -330,10 +294,9 @@ class DispatchAutoPilotManager private constructor() : } CallerLogger.d( - SceneConstant.Companion.M_DISPATCH + TAG, + SceneConstant.Companion.M_BIZ + TAG, "onArriveAt data : $arrivalNotification" ) - Log.i(TAG,"onArriveAt data : $arrivalNotification") if (arrivalNotification.endLocation == null) { return } @@ -344,12 +307,11 @@ class DispatchAutoPilotManager private constructor() : receiverBean!!.endLon, receiverBean!!.endLat, endLon, endLat ) CallerLogger.d( - SceneConstant.Companion.M_DISPATCH + TAG, + SceneConstant.Companion.M_BIZ + TAG, "onArriveAt cal distance : $distanceFromSelf" ) - Log.i(TAG,"onArriveAt cal distance : $distanceFromSelf") if (distanceFromSelf < 10) { - CallerLogger.d(SceneConstant.Companion.M_DISPATCH + TAG, "onArriveAt end location") + CallerLogger.d(SceneConstant.Companion.M_BIZ + TAG, "onArriveAt end location") isDispatch = false isArriveEnd = true //到站,调度完成 @@ -371,7 +333,7 @@ class DispatchAutoPilotManager private constructor() : */ override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { if (guardianInfo == null || !guardianInfo.hasCode()) return - Log.i(TAG,"onAutopilotGuardian "+guardianInfo.code) + CallerLogger.i("$M_BIZ$TAG","onAutopilotGuardian "+guardianInfo.code) //掉自驾 when(guardianInfo.code){ MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_PLANNING, @@ -397,15 +359,15 @@ class DispatchAutoPilotManager private constructor() : } } if ("ISYS_INIT_TRAJECTORY_START".equals(guardianInfo.code)){ - Log.i(TAG,"onAutopilotGuardian ISYS_INIT_TRAJECTORY_START 轨迹管理_轨迹开始下载(本地已有对应轨迹也触发)") + CallerLogger.i("$M_BIZ$TAG","onAutopilotGuardian ISYS_INIT_TRAJECTORY_START 轨迹管理_轨迹开始下载(本地已有对应轨迹也触发)") }else if ("ISYS_INIT_TRAJECTORY_SUCCESS".equals(guardianInfo.code)){ - Log.i(TAG,"onAutopilotGuardian ISYS_INIT_TRAJECTORY_SUCCESS 轨迹管理_轨迹下载成功(本地已有对应轨迹也触发)") + CallerLogger.i("$M_BIZ$TAG","onAutopilotGuardian ISYS_INIT_TRAJECTORY_SUCCESS 轨迹管理_轨迹下载成功(本地已有对应轨迹也触发)") }else if ("ISYS_INIT_TRAJECTORY_FAILURE".equals(guardianInfo.code)){ - Log.i(TAG,"onAutopilotGuardian ISYS_INIT_TRAJECTORY_FAILURE 轨迹管理_轨迹下载失败,本地无对应轨迹") + CallerLogger.i("$M_BIZ$TAG","onAutopilotGuardian ISYS_INIT_TRAJECTORY_FAILURE 轨迹管理_轨迹下载失败,本地无对应轨迹") }else if ("ISYS_INIT_TRAJECTORY_WARNING".equals(guardianInfo.code)){ - Log.i(TAG,"onAutopilotGuardian ISYS_INIT_TRAJECTORY_WARNING 轨迹管理_轨迹下载失败,本地有对应轨迹,认为成功") + CallerLogger.i("$M_BIZ$TAG","onAutopilotGuardian ISYS_INIT_TRAJECTORY_WARNING 轨迹管理_轨迹下载失败,本地有对应轨迹,认为成功") }else if ("ISYS_INIT_TRAJECTORY_TIMEOUT".equals(guardianInfo.code)){ - Log.i(TAG,"onAutopilotGuardian ISYS_INIT_TRAJECTORY_TIMEOUT 轨迹管理_轨迹下载超时") + CallerLogger.i("$M_BIZ$TAG","onAutopilotGuardian ISYS_INIT_TRAJECTORY_TIMEOUT 轨迹管理_轨迹下载超时") } } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/monitoring/CronTaskManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/monitoring/CronTaskManager.kt index d788a76cc0..421f97626e 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/monitoring/CronTaskManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/monitoring/CronTaskManager.kt @@ -11,7 +11,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MONITOR +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BIZ import com.mogo.eagle.function.biz.monitoring.net.ICameraListServices import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers @@ -48,7 +48,6 @@ class CronTaskManager { CRON_TASK_TYPE -> { removeMessages(CRON_TASK_TYPE) // 路测和车侧摄像头列表分开调用 -// requestCameraList() requestDeviceList() requestCarCameraList() sendEmptyMessageDelayed(CRON_TASK_TYPE, 10000) @@ -57,35 +56,6 @@ class CronTaskManager { } } - @Deprecated("已废弃", ReplaceWith("requestDeviceList()"), DeprecationLevel.WARNING) - private fun requestCameraList() { - // 衡阳可直播的摄像头有限,先写死roadId便于调试 - disposable = MoGoRetrofitFactory.getInstance(HostConst.CAMERA_STREAM_HOST) - .create(ICameraListServices::class.java) - .getCameraList("10849") - .subscribeOn(Schedulers.io()) - .map { cameraListInfo -> - cameraListInfo.result?.crossings?.flatMap { crossing -> - crossing.cameras.filter { camera -> - !camera.flvUrl.isNullOrEmpty() - }.map { - CameraEntity( - it.flvUrl, "", it.roadName, - it.crossingName, it.getHeadingStr(), it.ip - ) - } - } ?: ArrayList() - } - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ - cameraList = it - CallerLogger.d("$M_MONITOR$TAG", "requestCameraList返回结果为:$it") - }, { - it.printStackTrace() - CallerLogger.e("$M_MONITOR$TAG", "message is:${it.message}, cause is:${it.cause}") - }) - } - /** * 请求路口一定范围内的设备信息(包含:摄像头、灯) */ @@ -110,21 +80,21 @@ class CronTaskManager { .observeOn(AndroidSchedulers.mainThread()) .subscribe({ cameraList = it -// CallerLogger.d("$M_MONITOR$TAG", "requestDeviceList返回结果为:$it") +// CallerLogger.d("$M_BIZ$TAG", "requestDeviceList返回结果为:$it") }, { it.printStackTrace() CallerLogger.e( - "$M_MONITOR$TAG", + "$M_BIZ$TAG", "requestDeviceList:message is:${it.message}, cause is:${it.cause}" ) }) }?: run { - CallerLogger.e("$M_MONITOR$TAG", "CurrentLocation is null!") + CallerLogger.e("$M_BIZ$TAG", "CurrentLocation is null!") } } private fun requestCarCameraList() { - CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()?.let { location -> + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let { location -> carDisposable = MoGoRetrofitFactory.getInstance(HostConst.getEagleHost()) .create(ICameraListServices::class.java) .getCarCameraList(ReqLiveCarBean(location.longitude, location.latitude)) @@ -143,49 +113,17 @@ class CronTaskManager { .observeOn(AndroidSchedulers.mainThread()) .subscribe({ carCameraList = it -// CallerLogger.d("$M_MONITOR$TAG", "requestCarCameraList返回结果为:$it") +// CallerLogger.d("$M_BIZ$TAG", "requestCarCameraList返回结果为:$it") }, { CallerLogger.e( - "$M_MONITOR$TAG", + "$M_BIZ$TAG", "message is:${it.message}, cause is:${it.cause}" ) it.printStackTrace() }) - } ?: run { - CallerLogger.e("$M_MONITOR$TAG", "CurrentLocation is null!") } } - /** - * 开启从摄像头拉流 - */ - @Deprecated("已废弃", ReplaceWith("requestDeviceList()"), DeprecationLevel.WARNING) - fun requestOpenCamera(cameraIp: String) { - streamDisposable?.let { - if (!it.isDisposed) it.dispose() - } - streamDisposable = MoGoRetrofitFactory.getInstance(HostConst.OPEN_CAMERA_STREAM_HOST) - .create(ICameraListServices::class.java) - .openCameraStream(cameraIp) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ - CallerLogger.d("$M_MONITOR$TAG", "openCameraStream返回结果为:$it") - it.result?.let { streamResult -> - if (!streamResult.flvUrl.isNullOrEmpty()) CallerHmiManager.startRoadCameraLive( - streamResult.flvUrl!! - ) - } - }, { - CallerLogger.e( - "$M_MONITOR$TAG", - "openCameraStream&message is:${it.message}, cause is:${it.cause}" - ) - CallerHmiManager.showNoSignalView() - it.printStackTrace() - }) - } - /** * 打开单个视频推流 */ @@ -199,7 +137,7 @@ class CronTaskManager { .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ - CallerLogger.d("$M_MONITOR$TAG", "reqOpenCameraStream返回结果为:$it") + CallerLogger.d("$M_BIZ$TAG", "reqOpenCameraStream返回结果为:$it") if (!it.flvUrl.isNullOrEmpty()) { CallerHmiManager.startRoadCameraLive(it.flvUrl!!) } else { @@ -207,7 +145,7 @@ class CronTaskManager { } }, { CallerLogger.e( - "$M_MONITOR$TAG", + "$M_BIZ$TAG", "reqOpenCameraStream&message is:${it.message}, cause is:${it.cause}" ) CallerHmiManager.showNoSignalView() @@ -236,7 +174,7 @@ class CronTaskManager { .observeOn(AndroidSchedulers.mainThread()) .retryWhen(RetryWithDelay()) .subscribe({ - CallerLogger.d("$M_MONITOR$TAG", "reqOpenCameraStream返回结果为:$it") + CallerLogger.d("$M_BIZ$TAG", "reqOpenCameraStream返回结果为:$it") if (it.code == 200 || it.code == 0) { val flvString = it.flvUrl if (!flvString.isNullOrEmpty()) { @@ -249,7 +187,7 @@ class CronTaskManager { } }, { CallerLogger.e( - "$M_MONITOR$TAG", + "$M_BIZ$TAG", "reqOpenCameraStream&message is:${it.message}, cause is:${it.cause}" ) error(it) diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/notice/NoticeSocketManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/notice/NoticeSocketManager.kt index 376e8d1e33..e40142f09c 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/notice/NoticeSocketManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/notice/NoticeSocketManager.kt @@ -59,7 +59,7 @@ internal class NoticeSocketManager { if (obj == null) { return } - d(SceneConstant.M_NOTICE + TAG, "100-- 普通公告数据:" + GsonUtil.jsonFromObject(obj)) + d(SceneConstant.M_BIZ + TAG, "100-- 普通公告数据:" + GsonUtil.jsonFromObject(obj)) val noticeFromCloudMsg = NoticeFrCloudMsg(obj, null, 0) saveMsgBox(MsgBoxBean(MsgBoxType.NOTICE, noticeFromCloudMsg)) } @@ -78,7 +78,7 @@ internal class NoticeSocketManager { if (obj == null) { return } - d(SceneConstant.M_NOTICE + TAG, "301001-- 交警类型公告数据:" + GsonUtil.jsonFromObject(obj)) + d(SceneConstant.M_BIZ + TAG, "301001-- 交警类型公告数据:" + GsonUtil.jsonFromObject(obj)) val noticeFromCloudMsg = NoticeFrCloudMsg(null, obj, 1) saveMsgBox(MsgBoxBean(MsgBoxType.NOTICE, noticeFromCloudMsg)) } 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 eb23eb9a94..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 @@ -5,19 +5,16 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants class V2XBizTrace { companion object { @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_CLOUD_V2N, - linkCode = ChainConstant.CHAIN_LINK_CLOUD, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_CLOUD_V2N, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_V2X, + linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, + nodeAliasCode = ChainConstant.CHAIN_CODE_V2X_MSG, + paramIndexes = [0, 1] ) fun onAck(data: Any, data1: Any) { if (DebugConfig.isDebug()) { diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/overview/OverViewDataManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/overview/OverViewDataManager.kt index 1f0f568a4d..6685379ae7 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/overview/OverViewDataManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/overview/OverViewDataManager.kt @@ -85,7 +85,7 @@ object OverViewDataManager { // 1分钟查询一次 disposable = Observable.interval(2000, 60000, TimeUnit.MILLISECONDS) .flatMap { - val lineId = getLineId() + val lineId = CallerAutoPilotStatusListenerManager.getLineId() if (lineId > 0) { MoGoRetrofitFactory.getInstance(HostConst.getHost()) .create(OverViewServiceApi::class.java) @@ -119,20 +119,4 @@ object OverViewDataManager { disposable?.dispose() } - private fun getLineId(): Long { - var lineId: Long = -1 - val parameter = CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo() - .autopilotControlParameters - if (parameter != null) { - if (parameter.autoPilotLine != null) { - lineId = parameter.autoPilotLine!!.lineId - CallerLogger.d(SceneConstant.M_MAP + TAG, "lineId为:$lineId") - } else { - CallerLogger.d(SceneConstant.M_MAP + TAG, "parameter.autoPilotLine为null") - } - } else { - CallerLogger.d(SceneConstant.M_MAP + TAG, "parameter为null") - } - return lineId - } } \ No newline at end of file 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 c9e60c8cf7..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_ALIAS_CODE_CLOUD_V2N -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_CLOUD -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_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_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 @@ -16,17 +16,13 @@ import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_TOP import com.mogo.eagle.core.data.map.* import com.mogo.eagle.core.data.map.entity.* import com.mogo.eagle.core.data.msgbox.* -import com.mogo.eagle.core.data.traffic.* import com.mogo.eagle.core.data.v2x.* import com.mogo.eagle.core.function.api.autopilot.* import com.mogo.eagle.core.function.api.cloud.* -import com.mogo.eagle.core.function.api.hmi.warning.* -import com.mogo.eagle.core.function.api.map.angle.* import com.mogo.eagle.core.function.call.autopilot.* import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02 import com.mogo.eagle.core.function.call.cloud.* import com.mogo.eagle.core.function.call.hmi.* -import com.mogo.eagle.core.function.call.map.* import com.mogo.eagle.core.function.call.msgbox.* import com.mogo.eagle.core.utilcode.mogo.* import com.mogo.eagle.core.utilcode.mogo.logger.* @@ -148,12 +144,10 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, * V2XEvent事件回调 */ @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CLOUD_V2N, - linkCode = CHAIN_LINK_CLOUD, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_V2N, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_V2X, + linkCode = CHAIN_SOURCE_CLOUD, + nodeAliasCode = CHAIN_CODE_V2X_MSG, + paramIndexes = [0] ) override fun onAck(event: V2XEvent) { Log.d("$M_V2X$TAG", "OK->: $event") @@ -185,12 +179,10 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, @RequiresApi(Build.VERSION_CODES.N) @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CLOUD_V2N, - linkCode = CHAIN_LINK_CLOUD, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_V2N, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_V2X, + linkCode = CHAIN_SOURCE_CLOUD, + nodeAliasCode = CHAIN_CODE_V2X_MSG, + paramIndexes = [0] ) override fun onAutopilotIdentifyPlanningObj(planningObjects: List?) { super.onAutopilotIdentifyPlanningObj(planningObjects) diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XPoiLoader.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XPoiLoader.kt index 9fa780cba4..ffe57a4287 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XPoiLoader.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XPoiLoader.kt @@ -11,8 +11,6 @@ import com.mogo.eagle.core.data.v2x.V2XEvent import com.mogo.eagle.core.data.v2x.V2XMarkerResponse import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.eagle.function.biz.v2x.v2n.network.V2XRefreshModel import com.mogo.eagle.function.biz.v2x.v2n.network.callback.IV2XCallback @@ -143,33 +141,16 @@ class V2XPoiLoader private constructor() { fun queryWholeRoadEvents() { V2XRefreshModel.roadEventDispose() val sn = MoGoAiCloudClientConfig.getInstance().sn - val lineId = getLineId() + val lineId = CallerAutoPilotStatusListenerManager.getLineId() if (lineId > 0) { realQueryV2xEvents(lineId.toString(), sn) } else { UiThreadHandler.postDelayed({ - realQueryV2xEvents(getLineId().toString(), sn) + realQueryV2xEvents(CallerAutoPilotStatusListenerManager.getLineId().toString(), sn) }, 500) } } - private fun getLineId(): Long { - var lineId: Long = -1 - val parameter = CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo() - .autopilotControlParameters - if (parameter != null) { - if (parameter.autoPilotLine != null) { - lineId = parameter.autoPilotLine!!.lineId - CallerLogger.d(SceneConstant.M_V2X + TAG, "lineId为:$lineId") - } else { - CallerLogger.d(SceneConstant.M_V2X + TAG, "parameter.autoPilotLine为null") - } - } else { - CallerLogger.d(SceneConstant.M_V2X + TAG, "parameter为null") - } - return lineId - } - private fun realQueryV2xEvents(lineId: String, sn: String) { V2XRefreshModel.getRoadEvents(lineId, sn) { val size = it?.size ?: 0 diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt index bc3d66fdc5..592a529b26 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt @@ -200,13 +200,6 @@ internal object V2NIdentifyDrawer { override fun onAutopilotIdentifyDataUpdate(trafficData: List?) { super.onAutopilotIdentifyDataUpdate(trafficData) - try { - if (trafficData != null) { - V2XBizTrace.onAck("onAutopilotIdentifyDataUpdate", trafficData) - } - } catch (t: Throwable) { - t.printStackTrace() - } val shiGong = trafficData?.filter { it.type == 501 || it.type == 502 } if (shiGong != null && shiGong.isNotEmpty()) { drawShiGong(shiGong) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt index 5480df66b8..c5db40725d 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt @@ -10,35 +10,33 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.autopilot.toAutoPilotLine import com.mogo.eagle.core.data.autopilot.toRouteInfo -import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity +import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult +import com.mogo.eagle.core.data.biz.trafficlight.toTrafficLightDetail import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.constants.MoGoConfig import com.mogo.eagle.core.data.constants.MogoServicePaths +import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity import com.mogo.eagle.core.data.deva.chain.ChainConstant -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_MULTI_CONNECT -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_ADAS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT -import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult -import com.mogo.eagle.core.data.biz.trafficlight.toTrafficLightDetail +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_MULTI_CONNECT +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_SOURCE_ADAS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_INIT_STATUS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SOCKET_AUTOPILOT import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotControlProvider import com.mogo.eagle.core.function.api.map.collect.IMoGoMapDataCollectProvider -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager import com.mogo.eagle.core.function.datacenter.autopilot.adapter.MoGoAdasListenerImpl import com.mogo.eagle.core.function.datacenter.autopilot.adapter.MoGoAdasMsgConnectStatusListenerImpl import com.mogo.eagle.core.function.datacenter.autopilot.server.AsyncDataToAutopilotServer import com.mogo.eagle.core.function.datacenter.autopilot.telematic.EventListener import com.mogo.eagle.core.function.datacenter.autopilot.telematic.IMsgHandler import com.mogo.eagle.core.function.datacenter.autopilot.telematic.TeleMsgHandler -import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager -import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager -import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager -import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicStatusListenerManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ADAS_IMPL +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_D_C import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.util.ParseVersionUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils @@ -66,7 +64,6 @@ import com.zhjt.mogo.adas.data.sweeper.task.SweeperTaskSuspendResume import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants import io.netty.channel.Channel import mogo.telematics.pad.MessagePad import java.util.* @@ -95,7 +92,7 @@ class MoGoAutopilotControlProvider : get() = TAG override fun init(context: Context) { - CallerLogger.i("$M_ADAS_IMPL$TAG", "初始化工控机连接……") + CallerLogger.i("$M_D_C$TAG", "初始化工控机连接……") mContext = context // 初始化ADAS 域控制器 CupidLogUtils.setEnableLog(false) @@ -162,7 +159,7 @@ class MoGoAutopilotControlProvider : } override fun onChannelDisConnect(channel: Channel?) { - CallerLogger.d("$M_ADAS_IMPL$TAG", "onChannelDisConnect") + CallerLogger.d("$M_D_C$TAG", "onChannelDisConnect") } override fun onReceiveClientSign(channel: Channel?, sn: String?) { @@ -225,7 +222,7 @@ class MoGoAutopilotControlProvider : } }) CallerAutopilotCarConfigListenerManager.addListener(TAG, this) - CallerLogger.i("$M_ADAS_IMPL$TAG", "initServer……") + CallerLogger.i("$M_D_C$TAG", "initServer……") // 同步数据给工控机的服务 AsyncDataToAutopilotServer.INSTANCE.initServer() } @@ -258,7 +255,7 @@ class MoGoAutopilotControlProvider : NSDNettyManager.getInstance() .sendMsgToAllClients(MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes)) } else { - CallerLogger.d("$M_ADAS_IMPL$TAG", "司机端Server未启动!") + CallerLogger.d("$M_D_C$TAG", "司机端Server未启动!") } } @@ -316,12 +313,12 @@ class MoGoAutopilotControlProvider : override fun onMapCollectStart(cmdId: Int, cmdTime: Long) { val result = recordPackage(2, cmdId) - CallerLogger.d("$M_ADAS_IMPL$TAG", "开始记录包: [$cmdId, $result]") + CallerLogger.d("$M_D_C$TAG", "开始记录包: [$cmdId, $result]") } override fun onMapCollectEnd(cmdId: Int, cmdTime: Long) { val result = stopRecord(2, cmdId) - CallerLogger.d("$M_ADAS_IMPL$TAG", "结束记录包: [$cmdId, $result]") + CallerLogger.d("$M_D_C$TAG", "结束记录包: [$cmdId, $result]") } override fun startAutoPilot(controlParameters: AutopilotControlParameters) { @@ -336,21 +333,20 @@ class MoGoAutopilotControlProvider : invokeAutoPilotResult(if (invokeResult) "自动驾驶调用成功" else "自动驾驶调用失败, socket 或者 rawPack 可能为空") } else { invokeAutoPilotResult("车机与工控机链接失败,无法开启自动驾驶") - CallerLogger.e("$M_ADAS_IMPL$TAG", "车机与工控机链接失败,无法开启自动驾驶") + CallerLogger.e("$M_D_C$TAG", "车机与工控机链接失败,无法开启自动驾驶") } } } @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, - linkCode = CHAIN_LINK_ADAS, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT_RESULT, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + parentNodeAliasCode = ChainConstant.CHAIN_CODE_EAGLE_START_AUTOPILOT, + nodeAliasCode = ChainConstant.CHAIN_CODE_EAGLE_START_AUTOPILOT_RESULT, + paramIndexes = [0] ) private fun invokeAutoPilotResult(status: String) { - CallerLogger.e("$M_ADAS_IMPL$TAG", status) + CallerLogger.e("$M_D_C$TAG", status) } override fun sendTrafficLightData(trafficLightResult: TrafficLightResult) { @@ -377,7 +373,7 @@ class MoGoAutopilotControlProvider : if (AdasManager.getInstance().ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) { AdasManager.getInstance().sendAutoPilotModeReq(0, 1, null) } else { - CallerLogger.e("$M_ADAS_IMPL$TAG", "车机与工控机链接失败,无法断开自动驾驶") + CallerLogger.e("$M_D_C$TAG", "车机与工控机链接失败,无法断开自动驾驶") } } @@ -471,7 +467,7 @@ class MoGoAutopilotControlProvider : ) ) } else { - CallerLogger.d("$M_ADAS_IMPL$TAG", "同步美化模式状态时司机端Server未启动!") + CallerLogger.d("$M_D_C$TAG", "同步美化模式状态时司机端Server未启动!") } } } @@ -494,7 +490,7 @@ class MoGoAutopilotControlProvider : ) ) } else { - CallerLogger.d("$M_ADAS_IMPL$TAG", "同步美化模式状态时司机端Server未启动!") + CallerLogger.d("$M_D_C$TAG", "同步美化模式状态时司机端Server未启动!") } } } @@ -532,9 +528,9 @@ class MoGoAutopilotControlProvider : * @return boolean */ override fun sendDetouring(isEnable: Boolean): Boolean { - return if(isEnable){ + return if (isEnable) { AdasManager.getInstance().sendDetouring(1) - }else{ + } else { AdasManager.getInstance().sendDetouring(0) } } @@ -555,9 +551,9 @@ class MoGoAutopilotControlProvider : * @return boolean */ override fun sendWeakNetSlowDown(isEnable: Boolean): Boolean { - return if(isEnable){ + return if (isEnable) { AdasManager.getInstance().sendWeakNetSlowDown(1) - }else{ + } else { AdasManager.getInstance().sendWeakNetSlowDown(0) } } @@ -569,7 +565,7 @@ class MoGoAutopilotControlProvider : * @return boolean */ override fun sendGetAllParamReq(): Boolean { - return AdasManager.getInstance().sendGetAllParamReq() + return AdasManager.getInstance().sendGetAllParamReq() } /** @@ -619,7 +615,7 @@ class MoGoAutopilotControlProvider : bagManager.descReq = descReq.build() // 空间使用信息,获取响应且reqType=1时有效 - for(diskSpaceInfoEntity in bagManagerEntity.spaceInfoResp){ + for (diskSpaceInfoEntity in bagManagerEntity.spaceInfoResp) { val spaceInfoResp = BagManagerOuterClass.BagSpaceInfo .newBuilder() val diskSpaceInfo = BagManagerOuterClass.SpaceInfo @@ -631,7 +627,7 @@ class MoGoAutopilotControlProvider : .build() spaceInfoResp .setHost(diskSpaceInfoEntity.host).diskSpaceInfo = diskSpaceInfo - for(entity in diskSpaceInfoEntity.BagDirsSpaceInfo){ + for (entity in diskSpaceInfoEntity.BagDirsSpaceInfo) { val bagDirsSpaceInfo = BagManagerOuterClass.SpaceInfo .newBuilder() .setDirectory(entity.directory) @@ -645,8 +641,8 @@ class MoGoAutopilotControlProvider : } // 包信息列表,获取响应且reqType=2时有效 - for(bagsInfoRespEntity in bagManagerEntity.bagsInfoResp){ - if(bagsInfoRespEntity.itemType == 0){ + for (bagsInfoRespEntity in bagManagerEntity.bagsInfoResp) { + if (bagsInfoRespEntity.itemType == 0) { // 包描述信息 val bagDescription = BagManagerOuterClass.BagDescription .newBuilder() @@ -668,7 +664,7 @@ class MoGoAutopilotControlProvider : .setDescription(bagDescription.build()) // 子包信息 - for(subBagEntity in bagsInfoRespEntity.subBags){ + for (subBagEntity in bagsInfoRespEntity.subBags) { val subBag = BagManagerOuterClass.SubBag .newBuilder() .setKey(subBagEntity.key) @@ -854,15 +850,18 @@ class MoGoAutopilotControlProvider : } msgHandler.synMsgToAllClients() } else {// 乘客屏 - CallerDevaToolsManager.getBindingCarInfo( carConfigResp.macAddress, MoGoAiCloudClientConfig.getInstance().sn) + CallerDevaToolsManager.getBindingCarInfo( + carConfigResp.macAddress, + MoGoAiCloudClientConfig.getInstance().sn + ) invokeNettyConnResult("乘客屏车牌号:${carConfigResp.plateNumber},Mac地址为:${carConfigResp.macAddress}") } - if(carConfigResp.dockVersion.isNotEmpty()){ - if(carConfigResp.dockVersion.contains("taxi")){ + if (carConfigResp.dockVersion.isNotEmpty()) { + if (carConfigResp.dockVersion.contains("taxi")) { //修改雨天模式开关默认状态为开启(仅针对taxi320及以上的版本)-sop 215 - val num = ParseVersionUtils.parseVersion(true,carConfigResp.dockVersion) - if(num >= 30200){ + val num = ParseVersionUtils.parseVersion(true, carConfigResp.dockVersion) + if (num >= 30200) { FunctionBuildConfig.isRainMode = true } } @@ -872,15 +871,13 @@ class MoGoAutopilotControlProvider : } @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_ADAS, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_MULTI_CONNECT, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_MULTI_CONNECT, + paramIndexes = [0] ) private fun invokeNettyConnResult(status: String) { - CallerLogger.d("$M_ADAS_IMPL$TAG", status) + CallerLogger.d("$M_D_C$TAG", status) } override fun getTeleTimeStamp(): Long { 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 bfe783e3f3..5af551d843 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 @@ -7,37 +7,33 @@ import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HdMapBuildConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ARRIVE -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_GUARDIAN -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_RECORD -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ROUTE -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_STATUS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAFFIC_LIGHT -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAJECTORY -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_CONFIG -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_STATE -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_ACTIONS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_OBJECTS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_STATUS_QUERY_RESP -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_ADAS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_GNSSINFO -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_ACTIONS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_TRAFFIC_LIGHT -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_AUTOPILOT_ARRIVE +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_AUTOPILOT_GUARDIAN +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_AUTOPILOT_RECORD +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_AUTOPILOT_ROUTE +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_AUTOPILOT_STATUS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_AUTOPILOT_TRAJECTORY +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_AUTOPILOT_VEHICLE +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_CAR_CONFIG +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_CAR_STATE +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_P_ACTIONS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_P_OBJECTS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_STATUS_QUERY_RESP +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_SOURCE_ADAS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_GNSS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_INIT_STATUS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SOCKET_AUTOPILOT +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SOCKET_P_ACTIONS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SOCKET_P_OBJECTS +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.invokeAutoPilotStatus 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 import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate @@ -55,10 +51,8 @@ import com.mogo.eagle.core.function.call.obu.CallerObuWarningRsiListenerManager import com.mogo.eagle.core.function.call.obu.CallerObuWarningRsmListenerManager import com.mogo.eagle.core.function.call.obu.CallerObuWarningSpatListenerManager import com.mogo.eagle.core.function.call.v2x.* -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.support.obu.ObuScene -import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasListener import com.zhjt.mogo.adas.data.bean.AdasParam import com.zhidao.support.adas.high.common.ProtocolStatus @@ -72,8 +66,6 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants -import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD import function_state_management.FunctionStates import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad.TrackedObject @@ -87,10 +79,6 @@ import record_cache.RecordPanelOuterClass import system_master.SystemStatusInfo /** - * @author emArrow - * @since 2022/3/11 - * - * * 适配ADAS 回调监听分发,这里不做业务,只做数据包装及分发处理 */ class MoGoAdasListenerImpl : OnAdasListener { @@ -101,12 +89,10 @@ class MoGoAdasListenerImpl : OnAdasListener { //车前引导线 @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAJECTORY, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_TRAJECTORY, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_AUTOPILOT_TRAJECTORY, + paramIndexes = [0, 1] ) override fun onTrajectory(header: MessagePad.Header, trajectory: MessagePad.Trajectory?) { if (HdMapBuildConfig.isMapLoaded) { @@ -120,10 +106,8 @@ class MoGoAdasListenerImpl : OnAdasListener { // @ChainLog( // linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED, // linkCode = CHAIN_LINK_ADAS, -// endpoint = PAD, // nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA, -// paramIndexes = [0, 1], -// clientPkFileName = "sn" +// paramIndexes = [0, 1] // ) override fun onTrackedObjects( header: MessagePad.Header, @@ -136,20 +120,17 @@ class MoGoAdasListenerImpl : OnAdasListener { //自车定位信息 @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_GNSSINFO, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_STATE, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_GNSS, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_CAR_STATE, + paramIndexes = [0, 1] ) override fun onGnssInfo(header: MessagePad.Header, gnssInfo: MessagePad.GnssInfo) { CallerChassisGnssListenerManager.invokeChassisGnssListener(gnssInfo) - if (gnssInfo != null) { if (1 == FunctionBuildConfig.gpsProvider) { // 同步更新经纬度和系统时间至 AutoPilotStatusListener - CallerAutoPilotStatusListenerManager.updateAutoPilotLatLon( + CallerAutoPilotStatusListenerManager.updateAutoPilotLocAndTime( gnssInfo.satelliteTime, gnssInfo.longitude, gnssInfo.latitude @@ -167,12 +148,10 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param vehicleState 数据 */ @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_VEHICLE, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_AUTOPILOT_VEHICLE, + paramIndexes = [0, 1] ) override fun onVehicleState( header: MessagePad.Header, @@ -229,12 +208,10 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param vehicleState 数据 */ @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_VEHICLE, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_AUTOPILOT_VEHICLE, + paramIndexes = [0, 1] ) override fun onChassisStates( header: MessagePad.Header, @@ -290,12 +267,10 @@ class MoGoAdasListenerImpl : OnAdasListener { //自动驾驶状态 @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_STATUS, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_AUTOPILOT_STATUS, + paramIndexes = [0, 1] ) override fun onAutopilotState( header: MessagePad.Header, @@ -305,40 +280,17 @@ class MoGoAdasListenerImpl : OnAdasListener { //工控机模拟时间 CallerAutopilotVehicleStateListenerManager.invokeAutopilotTime(header.timestamp.toLong()) if (HdMapBuildConfig.isMapLoaded) { - // 初始化自动驾驶状态信息 - val autopilotStatusInfo = getAutoPilotStatusInfo() - autopilotStatusInfo.state = autopilotState.state - autopilotStatusInfo.pilotmode = autopilotState.autopilotMode - autopilotStatusInfo.reason = autopilotState.reason - autopilotStatusInfo.version = AdasManager.getInstance().adasVersion - if (autopilotStatusInfo.connectIP == null) { - autopilotStatusInfo.connectIP = AdasManager.getInstance().ipcConnectedIp - } - if (autopilotStatusInfo.connectPort == null) { - autopilotStatusInfo.connectPort = AdasManager.getInstance().ipcConnectedPort - } - AdasManager.getInstance().carConfig?.let { - autopilotStatusInfo.dockVersion = it.dockVersion - } - CallerLogger.d( - "Upgrade", - "origin = ${autopilotStatusInfo.connectStatus} -----now = ${AppConfigInfo.isConnectAutopilot} " - ) - AppConfigInfo.isConnectAutopilot = autopilotStatusInfo.connectStatus - AppConfigInfo.connectStatusDescribe = autopilotStatusInfo.connectStatusDescribe - invokeAutoPilotStatus() + updateAutoPilotStatus(autopilotState.state, autopilotState.autopilotMode) } } } //监控 @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_GUARDIAN, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_AUTOPILOT_GUARDIAN, + paramIndexes = [0, 1] ) override fun onReportMessage( header: MessagePad.Header, @@ -350,14 +302,6 @@ class MoGoAdasListenerImpl : OnAdasListener { } //感知红绿灯 - @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_TRAFFIC_LIGHT, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAFFIC_LIGHT, - paramIndexes = [0, 1], - clientPkFileName = "sn" - ) override fun onPerceptionTrafficLight( header: MessagePad.Header?, trafficLights: TrafficLightOuterClass.TrafficLights? @@ -384,12 +328,10 @@ class MoGoAdasListenerImpl : OnAdasListener { //planning障碍物 @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_OBJECTS, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_P_OBJECTS, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_P_OBJECTS, + paramIndexes = [0, 1] ) override fun onPlanningObjects( header: MessagePad.Header?, @@ -410,18 +352,17 @@ class MoGoAdasListenerImpl : OnAdasListener { //工控机基础配置信息 @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_CONFIG, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_CAR_CONFIG, + paramIndexes = [0, 1] ) override fun onCarConfigResp( header: MessagePad.Header, carConfigResp: MessagePad.CarConfigResp? ) { if (carConfigResp != null) { + updateAutoPilotDockerInfo(carConfigResp.dockVersion) AppConfigInfo.dockerVersion = carConfigResp.dockVersion AppConfigInfo.plateNumber = carConfigResp.plateNumber//车牌号 AppConfigInfo.iPCMacAddress = carConfigResp.macAddress//工控机MAC地址 @@ -433,12 +374,10 @@ class MoGoAdasListenerImpl : OnAdasListener { //全局路径规划 @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ROUTE, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_AUTOPILOT_ROUTE, + paramIndexes = [0, 1] ) override fun onGlobalPathResp( header: MessagePad.Header, @@ -449,12 +388,10 @@ class MoGoAdasListenerImpl : OnAdasListener { //数据采集,badCase @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_RECORD, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_AUTOPILOT_RECORD, + paramIndexes = [0, 1] ) override fun onRecordResult( header: MessagePad.Header, @@ -469,10 +406,8 @@ class MoGoAdasListenerImpl : OnAdasListener { // @ChainLog( // linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, // linkCode = CHAIN_LINK_ADAS, -// endpoint = PAD, // nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_WARN, -// paramIndexes = [0, 1], -// clientPkFileName = "sn" +// paramIndexes = [0, 1] // ) override fun onWarn(header: MessagePad.Header, warn: MessagePad.Warn?) { invokeAutopilotWarnMessage(warn) @@ -480,12 +415,10 @@ class MoGoAdasListenerImpl : OnAdasListener { //到站回调 @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ARRIVE, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_AUTOPILOT_ARRIVE, + paramIndexes = [0, 1] ) override fun onArrivalNotification( header: MessagePad.Header, @@ -496,12 +429,10 @@ class MoGoAdasListenerImpl : OnAdasListener { //状态查询应答 @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_STATUS_QUERY_RESP, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_STATUS_QUERY_RESP, + paramIndexes = [0, 1] ) override fun onStatusQueryResp( header: MessagePad.Header?, @@ -526,12 +457,10 @@ class MoGoAdasListenerImpl : OnAdasListener { * planning决策状态, 透传 */ @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_ACTIONS, - linkCode = CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_ACTIONS, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_SOCKET_P_ACTIONS, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_P_ACTIONS, + paramIndexes = [0, 1] ) override fun onPlanningActionMsg( header: MessagePad.Header?, @@ -620,7 +549,10 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param header 头 * @param roboSweeperTaskIndex 数据 */ - override fun onSweeperTaskIndexData(header: MessagePad.Header?, roboSweeperTaskIndex: RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex?) { + override fun onSweeperTaskIndexData( + header: MessagePad.Header?, + roboSweeperTaskIndex: RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex? + ) { roboSweeperTaskIndex?.let { //清扫车(福田)清扫控制系统状态 CallerSweeperFutianCleanSystemListenerManager.invokeSweeperFutianCleanTaskIndexData(it) @@ -752,12 +684,10 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param rsi 数据 */ @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_CLOUD_V2N, - linkCode = ChainConstant.CHAIN_LINK_CLOUD, - endpoint = PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_CLOUD_V2N, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_V2X, + linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, + nodeAliasCode = ChainConstant.CHAIN_CODE_V2X_MSG, + paramIndexes = [0, 1] ) override fun onV2nCongestionEvent(header: MessagePad.Header, rsi: MogoV2X.RSI_PB) { CallerAutopilotIdentifyListenerManager.invokeAutopilotV2nCongestionEvent(header, rsi) @@ -774,15 +704,26 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param parkingViolation 违停 ---包含 静态障碍车 */ @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_CLOUD_V2N, - linkCode = ChainConstant.CHAIN_LINK_CLOUD, - endpoint = PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_CLOUD_V2N, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_V2X, + linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, + nodeAliasCode = ChainConstant.CHAIN_CODE_V2X_MSG, + paramIndexes = [0] ) - override fun onV2nGlobalPathEvents(header: MessagePad.Header, roadOverview: RoadOverviewEvents.RoadOverviewData, construct: MogoV2X.RSI_PB?, triangle: MogoV2X.RSI_PB?, congestion: MogoV2X.RSI_PB?, parkingViolation: MogoV2X.RSM_PB?) { - CallerV2XListenerManager.dispatchV2nGlobalPathEvents(roadOverview.eventCount, construct, triangle, congestion, parkingViolation) + override fun onV2nGlobalPathEvents( + header: MessagePad.Header, + roadOverview: RoadOverviewEvents.RoadOverviewData, + construct: MogoV2X.RSI_PB?, + triangle: MogoV2X.RSI_PB?, + congestion: MogoV2X.RSI_PB?, + parkingViolation: MogoV2X.RSM_PB? + ) { + CallerV2XListenerManager.dispatchV2nGlobalPathEvents( + roadOverview.eventCount, + construct, + triangle, + congestion, + parkingViolation + ) } /** diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt index f77595e303..f23ba9dc35 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt @@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.datacenter.autopilot.adapter import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.debug.DebugConfig.* +import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener @@ -10,7 +11,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ADAS_IMPL +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_D_C import com.mogo.eagle.core.utilcode.util.ToastUtils import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasConnectStatusListener @@ -24,11 +25,11 @@ import com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.PASSENGER * ADAS-SDK与工控机连接状态回调 */ class MoGoAdasMsgConnectStatusListenerImpl : - OnAdasConnectStatusListener, - IMoGoAutopilotStatusListener, - IMoGoCloudListener { + OnAdasConnectStatusListener, + IMoGoAutopilotStatusListener, + IMoGoCloudListener { - companion object{ + companion object { private const val TAG = "ConnectStatus" } @@ -40,53 +41,63 @@ class MoGoAdasMsgConnectStatusListenerImpl : override fun onConnectionIPCStatus(ipcConnectionStatus: Int, reason: String?) { CallerAutoPilotStatusListenerManager.invokeAutoPilotIPCStatusChanged( - ipcConnectionStatus, - reason + ipcConnectionStatus, + reason ) - if (ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) { - CallerLogger.d("$M_ADAS_IMPL$TAG", "webSocket 连接成功") - connectStatus = true - // 初始化自动驾驶状态信息 - CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP = + AppConfigInfo.connectStatusDescribe = reason + when (ipcConnectionStatus) { + Constants.IPC_CONNECTION_STATUS.CONNECTED -> { + CallerLogger.d("$M_D_C$TAG", "webSocket 连接成功") + connectStatus = true + // 初始化自动驾驶状态信息 + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP = AdasManager.getInstance().ipcConnectedIp - CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectPort = + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectPort = AdasManager.getInstance().ipcConnectedPort - CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatus = true - // 同步SN给工控机 - syncBasicInfoToAutopilot() - //每次工控机连接成功后,需同步当前设置的美化模式状态 - CallerAutoPilotControlManager.setDemoMode(FunctionBuildConfig.isDemoMode) - //当连接状态是关闭美化模式时,同步给工控机 - if (!FunctionBuildConfig.isDemoMode) { - CallerAutoPilotControlManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode) - } - //每次工控机连接成功后,需同步当前设置的雨天模式状态 - CallerAutoPilotControlManager.setRainMode(FunctionBuildConfig.isRainMode) - } else if (ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.DISCONNECTED) { - CallerLogger.d("$M_ADAS_IMPL$TAG", "webSocket 连接失败 reason:$reason") - if (connectStatus) { - reason?.let { - ToastUtils.showLong("工控机连接断开,原因:$it , 等待重连") + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().version = + AdasManager.getInstance().adasVersion + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatus = true + AppConfigInfo.isConnectAutopilot = true + // 同步SN给工控机 + syncBasicInfoToAutopilot() + //每次工控机连接成功后,需同步当前设置的美化模式状态 + CallerAutoPilotControlManager.setDemoMode(FunctionBuildConfig.isDemoMode) + //当连接状态是关闭美化模式时,同步给工控机 + if (!FunctionBuildConfig.isDemoMode) { + CallerAutoPilotControlManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode) } - connectStatus = false + //每次工控机连接成功后,需同步当前设置的雨天模式状态 + CallerAutoPilotControlManager.setRainMode(FunctionBuildConfig.isRainMode) } - CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP = + Constants.IPC_CONNECTION_STATUS.DISCONNECTED -> { + CallerLogger.d("$M_D_C$TAG", "webSocket 连接失败 reason:$reason") + if (connectStatus) { + reason?.let { + ToastUtils.showLong("工控机连接断开,原因:$it , 等待重连") + } + connectStatus = false + } + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP = AdasManager.getInstance().ipcConnectedIp - CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectPort = + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectPort = AdasManager.getInstance().ipcConnectedPort - CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatus = false - //与工控机断开连接,需要重置自动驾驶状态(包括上传至云平台缓存信息),等待连接成功后同步状态信息 - CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state = 0 - CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().pilotmode = 0 - } else if (ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTING) { - CallerLogger.d("$M_ADAS_IMPL$TAG", "webSocket 正在连接") - } else if (ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.SEARCH_ADDRESS) { - CallerLogger.d("$M_ADAS_IMPL$TAG", "webSocket 正在搜索工控机IP") - } else if (ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.NOT_FOUND_ADDRESS) { - CallerLogger.d("$M_ADAS_IMPL$TAG", "webSocket 找不到可用IP 传入的IP不可用或固定IP列表中所有IP不可用") + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatus = false + AppConfigInfo.isConnectAutopilot = false + //与工控机断开连接,需要重置自动驾驶状态(包括上传至云平台缓存信息),等待连接成功后同步状态信息 + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state = 0 + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().pilotmode = 0 + } + Constants.IPC_CONNECTION_STATUS.CONNECTING -> { + CallerLogger.d("$M_D_C$TAG", "webSocket 正在连接") + } + Constants.IPC_CONNECTION_STATUS.SEARCH_ADDRESS -> { + CallerLogger.d("$M_D_C$TAG", "webSocket 正在搜索工控机IP") + } + Constants.IPC_CONNECTION_STATUS.NOT_FOUND_ADDRESS -> { + CallerLogger.d("$M_D_C$TAG", "webSocket 找不到可用IP 传入的IP不可用或固定IP列表中所有IP不可用") + } } - CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().ipcConnStatus = - ipcConnectionStatus + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().ipcConnStatus = ipcConnectionStatus CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatusDescribe = reason CallerAutoPilotStatusListenerManager.invokeAutoPilotStatus() } @@ -105,24 +116,24 @@ class MoGoAdasMsgConnectStatusListenerImpl : /** * 同步SN信息给工控机 */ - private fun syncBasicInfoToAutopilot(sn: String? = null) { - CallerLogger.d("$M_ADAS_IMPL$TAG", "同步PAD的SN给工控机……") + private fun syncBasicInfoToAutopilot() { + CallerLogger.d("$M_D_C$TAG", "同步PAD的SN给工控机……") if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { // 设置PAD-SN给工控,网络环境 AdasManager.getInstance() - .sendBasicInfoResp( - MoGoAiCloudClientConfig.getInstance().sn, - getEnvironment(), - getTerminalRole() - ) + .sendBasicInfoResp( + MoGoAiCloudClientConfig.getInstance().sn, + getEnvironment(), + getTerminalRole() + ) } else { // 乘客屏先不传sn AdasManager.getInstance() - .sendBasicInfoResp( - "", - getEnvironment(), - getTerminalRole() - ) + .sendBasicInfoResp( + "", + getEnvironment(), + getTerminalRole() + ) } } @@ -145,7 +156,7 @@ class MoGoAdasMsgConnectStatusListenerImpl : } override fun tokenGot(token: String, sn: String) { - syncBasicInfoToAutopilot(sn) + syncBasicInfoToAutopilot() } } \ No newline at end of file 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 e982acba0f..1742f5631b 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,5 @@ 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 @@ -13,12 +11,10 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.zhidao.support.adas.high.AdasManager import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import java.util.concurrent.TimeUnit -import java.util.concurrent.atomic.AtomicInteger /** * @author xiaoyuzhou @@ -37,7 +33,6 @@ class AsyncDataToAutopilotServer private constructor() : IMoGoTrafficLightListen } } - private var mPreAutoStatus = AtomicInteger(-1) private var createSubscribe: Disposable? = null fun initServer() { @@ -45,25 +40,18 @@ class AsyncDataToAutopilotServer private constructor() : IMoGoTrafficLightListen CallerTrafficLightListenerManager.addListener(TAG, this) } - @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_D_C + TAG, "自动驾驶状态变化,取消前置轨迹请求,间隔2s重新请求底盘轨迹") + createSubscribe?.dispose() } - when (state) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { createSubscribe = Observable.timer(2000L, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe { - bizLog(SceneConstant.M_ADAS_IMPL + TAG, "请求底盘轨迹") + bizLog(SceneConstant.M_D_C + TAG, "请求底盘轨迹") CallerAutoPilotControlManager.getGlobalPath() } } @@ -82,12 +70,10 @@ class AsyncDataToAutopilotServer private constructor() : IMoGoTrafficLightListen } @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, - linkCode = ChainConstant.CHAIN_LINK_ADAS, - endpoint = PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_BIZ, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = ChainConstant.CHAIN_SOURCE_ADAS, + nodeAliasCode = ChainConstant.CHAIN_CODE_ADAS_AUTOPILOT_ROUTE_REQ, + paramIndexes = [0, 1] ) private fun bizLog(tag: String, msg: String) { CallerLogger.d(tag, msg) 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 a55a2e7795..1b55e0fd3a 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 @@ -9,7 +9,7 @@ import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_INIT_STATUS import com.mogo.eagle.core.data.multidisplay.TelematicConstant import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setDemoMode @@ -28,7 +28,6 @@ import com.mogo.telematic.client.NettyTcpClient import com.mogo.telematic.client.status.ConnectState import com.zhidao.support.adas.high.AdasManager import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants import io.netty.channel.Channel import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -66,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 -> { @@ -145,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) @@ -224,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 -> { } } @@ -242,7 +228,7 @@ class TeleMsgHandler : IMsgHandler { override fun handleClientConn2Server(channel: Channel?) { val socketAddress = channel?.remoteAddress().toString() - CallerLogger.d("${SceneConstant.M_ADAS_IMPL}$TAG", "Client ip is:${socketAddress}") + CallerLogger.d("${SceneConstant.M_D_C}$TAG", "Client ip is:${socketAddress}") setDemoMode(FunctionBuildConfig.isDemoMode) setIgnoreConditionDraw(FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData) } @@ -294,15 +280,13 @@ class TeleMsgHandler : IMsgHandler { override fun handleServerConnStatus(statusCode: Int, content: String?, channel: Channel) {} @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = ChainConstant.CHAIN_LINK_ADAS, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_MULTI_CONNECT, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = ChainConstant.CHAIN_SOURCE_ADAS, + nodeAliasCode = ChainConstant.CHAIN_CODE_MULTI_CONNECT, + paramIndexes = [0] ) private fun invokeNettyConnResult(status: String) { - CallerLogger.d("${SceneConstant.M_ADAS_IMPL}$TAG", status) + CallerLogger.d("${SceneConstant.M_D_C}$TAG", status) } /** diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt index 422fe23fb5..31160ae060 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt @@ -79,7 +79,6 @@ object MoGoLocationDispatcher : lastGnssLocation.errorCode = it.errorCode lastGnssLocation.errorInfo = it.errorInfo } - //FileUtils.writeToFile("/sdcard/Download/", "location_wgs84.txt", "${gnssInfo.longitude},${gnssInfo.latitude}\n") if (1 == FunctionBuildConfig.gpsProvider) { // WGS84坐标系高精度位置信息 CallerChassisLocationWGS84ListenerManager.invokeChassisLocationWGS84( @@ -102,7 +101,6 @@ object MoGoLocationDispatcher : override fun onMoGoLocationChanged(mogoLocation: MogoLocation) { // 更新GaoDe 信息 lastGaoDeLocation = mogoLocation - // 计算最后一次工控机同步的定位是否超时,如果超时则切换为高德地图定位,暂定超过30秒需要切换 if (1 == FunctionBuildConfig.gpsProvider) { if (TimeUtils.getNowMills() - lastGnssLocation.lastReceiveTime > 10000) { diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt index 0f146c3a9f..13fda04e05 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt @@ -1,7 +1,6 @@ package com.mogo.eagle.core.function.datacenter.obu import android.content.Context -import android.util.Log import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig @@ -289,7 +288,7 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { // 同步给MAP地图 CallerObuLocationWGS84ListenerManager.invokeObuLocationWGS84(gnssInfo) // 同步更新经纬度和系统时间至 AutoPilotStatusListener - CallerAutoPilotStatusListenerManager.updateAutoPilotLatLon( + CallerAutoPilotStatusListenerManager.updateAutoPilotLocAndTime( System.currentTimeMillis() / 1000.0, gnssInfo.longitude, gnssInfo.latitude diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt index c5794a901e..fd41ef263b 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt @@ -5,6 +5,7 @@ import android.os.CountDownTimer import android.os.Handler import com.mogo.eagle.core.data.biz.trafficlight.* import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.data.enums.DataSourceType import com.mogo.eagle.core.data.enums.TrafficLightEnum import com.mogo.eagle.core.data.multidisplay.TelematicConstant @@ -17,6 +18,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.zhjt.service.chain.ChainLog import perception.TrafficLightOuterClass import perception.TrafficLightOuterClass.TrafficLight @@ -64,7 +66,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight @Volatile private var hasObuLightStatus: Boolean = false - private var lightCountDownTimer: CountDownTimer?= null + private var lightCountDownTimer: CountDownTimer? = null private var lastLightTime: Long = System.currentTimeMillis() fun initServer(context: Context) { @@ -80,16 +82,20 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight * @param trafficLights 感知红绿灯 */ override fun onAutopilotPerceptionTrafficLight(trafficLights: TrafficLightOuterClass.TrafficLights?) { + CallerLogger.d( + "${SceneConstant.M_D_C}${TAG}", + "onAutopilotPerceptionTrafficLight ---- hasObuLightStatus = $hasObuLightStatus ----hasAiLightStatus = $hasAiLightStatus " + ) if (!hasObuLightStatus) { if (!hasAiLightStatus) { lastLightTime = System.currentTimeMillis() - if(lightCountDownTimer==null){ - lightCountDownTimer = object: CountDownTimer(300000,1000){ + if (lightCountDownTimer == null) { + lightCountDownTimer = object : CountDownTimer(300000, 1000) { override fun onTick(millisUntilFinished: Long) { - if((System.currentTimeMillis() - lastLightTime)>1000){ + if ((System.currentTimeMillis() - lastLightTime) > 1000) { //隐藏红绿灯显示 - CallerTrafficLightListenerManager.disableTrafficLight() + hide("感知倒计时结束隐藏", DataSourceType.TELEMATIC) lightCountDownTimer?.cancel() lightCountDownTimer = null } @@ -115,9 +121,13 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight } else if (it.hasUTurn()) { light = it.uTurn } + CallerLogger.d( + "${SceneConstant.M_D_C}${TAG}", + "onAutopilotPerceptionTrafficLight light = $light " + ) if (light == null) { //隐藏红绿灯显示 - hide() + hide("感知light为null隐藏", DataSourceType.TELEMATIC) } else { onTrafficLightPlusSource(light.convert(), 0, DataSourceType.TELEMATIC) } @@ -131,10 +141,17 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight */ override fun onTrafficLightStatus(trafficLightResult: TrafficLightResult) { if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - CallerTelematicManager.sendMsgToAllClients(TelematicConstant.SHOW_TRAFFIC_LIGHT, GsonUtils.toJson(trafficLightResult).toByteArray()) + CallerTelematicManager.sendMsgToAllClients( + TelematicConstant.SHOW_TRAFFIC_LIGHT, + GsonUtils.toJson(trafficLightResult).toByteArray() + ) } if (!hasObuLightStatus) { hasAiLightStatus = true + CallerLogger.d( + "${SceneConstant.M_D_C}${TAG}", + "onTrafficLightStatus trafficLightResult = $trafficLightResult " + ) updateTrafficLight(trafficLightResult) } } @@ -144,18 +161,22 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight * @param enter true:进入路口;false:离开路口 */ override fun onEnterCrossRoad(enter: Boolean) { + CallerLogger.d("${SceneConstant.M_D_C}${TAG}", "onEnterCrossRoad enter = $enter ") if (!enter) { Handler().postDelayed({ hasAiLightStatus = false hasObuLightStatus = false }, 5000) if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - CallerTelematicManager.sendMsgToAllClients(TelematicConstant.HIDE_TRAFFIC_LIGHT, "0".toByteArray()) + CallerTelematicManager.sendMsgToAllClients( + TelematicConstant.HIDE_TRAFFIC_LIGHT, + "0".toByteArray() + ) } //如果没有OBU灯态则进行隐藏,如果有OBU灯态,则交由OBU管理 - if(!hasObuLightStatus){ + if (!hasObuLightStatus) { CallerTrafficLightListenerManager.resetTrafficLightStatus(!hasObuLightStatus) - hide() + hide("云端离开路口隐藏", DataSourceType.AICLOUD) } } } @@ -165,9 +186,13 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight */ override fun onTrafficRequestError() { hasAiLightStatus = false + CallerLogger.d( + "${SceneConstant.M_D_C}${TAG}", + "onTrafficRequestError hasObuLightStatus = $hasObuLightStatus ------> " + ) CallerTrafficLightListenerManager.resetTrafficLightStatus(!hasObuLightStatus) - if(!hasObuLightStatus){ - hide() + if (!hasObuLightStatus) { + hide("云端红绿灯接口请求失败隐藏", DataSourceType.AICLOUD) } } @@ -175,30 +200,46 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight * obu数据消失 */ override fun onObuTrafficLightDisapper() { + CallerLogger.d("${SceneConstant.M_D_C}${TAG}", "onObuTrafficLightDisapper ------> ") hasObuLightStatus = false - hide() + hide("OBU红绿灯消息关闭隐藏", DataSourceType.OBU) } /** * 是否重置红绿灯数据,需要确保,在obu的红绿灯显示的时候,不执行。否则会闪屏 */ override fun resetTrafficLight(isReset: Boolean) { - CallerLogger.d("${SceneConstant.M_OBU}${TAG}", "resetTrafficLight ------> isReset = $isReset ---hasObuLightStatus = $hasObuLightStatus") + CallerLogger.d( + "${SceneConstant.M_D_C}${TAG}", + "resetTrafficLight ------> isReset = $isReset ---hasObuLightStatus = $hasObuLightStatus" + ) if (!hasObuLightStatus) { - if(isReset){ - hide() + if (isReset) { + hide("云端重置红绿灯数据", DataSourceType.AICLOUD) } } } - private fun hide(){ - CallerLogger.d("${SceneConstant.M_OBU}${TAG}", "hide() ---------> ") + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_SOCKET_TRAFFIC_LIGHT, + linkCode = ChainConstant.CHAIN_SOURCE_ADAS, + nodeAliasCode = ChainConstant.CHAIN_CODE_ADAS_AUTOPILOT_TRAFFIC_LIGHT_HIDE, + paramIndexes = [0, 1] + ) + private fun hide(msg: String, sourceType: DataSourceType) { + CallerLogger.d("${SceneConstant.M_D_C}${TAG}", "hide() :$msg type :$sourceType") CallerTrafficLightListenerManager.disableTrafficLight() } /** - * obu 红绿灯数据 + * 红绿灯数据 */ + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_SOCKET_TRAFFIC_LIGHT, + linkCode = ChainConstant.CHAIN_SOURCE_ADAS, + nodeAliasCode = ChainConstant.CHAIN_CODE_ADAS_AUTOPILOT_TRAFFIC_LIGHT, + paramIndexes = [0, 1, 2] + ) override fun onTrafficLightPlusSource( light: TrafficLightEnum, remain: Int, @@ -208,7 +249,10 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight if (lightSource == DataSourceType.OBU) { hasObuLightStatus = true } - + CallerLogger.d( + "${SceneConstant.M_D_C}${TAG}", + "onTrafficLightPlusSource ----- light = $light ---remain = $remain ---lightSource = $lightSource ---hasObuLightStatus = $hasObuLightStatus ---hasAiLightStatus = $hasAiLightStatus" + ) CallerTrafficLightListenerManager.showTrafficLight(light, lightSource) if (remain == -1) { CallerTrafficLightListenerManager.disableTrafficLightCountDown() @@ -226,10 +270,10 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight CallerTrafficLightListenerManager.changeCountdownYellow(remain) } TrafficLightEnum.BLACK -> { - CallerTrafficLightListenerManager.disableTrafficLight() + hide("感知数据BLACK隐藏", lightSource) } else -> { - hide() + hide("未知红绿灯类型隐藏", lightSource) } } @@ -237,6 +281,10 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight private fun updateTrafficLight(trafficLightResult: TrafficLightResult) { val currentTrafficLight = trafficLightResult.currentRoadTrafficLight() + CallerLogger.d( + "${SceneConstant.M_D_C}${TAG}", + "updateTrafficLight ----- currentTrafficLight = $currentTrafficLight" + ) currentTrafficLight?.let { val remain = if (it.remain > 99) { 99 @@ -245,9 +293,9 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight } onTrafficLightPlusSource(it.convert(), remain, DataSourceType.AICLOUD) } - } + fun destroy() { //取消注册监听AI云.OBU,路侧获取红绿灯状态 CallerTrafficLightListenerManager.removeListener(TAG) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 6532faf55b..0c008d5a70 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -18,7 +18,6 @@ import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider import com.mogo.eagle.core.function.api.devatools.apm.* import com.mogo.eagle.core.function.api.devatools.strict.* -import com.mogo.eagle.core.function.call.map.* import com.mogo.eagle.core.function.api.devatools.download.* import com.mogo.eagle.core.function.api.lookaround.* import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -59,7 +58,6 @@ import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeManager.Companion.up import com.zhjt.mogo_core_function_devatools.weaknetwork.DetectResultImpl import com.zhjt.mogo_core_function_devatools.weaknetwork.WeakNetworkStrategy import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD @Route(path = MogoServicePaths.PATH_DEVA_TOOLS) class DevaToolsProvider : IDevaToolsProvider { @@ -91,14 +89,12 @@ class DevaToolsProvider : IDevaToolsProvider { KoomInitTask.init(AbsMogoApplication.getApp()) initMatrix() } - ttsManager.initTts(mContext!!) //todo + ttsManager.initTts(mContext!!) //todo 扶风 优化 bizConfigCenter.init(mContext!!) + upgradeManager.updateUpgradeProgress() FuncConfigImpl.init() MogoLogCatchManager.init(mContext!!) - // 视角切换功能初始化,监听路口及停止线回调 - CallerVisualAngleManager.init() - //升级(鹰眼/工控)与监控服务 iPCReportManager.initServer() moFangManager.init(mContext!!) @@ -193,12 +189,10 @@ class DevaToolsProvider : IDevaToolsProvider { } @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_ANR, - linkCode = ChainConstant.CHAIN_LINK_ANR, - endpoint = PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_RECORD_ANR, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_ANR, + linkCode = ChainConstant.CHAIN_SOURCE_ANR, + nodeAliasCode = ChainConstant.CHAIN_CODE_RECORD_ANR, + paramIndexes = [0] ) private fun printEvilMsg(evilMethod: String) { w("TraceCanary", evilMethod) @@ -281,7 +275,7 @@ class DevaToolsProvider : IDevaToolsProvider { } override fun updateUpgradeProgress() { - upgradeManager.updateUpgradeProgress() + } override fun showStatusBar(ctx: Context, container: ViewGroup) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt index ddc8257335..65a2c104ac 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt @@ -4,14 +4,13 @@ import android.os.Process import android.text.TextUtils import android.widget.Toast import com.mogo.commons.debug.DebugConfig -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_INIT_ENV_RESTART -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_INIT -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_INIT_ENV_RESTART +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_SOURCE_INIT +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_INIT_STATUS import com.mogo.eagle.core.function.api.devatools.apm.* import com.mogo.eagle.core.utilcode.util.* import com.zhjt.mogo_core_function_devatools.apm.config.* import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD import kotlinx.coroutines.* import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicReference @@ -111,12 +110,10 @@ class ApmEnvProviderImpl: IApmEnvProvider, CoroutineScope { } @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_INIT, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_INIT_ENV_RESTART, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = CHAIN_SOURCE_INIT, + nodeAliasCode = CHAIN_CODE_INIT_ENV_RESTART, + paramIndexes = [0] ) private fun restartApp(envStr:String) { launch(Dispatchers.Main) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index cedb44ffac..22bc2a120b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -7,23 +7,18 @@ import android.view.View import android.view.WindowManager import androidx.fragment.app.FragmentActivity import androidx.lifecycle.Lifecycle.Event -import androidx.lifecycle.LifecycleCoroutineScope import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner -import androidx.lifecycle.lifecycleScope import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig -import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.RecordBagMsg import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager -import com.mogo.eagle.core.utilcode.kotlin.lifecycleOwner import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA @@ -34,14 +29,10 @@ import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord import com.zhjt.mogo_core_function_devatools.ext.enqueuePop import kotlinx.coroutines.* -import kotlinx.coroutines.channels.Channel import me.jessyan.autosize.utils.AutoSizeUtils import record_cache.RecordPanelOuterClass -import java.lang.ref.WeakReference -import java.util.concurrent.TimeUnit -internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordListener, - IMoGoChassisLocationWGS84Listener { +internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordListener { const val TAG = "BadCase" @@ -50,13 +41,8 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis @Volatile private var record: AutoPilotRecord? = null - private var longitude: Double = 0.0 - private var latitude: Double?= 0.0 - - fun init(){ + fun init() { CallerAutopilotRecordListenerManager.addListener(TAG, this) - // 添加 ADAS车辆状态&定位 监听 - CallerChassisLocationWGS84ListenerManager.addListener(TAG, this) } /** @@ -83,15 +69,20 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis /** * 展示BadCase录包管理页面 */ - fun showBadCaseManagerWindow(context: Context){ + fun showBadCaseManagerWindow(context: Context) { val badCaseManagerView = BadCaseManagerView(context) - badCaseManagerView.setOnClickListener(object: BadCaseManagerView.ClickListener{ + badCaseManagerView.setOnClickListener(object : BadCaseManagerView.ClickListener { override fun onClose() { hideFloat?.invoke() hideFloat = null } }) - context.enqueuePop(badCaseManagerView,AutoSizeUtils.dp2px(context,960f), WindowManager.LayoutParams.MATCH_PARENT, key = "BadCaseManagerView").also { + context.enqueuePop( + badCaseManagerView, + AutoSizeUtils.dp2px(context, 960f), + WindowManager.LayoutParams.MATCH_PARENT, + key = "BadCaseManagerView" + ).also { hideFloat = it } } @@ -246,29 +237,32 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis ) ) ) + val lat = + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude + val lon = + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude //埋点统计 - BadCaseAnalyticsManager.bagRecordReceive(recordPanel.key.toString(),recordPanel.filename, - System.currentTimeMillis().toString(),recordPanel.stat.toString(), - AppConfigInfo.plateNumber,recordPanel.duration.toString(), - MoGoAiCloudClientConfig.getInstance().sn,BadCaseConfig.dockerVersion ?:"", - AppUtils.getAppVersionName(),latitude.toString(),longitude.toString()) + BadCaseAnalyticsManager.bagRecordReceive( + recordPanel.key.toString(), recordPanel.filename, + System.currentTimeMillis().toString(), recordPanel.stat.toString(), + AppConfigInfo.plateNumber, recordPanel.duration.toString(), + MoGoAiCloudClientConfig.getInstance().sn, BadCaseConfig.dockerVersion ?: "", + AppUtils.getAppVersionName(), lat.toString(), lon.toString() + ) //日志埋点 - CallerLogger.i("$M_DEVA$TAG", "BadCase Receive Analytics="+"key="+recordPanel.key+" filename="+recordPanel.filename+ - " receiveTime="+System.currentTimeMillis()+" stat="+recordPanel.stat+" plateNumber="+AppConfigInfo.plateNumber+ - " totalDuration="+recordPanel.duration+" carSn="+MoGoAiCloudClientConfig.getInstance().sn+" mapVersion="+BadCaseConfig.dockerVersion+ - " eyeVersion="+AppUtils.getAppVersionName()+" latitude="+latitude+" longitude="+longitude) + CallerLogger.i( + "$M_DEVA$TAG", + "BadCase Receive Analytics=" + "key=" + recordPanel.key + " filename=" + recordPanel.filename + + " receiveTime=" + System.currentTimeMillis() + " stat=" + recordPanel.stat + " plateNumber=" + AppConfigInfo.plateNumber + + " totalDuration=" + recordPanel.duration + " carSn=" + MoGoAiCloudClientConfig.getInstance().sn + " mapVersion=" + BadCaseConfig.dockerVersion + + " eyeVersion=" + AppUtils.getAppVersionName() + " latitude=" + lat + " longitude=" + lon + ) } } } - override fun onStateChanged(source: LifecycleOwner, event: Event) { } - override fun onChassisLocationWGS84(gnssInfo: MogoLocation) { - latitude = gnssInfo.latitude - longitude = gnssInfo.longitude - } - } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt index 13becfbf20..ad824820f9 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt @@ -12,7 +12,6 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager @@ -37,7 +36,7 @@ import java.util.* * @since: 2022/7/12 */ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener, - IMoGoAutopilotRecordListener, IMoGoChassisLocationWGS84Listener { + IMoGoAutopilotRecordListener { companion object { const val TAG = "AIDataCollectWindow" @@ -68,8 +67,6 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener @Volatile private var recordFileName: String? = null //录制文件包名 - private var longitude: Double? = null - private var latitude: Double? = null private lateinit var mFloatLayout: View private var mInViewX = 0f @@ -116,8 +113,6 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener "时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}" //采集结果回调监听 CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(), this) - // 添加 ADAS车辆状态&定位 监听 - CallerChassisLocationWGS84ListenerManager.addListener(this.hashCode().toString(), this) //开始录制AI数据采集Bag包 CallerAutoPilotControlManager.recordPackage( 99, @@ -234,7 +229,8 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener itx["audioUrl"] = "" //音频COS地址 itx["mapVersion"] = BadCaseConfig.dockerVersion ?: "" //工控机版本 itx["eyeVersion"] = AppUtils.getAppVersionName() //鹰眼版本 - itx["coordinate"] = "latitude:${latitude};longitude:${longitude}" //坐标 + itx["coordinate"] = + "latitude:${CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude};longitude:${CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude}" //坐标 }) if (uploadResult == null || uploadResult.code != 200) { @@ -332,7 +328,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener // 默认固定位置,靠屏幕右边缘的中间 mWindowManager!!.defaultDisplay.getMetrics(metrics) mWindowParams!!.x = metrics.widthPixels - mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight()-950 + mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight() - 950 mWindowManager!!.addView(mFloatLayout, mWindowParams) } } @@ -353,9 +349,4 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener fun closeWindow() } - override fun onChassisLocationWGS84(gnssInfo: MogoLocation) { - latitude = gnssInfo.latitude - longitude = gnssInfo.longitude - } - } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt index ba4bb5357a..32368ffc0d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt @@ -18,7 +18,6 @@ import com.mogo.eagle.core.function.call.obu.CallerObuApiManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isDriver import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isPassenger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.zhjt.mogo_core_function_devatools.upgrade.IPCUpgradeManager.Companion.ipcUpgradeManager @@ -27,6 +26,7 @@ import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeAppNetWorkManager import mogo.telematics.pad.MessagePad /** + * //todo emArrow 链路biz * 车辆绑定 */ @SuppressLint("StaticFieldLeak") @@ -61,9 +61,9 @@ object BindingCarManager : IMoGoAutopilotCarConfigListener { } override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) { - Logger.d("${SceneConstant.M_BINDING}${TAG}", "onAutopilotCarConfig ----------> ") + CallerLogger.d("${SceneConstant.M_DEVA}${TAG}", "onAutopilotCarConfig ----------> ") if (!TextUtils.isEmpty(carConfigResp.macAddress)) { - Logger.d("${SceneConstant.M_BINDING}${TAG}", + CallerLogger.d("${SceneConstant.M_DEVA}${TAG}", "onAutopilotCarConfig carConfigResp.macAddress = ${carConfigResp.macAddress} ") getBindingCarInfo(carConfigResp.macAddress, MoGoAiCloudClientConfig.getInstance().sn) } @@ -75,24 +75,21 @@ object BindingCarManager : IMoGoAutopilotCarConfigListener { * @param macAddress */ fun getBindingCarInfo(macAddress: String, widevineIDWithMd5: String) { - Log.d("UPGRADE", "-- getBindingCarInfo -- 1 -- : [mac: $macAddress, md5: $widevineIDWithMd5]") var flag = false if (!TextUtils.isEmpty(macAddress) && TextUtils.isEmpty(mAddress)) { - Log.d("UPGRADE", "-- getBindingCarInfo -- 2 -- : [mac: $macAddress, md5: $widevineIDWithMd5]") flag = true } if (!TextUtils.isEmpty(macAddress) && !TextUtils.equals(macAddress, mAddress)) { mAddress = macAddress } if (flag) { - Log.d("UPGRADE", "-- getBindingCarInfo -- 3 -- : [mac: $macAddress, md5: $widevineIDWithMd5]") queryAppUpgrade() val obuVersion = mObuVersion if (obuVersion != null && !TextUtils.isEmpty(obuVersion)) { queryObuUpgrade(obuVersion) } } - CallerLogger.d("${SceneConstant.M_BINDING}${TAG}", + CallerLogger.d("${SceneConstant.M_DEVA}${TAG}", "getBindingcarInfo macAddress = $macAddress--widevineIDWithMd5 = $widevineIDWithMd5 ---screenType = $screenType" ) SharedPrefsMgr.getInstance(mContext!!).putString(SharedPrefsConstants.APP_MAC, macAddress) @@ -126,7 +123,7 @@ object BindingCarManager : IMoGoAutopilotCarConfigListener { } fun modifyCarInfo(callBack: (ModifyBindingcarInfo) -> Unit) { - BindingCarNetWorkManager.instance.modifyBindingCar(mContext!!, mAddress, mWidevineIDWithMd5, callBack, screenType) + BindingCarNetWorkManager.instance.modifyBindingCar(mAddress, mWidevineIDWithMd5, callBack, screenType) } private fun driverScreen(macAddress: String, widevineIDWithMd5: String) { @@ -205,10 +202,10 @@ object BindingCarManager : IMoGoAutopilotCarConfigListener { */ fun queryObuUpgrade(obuVersionName: String) { mObuVersion = obuVersionName - CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", "screenType = $screenType ----role = $role") + CallerLogger.d("${SceneConstant.M_DEVA}${MogoObuConst.TAG_UPGRADE_OBU}", "screenType = $screenType ----role = $role") if (screenType == 1) { - CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}","queryObuUpgrade isConnected = ${CallerObuApiManager.isConnected()} --- mAddress = $mAddress") - ObuUpgradeAppNetWorkManager.instance?.getObuUpgradeInfo(mContext, if(!mAddress.isNullOrEmpty()) mAddress else SharedPrefsMgr.getInstance(mContext!!).getString(SharedPrefsConstants.APP_MAC), obuVersionName) + CallerLogger.d("${SceneConstant.M_DEVA}${MogoObuConst.TAG_UPGRADE_OBU}","queryObuUpgrade isConnected = ${CallerObuApiManager.isConnected()} --- mAddress = $mAddress") + ObuUpgradeAppNetWorkManager.instance?.getObuUpgradeInfo(if(!mAddress.isNullOrEmpty()) mAddress else SharedPrefsMgr.getInstance(mContext!!).getString(SharedPrefsConstants.APP_MAC), obuVersionName) } } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt index 205aa21dcf..3a0b9d64d3 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt @@ -72,7 +72,7 @@ class BindingCarNetWorkManager private constructor() { override fun onSubscribe(d: Disposable) {} override fun onNext(info: BindingCarInfo) { if (info != null && info.getData() != null) { - d(SceneConstant.M_BINDING + TAG, "getBindingCarInfo data =" + info.getData().toString() + "---getDefaultId() : ${getDefaultId()}") + d(SceneConstant.M_DEVA + TAG, "getBindingCarInfo data =" + info.getData().toString() + "---getDefaultId() : ${getDefaultId()}") SharedPrefsMgr.getInstance(context).putString( SharedPrefsConstants.CAR_INFO, GsonUtils.toJson(info.getData()) @@ -85,13 +85,13 @@ class BindingCarNetWorkManager private constructor() { updateCarVrIconRes(info.getData().brandId) } else { SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.CAR_INFO, "") - e(SceneConstant.M_BINDING + TAG, "getBindingCarInfo data = null ---getDefaultId() : ${getDefaultId()} ") + e(SceneConstant.M_DEVA + TAG, "getBindingCarInfo data = null ---getDefaultId() : ${getDefaultId()} ") } } override fun onError(e: Throwable) { SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.CAR_INFO, "") - e(SceneConstant.M_BINDING + TAG, "getBindingCarInfo onError e = " + e.toString() + "---e.getMessage = " + e.message + "---getDefaultId() : ${getDefaultId()}") + e(SceneConstant.M_DEVA + TAG, "getBindingCarInfo onError e = " + e.toString() + "---e.getMessage = " + e.message + "---getDefaultId() : ${getDefaultId()}") } override fun onComplete() {} @@ -103,7 +103,6 @@ class BindingCarNetWorkManager private constructor() { * mac: 48:b0:2d:3a:9c:19 */ fun modifyBindingCar( - context: Context, macAddress: String?, widevineIDWithMd5: String?, callBack: (ModifyBindingcarInfo) -> Unit, @@ -128,13 +127,13 @@ class BindingCarNetWorkManager private constructor() { override fun onNext(info: ModifyBindingcarInfo) { if (info != null) { callBack.invoke(info) - d(SceneConstant.M_BINDING + TAG, "modifyBindingCar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString()) + d(SceneConstant.M_DEVA + TAG, "modifyBindingCar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString()) updateCarVrIconRes(info.data.brandId) } } override fun onError(e: Throwable) { - e(SceneConstant.M_BINDING + TAG, "modifyBindingCar onError e = " + e.toString() + "---e.getMessage = " + e.message) + e(SceneConstant.M_DEVA + TAG, "modifyBindingCar onError e = " + e.toString() + "---e.getMessage = " + e.message) } override fun onComplete() {} @@ -142,18 +141,18 @@ class BindingCarNetWorkManager private constructor() { } private fun updateCarVrIconRes(brandId: String?) { - d(SceneConstant.M_BINDING + TAG, "CarModelChange : ${DebugConfig.isCarModelChange()}") + d(SceneConstant.M_DEVA + TAG, "CarModelChange : ${DebugConfig.isCarModelChange()}") if(!DebugConfig.isCarModelChange()){ return } if (brandId == null || brandId.isEmpty()) { return } - d(SceneConstant.M_BINDING + TAG, "getDefaultId() : ${getDefaultId()} ---- brandId = $brandId") + d(SceneConstant.M_DEVA + TAG, "getDefaultId() : ${getDefaultId()} ---- brandId = $brandId") if (getDefaultId() == brandId) { return } - d(SceneConstant.M_BINDING + TAG, "updateCarVrIconRes : $brandId") + d(SceneConstant.M_DEVA + TAG, "updateCarVrIconRes : $brandId") when (brandId) { "1" -> { //东风 CallerMapUIServiceManager.getMapUIController()?.changeCurrentIcon(R.raw.chuzuche) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 98126c024b..efdd65d59b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -4,9 +4,9 @@ import android.content.Context import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.commons.AbsMogoApplication -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_FUNC_CONFIG_CHANGED -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_CLOUD -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_FUNC_CONFIG_CHANGED +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_INIT_STATUS import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsFuncConfigListenerManager @@ -18,7 +18,6 @@ import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigConst.Companio import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigConst.Companion.defaultFuncConfig import com.zhjt.mogo_core_function_devatools.funcconfig.network.FuncConfigNetWorkModel import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants import com.zhjt.service_biz.BizManager import com.zhjt.service_biz.FuncConfig import mogo.telematics.pad.MessagePad @@ -72,12 +71,10 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo } @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_CLOUD, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_FUNC_CONFIG_CHANGED, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = CHAIN_SOURCE_CLOUD, + nodeAliasCode = CHAIN_CODE_FUNC_CONFIG_CHANGED, + paramIndexes = [0] ) private fun refreshConfig(funcConfig: FuncConfig) { BizManager.updateBizConfigData(funcConfig) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangManager.kt index cf28e98458..c7fe0f0639 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangManager.kt @@ -8,7 +8,6 @@ import android.content.Context import android.content.Intent import android.content.IntentFilter import android.view.KeyEvent -import com.mogo.commons.context.ContextHolderUtil import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.deva.mofang.MfConstants import com.mogo.eagle.core.function.api.devatools.mofang.IMoGoMoFangListener @@ -165,7 +164,10 @@ class MoFangManager private constructor() : IMoGoMoFangListener { * 魔方按键处理 */ override fun onMofangHandle(keyCode: Int, action: Int): Boolean { - val bluetoothName = SharedPrefsMgr.getInstance(ContextHolderUtil.getContext()).getString( + if(mContext == null){ + return false + } + val bluetoothName = SharedPrefsMgr.getInstance(mContext!!).getString( MfConstants.BLUETOOTH_NAME) if (bluetoothName == "MINI_KEYBOARD") { if (!isPressEnd) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/scene/SceneManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/scene/SceneManager.kt index 0004ae3307..fa289a6d2c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/scene/SceneManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/scene/SceneManager.kt @@ -6,16 +6,13 @@ import com.mogo.eagle.core.data.deva.scene.SceneModuleTAG import com.mogo.eagle.core.data.deva.scene.SceneTAG import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.scene.Scene.Companion.scene -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ADAS_IMPL +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_D_C import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_CHAT import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_NETWORK import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OLD_ROUTE -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OTHER import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_SWEEPER import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P @@ -29,19 +26,16 @@ class SceneManager { companion object { private const val ADAS = "ADAS" - private const val CALLCHAT = "CALLCHAT" private const val DEVA = "DEVA" private const val HMI = "HMI" private const val OBU = "OBU" private const val V2X = "V2X" private const val MAP = "MAP" - private const val ROUTE = "ROUTE" private const val NET = "NET" private const val BUS = "BUS" private const val TAXI = "TAXI" private const val SWEEPER = "SWEEPER" private const val TAXI_P = "TAXI_P" - private const val OTHER = "OTHER" val sceneManager: SceneManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { SceneManager() @@ -53,20 +47,17 @@ class SceneManager { init { //过滤所需条件 - sceneModuleTAG.map[ADAS] = SceneModule(true, M_ADAS_IMPL) - sceneModuleTAG.map[CALLCHAT] = SceneModule(false, M_CHAT) + sceneModuleTAG.map[ADAS] = SceneModule(true, M_D_C) sceneModuleTAG.map[DEVA] = SceneModule(false, M_DEVA) sceneModuleTAG.map[HMI] = SceneModule(false, M_HMI) - sceneModuleTAG.map[OBU] = SceneModule(false, M_OBU) + sceneModuleTAG.map[OBU] = SceneModule(true, M_OBU) sceneModuleTAG.map[V2X] = SceneModule(true, M_V2X) sceneModuleTAG.map[MAP] = SceneModule(true, M_MAP) - sceneModuleTAG.map[ROUTE] = SceneModule(true, M_OLD_ROUTE) sceneModuleTAG.map[NET] = SceneModule(true, M_NETWORK) sceneModuleTAG.map[BUS] = SceneModule(true, M_BUS) sceneModuleTAG.map[TAXI] = SceneModule(true, M_TAXI) sceneModuleTAG.map[TAXI_P] = SceneModule(true, M_TAXI_P) sceneModuleTAG.map[SWEEPER] = SceneModule(true, M_SWEEPER) - sceneModuleTAG.map[OTHER] = SceneModule(true, M_OTHER) sceneLogTAG.map[TAXI] = SceneTAG(false) sceneLogTAG.map[BUS] = SceneTAG(false) @@ -148,28 +139,25 @@ class SceneManager { sceneCache[M_TAXI]?.logger = logger sceneCache[M_TAXI_P]?.logger = logger sceneCache[M_NETWORK]?.logger = logger - sceneCache[M_ADAS_IMPL]?.logger = logger + sceneCache[M_D_C]?.logger = logger sceneCache[M_HMI]?.logger = logger sceneCache[M_DEVA]?.logger = logger - sceneCache[M_OLD_ROUTE]?.logger = logger scene.updateSceneCache(sceneCache) } BUS -> { sceneCache[M_BUS]?.logger = logger sceneCache[M_NETWORK]?.logger = logger - sceneCache[M_ADAS_IMPL]?.logger = logger + sceneCache[M_D_C]?.logger = logger sceneCache[M_HMI]?.logger = logger sceneCache[M_DEVA]?.logger = logger - sceneCache[M_OLD_ROUTE]?.logger = logger scene.updateSceneCache(sceneCache) } SWEEPER -> { sceneCache[M_SWEEPER]?.logger = logger sceneCache[M_NETWORK]?.logger = logger - sceneCache[M_ADAS_IMPL]?.logger = logger + sceneCache[M_D_C]?.logger = logger sceneCache[M_HMI]?.logger = logger sceneCache[M_DEVA]?.logger = logger - sceneCache[M_OLD_ROUTE]?.logger = logger scene.updateSceneCache(sceneCache) } } 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/SyncConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/SyncConfig.kt index 7a5ad33a75..e5464fd9d1 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/SyncConfig.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/SyncConfig.kt @@ -16,7 +16,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.zhjt.mogo_core_function_devatools.trace.network.StartUpTraceNetWorkModel import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants object SyncConfig { @@ -24,12 +23,6 @@ object SyncConfig { private var traceId: String? = null fun update(context: Context) { - - // if (AppConfigInfo.widevineIDMd5.isNullOrEmpty()) { -// AppConfigInfo.widevineIDMd5 = -// DeviceIdUtils.getWidevineIDWithMd5(AbsMogoApplication.getApp()) -// } - if (MoGoAiCloudClient.getInstance().aiCloudClientConfig != null) { AppConfigInfo.mogoSN = MoGoAiCloudClient.getInstance().aiCloudClientConfig.sn AppConfigInfo.mogoToken = MoGoAiCloudClient.getInstance().aiCloudClientConfig.token @@ -58,12 +51,10 @@ object SyncConfig { } @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = ChainConstant.CHAIN_LINK_INIT, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_APP_INFO_CONFIG_UPDATE, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_INIT_STATUS, + linkCode = ChainConstant.CHAIN_SOURCE_INIT, + nodeAliasCode = ChainConstant.CHAIN_CODE_APP_INFO_CONFIG_UPDATE, + paramIndexes = [0] ) fun logOutConfig(appConfig: AppConfigInfo) { startUpTraceModel.report(traceId, { 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 9b76d886ce..97205ddc22 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 @@ -11,11 +11,9 @@ import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA -import com.mogo.eagle.core.utilcode.util.DeviceUtils import com.mogo.eagle.core.utilcode.util.Utils import com.zhidao.loglib.fw.FileWriteManager import com.zhidao.loglib.fw.FwBuild -import com.zhjt.service.chain.core.ChainTraceStarter import mogo.telematics.pad.MessagePad class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener { @@ -42,68 +40,71 @@ class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener { mContext = context // 初始化Trace抓取服务 val pkgName = Utils.getApp().packageName - ChainTraceStarter.start(pkgName, DeviceUtils.getMacAddress(), false) CallerCloudListenerManager.addListener(TAG, this) CallerAutopilotCarConfigListenerManager.addListener(TAG, this) // Trace过程中进行日志抓取,对日志进行配置 - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS] = - FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_INIT) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_GNSSINFO] = + fwBuildMap[ChainConstant.CHAIN_TYPE_INIT_STATUS] = + FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_INIT) + fwBuildMap[ChainConstant.CHAIN_TYPE_GNSS] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_GNSS) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] = + fwBuildMap[ChainConstant.CHAIN_TYPE_SOCKET_AUTOPILOT] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_AUTO) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] = + fwBuildMap[ChainConstant.CHAIN_TYPE_SOCKET_DATA_TRACKED] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_DATA_TRACK) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] = + fwBuildMap[ChainConstant.CHAIN_TYPE_SOCKET_TRAJECTORY] = FwBuild(false, 30, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_TRAJECTORY) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] = + fwBuildMap[ChainConstant.CHAIN_TYPE_SOCKET_VEHICLE] = FwBuild(false, 30, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_VEHICLE) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAFFIC_LIGHT] = - FwBuild(false, 30, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_TRAFFIC_LIGHT) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS] = + fwBuildMap[ChainConstant.CHAIN_TYPE_SOCKET_TRAFFIC_LIGHT] = + FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_TRAFFIC_LIGHT) + fwBuildMap[ChainConstant.CHAIN_TYPE_SOCKET_P_OBJECTS] = FwBuild(false, 30, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_PLANNING_OBJECTS) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_ACTIONS] = + fwBuildMap[ChainConstant.CHAIN_TYPE_SOCKET_P_ACTIONS] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_PLANNING_ACTIONS) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_NATIVE_LEAK] = + fwBuildMap[ChainConstant.CHAIN_TYPE_HMI] = + FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_HMI_ACTIONS) + fwBuildMap[ChainConstant.CHAIN_TYPE_NATIVE_LEAK] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_RECORD_NATIVE_LEAK) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_ANR] = + fwBuildMap[ChainConstant.CHAIN_TYPE_ANR] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_RECORD_ANR) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_CLOUD_V2N] = - FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_CLOUD_WEB_SOCKET_V2N) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_HD_MAP] = + 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] = + fwBuildMap[ChainConstant.CHAIN_TYPE_WEAK_NETWORK] = FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_RECORD_WEAK_NETWORK) - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS] = + traceInfoCache[ChainConstant.CHAIN_TYPE_INIT_STATUS] = ChainLogParam(true, "ADAS连接状态") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_GNSSINFO] = + traceInfoCache[ChainConstant.CHAIN_TYPE_GNSS] = ChainLogParam(true, "ADAS自车定位") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] = + traceInfoCache[ChainConstant.CHAIN_TYPE_SOCKET_AUTOPILOT] = ChainLogParam(true, "ADAS自动驾驶链路(包含: 自动驾驶状态交互,全局路径,到站提醒,节点状态,异常上报)") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] = + traceInfoCache[ChainConstant.CHAIN_TYPE_SOCKET_DATA_TRACKED] = ChainLogParam(true, "ADAS感知物体") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] = + traceInfoCache[ChainConstant.CHAIN_TYPE_SOCKET_TRAJECTORY] = ChainLogParam(false, "ADAS车前引导线") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] = + traceInfoCache[ChainConstant.CHAIN_TYPE_SOCKET_VEHICLE] = ChainLogParam(false, "ADAS车辆底盘数据") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAFFIC_LIGHT] = - ChainLogParam(false, "ADAS红绿灯数据") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS] = + traceInfoCache[ChainConstant.CHAIN_TYPE_SOCKET_TRAFFIC_LIGHT] = + ChainLogParam(true, "ADAS红绿灯数据") + traceInfoCache[ChainConstant.CHAIN_TYPE_SOCKET_P_OBJECTS] = ChainLogParam(false, "ADAS PLANNING 感知障碍物") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_ACTIONS] = + traceInfoCache[ChainConstant.CHAIN_TYPE_SOCKET_P_ACTIONS] = ChainLogParam(true, "ADAS PLANNING 决策行为") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_NATIVE_LEAK] = + traceInfoCache[ChainConstant.CHAIN_TYPE_HMI] = + ChainLogParam(true, "人机交互行为") + traceInfoCache[ChainConstant.CHAIN_TYPE_NATIVE_LEAK] = ChainLogParam(true, "Native Leak Record") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_ANR] = + traceInfoCache[ChainConstant.CHAIN_TYPE_ANR] = ChainLogParam(true, "ANR Record") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_CLOUD_V2N] = - ChainLogParam(true, "Cloud WebSocket V2N") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_HD_MAP] = + traceInfoCache[ChainConstant.CHAIN_TYPE_V2X] = + ChainLogParam(true, "V2X(V2N/V2I)") + traceInfoCache[ChainConstant.CHAIN_TYPE_HD_MAP] = ChainLogParam(true, "HD Map Caller") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEAK_NETWORK] = + traceInfoCache[ChainConstant.CHAIN_TYPE_WEAK_NETWORK] = ChainLogParam(true, "WeakNetWork Record") FileWriteManager.getInstance() @@ -138,7 +139,7 @@ class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener { fun refreshTraceInfo(map: HashMap) { map.forEach { (type, param) -> - if (type != ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS) { + if (type != ChainConstant.CHAIN_TYPE_INIT_STATUS) { val fwBuild = this.fwBuildMap[type] fwBuild?.let { CallerLogger.d("$M_DEVA$TAG", "param : ${param.des} , record : ${param.record}") 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-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.kt index 2a7a5c249b..cc97ca970d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.kt @@ -1,10 +1,7 @@ package com.zhjt.mogo_core_function_devatools.upgrade -import android.content.* -import android.util.Log import com.mogo.cloud.passport.* import com.mogo.commons.constants.* -import com.mogo.eagle.core.data.deva.bindingcar.* import com.mogo.eagle.core.data.obu.MogoObuConst.TAG_UPGRADE_OBU import com.mogo.eagle.core.function.api.devatools.download.DownloadType.OBU import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.downLoadPackage @@ -14,10 +11,6 @@ import com.mogo.eagle.core.network.utils.* import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e import com.mogo.eagle.core.utilcode.mogo.logger.scene.* -import io.reactivex.* -import io.reactivex.android.schedulers.* -import io.reactivex.disposables.* -import io.reactivex.schedulers.* import kotlinx.coroutines.* import okhttp3.* @@ -40,27 +33,28 @@ class ObuUpgradeAppNetWorkManager private constructor() { * mac :工控机mac地址, * screenType : 类型 */ - fun getObuUpgradeInfo(context: Context?, mac: String?, versionName: String) { // String sn = "X20202203105S688HZ"; + fun getObuUpgradeInfo(mac: String?, versionName: String) { + // String sn = "X20202203105S688HZ"; // String mac1 = "48:b0:2d:4d:33:40"; scope.launch { try { val sn = MoGoAiCloudClientConfig.getInstance().sn - d(SceneConstant.M_BINDING + TAG_UPGRADE_OBU, "getObuUpgradeInfo mac = $mac ---sn = $sn ---versionName = $versionName --host = ${HostConst.getHost()}") + d(SceneConstant.M_DEVA + TAG_UPGRADE_OBU, "getObuUpgradeInfo mac = $mac ---sn = $sn ---versionName = $versionName --host = ${HostConst.getHost()}") val request = UpgradeAppRequest(sn, mac, "7", null, "0") val requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request)) val info = mUpgradeApiService.getUpgradeInfo(requestBody) if (info.result == null) { - d(SceneConstant.M_BINDING + TAG_UPGRADE_OBU, "getObuUpgradeInfo onNext info == null") + d(SceneConstant.M_DEVA + TAG_UPGRADE_OBU, "getObuUpgradeInfo onNext info == null") deleteObuFile() } else { - d(SceneConstant.M_BINDING + TAG_UPGRADE_OBU, "getObuUpgradeInfo appFileName = " + info.result.appFileName + " ----url = " + info.result.appUrl + " ----name = " + info.result.versionName + " --obuVersionName =" + versionName + " ---info.result = " + info.result) + d(SceneConstant.M_DEVA + TAG_UPGRADE_OBU, "getObuUpgradeInfo appFileName = " + info.result.appFileName + " ----url = " + info.result.appUrl + " ----name = " + info.result.versionName + " --obuVersionName =" + versionName + " ---info.result = " + info.result) if (info.result.versionName.toString() != versionName) { //判断是否下载,当文件名称不一致的时候,就下载 downLoadPackage(OBU, info.result.appFileName, info.result.appUrl) } } } catch (t: Throwable) { t.printStackTrace() - e(SceneConstant.M_BINDING + TAG_UPGRADE_OBU, "getObuUpgradeInfo e = $t") //请求出错,需要删除相关文件 + e(SceneConstant.M_DEVA + TAG_UPGRADE_OBU, "getObuUpgradeInfo e = $t") //请求出错,需要删除相关文件 deleteObuFile() } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt index 46a1b8d37e..5938237bd3 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt @@ -71,7 +71,7 @@ class UpgradeAppNetWorkManager private constructor() { Log.d(TAG, "getAppUpgradeInfo: -> records:" + records?.entries?.joinToString(",") { itx -> "key:${itx.key} -> value:[${itx.value.joinToString(",") { "${it.first},${it.second}" } }]"}) val versionCode = AppUtils.getAppVersionCode() val versionName = AppUtils.getAppVersionName() - Log.d(SceneConstant.M_BINDING + TAG, "getAppUpgradeInfo mac = $macAddress---type = $type---sn = $sn---versionCode =$versionCode---versionName =$versionName") + Log.d(SceneConstant.M_DEVA + TAG, "getAppUpgradeInfo mac = $macAddress---type = $type---sn = $sn---versionCode =$versionCode---versionName =$versionName") val request = UpgradeAppRequest(sn, macAddress, type, versionName, "1") val requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request)) provider?.recordUpgradeRecord(sn ?: "", macAddress, type, FunctionBuildConfig.isSupportPatchUpgrade) @@ -105,7 +105,7 @@ class UpgradeAppNetWorkManager private constructor() { private suspend fun doUpgrade(info: UpgradeAppInfo) { if (info.result != null) { val versionCode = AppUtils.getAppVersionCode() - Log.d(SceneConstant.M_BINDING + TAG, "UpgradeAppInfo url = " + info.result.appUrl + "----code = " + info.result.versionCode + "--versionCode =" + versionCode + "--info.result = " + info.result) + Log.d(SceneConstant.M_DEVA + TAG, "UpgradeAppInfo url = " + info.result.appUrl + "----code = " + info.result.versionCode + "--versionCode =" + versionCode + "--info.result = " + info.result) if (info.result.versionCode > versionCode) { val patchInfo = info.result.patchInfo var downloadUrl: String = info.result.appUrl @@ -172,7 +172,7 @@ class UpgradeAppNetWorkManager private constructor() { deleteApkFile() } } else { - Log.d(SceneConstant.M_BINDING + TAG, "UpgradeAppInfo onNext info == null") + Log.d(SceneConstant.M_DEVA + TAG, "UpgradeAppInfo onNext info == null") deleteApkFile() } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt index 038c36ce71..b0219909a7 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt @@ -2,7 +2,6 @@ package com.zhjt.mogo_core_function_devatools.upgrade import android.content.Context import android.content.pm.PackageInstaller -import android.util.Log import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.function.api.upgrade.IMoGoUpgradeProvider import com.mogo.eagle.core.function.call.base.CallerBase @@ -30,6 +29,7 @@ import kotlinx.coroutines.* import java.io.IOException import java.util.concurrent.ConcurrentHashMap +//todo emArrow trace class UpgradeManager : IDownloadListener { companion object { @@ -75,7 +75,7 @@ class UpgradeManager : IDownloadListener { } override fun onFinished(url: String, path: String) { - Log.d(TAG, "onFinished downloadUrl = $url") + CallerLogger.d("$M_DEVA$TAG", "onFinished downloadUrl = $url") doOnFinished(url, path) } @@ -196,7 +196,7 @@ class UpgradeManager : IDownloadListener { if (type == APK || type == PATCH) { scope.launch { upgradeProvider?.recordDownloadFailed(url, error ?: "下载失败") } } else if (type == OBU) { - CallerLogger.e("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", "----updateObuUpgradeStatus errorMsg = $error ") + CallerLogger.e("${SceneConstant.M_DEVA}${MogoObuConst.TAG_UPGRADE_OBU}", "----updateObuUpgradeStatus errorMsg = $error ") //下载失败,删除文件夹 CallerObuApiManager.deleteObuFile() } @@ -216,7 +216,6 @@ class UpgradeManager : IDownloadListener { CallerLogger.d("$M_DEVA$TAG", "updateUpgradeProgress onPause ----> ") } override fun onProgress(url: String?, length: Int) { -// CallerLogger.d("$M_DEVA$TAG", "updateUpgradeProgress onPause ----> length = $length") val type = types[url] if (type == APK || type == PATCH) { if (length in 1..99) { @@ -235,8 +234,7 @@ class UpgradeManager : IDownloadListener { } override fun onError(url: String?, errorMsg: String?) { - CallerLogger.d("$M_DEVA$TAG", "updateUpgradeProgress errorMsg = $errorMsg") - Log.e(TAG, "updateUpgradeProgress errorMsg = $errorMsg") + CallerLogger.e(TAG, "updateUpgradeProgress errorMsg = $errorMsg") //出错后,去掉下载进度ui,提示检查网络 updateStatusBarDownloadView(false, "download", 0) } @@ -249,10 +247,10 @@ class UpgradeManager : IDownloadListener { private fun handleObuUpgrade(localPath: String) { //下载完成,解压文件 try { - CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", " onFinished localPath = $localPath") + CallerLogger.d("${SceneConstant.M_DEVA}${MogoObuConst.TAG_UPGRADE_OBU}", " onFinished localPath = $localPath") val dest = File(localPath) val files = ZipUtils.unzipFile(localPath, Config.downLoadUnzipObuPath) - CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", " onFinished file = ${Config.downLoadObuPath + dest.name} -----files = $files ") + CallerLogger.d("${SceneConstant.M_DEVA}${MogoObuConst.TAG_UPGRADE_OBU}", " onFinished file = ${Config.downLoadObuPath + dest.name} -----files = $files ") //1传给obu升级,升级成功,2需要删除相应文件夹 var md5Path = "" var tarPath = "" @@ -264,10 +262,10 @@ class UpgradeManager : IDownloadListener { tarPath = f.path } } - CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", "updateObuUpgradeStatus ---md5Path = $md5Path -----tarPath = $tarPath ") + CallerLogger.d("${SceneConstant.M_DEVA}${MogoObuConst.TAG_UPGRADE_OBU}", "updateObuUpgradeStatus ---md5Path = $md5Path -----tarPath = $tarPath ") CallerObuApiManager.uploadObuPack(arrayOf(md5Path, tarPath)) } catch (e: IOException) { - CallerLogger.e("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", "----updateObuUpgradeStatus e = $e ") + CallerLogger.e("${SceneConstant.M_DEVA}${MogoObuConst.TAG_UPGRADE_OBU}", "----updateObuUpgradeStatus e = $e ") //解压失败,删除文件夹 CallerObuApiManager.deleteObuFile() e.printStackTrace() diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/provider/MoGoUpgradeProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/provider/MoGoUpgradeProviderImpl.kt index d53d6a3948..483e2a083c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/provider/MoGoUpgradeProviderImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/provider/MoGoUpgradeProviderImpl.kt @@ -16,7 +16,6 @@ import com.zhjt.mogo_core_function_devatools.upgrade.provider.db.vo.UpgradeRecor import com.zhjt.mogo_core_function_devatools.upgrade.provider.db.vo.UpgradeRecord.Type.FULL import com.zhjt.mogo_core_function_devatools.upgrade.provider.db.vo.UpgradeRecord.Type.PATCH import com.zhjt.service.chain.* -import com.zhjt.service.chain.TracingConstants.Endpoint import java.util.TreeMap import java.util.concurrent.TimeUnit @@ -297,12 +296,10 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = ChainConstant.CHAIN_LINK_CLOUD, - endpoint = Endpoint.PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_CLOUD_PASSPORT_TOKEN, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_INIT_STATUS, + linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, + nodeAliasCode = ChainConstant.CHAIN_CODE_UPGRADE_APP, + paramIndexes = [0] ) private fun onUpgradeRecordLinkLog(extra: Map) {} } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/DetectResultImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/DetectResultImpl.kt index 713d74975f..abe0ff0a72 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/DetectResultImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/DetectResultImpl.kt @@ -4,7 +4,6 @@ import android.util.Log import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.weak.network.StubImpl import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants class DetectResultImpl: StubImpl.ReportDetectResultListener { @@ -17,12 +16,10 @@ class DetectResultImpl: StubImpl.ReportDetectResultListener { } @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_WEAK_NETWORK, - linkCode = ChainConstant.CHAIN_LINK_WEAK_NETWORK, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_WEAK_NETWORK, + linkCode = ChainConstant.CHAIN_SOURCE_WEAK_NETWORK, + nodeAliasCode = ChainConstant.CHAIN_CODE_RECORD_WEAK_NETWORK, + paramIndexes = [0] ) private fun invokeWeakResult(jsonStr: String) { Log.d(TAG, jsonStr) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt index 653969382f..e485217387 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt @@ -4,12 +4,9 @@ import android.util.Log import com.mogo.cloud.network.WeakNetworkManager import com.mogo.cloud.network.WeakNetworkManager.setListener import com.mogo.eagle.core.data.deva.chain.ChainConstant -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.weak.network.SdtManager import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants import java.util.concurrent.locks.ReentrantReadWriteLock object WeakNetworkStrategy { @@ -73,12 +70,10 @@ object WeakNetworkStrategy { } @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_WEAK_NETWORK, - linkCode = ChainConstant.CHAIN_LINK_WEAK_NETWORK, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_WEAK_NETWORK, + linkCode = ChainConstant.CHAIN_SOURCE_WEAK_NETWORK, + nodeAliasCode = ChainConstant.CHAIN_CODE_RECORD_WEAK_NETWORK, + paramIndexes = [0] ) private fun invokeWeakResult(jsonStr: String) { Log.d(TAG, jsonStr) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt index e28d26179c..6d5877ef2c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt @@ -4,9 +4,6 @@ import android.content.Context import android.text.TextUtils import android.util.* import android.view.* -import android.view.ViewGroup.LayoutParams -import android.widget.FrameLayout -import androidx.core.view.* import androidx.lifecycle.ProcessLifecycleOwner import androidx.lifecycle.lifecycleScope import com.alibaba.android.arouter.facade.annotation.Route @@ -23,7 +20,6 @@ import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.data.map.Infrastructure import com.mogo.eagle.core.data.biz.notice.NoticeNormalData import com.mogo.eagle.core.data.biz.notice.NoticeTrafficStylePushData -import com.mogo.eagle.core.data.status.StatusSummaryEntity import com.mogo.eagle.core.function.api.hmi.warning.IMoGoHmiProvider import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.call.hmi.* @@ -45,13 +41,11 @@ import com.mogo.eagle.core.utilcode.floating.* import com.mogo.eagle.core.utilcode.kotlin.safeCancel import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.util.* import com.zhjt.service_biz.BizConfig import kotlinx.coroutines.* import kotlinx.coroutines.selects.* -import java.lang.ref.WeakReference import java.util.concurrent.atomic.AtomicReference /** @@ -125,7 +119,7 @@ class MoGoHmiProvider : IMoGoHmiProvider { ttsMap[v2xType] = System.currentTimeMillis() } } - CallerLogger.d("${SceneConstant.M_OBU}${TAG}", "warningV2X v2xType = $v2xType ---alertContent = $alertContent ---ttsContent = $ttsContent ") + CallerLogger.d("${M_HMI}${TAG}", "warningV2X v2xType = $v2xType ---alertContent = $alertContent ---ttsContent = $ttsContent ") val playTTS = !AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) context?.let { val warningContent = alertContent ?: EventTypeEnumNew.getWarningContent(v2xType) 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 962bbe9474..1b5d8637a1 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 @@ -79,11 +77,9 @@ import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.map.uicontroller.VisualAngleMode.* import kotlinx.android.synthetic.main.view_debug_setting.view.* import kotlinx.android.synthetic.main.view_debug_setting.view.tbRouteDynamicEffect -import kotlinx.android.synthetic.main.view_sop_setting.view.* 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 @@ -127,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 @@ -242,7 +236,7 @@ internal class DebugSettingView @JvmOverloads constructor( } // 开启定时查询速度 isRunCheck = true - Timer().schedule(timerTaskRefresh, Date(), 300) + Timer().schedule(timerTaskRefresh, Date(), 500) if (AppConfigInfo.isConnectAutopilot && (AppConfigInfo.plateNumber.isNullOrEmpty() || AppConfigInfo.iPCMacAddress.isNullOrEmpty())) { //查询工控机基础配置信息 CallerAutoPilotControlManager.getCarConfig() @@ -933,7 +927,7 @@ internal class DebugSettingView @JvmOverloads constructor( clipboardManager?.setPrimaryClip( ClipData.newPlainText( "DockVersion", - mAutoPilotStatusInfo?.dockVersion + CallerAutoPilotStatusListenerManager.getDockerVersion()?:"" ) ) ToastUtils.showLong("docker版本复制成功") @@ -1091,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 @@ -1211,9 +1200,7 @@ internal class DebugSettingView @JvmOverloads constructor( val log = map.value.log when (name) { //ADAS日志标签 - SceneConstant.M_ADAS_IMPL -> cbAdasLog.isChecked = log - //CALLCHAT日志标签 - SceneConstant.M_CHAT -> cbCallChatLog.isChecked = log + SceneConstant.M_D_C -> cbAdasLog.isChecked = log //OBU日志标签 SceneConstant.M_OBU -> cbObuLog.isChecked = log //HMI日志标签 @@ -1226,8 +1213,6 @@ internal class DebugSettingView @JvmOverloads constructor( SceneConstant.M_DEVA -> cbDevaLog.isChecked = log //网络模块日志标签 SceneConstant.M_NETWORK -> cbNetworkLog.isChecked = log - //ROUTE日志标签 - SceneConstant.M_OLD_ROUTE -> cbOldRouteLog.isChecked = log //BUS日志标签 SceneConstant.M_BUS -> cbBusLog.isChecked = log //TAXI日志标签 @@ -1236,8 +1221,6 @@ internal class DebugSettingView @JvmOverloads constructor( SceneConstant.M_TAXI_P -> cbTaxiPLog.isChecked = log //清扫车日志 SceneConstant.M_SWEEPER -> cbSweeperPLog.isChecked = log - //其他模块日志(暂未区分具体模块) - SceneConstant.M_OTHER -> cbOtherLog.isChecked = log } } } @@ -1296,14 +1279,8 @@ internal class DebugSettingView @JvmOverloads constructor( } //ADAS日志标签 cbAdasLog.setOnCheckedChangeListener { _, isChecked -> - val adasModule = SceneModule(isChecked, SceneConstant.M_ADAS_IMPL) - sceneMap[SceneConstant.M_ADAS_IMPL] = adasModule - CallerDevaToolsManager.updateModuleTAG(sceneMap) - } - //CALLCHAT日志标签 - cbCallChatLog.setOnCheckedChangeListener { _, isChecked -> - val callChatModule = SceneModule(isChecked, SceneConstant.M_CHAT) - sceneMap[SceneConstant.M_CHAT] = callChatModule + val adasModule = SceneModule(isChecked, SceneConstant.M_D_C) + sceneMap[SceneConstant.M_D_C] = adasModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //OBU日志标签 @@ -1342,12 +1319,6 @@ internal class DebugSettingView @JvmOverloads constructor( sceneMap[SceneConstant.M_NETWORK] = networkModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } - //ROUTE日志标签 - cbOldRouteLog.setOnCheckedChangeListener { _, isChecked -> - val oldRouteModule = SceneModule(isChecked, SceneConstant.M_OLD_ROUTE) - sceneMap[SceneConstant.M_OLD_ROUTE] = oldRouteModule - CallerDevaToolsManager.updateModuleTAG(sceneMap) - } //BUS日志标签 cbBusLog.setOnCheckedChangeListener { _, isChecked -> val busModule = SceneModule(isChecked, SceneConstant.M_BUS) @@ -1372,13 +1343,6 @@ internal class DebugSettingView @JvmOverloads constructor( sceneMap[SceneConstant.M_SWEEPER] = sweeperModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } - //其他未分类模块日志 - cbOtherLog.setOnCheckedChangeListener { _, isChecked -> - val otherModule = SceneModule(isChecked, SceneConstant.M_OTHER) - sceneMap[SceneConstant.M_OTHER] = otherModule - CallerDevaToolsManager.updateModuleTAG(sceneMap) - } - //开始停止抓取全量日志 tbLogCatch.isChecked = SharedPrefsMgr.getInstance(context).getBoolean(MoGoConfig.CATCH_LOG, false) @@ -1437,10 +1401,10 @@ internal class DebugSettingView @JvmOverloads constructor( */ cbAdasAutoPilot.setOnCheckedChangeListener { _, isChecked -> val map = CallerDevaToolsManager.getTraceInfo() - val param = map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] + val param = map[ChainConstant.CHAIN_TYPE_SOCKET_AUTOPILOT] param?.let { it.record = isChecked - map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] = param + map[ChainConstant.CHAIN_TYPE_SOCKET_AUTOPILOT] = param CallerDevaToolsManager.refreshTraceInfo(map) } } @@ -1450,10 +1414,10 @@ internal class DebugSettingView @JvmOverloads constructor( */ cbAdasDataTrack.setOnCheckedChangeListener { _, isChecked -> val map = CallerDevaToolsManager.getTraceInfo() - val param = map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] + val param = map[ChainConstant.CHAIN_TYPE_SOCKET_DATA_TRACKED] param?.let { it.record = isChecked - map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] = param + map[ChainConstant.CHAIN_TYPE_SOCKET_DATA_TRACKED] = param CallerDevaToolsManager.refreshTraceInfo(map) } } @@ -1463,10 +1427,10 @@ internal class DebugSettingView @JvmOverloads constructor( */ cbAdasTrajectory.setOnCheckedChangeListener { _, isChecked -> val map = CallerDevaToolsManager.getTraceInfo() - val param = map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] + val param = map[ChainConstant.CHAIN_TYPE_SOCKET_TRAJECTORY] param?.let { it.record = isChecked - map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] = param + map[ChainConstant.CHAIN_TYPE_SOCKET_TRAJECTORY] = param CallerDevaToolsManager.refreshTraceInfo(map) } } @@ -1476,10 +1440,10 @@ internal class DebugSettingView @JvmOverloads constructor( */ cbAdasVehicle.setOnCheckedChangeListener { _, isChecked -> val map = CallerDevaToolsManager.getTraceInfo() - val param = map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] + val param = map[ChainConstant.CHAIN_TYPE_SOCKET_VEHICLE] param?.let { it.record = isChecked - map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] = param + map[ChainConstant.CHAIN_TYPE_SOCKET_VEHICLE] = param CallerDevaToolsManager.refreshTraceInfo(map) } } @@ -1489,10 +1453,10 @@ internal class DebugSettingView @JvmOverloads constructor( */ cbAdasTrafficlight.setOnCheckedChangeListener { _, isChecked -> val map = CallerDevaToolsManager.getTraceInfo() - val param = map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAFFIC_LIGHT] + val param = map[ChainConstant.CHAIN_TYPE_SOCKET_TRAFFIC_LIGHT] param?.let { it.record = isChecked - map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAFFIC_LIGHT] = param + map[ChainConstant.CHAIN_TYPE_SOCKET_TRAFFIC_LIGHT] = param CallerDevaToolsManager.refreshTraceInfo(map) } } @@ -1502,10 +1466,10 @@ internal class DebugSettingView @JvmOverloads constructor( */ cbAdasPlanningObj.setOnCheckedChangeListener { _, isChecked -> val map = CallerDevaToolsManager.getTraceInfo() - val param = map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS] + val param = map[ChainConstant.CHAIN_TYPE_SOCKET_P_OBJECTS] param?.let { it.record = isChecked - map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS] = param + map[ChainConstant.CHAIN_TYPE_SOCKET_P_OBJECTS] = param CallerDevaToolsManager.refreshTraceInfo(map) } } @@ -1514,23 +1478,23 @@ internal class DebugSettingView @JvmOverloads constructor( private fun refreshTraceInfo() { val traceInfoMap = CallerDevaToolsManager.getTraceInfo() - val autopilot = traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] + val autopilot = traceInfoMap[ChainConstant.CHAIN_TYPE_SOCKET_AUTOPILOT] autopilot?.let { cbAdasAutoPilot.isChecked = it.record } - val dataTrack = traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] + val dataTrack = traceInfoMap[ChainConstant.CHAIN_TYPE_SOCKET_DATA_TRACKED] dataTrack?.let { cbAdasDataTrack.isChecked = it.record } - val trajectory = traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] + val trajectory = traceInfoMap[ChainConstant.CHAIN_TYPE_SOCKET_TRAJECTORY] trajectory?.let { cbAdasTrajectory.isChecked = it.record } - val vehicle = traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] + val vehicle = traceInfoMap[ChainConstant.CHAIN_TYPE_SOCKET_VEHICLE] vehicle?.let { cbAdasVehicle.isChecked = it.record } - val trafficlight = traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAFFIC_LIGHT] + val trafficlight = traceInfoMap[ChainConstant.CHAIN_TYPE_SOCKET_TRAFFIC_LIGHT] trafficlight?.let { cbAdasTrafficlight.isChecked = it.record } @@ -1587,8 +1551,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}" @@ -1659,12 +1624,7 @@ internal class DebugSettingView @JvmOverloads constructor( "司机端Server启动" } else -> { - "乘客端${ - when { - !AppConfigInfo.serverSn.isNullOrEmpty() -> "(司机屏SN是:${AppConfigInfo.serverSn?:""})" - else -> "" - } - }连接" + "乘客端${"(司机屏SN是:${AppConfigInfo.serverSn})"}连接" } } }是否正常:${ @@ -1697,11 +1657,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)?:"" @@ -1781,8 +1740,7 @@ internal class DebugSettingView @JvmOverloads constructor( /** * 自动驾驶状态回调 */ - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - mAutoPilotStatusInfo = autoPilotStatusInfo + override fun onAutopilotStatusResponse(state: Int) { setAutopilotConnectStatus() } @@ -1910,7 +1868,7 @@ internal class DebugSettingView @JvmOverloads constructor( if (accelerationList.size > 9) { accelerationList.removeLast() } - gnssInfo?.acceleration?.let { + gnssInfo.acceleration.let { if (accelerationList.isEmpty()) { accelerationList.add( AccelerationEntity( @@ -2012,7 +1970,6 @@ internal class DebugSettingView @JvmOverloads constructor( } } - /** * 车辆方向盘转向角回调 * @param steering 方向盘转向角 @@ -2033,36 +1990,6 @@ internal class DebugSettingView @JvmOverloads constructor( } } - /** - * 车辆加速度 - */ - override fun onAutopilotAcc(carAcc: Float) { - - } - - /** - * 油门 - */ - override fun onAutopilotThrottle(throttle: Float) { - - } - - /** - * 刹车 - */ - override fun onAutopilotBrake(brake: Float) { - - } - - /** - * 清扫车(福田)清扫控制系统状态 - */ - override fun onSweeperFutianCleanSystemState(cleanSystemState: ChassisStatesOuterClass.SweeperFuTianTaskSystemStates) { - - } - override fun onSweeperFutianTaskIndexData(roboSweeperTaskIndex: RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex) { - - } /** * 吐司提示 */ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index dc7dac329e..7c7509f19e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -17,17 +17,15 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsFuncConfigList import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.obu.CallerObuApiManager import com.mogo.eagle.core.function.hmi.R -import com.mogo.eagle.core.utilcode.kotlin.currentPadding import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager +import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView -import com.mogo.eagle.core.utilcode.util.UiThreadHandler import kotlinx.android.synthetic.main.view_sop_setting.view.* import kotlinx.android.synthetic.main.view_sop_setting.view.tbRouteDynamicEffect -import java.util.* /** * SOP设置窗口 @@ -49,16 +47,16 @@ internal class SOPSettingView @JvmOverloads constructor( private fun initView() { sopLayout.setOnClickListener { } - //绕障类功能开关 tbObstacleAvoidance.isChecked = FunctionBuildConfig.isDetouring tbObstacleAvoidance.setOnCheckedChangeListener { _, isChecked -> + hmiAction("绕障类功能开关",isChecked) CallerAutoPilotControlManager.sendDetouring(isChecked) FunctionBuildConfig.isDetouring = isChecked } tbMarkingObstacles.isChecked = FunctionBuildConfig.isPNCWarning - //危险障碍物颜色标记开关 tbMarkingObstacles.setOnCheckedChangeListener { _, isChecked -> + hmiAction("危险障碍物颜色标记开关",isChecked) FunctionBuildConfig.isPNCWarning = isChecked } @@ -66,61 +64,62 @@ internal class SOPSettingView @JvmOverloads constructor( tbMarkingObstacles.visibility = View.GONE } - //引导线动态效果 tbRouteDynamicEffect.isChecked = HmiBuildConfig.isShowRouteStrategy tbRouteDynamicEffect.setOnCheckedChangeListener { _, isChecked -> + hmiAction("引导线动态效果",isChecked) HmiBuildConfig.isShowRouteStrategy = isChecked } - /** - * obu弱势交通控制, 默认开启 - */ + //默认开启 tbObuWeaknessTrafficSop.isChecked = HmiBuildConfig.isShowObuWeaknessTrafficView tbObuWeaknessTrafficSop.setOnCheckedChangeListener { _, isChecked -> + hmiAction("obu弱势交通控制, ",isChecked) HmiBuildConfig.isShowObuWeaknessTrafficView = isChecked } /** - * 云端弱势交通控制 默认关闭 + * 默认关闭 */ tbCloudWeaknessTrafficSop.isChecked = HmiBuildConfig.isShowCloudWeaknessTrafficView tbCloudWeaknessTrafficSop.setOnCheckedChangeListener { _, isChecked -> + hmiAction("云端弱势交通控制, ",isChecked) HmiBuildConfig.isShowCloudWeaknessTrafficView = isChecked } - /** - * V2N场景进PNC - */ tbV2nPnc.isChecked = FunctionBuildConfig.isV2NPnc tbV2nPnc.setOnCheckedChangeListener{ compoundButton, isChecked -> if(!compoundButton.isPressed){ return@setOnCheckedChangeListener } + hmiAction("V2N场景进PNC, ",isChecked) CallerAutoPilotControlManager.sendV2nToPncCmd(isChecked) FunctionBuildConfig.isV2NPnc = isChecked } /** - * obu V2V开关,默认打开 + * 默认打开 */ tbObuV2vView.isChecked = HmiBuildConfig.isShowObuV2vView tbObuV2vView.setOnCheckedChangeListener { _, isChecked -> + hmiAction("obuV2V开关, ",isChecked) HmiBuildConfig.isShowObuV2vView = isChecked } /** - * obu V2i开关,默认打开 + * 默认打开 */ tbObuV2iView.isChecked = HmiBuildConfig.isShowObuV2iView tbObuV2iView.setOnCheckedChangeListener { _, isChecked -> + hmiAction("obuV2i开关, ",isChecked) HmiBuildConfig.isShowObuV2iView = isChecked } /** - * obu 闯红灯预警,默认关闭 + * 默认关闭 */ tbRunRedLightSop.isChecked = HmiBuildConfig.isShowRunRedLightView tbRunRedLightSop.setOnCheckedChangeListener { _, isChecked -> + hmiAction("obu闯红灯预警, ",isChecked) HmiBuildConfig.isShowRunRedLightView = isChecked if (HmiBuildConfig.isShowRunRedLightView) { CallerTelematicManager.sendMsgToAllClients(TelematicConstant.OBU_RUNREDLIGHT_WARNING, "1".toByteArray()) @@ -130,10 +129,11 @@ internal class SOPSettingView @JvmOverloads constructor( } /** - * obu 绿波通行,默认关闭 + * 默认关闭 */ tbGreenWaveSop.isChecked = HmiBuildConfig.isShowGreenWaveView tbGreenWaveSop.setOnCheckedChangeListener { _, isChecked -> + hmiAction("obu绿波通行, ",isChecked) HmiBuildConfig.isShowGreenWaveView = isChecked if (HmiBuildConfig.isShowGreenWaveView) { CallerTelematicManager.sendMsgToAllClients(TelematicConstant.OBU_GREENWAVE_WARNING, "1".toByteArray()) @@ -142,9 +142,9 @@ internal class SOPSettingView @JvmOverloads constructor( } } - //红绿灯标识 tbTrafficLight.isChecked = HmiBuildConfig.isShowTrafficLightView tbTrafficLight.setOnCheckedChangeListener { _, isChecked -> + hmiAction("红绿灯标识开关, ",isChecked) if (!isChecked) { HmiBuildConfig.isShowTrafficLightView = false } else { @@ -153,9 +153,9 @@ internal class SOPSettingView @JvmOverloads constructor( } } - //限速标识 tbSpeedLimit.isChecked = HmiBuildConfig.isShowLimitingVelocityView tbSpeedLimit.setOnCheckedChangeListener { _, isChecked -> + hmiAction("限速标识开关, ",isChecked) if (isChecked) { HmiBuildConfig.isShowLimitingVelocityView = true } else { @@ -166,11 +166,11 @@ internal class SOPSettingView @JvmOverloads constructor( // 演示模式,上一次勾选的数据 tbDemoMode.isChecked = FunctionBuildConfig.isDemoMode - // 演示模式 tbDemoMode.setOnCheckedChangeListener { compoundButton, _ -> if(!compoundButton.isPressed){ return@setOnCheckedChangeListener } + hmiAction("演示模式开关, ",!FunctionBuildConfig.isDemoMode) FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode CallerHmiManager.updateStatusBarLeftView(FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(context)) CallerAutoPilotControlManager.setDemoMode(FunctionBuildConfig.isDemoMode) @@ -184,14 +184,13 @@ internal class SOPSettingView @JvmOverloads constructor( tbDemoMode.visibility = View.GONE } - // 雨天模式,上一次勾选的数据 tbRainMode.isChecked = FunctionBuildConfig.isRainMode - //雨天模式 tbRainMode.setOnCheckedChangeListener { compoundButton, isChecked -> if(!compoundButton.isPressed){ return@setOnCheckedChangeListener } + hmiAction("雨天模式开关, ",isChecked) CallerAutoPilotControlManager.setRainMode(isChecked) FunctionBuildConfig.isRainMode = isChecked } @@ -200,9 +199,9 @@ internal class SOPSettingView @JvmOverloads constructor( tbRainMode.visibility = View.GONE } - //OBU控制总开关 tbObu.isChecked = CallerObuApiManager.isConnected() tbObu.setOnCheckedChangeListener { _, isChecked -> + hmiAction("OBU控制总开关, ",isChecked) if (isChecked) { CallerObuApiManager.resetObuIpAddress(MogoObuConst.OBU_DEFAULT_IP) } else { @@ -212,14 +211,15 @@ internal class SOPSettingView @JvmOverloads constructor( } - //是否开启异常上报 tbIPCReport.isChecked = FunctionBuildConfig.isReportWarning tbIPCReport.setOnCheckedChangeListener { _, isChecked -> + hmiAction("是否开启异常上报, ",isChecked) FunctionBuildConfig.isReportWarning = isChecked } tbNewV2NData.isChecked = FunctionBuildConfig.isNewV2NData tbNewV2NData.setOnCheckedChangeListener { _, isChecked -> + hmiAction("是否是V2N新链路(云->工控机->App)",isChecked) FunctionBuildConfig.isNewV2NData = isChecked } @@ -249,6 +249,7 @@ internal class SOPSettingView @JvmOverloads constructor( FunctionBuildConfig.detouringSpeed-- tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" } + hmiAction("变道绕障的目标障碍物速度阈值",FunctionBuildConfig.detouringSpeed) } ivSpeedAdd.setOnClickListener { if (FunctionBuildConfig.detouringSpeed >= 7) { @@ -257,14 +258,17 @@ internal class SOPSettingView @JvmOverloads constructor( FunctionBuildConfig.detouringSpeed++ tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" } + hmiAction("变道绕障的目标障碍物速度阈值",FunctionBuildConfig.detouringSpeed) } btnSpeedSet.setOnClickListener { val isSuccess = CallerAutoPilotControlManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed.toDouble()) if (isSuccess == true) { ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置成功") + hmiAction("变道绕障的目标障碍物速度阈值设置","成功") } else { ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败") + hmiAction("变道绕障的目标障碍物速度阈值设置","失败") } } 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 ed0847361d..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) { + 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/utils/FileUtils.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/FileUtils.java deleted file mode 100644 index e558fa7a58..0000000000 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/FileUtils.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.mogo.eagle.core.function.hmi.ui.utils; - -import java.util.regex.Pattern; - -/** - * @author Jing - * @description 文件工具类 - * @since: 11/2/21 - */ -public class FileUtils { - - /** - * @param path 文件链接 - * @return 视频文件 - */ - boolean isVideo(String path) { - String reg = "(mp4|flv|avi|rm|rmvb|wmv|mov)"; - Pattern p = Pattern.compile(reg); - boolean boo = p.matcher("url").find(); - return boo; - } - - boolean isImage(String path) { - String reg = "(jpg|png|jpeg|gif|bmp)"; - Pattern p = Pattern.compile(reg); - boolean boo = p.matcher("url").find(); - return boo; - } -} diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/HmiActionLog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/HmiActionLog.kt new file mode 100644 index 0000000000..c4c7d2450f --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/HmiActionLog.kt @@ -0,0 +1,20 @@ +package com.mogo.eagle.core.function.hmi.ui.utils + +import com.mogo.eagle.core.data.deva.chain.ChainConstant +import com.zhjt.service.chain.ChainLog + +class HmiActionLog { + + companion object { + + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_HMI, + linkCode = ChainConstant.CHAIN_SOURCE_HMI, + nodeAliasCode = ChainConstant.CHAIN_CODE_HMI_ACTIONS, + paramIndexes = [0, 1] + ) + fun hmiAction(data: Any, data1: Any) { + + } + } +} \ 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/utils/NoticeGlobalTools.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/NoticeGlobalTools.kt deleted file mode 100644 index f22a239803..0000000000 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/NoticeGlobalTools.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.mogo.eagle.core.function.hmi.ui.utils - -import android.view.View - -/** - * @author congtaowang - * @since 2020/6/28 - * - * 描述 - */ -fun View.gone() { - if (this.visibility != View.GONE) { - this.visibility = View.GONE - } -} - -fun View.visible() { - if (this.visibility != View.VISIBLE) { - this.visibility = View.VISIBLE - } -} - -fun View.invisible() { - if (this.visibility != View.INVISIBLE) { - this.visibility = View.INVISIBLE - } -} \ 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/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 f6a1f0bd87..7df9053a03 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 onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) { + super.onAutopilotIpcConnectStatusChanged(status, reason) ThreadUtils.runOnUiThread { - setViewStatus() + setViewStatus(status == 0x00) } } - 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/SpeedPanelView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt index 325c33de50..7105770856 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt @@ -6,8 +6,6 @@ import android.util.AttributeSet import android.view.Gravity import android.widget.FrameLayout import com.mogo.eagle.core.data.enums.DataSourceType -import com.mogo.eagle.core.data.map.MogoLocation -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener import com.mogo.eagle.core.function.api.datacenter.union.ILimitingVelocityListener import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.function.call.v2x.CallerLimitingVelocityListenerManager @@ -18,8 +16,7 @@ class SpeedPanelView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : FrameLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener, - ILimitingVelocityListener { +) : FrameLayout(context, attrs, defStyleAttr), ILimitingVelocityListener { companion object { const val TAG = "SpeedPanelView" @@ -27,8 +24,6 @@ class SpeedPanelView @JvmOverloads constructor( var mContext: Context var mSpeedChartView: SpeedChartView - @Volatile - var mLatLng: MogoLocation? = null init { setBackgroundResource(R.drawable.yi_biao_pan_bg_nor) @@ -47,31 +42,22 @@ class SpeedPanelView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() CallerLimitingVelocityListenerManager.addListener(TAG, this) - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, this) - } - - override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { - mogoLocation?.let { - mLatLng = mogoLocation - } } override fun onLimitingVelocityChange(limitingVelocity: Int, sourceType: DataSourceType) { super.onLimitingVelocityChange(limitingVelocity, sourceType) - mLatLng?.let { - UiThreadHandler.post { - val speed = (it.gnssSpeed * 3.6f).toInt() - mSpeedChartView.setArcColor(Color.parseColor(if (speed > limitingVelocity) "#DB3137" else "#3E77F6")) - mSpeedChartView.setValues(speed) - setBackgroundResource(if (speed > limitingVelocity) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor) - } + UiThreadHandler.post { + val speed = + (CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed * 3.6f).toInt() + mSpeedChartView.setArcColor(Color.parseColor(if (speed > limitingVelocity) "#DB3137" else "#3E77F6")) + mSpeedChartView.setValues(speed) + setBackgroundResource(if (speed > limitingVelocity) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor) } } override fun onDetachedFromWindow() { super.onDetachedFromWindow() CallerLimitingVelocityListenerManager.removeListener(TAG) - CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) } } \ 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 e7706741cc..5e911bb87b 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 @@ -21,6 +20,7 @@ import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.map.OfflineMapDialog +import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.util.* @@ -43,14 +43,11 @@ class SystemVersionView @JvmOverloads constructor( const val TAG = "SystemVersionView" } - private var connectStatus = false private var dockerVersion: String? = null //工控机版本 - private var autopilotStatus: Int? = null //自动驾驶状态 0代表不可自动驾驶,1代表可自动驾驶,2代表自动驾驶中 - - private var ipcUpgradeStateInfo: IPCUpgradeStateInfo?=null + private var ipcUpgradeStateInfo: IPCUpgradeStateInfo? = null private var needQueryContainers: Boolean = false - private var dockerList: List?=null + private var dockerList: List? = null private var previousProgress: Int = -1 //前一秒的下载进度,用于计算下载剩余时间 private var currentProgress: Int = -1 //当前已下载包体大小 @@ -68,13 +65,13 @@ class SystemVersionView @JvmOverloads constructor( //鹰眼版本视图点击事件 ivPadVersion.setOnClickListener { - CallerLogger.i("$M_HMI$$TAG", "pad version view clicked") + hmiAction("$M_HMI$$TAG", "pad version view clicked") CallerDevaToolsManager.queryAppUpgrade() } //工控机版本视图点击事件 ivAdVersion.setOnClickListener { - CallerLogger.i("$M_HMI$$TAG", "ad version view clicked") + hmiAction("$M_HMI$$TAG", "ad version view clicked") // if(AdUpgradeStateHelper.isUpgradeableStatus()){ // if(autopilotStatus == 2){ // //当前处于自动驾驶状态,不可进行升级,Toast提示 @@ -93,15 +90,16 @@ class SystemVersionView @JvmOverloads constructor( when { AdUpgradeStateHelper.isDownloading(it.status) -> { //下载中,点击Toast提示:下载剩余时间 - it.progress?.let { progress-> - progress.progressDetail?.let {progressDetail-> - if(AdUpgradeStateHelper.getRemainingTime( + it.progress?.let { progress -> + progress.progressDetail?.let { progressDetail -> + if (AdUpgradeStateHelper.getRemainingTime( progressDetail.total, previousProgress, currentProgress - ).isEmpty()){ + ).isEmpty() + ) { ToastUtils.showShort("下载已完成") - }else{ + } else { ToastUtils.showShort( "预计" + AdUpgradeStateHelper.getRemainingTime( progressDetail.total, @@ -135,6 +133,10 @@ class SystemVersionView @JvmOverloads constructor( } ivHDCache.setOnClickListener { + hmiAction( + "$M_HMI$TAG", + "HD map view click , isHDCached:$isHDCached , lon:${location?.longitude} , lat:${location?.latitude}" + ) if (isHDCached) {// 已缓存 ToastUtils.showShort(resources.getString(R.string.offline_had_downloaded)) } else {// 未缓存 @@ -143,7 +145,6 @@ class SystemVersionView @JvmOverloads constructor( ToastUtils.showShort(resources.getString(R.string.location_try_again)) } else {// 拿到了高精的经纬度 val dialog = OfflineMapDialog(context) - CallerLogger.i("$M_HMI$$TAG", "location lon is:${location?.longitude}, lat is:${location?.latitude}") dialog.location = location dialog.show() } @@ -160,7 +161,7 @@ class SystemVersionView @JvmOverloads constructor( } } - if(AdUpgradeStateHelper.isConfirmUpgrade()){ + if (AdUpgradeStateHelper.isConfirmUpgrade()) { //将角标改为“下载中” ivAdStatus?.setImageResource(R.drawable.icon_downloading) // ivAdVersion?.setBackgroundResource(R.drawable.version_latest_background) @@ -176,7 +177,7 @@ class SystemVersionView @JvmOverloads constructor( private fun setAdUpgradeInfo(ipcUpgradeStateInfo: IPCUpgradeStateInfo) { this.previousProgress = this.currentProgress ipcUpgradeStateInfo.progress?.let { - it.progressDetail?.let {progressDetail-> + it.progressDetail?.let { progressDetail -> this.currentProgress = progressDetail.current } } @@ -187,22 +188,22 @@ class SystemVersionView @JvmOverloads constructor( * 展示工控机下载、升级状态信息 * */ - fun showAdUpgradeStatus(ipcUpgradeStateInfo: IPCUpgradeStateInfo){ - ThreadUtils.runOnUiThread{ + fun showAdUpgradeStatus(ipcUpgradeStateInfo: IPCUpgradeStateInfo) { + ThreadUtils.runOnUiThread { setAdUpgradeInfo(ipcUpgradeStateInfo) AdUpgradeStateHelper.setUpgradeableStatus(false) - ipcUpgradeStateInfo.status.let {status-> + ipcUpgradeStateInfo.status.let { status -> when { AdUpgradeStateHelper.isDownloading(status) -> { //正在下载,展示“下载中”角标,展示进度条,并设置当前下载进度 ivAdStatus?.setImageResource(R.drawable.icon_downloading) - adCircularProgressView?.let {adCircularProgressView-> + adCircularProgressView?.let { adCircularProgressView -> adCircularProgressView.visibility = View.VISIBLE CallerLogger.i( "$M_HMI$$TAG", "showAdUpgradeStatus status=$status" ) - ipcUpgradeStateInfo.progress?.let { progress-> - progress.progressDetail?.let {progressDetail-> + ipcUpgradeStateInfo.progress?.let { progress -> + progress.progressDetail?.let { progressDetail -> adCircularProgressView.setProgress( AdUpgradeStateHelper.downloadProgress( progressDetail.current, @@ -223,14 +224,14 @@ class SystemVersionView @JvmOverloads constructor( // ivAdVersion?.setBackgroundResource(R.drawable.version_latest_background) AdUpgradeStateHelper.setConfirmUpgrade(false) } - AdUpgradeStateHelper.isDownloadFinish(status) ->{ + AdUpgradeStateHelper.isDownloadFinish(status) -> { //升级中,将状态设为“升级中”角标,并隐藏进度条 ivAdStatus?.setImageResource(R.drawable.icon_upgrading) adCircularProgressView?.visibility = View.GONE // ivAdVersion?.setBackgroundResource(R.drawable.version_latest_background) AdUpgradeStateHelper.setConfirmUpgrade(false) } - AdUpgradeStateHelper.isUpgrading(status) ->{ + AdUpgradeStateHelper.isUpgrading(status) -> { //升级中,将状态设为“升级中”角标,并隐藏进度条 ivAdStatus?.setImageResource(R.drawable.icon_upgrading) adCircularProgressView?.visibility = View.GONE @@ -304,7 +305,7 @@ class SystemVersionView @JvmOverloads constructor( } CallerHmiListenerManager.addListener(TAG, this) CallerAutoPilotStatusListenerManager.addListener(TAG, this) - CallerDevaToolsListenerManager.addListener(TAG,this) + CallerDevaToolsListenerManager.addListener(TAG, this) CallerChassisLocationWGS84ListenerManager.addListener(TAG, this) needQueryContainers = true } @@ -321,25 +322,9 @@ class SystemVersionView @JvmOverloads constructor( needQueryContainers = false } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { - connectStatus = autoPilotStatusInfo.connectStatus - dockerVersion = autoPilotStatusInfo.dockVersion - autopilotStatus = autoPilotStatusInfo.state - CallerLogger.i( - "$M_HMI$TAG", - "onAutopilotStatusResponse connectStatus=$connectStatus , dockerVersion=$dockerVersion , autopilotStatus=$autopilotStatus" - ) -// if(needQueryContainers && !AdUpgradeStateHelper.isUpgradeableStatus()){ -// dockerVersion?.let { -// //查询是否有新的工控机docker版本 -// CallerBindingcarManager.getBindingcarProvider().queryContainers(MoGoAiCloudClient.getInstance().aiCloudClientConfig.sn,dockerVersion) -// needQueryContainers = false -// } -// } - setViewStatus() - } - - private fun setViewStatus() { + override fun onAutopilotDockerInfo(dockerVersion: String) { + super.onAutopilotDockerInfo(dockerVersion) + this.dockerVersion = dockerVersion showCurrentAdVersion() } @@ -348,13 +333,13 @@ class SystemVersionView @JvmOverloads constructor( */ override fun queryContainersResponse(dockerList: List) { this.dockerList = dockerList - if(dockerList.isNotEmpty()){ + if (dockerList.isNotEmpty()) { //有更新任务,将状态设为“可升级”角标,并隐藏进度条 ivAdStatus?.setImageResource(R.drawable.icon_upgradeable) adCircularProgressView?.visibility = View.GONE // ivAdVersion?.setBackgroundResource(R.drawable.version_upgradeable_background) AdUpgradeStateHelper.setUpgradeableStatus(true) - }else{ + } else { ToastUtils.showLong("已是最新版本") ivAdStatus?.setImageResource(R.drawable.icon_latest_version) adCircularProgressView?.visibility = View.GONE diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java index b667807e4c..096d4690b3 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficDataView.java @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.hmi.ui.widget; import static com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI; import android.annotation.SuppressLint; import android.content.Context; @@ -76,7 +77,7 @@ public class TrafficDataView extends ConstraintLayout implements } else { accTextView.setText("- " + accStr); } - int state = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState(); + int state = CallerAutoPilotStatusListenerManager.INSTANCE.getState(); if (state < STATUS_AUTOPILOT_RUNNING) { if (mBrake > 0) { brakeStatus.setImageResource(R.drawable.traffic_data_brake); @@ -152,11 +153,11 @@ public class TrafficDataView extends ConstraintLayout implements */ @Override public void onAutopilotSteeringData(float steering) { - CallerLogger.INSTANCE.d(TAG, "steering原始值====" + steering); + CallerLogger.INSTANCE.d(M_HMI +TAG, "steering原始值====" + steering); if (Math.abs(steering) < 1) { steering = 0; } - CallerLogger.INSTANCE.d(TAG, "steering忽略小数点后====" + (int) steering); + CallerLogger.INSTANCE.d(M_HMI +TAG, "steering忽略小数点后====" + (int) steering); } /** @@ -165,7 +166,7 @@ public class TrafficDataView extends ConstraintLayout implements */ @Override public void onAutopilotGearData(@NotNull Chassis.GearPosition gear) { - CallerLogger.INSTANCE.d(TAG, "司机屏档位" + gear.toString()); + CallerLogger.INSTANCE.d(M_HMI +TAG, "司机屏档位" + gear); ThreadUtils.runOnUiThread(() -> { if (tapPositionView != null) { tapPositionView.updateWithGear(gear); @@ -175,13 +176,13 @@ public class TrafficDataView extends ConstraintLayout implements @Override public void onAutopilotBrake(float brake) { - CallerLogger.INSTANCE.d(TAG, "刹车:" + brake); + CallerLogger.INSTANCE.d(M_HMI +TAG, "刹车:" + brake); mBrake = brake; } @Override public void onAutopilotThrottle(float throttle) { - CallerLogger.INSTANCE.d(TAG, "油门:" + throttle); + CallerLogger.INSTANCE.d(M_HMI +TAG, "油门:" + throttle); mThrottle = throttle; } /** 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-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt index 5ae803654c..0eda4869c8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt @@ -45,7 +45,6 @@ import com.mogo.map.listener.IMogoMapListener import com.mogo.map.listener.MogoMapListenerHandler.Companion.mogoMapListenerHandler import com.mogo.map.uicontroller.EnumMapUI import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD import kotlinx.android.synthetic.main.module_main_activity_main.* /** @@ -261,12 +260,10 @@ open class MainActivity : MvpActivity(), MainView, } @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_NATIVE_LEAK, - linkCode = ChainConstant.CHAIN_LINK_LEAK, - endpoint = PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_RECORD_NATIVE_LEAK, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_NATIVE_LEAK, + linkCode = ChainConstant.CHAIN_SOURCE_LEAK, + nodeAliasCode = ChainConstant.CHAIN_CODE_RECORD_NATIVE_LEAK, + paramIndexes = [0] ) private fun printLeakMsg(leakRecord: String) { d(SceneConstant.M_HMI + TAG, "内存泄漏日志如下:\n$leakRecord") diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java index 5ccbc85fef..e6d841a1a2 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java @@ -1,8 +1,8 @@ package com.mogo.eagle.core.function.main; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_START_UP; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_INIT; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_START_UP; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_SOURCE_INIT; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_INIT_STATUS; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_MAIN; @@ -30,7 +30,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.rousetime.android_startup.model.CostTimesModel; import com.zhjt.service.chain.ChainLog; -import com.zhjt.service.chain.TracingConstants; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -151,12 +150,10 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_INIT, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_START_UP, - paramIndexes = {0}, - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = CHAIN_SOURCE_INIT, + nodeAliasCode = CHAIN_CODE_START_UP, + paramIndexes = {0} ) private void traceStartUp(String content) { CallerLogger.INSTANCE.d(M_HMI + TAG, content); diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java index a0eed13f48..38a4ecf33f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java @@ -16,6 +16,7 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths; import com.mogo.eagle.core.function.api.chat.biz.ChatConsts; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager; +import com.mogo.eagle.core.function.call.startup.CallerStartUpManager; import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; @@ -40,10 +41,13 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { // Crash 日志收集 initCrashConfig(); initLogConfig(); + //启动业务 + CallerStartUpManager.initStageOne(); + initTipToast(); initModules(); + //todo CallerMsgBoxManager.INSTANCE.queryAllMessages(this); - CallerDevaToolsManager.INSTANCE.updateUpgradeProgress(); } /** @@ -55,25 +59,14 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { * 初始化日志 */ protected void initLogConfig() { - // 为了不引入maven的情况下修改日志控制字段值,采用反射 - try { - Class clazz = Class.forName("com.mogo.cloud.location.LocationConfig"); - Field nameField = clazz.getField("isPrintLog"); - nameField.setBoolean(null, false); - } catch (Exception e) { - e.printStackTrace(); - } // 初始化埋点 MogoAnalyticUtils.INSTANCE.init(this, DebugConfig.isDebug()); - SocketBuildConfig.isPrintLog = false; // 初始化DevaTools,开始链路记录 CallerDevaToolsManager.INSTANCE.init(); } private void initModules() { CallerLogger.INSTANCE.d(M_MAIN + TAG, "initModules"); - // OBU 模块 - MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_V2X_OBU_MOGO, "IMoGoObuProvider")); // BIZ MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_FUNC_BIZ, "IMoGoNoticeProvider")); // 后置 车聊聊,IM diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/PassengerLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/PassengerLauncherActivity.java index a8b04df52c..8eb7f3d55d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/PassengerLauncherActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/PassengerLauncherActivity.java @@ -1,8 +1,8 @@ package com.mogo.eagle.core.function.main; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_START_UP; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_INIT; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_START_UP; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_SOURCE_INIT; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_INIT_STATUS; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI; import android.bluetooth.BluetoothAdapter; @@ -33,7 +33,6 @@ import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.rousetime.android_startup.model.CostTimesModel; import com.zhjt.service.chain.ChainLog; -import com.zhjt.service.chain.TracingConstants; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -146,12 +145,10 @@ public class PassengerLauncherActivity extends MainActivity implements IMogoInte } @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_INIT, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_START_UP, - paramIndexes = {0}, - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = CHAIN_SOURCE_INIT, + nodeAliasCode = CHAIN_CODE_START_UP, + paramIndexes = {0} ) private void traceStartUp(String content) { CallerLogger.INSTANCE.d(M_HMI + TAG, content); @@ -179,200 +176,11 @@ public class PassengerLauncherActivity extends MainActivity implements IMogoInte } } - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - return super.onKeyDown(keyCode, event); - } - - private long startPressTime = 0; //开始按减时间 - private boolean isPressEnd = false; //按键是否结束 - private boolean isCombinationKey = false; //是否是组合按键 - - private long pressADownTime = 0; - private long pressAUpTime = 0; - private long pressBDownTime = 0; - private long pressBUpTime = 0; - private long pressCDownTime = 0; - private long pressCUpTime = 0; - private long pressDDownTime = 0; - private long pressDUpTime = 0; - private long pressEDownTime = 0; - private long pressEUpTime = 0; - - - /** - * 魔方按键分发 提测前注释 ToastUtils TODO - * - * @param event - * @return - */ - @Override - public boolean dispatchKeyEvent(KeyEvent event) { -// Log.d(TAG, "dispatchKeyEvent code = " + event.getKeyCode() + "--action = " + event.getAction() + "----" + event); - String bluetoothName = SharedPrefsMgr.getInstance(getContext()).getString("BLUETOOTH"); - if (!isPressEnd) { - Log.e(TAG, "dispatchKeyEvent bluetoothName = " + bluetoothName); - } - if (bluetoothName.equals("MINI_KEYBOARD")) { - if (!isPressEnd) { - isPressEnd = true; - startPressTime = System.currentTimeMillis(); - } - - if (event.getKeyCode() == KeyEvent.KEYCODE_A) { //单击 -1,长按无操作,AB组合-2 - if (event.getAction() == KeyEvent.ACTION_DOWN) { - pressADownTime = System.currentTimeMillis(); - Log.d(TAG, "dispatchKeyEvent A down pressADownTime = " + pressADownTime + "---" + (pressADownTime - startPressTime) + "----isCombinationKey = " + isCombinationKey + "--pressBDownTime = " + pressBDownTime); - if ((pressADownTime - startPressTime) > 350 && (pressADownTime - startPressTime) < 1800 && pressBDownTime > 0) { - ToastUtils.showShort("方块 A 按AB组合 -2 "); - sendAcc(true, -2); - isCombinationKey = true; - } - if (!isCombinationKey) { - if ((pressADownTime - startPressTime) > 1900) { - ToastUtils.showShort("方块 长按A 无 操作 "); - } - } - } else if (event.getAction() == KeyEvent.ACTION_UP) { - pressAUpTime = System.currentTimeMillis(); - isPressEnd = false; - isCombinationKey = false; - Log.e(TAG, "dispatchKeyEvent A up pressAUpTime = " + pressAUpTime + "---" + (pressAUpTime - startPressTime) + "--pressBDownTime = " + pressBDownTime); - if ((pressAUpTime - startPressTime) < 300) { - ToastUtils.showShort("方块 单击A -1 "); - sendAcc(true, -1); - } - pressAUpTime = 0; - } - - return true; - } else if (event.getKeyCode() == KeyEvent.KEYCODE_B) {//单击复原,长按+1,AB组合-2 - if (event.getAction() == KeyEvent.ACTION_DOWN) { - pressBDownTime = System.currentTimeMillis(); - Log.d(TAG, "dispatchKeyEvent B down pressBDownTime = " + pressBDownTime + "--差-" + (pressBDownTime - startPressTime) + "---isCombinationKey = " + isCombinationKey + "--pressADownTime = " + pressADownTime); - if ((pressBDownTime - startPressTime) > 350 && (pressBDownTime - startPressTime) < 1800 && pressADownTime > 0) { - ToastUtils.showShort("方块 B 按AB组合 "); - sendAcc(true, -2); - isCombinationKey = true; - } - if (!isCombinationKey) { - if ((pressBDownTime - startPressTime) > 1900) { - ToastUtils.showShort("方块 长按B =1 "); - sendAcc(true, +1); - } - } - } else if (event.getAction() == KeyEvent.ACTION_UP) { - pressBUpTime = System.currentTimeMillis(); - isPressEnd = false; - isCombinationKey = false; - Log.e(TAG, "dispatchKeyEvent B up pressBUpTime = " + pressBUpTime + "--差-" + (pressBUpTime - startPressTime) + "--pressADownTime = " + pressADownTime); - if ((pressBUpTime - startPressTime) < 300) { - ToastUtils.showShort("方块 单击B 0 "); - sendAcc(false, 0.0); - } - pressBDownTime = 0; - } - - return true; - } else if (event.getKeyCode() == KeyEvent.KEYCODE_C) { //单击左变道,长按无操作 - if (event.getAction() == KeyEvent.ACTION_DOWN) { - pressCDownTime = System.currentTimeMillis(); - if (!isCombinationKey) { - if ((pressCDownTime - startPressTime) > 1900) { - ToastUtils.showShort("方块 长按C 无操作 "); - } - } - } else if (event.getAction() == KeyEvent.ACTION_UP) { - pressCUpTime = System.currentTimeMillis(); - isPressEnd = false; - isCombinationKey = false; - if ((pressCUpTime - startPressTime) < 300) { - ToastUtils.showShort("方块 单击C ← 向左变道 "); - CallerAutoPilotControlManager.INSTANCE.sendOperatorChangeLaneLeft(); - } - } - return true; - } else if (event.getKeyCode() == KeyEvent.KEYCODE_D) { //单击向右变道,双击无操作 - if (event.getAction() == KeyEvent.ACTION_DOWN) { - pressDDownTime = System.currentTimeMillis(); - if (!isCombinationKey) { - if ((pressDDownTime - startPressTime) > 1900) { - ToastUtils.showShort("方块 长按D 无操作 "); - } - } - } else if (event.getAction() == KeyEvent.ACTION_UP) { - pressDUpTime = System.currentTimeMillis(); - isPressEnd = false; - isCombinationKey = false; - if ((pressDUpTime - startPressTime) < 300) { - ToastUtils.showShort("方块 单击D → 向右变道 "); - CallerAutoPilotControlManager.INSTANCE.sendOperatorChangeLaneRight(); - } - } - - return true; - } else if (event.getKeyCode() == KeyEvent.KEYCODE_E) { //单击启动自驾,长按鸣笛 - if (event.getAction() == KeyEvent.ACTION_DOWN) { - pressEDownTime = System.currentTimeMillis(); - if (!isCombinationKey) { - if ((pressEDownTime - startPressTime) > 1900) { - ToastUtils.showShort("方块 长按E 鸣笛 "); - CallerAutoPilotControlManager.INSTANCE.sendOperatorSetHorn(1); - if (timerHorn == null) { - timerHorn = new Timer(); - } - timerHorn.schedule(new TimerTask() { - @Override - public void run() { - CallerAutoPilotControlManager.INSTANCE.sendOperatorSetHorn(2); - timerHorn = null; - } - }, 500); - } - } - } else if (event.getAction() == KeyEvent.ACTION_UP) { - pressEUpTime = System.currentTimeMillis(); - isPressEnd = false; - isCombinationKey = false; - if ((pressEUpTime - startPressTime) < 300) { - ToastUtils.showShort("方块 单击E 开启自动驾驶 "); - CallerAutoPilotControlManager.INSTANCE.startAutoPilot(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getAutopilotControlParameters()); - } - } - - return true; - } - } - - return super.dispatchKeyEvent(event); - } - @Override public void onSkinModeChange(int skinMode) { } - private synchronized void sendAcc(boolean isSend, double acc) { - if (isSend) { - accelerated = acc; - if (timerAcc == null) { - timerAcc = new Timer(); - timerAcc.schedule(new TimerTask() { - @Override - public void run() { - CallerAutoPilotControlManager.INSTANCE.sendOperatorSetAcceleratedSpeed(accelerated); - } - }, 0, 500); - } - } else { - if (timerAcc != null) { - timerAcc.cancel(); - timerAcc = null; - } - CallerAutoPilotControlManager.INSTANCE.sendOperatorSetAcceleratedSpeed(acc); - } - } - /** * 初始化蓝牙广播 */ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 2d9b5fd0d0..7fce010454 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -2127,14 +2127,6 @@ android:checked="false" android:text="ADAS日志" /> - - - - - - Unit)?) { - aiCloudIdentifyDataManager.trigger(romaStatus,requestSuccess) + override fun trigger(romaStatus: Boolean) { + aiCloudIdentifyDataManager.trigger(romaStatus) } override fun onDestroy() { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/AiCloudIdentifyDataManager.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/AiCloudIdentifyDataManager.kt index 821a558cf1..599ee85d02 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/AiCloudIdentifyDataManager.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/AiCloudIdentifyDataManager.kt @@ -1,14 +1,29 @@ package com.mogo.eagle.core.function.business.ai import android.content.Context +import android.os.Handler +import android.os.Message import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.commons.debug.DebugConfig import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_CLICK +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_CLOSE_CLICK +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_CLOUD_ERROR +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_CLOUD_PUSH +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_CHANGE_END +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_END +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_ERROR +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_START +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_REQUEST +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_REQUEST_ERROR +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_REQUEST_OK +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_ROUTE_MODE import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener +import com.mogo.eagle.core.function.api.map.roma.IMoGoRomaListener import com.mogo.eagle.core.function.business.ai.net.AiCloudIdentifyNetWorkModel.Companion.aiCloudIdentifyNetWorkModel import com.mogo.eagle.core.function.business.identify.MapIdentifySubscriber import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager @@ -18,23 +33,26 @@ import com.mogo.eagle.core.function.call.map.CallerMapRomaListener import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.updateLongSightLevel import com.mogo.eagle.core.function.utils.MapBizTrace +import com.mogo.eagle.core.function.utils.MapBizTrace.Companion.getCurrentCNode +import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.map.MogoMapUIController -import com.mogo.map.listener.IMogoMapListener -import com.mogo.map.listener.MogoMapListenerHandler import com.mogo.map.uicontroller.VisualAngleMode import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants import mogo.telematics.pad.MessagePad import mogo.yycp.api.proto.SocketDownData import java.util.concurrent.atomic.AtomicBoolean -class AiCloudIdentifyDataManager : IMogoMapListener, - IMoGoPlanningRottingListener, IMoGoAutopilotStatusListener { +class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener, + IMoGoAutopilotStatusListener, IMoGoRomaListener { companion object { private const val TAG = "AiCloudIdentifyData" + private const val H_ERROR_CLOUD = 1 + private const val H_ERROR_MAP = 2 + private const val H_DELAY_TIME = 3_000L + var START_METRE = 3 var END_METRE = 2000 @@ -46,10 +64,51 @@ class AiCloudIdentifyDataManager : IMogoMapListener, private var showAiCloud = AtomicBoolean(false) + private var aiCloudDataChange = AtomicBoolean(false) + + @Volatile + private var cloudDataSize = 0 + + private val handler = Handler { + if (it.what == H_ERROR_CLOUD) { + if (!aiCloudDataChange.get()) { + MapBizTrace.log( + CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_CLOUD_ERROR, TAG, GsonUtils.toJson( + mutableMapOf( + "msg" to "云端 $H_DELAY_TIME 秒内无感知数据下发", + "socketStatus" to MogoStatusManager.getInstance().isSocketOnLine, + "cityCode" to CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode + ) + ) + ) + } else { + MapBizTrace.log( + CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_CLOUD_PUSH, TAG, GsonUtils.toJson( + mutableMapOf( + "msg" to "延迟 $H_DELAY_TIME 秒内获取云端下发感知数据大小", + "cloudDataSize" to cloudDataSize + ) + ) + ) + } + } + if (it.what == H_ERROR_MAP) { + MapBizTrace.log( + CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_MAP_ERROR, TAG, GsonUtils.toJson( + mutableMapOf("msg" to "地图漫游模式启动失败,原因:${it.obj}") + ) + ) + if (DebugConfig.isDebug()) { + ToastUtils.showShort("进入漫游模式失败") + } + } + true + } + fun initServer(mContext: Context) { - MogoMapListenerHandler.mogoMapListenerHandler.registerHostMapListener(TAG, this) CallerAutoPilotStatusListenerManager.addListener(TAG, this) - CallerPlanningRottingListenerManager.addListener(TAG,this) + CallerPlanningRottingListenerManager.addListener(TAG, this) + CallerMapRomaListener.addListener(TAG, this) MogoAiCloudSocketManager.getInstance(mContext) .registerOnMessageListener( 0x040003, //低频数据 @@ -59,21 +118,25 @@ class AiCloudIdentifyDataManager : IMogoMapListener, } @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED, - linkCode = ChainConstant.CHAIN_LINK_ADAS, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_SOCKET_DATA_TRACKED, + linkCode = ChainConstant.CHAIN_SOURCE_ADAS, + nodeAliasCode = ChainConstant.CHAIN_CODE_ADAS_RECT_DATA, + paramIndexes = [0] ) override fun onMsgReceived(obj: SocketDownData.SocketDownDataProto?) { obj?.let { obj.data?.let { + if (it.allListList != null && it.allListList.size > 0) { + if (!aiCloudDataChange.get()) { + aiCloudDataChange.set(true) + } + } if (showAiCloud.get()) { if (it.allListList == null || it.allListList.size == 0) { MapIdentifySubscriber.instance.clearAiCloudRoma() return } + cloudDataSize = it.allListList.size MapIdentifySubscriber.instance.renderAiCloudResult(it.allListList) } } @@ -82,13 +145,21 @@ class AiCloudIdentifyDataManager : IMogoMapListener, }) } - fun trigger(romaStatus: Boolean,connectError: ((Boolean) -> Unit)?) { - MapBizTrace.log(TAG, "trigger") + fun trigger(romaStatus: Boolean) { // 乘客司机屏屏各自单独控制漫游 if (romaStatus) { // 开启roma,当前非漫游,开启 + MapBizTrace.log( + "", + CHAIN_CODE_ROMA_CLICK, + TAG, + GsonUtils.toJson(mutableMapOf("trigger" to true)) + ) openRoma() } else { + // 跟上次关联,需要确认parent进度 + MapBizTrace.log(getCurrentCNode(), CHAIN_CODE_ROMA_CLOSE_CLICK, TAG, "") + handler.removeMessages(H_ERROR_CLOUD) closeRoma() } } @@ -100,6 +171,7 @@ class AiCloudIdentifyDataManager : IMogoMapListener, } } + @Synchronized private fun closeRoma(manual: Boolean = true) { updateLongSightLevel(false) requestRangeOfIdentify(false) @@ -112,50 +184,123 @@ class AiCloudIdentifyDataManager : IMogoMapListener, } fun requestRangeOfIdentify(dataReceive: Boolean) { - val status = MogoStatusManager.getInstance().isSocketOnLine val gnss = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().gnssInfo - MapBizTrace.log(TAG,"开启请求,data:$dataReceive , socketStatus:$status , lon:${gnss.longitude} , lat:${gnss.latitude} , heading:${gnss.heading}") - aiCloudIdentifyNetWorkModel.requestIdentifyRange(dataReceive, gnss.longitude,gnss.latitude,{ - MapBizTrace.log( - TAG, - "requestIdentifyRange ok startRange:$START_METRE, endRange:$END_METRE , dataReceive:$dataReceive" - ) - if (dataReceive) { - // 请求地图开始漫游 - MogoMapUIController.getInstance().setRomaMode(FunctionBuildConfig.romaModeStyle) - CallerMapRomaListener.invokeMapRoma(true) - } else { + // false,改变父节点信息 + MapBizTrace.log( + if (dataReceive) CHAIN_CODE_ROMA_CLICK else "", CHAIN_CODE_ROMA_REQUEST, TAG, + GsonUtils.toJson( + mutableMapOf( + "dataReceive" to dataReceive, + "lon" to gnss.longitude, + "lat" to gnss.latitude, + "heading" to gnss.heading, + "socketStatus" to MogoStatusManager.getInstance().isSocketOnLine, + "cityCode" to CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode + ) + ), !dataReceive + ) + aiCloudIdentifyNetWorkModel.requestIdentifyRange( + dataReceive, + gnss.longitude, + gnss.latitude, + { + // false,改变父节点信息 + MapBizTrace.log( + if (dataReceive) CHAIN_CODE_ROMA_REQUEST else "", + CHAIN_CODE_ROMA_REQUEST_OK, + TAG, + GsonUtils.toJson( + mutableMapOf( + "dataResult" to dataReceive, + "startRange" to START_METRE, + "endRange" to END_METRE, + ) + ), !dataReceive + ) + if (dataReceive) { + // 请求地图开始漫游 + MogoMapUIController.getInstance().setRomaMode(FunctionBuildConfig.romaModeStyle) + CallerMapRomaListener.invokeMapRoma(true) + } else { + CallerMapRomaListener.invokeMapRoma(false) + } + }, + { errorMsg -> + // false,改变父节点信息 + MapBizTrace.log( + if (dataReceive) CHAIN_CODE_ROMA_REQUEST else "", + CHAIN_CODE_ROMA_REQUEST_ERROR, + TAG, + GsonUtils.toJson( + mutableMapOf( + "errorMsg" to errorMsg, + "dataResult" to dataReceive, + "startRange" to START_METRE, + "endRange" to END_METRE + ) + ), true + ) + updateLongSightLevel(false) CallerMapRomaListener.invokeMapRoma(false) - } - }, { - MapBizTrace.log( - TAG, - "requestIdentifyRange error : $it , startRange:$START_METRE, endRange:$END_METRE, dataReceive:$dataReceive" - ) - updateLongSightLevel(false) - CallerMapRomaListener.invokeMapRoma(false) - if(DebugConfig.isDebug()){ - ToastUtils.showShort("漫游请求异常,msg:$it") - } - }) + if (DebugConfig.isDebug()) { + ToastUtils.showShort("漫游请求异常,msg:$errorMsg") + } + }) } - override fun onMapVisualAngleChanged(visualAngleMode: VisualAngleMode) { - super.onMapVisualAngleChanged(visualAngleMode) - when { - // 解除漫游限制 - visualAngleMode.isRoma -> { - MapBizTrace.log(TAG, "onMapVisualAngleChanged, invoke roma , socketStatus: ${ MogoStatusManager.getInstance().isSocketOnLine}") + //status 0:进入漫游模式成功 1;进入漫游模式失败 2:正常结束漫游 3:切换视角结束漫游 + override fun mapRomaStatus(status: Int, msg: String) { + super.mapRomaStatus(status, msg) + when (status) { + 0 -> { + MapBizTrace.log( + CHAIN_CODE_ROMA_REQUEST_OK, + CHAIN_CODE_ROMA_MAP_START, + TAG, + GsonUtils.toJson(mutableMapOf("romaStart" to "地图开始漫游")) + ) showAiCloud.set(true) FunctionBuildConfig.isDrawIdentifyData = false + // 5秒没有触发 则预警日志写入 + handler.sendEmptyMessageDelayed(H_ERROR_CLOUD, H_DELAY_TIME) } - else -> { - if (showAiCloud.get()) { - MapBizTrace.log(TAG, "onMapVisualAngleChanged, invoke close roma") - showAiCloud.set(false) - closeRoma(false) - FunctionBuildConfig.isDrawIdentifyData = true - } + 1 -> { + val m = Message.obtain() + m.what = H_ERROR_MAP + m.obj = msg + handler.sendMessage(m) + reset() + } + 2 -> { // 地图自动漫游结束,重置状态,调用close通知服务端 + MapBizTrace.log( + CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_MAP_END, TAG, GsonUtils.toJson( + mutableMapOf("romaEnd" to "地图结束回调,状态:$status") + ), true + ) + reset() + } + 3 -> { // 业务释放地图视角锁定,回调切换视角结束漫游 + MapBizTrace.log( + CHAIN_CODE_ROMA_CLOSE_CLICK, + CHAIN_CODE_ROMA_MAP_CHANGE_END, + TAG, + GsonUtils.toJson( + mutableMapOf("romaEnd" to "地图结束回调,状态:$status") + ), + true + ) + reset(false) + } + } + } + + private fun reset(invokeCloud: Boolean = true) { + if (showAiCloud.get()) { + showAiCloud.set(false) + aiCloudDataChange.set(false) + FunctionBuildConfig.isDrawIdentifyData = true + if (invokeCloud) { + closeRoma(false) } } } @@ -184,7 +329,12 @@ class AiCloudIdentifyDataManager : IMogoMapListener, } private fun updateRomaStyle(auto: Boolean, route: String? = null) { - MapBizTrace.log(TAG, "updateRomaStyle auto status:$auto, route:${route?:"reset null"}") + MapBizTrace.log( + "", + CHAIN_CODE_ROMA_ROUTE_MODE, + TAG, + "updateRomaStyle auto status:$auto, route:${route ?: "reset null"}" + ) route?.let { CallerMapUIServiceManager.getMapUIController()?.setRoamTrajectory(route) } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/collect/MoGoMapDataCollectProvider.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/collect/MoGoMapDataCollectProvider.kt index 054faa08f8..272239f445 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/collect/MoGoMapDataCollectProvider.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/collect/MoGoMapDataCollectProvider.kt @@ -10,11 +10,11 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener +import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener import com.mogo.eagle.core.function.api.map.collect.IMoGoMapDataCollectProvider import com.mogo.eagle.core.function.business.cachemap.CacheHDMapManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager -import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP import com.zhidaoauto.map.operational.open.GatherApi @@ -27,7 +27,7 @@ import java.util.concurrent.atomic.AtomicReference @Route(path = MogoServicePaths.PATH_MAP_DATA_COLLECT_PROVIDER) class MoGoMapDataCollectProvider : IMoGoMapDataCollectProvider, OnTaskListener, - IMoGoChassisLocationGCJ02Listener, IMoGoTokenCallback, + IMoGoChassisLocationWGS84Listener, IMoGoTokenCallback, IMoGoAutopilotRecordListener { companion object { @@ -53,7 +53,7 @@ class MoGoMapDataCollectProvider : IMoGoMapDataCollectProvider, OnTaskListener, override fun init(context: Context?) { - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, this) + CallerChassisLocationWGS84ListenerManager.addListener(TAG, this) CallerAutopilotRecordListenerManager.addListener(TAG, this) executor.set(context?.let { @@ -79,7 +79,7 @@ class MoGoMapDataCollectProvider : IMoGoMapDataCollectProvider, OnTaskListener, override fun onDestroy() { CallerLogger.d("$M_MAP$TAG", "--------- onDestroy --------") - CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) + CallerChassisLocationWGS84ListenerManager.removeListener(TAG) CallerAutopilotRecordListenerManager.removeListener(TAG) executor.get()?.setOnTaskListener(null) listeners.clear() @@ -181,15 +181,18 @@ class MoGoMapDataCollectProvider : IMoGoMapDataCollectProvider, OnTaskListener, } } - override fun onChassisLocationGCJ02(gnssInfo: MogoLocation?) { - if (gnssInfo != null) { + override fun onChassisLocationWGS84(gnssInfo: MogoLocation) { + if (gnssInfo != null + && gnssInfo.longitude != 0.0 + && gnssInfo.latitude != 0.0 + ) { executor.get()?.updateLocation( gnssInfo.longitude, gnssInfo.latitude, gnssInfo.altitude, gnssInfo.heading.toFloat(), gnssInfo.gnssSpeed, - false + true ) } } @@ -225,4 +228,5 @@ class MoGoMapDataCollectProvider : IMoGoMapDataCollectProvider, OnTaskListener, object START : Status() //开始状态 object FINISH : Status() //完成状态 } + } \ 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/identify/IdentifyAiCloudDataDrawer.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyAiCloudDataDrawer.kt index b01bf69b6e..41605826cf 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyAiCloudDataDrawer.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyAiCloudDataDrawer.kt @@ -4,7 +4,6 @@ import android.annotation.SuppressLint import androidx.collection.ArraySet import com.mogo.commons.AbsMogoApplication import com.mogo.commons.module.status.MogoStatusManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.w import com.mogo.map.identify.MogoIdentifyManager import mogo.yycp.api.proto.SocketDownData import java.util.concurrent.ConcurrentHashMap @@ -36,12 +35,10 @@ class IdentifyAiCloudDataDrawer : Identify { override fun renderAiCloudResult(resultList: List) { if (resultList.isEmpty()) { clearOldMarker() - w(TAG, "感知数据为空无需渲染……") return } if (!MogoStatusManager.getInstance().isVrMode) { clearOldMarker() - w(TAG, "渲染 adas 识别的数据 当前不是VR模式") return } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyBeautifyDataDrawer.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyBeautifyDataDrawer.kt index 7a334879a9..5389faefdd 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyBeautifyDataDrawer.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyBeautifyDataDrawer.kt @@ -4,7 +4,6 @@ import android.annotation.SuppressLint import com.mogo.commons.AbsMogoApplication import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.data.traffic.TrafficData -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.w import com.mogo.map.identify.MogoIdentifyManager import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad.TrackedObject @@ -35,12 +34,10 @@ class IdentifyBeautifyDataDrawer : Identify { override fun renderAdasRecognizedResult(resultList: List?) { if (resultList == null || resultList.isEmpty()) { TrackManager.getInstance().clearAll() - w(TAG, "感知数据为空无需渲染……") return } if (!MogoStatusManager.getInstance().isVrMode) { TrackManager.getInstance().clearAll() - w(TAG, "渲染 adas 识别的数据 当前不是VR模式") return } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt index 409786fc79..d9afd55947 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt @@ -66,12 +66,10 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf } @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = ChainConstant.CHAIN_LINK_INIT, - endpoint = 4, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA, - paramIndexes = [0], - clientPkFileName = "sn" + linkChainLog = ChainConstant.CHAIN_TYPE_INIT_STATUS, + linkCode = ChainConstant.CHAIN_SOURCE_INIT, + nodeAliasCode = ChainConstant.CHAIN_CODE_ADAS_RECT_DATA, + paramIndexes = [0] ) private fun drawType(type: String) { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt index 32dd560b85..a7e0df0720 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt @@ -5,7 +5,6 @@ import androidx.collection.ArraySet import com.mogo.commons.AbsMogoApplication import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.data.traffic.TrafficData -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.w import com.mogo.map.identify.MogoIdentifyManager import mogo.telematics.pad.MessagePad.PlanningObject import mogo.telematics.pad.MessagePad.TrackedObject @@ -57,12 +56,10 @@ class IdentifyOriginDataDrawer : Identify { override fun renderAdasRecognizedResult(resultList: List?) { if (resultList == null || resultList.isEmpty()) { clearOldMarker() - w(TAG, "感知数据为空无需渲染……") return } if (!MogoStatusManager.getInstance().isVrMode) { clearOldMarker() - w(TAG, "渲染 adas 识别的数据 当前不是VR模式") return } 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 1d275b58ef..fdb750665e 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 @@ -71,12 +71,12 @@ public class MogoRouteOverlayManager implements if (gnssInfo == null) { return; } - if (isArriveAtStation.get() && autopilotMode.get() != 1) { + if (isArriveAtStation.get() && autopilotMode.get() != 2) { RouteOverlayDrawer.getInstance().clearMogoRouteOverlay(); return; } boolean force = FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData; - if (!force && autopilotMode.get() != 1) { + if (!force && autopilotMode.get() != 2) { RouteOverlayDrawer.getInstance().clearMogoRouteOverlay(); return; } @@ -91,12 +91,15 @@ public class MogoRouteOverlayManager implements } @Override - public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autoPilotStatusInfo) { - int mode = autoPilotStatusInfo.getPilotmode(); - if (mode == 1) { + 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,9 @@ public class MogoRouteOverlayManager implements public void onAutopilotRouteLineId(long lineId) { } + + @Override + public void onAutopilotDockerInfo(@NonNull String dockerVersion) { + } + } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt index 00cf6f6f66..f69b8bfeb1 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt @@ -166,10 +166,7 @@ object MarkerDrawerManager { } } } - Log.d( - "MarkerDrawerManager", - "当次计算已走过的点的索引为:$currentIndex,存储的上次索引为:$lastArrivedIndex, ,起点为:(${newPoints[0].longitude},${newPoints[0].latitude}),终点为:(${newPoints.last().longitude},${newPoints.last().latitude})" - ) + Log.d("MarkerDrawerManager", "当次计算已走过的点的索引为:$currentIndex,存储的上次索引为:$lastArrivedIndex, ,起点为:(${newPoints[0].longitude},${newPoints[0].latitude}),终点为:(${newPoints.last().longitude},${newPoints.last().latitude})") if (!isLongDistance) { // 过滤缓存的非当次轨迹的索引,并且出现车已走过索引跳跃过大时视为无效复用上一次计算结果 if (currentIndex < lastArrivedIndex || (lastArrivedIndex >= 0 && currentIndex - lastArrivedIndex >= 10)) { 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 b96081473a..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.pilotmode - if (tempStatus != 1) { + override fun onAutopilotStatusResponse(state: Int) { + if (state != 2) { UiThreadHandler.post { clearPolyline() } } - autoPilotStatus = tempStatus } override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/utils/MapBizTrace.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/utils/MapBizTrace.kt index 5f444de54b..8a9a5f7b15 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/utils/MapBizTrace.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/utils/MapBizTrace.kt @@ -5,24 +5,61 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants +import com.zhjt.service.chain.ChildNodeAlias +import com.zhjt.service.chain.ParentNodeAlias class MapBizTrace { companion object { - @ChainLog( - linkChainLog = ChainConstant.CHAIN_LINK_LOG_HD_MAP, - linkCode = ChainConstant.CHAIN_LINK_MAP, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_HD_MAP_BIZ, - paramIndexes = [0, 1], - clientPkFileName = "sn" - ) - fun log(data: Any, data1: Any) { + private var cNode: String = "" + + fun log(pN: String, cN: String, data: Any, data1: Any, end: Boolean = false) { + if (end) { + logEnd(pN, cN, data, data1) + } else { + realLog(pN, cN, data, data1) + } if (DebugConfig.isDebug()) { CallerLogger.d("$M_MAP${data.toString()}", data1) } } + + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_HD_MAP, + linkCode = ChainConstant.CHAIN_SOURCE_MAP, + paramIndexes = [2, 3], + endPoint = false + ) + private fun realLog( + @ParentNodeAlias pN: String, + @ChildNodeAlias cN: String, + data: Any, + data1: Any + ) { + if (pN.isNotEmpty() && cN != ChainConstant.CHAIN_CODE_ROMA_CLOUD_ERROR) { + cNode = cN + } + } + + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_HD_MAP, + linkCode = ChainConstant.CHAIN_SOURCE_MAP, + paramIndexes = [2, 3] + ) + private fun logEnd( + @ParentNodeAlias pN: String, + @ChildNodeAlias cN: String, + data: Any, + data1: Any + ) { + if (pN.isNotEmpty() && cN != ChainConstant.CHAIN_CODE_ROMA_CLOUD_ERROR) { + cNode = cN + } + } + + fun getCurrentCNode():String{ + return cNode + } } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt index 549c53ecf3..656285f640 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt @@ -88,6 +88,8 @@ class OverMapView @JvmOverloads constructor( private var mContext: Context? = null private var mTilt = 0f private var overLayerView: TextView? = null + @Volatile + private var isMapLoaded = false // 全局路径规划中的GeoHash网格 private val pathMap: MutableMap?> = HashMap() @@ -114,6 +116,7 @@ class OverMapView @JvmOverloads constructor( // 绘制轨迹线的集合 private val textureList: MutableList = ArrayList() private val texIndexList: MutableList = ArrayList() + @Volatile private var mLocation: MogoLocation? = null private var isFirstLocation = true var mCustomMapStyleOptions: CustomMapStyleOptions? = null @@ -415,6 +418,7 @@ class OverMapView @JvmOverloads constructor( } mAMap?.setOnMapLoadedListener { Log.d(TAG, "---onMapLoaded---") + isMapLoaded = true if (mCustomMapStyleOptions != null) { // 加载自定义样式 mCustomMapStyleOptions!!.isEnable = true @@ -834,6 +838,7 @@ class OverMapView @JvmOverloads constructor( } private fun realDisplayOverView() { + Log.d(TAG, "realDisplayOverView被调用") val linePointsLatLng = allPoints if (linePointsLatLng != null && linePointsLatLng.size > 1 && mLocation != null) { //圈定地图显示范围 @@ -857,12 +862,14 @@ class OverMapView @JvmOverloads constructor( ) ) mAMap!!.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)) + Log.d(TAG, "切换视角展示轨迹点和车!") } } else { - if (mCarMarker != null && mAMap != null) { + if (mLocation != null && mAMap != null) { //设置希望展示的地图缩放级别 + Log.d(TAG, "切换视角展示车,定位为:${mLocation!!.longitude},${mLocation!!.latitude}") val cameraPosition = CameraPosition.Builder() - .target(mCarMarker!!.position).tilt(mTilt).zoom(zoomLevel.toFloat()).build() + .target(LatLng(mLocation!!.latitude, mLocation!!.longitude)).tilt(mTilt).zoom(zoomLevel.toFloat()).build() mAMap!!.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)) } } @@ -1060,7 +1067,8 @@ class OverMapView @JvmOverloads constructor( mLocation = it lonLatHeading = Triple(it.longitude, it.latitude, it.heading) drawCarMarker(it) - if (isFirstLocation) { + if (isFirstLocation && isMapLoaded) { + Log.d(TAG, "车辆首次获取定位") displayCustomOverView() isFirstLocation = false } @@ -1084,7 +1092,7 @@ class OverMapView @JvmOverloads constructor( MarkerDrawerManager.stopLoopCalCarLocation() isPointsChanged = true globalPathResp?.let { - ThreadUtils.getIoPool().execute { + ThreadUtils.getSinglePool().execute { handlePlanningData(it.wayPointsList) } } diff --git a/core/function-impl/mogo-core-function-startup/src/main/AndroidManifest.xml b/core/function-impl/mogo-core-function-startup/src/main/AndroidManifest.xml index d4329369d5..007a9d4bc2 100644 --- a/core/function-impl/mogo-core-function-startup/src/main/AndroidManifest.xml +++ b/core/function-impl/mogo-core-function-startup/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt index ea68592ec3..914e9a273f 100644 --- a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt +++ b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt @@ -1,7 +1,6 @@ package com.mogo.eagle.core.function.startup.stageone import android.content.Context -import android.os.Bundle import android.os.Handler import android.os.Looper import android.os.Message @@ -13,6 +12,7 @@ import com.mogo.cloud.passport.MoGoAiCloudClient import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.cloud.passport.location.ICurrentLocation import com.mogo.cloud.passport.location.SimpleLocation +import com.mogo.cloud.socket.SocketBuildConfig import com.mogo.commons.AbsMogoApplication import com.mogo.commons.constants.SharedPrefsConstants import com.mogo.commons.debug.DebugConfig @@ -20,17 +20,17 @@ import com.mogo.commons.module.status.MogoStatusManager import com.mogo.commons.network.NetConfigUtils import com.mogo.commons.utils.MogoAnalyticUtils import com.mogo.eagle.core.data.config.FunctionBuildConfig -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_PASSPORT_ERROR -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_PASSPORT_TOKEN -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_RECONNECT -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_CLOUD -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_INIT +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_PASSPORT_TOKEN +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_RECONNECT +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_HTTP_DNS_ERROR_REASON +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_INIT_STATUS import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener +import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager @@ -40,7 +40,6 @@ import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.util.* import com.rousetime.android_startup.AndroidStartup import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD import kotlin.properties.Delegates class HttpDnsStartUp : AndroidStartup() { @@ -54,8 +53,8 @@ class HttpDnsStartUp : AndroidStartup() { MoGoAiCloudClientConfig.getInstance() } - private val handler = Handler(Looper.getMainLooper()){ - if(it.what == 1){ + private val handler = Handler(Looper.getMainLooper()) { + if (it.what == 1) { val value = it.obj as Pair reConnectSocket(value.first, value.second) } @@ -69,13 +68,13 @@ class HttpDnsStartUp : AndroidStartup() { private var httpDnsSimpleLocation by Delegates.observable(getDefaultSimpleLocation()) { _, oldValue, newValue -> if (gotToken && oldValue.cityCode != newValue.cityCode) { - if(handler.hasMessages(1)){ + if (handler.hasMessages(1)) { handler.removeMessages(1) } val msg = Message.obtain() msg.what = 1 - msg.obj = Pair(oldValue.cityCode,newValue.cityCode) - handler.sendMessageDelayed(msg,1000L * 10) + msg.obj = Pair(oldValue.cityCode, newValue.cityCode) + handler.sendMessageDelayed(msg, 1000L * 10) } } @@ -90,7 +89,7 @@ class HttpDnsStartUp : AndroidStartup() { } override fun create(context: Context): Boolean { - if(!ProcessUtils.isMainProcess()){ + if (!ProcessUtils.isMainProcess()) { return true } this.context = context @@ -106,9 +105,12 @@ class HttpDnsStartUp : AndroidStartup() { private fun preparePassportEnvironment() { // 设置网络环境:HTTP_DNS_ENV_QA、HTTP_DNS_ENV_RELEASE、HTTP_DNS_ENV_DEV when (DebugConfig.getNetMode()) { - DebugConfig.NET_MODE_DEV -> clientConfig.netMode = MoGoAiCloudClientConfig.HTTP_DNS_ENV_DEV - DebugConfig.NET_MODE_QA -> clientConfig.netMode = MoGoAiCloudClientConfig.HTTP_DNS_ENV_QA - DebugConfig.NET_MODE_DEMO -> clientConfig.netMode = MoGoAiCloudClientConfig.HTTP_DNS_ENV_DEMO + DebugConfig.NET_MODE_DEV -> clientConfig.netMode = + MoGoAiCloudClientConfig.HTTP_DNS_ENV_DEV + DebugConfig.NET_MODE_QA -> clientConfig.netMode = + MoGoAiCloudClientConfig.HTTP_DNS_ENV_QA + DebugConfig.NET_MODE_DEMO -> clientConfig.netMode = + MoGoAiCloudClientConfig.HTTP_DNS_ENV_DEMO else -> clientConfig.netMode = MoGoAiCloudClientConfig.HTTP_DNS_ENV_RELEASE } // 设置是否是第三APP登录 @@ -116,6 +118,7 @@ class HttpDnsStartUp : AndroidStartup() { DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE // 设置是否输出日志 clientConfig.isShowDebugLog = true + SocketBuildConfig.isPrintLog = false // 使用中台长链接 clientConfig.isUseOriginSocket = true // 设置是否输出网络日志 @@ -159,8 +162,9 @@ class HttpDnsStartUp : AndroidStartup() { SimpleLocation(envConfig.cityCode, envConfig.lat, envConfig.lon) return httpDnsSimpleLocation } - val mogoLocation: MogoLocation? = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() - if (mogoLocation != null && mogoLocation.latitude != 0.0 && mogoLocation.longitude != 0.0) { + val mogoLocation: MogoLocation = + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() + if (mogoLocation.latitude != 0.0 && mogoLocation.longitude != 0.0) { // 更新 httpDnsSimpleLocation = if ( mogoLocation.cityCode.isNullOrEmpty() && @@ -186,18 +190,25 @@ class HttpDnsStartUp : AndroidStartup() { initAiCloudSDK() } + @ChainLog( + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = CHAIN_SOURCE_CLOUD, + nodeAliasCode = CHAIN_CODE_CLOUD_INIT, + paramIndexes = [-1], + endPoint = false + ) private fun initAiCloudSDK() { // 初始化SDK,可以设置状态回调来监听 MoGoAiCloudClient.getInstance().init(context, clientConfig).addTokenCallbacks( object : IMoGoTokenCallback { @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_CLOUD, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_PASSPORT_TOKEN, + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = CHAIN_SOURCE_CLOUD, + parentNodeAliasCode = CHAIN_CODE_CLOUD_INIT, + nodeAliasCode = CHAIN_CODE_CLOUD_PASSPORT_TOKEN, paramIndexes = [0, 1], - clientPkFileName = "sn" + endPoint = false ) override fun onTokenGot(token: String, sn: String) { clientConfig.token = token @@ -215,19 +226,8 @@ class HttpDnsStartUp : AndroidStartup() { } } - @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_CLOUD, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_PASSPORT_ERROR, - paramIndexes = [1], - clientPkFileName = "sn" - ) override fun onError(code: Int, msg: String) { - CallerLogger.d( - "$M_MAIN$TAG", - "初始化MogoAiCloudSdk failed ,reason : $msg , 未能开启长链服务和初始化Modules服务" - ) + logError(getPrReason("初始化MogoAiCloudSdk failed ,reason:$msg , code:$code")) } } ) @@ -272,78 +272,77 @@ class HttpDnsStartUp : AndroidStartup() { } } - private fun startSocketService(sn:String) { + private fun startSocketService(sn: String) { CallerLogger.d("$M_MAIN$TAG", "startSocketService") val location = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() MogoAiCloudSocketManager.getInstance(context) .registerLifecycleListener(10020, object : IMogoLifecycleListener { - @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_CLOUD, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL, - paramIndexes = [-1], - clientPkFileName = "sn" - ) + override fun onConnectFailure() { - CallerLogger.d("$M_MAIN$TAG", "socket-onConnectFailure") + logError(getPrReason("socket-onConnectFailure , status false")) MogoStatusManager.getInstance().setCloudSocketMode(TAG, false) } - @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_CLOUD, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS, - paramIndexes = [-1], - clientPkFileName = "sn" - ) override fun onConnectSuccess() { CallerLogger.d("$M_MAIN$TAG", "socket-onConnectSuccess") MogoStatusManager.getInstance().setCloudSocketMode(TAG, true) } - @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_CLOUD, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST, - paramIndexes = [-1], - clientPkFileName = "sn" - ) override fun onConnectLost() { - CallerLogger.d("$M_MAIN$TAG", "socket-onConnectLost") + logError(getPrReason("socket-onConnectLost , status false")) MogoStatusManager.getInstance().setCloudSocketMode(TAG, false) } - @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_CLOUD, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST, - paramIndexes = [0, 1], - clientPkFileName = "sn" - ) override fun onError(code: String, msg: String?) { CallerLogger.d("$M_MAIN$TAG", "socket-onError code : $code , msg : $msg") } }) // 开启Socket长链服务 val lat = - location?.latitude ?: CallerMapUIServiceManager.getGDLocationServer(context!!)!!.lastLat - val lon = location?.longitude - ?: CallerMapUIServiceManager.getGDLocationServer(context!!)!!.lastLon + if (location.latitude != 0.0) location.latitude else CallerMapUIServiceManager.getGDLocationServer( + context!! + )!!.lastLat + val lon = + if (location.longitude != 0.0) location.longitude else CallerMapUIServiceManager.getGDLocationServer( + context!! + )!!.lastLon MogoAiCloudSocketManager.getInstance(context) .init(context, sn, DebugConfig.getSocketAppId(), lat, lon) } @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_CLOUD, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_RECONNECT, - paramIndexes = [0, 1], - clientPkFileName = "sn" + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = CHAIN_SOURCE_CLOUD, + nodeAliasCode = CHAIN_CODE_HTTP_DNS_ERROR_REASON, + paramIndexes = [0] + ) + private fun logError(pr: String) { + CallerLogger.e("$M_MAIN$TAG", "pr:$pr") + } + + //todo 归一处理 + private fun getPrReason(msg: String): String { + val map = hashMapOf() + map["wifiState"] = + if (NetworkUtils.isAvailable()) "wifi enable" else "wifi disable" + map["lat"] = + if (CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude != 0.0) + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude else + CallerMapUIServiceManager.getGDLocationServer(context!!)!!.lastLat + map["lon"] = + if (CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude != 0.0) + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude else + CallerMapUIServiceManager.getGDLocationServer(context!!)!!.lastLon + map["reason"] = msg + map["time"] = System.currentTimeMillis() + return GsonUtils.toJson(map) + } + + @ChainLog( + linkChainLog = CHAIN_TYPE_INIT_STATUS, + linkCode = CHAIN_SOURCE_CLOUD, + nodeAliasCode = CHAIN_CODE_CLOUD_RECONNECT, + paramIndexes = [0, 1] ) private fun reConnectSocket(oldCityCode: String, newCityCode: String) { CallerLogger.d( diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/AutopilotStatusInfo.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/AutopilotStatusInfo.kt index 2dd8130231..030332407f 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/AutopilotStatusInfo.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/AutopilotStatusInfo.kt @@ -30,11 +30,13 @@ open class AutopilotStatusInfo : Serializable, Cloneable { /** * 工控机镜像版本 */ + @Volatile var dockVersion: String? = null /** * 定位是否可用 */ + @Volatile var locationStatus = false @Volatile @@ -49,13 +51,9 @@ open class AutopilotStatusInfo : Serializable, Cloneable { /** * 自动驾驶状态 0是不可用 1是ready 2是自动驾驶start 7:平行驾驶中 */ + @Volatile var state = 0 - /** - * 不可用原因 - */ - var reason: String? = null - /** * 底盘的自动驾驶状态 0非自动驾驶,1自动驾驶 */ @@ -63,18 +61,20 @@ open class AutopilotStatusInfo : Serializable, Cloneable { var pilotmode = 0 // 默认未连接 + @Volatile var ipcConnStatus = 0x01 /** * 记录最后一次启动自动驾驶需要的参数,结束自动驾驶后设置为null */ + @Volatile var autopilotControlParameters: AutopilotControlParameters? = null override fun toString(): String { return "connectIP=$connectIP, connectPort=$connectPort, " + "connectStatus=$connectStatus, connectDescribe=$connectStatusDescribe, version=$version, dockVersion=$dockVersion," + " locationStatus=$locationStatus), locationLat=$locationLat, locationLon=$locationLon," + - " satelliteTime=$satelliteTime, state=$state, reason=$reason, " + + " satelliteTime=$satelliteTime, state=$state, " + " pilotmode=$pilotmode, ipcConnStatus=$ipcConnStatus, autopilotControlParameters=$autopilotControlParameters" } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/CloudPoiManager.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/CloudPoiManager.java deleted file mode 100644 index e0e752cc14..0000000000 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/CloudPoiManager.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.mogo.eagle.core.data.config; - - -import android.content.Context; -import android.util.ArrayMap; - -import com.elegant.network.utils.GsonUtil; -import com.mogo.eagle.core.data.R; -import com.mogo.eagle.core.data.enums.EventTypeEnumNew; -import com.mogo.eagle.core.data.map.PoiWrapper; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; - -import java.util.List; -import java.util.Map; - -/** - * 云端配置poi数据管理公共类 - * - * @author tongchenfei - */ -public class CloudPoiManager { - private static final String TAG = "CloudPoiManager"; - - private final Map poiWrapper = new ArrayMap<>(); - private static CloudPoiManager instance = null; - - public static CloudPoiManager getInstance() { - if (instance == null) { - synchronized (CloudPoiManager.class) { - if (instance == null) { - instance = new CloudPoiManager(); - } - } - } - return instance; - } - - public void generateDefault() { - if (poiWrapper.isEmpty()) { - poiWrapper.put(EventTypeEnumNew.TRAFFIC_CHECK.getPoiType(), new PoiWrapper(EventTypeEnumNew.TRAFFIC_CHECK.getPoiType(), - R.drawable.module_common_icon_map_marker_road_check2, R.drawable.module_common_icon_map_marker_road_check2_white, "交通检查")); - poiWrapper.put(EventTypeEnumNew.ROAD_CLOSED.getPoiType(), new PoiWrapper(EventTypeEnumNew.ROAD_CLOSED.getPoiType(), - R.drawable.module_common_icon_map_marker_road_block_off2, R.drawable.module_common_icon_map_marker_road_block_off2_white, "封路")); - poiWrapper.put(EventTypeEnumNew.FOURS_ROAD_WORK.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_ROAD_WORK.getPoiType(), - R.drawable.module_common_icon_map_marker_road_work2, R.drawable.module_common_icon_map_marker_road_work2_white, "施工")); - poiWrapper.put(EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG.getPoiType(), new PoiWrapper(EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG.getPoiType(), - R.drawable.module_common_icon_map_marker_road_work2, R.drawable.module_common_icon_map_marker_road_work2_white, "施工")); - poiWrapper.put(EventTypeEnumNew.FOURS_BLOCK_UP.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_BLOCK_UP.getPoiType(), - R.drawable.module_common_icon_map_marker_road_block_up2, R.drawable.module_common_icon_map_marker_road_block_up2_white, "拥堵")); - poiWrapper.put(EventTypeEnumNew.FOURS_PONDING.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_PONDING.getPoiType(), - R.drawable.module_common_icon_map_marker_pondingl2, R.drawable.module_common_icon_map_marker_pondingl2_white, "积水")); - poiWrapper.put(EventTypeEnumNew.FOURS_ICE.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_ICE.getPoiType(), - R.drawable.module_common_ic_rc_freeze2, R.drawable.module_common_ic_rc_freeze2_white, "结冰")); - poiWrapper.put(EventTypeEnumNew.FOURS_ACCIDENT.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_ACCIDENT.getPoiType(), - R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "事故")); - poiWrapper.put(EventTypeEnumNew.FOURS_ACCIDENT_01.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_ACCIDENT_01.getPoiType(), - R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "重大事故")); - poiWrapper.put(EventTypeEnumNew.FOURS_ACCIDENT_02.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_ACCIDENT_02.getPoiType(), - R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "特大事故")); - poiWrapper.put(EventTypeEnumNew.FOURS_ACCIDENT_03.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_ACCIDENT_03.getPoiType(), - R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "较大事故")); - poiWrapper.put(EventTypeEnumNew.FOURS_ACCIDENT_04.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_ACCIDENT_04.getPoiType(), - R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "一般事故")); - poiWrapper.put(EventTypeEnumNew.FOURS_ACCIDENT_05.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_ACCIDENT_05.getPoiType(), - R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "轻微事故")); - poiWrapper.put(EventTypeEnumNew.FOURS_LIVING.getPoiType(), new PoiWrapper(EventTypeEnumNew.FOURS_LIVING.getPoiType(), - R.drawable.module_common_icon_map_marker_living, R.drawable.module_common_icon_map_marker_living_white, "实时路况")); - poiWrapper.put(EventTypeEnumNew.ILLEGAL_PARK_LIVING.getPoiType(), new PoiWrapper(EventTypeEnumNew.ILLEGAL_PARK_LIVING.getPoiType(), - R.drawable.module_common_ic_rc_illegal_park, R.drawable.module_common_ic_rc_illegal_park_white, "违章停车")); - // 分享里用到的故障求助 - poiWrapper.put("9999", new PoiWrapper("9999", - R.drawable.module_common_icon_seek_help, R.drawable.module_common_icon_seek_help, "故障求助")); - } - } - - public void updateFromConfig(Context context) { - generateDefault(); - // 从sp中获取config属性,将服务端配置内容合并到本地 - String config = SharedPrefsMgr.getInstance(context).getString("SHARE_BUTTON_CONFIG", ""); - if (!config.isEmpty()) { - List configWrappers = GsonUtil.arrayFromJson(config, PoiWrapper.class); - CallerLogger.INSTANCE.d(TAG, "config: " + configWrappers); - if (configWrappers != null) { - for (PoiWrapper wrapper : configWrappers) { - wrapper.setIconInfoRes(R.drawable.module_common_icon_map_marker_road_block_up2_white); - wrapper.setIconRes(R.drawable.module_common_icon_map_marker_road_block_up2); - if (poiWrapper.containsKey(wrapper.getPoiType())) { - PoiWrapper defWrapper = poiWrapper.get(wrapper.getPoiType()); - if (defWrapper != null) { - wrapper.setIconRes(defWrapper.getIconRes()); - wrapper.setIconInfoRes(defWrapper.getIconInfoRes()); - } - } - CallerLogger.INSTANCE.d(TAG, "put===" + wrapper); - poiWrapper.put(wrapper.getPoiType(), wrapper); - } - } else { - CallerLogger.INSTANCE.e(TAG, "解析configWrapper异常: " + config); - } - } - } - - public PoiWrapper getWrapperByPoiType(String poiType) { - return poiWrapper.get(poiType); - } - -} diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MogoServicePaths.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MogoServicePaths.java index 1b44fc5eac..0347bdc138 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MogoServicePaths.java +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MogoServicePaths.java @@ -45,7 +45,6 @@ public class MogoServicePaths { * obu-mogo 模块 */ @Keep - @Deprecated public static final String PATH_V2X_OBU_MOGO = "/obu_mogo/api"; /** 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 690def9139..53af54db0f 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 @@ -5,95 +5,120 @@ class ChainConstant { companion object{ // 与云平台数据链路交互 - const val CHAIN_LINK_CLOUD = 0 + const val CHAIN_SOURCE_CLOUD = 0 // 与工控机相关交互 - const val CHAIN_LINK_ADAS = 1 + const val CHAIN_SOURCE_ADAS = 1 // 鹰眼初始化流程顺序相关 - const val CHAIN_LINK_INIT = 2 + const val CHAIN_SOURCE_INIT = 2 // Map交互 - const val CHAIN_LINK_MAP = 3 + const val CHAIN_SOURCE_MAP = 3 + // 人机交互 + const val CHAIN_SOURCE_HMI = 4 // Native内存泄漏 - const val CHAIN_LINK_LEAK = 10 + const val CHAIN_SOURCE_LEAK = 10 // ANR - const val CHAIN_LINK_ANR = 11 + const val CHAIN_SOURCE_ANR = 11 // 弱网监测 - const val CHAIN_LINK_WEAK_NETWORK = 12 + const val CHAIN_SOURCE_WEAK_NETWORK = 12 - const val CHAIN_LINK_LOG_CONNECT_STATUS = 0 - const val CHAIN_LINK_LOG_WEB_SOCKET_GNSSINFO = 1 - const val CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT = 2 - const val CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED = 3 - const val CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY = 4 - const val CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE = 5 - const val CHAIN_LINK_LOG_WEB_SOCKET_TRAFFIC_LIGHT = 6 - const val CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS = 7 - const val CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_ACTIONS = 8 - const val CHAIN_LINK_LOG_NATIVE_LEAK = 100 - const val CHAIN_LINK_LOG_CLOUD_V2N = 200 - const val CHAIN_LINK_LOG_HD_MAP = 300 - const val CHAIN_LINK_LOG_ANR = 400 - const val CHAIN_LINK_LOG_WEAK_NETWORK = 500 + const val CHAIN_TYPE_INIT_STATUS = 0 + const val CHAIN_TYPE_GNSS = 1 + const val CHAIN_TYPE_SOCKET_AUTOPILOT = 2 + const val CHAIN_TYPE_SOCKET_DATA_TRACKED = 3 + const val CHAIN_TYPE_SOCKET_TRAJECTORY = 4 + const val CHAIN_TYPE_SOCKET_VEHICLE = 5 + const val CHAIN_TYPE_SOCKET_TRAFFIC_LIGHT = 6 + const val CHAIN_TYPE_SOCKET_P_OBJECTS = 7 + const val CHAIN_TYPE_SOCKET_P_ACTIONS = 8 + const val CHAIN_TYPE_HMI = 9 + const val CHAIN_TYPE_NATIVE_LEAK = 100 + const val CHAIN_TYPE_V2X = 200 + const val CHAIN_TYPE_HD_MAP = 300 + const val CHAIN_TYPE_ANR = 400 + const val CHAIN_TYPE_WEAK_NETWORK = 500 - const val CHAIN_LINK_LOG_ADAS_INIT = "-eagleInitStatus" - const val CHAIN_LINK_LOG_ADAS_GNSS = "-adasWsGnssInfo" - const val CHAIN_LINK_LOG_ADAS_AUTO = "-adasWsAutoPilot" - const val CHAIN_LINK_LOG_ADAS_DATA_TRACK = "-adasWsDataTrack" - const val CHAIN_LINK_LOG_ADAS_TRAJECTORY = "-adasWsTrajectory" - const val CHAIN_LINK_LOG_ADAS_VEHICLE = "-adasWsVehicle" - const val CHAIN_LINK_LOG_ADAS_TRAFFIC_LIGHT = "-adasWsTrafficLight" - const val CHAIN_LINK_LOG_ADAS_PLANNING_OBJECTS = "-adasWsPlanningObj" - const val CHAIN_LINK_LOG_ADAS_PLANNING_ACTIONS = "-adasWsPlanningActions" + const val CHAIN_LINK_LOG_INIT = "-eagleInitStatus" + const val CHAIN_LINK_LOG_ADAS_GNSS = "-adasGnssInfo" + const val CHAIN_LINK_LOG_ADAS_AUTO = "-adasAutoPilot" + const val CHAIN_LINK_LOG_ADAS_DATA_TRACK = "-adasDataTrack" + const val CHAIN_LINK_LOG_ADAS_TRAJECTORY = "-adasTrajectory" + const val CHAIN_LINK_LOG_ADAS_VEHICLE = "-adasVehicle" + const val CHAIN_LINK_LOG_ADAS_TRAFFIC_LIGHT = "-UnionTrafficLight" + const val CHAIN_LINK_LOG_ADAS_PLANNING_OBJECTS = "-adasPlanningObj" + const val CHAIN_LINK_LOG_ADAS_PLANNING_ACTIONS = "-adasPlanningActions" + const val CHAIN_LINK_LOG_HMI_ACTIONS = "-eagleHMIActions" 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" - const val CHAIN_ALIAS_CODE_MULTI_CONNECT = "CHAIN_ALIAS_CODE_MULTI_CONNECT" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_CONFIG = "CHAIN_ALIAS_CODE_CAR_CONFIG" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA = "PAD_ADAS_MESSAGE_AUTOPILOT_RECT_DATA" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_STATE = "PAD_ADAS_MESSAGE_AUTOPILOT_CAR_STATE" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_STATUS = "PAD_ADAS_MESSAGE_AUTOPILOT_STATUS" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ARRIVE = "PAD_ADAS_MESSAGE_AUTOPILOT_ARRIVE" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ROUTE = "PAD_ADAS_MESSAGE_AUTOPILOT_ROUTE" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAJECTORY = "PAD_ADAS_MESSAGE_AUTOPILOT_TRAJECTORY" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_GUARDIAN = "PAD_ADAS_MESSAGE_AUTOPILOT_GUARDIAN" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_RECORD = "PAD_ADAS_MESSAGE_AUTOPILOT_RECORD" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE = "PAD_ADAS_MESSAGE_AUTOPILOT_VEHICLE" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAFFIC_LIGHT = "PAD_ADAS_MESSAGE_AUTOPILOT_TRAFFIC_LIGHT" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_OBJECTS = "CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_OBJECTS" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_ACTIONS = "CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_ACTIONS" - const val CHAIN_ALIAS_CODE_ADAS_STATUS_QUERY_RESP = "CHAIN_ALIAS_CODE_ADAS_STATUS_QUERY_RESP" - const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_BIZ = "CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_BIZ" + const val CHAIN_CODE_MULTI_CONNECT = "CHAIN_CODE_MULTI_CONNECT" + const val CHAIN_CODE_ADAS_CAR_CONFIG = "CHAIN_CODE_ADAS_CAR_CONFIG" + const val CHAIN_CODE_ADAS_RECT_DATA = "CHAIN_CODE_ADAS_RECT_DATA" + const val CHAIN_CODE_ADAS_CAR_STATE = "CHAIN_CODE_ADAS_CAR_STATE" + const val CHAIN_CODE_ADAS_AUTOPILOT_STATUS = "CHAIN_CODE_ADAS_AUTOPILOT_STATUS" + const val CHAIN_CODE_ADAS_AUTOPILOT_ARRIVE = "CHAIN_CODE_ADAS_AUTOPILOT_ARRIVE" + const val CHAIN_CODE_ADAS_AUTOPILOT_ROUTE = "CHAIN_CODE_ADAS_AUTOPILOT_ROUTE" + const val CHAIN_CODE_ADAS_AUTOPILOT_ROUTE_REQ = "CHAIN_CODE_ADAS_AUTOPILOT_ROUTE_REQ" + const val CHAIN_CODE_ADAS_AUTOPILOT_TRAJECTORY = "CHAIN_CODE_ADAS_AUTOPILOT_TRAJECTORY" + const val CHAIN_CODE_ADAS_AUTOPILOT_GUARDIAN = "CHAIN_CODE_ADAS_AUTOPILOT_GUARDIAN" + const val CHAIN_CODE_ADAS_AUTOPILOT_RECORD = "CHAIN_CODE_ADAS_AUTOPILOT_RECORD" + const val CHAIN_CODE_ADAS_AUTOPILOT_VEHICLE = "CHAIN_CODE_ADAS_AUTOPILOT_VEHICLE" + const val CHAIN_CODE_ADAS_AUTOPILOT_TRAFFIC_LIGHT = "CHAIN_CODE_ADAS_AUTOPILOT_TRAFFIC_LIGHT" + const val CHAIN_CODE_ADAS_AUTOPILOT_TRAFFIC_LIGHT_HIDE = "CHAIN_CODE_ADAS_AUTOPILOT_TRAFFIC_LIGHT_HIDE" + const val CHAIN_CODE_ADAS_P_OBJECTS = "CHAIN_CODE_ADAS_P_OBJECTS" + const val CHAIN_CODE_ADAS_P_ACTIONS = "CHAIN_CODE_ADAS_P_ACTIONS" + const val CHAIN_CODE_ADAS_STATUS_QUERY_RESP = "CHAIN_CODE_ADAS_STATUS_QUERY_RESP" - const val CHAIN_ALIAS_CODE_RECORD_NATIVE_LEAK = "CHAIN_ALIAS_CODE_RECORD_NATIVE_LEAK" - const val CHAIN_ALIAS_CODE_RECORD_ANR = "CHAIN_ALIAS_CODE_RECORD_ANR" - const val CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK = "CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK" + const val CHAIN_CODE_RECORD_NATIVE_LEAK = "CHAIN_CODE_RECORD_NATIVE_LEAK" + const val CHAIN_CODE_RECORD_ANR = "CHAIN_CODE_RECORD_ANR" + const val CHAIN_CODE_RECORD_WEAK_NETWORK = "CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK" - const val CHAIN_ALIAS_CODE_HD_MAP_CALL = "CHAIN_ALIAS_CODE_HD_MAP_CALL" - const val CHAIN_ALIAS_CODE_HD_MAP_BIZ = "CHAIN_ALIAS_CODE_HD_MAP_BIZ" + const val CHAIN_CODE_INIT_ENV_RESTART = "CHAIN_CODE_INIT_ENV_RESTART" + const val CHAIN_CODE_APP_INFO_CONFIG_UPDATE = "CHAIN_CODE_APP_INFO_CONFIG_UPDATE" + const val CHAIN_CODE_FUNC_CONFIG_CHANGED = "CHAIN_CODE_FUNC_CONFIG_CHANGED" + const val CHAIN_CODE_UPGRADE_APP = "CHAIN_CODE_UPGRADE_APP" - const val CHAIN_ALIAS_CODE_INIT_ENV_RESTART = "CHAIN_ALIAS_CODE_INIT_ENV_RESTART" - const val CHAIN_ALIAS_CODE_APP_INFO_CONFIG_UPDATE = "CHAIN_ALIAS_CODE_APP_INFO_CONFIG_UPDATE" - const val CHAIN_ALIAS_CODE_FUNC_CONFIG_CHANGED = "CHAIN_ALIAS_CODE_FUNC_CONFIG_CHANGED" + const val CHAIN_CODE_CLOUD_INIT = "CHAIN_CODE_CLOUD_INIT" + const val CHAIN_CODE_CLOUD_PASSPORT_TOKEN = "CHAIN_CODE_CLOUD_PASSPORT_TOKEN" + const val CHAIN_CODE_CLOUD_SOCKET_INIT = "CHAIN_CODE_CLOUD_SOCKET_INIT" + const val CHAIN_CODE_CLOUD_CONNECT_FAIL = "CHAIN_CODE_CLOUD_CONNECT_FAIL" + const val CHAIN_CODE_CLOUD_CONNECT_SUCCESS = "CHAIN_CODE_CLOUD_CONNECT_SUCCESS" + const val CHAIN_CODE_CLOUD_CONNECT_LOST = "CHAIN_CODE_CLOUD_CONNECT_LOST" + const val CHAIN_CODE_CLOUD_CONNECT_ERROR = "CHAIN_CODE_CLOUD_CONNECT_ERROR" + const val CHAIN_CODE_CLOUD_RECONNECT = "CHAIN_CODE_CLOUD_RECONNECT" + 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_ALIAS_CODE_CLOUD_PASSPORT_TOKEN = "CHAIN_ALIAS_CODE_CLOUD_PASSPORT_TOKEN" - const val CHAIN_ALIAS_CODE_CLOUD_PASSPORT_ERROR = "CHAIN_ALIAS_CODE_CLOUD_PASSPORT_ERROR" - const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL" - const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS" - const val CHAIN_ALIAS_CODE_HTTP_DNS_CITY_CODE = "CHAIN_ALIAS_CODE_HTTP_DNS_CITY_CODE" - const val CHAIN_ALIAS_CODE_CLOUD_RECONNECT = "CHAIN_ALIAS_CODE_CLOUD_RECONNECT" - const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST" - const val CHAIN_ALIAS_CODE_CLOUD_V2N = "CHAIN_ALIAS_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_ALIAS_CODE_INIT_ON_MAP_LOADED = "CHAIN_ALIAS_CODE_INIT_ON_MAP_LOADED" - const val CHAIN_ALIAS_CODE_INIT_ON_MAP_INIT = "CHAIN_ALIAS_CODE_INIT_ON_MAP_INIT" - const val CHAIN_ALIAS_CODE_START_UP = "CHAIN_ALIAS_CODE_START_UP" + 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" + const val CHAIN_CODE_START_UP = "CHAIN_CODE_START_UP" //operation by user - const val CHAIN_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT = "CHAIN_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT" - const val CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT = "CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT" - const val CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT_RESULT = "CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT_RESULT" + const val CHAIN_CODE_OCH_TAXI_START_AUTOPILOT = "CHAIN_CODE_OCH_TAXI_START_AUTOPILOT" + const val CHAIN_CODE_EAGLE_START_AUTOPILOT = "CHAIN_CODE_EAGLE_START_AUTOPILOT" + const val CHAIN_CODE_EAGLE_START_AUTOPILOT_RESULT = "CHAIN_CODE_EAGLE_START_AUTOPILOT_RESULT" + + const val CHAIN_CODE_HD_MAP_CALL = "CHAIN_CODE_HD_MAP_CALL" + const val CHAIN_CODE_HMI_ACTIONS = "CHAIN_CODE_HMI_ACTIONS" + + const val CHAIN_CODE_ROMA_CLICK = "CHAIN_CODE_ROMA_CLICK" + const val CHAIN_CODE_ROMA_CLOSE_CLICK = "CHAIN_CODE_ROMA_CLOSE_CLICK" + const val CHAIN_CODE_ROMA_REQUEST = "CHAIN_CODE_ROMA_REQUEST" + const val CHAIN_CODE_ROMA_REQUEST_OK = "CHAIN_CODE_ROMA_REQUEST_OK" + const val CHAIN_CODE_ROMA_REQUEST_ERROR = "CHAIN_CODE_ROMA_REQUEST_ERROR" + const val CHAIN_CODE_ROMA_MODE_INVOKE = "CHAIN_CODE_ROMA_MODE_INVOKE" + const val CHAIN_CODE_ROMA_MAP_START = "CHAIN_CODE_ROMA_MAP_START" + const val CHAIN_CODE_ROMA_MAP_END = "CHAIN_CODE_ROMA_MAP_END" + const val CHAIN_CODE_ROMA_MAP_CHANGE_END = "CHAIN_CODE_ROMA_MAP_CHANGE_END" + const val CHAIN_CODE_ROMA_ROUTE_MODE = "CHAIN_CODE_ROMA_ROUTE_MODE" + const val CHAIN_CODE_ROMA_CLOUD_ERROR = "CHAIN_CODE_ROMA_CLOUD_ERROR" + const val CHAIN_CODE_ROMA_CLOUD_PUSH = "CHAIN_CODE_ROMA_CLOUD_PUSH" + const val CHAIN_CODE_ROMA_MAP_ERROR = "CHAIN_CODE_ROMA_MAP_ERROR" } } \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt index 6ad2e63d6a..c8813b87df 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt @@ -1,7 +1,6 @@ package com.mogo.eagle.core.data.enums import com.mogo.eagle.core.data.R -import com.mogo.eagle.core.data.config.CloudPoiManager /** @@ -521,11 +520,6 @@ enum class EventTypeEnumNew( companion object { @JvmStatic fun getPoiTypeStr(poiType: String): String { - // 先获取网络配置的poi对应的名称 - CloudPoiManager.getInstance().getWrapperByPoiType(poiType)?.let { - return it.title - } - // 如果获取不到,那么就用本地默认的 return when (poiType) { TRAFFIC_CHECK.poiType -> TRAFFIC_CHECK.poiTypeStr ROAD_CLOSED.poiType -> ROAD_CLOSED.poiTypeStr 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 d13d406c6e..abf75fd255 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,12 +13,27 @@ import system_master.* interface IMoGoAutopilotStatusListener { /** - * 自动驾驶状态信息 TODO 接口优化,拆分业务属性字段 + * 自动驾驶状态信息 * * @param autoPilotStatusInfo 状态信息 */ + @Deprecated("3.3.0之后不建议使用此种回调方式,按需回调,主界面暂时使用用于check检查信息透出") fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {} + /** + * 自动驾驶状态信息 + * + * @param state 状态信息 + */ + fun onAutopilotStatusResponse(state: Int) {} + + /** + * 自动驾驶docker信息 + * + * @param dockerVersion docker版本 + */ + fun onAutopilotDockerInfo(dockerVersion:String){} + /** * 自动驾驶到站 * diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisAccStateListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisAccStateListener.kt index 452ce2de4c..c26af4825e 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisAccStateListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisAccStateListener.kt @@ -8,6 +8,6 @@ interface IMoGoChassisAccStateListener { /** * 车辆加速度 */ - fun onAutopilotAcc(carAcc: Float) + fun onAutopilotAcc(carAcc: Float){} } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisBrakeStateListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisBrakeStateListener.kt index 45e6e2702d..89e837926f 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisBrakeStateListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisBrakeStateListener.kt @@ -8,5 +8,5 @@ interface IMoGoChassisBrakeStateListener { /** * 刹车 */ - fun onAutopilotBrake(brake: Float) + fun onAutopilotBrake(brake: Float){} } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisThrottleStateListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisThrottleStateListener.kt index 639f778597..71018db6d0 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisThrottleStateListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisThrottleStateListener.kt @@ -8,5 +8,5 @@ interface IMoGoChassisThrottleStateListener { /** * 油门 */ - fun onAutopilotThrottle(throttle: Float) + fun onAutopilotThrottle(throttle: Float){} } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoSweeperFutianCleanSystemListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoSweeperFutianCleanSystemListener.kt index b4a3bf9093..b83a2d530a 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoSweeperFutianCleanSystemListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoSweeperFutianCleanSystemListener.kt @@ -10,11 +10,10 @@ interface IMoGoSweeperFutianCleanSystemListener { /** * 清扫车(福田)清扫控制系统状态 */ - fun onSweeperFutianCleanSystemState(cleanSystemState: ChassisStatesOuterClass.SweeperFuTianTaskSystemStates) - + fun onSweeperFutianCleanSystemState(cleanSystemState: ChassisStatesOuterClass.SweeperFuTianTaskSystemStates){} /** * 清扫车(福田)指标数据 贴边数据 */ - fun onSweeperFutianTaskIndexData(roboSweeperTaskIndex: RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex) + fun onSweeperFutianTaskIndexData(roboSweeperTaskIndex: RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex){} } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/roma/IMoGoRomaListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/roma/IMoGoRomaListener.kt index f60c82e4bb..2754e7021c 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/roma/IMoGoRomaListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/roma/IMoGoRomaListener.kt @@ -2,8 +2,13 @@ package com.mogo.eagle.core.function.api.map.roma interface IMoGoRomaListener { + /** + * 漫游地图状态回调 + */ + fun mapRomaStatus(status:Int, msg:String){} + /** * 漫游状态回调 */ - fun romaStatus(status:Boolean) + fun romaStatus(status:Boolean){} } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/roma/IMogoRoma.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/roma/IMogoRoma.kt index 7727cec2d5..5d402c9656 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/roma/IMogoRoma.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/roma/IMogoRoma.kt @@ -8,6 +8,6 @@ interface IMogoRoma : IProvider { * 触发开启/关闭漫游 * @param romaStatus 漫游状态 */ - fun trigger(romaStatus:Boolean,requestSuccess:((Boolean) -> Unit)? = null) + fun trigger(romaStatus:Boolean) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index 8bff7513cf..682c2f1d44 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -3,14 +3,14 @@ package com.mogo.eagle.core.function.call.autopilot import android.os.SystemClock import chassis.SpecialVehicleTaskCmdOuterClass import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters -import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult +import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.constants.MogoServicePaths -import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_ADAS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_EAGLE_START_AUTOPILOT +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_SOURCE_ADAS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SOCKET_AUTOPILOT +import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotControlProvider import com.mogo.eagle.core.function.call.base.CallerBase import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -22,7 +22,6 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfi import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskResp import com.zhjt.mogo.adas.data.AdasConstants import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants import com.zhjt.service_biz.BizConfig import kotlin.random.Random @@ -63,12 +62,11 @@ object CallerAutoPilotControlManager { * @param controlParameters 开启自动驾驶的控制参数 */ @ChainLog( - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, - linkCode = CHAIN_LINK_ADAS, - endpoint = TracingConstants.Endpoint.PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT, + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_EAGLE_START_AUTOPILOT, paramIndexes = [0], - clientPkFileName = "sn" + endPoint = false ) fun startAutoPilot(controlParameters: AutopilotControlParameters?) { if (controlParameters == null) { 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 e86ce263b1..eab537cb60 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 @@ -7,10 +7,8 @@ import com.mogo.eagle.core.function.call.base.CallerBase import com.mogo.eagle.core.utilcode.util.GsonUtils import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg -import system_master.* -import java.util.concurrent.ConcurrentHashMap -import kotlin.properties.Delegates import system_master.SystemStatusInfo +import kotlin.properties.Delegates /** * 域控制器相关的回调监听 @@ -24,7 +22,7 @@ object CallerAutoPilotStatusListenerManager : CallerBase - if(newValue == null){ + if (newValue == null) { return@observable } M_LISTENERS.forEach { @@ -33,12 +31,38 @@ object CallerAutoPilotStatusListenerManager : CallerBase + if (oldValue != newValue) { + M_LISTENERS.forEach { + val listener = it.value + listener.onAutopilotStatusResponse(newValue) + } + } + } + + private var dockerV: String by Delegates.observable("") { _, oldValue, newValue -> + if (!oldValue.contentEquals(newValue)) { + M_LISTENERS.forEach { + val listener = it.value + listener.onAutopilotDockerInfo(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状态 */ @@ -46,6 +70,29 @@ object CallerAutoPilotStatusListenerManager : CallerBase() { + private var steering: Float? by Delegates.observable(0.0f) { _, oldValue, newValue -> + if (newValue == null) { + return@observable + } + if (oldValue == newValue) { + return@observable + } + M_LISTENERS.forEach { + val listener = it.value + listener.onAutopilotSteeringData(newValue) + } + } + /** * 车辆方向盘转向角回调 * @param steering 方向盘转向角 */ - fun invokeAutopilotSteeringData(steering: Float){ - M_LISTENERS.forEach{ - val listener = it.value - listener.onAutopilotSteeringData(steering) - } + fun invokeAutopilotSteeringData(steering: Float) { + this.steering = steering } } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerPlanningRottingListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerPlanningRottingListenerManager.kt index ddf3d98072..94a7432b64 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerPlanningRottingListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerPlanningRottingListenerManager.kt @@ -19,6 +19,13 @@ object CallerPlanningRottingListenerManager : CallerBase Unit)? = null){ - romaApi.trigger(romaStatus, requestSuccess) + fun romaTrigger(romaStatus:Boolean){ + romaApi.trigger(romaStatus) } } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapRomaListener.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapRomaListener.kt index 95f186fe9c..e63ce453ad 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapRomaListener.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapRomaListener.kt @@ -6,11 +6,22 @@ import com.mogo.eagle.core.function.call.base.CallerBase object CallerMapRomaListener : CallerBase() { private var roma = false + private var romaStatus = -1 + private var romaMsg: String = "" override fun doSomeAfterAddListener(tag: String, listener: IMoGoRomaListener) { listener.romaStatus(roma) } + fun invokeMapRomaStatus(status: Int, msg: String) { + romaStatus = status + romaMsg = msg + M_LISTENERS.forEach { + val listener = it.value + listener.mapRomaStatus(romaStatus, romaMsg) + } + } + fun invokeMapRoma(romaStatus: Boolean) { roma = romaStatus M_LISTENERS.forEach { diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/msgbox/CallerMsgBoxManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/msgbox/CallerMsgBoxManager.kt index 300559cc0a..ab3cbd16cb 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/msgbox/CallerMsgBoxManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/msgbox/CallerMsgBoxManager.kt @@ -1,11 +1,12 @@ package com.mogo.eagle.core.function.call.msgbox import android.content.Context -import android.util.Log import com.mogo.eagle.core.data.constants.MogoServicePaths +import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxProvider import com.mogo.eagle.core.function.call.base.CallerBase +import com.zhjt.service.chain.ChainLog object CallerMsgBoxManager { @@ -24,6 +25,12 @@ object CallerMsgBoxManager { /** * 存储数据到消息盒子 */ + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_V2X, + linkCode = ChainConstant.CHAIN_SOURCE_CLOUD, + nodeAliasCode = ChainConstant.CHAIN_CODE_MSG_BOX, + paramIndexes = [0] + ) fun saveMsgBox(bean: MsgBoxBean) { providerApi?.saveMsg(bean) } diff --git a/core/mogo-core-res/src/main/java/com/mogo/eagle/core/widget/TextureVideoView.java b/core/mogo-core-res/src/main/java/com/mogo/eagle/core/widget/TextureVideoView.java index 5bb11c89cf..6146af2b9b 100644 --- a/core/mogo-core-res/src/main/java/com/mogo/eagle/core/widget/TextureVideoView.java +++ b/core/mogo-core-res/src/main/java/com/mogo/eagle/core/widget/TextureVideoView.java @@ -32,8 +32,6 @@ import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.MediaController.MediaPlayerControl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; - import java.io.IOException; import java.util.Map; @@ -136,11 +134,6 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl } public void setVideoURI(Uri uri, Map headers) { - if (uri == null) { - CallerLogger.INSTANCE.i(TAG, "setVideoURI--- uri = null"); - } else { - CallerLogger.INSTANCE.i(TAG, "setVideoURI--- uri = " + uri.getPath()); - } mUri = uri; mHeaders = headers; mSeekWhenPrepared = 0; @@ -161,15 +154,13 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl @SuppressLint("NewApi") private void openVideo() { - CallerLogger.INSTANCE.i(TAG, "openVideo"); if (mUri == null) { - CallerLogger.INSTANCE.i(TAG, "mUri == null "); + return; } if (mSurface == null) { - CallerLogger.INSTANCE.i(TAG, "mSurface == null "); + return; } - if (mUri == null || mSurface == null || isSuspendFromActivity) { - CallerLogger.INSTANCE.i(TAG, "isSuspendFromActivity = " + isSuspendFromActivity); + if (isSuspendFromActivity) { return; } release(false); @@ -217,15 +208,11 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl public void onVideoSizeChanged(MediaPlayer mp, int width, int height) { mVideoWidth = mp.getVideoWidth(); mVideoHeight = mp.getVideoHeight(); - if (mVideoWidth != 0 && mVideoHeight != 0) { - CallerLogger.INSTANCE.i(TAG, "OnVideoSizeChangedListener mVideoWidth:" + " mVideoWidth:" + mVideoWidth + " mVideoHeight:" + mVideoHeight); - } } }; MediaPlayer.OnPreparedListener mPreparedListener = new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer mp) { - CallerLogger.INSTANCE.i(TAG, "MediaPlayer.OnPreparedListener"); mPrepareState = mCurrentState = STATE_PREPARED; mVideoWidth = mp.getVideoWidth(); mVideoHeight = mp.getVideoHeight(); @@ -251,7 +238,6 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl private final OnCompletionListener mCompletionListener = new OnCompletionListener() { public void onCompletion(MediaPlayer mp) { - CallerLogger.INSTANCE.i(TAG, "MediaPlayer.OnCompletionListener"); mTargetState = mCurrentState = STATE_PLAYBACK_COMPLETED; if (mOnCompletionListener != null) { mOnCompletionListener.onCompletion(mMediaPlayer); @@ -260,7 +246,6 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl }; private final OnSeekCompleteListener mSeekCompleteListener = mp -> { - CallerLogger.INSTANCE.i(TAG, "MediaPlayer.OnSeekCompleteListener"); try { mCurrentState = mMediaPlayer.isPlaying() ? STATE_PLAYING : STATE_PAUSED; } catch (Exception e) { @@ -271,7 +256,6 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl private final OnErrorListener mErrorListener = new OnErrorListener() { public boolean onError(MediaPlayer mp, int framework_err, int impl_err) { - CallerLogger.INSTANCE.i(TAG, "MediaPlayer.onError"); mTargetState = mPrepareState = mCurrentState = STATE_ERROR; if (mOnErrorListener != null) { mOnErrorListener.onError(mMediaPlayer, framework_err, @@ -286,7 +270,6 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { - CallerLogger.INSTANCE.i(TAG, "MediaPlayer.OnInfoListener---what = " + what + ";extra = " + extra); int messageId = 0; if (what == MEDIA_INFO_VIDEO_NOT_SUPPORTED) { messageId = R.string.VideoView_info_text_video_not_supported; @@ -305,7 +288,6 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl private final MediaPlayer.OnBufferingUpdateListener mBufferingUpdateListener = new MediaPlayer.OnBufferingUpdateListener() { public void onBufferingUpdate(MediaPlayer mp, int percent) { - CallerLogger.INSTANCE.i(TAG, "MediaPlayer.OnBufferingUpdateListener"); mCurrentBufferPercentage = percent; } }; @@ -348,14 +330,12 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl SurfaceTextureListener mSurfaceTextureListener = new SurfaceTextureListener() { @Override public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { - CallerLogger.INSTANCE.i(TAG, "onSurfaceTextureAvailable"); mSurface = new Surface(surface); openVideo(); } @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { - CallerLogger.INSTANCE.i(TAG, "onSurfaceTextureSizeChanged mVideoWidth:" + " mVideoWidth:" + mVideoWidth + " mVideoHeight:" + mVideoHeight); boolean isValidState = (mTargetState == STATE_PLAYING); boolean hasValidSize = (mVideoWidth == width && mVideoHeight == height); if (mMediaPlayer != null && isValidState && hasValidSize) { @@ -373,7 +353,6 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { - CallerLogger.INSTANCE.i(TAG, "onSurfaceTextureDestroyed"); mSurface = null; release(false); return false; @@ -389,7 +368,6 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl * release the media player in any state */ private void release(boolean cleartargetstate) { - CallerLogger.INSTANCE.i(TAG, "release ---cleartargetstate=" + cleartargetstate); mCurrentState = STATE_IDLE; if (cleartargetstate) { @@ -441,14 +419,12 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl } public void start() { - CallerLogger.INSTANCE.i(TAG, "TextureVideoView---start"); if (isFocusLoss) { mTagetStateBackup = STATE_PLAYING; return; } //CallerLogger.INSTANCE.i(TAG, "mCurrentState = " + mCurrentState); if (isInPlaybackState()) { - CallerLogger.INSTANCE.i(TAG, "MediaPlayer.start"); mMediaPlayer.start(); mCurrentState = STATE_PLAYING; } @@ -456,11 +432,8 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl } public void pause() { - CallerLogger.INSTANCE.i(TAG, "TextureVideoView---pause"); - CallerLogger.INSTANCE.i(TAG, "mCurrentState = " + mCurrentState); if (isInPlaybackState()) { if (mMediaPlayer.isPlaying()) { - CallerLogger.INSTANCE.i(TAG, " MediaPlayer.pause"); mMediaPlayer.pause(); mCurrentState = STATE_PAUSED; } @@ -469,7 +442,6 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl } public void suspend() { - CallerLogger.INSTANCE.i(TAG, "TextureVideoView---suspend"); if (!isSuspendFromActivity) { isSuspendFromActivity = true; if (mMediaPlayer != null) { @@ -482,15 +454,12 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl } public void resume() { - CallerLogger.INSTANCE.i(TAG, "TextureVideoView---resume"); isSuspendFromActivity = false; openVideo(); seekTo(progressWhileSuspend); if (mTagetStateBackup == STATE_IDLE) mTagetStateBackup = mTargetState; - CallerLogger.INSTANCE.i(TAG, "isFocusLoss = " + isFocusLoss); - CallerLogger.INSTANCE.i(TAG, "isInPlaybackState() = " + isInPlaybackState()); if (isFocusLoss) { if (isInPlaybackState()) { if (mMediaPlayer.isPlaying()) { @@ -522,12 +491,10 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl } public void seekTo(int msec) { - CallerLogger.INSTANCE.i(TAG, "TextureVideoView---seekTo---msec = " + msec); if (isInPlaybackState() && mCurrentState != STATE_SEEKING && msec > 0 && msec < getDuration()) { mCurrentState = STATE_SEEKING; - CallerLogger.INSTANCE.i(TAG, "MediaPlayer.seekTo(msec) = " + msec); mMediaPlayer.seekTo(msec); mSeekWhenPrepared = 0; } else { @@ -591,7 +558,6 @@ public class TextureVideoView extends TextureView implements MediaPlayerControl } public int getCurrentState() { - CallerLogger.INSTANCE.i(TAG, "mCurrentState == " + mCurrentState); return mCurrentState; } } diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/TelephoneUtil.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/TelephoneUtil.java index 56b3e5f101..6ea63541f6 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/TelephoneUtil.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/TelephoneUtil.java @@ -1,6 +1,5 @@ package com.mogo.eagle.core.utilcode.mogo; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_UTIL; import android.content.Context; import android.net.ConnectivityManager; @@ -8,7 +7,6 @@ import android.os.Build; import android.telephony.TelephonyManager; import android.text.TextUtils; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -79,9 +77,7 @@ public class TelephoneUtil { Method getMobileDataEnabledMethod = iConMgrClass.getDeclaredMethod("getMobileDataEnabled"); if (getMobileDataEnabledMethod != null) { getMobileDataEnabledMethod.setAccessible(true); - boolean result = (Boolean) getMobileDataEnabledMethod.invoke(iConMgr); - CallerLogger.INSTANCE.d(M_UTIL + "TelephoneUtil", "getMobileDataEnabled = " + result); - return result; + return (boolean) (Boolean) getMobileDataEnabledMethod.invoke(iConMgr); } } catch (Exception e) { e.printStackTrace(); @@ -92,9 +88,7 @@ public class TelephoneUtil { try { Method getDataEnabled = telephonyService.getClass().getDeclaredMethod("getDataEnabled"); if (null != getDataEnabled) { - boolean result = (Boolean) getDataEnabled.invoke(telephonyService); - CallerLogger.INSTANCE.d(M_UTIL + "TelephoneUtil", "getDataEnabled = " + result); - return result; + return (boolean) (Boolean) getDataEnabled.invoke(telephonyService); } } catch (Exception e) { e.printStackTrace(); @@ -120,7 +114,6 @@ public class TelephoneUtil { if (setMobileDataEnabledMethod != null) { setMobileDataEnabledMethod.setAccessible(true); setMobileDataEnabledMethod.invoke(iConMgr, enable); - CallerLogger.INSTANCE.d(M_UTIL + "TelephoneUtil", "setMobileDataEnabled = " + enable); } } catch (Exception e) { e.printStackTrace(); @@ -132,7 +125,6 @@ public class TelephoneUtil { Method setDataEnabledMethod = telephonyService.getClass().getDeclaredMethod("setDataEnabled", boolean.class); if (null != setDataEnabledMethod) { setDataEnabledMethod.invoke(telephonyService, enable); - CallerLogger.INSTANCE.d(M_UTIL + "TelephoneUtil", "setDataEnabled = " + enable); } } catch (Exception e) { e.printStackTrace(); diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/glide/transform/GlideBlurTransformation.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/glide/transform/GlideBlurTransformation.java index 795cb12f6d..64d43fef77 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/glide/transform/GlideBlurTransformation.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/glide/transform/GlideBlurTransformation.java @@ -1,6 +1,5 @@ package com.mogo.eagle.core.utilcode.mogo.glide.transform; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_UTIL; import android.content.Context; import android.graphics.Bitmap; @@ -13,7 +12,6 @@ import androidx.annotation.NonNull; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.CenterCrop; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; /** * 使用Glide加载图片时,使该图片进行高斯模糊 @@ -48,8 +46,6 @@ public class GlideBlurTransformation extends CenterCrop { protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { Bitmap bitmap = super.transform(pool, toTransform, outWidth, outHeight); - CallerLogger.INSTANCE.d(M_UTIL + "GlideBlurTransformation", "transform=== blurRadius: " + blurRadius + " " + - "outScale: " + outScale); return blurBitmap(bitmap, blurRadius, (int) (outWidth * outScale), (int) (outHeight * outScale)); } diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/Scene.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/Scene.kt index ba858110fb..798fe7f0d8 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/Scene.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/Scene.kt @@ -1,14 +1,13 @@ package com.mogo.eagle.core.utilcode.mogo.logger.scene import android.util.ArrayMap -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ADAS_IMPL +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_D_C import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_CHAT import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_NETWORK -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OLD_ROUTE +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OTHER import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_SWEEPER import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI @@ -37,25 +36,22 @@ class Scene { sceneCache[M_NETWORK] = networkMap //初始化ADAS val adasMap = SceneLogCache(mutableMapOf(), true) - sceneCache[M_ADAS_IMPL] = adasMap - //初始化CallChat - val callChatMap = SceneLogCache(mutableMapOf(), false) - sceneCache[M_CHAT] = callChatMap + sceneCache[M_D_C] = adasMap //初始化deva val devaMap = SceneLogCache(mutableMapOf(), false) sceneCache[M_DEVA] = devaMap //初始化hmi val hmiMap = SceneLogCache(mutableMapOf(), false) sceneCache[M_HMI] = hmiMap + //初始化hmi + val obuMap = SceneLogCache(mutableMapOf(), true) + sceneCache[M_OBU] = obuMap //初始化v2x - val v2xMap = SceneLogCache(mutableMapOf(), false) + val v2xMap = SceneLogCache(mutableMapOf(), true) sceneCache[M_V2X] = v2xMap //初始化map val map = SceneLogCache(mutableMapOf(), true) sceneCache[M_MAP] = map - //初始化路径规划 - val routeMap = SceneLogCache(mutableMapOf(), true) - sceneCache[M_OLD_ROUTE] = routeMap //初始化其他模块,方便定位索引 val otherMap = SceneLogCache(mutableMapOf(), true) sceneCache[M_OTHER] = otherMap diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt index f99bab44b1..008a613138 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt @@ -6,28 +6,19 @@ class SceneConstant { //核心module const val M_NETWORK = "M_NETWORK-" - const val M_UTIL = "M_UTIL-" - //Main const val M_MAIN = "M_MAIN-" - //core业务module - const val M_ADAS_IMPL = "M_ADAS_IMPL-" - const val M_BINDING = "M_BINDING-" - const val M_CHAT = "M_CHAT-" + const val M_D_C = "M_DATA_CENTER-" const val M_DEVA = "M_DEVA-" - const val M_DISPATCH = "M_DISPATCH-" const val M_HMI = "M_HMI-" const val M_MAP = "M_MAP-" - const val M_MONITOR = "M_MONITOR-" - const val M_NOTICE = "M_NOTICE-" + const val M_BIZ = "M_BIZ-" const val M_OBU = "M_OBU-" const val M_V2X = "M_V2X-" const val M_F = "M_F-" //旧module - const val M_OLD_ROUTE = "M_OLD_ROUTE-" - const val M_OLD_OTHER = "M_OLD_OTHER-" const val M_OTHER = "M_OTHER-" // Och common diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/sqlite/SQLBaseDao.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/sqlite/SQLBaseDao.java index e33af50d4f..5111146c2b 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/sqlite/SQLBaseDao.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/sqlite/SQLBaseDao.java @@ -1,12 +1,10 @@ package com.mogo.eagle.core.utilcode.mogo.sqlite; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_UTIL; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.utils.sqlite.annotation.DbField; import com.mogo.utils.sqlite.annotation.DbTable; @@ -57,7 +55,6 @@ public class SQLBaseDao implements SQLIDao { //执行Sql进行自动建表 String createTableSql = getCreateTableSql(); - CallerLogger.INSTANCE.d(M_UTIL + TAG, "执行SQL:" + createTableSql); sqLiteDatabase.execSQL(createTableSql); //初始化缓存空间 @@ -393,7 +390,6 @@ public class SQLBaseDao implements SQLIDao { e.printStackTrace(); } } - CallerLogger.INSTANCE.d(M_UTIL + TAG, "contentValues:" + contentValues); return contentValues; } diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/sqlite/proxy/BaseDaoProxyLog.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/sqlite/proxy/BaseDaoProxyLog.kt index c792b7460f..b7befe4346 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/sqlite/proxy/BaseDaoProxyLog.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/sqlite/proxy/BaseDaoProxyLog.kt @@ -1,7 +1,5 @@ package com.mogo.utils.sqlite.proxy -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_UTIL import java.lang.reflect.InvocationHandler import java.lang.reflect.Method import java.lang.reflect.Proxy @@ -43,12 +41,8 @@ class BaseDaoProxyLog : InvocationHandler { */ @Throws(Throwable::class) override fun invoke(proxy: Any, method: Method, args: Array): Any? { - //反射方法前调用 - CallerLogger.i("$M_UTIL$TAG", "SQL数据库管理 当前执行>>${method.name}>>") //反射执行方法 相当于调用target.sayHelllo; val result: Any? = method.invoke(target, *args) - //反射方法后调用. - CallerLogger.i("$M_UTIL$TAG", "SQL数据库管理 执行结果>>$result") return result } } diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/toast/TipToast.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/toast/TipToast.java index bf528d2b09..c4d4e1e1e5 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/toast/TipToast.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/toast/TipToast.java @@ -10,11 +10,11 @@ package com.mogo.eagle.core.utilcode.mogo.toast; * @Version 1.1 */ -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_UTIL; import android.content.Context; import android.os.Handler; import android.text.TextUtils; +import android.util.Log; import android.view.Gravity; import android.view.View; import android.widget.Toast; @@ -25,7 +25,6 @@ import androidx.lifecycle.LifecycleEventObserver; import androidx.lifecycle.LifecycleOwner; import com.mogo.eagle.core.utilcode.kotlin.ExtensionsKt; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.ToastUtils; @@ -89,11 +88,11 @@ public final class TipToast { private static boolean checkParams() { if (sContext == null) { - CallerLogger.INSTANCE.e(M_UTIL + TAG, "context can't be null."); + Log.e(TAG, "context can't be null."); return false; } if (sHandler == null) { - CallerLogger.INSTANCE.e(M_UTIL + TAG, "sHandler can't be null."); + Log.e(TAG, "sHandler can't be null."); return false; } return true; diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/AppUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/AppUtils.java index be3d0fe040..a60025a8b9 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/AppUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/AppUtils.java @@ -1,6 +1,5 @@ package com.mogo.eagle.core.utilcode.util; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_UTIL; import android.app.Activity; import android.app.ActivityManager; @@ -22,7 +21,6 @@ import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import java.io.File; import java.util.ArrayList; @@ -360,7 +358,6 @@ public final class AppUtils { if (UtilsBridge.isSpace(packageName)) return; Intent launchAppIntent = UtilsBridge.getLaunchAppIntent(packageName); if (launchAppIntent == null) { - CallerLogger.INSTANCE.e(M_UTIL + "AppUtils", "Didn't exist launcher activity."); return; } Utils.getApp().startActivity(launchAppIntent); @@ -381,7 +378,6 @@ public final class AppUtils { public static void relaunchApp(final boolean isKillProcess) { Intent intent = UtilsBridge.getLaunchAppIntent(Utils.getApp().getPackageName()); if (intent == null) { - CallerLogger.INSTANCE.e(M_UTIL + "AppUtils", "Didn't exist launcher activity."); return; } intent.addFlags( diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BitmapHelper.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BitmapHelper.java index 73c14c65c9..44b546698d 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BitmapHelper.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BitmapHelper.java @@ -1,7 +1,5 @@ package com.mogo.eagle.core.utilcode.util; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_UTIL; - import android.annotation.SuppressLint; import android.content.ContentUris; import android.content.Context; @@ -26,7 +24,6 @@ import android.text.TextUtils; import android.util.Base64; import com.elegant.utils.IOUtils; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import java.io.ByteArrayOutputStream; import java.io.File; @@ -123,18 +120,12 @@ public class BitmapHelper { if ( quality == 100 ) { fullSize = bos.size(); } - CallerLogger.INSTANCE.i( M_UTIL + TAG, "quality<---->size, " + quality + "<---->" + bos.size() / 1024 ); } while ( bos.size() > maxSizeOfBytes && ( quality -= ( fullSize > ONE_MB ) ? 10 : 5 ) >= 0 ); result = bos.toByteArray(); final long end = System.currentTimeMillis(); - CallerLogger.INSTANCE.i( M_UTIL + TAG, - "bitmap to bytes costs " + ( end - start ) + "ms, \n" + - "bitmap full size is " + ( fullSize / 1024 ) + "kb, \n" + - "bitmap final size is " + ( bos.size() / 1024 ) + "kb, \n" + - "bitmap quality is " + quality ); } catch ( Exception e ) { e.printStackTrace(); result = null; @@ -297,7 +288,6 @@ public class BitmapHelper { sampleSize = sampleSize << 1; } - CallerLogger.INSTANCE.i( M_UTIL + TAG, "sample size is " + sampleSize ); return sampleSize; } @@ -338,8 +328,6 @@ public class BitmapHelper { } catch ( Exception e ) { e.printStackTrace(); } - CallerLogger.INSTANCE.i( M_UTIL + TAG, "ExifInterface, degree is " + degree ); - return degree; } @@ -416,7 +404,6 @@ public class BitmapHelper { final long start = System.currentTimeMillis(); if ( bitmap == null || file == null ) { - CallerLogger.INSTANCE.i( M_UTIL + TAG, "保存失败, bitmap or file is null." ); return; } if ( file.getParentFile() != null && !file.getParentFile().exists() ) { @@ -428,15 +415,9 @@ public class BitmapHelper { bitmap.compress( Bitmap.CompressFormat.JPEG, 100, fos ); fos.flush(); fos.close(); - - if ( file.exists() ) { - CallerLogger.INSTANCE.i(M_UTIL + TAG, "保存成功" ); - } } catch ( Exception e ) { e.printStackTrace(); } - - CallerLogger.INSTANCE.i( M_UTIL + TAG, "saving picture costs " + ( System.currentTimeMillis() - start ) + "ms" ); } /** diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BusUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BusUtils.java index 56e0b3afcd..a017fb0ec4 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BusUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BusUtils.java @@ -1,7 +1,6 @@ package com.mogo.eagle.core.utilcode.util; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_UTIL; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -20,7 +19,6 @@ import java.util.concurrent.CopyOnWriteArraySet; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; /** *

@@ -121,7 +119,6 @@ public final class BusUtils {
                 isNeedRecordTags = true;
             }
             if (buses.contains(bus)) {
-                CallerLogger.INSTANCE.w(M_UTIL + TAG, "The bus of <" + bus + "> already registered.");
                 return;
             } else {
                 buses.add(bus);
@@ -171,7 +168,6 @@ public final class BusUtils {
     private void consumeSticky(final Object bus, final String tag, final Object arg) {
         List busInfoList = mTag_BusInfoListMap.get(tag);
         if (busInfoList == null) {
-            CallerLogger.INSTANCE.e(M_UTIL + TAG, "The bus of tag <" + tag + "> is not exists.");
             return;
         }
         for (BusInfo busInfo : busInfoList) {
@@ -198,7 +194,6 @@ public final class BusUtils {
         synchronized (mClassName_BusesMap) {
             Set buses = mClassName_BusesMap.get(className);
             if (buses == null || !buses.contains(bus)) {
-                CallerLogger.INSTANCE.e(M_UTIL + TAG, "The bus of <" + bus + "> was not registered before.");
                 return;
             }
             buses.remove(bus);
@@ -212,10 +207,6 @@ public final class BusUtils {
     private void postInner(final String tag, final Object arg, final boolean sticky) {
         List busInfoList = mTag_BusInfoListMap.get(tag);
         if (busInfoList == null) {
-            CallerLogger.INSTANCE.e(M_UTIL + TAG, "The bus of tag <" + tag + "> is not exists.");
-            if (mTag_BusInfoListMap.isEmpty()) {
-                CallerLogger.INSTANCE.e(M_UTIL + TAG, "Please check whether the bus plugin is applied.");
-            }
             return;
         }
         for (BusInfo busInfo : busInfoList) {
@@ -318,9 +309,6 @@ public final class BusUtils {
                 }
             }
             if (buses.size() == 0) {
-                if (!sticky) {
-                    CallerLogger.INSTANCE.e(M_UTIL + TAG, "The " + busInfo + " was not registered before.");
-                }
                 return;
             }
         } else {
@@ -350,7 +338,6 @@ public final class BusUtils {
     private void postStickyInner(final String tag, final Object arg) {
         List busInfoList = mTag_BusInfoListMap.get(tag);
         if (busInfoList == null) {
-            CallerLogger.INSTANCE.e(M_UTIL + TAG, "The bus of tag <" + tag + "> is not exists.");
             return;
         }
         // 获取多对象,然后消费各个 busInfoList
@@ -374,7 +361,6 @@ public final class BusUtils {
     private void removeStickyInner(final String tag) {
         List busInfoList = mTag_BusInfoListMap.get(tag);
         if (busInfoList == null) {
-            CallerLogger.INSTANCE.e(M_UTIL + TAG, "The bus of tag <" + tag + "> is not exists.");
             return;
         }
         for (BusInfo busInfo : busInfoList) {
diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ClickUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ClickUtils.java
index 27daf5217b..ce42c515bc 100644
--- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ClickUtils.java
+++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ClickUtils.java
@@ -1,6 +1,5 @@
 package com.mogo.eagle.core.utilcode.util;
 
-import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_UTIL;
 
 import android.content.res.Resources;
 import android.graphics.Bitmap;
@@ -25,7 +24,6 @@ import androidx.annotation.IntRange;
 import androidx.annotation.NonNull;
 import androidx.core.view.ViewCompat;
 
-import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
 
 /**
  * 
@@ -361,7 +359,6 @@ public class ClickUtils {
                                        final int expandSizeBottom) {
         final View parentView = (View) view.getParent();
         if (parentView == null) {
-            CallerLogger.INSTANCE.e(M_UTIL + "ClickUtils", "expandClickArea must have parent view.");
             return;
         }
         parentView.post(new Runnable() {
diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/FileIOUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/FileIOUtils.java
index 5812274aea..90d3adf414 100644
--- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/FileIOUtils.java
+++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/FileIOUtils.java
@@ -1,9 +1,9 @@
 package com.mogo.eagle.core.utilcode.util;
 
 
-import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_UTIL;
 
-import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
+import android.util.Log;
+
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
@@ -160,7 +160,7 @@ public final class FileIOUtils {
                                           final boolean append,
                                           final OnProgressUpdateListener listener) {
         if (is == null || !UtilsBridge.createOrExistsFile(file)) {
-            CallerLogger.INSTANCE.e(M_UTIL + "FileIOUtils", "create file <" + file + "> failed.");
+            Log.e( "FileIOUtils", "create file <" + file + "> failed.");
             return false;
         }
         OutputStream os = null;
@@ -380,18 +380,18 @@ public final class FileIOUtils {
                                                       final boolean append,
                                                       final boolean isForce) {
         if (bytes == null) {
-            CallerLogger.INSTANCE.e(M_UTIL + "FileIOUtils", "bytes is null.");
+            Log.e( "FileIOUtils", "bytes is null.");
             return false;
         }
         if (!UtilsBridge.createOrExistsFile(file)) {
-            CallerLogger.INSTANCE.e(M_UTIL + "FileIOUtils", "create file <" + file + "> failed.");
+            Log.e( "FileIOUtils", "create file <" + file + "> failed.");
             return false;
         }
         FileChannel fc = null;
         try {
             fc = new FileOutputStream(file, append).getChannel();
             if (fc == null) {
-                CallerLogger.INSTANCE.e(M_UTIL + "FileIOUtils", "fc is null.");
+                Log.e( "FileIOUtils", "fc is null.");
                 return false;
             }
             fc.position(fc.size());
@@ -470,14 +470,14 @@ public final class FileIOUtils {
                                                   final boolean append,
                                                   final boolean isForce) {
         if (bytes == null || !UtilsBridge.createOrExistsFile(file)) {
-            CallerLogger.INSTANCE.e(M_UTIL + "FileIOUtils", "create file <" + file + "> failed.");
+            Log.e( "FileIOUtils", "create file <" + file + "> failed.");
             return false;
         }
         FileChannel fc = null;
         try {
             fc = new FileOutputStream(file, append).getChannel();
             if (fc == null) {
-                CallerLogger.INSTANCE.e(M_UTIL + "FileIOUtils", "fc is null.");
+                Log.e( "FileIOUtils", "fc is null.");
                 return false;
             }
             MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, fc.size(), bytes.length);
@@ -547,7 +547,7 @@ public final class FileIOUtils {
                                               final boolean append) {
         if (file == null || content == null) return false;
         if (!UtilsBridge.createOrExistsFile(file)) {
-            CallerLogger.INSTANCE.e(M_UTIL + "FileIOUtils", "create file <" + file + "> failed.");
+            Log.e( "FileIOUtils", "create file <" + file + "> failed.");
             return false;
         }
         BufferedWriter bw = null;
@@ -872,7 +872,7 @@ public final class FileIOUtils {
         try {
             fc = new RandomAccessFile(file, "r").getChannel();
             if (fc == null) {
-                CallerLogger.INSTANCE.e(M_UTIL + "FileIOUtils", "fc is null.");
+                Log.e( "FileIOUtils", "fc is null.");
                 return new byte[0];
             }
             ByteBuffer byteBuffer = ByteBuffer.allocate((int) fc.size());
@@ -916,7 +916,7 @@ public final class FileIOUtils {
         try {
             fc = new RandomAccessFile(file, "r").getChannel();
             if (fc == null) {
-                CallerLogger.INSTANCE.e(M_UTIL + "FileIOUtils", "fc is null.");
+                Log.e( "FileIOUtils", "fc is null.");
                 return new byte[0];
             }
             int size = (int) fc.size();
diff --git a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java
index d1fde2ab07..a53c72463b 100644
--- a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java
+++ b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java
@@ -1,5 +1,14 @@
 package com.mogo.aicloud.services.socket;
 
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_CLOUD_CONNECT_ERROR;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_CLOUD_CONNECT_FAIL;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_CLOUD_CONNECT_LOST;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_CLOUD_CONNECT_SUCCESS;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_CLOUD_PASSPORT_TOKEN;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_CLOUD_SOCKET_INIT;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_SOURCE_CLOUD;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_INIT_STATUS;
+
 import android.content.Context;
 
 import androidx.annotation.Keep;
@@ -13,6 +22,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
 import com.mogo.eagle.core.utilcode.util.ProcessUtils;
 import com.zhidao.ptech.connsvr.commom.protocol.MogoCommon;
 import com.zhidao.socket.ConnectionLifecycleListener;
+import com.zhjt.service.chain.ChainLog;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -67,9 +77,17 @@ public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implem
      */
     private final Map mAckListeners = new ConcurrentHashMap<>();
 
+    @ChainLog(
+            linkChainLog = CHAIN_TYPE_INIT_STATUS,
+            linkCode = CHAIN_SOURCE_CLOUD,
+            parentNodeAliasCode = CHAIN_CODE_CLOUD_PASSPORT_TOKEN,
+            nodeAliasCode = CHAIN_CODE_CLOUD_SOCKET_INIT,
+            paramIndexes = {1, 2, 3, 4},
+            endPoint = false
+    )
     @Override
     public void init(Context context, String sn, String appId, double lat, double lon) {
-        if(!ProcessUtils.isMainProcess()){
+        if (!ProcessUtils.isMainProcess()) {
             return;
         }
         this.mAppId = appId;
@@ -192,6 +210,12 @@ public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implem
         }
     };
 
+    @ChainLog(
+            linkChainLog = CHAIN_TYPE_INIT_STATUS,
+            linkCode = CHAIN_SOURCE_CLOUD,
+            nodeAliasCode = CHAIN_CODE_CLOUD_CONNECT_SUCCESS,
+            paramIndexes = {-1}
+    )
     @Override
     public void onConnectSuccess() {
         if (mLifeCycleListeners.size() > 0) {
@@ -203,6 +227,12 @@ public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implem
         }
     }
 
+    @ChainLog(
+            linkChainLog = CHAIN_TYPE_INIT_STATUS,
+            linkCode = CHAIN_SOURCE_CLOUD,
+            nodeAliasCode = CHAIN_CODE_CLOUD_CONNECT_FAIL,
+            paramIndexes = {-1}
+    )
     @Override
     public void onConnectFailure() {
         if (mLifeCycleListeners.size() > 0) {
@@ -214,6 +244,12 @@ public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implem
         }
     }
 
+    @ChainLog(
+            linkChainLog = CHAIN_TYPE_INIT_STATUS,
+            linkCode = CHAIN_SOURCE_CLOUD,
+            nodeAliasCode = CHAIN_CODE_CLOUD_CONNECT_LOST,
+            paramIndexes = {-1}
+    )
     @Override
     public void onConnectLost(boolean reconnect) {
         if (mLifeCycleListeners.size() > 0) {
@@ -225,6 +261,13 @@ public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implem
         }
     }
 
+    @ChainLog(
+            linkChainLog = CHAIN_TYPE_INIT_STATUS,
+            linkCode = CHAIN_SOURCE_CLOUD,
+            parentNodeAliasCode = CHAIN_CODE_CLOUD_SOCKET_INIT,
+            nodeAliasCode = CHAIN_CODE_CLOUD_CONNECT_ERROR,
+            paramIndexes = {0, 1}
+    )
     @Override
     public void onError(int code, String msg) {
         if (mLifeCycleListeners.size() > 0) {
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java
index 40406c6996..6ec57ac8d5 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java
@@ -4,24 +4,6 @@ import com.mogo.commons.debug.DebugConfig;
 import com.mogo.eagle.core.data.config.FunctionBuildConfig;
 
 public class HostConst {
-    public static final String DEVA_HOST = "http://dzt-deva.zhidaozhixing.com";
-    public static final String DATA_SERVICE_HOST = "http://dzt-dataService.zhidaozhixing.com";
-    public static final String REALTIME_LOCATION_HOST = "http://dzt-realtimeLocation.zhidaozhixing.com";
-    public static final String GEOFENCE_HOST = "http://dzt-geoFenceCarService.zhidaozhixing.com";
-    public static final String CARLIFE_HOST = "http://dzt-carlife.zhidaozhixing.com";
-    public static final String STRATEGY_PUSH_HOST = "http://dzt-strategyPush.zhidaozhixing.com";
-    public static final String CAMERA_STREAM_HOST = "http://dzt-smartTransportationAiCloud.zhidaozhixing.com";
-    public static final String OPEN_CAMERA_STREAM_HOST = "http://10.0.16.6:18080";
-
-    public static final String DATA_CENTER_HOST = "http://dzt-data-center.zhidaozhixing.com";
-    public static final String CITY_HOST = "http://dzt-city.zhidaozhixing.com";
-    public static final String SOCKET_CENTER_DOMAIN = "socketRegion";
-
-    //    public static final String UPGRADE_APP_HOST_TEST = "http://10.0.200.12:32423?/";
-    public static final String UPGRADE_APP_HOST = "http://eagle-mis.zhidaozhixing.com/";
-
-    public static final String CMDB_HOST = "http://eagle-mis.zhidaozhixing.com/eagleEye-mis/cmdbapi/";
-
     public static final String HOST_DEV = "http://eagle-qa.zhidaozhixing.com";
     public static final String HOST_RELEASE = "http://eagle-mis.zhidaozhixing.com";
 
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoModule.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoModule.java
index 4e023c24ba..ca594fd8e3 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoModule.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoModule.java
@@ -18,11 +18,6 @@ public class MogoModule {
      */
     private String mName;
 
-    /**
-     * 广播接收者
-     */
-    private String mBroadcastAction;
-
     /**
      * @param path 模块加载路径
      * @param name 模块名称
@@ -51,13 +46,5 @@ public class MogoModule {
         return this;
     }
 
-    public String getBroadcastAction() {
-        return mBroadcastAction;
-    }
-
-    public MogoModule setBroadcastAction( String broadcastAction ) {
-        this.mBroadcastAction = broadcastAction;
-        return this;
-    }
 }
 
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoModulePaths.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoModulePaths.java
index 4693d1cb44..f0b1af41c2 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoModulePaths.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoModulePaths.java
@@ -13,8 +13,6 @@ import java.util.List;
  */
 public class MogoModulePaths {
 
-    private static final List mMogoModules = new ArrayList<>();
-
     // 不需要启动APP也能运行的模块
     private static final List mMogoBaseModules = new ArrayList<>();
 
@@ -22,18 +20,6 @@ public class MogoModulePaths {
 
     private static final List mModuleFunctionServers = new ArrayList<>();
 
-    /**
-     * 添加卡片模块
-     *
-     * @param module
-     */
-    public static void addModule(MogoModule module) {
-        if (module == null || TextUtils.isEmpty(module.getPath().replace(" ", ""))) {
-            throw new IllegalArgumentException("module path can't be empty or null or blank");
-        }
-        mMogoModules.add(module);
-    }
-
     /**
      * 添加模块功能
      *
@@ -70,10 +56,6 @@ public class MogoModulePaths {
         mMogoBaseModules.add(module);
     }
 
-    public static List getModules() {
-        return mMogoModules;
-    }
-
     public static List getBaseModules() {
         return mMogoBaseModules;
     }
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoServices.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoServices.java
index 014c9101f4..b921982dd0 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoServices.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoServices.java
@@ -1,7 +1,5 @@
 package com.mogo.commons.module;
 
-import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_OLD_OTHER;
-
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -14,12 +12,8 @@ import com.mogo.commons.module.intent.IntentManager;
 import com.mogo.commons.module.status.MogoStatusManager;
 import com.mogo.commons.module.receiver.MogoReceiver;
 import com.mogo.commons.voice.AIAssist;
-import com.mogo.eagle.core.data.config.CloudPoiManager;
-import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
 import com.mogo.eagle.core.utilcode.util.NetworkUtils;
 
-import java.util.List;
-
 
 public class MogoServices implements IMogoIntentListener {
 
@@ -43,7 +37,6 @@ public class MogoServices implements IMogoIntentListener {
     public void init(Context context) {
         mContext = context;
         MogoStatusManager.getInstance().setAIAssistReady(TAG, AIAssist.getInstance(mContext).hasFlush());
-        CloudPoiManager.getInstance().updateFromConfig(context);
 
         registerMogoReceiver(context);
 
@@ -51,30 +44,15 @@ public class MogoServices implements IMogoIntentListener {
         mIntentManager.registerIntentListener(MogoReceiver.ACTION_VOICE_UI, this);
         mIntentManager.registerIntentListener(MogoReceiver.ACTION_VOICE_READY, this);
         mIntentManager.registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, this);
-
-        Intent intent = new Intent("com.freedom.ser.ACTION");
-        intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
-        mContext.sendBroadcast(intent);
     }
 
     private void registerMogoReceiver(Context context) {
         if (context == null) {
             return;
         }
-        List modules = MogoModulePaths.getModules();
-        if (modules.isEmpty()) {
-            return;
-        }
         MogoReceiver receiver = new MogoReceiver(context);
         IntentFilter filter = new IntentFilter();
-        if (!modules.isEmpty()) {
-            for (MogoModule module : modules) {
-                if (TextUtils.isEmpty(module.getBroadcastAction())) {
-                    continue;
-                }
-                filter.addAction(module.getBroadcastAction());
-            }
-        }
+
         filter.addAction(MogoReceiver.VOICE_ACTION);
         // 小智语音
         filter.addAction(MogoReceiver.ACTION_VOICE_UI);
@@ -84,7 +62,6 @@ public class MogoServices implements IMogoIntentListener {
         try {
             context.getApplicationContext().registerReceiver(receiver, filter);
         } catch (Exception e) {
-            CallerLogger.INSTANCE.e(M_OLD_OTHER + TAG, "registerMogoReceiver error : " + e);
         }
     }
 
@@ -97,8 +74,4 @@ public class MogoServices implements IMogoIntentListener {
         IntentHandlerFactory.getInstance().handle(mContext, command, intent);
     }
 
-    public void destroy() {
-        CallerLogger.INSTANCE.d(M_OLD_OTHER + TAG, "MogoServices do nothings.");
-    }
-
 }
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/intent/IntentHandlerFactory.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/intent/IntentHandlerFactory.java
index dda7012546..90f7d692e7 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/intent/IntentHandlerFactory.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/intent/IntentHandlerFactory.java
@@ -31,11 +31,6 @@ public class IntentHandlerFactory {
         return InstanceHolder.INSTANCE;
     }
 
-    private Object readResolve() {
-        // 阻止反序列化,必须实现 Serializable 接口
-        return InstanceHolder.INSTANCE;
-    }
-
     private final Map< String, IntentHandler > mHandlers = new HashMap<>();
 
     private final IntentHandler DEFAULT = new EmptyIntentHandler();
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/utils/LocationUtils.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/utils/LocationUtils.java
deleted file mode 100644
index 54431f4680..0000000000
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/utils/LocationUtils.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.mogo.commons.utils;
-
-import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X;
-
-import com.mogo.eagle.core.data.map.MogoLatLng;
-import com.mogo.eagle.core.data.map.MogoLocation;
-import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
-import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils;
-
-/**
- * author : donghongyu
- * e-mail : 1358506549@qq.com
- * date   : 2020/5/15 10:31 AM
- * desc   : 基于位置工具类
- * version: 1.0
- */
-public class LocationUtils {
-    private static final String TAG = "LocationUtils";
-
-    /**
-     * 获取传入的经纬度在车辆的什么位置
-     *
-     * @return 顺时针,true-前,false-后
-     */
-    public static boolean isPointOnCarFront(MogoLocation carLocal, MogoLatLng pointLocal) {
-        double carLon = carLocal.getLongitude();
-        double carLat = carLocal.getLatitude();
-        double poiLon = pointLocal.getLon();
-        double poiLat = pointLocal.getLat();
-        double carAngle = carLocal.getHeading();
-
-        // 计算车辆与点之间的夹角
-        int diffAngle = DrivingDirectionUtils.getDegreeOfCar2Poi(
-                carLon, carLat, poiLon, poiLat, (int) carAngle);
-
-        if (diffAngle <= 90) {
-            CallerLogger.INSTANCE.i(M_V2X + TAG, "目标点在车辆--前方");
-            return true;
-        } else {
-            CallerLogger.INSTANCE.i(M_V2X + TAG, "目标点在车辆--后方");
-            return false;
-        }
-    }
-}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/utils/Trigonometric.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/utils/Trigonometric.java
deleted file mode 100644
index 42a0ef16b5..0000000000
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/utils/Trigonometric.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.mogo.commons.utils;
-
-import com.mogo.eagle.core.data.map.MogoLatLng;
-
-/**
- * @author liujing
- * @description 描述
- * @since: 2021/4/13
- */
-public class Trigonometric {
-    private final static double radius_b = 6378137;//大半径
-    private final static double radius_s = 6356725;//小半径
-    private static double mRadLo;
-    private static double mRadLa;
-    private static double Ec;
-    private static double Ed;
-
-    /**
-     * 计算两点间的角度
-     */
-    public static double getAngle(double lon1, double lat1, double lon2,
-                                  double lat2) {
-        double fLat = Math.PI * (lat1) / 180.0;
-        double fLng = Math.PI * (lon1) / 180.0;
-        double tLat = Math.PI * (lat2) / 180.0;
-        double tLng = Math.PI * (lon2) / 180.0;
-
-        double degree = (Math.atan2(Math.sin(tLng - fLng) * Math.cos(tLat), Math.cos(fLat) * Math.sin(tLat) -
-                Math.sin(fLat) * Math.cos(tLat) * Math.cos(tLng - fLng))) * 180.0 / Math.PI;
-        if (degree >= 0) {
-            return degree;
-        } else {
-            return 360 + degree;
-        }
-    }
-
-    /**
-     * 根据角度获取指定距离点的经纬度
-     */
-    public static MogoLatLng getNewLocation(double lon, double lat, double distance, double angle) {
-        mRadLo = lon * Math.PI / 180.;
-        mRadLa = lat * Math.PI / 180.;
-        Ec = radius_s + (radius_b - radius_s) * (90. - lat) / 90;
-        Ed = Ec * Math.cos(mRadLa);
-
-        double dx = distance * Math.sin(Math.toRadians(angle));
-        double dy = distance * Math.cos(Math.toRadians(angle));
-        double lon_new = (dx / Ed + mRadLo) * 180. / Math.PI;
-        double lat_new = (dy / Ec + mRadLa) * 180. / Math.PI;
-        return new MogoLatLng(lat_new, lon_new);
-    }
-
-}
diff --git a/gradle.properties b/gradle.properties
index 19cac62742..38fedc6de5 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -63,7 +63,7 @@ BIZCONFIG_VERSION=1.3.2
 SERVICE_BIZ_VERSION=1.2.4
 ################  外部依赖引用 ################
 # loglib
-LOGLIB_VERSION=1.5.27
+LOGLIB_VERSION=1.5.31
 ######## MogoAiCloudSDK Version ########
 # 网络请求LOGLIB_VERSION
 MOGO_NETWORK_VERSION=1.4.7.9
diff --git a/gradle/bytex/bytex_log_chain.gradle b/gradle/bytex/bytex_log_chain.gradle
index 744ef14cf4..d1ba3cd8d6 100644
--- a/gradle/bytex/bytex_log_chain.gradle
+++ b/gradle/bytex/bytex_log_chain.gradle
@@ -1,6 +1,6 @@
 apply plugin: 'chain.log.hook'
 hooklog {
-    enableTraceToServer false
     enableLoggerToLocal true
+    enableDebugTracing true
 }
 
diff --git a/gradle/ext.gradle b/gradle/ext.gradle
index 5be873b721..9bcaba7a7b 100644
--- a/gradle/ext.gradle
+++ b/gradle/ext.gradle
@@ -3,5 +3,6 @@ ext {
     kotlin_version = '1.5.30'
     plugin_version = '10.0.0_mogo'
     hook_log_plugin_version = '1.7.2'
+    service_chain_version = '5.2.9'
     lancetx_plugin_version = '10.0.3_mogo'
 }
\ No newline at end of file
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java
index a7f2f6f0d4..6a3bf570d4 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java
@@ -1,21 +1,22 @@
 package com.zhidao.support.adas.high;
 
 
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_ADAS_SEND_GLOBAL_PATH;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_ADAS_SEND_SYSTEM_CMD;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_ADAS_START_AUTOPILOT;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_CONNECT_ADDRESS;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_INIT;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_STATUS_CHANGE_REASON;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_ADAS;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_CONNECT_STATUS;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_INIT;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_SEND_GLOBAL_PATH;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_SEND_SYSTEM_CMD;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_START_AUTOPILOT;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_CONNECT_ADDRESS;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_STATUS_CHANGE_REASON;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_SOURCE_ADAS;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_INIT_STATUS;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT;
 
 import android.os.Handler;
 import android.os.Message;
 import android.os.SystemClock;
 import android.text.TextUtils;
+import android.util.Log;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -54,7 +55,6 @@ import com.zhjt.mogo.adas.data.sweeper.task.SweeperTaskSuspendResume;
 import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm;
 import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
 import com.zhjt.service.chain.ChainLog;
-import com.zhjt.service.chain.TracingConstants;
 
 import java.util.HashMap;
 import java.util.HashSet;
@@ -276,12 +276,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
         ipcFixationIPHelper.start(ips);
     }
 
-    @ChainLog(linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
-            linkCode = CHAIN_LINK_ADAS,
-            endpoint = TracingConstants.Endpoint.PAD,
-            nodeAliasCode = CHAIN_ALIAS_CODE_INIT,
-            paramIndexes = {-1},
-            clientPkFileName = "sn")
+    @ChainLog(linkChainLog = CHAIN_TYPE_INIT_STATUS,
+            linkCode = CHAIN_SOURCE_ADAS,
+            nodeAliasCode = CHAIN_CODE_ADAS_INIT,
+            paramIndexes = {-1})
     private void initSocket() {
         mSocket = new FpgaSocket();
         mSocket.setWebSocketListener(this);
@@ -294,12 +292,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
         connect();
     }
 
-    @ChainLog(linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
-            linkCode = CHAIN_LINK_ADAS,
-            endpoint = TracingConstants.Endpoint.PAD,
-            nodeAliasCode = CHAIN_ALIAS_CODE_CONNECT_ADDRESS,
-            paramIndexes = {0},
-            clientPkFileName = "sn")
+    @ChainLog(linkChainLog = CHAIN_TYPE_INIT_STATUS,
+            linkCode = CHAIN_SOURCE_ADAS,
+            nodeAliasCode = CHAIN_CODE_CONNECT_ADDRESS,
+            paramIndexes = {0, 1})
     private void connectSocket(String address, int port) {
         if (mSocket != null) {
             mSocket.connectWebSocket(address, port);
@@ -529,7 +525,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
 
     @Override
     public void onConnecting(String msg) {
-        updateConnectStatus(Constants.IPC_CONNECTION_STATUS.CONNECTING, msg);
+        updateConnectStatus(Constants.IPC_CONNECTION_STATUS.CONNECTING, msg == null ? "" : msg);
     }
 
     @Override
@@ -555,7 +551,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
         ipcConnectedPort = Constants.DEFAULT_PORT;
         subscribeInterface = null;
         usedChassisType = Constants.CHASSIS_TYPE.UNKNOWN;
-        updateConnectStatus(Constants.IPC_CONNECTION_STATUS.DISCONNECTED, t);
+        updateConnectStatus(Constants.IPC_CONNECTION_STATUS.DISCONNECTED, t == null ? "" : t);
     }
 
     @Override
@@ -643,13 +639,9 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
      * @param reason 状态描述
      *               如果ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.DISCONNECTED && reason==null 表示主动断开连接
      */
-    @ChainLog(linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
-            linkCode = CHAIN_LINK_ADAS,
-            endpoint = TracingConstants.Endpoint.PAD,
-            nodeAliasCode = CHAIN_ALIAS_CODE_STATUS_CHANGE_REASON,
-            paramIndexes = {1},
-            clientPkFileName = "sn")
     private void updateConnectStatus(@Define.IPCConnectionStatus int status, @Nullable String reason) {
+        Log.d("emArrow", "status:" + status + " , reason :" + reason);
+        log(status, reason);
         ipcConnectionStatus.set(status);
         if (status == Constants.IPC_CONNECTION_STATUS.CONNECTED) {
             AutopilotAbilityManager.getInstance().start();
@@ -670,6 +662,14 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
         CupidLogUtils.i(TAG, "工控机连接状态 status=" + status + " reason=" + reason);
     }
 
+    @ChainLog(linkChainLog = CHAIN_TYPE_INIT_STATUS,
+            linkCode = CHAIN_SOURCE_ADAS,
+            nodeAliasCode = CHAIN_CODE_STATUS_CHANGE_REASON,
+            paramIndexes = {0, 1})
+    private void log(int status, @Nullable String reason) {
+
+    }
+
 
     @Override
     public void stopDispatchHandler() {
@@ -843,12 +843,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
      * @return boolean
      */
     @ChainLog(
-            linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT,
-            linkCode = CHAIN_LINK_ADAS,
-            endpoint = TracingConstants.Endpoint.PAD,
-            nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_START_AUTOPILOT,
-            paramIndexes = {2},
-            clientPkFileName = "sn"
+            linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
+            linkCode = CHAIN_SOURCE_ADAS,
+            nodeAliasCode = CHAIN_CODE_ADAS_START_AUTOPILOT,
+            paramIndexes = {0, 1, 2}
     )
     @Override
     public boolean sendAutoPilotModeReq(int mode, int source, MessagePad.RouteInfo routeInfo) {
@@ -1015,12 +1013,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
      * @return boolean
      */
     @ChainLog(
-            linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT,
-            linkCode = CHAIN_LINK_ADAS,
-            endpoint = TracingConstants.Endpoint.PAD,
-            nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_SEND_GLOBAL_PATH,
-            paramIndexes = {-1},
-            clientPkFileName = "sn"
+            linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
+            linkCode = CHAIN_SOURCE_ADAS,
+            nodeAliasCode = CHAIN_CODE_ADAS_SEND_GLOBAL_PATH,
+            paramIndexes = {-1}
     )
     @Override
     public boolean sendGlobalPathReq() {
@@ -1087,12 +1083,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
      * @return boolean
      */
     @ChainLog(
-            linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT,
-            linkCode = CHAIN_LINK_ADAS,
-            endpoint = TracingConstants.Endpoint.PAD,
-            nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_SEND_SYSTEM_CMD,
-            paramIndexes = {0},
-            clientPkFileName = "sn"
+            linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
+            linkCode = CHAIN_SOURCE_ADAS,
+            nodeAliasCode = CHAIN_CODE_ADAS_SEND_SYSTEM_CMD,
+            paramIndexes = {0}
     )
     @Override
     public boolean sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type) {
@@ -1109,12 +1103,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
      * @return boolean
      */
     @ChainLog(
-            linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT,
-            linkCode = CHAIN_LINK_ADAS,
-            endpoint = TracingConstants.Endpoint.PAD,
-            nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD,
-            paramIndexes = {0},
-            clientPkFileName = "sn"
+            linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
+            linkCode = CHAIN_SOURCE_ADAS,
+            nodeAliasCode = CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD,
+            paramIndexes = {0}
     )
     @Override
     public boolean sendTrajectoryDownloadReq(MessagePad.Line line) {
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java
index 7289402419..5e762dc21e 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java
@@ -2,21 +2,21 @@ package com.zhidao.support.adas.high.chain;
 
 public class AdasChain {
 
-    public static final int CHAIN_LINK_ADAS = 1;
+    public static final int CHAIN_SOURCE_ADAS = 1;
 
-    public static final int CHAIN_LINK_LOG_CONNECT_STATUS = 0;
-    public static final int CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT = 2;
+    public static final int CHAIN_TYPE_INIT_STATUS = 0;
+    public static final int CHAIN_TYPE_SOCKET_AUTOPILOT = 2;
 
-    public static final String CHAIN_ALIAS_CODE_INIT = "PAD_ADAS_INIT";
-    public static final String CHAIN_ALIAS_CODE_STATUS_CHANGE_REASON = "CHAIN_ALIAS_CODE_STATUS_CHANGE_REASON";
-    public static final String CHAIN_ALIAS_CODE_CONNECT_ADDRESS = "PAD_ADAS_CONNECT_ADDRESS";
-    public static final String CHAIN_ALIAS_CODE_WEB_SOCKET_OPEN = "PAD_ADAS_WEB_SOCKET_OPEN";
-    public static final String CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_JSON = "PAD_ADAS_WEB_SOCKET_MESSAGE_JSON";
-    public static final String CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_BYTE = "PAD_ADAS_WEB_SOCKET_MESSAGE_BYTE";
+    public static final String CHAIN_CODE_ADAS_INIT = "CHAIN_CODE_ADAS_INIT";
+    public static final String CHAIN_CODE_STATUS_CHANGE_REASON = "CHAIN_CODE_STATUS_CHANGE_REASON";
+    public static final String CHAIN_CODE_CONNECT_ADDRESS = "CHAIN_CODE_CONNECT_ADDRESS";
+    public static final String CHAIN_CODE_WEB_SOCKET_OPEN = "CHAIN_CODE_WEB_SOCKET_OPEN";
+    public static final String CHAIN_CODE_WEB_SOCKET_MESSAGE_JSON = "CHAIN_CODE_WEB_SOCKET_MESSAGE_JSON";
+    public static final String CHAIN_CODE_WEB_SOCKET_MESSAGE_BYTE = "CHAIN_CODE_WEB_SOCKET_MESSAGE_BYTE";
 
     //operation by user
-    public static final String CHAIN_ALIAS_CODE_ADAS_START_AUTOPILOT = "CHAIN_ALIAS_CODE_ADAS_START_AUTOPILOT";
-    public static final String CHAIN_ALIAS_CODE_ADAS_SEND_GLOBAL_PATH = "CHAIN_ALIAS_CODE_ADAS_SEND_GLOBAL_PATH";
-    public static final String CHAIN_ALIAS_CODE_ADAS_SEND_SYSTEM_CMD = "CHAIN_ALIAS_CODE_ADAS_SEND_SYSTEM_CMD";
-    public static final String CHAIN_ALIAS_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD = "CHAIN_ALIAS_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD";
+    public static final String CHAIN_CODE_ADAS_START_AUTOPILOT = "CHAIN_CODE_ADAS_START_AUTOPILOT";
+    public static final String CHAIN_CODE_ADAS_SEND_GLOBAL_PATH = "CHAIN_CODE_ADAS_SEND_GLOBAL_PATH";
+    public static final String CHAIN_CODE_ADAS_SEND_SYSTEM_CMD = "CHAIN_CODE_ADAS_SEND_SYSTEM_CMD";
+    public static final String CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD = "CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD";
 }
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java
index c88cc87547..db46b1aee8 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java
@@ -1,10 +1,10 @@
 package com.zhidao.support.adas.high.socket;
 
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_BYTE;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_JSON;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_WEB_SOCKET_OPEN;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_ADAS;
-import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_CONNECT_STATUS;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_WEB_SOCKET_MESSAGE_BYTE;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_WEB_SOCKET_MESSAGE_JSON;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_WEB_SOCKET_OPEN;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_SOURCE_ADAS;
+import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_INIT_STATUS;
 import static com.zhidao.support.adas.high.common.Constants.RESOURCE_PATH;
 import static com.zhidao.support.adas.high.common.Constants.WS_IP_HOST_HEAD;
 
@@ -23,7 +23,6 @@ import com.zhidao.support.adas.high.common.ReconnectManager;
 import com.zhidao.support.adas.high.queue.WSByteQueueManager;
 import com.zhidao.support.adas.high.queue.WebSocketQueueManager;
 import com.zhjt.service.chain.ChainLog;
-import com.zhjt.service.chain.TracingConstants;
 
 import java.util.Locale;
 import java.util.concurrent.TimeUnit;
@@ -199,12 +198,10 @@ public class FpgaSocket implements IWebSocket {
 
     public class EchoWebSocketListener extends WebSocketListener {
 
-        @ChainLog(linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
-                linkCode = CHAIN_LINK_ADAS,
-                endpoint = TracingConstants.Endpoint.PAD,
-                nodeAliasCode = CHAIN_ALIAS_CODE_WEB_SOCKET_OPEN,
-                paramIndexes = {1},
-                clientPkFileName = "sn")
+        @ChainLog(linkChainLog = CHAIN_TYPE_INIT_STATUS,
+                linkCode = CHAIN_SOURCE_ADAS,
+                nodeAliasCode = CHAIN_CODE_WEB_SOCKET_OPEN,
+                paramIndexes = {1})
         @Override
         public void onOpen(@NonNull WebSocket webSocket, @NonNull Response response) {
             super.onOpen(webSocket, response);
@@ -222,12 +219,6 @@ public class FpgaSocket implements IWebSocket {
             }
         }
 
-        @ChainLog(linkChainLog = -1,
-                linkCode = CHAIN_LINK_ADAS,
-                endpoint = TracingConstants.Endpoint.PAD,
-                nodeAliasCode = CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_JSON,
-                paramIndexes = {1},
-                clientPkFileName = "sn")
         @Override
         public void onMessage(@NonNull WebSocket webSocket, @NonNull String text) {
             super.onMessage(webSocket, text);
@@ -253,12 +244,6 @@ public class FpgaSocket implements IWebSocket {
             }
         }
 
-        @ChainLog(linkChainLog = -1,
-                linkCode = CHAIN_LINK_ADAS,
-                endpoint = TracingConstants.Endpoint.PAD,
-                nodeAliasCode = CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_BYTE,
-                paramIndexes = {-1},
-                clientPkFileName = "sn")
         @Override
         public void onMessage(@NonNull WebSocket webSocket, @NonNull ByteString bytes) {
             super.onMessage(webSocket, bytes);
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java
index b93e3a6384..9dd0a4f135 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java
@@ -1,12 +1,14 @@
 package com.mogo.map;
 
-import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_HD_MAP_CALL;
-import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_INIT_ON_MAP_INIT;
-import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_INIT_ON_MAP_LOADED;
-import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_INIT;
-import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS;
-import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_HD_MAP;
-import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_MAP;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_HD_MAP_CALL;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_INIT_ON_MAP_INIT;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_INIT_ON_MAP_LOADED;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_ROMA_MODE_INVOKE;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_ROMA_REQUEST_OK;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_SOURCE_INIT;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_SOURCE_MAP;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_HD_MAP;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_INIT_STATUS;
 import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_MAP;
 import static com.mogo.map.uicontroller.VisualAngleMode.MAP_STYLE_VR_ANGLE_300;
 import static com.mogo.map.uicontroller.VisualAngleMode.MAP_STYLE_VR_ANGLE_CROSS;
@@ -21,7 +23,6 @@ import android.graphics.Point;
 import android.graphics.Rect;
 import android.os.Bundle;
 import android.os.Looper;
-import android.os.Trace;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.MotionEvent;
@@ -40,6 +41,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84Lis
 import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager;
 import com.mogo.eagle.core.function.call.map.CallerMapDevaListenerManager;
 import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager;
+import com.mogo.eagle.core.function.call.map.CallerMapRomaListener;
 import com.mogo.eagle.core.function.call.map.CallerMapStyleListenerManager;
 import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
 import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
@@ -69,6 +71,7 @@ import com.zhidaoauto.map.sdk.open.abs.OnMapStyleListener;
 import com.zhidaoauto.map.sdk.open.abs.OnMapTouchListener;
 import com.zhidaoauto.map.sdk.open.abs.OnMapViewVisualAngleChangeListener;
 import com.zhidaoauto.map.sdk.open.abs.OnRoadInfoListener;
+import com.zhidaoauto.map.sdk.open.abs.OnRoamStatusListener;
 import com.zhidaoauto.map.sdk.open.abs.log.ILog;
 import com.zhidaoauto.map.sdk.open.business.PointCloudHelper;
 import com.zhidaoauto.map.sdk.open.camera.CameraPosition;
@@ -89,7 +92,6 @@ import com.zhidaoauto.map.sdk.open.tools.MapTools;
 import com.zhidaoauto.map.sdk.open.view.MapAutoView;
 import com.zhidaoauto.map.sdk.open.view.MapAutoViewHelper;
 import com.zhjt.service.chain.ChainLog;
-import com.zhjt.service.chain.TracingConstants;
 
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -109,7 +111,7 @@ public class AMapViewWrapper implements IMogoMapView,
         OnMapStyleListener,
         OnMapViewVisualAngleChangeListener,
         OnRoadInfoListener,
-        ILog {
+        ILog, OnRoamStatusListener {
 
     private static final String TAG = "AMapViewWrapper";
     private final MapAutoView mMapView;
@@ -192,6 +194,7 @@ public class AMapViewWrapper implements IMogoMapView,
         mMapView.registerListener(this, MapAutoApi.LISTENER_TYPE_3D);
         mMapView.setOnCameraChangeListener(this);
         mMapView.setOnMapStyleListener(this);
+        mMapView.setOnRoamStatusListener(this);
         mMapView.setOnMapViewVisualAngleChangeListener(this);
         mMapView.setOnRoadInfoListener(this, 1);
         MapAutoApi.INSTANCE.registerLogListener(this);
@@ -200,13 +203,14 @@ public class AMapViewWrapper implements IMogoMapView,
 
     /**
      * 修改获取当前车道号
+     *
      * @param roadId
      * @param s1
      */
     @Override
     public void onRoadIdInfo(@androidx.annotation.Nullable String roadId, @androidx.annotation.Nullable String s1) {
         if (roadId != null && !TextUtils.isEmpty(roadId)) {
-           // CallerLogger.INSTANCE.d(M_MAP + TAG, "onRoadIdInfo::" + roadId);
+            // CallerLogger.INSTANCE.d(M_MAP + TAG, "onRoadIdInfo::" + roadId);
             CallerMapRoadListenerManager.INSTANCE.invokeListenersOnRoadIdGet(roadId);
         } else {
             //CallerLogger.INSTANCE.d(M_MAP + TAG, "onRoadIdInfo::null");
@@ -337,9 +341,6 @@ public class AMapViewWrapper implements IMogoMapView,
             return MapControlResult.ERROR;
         }
         CallerLogger.INSTANCE.d(M_MAP + TAG, "changeZoom : " + zoom);
-        if (DebugConfig.isDebug()) {
-            CallerLogger.INSTANCE.d(M_MAP + TAG, Log.getStackTraceString(new Throwable()));
-        }
         getMap().changeZoom(zoom);
         return MapControlResult.SUCCESS;
     }
@@ -350,9 +351,6 @@ public class AMapViewWrapper implements IMogoMapView,
 //            return;
 //        }
         CallerLogger.INSTANCE.d(M_MAP + TAG, "changeZoom2 : " + zoom);
-        if (DebugConfig.isDebug()) {
-            CallerLogger.INSTANCE.d(M_MAP + TAG, Log.getStackTraceString(new Throwable()));
-        }
         getMap().changeZoom2(zoom);
     }
 
@@ -380,12 +378,10 @@ public class AMapViewWrapper implements IMogoMapView,
     }
 
     @ChainLog(
-            linkChainLog = CHAIN_LINK_LOG_HD_MAP,
-            linkCode = CHAIN_LINK_MAP,
-            endpoint = TracingConstants.Endpoint.PAD,
-            nodeAliasCode = CHAIN_ALIAS_CODE_HD_MAP_CALL,
-            paramIndexes = {0},
-            clientPkFileName = "sn"
+            linkChainLog = CHAIN_TYPE_HD_MAP,
+            linkCode = CHAIN_SOURCE_MAP,
+            nodeAliasCode = CHAIN_CODE_HD_MAP_CALL,
+            paramIndexes = {0}
     )
     @Override
     public void setRoamTrajectory(String trajectory) {
@@ -394,10 +390,18 @@ public class AMapViewWrapper implements IMogoMapView,
         }
     }
 
+    @ChainLog(
+            linkChainLog = CHAIN_TYPE_HD_MAP,
+            linkCode = CHAIN_SOURCE_MAP,
+            parentNodeAliasCode = CHAIN_CODE_ROMA_REQUEST_OK,
+            nodeAliasCode = CHAIN_CODE_ROMA_MODE_INVOKE,
+            paramIndexes = {0},
+            endPoint = false
+    )
     @Override
     public void setRomaMode(int mode) {
         if (checkAMapView()) {
-            mMapView.getMapAutoViewHelper().setRoamStyle(mode,1800, MapAutoApi.ROAM_SPEED_40);
+            mMapView.getMapAutoViewHelper().setRoamStyle(mode, 1800, MapAutoApi.ROAM_SPEED_40);
         }
     }
 
@@ -426,9 +430,6 @@ public class AMapViewWrapper implements IMogoMapView,
             CallerLogger.INSTANCE.e(M_MAP + TAG, "latLng = null or is illegal");
             return;
         }
-        if (DebugConfig.isDebug()) {
-            CallerLogger.INSTANCE.d(M_MAP + TAG, Log.getStackTraceString(new Throwable()));
-        }
         if (checkAMapView()) {
             mMapView.getMapAutoViewHelper().animateCamera(new LonLatPoint(latLng.lon, latLng.lat));
         }
@@ -475,9 +476,6 @@ public class AMapViewWrapper implements IMogoMapView,
 
     @Override
     public void showMyLocation(View view) {
-        if (DebugConfig.isDebug()) {
-            CallerLogger.INSTANCE.d(M_MAP + TAG, Log.getStackTraceString(new Throwable()));
-        }
         if (checkAMapView()) {
             MyLocationStyle style = mMapView.getMapAutoViewHelper().getMyLocationStyle();
             style.myLocationIcon(BitmapDescriptorFactory.INSTANCE.convertViewToBitmap(view));
@@ -726,12 +724,10 @@ public class AMapViewWrapper implements IMogoMapView,
 
 
     @ChainLog(
-            linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
-            linkCode = CHAIN_LINK_INIT,
-            endpoint = TracingConstants.Endpoint.PAD,
-            nodeAliasCode = CHAIN_ALIAS_CODE_INIT_ON_MAP_INIT,
-            paramIndexes = {-1},
-            clientPkFileName = "sn"
+            linkChainLog = CHAIN_TYPE_INIT_STATUS,
+            linkCode = CHAIN_SOURCE_INIT,
+            nodeAliasCode = CHAIN_CODE_INIT_ON_MAP_INIT,
+            paramIndexes = {-1}
     )
     @Override
     public void onMapInit() {
@@ -740,24 +736,20 @@ public class AMapViewWrapper implements IMogoMapView,
     }
 
     @ChainLog(
-            linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
-            linkCode = CHAIN_LINK_INIT,
-            endpoint = TracingConstants.Endpoint.PAD,
-            nodeAliasCode = CHAIN_ALIAS_CODE_INIT_ON_MAP_LOADED,
-            paramIndexes = {-1},
-            clientPkFileName = "sn"
+            linkChainLog = CHAIN_TYPE_INIT_STATUS,
+            linkCode = CHAIN_SOURCE_INIT,
+            nodeAliasCode = CHAIN_CODE_INIT_ON_MAP_LOADED,
+            paramIndexes = {-1}
     )
     @Override
     public void onMapLoaded() {
         CallerLogger.INSTANCE.i(M_MAP + TAG, "autoop--onMapLoaded: ");
         if (checkAMapView()) {
             CameraPosition cameraPosition = mMapView.getMapAutoViewHelper().getCameraPosition();
-            Trace.beginSection("timer.onCameraChangeFinish");
             MogoMapListenerHandler.Companion.getMogoMapListenerHandler().onMapChanged(ObjectUtils.fromAMap(cameraPosition.getTarget()),
                     cameraPosition.getZoom(),
                     cameraPosition.getTilt(),
                     cameraPosition.getBearing());
-            Trace.endSection();
             initMapView();
             initMyLocation();
             loadPreVehicleModel();
@@ -767,7 +759,6 @@ public class AMapViewWrapper implements IMogoMapView,
 //    private static final String ROMA_ROAD = "112.577698,26.82026482,112.5776649,26.82024463,112.5776315,26.82022433,112.5775976,26.82020375,112.5775631,26.8201828,112.5775278,26.8201614,112.5774918,26.82013967,112.5774553,26.82011768,112.5774184,26.82009541,112.5773801,26.82007238,112.577343,26.82005009,112.5773046,26.82002699,112.5772689,26.82000566,112.5772343,26.81998499,112.5771981,26.8199634,112.5771604,26.81994093,112.5771241,26.81991927,112.5770863,26.81989686,112.577048,26.81987432,112.5770092,26.81985169,112.5769702,26.81982908,112.5769311,26.8198067,112.5768912,26.81978399,112.5768525,26.81976202,112.5768148,26.81974082,112.5767765,26.81971934,112.5767375,26.8196976,112.5767005,26.81967709,112.5766627,26.81965632,112.5766243,26.8196354,112.5765873,26.81961534,112.5765514,26.81959614,112.5765094,26.81957391,112.5764739,26.81955537,112.5764377,26.81953663,112.5763962,26.8195154,112.5763611,26.81949759,112.5763253,26.81947942,112.5762886,26.81946081,112.5762538,26.81944299,112.5762181,26.81942459,112.5761771,26.81940327,112.5761425,26.81938516,112.5761026,26.81936424,112.5760665,26.81934525,112.5760283,26.81932496,112.5759929,26.81930612,112.5759553,26.81928594,112.5759164,26.819265,112.5758797,26.81924523,112.5758431,26.81922557,112.5758043,26.81920481,112.5757701,26.81918656,112.5757372,26.81916931,112.575705,26.81915323,112.5756723,26.8191394,112.5756388,26.81913008,112.5756042,26.81912741,112.5755689,26.81913241,112.5755345,26.81914523,112.575501,26.81916323,112.5754702,26.81918345,112.5754414,26.81920591,112.5754142,26.81923028,112.5753873,26.8192577,112.5753624,26.81928628,112.5753385,26.81931747,112.575318,26.81934811,112.5752981,26.81938112,112.575279,26.81941509,112.5752615,26.81944712,112.5752441,26.81947941,112.5752259,26.8195132,112.5752073,26.81954787,112.5751884,26.81958344,112.5751691,26.81961976,112.5751494,26.81965723,112.57513,26.81969415,112.575111,26.81973053,112.5750914,26.81976802,112.5750718,26.81980571,112.5750521,26.81984347,112.5750319,26.81988209,112.5750139,26.81991636,112.5749962,26.81995017,112.5749754,26.81998984,112.5749573,26.82002443,112.5749386,26.8200601,112.5749197,26.82009614,112.5749008,26.82013245,112.5748813,26.82016981,112.5748627,26.82020577,112.574843,26.82024356,112.5748242,26.82027988,112.5748048,26.8203173,112.5747853,26.82035503,112.5747657,26.82039302,112.5747457,26.82043198,112.5747264,26.82046932,112.5747067,26.82050756,112.5746869,26.82054576,112.5746677,26.82058291,112.5746479,26.82062126,112.5746291,26.82065783,112.5746089,26.82069715,112.5745902,26.82073333,112.5745732,26.82076629,112.5745548,26.82080203,112.5745377,26.82083496,112.5745212,26.82086682,112.574505,26.82089828,112.5744891,26.82092935,112.574473,26.82096083,112.5744574,26.82099114,112.5744427,26.82102038,112.5744341,26.82105102,112.5744217,26.82108217,112.5744034,26.82111193,112.5743842,26.821142,112.5743648,26.82117413,112.5743472,26.82120453,112.5743279,26.82123795,112.5743097,26.82127083,112.5742903,26.82130636,112.5742724,26.8213397,112.5742548,26.82137277,112.574237,26.8214064,112.5742188,26.82144091,112.5742005,26.82147546,112.5741813,26.82151155,112.5741619,26.8215485,112.5741421,26.82158628,112.574124,26.82162082,112.5741058,26.8216558,112.5740873,26.82169111,112.5740687,26.82172683,112.5740495,26.8217638,112.5740308,26.82179956,112.5740115,26.82183663,112.5739919,26.82187428,112.573972,26.82191258,112.5739519,26.82195149,112.5739332,26.82198747,112.5739153,26.82202211,112.5738944,26.82206251,112.5738756,26.82209882,112.5738567,26.8221355,112.5738378,26.82217255,112.5738182,26.82221085,112.5737995,26.82224751,112.5737803,26.82228527,112.5737607,26.82232415,112.5737419,26.82236124,112.5737225,26.82239931,112.5737029,26.82243731,112.5736827,26.82247603,112.5736634,26.82251246,112.5736438,26.82254928,112.5736243,26.82258572,112.5736043,26.82262308,112.5735852,26.82265864,112.5735657,26.82269511,112.5735457,26.82273244,112.5735268,26.82276772,112.5735077,26.82280347,112.5734861,26.82284394,112.5734658,26.822882,112.5734452,26.82292018,112.5734247,26.82295753,112.5734042,26.82299402,112.5733832,26.82303027,112.5733626,26.82306378,112.5733406,26.82309759,112.573319,26.82312874,112.5732941,26.82316277,112.5732689,26.82319562,112.5732434,26.82322829,112.5732177,26.82326103,112.573125,26.823276,112.5730926,26.82319509,112.5731186,26.82316135,112.5731418,26.82313049,112.5731671,26.82309585,112.5731906,26.82306251,112.5732133,26.82302916,112.5732356,26.82299504,112.5732575,26.82296012,112.5732792,26.8229244,112.5733004,26.82288868,112.5733224,26.82285045,112.5733415,26.82281652,112.5733631,26.82277759,112.5733823,26.82274233,112.5734012,26.8227074,112.5734232,26.82266644,112.5734429,26.82262949,112.5734628,26.82259213,112.5734828,26.82255438,112.573503,26.82251618,112.5735232,26.82247772,112.5735441,26.82243805,112.573564,26.82240019,112.5735849,26.82236028,112.5736054,26.82232125,112.5736254,26.82228313,112.5736465,26.82224299,112.5736666,26.82220471,112.5736877,26.82216437,112.5737079,26.8221259,112.5737285,26.8220863,112.5737493,26.82204643,112.5737701,26.82200633,112.5737916,26.82196499,112.5738122,26.82192543,112.5738339,26.82188365,112.5738547,26.82184377,112.5738767,26.82180167,112.5738956,26.82176558,112.5739167,26.82172515,112.5739391,26.82168239,112.5739605,26.82164148,112.573983,26.8215983,112.5740045,26.82155708,112.5740266,26.82151468,112.5740465,26.8214764,112.5740659,26.8214391,112.5740854,26.82140175,112.574105,26.82136438,112.5741274,26.8213217,112.5741469,26.82128434,112.5741666,26.82124703,112.5741861,26.82120977,112.5742058,26.82117251,112.5742277,26.82113096,112.574248,26.82109253,112.5742678,26.8210551,112.5742876,26.82101759,112.5743103,26.82097465,112.5743301,26.82093699,112.5743495,26.82090037,112.5743727,26.82085623,112.5743926,26.82081862,112.5744124,26.82078108,112.5744321,26.82074358,112.5744518,26.82070609,112.5744715,26.82066866,112.5744938,26.82062594,112.5745133,26.82058863,112.574535,26.82054716,112.5745549,26.82050899,112.5745741,26.82047199,112.5745933,26.82043511,112.5746145,26.82039418,112.574634,26.82035661,112.5746549,26.82031624,112.574676,26.82027535,112.5746968,26.82023518,112.5747177,26.82019483,112.5747373,26.82015724,112.5747573,26.82011956,112.5747776,26.82008238,112.5747981,26.82004564,112.5748193,26.82000863,112.5748421,26.81996979,112.5748629,26.81993507,112.5748842,26.81989978,112.574907,26.81986224,112.5749281,26.81982769,112.5749484,26.81979457,112.5749701,26.8197589,112.5749921,26.81972245,112.5750122,26.81968835,112.5750325,26.81965318,112.5750515,26.81961904,112.5750695,26.81958583,112.5750898,26.81954748,112.5751093,26.81951021,112.5751277,26.81947433,112.5751461,26.81943786,112.5751632,26.8194037,112.5751818,26.81936582,112.575199,26.81933074,112.5752154,26.81929703,112.575232,26.81926305,112.5752475,26.81923084,112.5752623,26.81920053,112.5752764,26.8191712,112.5752904,26.81914362,112.5753061,26.81911433,112.5753237,26.81908528,112.5753441,26.81905648,112.5753677,26.81902905,112.5753944,26.81900493,112.5754244,26.81898445,112.5754583,26.81896707,112.575493,26.81895367,112.5755294,26.81894349,112.575567,26.81893672,112.5756041,26.81893372,112.5756415,26.8189344,112.5756798,26.81893869,112.5757186,26.81894678,112.5757544,26.81895756,112.5757898,26.81897108,112.5758268,26.81898715,112.5758655,26.81900556,112.5759008,26.81902323,112.5759373,26.81904202,112.5759748,26.81906168,112.5760131,26.81908211,112.5760514,26.81910281,112.5760868,26.81912227,112.5761239,26.81914281,112.5761608,26.81916343,112.5761975,26.81918408,112.5762367,26.81920643,112.5762756,26.81922888,112.5763151,26.81925176,112.57635,26.81927208,112.5763891,26.81929497,112.5764295,26.81931871,112.5764661,26.81934025,112.5765068,26.81936437,112.5765425,26.81938563,112.5765836,26.81941011,112.5766186,26.81943106,112.5766557,26.81945345,112.5766919,26.81947536,112.5767284,26.81949747,112.576764,26.81951916,112.5768011,26.81954171,112.5768394,26.81956507,112.5768758,26.81958727,112.5769144,26.81961095,112.5769511,26.81963345,112.576989,26.81965674,112.5770281,26.81968076,112.5770662,26.81970418,112.5771043,26.81972764,112.5771414,26.81975049,112.5771808,26.81977472,112.5772192,26.81979831,112.5772577,26.81982191,112.5772952,26.81984484,112.577335,26.81986907,112.5773736,26.81989259,112.5774123,26.81991606,112.5774498,26.81993877,112.5774882,26.81996205,112.5775276,26.81998588,112.5775644,26.82000825,112.5776031,26.82003178,112.5776393,26.82005387,112.5776772,26.82007712,112.5777137,26.82009957,112.5777488,26.82012121,112.5777907,26.82014706,112.5778261,26.82016891,112.5778652,26.820193,112.577905,26.82021753,112.5779449,26.82024206,112.5779859,26.8202672,112.5780257,26.82029165,112.5780603,26.82031297,112.5780997,26.82033728,112.578138,26.82036083,112.5781768,26.82038473,112.5782161,26.82040883,112.5782537,26.82043183,112.5782895,26.82045365,112.5783251,26.82047532,112.5783596,26.82049637,112.5783979,26.82051971,112.5784329,26.82054099,112.5784705,26.82056384,112.5785066,26.82058588,112.57854,26.82060632,112.5785745,26.82062766,112.5786093,26.82064924,112.5786404,26.82066849,112.5786713,26.82068759,112.5787014,26.82070605,112.5787297,26.82072339,112.5787569,26.82074014,112.5787857,26.8207589,112.5788141,26.82077914,112.5788421,26.82080214,112.5788692,26.8208285,112.578893,26.82085669,112.578913,26.82088621,112.5789302,26.82091859,112.5789438,26.82095338,112.5789539,26.82098972,112.5789601,26.82102729,112.5789619,26.8210634,112.5789595,26.82110054,112.5789525,26.82113842,112.5789405,26.8211768,112.5789249,26.82121207,112.5789047,26.82124716,112.5788828,26.82127905,112.5788587,26.82131182,112.5788364,26.8213422,112.5788121,26.82137567,112.5787872,26.82140995,112.5787614,26.82144538,112.5787355,26.82148084,112.5787084,26.82151799,112.5786832,26.82155261,112.5786581,26.82158701,112.5786326,26.82162203,112.5786075,26.82165672,112.5785815,26.82169273,112.5785547,26.82172993,112.5785284,26.82176648,112.5785021,26.82180326,112.5784763,26.8218394,112.5784498,26.82187675,112.5784225,26.8219154,112.5783962,26.82195248,112.5783691,26.82199081,112.5783411,26.82203039,112.5783137,26.82206924,112.5782862,26.82210834,112.5782587,26.82214764,112.5782353,26.82218122,112.5782077,26.82222088,112.5781836,26.82225567,112.5781588,26.82229152,112.5781347,26.82232641,112.5781077,26.82236534,112.5780829,26.82240132,112.5780587,26.82243632,112.5780345,26.82247136,112.578011,26.82250546,112.5779827,26.82254669,112.5779586,26.82258199,112.5779345,26.82261734,112.5779112,26.82265173,112.5778864,26.82268825,112.577863,26.82272287,112.5778382,26.82275969,112.5778141,26.82279565,112.5777908,26.82283063,112.5777662,26.82286771,112.5777431,26.8229028,112.5777187,26.82294001,112.577695,26.82297621,112.5776713,26.8230124,112.5776476,26.82304855,112.5776247,26.82308364,112.5775972,26.82312593,112.5775744,26.82316101,112.5775477,26.82320226,112.5775237,26.82323937,112.5775004,26.82327543,112.5774737,26.82331663,112.5774504,26.82335271,112.5774237,26.82339398,112.5774004,26.82343015,112.5773771,26.82346637,112.5773538,26.82350264,112.5773311,26.82353795,112.5773045,26.82357962,112.5772805,26.82361727,112.5772579,26.82365292,112.5772305,26.82369605,112.5772038,26.82373828,112.5771804,26.82377537,112.5771576,26.82381151,112.5771335,26.8238499,112.57711,26.82388731,112.5770866,26.82392483,112.5770632,26.82396247,112.5770399,26.82400024,112.5770172,26.82403706,112.5769932,26.8240762,112.5769706,26.82411333,112.5769466,26.82415281,112.5769239,26.82419023,112.5769006,26.8242289,112.5768766,26.82426888,112.5768538,26.82430686,112.5768304,26.82434619,112.5768062,26.82438686,112.5767826,26.82442659,112.576759,26.8244664,112.5767362,26.82450513,112.576712,26.82454613,112.5766887,26.82458599,112.5766654,26.82462584,112.5766429,26.82466453,112.5766198,26.82470431,112.5765961,26.82474519,112.5765731,26.82478489,112.5765508,26.82482342,112.5765272,26.8248642,112.5765044,26.82490376,112.5764823,26.82494211,112.5764597,26.82498158,112.5764365,26.82502214,112.5764141,26.82506156,112.5763923,26.82509987,112.5763694,26.82514046,112.5763479,26.82517884,112.5763253,26.82521944,112.5763041,26.82525765,112.5762819,26.82529789,112.5762605,26.82533679,112.5762399,26.82537422,112.5762184,26.82541343,112.5761953,26.82545571,112.5761739,26.82549472,112.5761508,26.82553699,112.5761295,26.82557604,112.5761059,26.82561945,112.5760853,26.82565746,112.5760653,26.8256944,112.5760443,26.82573355,112.5760238,26.82577161,112.5760035,26.82580955,112.5759834,26.82584724,112.5759607,26.82588994,112.5759383,26.82593221,112.5759161,26.82597406,112.5758938,26.82601648,112.5758733,26.82605542,112.5758519,26.8260963,112.5758305,26.82613716,112.5758087,26.82617896,112.5757879,26.82621856,112.5757669,26.82625897,112.5757456,26.82630002,112.5757251,26.82633968,112.5757048,26.82637922,112.5756853,26.82641773,112.5756651,26.82645798,112.5756464,26.82649596,112.5756275,26.82653452,112.575609,26.82657262,112.5755908,26.82661047,112.5755725,26.82664893,112.575555,26.82668614,112.5755378,26.82672289,112.5755189,26.82676373,112.5755008,26.82680306,112.5754827,26.82684261,112.5754649,26.82688149,112.5754474,26.82691971,112.5754297,26.82695807,112.5754129,26.82699406,112.5753942,26.8270344,112.5753769,26.82707138,112.5753601,26.82710745,112.5753433,26.82714345,112.5753269,26.82717861,112.5753107,26.82721345,112.5752958,26.8272458,112.5752809,26.82727812,112.5752663,26.82730994,112.5752524,26.82734051,112.5752393,26.82736945,112.575226,26.82739794,112.5752118,26.82742821,112.5751971,26.82745922,112.5751817,26.82749174,112.5751666,26.8275242,112.5751515,26.8275565,112.5751352,26.82759177,112.5751203,26.82762466,112.5751043,26.8276599,112.5750881,26.82769574,112.5750729,26.82772944,112.5750574,26.82776339,112.5750421,26.82779694,112.5750261,26.82783198,112.5750105,26.82786635,112.5749952,26.82790045,112.5749799,26.82793441,112.5749647,26.82796847,112.5749503,26.82800031,112.5749367,26.82803037,112.5749241,26.82805848,112.5749101,26.82808862,112.5748948,26.8281212,112.574879,26.82815463,112.5748635,26.82818708,112.5748472,26.8282214,112.5748312,26.82825531,112.574814,26.82829177,112.5747983,26.82832525,112.5747814,26.82836176,112.5747645,26.82839855,112.574748,26.82843472,112.5747317,26.82847055,112.5747144,26.82850911,112.5746971,26.82854794,112.5746795,26.82858784,112.5746636,26.82862412,112.5746474,26.82866127,112.5746311,26.8286993,112.5746145,26.82873817,112.5745982,26.82877687,112.5745814,26.82881732,112.5745645,26.82885843,112.5745476,26.82890018,112.5745304,26.8289424,112.5745128,26.82898606,112.5744961,26.82902786,112.5744789,26.82907101,112.5744616,26.82911452,112.5744436,26.82915967,112.5744281,26.82919867,112.5744125,26.82923804,112.5743967,26.82927771,112.5743813,26.82931649,112.5743654,26.82935656,112.5743471,26.82940243,112.5743307,26.82944378,112.5743129,26.82948851,112.5742967,26.82952975,112.5742814,26.82956861,112.5742631,26.82961532,112.5742459,26.8296596,112.5742301,26.82970036,112.5742151,26.82973993,112.5742002,26.82977939,112.5741854,26.82981876,112.5741692,26.82986254,112.5741527,26.8299073,112.5741363,26.82995202,112.5741217,26.82999225,112.5741054,26.83003703,112.5740891,26.83008201,112.5740748,26.83012154,112.574061,26.8301602,112.5740467,26.83020022,112.5740318,26.83024179,112.5740173,26.83028262,112.5740027,26.83032378,112.5739884,26.83036406,112.5739736,26.83040576,112.5739583,26.83044889,112.5739435,26.83049099,112.5739291,26.83053203,112.5739143,26.83057443,112.5738996,26.83061691,112.573885,26.83065939,112.57387,26.83070302,112.5738554,26.83074539,112.5738409,26.83078771,112.5738269,26.8308288,112.5738121,26.83087228,112.5737977,26.83091457,112.5737834,26.83095689,112.5737692,26.83099924,112.5737555,26.83104042,112.5737416,26.83108282,112.5737276,26.83112527,112.5737134,26.83116903,112.5736999,26.83121044,112.5736861,26.83125311,112.5736724,26.83129583,112.5736587,26.83133862,112.5736452,26.83138146,112.5736317,26.83142437,112.5736183,26.83146737,112.5736045,26.83151168,112.5735913,26.83155482,112.573578,26.83159803,112.5735648,26.83164125,112.5735517,26.83168446,112.573539,26.83172641,112.5735257,26.83177076,112.5735132,26.83181264,112.5735001,26.83185701,112.5734872,26.83190019,112.5734744,26.83194343,112.5734616,26.83198674,112.5734487,26.83203012,112.573436,26.8320736,112.5734232,26.83211711,112.5734109,26.83215929,112.573398,26.83220391,112.5733859,26.832246,112.573373,26.83229048,112.5733606,26.83233362,112.5733483,26.83237662,112.573336,26.83241948,112.5733237,26.83246218,112.5733116,26.83250468,112.5732998,26.83254575,112.5732879,26.83258779,112.5732757,26.83263079,112.5732641,26.8326724,112.5732526,26.83271382,112.5732416,26.83275385,112.5732301,26.83279609,112.573219,26.83283702,112.5732079,26.83287792,112.5731968,26.83291878,112.573186,26.83295848,112.5731747,26.83300056,112.5731637,26.8330415,112.5731527,26.83308249,112.5731421,26.83312245,112.573131,26.83316484,112.5731204,26.8332061,112.5731098,26.83324731,112.5730979,26.83329449,112.5730876,26.83333567,112.5730774,26.83337685,112.5730674,26.83341796,112.5730575,26.83345902,112.5730477,26.83350006,112.5730378,26.83354109,112.5730281,26.833581,112.5730183,26.83362208,112.5730082,26.83366432,112.5729983,26.83370531,112.5729885,26.83374624,112.5729785,26.83378717,112.5729685,26.8338281,112.5729587,26.83386787,112.5729483,26.83391,112.5729369,26.83395684,112.572927,26.83399787,112.5729158,26.83404479,112.5729065,26.83408467,112.5728968,26.83412688,112.5728875,26.83416797,112.5728781,26.83420907,112.5728687,26.83425023,112.5728593,26.83429146,112.5728499,26.83433277,112.5728405,26.83437417,112.5728311,26.83441559,112.5728217,26.83445712,112.5728109,26.83450465,112.5728015,26.83454636,112.5727922,26.83458807,112.572783,26.83462974,112.572774,26.83467145,112.5727651,26.83471318,112.5727564,26.83475493,112.5727478,26.83479672,112.5727393,26.8348385,112.5727311,26.83487906,112.5727225,26.834922,112.5727129,26.83496964,112.5727046,26.83501131,112.5726952,26.83505885,112.5726858,26.83510637,112.5726778,26.83514682,112.5726694,26.83518971,112.5726604,26.83523626,112.572651,26.83528532,112.5726431,26.83532732,112.5726343,26.83537423,112.5726263,26.83541764,112.5726186,26.83545991,112.5726109,26.83550227,112.5726032,26.83554476,112.5725955,26.83558734,112.5725881,26.83562882,112.5725802,26.83567289,112.5725726,26.83571591,112.5725653,26.83575785,112.5725575,26.83580247,112.57255,26.83584605,112.5725425,26.83588981,112.5725352,26.83593248,112.5725275,26.83597781,112.5725202,26.83602077,112.5725125,26.83606641,112.5725052,26.83610966,112.5724976,26.83615563,112.5724904,26.83619918,112.5724828,26.83624548,112.5724754,26.8362907,112.572468,26.83633612,112.5724609,26.83638041,112.5724534,26.8364275,112.5724462,26.83647349,112.5724391,26.83651971,112.5724323,26.83656468,112.5724255,26.83661082,112.5724187,26.83665804,112.5724124,26.83670237,112.5724058,26.83674911,112.5723994,26.83679439,112.5723933,26.8368383,112.5723872,26.83688345,112.5723811,26.83692856,112.572375,26.83697362,112.572369,26.83701871,112.5723627,26.8370651,112.5723568,26.83710893,112.5723507,26.83715406,112.5723446,26.83719921,112.5723385,26.83724439,112.5723325,26.83728967,112.5723264,26.83733635,112.5723206,26.8373818,112.5723149,26.83742737,112.5723092,26.83747304,112.5723036,26.83751881,112.5722983,26.83756338,112.5722929,26.8376094,112.5722875,26.83765684,112.5722823,26.83770308,112.5722773,26.83774945,112.5722725,26.83779601,112.5722678,26.83784277,112.5722633,26.83788973,112.5722588,26.83793682,112.5722543,26.83798399,112.5722497,26.83803128,112.5722451,26.83807868,112.5722402,26.83812616,112.5722352,26.83817373,112.5722301,26.8382214,112.5722251,26.83826772,112.5722199,26.83831666,112.572215,26.83836403,112.5722103,26.83841106,112.5722058,26.83845773,112.5722014,26.83850393,112.5721972,26.83854851,112.5721929,26.83859432,112.5721884,26.83864135,112.572184,26.83868696,112.5721797,26.8387312,112.5721753,26.83877669,112.5721707,26.83882212,112.5721662,26.83886751,112.5721616,26.83891288,112.5721568,26.83895952,112.5721522,26.83900354,112.5721474,26.83905014,112.5721427,26.83909412,112.572138,26.83913936,112.5721333,26.83918457,112.5721286,26.83922975,112.5721238,26.83927622,112.5721192,26.83932139,112.5721145,26.83936654,112.5721098,26.83941167,112.5721051,26.83945547,112.5721002,26.83950183,112.5720954,26.83954687,112.5720907,26.83959058,112.5720858,26.83963502,112.5720807,26.83968067,112.5720758,26.83972506,112.572071,26.83976819,112.5720661,26.83981385,112.5720613,26.83985821,112.5720565,26.83990258,112.5720519,26.83994566,112.5720472,26.83998988,112.5720423,26.84003533,112.5720376,26.84007955,112.5720328,26.84012386,112.5720282,26.840167,112.5720233,26.8402128,112.5720184,26.84025612,112.5720131,26.84030211,112.5720077,26.84034695,112.5720023,26.84039055,112.5719966,26.84043554,112.5719906,26.8404819,112.5719847,26.84052699,112.5719789,26.8405721,112.5719732,26.84061592,112.5719672,26.84066228,112.5719614,26.84070739,112.5719557,26.84075117,112.5719497,26.84079748,112.5719438,26.84084247,112.5719378,26.84088749,112.5719317,26.84093258,112.5719255,26.8409777,112.5719194,26.84102155,112.5719129,26.84106808,112.5719066,26.84111343,112.5719001,26.84115892,112.5718937,26.84120458,112.5718873,26.84124916,112.5718806,26.84129651,112.571874,26.84134262,112.5718675,26.84138874,112.5718608,26.84143489,112.5718543,26.84147982,112.5718473,26.84152753,112.5718406,26.84157434,112.5718338,26.84162116,112.571827,26.84166798,112.5718201,26.84171482,112.5718132,26.84176168,112.5718062,26.84180853,112.571799,26.84185535,112.5717918,26.84190218,112.5717847,26.84194764,112.5717774,26.84199439,112.57177,26.84204102,112.5717624,26.84208882,112.5717551,26.842135,112.571748,26.84218082,112.571741,26.84222489,112.5717337,26.8422711,112.5717265,26.84231576,112.5717193,26.84236021,112.5717122,26.84240319,112.5717047,26.84244857,112.5716978,26.84249013,112.5716902,26.84253673,112.571683,26.84258083,112.5716761,26.8426237,112.5716691,26.84266786,112.5716618,26.84271345,112.5716548,26.84275665,112.5716475,26.84280248,112.5716403,26.8428471,112.571633,26.84289176,112.5716258,26.84293515,112.5716182,26.8429798,112.5716103,26.84302571,112.5716025,26.84307036,112.5715949,26.84311377,112.5715869,26.84315974,112.5715793,26.84320316,112.5715712,26.84324916,112.5715633,26.84329394,112.5715553,26.84333875,112.5715476,26.84338234,112.5715393,26.84342858,112.5715315,26.84347232,112.5715233,26.84351873,112.5715153,26.84356395,112.5715074,26.84360923,112.5714995,26.84365337,112.5714912,26.8437002,112.5714831,26.84374579,112.571475,26.84379143,112.5714669,26.84383711,112.5714587,26.8438828,112.5714505,26.84392853,112.5714423,26.84397429,112.5714343,26.84401877,112.5714258,26.8440659,112.5714176,26.8441118,112.5714093,26.84415776,112.5714009,26.84420378,112.5713925,26.84424984,112.5713842,26.84429593,112.5713758,26.84434205,112.5713676,26.8443869,112.571359,26.8444344,112.5713509,26.8444793,112.5713422,26.84452688,112.5713338,26.84457314,112.5713253,26.84461935,112.571317,26.84466415,112.5713082,26.84471147,112.5712998,26.84475603,112.5712908,26.8448031,112.5712818,26.84484878,112.5712726,26.84489446,112.5712634,26.84493882,112.5712539,26.84498451,112.571244,26.84503151,112.5712344,26.84507722,112.5712247,26.84512285,112.571215,26.84516837,112.5712056,26.84521246,112.5711957,26.84525888,112.5711865,26.84530236,112.5711768,26.84534804,112.5711673,26.84539214,112.5711581,26.84543471,112.5711487,26.84547826,112.571139,26.84552282,112.5711298,26.84556473,112.5711205,26.84560765,112.5711094,26.84565769,112.5711001,26.84569896,112.5710906,26.84574134,112.5710807,26.84578481,112.5710712,26.845827,112.5710616,26.84586907,112.5710521,26.84591106,112.5710431,26.84595172,112.5710323,26.84600064,112.5710232,26.84604221,112.5710128,26.84608957,112.5710037,26.84613087,112.5709946,26.84617214,112.5709854,26.8462134,112.5709763,26.84625465,112.5709672,26.84629582,112.570958,26.84633685,112.5709476,26.84638355,112.5709371,26.84642991,112.5709267,26.84647585,112.5709174,26.84651581,112.5709081,26.8465556,112.5708976,26.84659976,112.5708866,26.84664595,112.5708764,26.84668976,112.5708658,26.84673575,112.5708558,26.8467794,112.5708455,26.84682522,112.570836,26.84686882,112.570826,26.84691518,112.5708163,26.84696026,112.5708066,26.84700418,112.5707964,26.84705038,112.5707865,26.84709444,112.5707758,26.84714031,112.5707649,26.84718482,112.5707539,26.84722957,112.5707432,26.84727344,112.5707332,26.84731397,112.5707221,26.84735914,112.5707124,26.84739878,112.5707014,26.84744421,112.5706908,26.84748863,112.5706798,26.84753517,112.5706693,26.84757924,112.5706585,26.84762413,112.5706477,26.84766855,112.5706365,26.8477134,112.5706258,26.84775556,112.5706145,26.8477995,112.5706039,26.84784073,112.5705931,26.84788232,112.5705824,26.84792412,112.5705709,26.84796921,112.5705607,26.84800877,112.5705505,26.84804796,112.5705404,26.84808688,112.5705302,26.84812575,112.5705201,26.84816464,112.5705102,26.8482027,112.5704998,26.84824295,112.5704882,26.84828748,112.5704779,26.84832742,112.5704675,26.84836772,112.5704572,26.84840838,112.5704468,26.8484494,112.5704366,26.84848975,112.5704257,26.84853252,112.5704151,26.84857458,112.5704046,26.84861591,112.5703934,26.84865968,112.5703825,26.84870272,112.5703715,26.84874608,112.5703607,26.84878861,112.5703493,26.84883365,112.5703381,26.84887792,112.5703271,26.84892137,112.5703159,26.84896625,112.5703043,26.84901253,112.5702932,26.84905668,112.5702818,26.84910205,112.5702699,26.84914862,112.5702583,26.84919407,112.570248,26.84923387,112.5702366,26.84927827,112.5702249,26.84932388,112.5702129,26.84937066,112.5702026,26.84941056,112.570191,26.84945605,112.5701797,26.84950019,112.5701679,26.8495464,112.5701565,26.84959133,112.570145,26.84963618,112.570135,26.84967543,112.5701235,26.84972039,112.5701119,26.84976556,112.5701018,26.84980523,112.5700904,26.8498496,112.5700788,26.84989509,112.5700673,26.84994037,112.5700558,26.84998543,112.5700441,26.85003142,112.5700328,26.85007603,112.5700216,26.85012033,112.5700109,26.85016313,112.5699998,26.85020753,112.5699894,26.85024901,112.5699787,26.85029197,112.5699684,26.85033356,112.5699584,26.85037394,112.5699483,26.85041524,112.5699381,26.85045745,112.5699282,26.85049851,112.5699184,26.85053943,112.5699088,26.8505802,112.5698993,26.85062075,112.5698899,26.85066102,112.5698808,26.85070076,112.5698709,26.8507441,112.5698615,26.85078546,112.5698527,26.85082356,112.5698434,26.85086429,112.5698344,26.85090363,112.5698259,26.85094065,112.5698172,26.85097788,112.5698084,26.85101497,112.5698,26.85105005,112.5697919,26.85108314,112.5697842,26.8511138,112.5697767,26.85114401,112.5697686,26.85117697,112.5697602,26.85121048,112.5697515,26.85124505,112.5697425,26.85128118,112.5697337,26.8513163,112.5697242,26.85135425,112.5697152,26.8513906,112.5697064,26.85142572,112.5696974,26.85146147,112.5696879,26.85149941,112.5696783,26.85153659,112.5696681,26.85157572,112.5696578,26.85161485,112.5696472,26.8516542,112.5696371,26.85169159,112.5696266,26.85172999,112.5696155,26.85177033,112.5696046,26.85181023,112.5695929,26.85185299,112.5695823,26.85189162,112.5695719,26.85193022,112.569561,26.85197066,112.5695497,26.85201321,112.5695382,26.85205596,112.5695279,26.85209482,112.5695174,26.85213436,112.5695067,26.85217449,112.5694959,26.85221516,112.569485,26.85225633,112.5694743,26.85229688,112.5694633,26.85233886,112.5694524,26.85238113,112.5694413,26.85242466,112.5694308,26.8524661,112.5694198,26.85250956,112.5694092,26.85255178,112.5693988,26.85259279,112.569388,26.85263469,112.5693769,26.85267757,112.569366,26.8527194,112.5693554,26.85276025,112.5693443,26.85280333,112.5693334,26.85284558,112.5693225,26.85288805,112.5693117,26.85292966,112.5693002,26.85297363,112.5692891,26.85301569,112.5692777,26.85305902,112.569266,26.85310356,112.5692546,26.85314714,112.5692431,26.85319091,112.5692317,26.85323497,112.5692202,26.85327933,112.5692087,26.85332392,112.5691972,26.85336863,112.5691858,26.85341325,112.5691749,26.85345641,112.5691636,26.85350087,112.5691531,26.85354275,112.569143,26.85358335,112.5691331,26.85362307,112.5691222,26.85366725,112.5691124,26.85370644,112.5691027,26.85374561,112.569093,26.85378487,112.5690831,26.85382439,112.5690719,26.85386919,112.5690621,26.85390839,112.5690516,26.85395007,112.5690412,26.85399127,112.5690308,26.85403196,112.5690199,26.85407429,112.5690085,26.85411835,112.5689974,26.85416091,112.5689856,26.85420639,112.5689743,26.8542504,112.5689637,26.85429169,112.5689535,26.85433115,112.5689427,26.85437326,112.5689326,26.85441331,112.568922,26.8544548,112.568911,26.8544977,112.5689005,26.85453841,112.5688894,26.8545817,112.568879,26.85462277,112.5688678,26.85466638,112.5688567,26.85470901,112.5688457,26.8547519,112.5688345,26.85479502,112.5688235,26.8548371,112.5688122,26.85488059,112.5688006,26.85492545,112.5687893,26.85496911,112.5687782,26.85501151,112.5687664,26.85505634,112.568755,26.85509972,112.5687435,26.85514281,112.5687322,26.85518554,112.5687208,26.85522789,112.5687097,26.85526979,112.5686988,26.85531119,112.5686882,26.85535218,112.5686777,26.85539307,112.5686676,26.85543275,112.5686555,26.85548062,112.5686452,26.8555216,112.5686348,26.85556272,112.5686242,26.85560399,112.5686136,26.85564545,112.5686028,26.85568712,112.568592,26.855729,112.5685811,26.85577112,112.5685701,26.85581347,112.5685591,26.85585607,112.5685481,26.85589891,112.568537,26.85594198,112.5685261,26.85598526,112.5685154,26.85602751,112.568504,26.85607247,112.568493,26.85611635,112.5684822,26.85615918,112.5684712,26.85620345,112.5684604,26.85624665,112.5684487,26.85629386,112.568438,26.85633727,112.5684268,26.85638327,112.568416,26.85642808,112.5684053,26.85647302,112.5683947,26.85651807,112.5683842,26.85656321,112.5683738,26.85660839,112.5683637,26.85665351,112.568354,26.8566972,112.5683439,26.85674318,112.5683342,26.85678752,112.5683248,26.85683053,112.5683149,26.85687604,112.5683053,26.85692029,112.5682957,26.85696459,112.5682862,26.85700893,112.5682767,26.85705329,112.5682672,26.85709769,112.5682579,26.85714209,112.5682488,26.8571852,112.5682394,26.85723081,112.5682305,26.8572739,112.5682215,26.85731824,112.5682123,26.85736381,112.5682036,26.85740683,112.5681948,26.85745103,112.5681859,26.85749648,112.5681773,26.85754054,112.568169,26.85758313,112.5681604,26.8576279,112.568152,26.85767111,112.5681425,26.85772013,112.5681341,26.85776279,112.5681257,26.85780527,112.5681174,26.85784767,112.5681094,26.85788874,112.5681013,26.85793112,112.5680933,26.85797353,112.5680849,26.8580172,112.5680771,26.85805841,112.5680686,26.85810201,112.5680605,26.8581444,112.5680523,26.85818672,112.5680441,26.85822898,112.5680359,26.85827112,112.5680278,26.85831313,112.5680202,26.85835379,112.5680122,26.85839662,112.5680046,26.85843805,112.5679972,26.85847932,112.5679899,26.85852052,112.5679818,26.85856636,112.5679745,26.85860858,112.5679665,26.85865545,112.5679588,26.8587011,112.567951,26.85874787,112.5679442,26.85878995,112.5679376,26.85883087,112.5679301,26.85887767,112.5679228,26.85892331,112.5679156,26.85897016,112.5679081,26.85901824,112.5679019,26.85905934,112.5678958,26.85910045,112.5678899,26.85914155,112.5678832,26.85918852,112.5678766,26.85923428,112.5678697,26.85928233,112.5678631,26.85932918,112.5678564,26.859376,112.5678505,26.85941691,112.5678441,26.85946248,112.5678372,26.85951028,112.5678314,26.85955104,112.5678251,26.85959643,112.5678187,26.85964302,112.5678123,26.8596896,112.5678067,26.85973154,112.5678013,26.85977234,112.5677951,26.85981906,112.5677898,26.85986003,112.5677839,26.85990581,112.5677779,26.85995296,112.5677725,26.85999563,112.5677668,26.86004212,112.5677617,26.86008411,112.5677566,26.86012636,112.5677515,26.86017008,112.5677466,26.86021286,112.5677419,26.86025591,112.5677373,26.86029923,112.5677327,26.86034278,112.5677282,26.86038529,112.5677236,26.86043051,112.5677192,26.86047342,112.5677146,26.86051896,112.5677102,26.86056344,112.5677058,26.86060811,112.5677013,26.86065295,112.5676968,26.86069794,112.5676924,26.86074306,112.5676879,26.86078835,112.5676836,26.8608324,112.5676792,26.86087911,112.567675,26.86092323,112.5676707,26.86096996,112.5676667,26.86101413,112.5676625,26.86106091,112.5676586,26.86110507,112.5676547,26.86115052,112.5676509,26.86119722,112.5676471,26.86124256,112.5676436,26.86128659,112.5676401,26.86133193,112.5676365,26.86137856,112.567633,26.86142383,112.5676298,26.86146768,112.5676264,26.86151389,112.5676232,26.86155733,112.5676199,26.86160315,112.5676169,26.86164637,112.5676139,26.86169085,112.567611,26.8617353,112.5676082,26.86177972,112.5676055,26.8618241,112.567603,26.86186844,112.5676005,26.86191278,112.5675981,26.86195711,112.5675956,26.86200143,112.5675931,26.86204698,112.5675907,26.86209002,112.5675883,26.86213433,112.5675859,26.86217863,112.5675836,26.86222282,112.5675814,26.86226677,112.5675792,26.86231036,112.5675767,26.86236083,112.5675747,26.86240343,112.5675729,26.86244457,112.5675711,26.86248692,112.5675695,26.8625294,112.567568,26.8625734,112.5675665,26.86261653,112.5675649,26.86266005,112.5675634,26.86270397,112.5675619,26.86274699,112.5675604,26.8627929,112.5675589,26.86283793,112.5675573,26.86288327,112.5675557,26.86292896,112.5675542,26.86297495,112.5675527,26.86302126,112.5675513,26.8630665,112.5675498,26.86311466,112.5675484,26.86316171,112.567547,26.86320891,112.5675455,26.86325623,112.5675442,26.86330222,112.567543,26.86335091,112.567542,26.86339822,112.5675411,26.86344545,112.5675403,26.86349126,112.5675397,26.86353966,112.5675393,26.86358666,112.5675392,26.86363231,112.5675391,26.86368061,112.5675392,26.86372751,112.5675393,26.86377292,112.5675394,26.86381943,112.5675396,26.86386562,112.5675399,26.86391154,112.5675403,26.86395865,112.5675408,26.86400441,112.5675413,26.86405016,112.5675417,26.8640946,112.5675422,26.86414172,112.5675425,26.86418629,112.5675429,26.86423223,112.5675434,26.86427959,112.5675438,26.86432449,112.5675443,26.86437088,112.567545,26.86441879,112.5675456,26.86446553,112.5675463,26.86451242,112.567547,26.86455813,112.5675478,26.86460532,112.5675487,26.86465255,112.5675497,26.86469973,112.5675508,26.86474818,112.5675518,26.8647952,112.5675528,26.86484079,112.5675538,26.86488894,112.5675547,26.86493564,112.5675556,26.8649809,112.5675565,26.86502875,112.5675575,26.86507392,112.5675586,26.86512044,112.5675598,26.86516698,112.5675611,26.86521358,112.5675624,26.86526024,112.5675639,26.8653083,112.5675654,26.86535509,112.5675669,26.86540063,112.5675684,26.86544893,112.5675698,26.86549465,112.5675713,26.86554177,112.5675728,26.86558895,112.5675744,26.86563619,112.567576,26.86568345,112.5675777,26.86573073,112.5675794,26.86577797,112.5675811,26.86582519,112.5675828,26.86587235,112.5675845,26.86591946,112.5675862,26.86596643,112.5675879,26.86601314,112.5675896,26.86605953,112.5675914,26.86610556,112.5675931,26.8661511,112.5675948,26.86619611,112.5675965,26.86624066,112.5675981,26.86628506,112.5675997,26.86632938,112.5676012,26.8663736,112.5676026,26.86641774,112.567604,26.86646184,112.5676053,26.86650591,112.5676066,26.86654994,112.567608,26.86659387,112.5676093,26.86663766,112.5676107,26.86668755,112.5676122,26.86673861,112.5676135,26.86678214,112.5676148,26.86682564,112.5676161,26.86686787,112.5676175,26.86691253,112.5676188,26.86695465,112.5676203,26.86699922,112.5676217,26.86704242,112.5676234,26.86709151,112.5676248,26.86713429,112.5676263,26.867177,112.5676277,26.86721962,112.5676292,26.86726217,112.5676306,26.86730467,112.5676321,26.86734711,112.5676336,26.8673895,112.5676351,26.86743181,112.5676366,26.8674741,112.5676382,26.8675163,112.5676398,26.86755835,112.5676415,26.86760491,112.5676433,26.86765356,112.567645,26.86769974,112.5676466,26.86774824,112.5676482,26.86779427,112.5676499,26.86784246,112.5676513,26.86788327,112.5676529,26.86792937,112.5676544,26.86797508,112.567656,26.86801958,112.5676575,26.86806627,112.5676588,26.86811174,112.56766,26.86815602,112.5676612,26.86820255,112.5676624,26.86824785,112.5676636,26.86829295,112.5676648,26.86833755,112.567666,26.86838151,112.5676672,26.86842482,112.5676684,26.8684664,112.5676697,26.86850838,112.5676711,26.86855089,112.5676725,26.86859187,112.567674,26.86863133,112.5676758,26.86867703,112.5676775,26.8687205,112.5676792,26.86876492,112.567681,26.86881031,112.5676825,26.86884977,112.5676843,26.86889408,112.567686,26.86893806,112.5676878,26.86898149,112.5676896,26.86902318,112.5676916,26.86906601,112.5676934,26.8691061,112.5676951,26.86914758,112.5676967,26.86918727,112.5676983,26.86922862,112.5676999,26.86926787,112.5677015,26.86930793,112.5677032,26.86934797,112.5677049,26.86938941,112.5677064,26.86942616,112.5677079,26.86946374,112.5677094,26.86950196,112.5677106,26.86954073,112.5677116,26.86957671,112.5677125,26.86961395,112.5677133,26.86965285,112.5677139,26.86968931,112.5677145,26.86972855,112.5677152,26.8697684,112.5677158,26.86980514,112.5677164,26.86984473,112.5677172,26.8698842,112.567718,26.86992669,112.5677189,26.86996511,112.5677198,26.8700034,112.5677211,26.87004334,112.5677225,26.87008406,112.5677242,26.87012649,112.567726,26.8701677,112.5677276,26.87020653,112.5677294,26.87024957,112.5677313,26.87029304,112.5677331,26.8703369,112.5677348,26.87038102,112.5677365,26.87042525,112.567738,26.87046473,112.5677394,26.8705044,112.5677409,26.8705492,112.5677422,26.87058911,112.5677437,26.87063399,112.5677452,26.87067786,112.5677468,26.87072362,112.5677482,26.87076329,112.5677498,26.87080678,112.5677515,26.87085218,112.5677531,26.87089667,112.5677545,26.87093638,112.5677562,26.87098112,112.5677578,26.87102582,112.5677592,26.87107049,112.5677606,26.87111427,112.567762,26.87115923,112.5677631,26.87120044,112.5677642,26.87123993,112.5677654,26.87128176,112.5677665,26.87132284,112.5677676,26.8713641,112.5677689,26.87140948,112.5677702,26.87145066,112.5677716,26.87149177,112.5677732,26.87153386,112.5677748,26.87157488,112.5677765,26.87161593,112.5677786,26.8716622,112.5677808,26.87170338,112.5677835,26.87174867,112.5677865,26.87179597,112.5677896,26.87184229,112.5677925,26.87188359,112.5677954,26.87192509,112.5677982,26.8719657,112.5678013,26.87200843,112.5678045,26.87205014,112.5678077,26.87209078,112.5678113,26.87213258,112.567815,26.87217562,112.5678187,26.8722168,112.5678227,26.87225928,112.5678271,26.8723031,112.5678317,26.87234609,112.5678365,26.87238934,112.5678416,26.87243287,112.5678467,26.87247555,112.5678524,26.87252062,112.567858,26.87256366,112.5678641,26.87260796,112.5678706,26.87265354,112.5678773,26.87269815,112.5678839,26.8727407,112.5678915,26.87278791,112.567899,26.87283305,112.5679065,26.8728772,112.5679145,26.87292261,112.5679226,26.87296804,112.567931,26.87301448,112.5679391,26.87305842,112.5679478,26.87310415,112.5679564,26.87314812,112.5679649,26.87319042,112.5679736,26.87323363,112.5679826,26.87327784,112.5679916,26.87332101,112.5680006,26.87336323,112.5680102,26.87340774,112.5680196,26.87345008,112.5680296,26.8734945,112.5680396,26.87353764,112.5680496,26.87357952,112.5680603,26.87362338,112.5680708,26.87366498,112.5680817,26.87370763,112.5680931,26.87375136,112.5681043,26.87379404,112.5681154,26.87383572,112.5681271,26.87387854,112.5681393,26.87392248,112.5681511,26.87396431,112.5681637,26.87400834,112.5681759,26.87405007,112.5681886,26.8740926,112.5682013,26.87413495,112.5682144,26.87417813,112.5682272,26.87421989,112.56824,26.87426146,112.5682525,26.87430187,112.5682659,26.87434423,112.5682791,26.87438543,112.5682921,26.87442549,112.5683057,26.87446646,112.56832,26.87450832,112.568334,26.87454804,112.5683486,26.87458865,112.568364,26.87463007,112.5683791,26.87467028,112.5683941,26.87470935,112.56841,26.87475022,112.5684256,26.87478982,112.5684413,26.87482925,112.5684568,26.87486759,112.5684732,26.87490781,112.568489,26.87494607,112.5685057,26.87498631,112.5685218,26.87502462,112.5685388,26.87506496,112.5685556,26.87510438,112.5685721,26.87514287,112.5685892,26.8751824,112.5686068,26.87522304,112.568624,26.87526283,112.568641,26.87530174,112.5686592,26.87534279,112.568677,26.87538192,112.5686957,26.87542207,112.5687154,26.87546328,112.5687351,26.87550355,112.568755,26.87554395,112.5687746,26.87558345,112.5687955,26.87562508,112.5688159,26.87566582,112.5688355,26.87570463,112.5688567,26.87574661,112.568878,26.87578862,112.5688985,26.87582857,112.5689196,26.87586951,112.568941,26.87591038,112.5689627,26.87595119,112.5689853,26.87599293,112.569007,26.8760326,112.5690296,26.87607324,112.56905,26.8761098,112.5690701,26.87614531,112.5690904,26.87618078,112.5691108,26.87621621,112.5691343,26.87625667,112.5691573,26.87629595,112.5691788,26.87633201,112.5692021,26.87637086,112.5692267,26.87641147,112.5692478,26.87644601,112.5692713,26.87648445,112.5692954,26.87652374,112.5693195,26.87656287,112.5693444,26.87660277,112.5693688,26.87664153,112.5693928,26.87667913,112.5694177,26.8767176,112.5694428,26.87675601,112.5694681,26.87679436,112.5694934,26.8768325,112.5695192,26.87687128,112.5695444,26.87690883,112.5695692,26.87694517,112.5695956,26.87698314,112.5696213,26.8770199,112.5696464,26.87705539,112.569672,26.87709121,112.5696972,26.87712641,112.569723,26.87716213,112.5697476,26.8771959,112.5697728,26.87723028,112.5697986,26.87726528,112.5698239,26.8772992,112.5698491,26.87733279,112.5698735,26.87736502,112.5698982,26.87739742,112.5699227,26.87742931,112.5699511,26.87746567,112.5699759,26.87749705,112.5700034,26.87753144,112.5700292,26.87756355,112.5700572,26.87759807,112.5700836,26.87763027,112.5701094,26.87766161,112.5701346,26.87769192,112.5701602,26.87772271,112.5701894,26.87775754,112.5702175,26.8777908,112.5702444,26.8778225,112.5702724,26.87785521,112.570299,26.87788639,112.5703262,26.87791827,112.5703535,26.87795024,112.5703812,26.87798232,112.570409,26.87801452,112.5704378,26.87804762,112.5704656,26.87807942,112.5704943,26.87811207,112.5705239,26.87814573,112.57055,26.87817517,112.5705795,26.87820838,112.5706086,26.87824094,112.5706386,26.87827435,112.570666,26.87830487,112.5706921,26.87833411,112.5707197,26.87836502,112.5707467,26.8783954,112.570773,26.87842527,112.5708042,26.87846069,112.5708307,26.87849089,112.5708578,26.87852192,112.5708848,26.8785529,112.570912,26.87858398,112.5709392,26.87861513,112.5709665,26.87864642,112.5709939,26.87867787,112.5710219,26.8787103,112.5710486,26.87874138,112.5710768,26.87877439,112.5711043,26.87880694,112.571132,26.87883986,112.5711591,26.87887224,112.5711876,26.87890658,112.5712147,26.87893953,112.5712425,26.87897356,112.5712712,26.87900876,112.5712984,26.87904251,112.5713269,26.87907826,112.5713541,26.8791125,112.5713825,26.87914884,112.57141,26.87918475,112.5714367,26.8792201,112.571464,26.87925676,112.5714918,26.87929472,112.5715181,26.87933117,112.5715449,26.87936889,112.5715714,26.87940687,112.5715983,26.8794462,112.5716211,26.87948,112.5716464,26.87951792,112.5716723,26.87955689,112.5716984,26.87959697,112.5717229,26.87963516,112.5717477,26.87967437,112.5717729,26.87971472,112.5717972,26.87975423,112.5718185,26.8797889,112.5718396,26.87982372,112.5718608,26.87985863,112.5718819,26.87989362,112.571903,26.87992869,112.5719239,26.87996384,112.5719447,26.87999908,112.5719653,26.88003445,112.5719887,26.88007503,112.5720089,26.88011061,112.572029,26.88014626,112.5720489,26.88018204,112.5720709,26.88022205,112.5720934,26.88026317,112.5721136,26.8803002,112.572136,26.88034131,112.5721555,26.88037712,112.5721749,26.88041272,112.5721961,26.88045213,112.5722175,26.8804922,112.572239,26.88053295,112.5722596,26.88057256,112.5722793,26.88061094,112.5722997,26.88065126,112.5723193,26.88069069,112.5723382,26.88072932,112.5723575,26.88076921,112.5723772,26.88081047,112.5723963,26.88085103,112.5724146,26.88089089,112.5724336,26.88093314,112.5724515,26.88097353,112.5724694,26.88101512,112.5724872,26.88105683,112.5725052,26.88109967,112.5725227,26.8811415,112.5725395,26.88118231,112.572557,26.88122519,112.5725734,26.88126585,112.5725904,26.88130857,112.5726065,26.88134921,112.5726229,26.88139095,112.5726396,26.88143384,112.5726552,26.88147476,112.5726711,26.88151689,112.5726866,26.8815592,112.5727023,26.88160268,112.5727169,26.88164415,112.5727321,26.88168776,112.5727464,26.88173044,112.57276,26.88177213,112.5727736,26.88181505,112.5727873,26.88185923,112.5728003,26.8819025,112.5728126,26.88194482,112.5728253,26.88198937,112.572837,26.88203166,112.5728489,26.88207502,112.5728608,26.88211844,112.5728729,26.882163,112.5728846,26.88220661,112.5728961,26.88224934,112.5729081,26.88229451,112.5729196,26.88233889,112.572931,26.88238354,112.5729418,26.88242734,112.5729529,26.88247365,112.5729622,26.88251337,112.5729727,26.88255892,112.5729816,26.88259894,112.5729912,26.88264369,112.5730007,26.8826898,112.5730102,26.88273723,112.5730191,26.8827836,112.5730274,26.88282886,112.5730357,26.88287527,112.573043,26.88291695,112.5730506,26.88296203,112.5730574,26.8830035,112.5730637,26.88304359,112.5730707,26.88308921,112.5730772,26.88313361,112.5730837,26.88318019,112.5730898,26.88322456,112.5730956,26.88327006,112.573101,26.88331559,112.573106,26.8833612,112.5731108,26.88340803,112.5731151,26.88345264,112.5731193,26.88349962,112.5731233,26.88354552,112.573127,26.88359032,112.5731309,26.88363636,112.5731351,26.8836824,112.5731394,26.8837294,112.573143,26.88377382,112.5731465,26.88382025,112.5731496,26.88386438,112.5731524,26.88390964,112.5731552,26.88395614,112.5731577,26.88400177,112.57316,26.88404771,112.5731619,26.88409275,112.5731635,26.88414031,112.5731646,26.88418646,112.5731655,26.88422689,112.5731662,26.88426731,112.573167,26.88431228,112.5731677,26.88435821,112.5731684,26.8844051,112.573169,26.88444973,112.5731696,26.88449555,112.5731703,26.88454143,112.5731709,26.88458853,112.5731715,26.88463453,112.5731721,26.88467941,112.5731728,26.88472542,112.5731736,26.88477119,112.5731744,26.88481672,112.5731753,26.88486222,112.5731762,26.88490886,112.5731771,26.88495433,112.5731779,26.8849986,112.5731787,26.88504505,112.5731794,26.88509026,112.5731799,26.88513432,112.5731805,26.8851807,112.5731811,26.88522601,112.5731816,26.88526913,112.573182,26.8853157,112.5731824,26.8853622,112.5731827,26.88540748,112.573183,26.88545269,112.5731833,26.88549665,112.5731835,26.88554242,112.5731839,26.885587,112.5731845,26.88563051,112.5731855,26.8856763,112.5731867,26.88571988,112.5731879,26.88576573,112.5731892,26.88580938,112.5731906,26.88585532,112.573192,26.88590019,112.5731937,26.88594398,112.5731957,26.8859888,112.5731981,26.88603332,112.5732009,26.88607752,112.5732041,26.88612163,112.5732075,26.88616681,112.5732105,26.88620981,112.5732134,26.886254,112.573216,26.8862994,112.5732182,26.88634383,112.5732201,26.88638838,112.573222,26.88643187,112.5732235,26.8864765,112.5732247,26.88652111,112.5732257,26.8865668,112.5732264,26.88661012,112.5732272,26.88665429,112.5732279,26.8866991,112.5732287,26.88674112,112.5732294,26.88678376,112.5732302,26.88682736,112.5732311,26.88686979,112.573232,26.88691107,112.5732329,26.88695441,112.5732338,26.88699665,112.5732348,26.88703772,112.5732358,26.88707964,112.5732369,26.88712224,112.5732379,26.88716342,112.5732389,26.88720337,112.57324,26.88724526,112.5732411,26.88728608,112.5732423,26.88732683,112.5732435,26.88737261,112.5732447,26.88741327,112.573246,26.88745799,112.5732472,26.88749974,112.5732483,26.88754058,112.5732495,26.88758659,112.5732505,26.88762748,112.5732515,26.88766725,112.5732527,26.88771383,112.5732537,26.88775403,112.5732548,26.88779323,112.5732559,26.88783443,112.573257,26.88787467,112.5732581,26.88791397,112.5732592,26.88795426,112.5732604,26.88799539,112.5732615,26.8880351,112.5732628,26.88807811,112.5732642,26.88812219,112.5732656,26.88816439,112.5732669,26.88820476,112.5732681,26.88824514,112.5732693,26.88828462,112.5732704,26.88832748,112.5732712,26.88836919,112.573272,26.88841039,112.573273,26.88845229,112.5732744,26.88849209,112.5732763,26.88853272,112.5732786,26.8885709,112.5732813,26.88860951,112.5732843,26.88864863,112.5732876,26.88868959,112.5732905,26.88872781,112.5732929,26.88876477,112.5732951,26.88880399";
 //    private static final String ROMA_ROAD_1 = ",112.5732967,26.88884312,112.573298,26.88888136,112.5732992,26.88892276,112.5733003,26.8889593,112.5733014,26.88899739,112.5733025,26.8890355,112.5733035,26.88907108,112.5733047,26.88910874,112.5733058,26.88914569,112.5733066,26.88917961,112.5733074,26.88921312,112.5733083,26.88924725,112.5733091,26.88928032,112.5733103,26.88931571,112.5733115,26.88934913,112.5733125,26.88938455,112.5733134,26.88941967,112.5733143,26.8894553,112.5733152,26.88949305,112.573316,26.88953007,112.5733168,26.88956712,112.5733176,26.88960438,112.5733185,26.88964099,112.5733192,26.88967683,112.5733199,26.8897127,112.5733206,26.88974841,112.5733212,26.88978519,112.5733219,26.88982266,112.5733226,26.88985869,112.5733237,26.88989748,112.5733249,26.88993489,112.5733263,26.88997389,112.5733277,26.8900134,112.573329,26.8900502,112.5733303,26.89008916,112.5733317,26.89012966,112.5733332,26.89017157,112.5733347,26.89021087,112.5733361,26.89025122,112.5733373,26.89029287,112.5733381,26.89033146,112.5733386,26.89037135,112.5733389,26.89040761,112.5733389,26.89044447,112.5733388,26.89048254,112.5733387,26.89051882,112.5733386,26.89055676,112.5733386,26.8905955,112.5733387,26.89063273,112.5733388,26.89067132,112.5733391,26.89071264,112.5733393,26.89075182,112.5733397,26.89079314,112.5733402,26.89083474,112.5733409,26.89087733,112.5733415,26.89091545,112.5733423,26.89096038,112.5733432,26.8910007,112.5733441,26.89104087,112.573345,26.89108273,112.5733458,26.89112539,112.5733466,26.89116976,112.5733473,26.89121255,112.5733479,26.89125243,112.5733484,26.89129414,112.573349,26.89133951,112.5733495,26.89138274,112.5733501,26.89142482,112.5733507,26.89146856,112.5733513,26.89150994,112.573352,26.89155147,112.5733526,26.89159204,112.5733532,26.89163237,112.5733538,26.89167485,112.5733543,26.89171622,112.5733548,26.89175582,112.5733552,26.89179554,112.5733555,26.89183582,112.5733557,26.89187439,112.5733559,26.89191337,112.5733562,26.89195256,112.5733565,26.89199002,112.5733569,26.89203278,112.5733573,26.89207054,112.5733578,26.89210966,112.5733582,26.89214979,112.5733586,26.89219126,112.5733589,26.89223355,112.5733593,26.89227699,112.5733597,26.89231949,112.5733601,26.89236064,112.5733606,26.89240248,112.5733612,26.89244543,112.5733618,26.89248381,112.5733625,26.89252191,112.5733633,26.89256242,112.573364,26.89260178,112.5733649,26.89264348,112.5733658,26.89268478,112.5733666,26.89272566,112.5733673,26.89276889,112.573368,26.89281071,112.5733688,26.89285489,112.5733695,26.89289371,112.5733705,26.89293683,112.5733713,26.8929815,112.5733722,26.89302808,112.5733729,26.89306938,112.5733733,26.89311028,112.5733737,26.89315388,112.5733739,26.89319699,112.573374,26.89323947,112.5733742,26.89328454,112.5733746,26.89332775,112.5733751,26.89337233,112.5733757,26.89341704,112.5733763,26.89346293,112.573377,26.89350663,112.5733776,26.8935515,112.573378,26.89359639,112.5733785,26.89364237,112.5733789,26.89368712,112.5733794,26.8937306,112.5733801,26.89377614,112.5733808,26.89382037,112.5733815,26.89386435,112.5733822,26.89390691,112.573383,26.89395145,112.5733837,26.89399472,112.5733844,26.89403673,112.5733851,26.89407956,112.5733857,26.89412318,112.5733862,26.89416548,112.5733868,26.89420647,112.5733873,26.8942483,112.5733878,26.89428988,112.5733883,26.89433615,112.5733888,26.8943777,112.5733893,26.89441781,112.5733899,26.89446164,112.5733907,26.89450614,112.5733915,26.89455137,112.5733923,26.89459049,112.5733931,26.89463334,112.5733939,26.89467329,112.5733947,26.89471224,112.5733956,26.89475591,112.5733964,26.89479847,112.5733971,26.89484176,112.5733979,26.89488484,112.5733985,26.89492867,112.5733989,26.8949712,112.5733991,26.89501312,112.5733994,26.89505325,112.5733996,26.89509321,112.5733999,26.89513677,112.5734002,26.89517651,112.5734006,26.89521431,112.573401,26.89525288,112.5734013,26.89529152,112.5734017,26.89533116,112.5734021,26.89536936,112.5734025,26.89540959,112.5734029,26.89545278,112.5734034,26.89549274,112.5734039,26.89553381,112.5734043,26.89557331,112.5734049,26.89561481,112.5734053,26.89565445,112.5734057,26.89569472,112.5734059,26.89573454,112.5734062,26.8957736,112.5734064,26.89581245,112.5734065,26.89585335,112.5734066,26.89589289,112.5734068,26.89593014,112.573407,26.89596891,112.5734072,26.89600663,112.5734071,26.89604329,112.5734065,26.89607874,112.5734033,26.8961115,112.5733885,26.89614048,112.5733594,26.89615626,112.5733261,26.89616072,112.5732919,26.89616149,112.5732556,26.89616183,112.573221,26.89616196,112.5731862,26.89616097,112.5731528,26.89615707,112.57312,26.89614683,112.5730933,26.89612524,112.5730807,26.89609266,112.5730791,26.89605794,112.5730796,26.89602181,112.5730799,26.89598458,112.57308,26.89594866,112.5730801,26.89591138,112.5730804,26.89586999,112.5730807,26.89583017,112.5730809,26.89579278,112.5730809,26.89575293,112.5730811,26.89571153,112.5730813,26.89566893,112.5730815,26.89562531,112.5730817,26.89558522,112.5730818,26.89554443,112.5730816,26.89550201,112.5730812,26.89546086,112.5730807,26.89541728,112.5730801,26.89537506,112.5730794,26.89533041,112.5730788,26.89528732,112.5730781,26.89524696,112.5730773,26.89520359,112.5730763,26.89515832,112.5730753,26.89511534,112.5730741,26.895072,112.573073,26.89502936,112.573072,26.89498744,112.573071,26.89494533,112.5730702,26.89490572,112.5730693,26.89486505,112.5730684,26.89482173,112.5730676,26.89478014,112.573067,26.89473705,112.5730666,26.8946958,112.5730665,26.8946542,112.5730664,26.89461166,112.5730661,26.89456982,112.5730655,26.8945277,112.5730648,26.89448509,112.5730641,26.89444724,112.5730633,26.89440734,112.5730627,26.8943688,112.5730623,26.89432806,112.573062,26.89428862,112.5730619,26.89424679,112.5730619,26.89420622,112.5730619,26.89416428,112.5730617,26.894122,112.5730614,26.89407948,112.5730611,26.89403586,112.5730608,26.89399505,112.5730604,26.89395071,112.57306,26.89390857,112.5730596,26.89386637,112.5730592,26.89382411,112.5730588,26.89378642,112.5730584,26.89374473,112.5730579,26.89370185,112.5730574,26.89365882,112.5730569,26.89361566,112.5730563,26.89357237,112.5730557,26.89352906,112.5730552,26.89348503,112.5730547,26.89344298,112.5730542,26.89339899,112.5730537,26.89335682,112.5730532,26.89331263,112.5730527,26.89326926,112.5730523,26.8932269,112.5730518,26.89318296,112.5730513,26.89314193,112.5730508,26.89309986,112.5730501,26.89305483,112.5730493,26.89301059,112.5730485,26.89296809,112.5730477,26.89292827,112.5730469,26.89288538,112.5730462,26.89284648,112.5730456,26.89280284,112.5730449,26.89275812,112.5730442,26.89271515,112.5730434,26.89267005,112.5730426,26.89262685,112.5730418,26.89258263,112.5730412,26.89253851,112.5730411,26.89249867,112.5730408,26.89245598,112.5730404,26.89241124,112.57304,26.89236733,112.5730397,26.89232821,112.5730395,26.8922852,112.5730393,26.89224026,112.573039,26.89219719,112.5730386,26.89215689,112.5730382,26.89211347,112.5730377,26.89206894,112.5730371,26.89202329,112.5730364,26.89198359,112.5730357,26.89194406,112.5730348,26.89190081,112.573034,26.89186042,112.5730331,26.89181692,112.5730323,26.89177132,112.5730315,26.89172754,112.5730306,26.89168257,112.5730298,26.8916364,112.5730292,26.8915963,112.5730286,26.89155153,112.573028,26.89151226,112.5730275,26.89146971,112.5730269,26.89142553,112.5730263,26.89138216,112.5730257,26.89134344,112.5730252,26.8913007,112.5730247,26.89125681,112.5730242,26.89121279,112.5730237,26.89116805,112.5730232,26.89112542,112.5730228,26.89108565,112.5730222,26.89104309,112.5730216,26.891,112.573021,26.89095657,112.5730204,26.89091571,112.5730197,26.89087365,112.573019,26.89083393,112.5730182,26.89079307,112.5730175,26.89075464,112.5730167,26.89071179,112.5730158,26.890669,112.573015,26.89062799,112.5730143,26.8905879,112.5730137,26.89054827,112.5730132,26.89050954,112.5730129,26.89047035,112.5730126,26.89043179,112.5730124,26.89039326,112.5730124,26.89035626,112.5730126,26.8903165,112.5730128,26.89027831,112.5730131,26.89023978,112.5730135,26.89020133,112.5730142,26.89016195,112.573015,26.8901229,112.573016,26.89008347,112.5730169,26.8900436,112.5730175,26.89000409,112.5730179,26.88996363,112.573018,26.88992305,112.573018,26.88988251,112.5730178,26.88984153,112.5730175,26.88980195,112.5730172,26.889763,112.5730168,26.88972426,112.5730164,26.88968621,112.5730159,26.8896472,112.5730156,26.8896077,112.5730153,26.88956763,112.5730149,26.8895263,112.573015,26.88948602,112.5730154,26.88944825,112.5730163,26.88941028,112.5730175,26.88937211,112.5730192,26.88933369,112.5730211,26.88929501,112.5730231,26.88925521,112.5730251,26.88921664,112.5730272,26.88917695,112.5730293,26.88913726,112.5730312,26.88909752,112.5730329,26.88905761,112.5730342,26.88901694,112.5730351,26.88897695,112.5730358,26.88893662,112.5730363,26.88889578,112.5730366,26.88885506,112.5730368,26.88881282,112.5730368,26.88877344,112.5730367,26.88873567,112.5730363,26.88869385,112.5730358,26.88865167,112.5730355,26.88861355,112.5730352,26.88857604,112.5730353,26.88853783,112.573036,26.88850285,112.5730381,26.8884678,112.5730414,26.88843287,112.5730459,26.88839641,112.5730501,26.88836049,112.5730538,26.88832288,112.5730569,26.8882834,112.5730593,26.88824441,112.5730612,26.88820407,112.5730624,26.88816653,112.5730632,26.88812675,112.5730636,26.88808468,112.5730638,26.88804298,112.5730638,26.88800383,112.5730637,26.8879638,112.5730636,26.88792198,112.5730633,26.88788025,112.573063,26.88783868,112.5730628,26.88779446,112.5730627,26.88775538,112.5730626,26.88771081,112.5730625,26.88767077,112.5730624,26.88763149,112.5730622,26.8875858,112.5730618,26.88754374,112.5730614,26.88750332,112.5730609,26.88746145,112.5730603,26.88741917,112.5730596,26.8873754,112.573059,26.88733334,112.5730582,26.88728878,112.5730574,26.88724606,112.5730566,26.88720198,112.5730558,26.88715766,112.573055,26.88711198,112.5730542,26.88706716,112.5730535,26.88702326,112.5730528,26.88697691,112.5730521,26.88693149,112.5730515,26.88688703,112.5730509,26.88684114,112.5730503,26.88679492,112.5730497,26.886753,112.5730491,26.88670608,112.5730486,26.88666481,112.573048,26.88661866,112.5730474,26.88657015,112.5730468,26.88652287,112.5730463,26.8864815,112.5730457,26.88643422,112.5730451,26.8863882,112.5730444,26.88634004,112.5730438,26.88629326,112.5730432,26.88624779,112.5730427,26.88620128,112.5730422,26.88615365,112.5730418,26.886113,112.5730414,26.88607235,112.5730409,26.88603171,112.5730404,26.88599109,112.5730399,26.88594474,112.5730393,26.88590428,112.5730388,26.88585928,112.5730381,26.88581315,112.5730375,26.88576584,112.573037,26.8857254,112.5730363,26.88568022,112.5730356,26.88563363,112.5730349,26.88558562,112.5730342,26.88554445,112.5730335,26.88550318,112.5730328,26.88546189,112.5730319,26.88541473,112.5730311,26.88537343,112.5730303,26.88533212,112.5730294,26.88529089,112.5730285,26.88524512,112.5730277,26.88519833,112.5730271,26.88515065,112.5730267,26.88511019,112.5730263,26.88506425,112.573026,26.88502088,112.5730257,26.88497335,112.5730256,26.88492856,112.5730256,26.88488519,112.5730258,26.88484095,112.5730259,26.88479582,112.5730259,26.88475206,112.5730256,26.88470963,112.5730251,26.88466503,112.5730246,26.88462156,112.5730239,26.88457918,112.5730232,26.88453565,112.5730224,26.88449103,112.5730216,26.8844475,112.5730207,26.88440509,112.5730197,26.88436157,112.5730186,26.88431671,112.5730174,26.88427269,112.5730161,26.8842295,112.5730145,26.8841838,112.5730127,26.88413884,112.5730109,26.88409464,112.573009,26.884049,112.573007,26.88400193,112.5730051,26.8839615,112.5730028,26.883915,112.5730006,26.88387428,112.5729984,26.88383342,112.5729959,26.88379245,112.5729932,26.8837514,112.5729903,26.88371044,112.5729871,26.88366959,112.5729834,26.88362416,112.5729793,26.88357766,112.5729748,26.88353023,112.5729708,26.8834899,112.5729666,26.88344952,112.5729623,26.88340907,112.5729577,26.88336862,112.5729529,26.88332817,112.5729479,26.8832878,112.5729426,26.88324749,112.572937,26.88320728,112.5729312,26.88316723,112.5729244,26.88312256,112.5729171,26.8830766,112.5729094,26.88303051,112.5729012,26.88298303,112.572894,26.88294231,112.5728871,26.88290217,112.5728796,26.8828595,112.572872,26.88281792,112.5728644,26.88277586,112.5728569,26.88273482,112.5728484,26.88269156,112.5728399,26.88264966,112.5728312,26.88260788,112.572822,26.88256629,112.5728127,26.88252487,112.572803,26.88248338,112.5727931,26.88244204,112.5727834,26.88240206,112.5727731,26.88236009,112.572763,26.88231966,112.5727512,26.88227392,112.5727396,26.88222985,112.5727291,26.88219079,112.5727169,26.88214677,112.5727042,26.88210204,112.572692,26.8820596,112.5726793,26.88201625,112.5726665,26.88197324,112.5726533,26.88192965,112.5726405,26.88188865,112.5726268,26.88184561,112.5726132,26.8818036,112.5725997,26.88176259,112.5725855,26.88172043,112.5725707,26.8816771,112.5725565,26.8816358,112.5725415,26.88159334,112.5725264,26.88155081,112.572511,26.88150823,112.5724954,26.8814657,112.5724795,26.88142339,112.5724634,26.8813813,112.5724465,26.8813382,112.57243,26.88129717,112.5724129,26.88125502,112.5723955,26.88121281,112.5723774,26.88116959,112.5723601,26.8811287,112.5723417,26.88108614,112.5723237,26.88104504,112.5723062,26.88100556,112.5722884,26.88096593,112.5722703,26.88092599,112.5722526,26.88088738,112.5722353,26.88085008,112.5722176,26.88081218,112.5721995,26.8807741,112.572182,26.88073772,112.5721629,26.88069858,112.5721449,26.88066292,112.5721255,26.88062533,112.5721058,26.88058778,112.5720862,26.88055066,112.5720664,26.88051342,112.5720459,26.88047514,112.5720259,26.88043827,112.5720047,26.88039948,112.5719839,26.88036225,112.5719622,26.88032409,112.5719404,26.88028602,112.5719179,26.88024716,112.5718961,26.88020984,112.5718754,26.88017492,112.5718528,26.88013739,112.5718313,26.8801023,112.5718101,26.88006792,112.571789,26.88003419,112.5717638,26.87999408,112.5717419,26.87995981,112.5717189,26.87992442,112.5716948,26.8798879,112.5716709,26.87985208,112.5716472,26.87981711,112.571622,26.87978042,112.571597,26.87974467,112.5715723,26.8797097,112.5715467,26.87967372,112.5715206,26.8796376,112.5714936,26.87960038,112.5714675,26.87956482,112.5714407,26.87952843,112.5714134,26.87949148,112.5713876,26.87945693,112.5713616,26.87942227,112.5713353,26.87938759,112.5713099,26.87935455,112.5712856,26.87932296,112.5712568,26.8792859,112.5712316,26.87925359,112.5712068,26.87922198,112.571181,26.87918931,112.5711542,26.87915546,112.5711282,26.87912288,112.571101,26.87908911,112.5710725,26.87905404,112.5710447,26.8790202,112.5710158,26.87898511,112.5709866,26.87894977,112.5709565,26.87891343,112.5709276,26.87887888,112.5708978,26.87884366,112.5708673,26.87880792,112.5708378,26.87877355,112.5708093,26.87874059,112.5707796,26.87870656,112.570751,26.87867398,112.570723,26.87864244,112.5706941,26.87861029,112.5706641,26.87857742,112.5706344,26.87854533,112.5706052,26.878514,112.5705752,26.87848191,112.570545,26.87844992,112.5705142,26.87841731,112.5704852,26.87838658,112.5704558,26.87835547,112.5704261,26.87832404,112.5703985,26.87829459,112.5703672,26.87826116,112.5703368,26.87822827,112.5703064,26.87819522,112.5702777,26.87816376,112.5702477,26.87813063,112.570219,26.87809865,112.5701894,26.87806568,112.5701592,26.87803168,112.5701329,26.87800179,112.5701039,26.87796856,112.5700766,26.87793705,112.5700499,26.87790587,112.5700237,26.87787493,112.569996,26.87784169,112.5699686,26.8778085,112.5699416,26.87777537,112.5699135,26.87774068,112.5698846,26.8777044,112.5698576,26.87767022,112.5698286,26.87763295,112.5698002,26.87759619,112.5697744,26.87756276,112.5697462,26.87752631,112.5697199,26.87749247,112.5696942,26.87745934,112.5696691,26.87742689,112.5696431,26.87739326,112.5696164,26.87735855,112.5695906,26.87732475,112.569565,26.87729089,112.5695402,26.87725792,112.5695106,26.87721804,112.5694856,26.87718389,112.5694607,26.87714969,112.569436,26.87711554,112.5694115,26.87708153,112.5693874,26.87704768,112.5693611,26.8770101,112.5693345,26.87697143,112.5693076,26.87693169,112.5692849,26.87689765,112.5692599,26.87685958,112.5692347,26.87682032,112.5692129,26.87678588,112.5691882,26.8767465,112.5691633,26.87670629,112.5691402,26.87666829,112.5691169,26.87662984,112.569094,26.87659195,112.5690706,26.8765532,112.5690484,26.87651636,112.5690252,26.87647757,112.5690028,26.8764397,112.5689811,26.87640275,112.5689591,26.87636474,112.5689367,26.87632568,112.568915,26.8762874,112.568894,26.8762499,112.5688728,26.87621139,112.5688515,26.87617194,112.5688316,26.87613461,112.5688116,26.87609641,112.5687913,26.87605717,112.5687715,26.87601885,112.5687522,26.87598143,112.5687323,26.87594291,112.5687123,26.87590424,112.5686917,26.87586442,112.568672,26.87582637,112.5686514,26.87578619,112.5686319,26.8757478,112.568612,26.87570831,112.5685921,26.87566873,112.568572,26.87562808,112.5685524,26.87558833,112.5685336,26.87554945,112.5685142,26.87550855,112.5684958,26.8754687,112.5684783,26.87542992,112.5684608,26.87539031,112.5684435,26.87535077,112.5684264,26.87531125,112.5684095,26.87527174,112.5683928,26.87523232,112.5683759,26.87519204,112.5683599,26.87515375,112.5683436,26.87511442,112.5683268,26.87507399,112.568311,26.87503544,112.5682949,26.87499591,112.568279,26.87495635,112.5682629,26.8749157,112.5682473,26.87487598,112.5682324,26.87483724,112.5682169,26.87479641,112.5682019,26.87475651,112.5681875,26.87471759,112.568173,26.87467768,112.5681584,26.87463682,112.5681444,26.87459696,112.5681311,26.87455821,112.5681179,26.87451876,112.5681048,26.87447884,112.5680927,26.8744415,112.5680788,26.87439836,112.5680659,26.874358,112.5680528,26.87431705,112.5680408,26.87427962,112.5680289,26.87424188,112.568016,26.87420139,112.5680032,26.87416169,112.56799,26.87412103,112.5679778,26.8740834,112.5679648,26.87404224,112.5679536,26.87400567,112.5679423,26.87396694,112.5679319,26.87392933,112.5679214,26.87389029,112.5679109,26.87384999,112.567901,26.87381101,112.5678909,26.87376984,112.5678812,26.87373004,112.567871,26.87368804,112.5678611,26.87364741,112.5678508,26.87360523,112.5678402,26.87356236,112.5678304,26.87352268,112.5678211,26.87348436,112.5678103,26.87343955,112.5678007,26.87339815,112.5677916,26.87335822,112.5677825,26.87331672,112.5677733,26.87327368,112.5677649,26.87323236,112.5677563,26.87318953,112.5677481,26.87314629,112.5677399,26.87310163,112.5677323,26.87305885,112.5677249,26.87301482,112.5677177,26.87296977,112.5677112,26.8729271,112.5677047,26.87288338,112.5676982,26.87283962,112.5676916,26.87279458,112.5676853,26.87275153,112.5676788,26.87270728,112.5676724,26.87266312,112.5676659,26.87261775,112.5676599,26.87257434,112.5676537,26.87252853,112.5676479,26.87248363,112.5676424,26.87243961,112.5676371,26.87239419,112.5676319,26.87234731,112.5676275,26.87230706,112.5676225,26.87226078,112.5676182,26.87222008,112.5676139,26.87217914,112.5676096,26.87213798,112.5676051,26.87209184,112.5676007,26.87204309,112.5675971,26.87200134,112.5675937,26.87196062,112.5675905,26.8719185,112.5675875,26.87187621,112.5675849,26.87183377,112.5675826,26.87179121,112.5675808,26.87174733,112.5675795,26.87170582,112.5675783,26.87166177,112.5675774,26.87162009,112.5675765,26.87157093,112.5675757,26.87152664,112.5675747,26.87148478,112.5675736,26.87144041,112.5675724,26.87139718,112.5675711,26.87135386,112.5675699,26.87131048,112.5675688,26.87126725,112.5675673,26.87122412,112.5675654,26.8711811,112.5675634,26.87113938,112.5675611,26.87109529,112.567559,26.87105253,112.5675571,26.87100987,112.5675554,26.87096736,112.5675537,26.87092512,112.567552,26.87087727,112.5675504,26.87083084,112.5675488,26.87078346,112.5675474,26.87073649,112.5675462,26.87069473,112.5675448,26.87064901,112.5675435,26.87060517,112.5675421,26.87056099,112.5675407,26.87051645,112.5675395,26.8704748,112.5675383,26.87043287,112.567537,26.87039053,112.5675358,26.87034983,112.5675346,26.87031065,112.5675331,26.87026466,112.5675317,26.87022081,112.5675299,26.87017502,112.5675282,26.87013109,112.5675264,26.87009001,112.5675247,26.87004982,112.5675232,26.87001052,112.5675214,26.8699641,112.5675199,26.86992484,112.5675183,26.86988464,112.5675165,26.86984338,112.5675144,26.86979907,112.5675123,26.86975781,112.5675103,26.8697176,112.5675084,26.86967842,112.5675064,26.86963225,112.5675048,26.8695931,112.567503,26.86954786,112.5675014,26.86950648,112.5675001,26.86946691,112.5674988,26.86942606,112.5674976,26.86938392,112.5674965,26.86934351,112.5674954,26.86930177,112.5674943,26.86925977,112.5674932,26.86921749,112.5674921,26.86917495,112.567491,26.86913224,112.5674898,26.86908935,112.5674886,26.86904525,112.5674874,26.86900313,112.5674863,26.86895978,112.5674852,26.8689163,112.567484,26.86887162,112.5674827,26.86882903,112.5674813,26.86878515,112.5674798,26.86873992,112.5674783,26.86869666,112.5674766,26.86865197,112.5674749,26.86860584,112.5674731,26.8685605,112.5674712,26.868516,112.5674694,26.86847009,112.5674675,26.86842391,112.5674659,26.86838218,112.5674642,26.86834152,112.5674626,26.86830078,112.5674609,26.86825999,112.5674592,26.86821914,112.5674574,26.86817355,112.5674555,26.86812672,112.5674536,26.86807979,112.5674518,26.86803165,112.5674501,26.86799053,112.5674485,26.86794938,112.5674468,26.86790817,112.567445,26.86786215,112.5674431,26.86781487,112.5674412,26.86776628,112.5674395,26.86771875,112.5674379,26.86767233,112.5674362,26.86762341,112.5674346,26.86757562,112.5674331,26.86752895,112.5674315,26.86748102,112.5674298,26.86743174,112.5674284,26.8673908,112.567427,26.86734857,112.5674256,26.86730509,112.5674242,26.86726398,112.5674228,26.8672216,112.5674214,26.86717915,112.56742,26.86713666,112.5674185,26.86709288,112.567417,26.86705026,112.5674156,26.86700761,112.5674142,26.86696616,112.5674127,26.86692347,112.5674112,26.86687958,112.5674097,26.86683694,112.5674082,26.86679552,112.5674066,26.86675284,112.5674051,26.86671013,112.5674036,26.86666735,112.567402,26.8666245,112.5674003,26.86658036,112.5673988,26.86653862,112.5673972,26.86649561,112.5673955,26.86645253,112.5673936,26.86640201,112.567392,26.86635884,112.56739,26.86630946,112.5673881,26.86626128,112.5673862,26.86621183,112.5673844,26.86616862,112.5673828,26.86612551,112.5673811,26.86608121,112.5673795,26.86603937,112.5673779,26.86599629,112.5673764,26.8659532,112.567375,26.86591009,112.5673736,26.86586696,112.567372,26.86582258,112.5673705,26.86578066,112.5673689,26.86573754,112.567367,26.86569438,112.5673651,26.86565124,112.5673632,26.86560809,112.5673614,26.86556491,112.5673597,26.86552172,112.567358,26.8654711,112.5673566,26.8654279,112.5673553,26.86538593,112.567354,26.86534148,112.5673527,26.86529826,112.5673513,26.86525503,112.5673501,26.86521301,112.5673488,26.86516974,112.5673475,26.86512644,112.5673463,26.86508189,112.5673452,26.8650398,112.567344,26.86499649,112.5673427,26.86495199,112.5673416,26.86490877,112.5673405,26.86486555,112.5673396,26.86482358,112.5673386,26.86478042,112.5673378,26.8647373,112.5673369,26.86469429,112.5673361,26.86465025,112.5673354,26.86460882,112.5673348,26.86456629,112.5673343,26.86452384,112.5673338,26.86448017,112.5673334,26.86443894,112.5673331,26.86439528,112.5673328,26.86435283,112.5673325,26.86431159,112.5673322,26.86426913,112.5673319,26.86422543,112.5673317,26.86418416,112.5673316,26.86414044,112.5673315,26.86409911,112.5673315,26.86405653,112.5673316,26.86401274,112.5673317,26.86397137,112.5673318,26.86392876,112.567332,26.86388614,112.5673321,26.86384351,112.5673322,26.86380086,112.5673322,26.86375816,112.5673321,26.86371536,112.5673321,26.86367248,112.5673321,26.86362955,112.5673326,26.86357924,112.5673332,26.86353624,112.5673342,26.86349317,112.5673352,26.86345126,112.5673365,26.86340684,112.5673378,26.86336361,112.5673391,26.86332033,112.5673403,26.86327822,112.5673412,26.86323356,112.5673419,26.86319004,112.5673425,26.86314639,112.5673432,26.86310264,112.5673439,26.86306,112.5673446,26.86301475,112.5673455,26.86297064,112.5673465,26.86292645,112.5673477,26.86288212,112.567349,26.86283769,112.5673504,26.86279316,112.5673518,26.86274854,112.5673534,26.8627051,112.567355,26.86265906,112.5673568,26.86261425,112.5673586,26.86257067,112.5673607,26.86252576,112.5673629,26.8624808,112.5673651,26.8624345,112.5673673,26.86239072,112.5673697,26.86234436,112.5673719,26.86230063,112.5673743,26.86225443,112.5673767,26.86220961,112.5673791,26.8621662,112.5673816,26.8621217,112.5673844,26.86207613,112.5673871,26.86203196,112.5673898,26.86198919,112.5673927,26.86194408,112.5673957,26.86190044,112.5673986,26.86185828,112.5674016,26.86181519,112.5674047,26.86177236,112.5674078,26.86172852,112.5674109,26.86168607,112.5674139,26.86164492,112.5674171,26.86160136,112.5674202,26.86155902,112.5674234,26.86151665,112.5674267,26.86147546,112.5674301,26.86143301,112.5674335,26.86139048,112.567437,26.86134783,112.5674405,26.861305,112.5674442,26.86126202,112.5674481,26.86121756,112.5674518,26.86117533,112.5674556,26.86113159,112.5674595,26.86108761,112.5674634,26.86104335,112.5674673,26.86099883,112.5674714,26.86095276,112.5674752,26.860909,112.5674793,26.86086241,112.5674832,26.8608182,112.5674871,26.86077258,112.5674911,26.86072692,112.5674952,26.86068139,112.5674993,26.86063475,112.5675033,26.86059091,112.5675075,26.86054592,112.5675119,26.86050102,112.5675163,26.86045621,112.5675209,26.8604115,112.5675255,26.86036692,112.5675301,26.86032249,112.5675347,26.86027832,112.5675395,26.86023447,112.5675443,26.86019094,112.5675499,26.86014143,112.5675551,26.86009704,112.5675602,26.86005525,112.5675657,26.86001113,112.5675712,26.85996839,112.5675769,26.85992583,112.5675827,26.85988345,112.5675885,26.85984244,112.5675945,26.85979918,112.5676003,26.8597573,112.5676061,26.85971567,112.5676127,26.85966849,112.5676184,26.85962746,112.5676248,26.85958196,112.5676315,26.8595343,112.567638,26.85948797,112.5676438,26.85944753,112.5676496,26.85940715,112.5676555,26.85936687,112.567662,26.85932217,112.5676688,26.85927647,112.5676758,26.85922972,112.5676827,26.85918415,112.5676895,26.85913975,112.5676964,26.85909433,112.5677036,26.85904794,112.5677103,26.859004,112.5677173,26.8589591,112.5677244,26.85891326,112.5677315,26.85886871,112.5677384,26.85882537,112.5677455,26.85878094,112.5677529,26.85873538,112.5677601,26.85869095,112.5677673,26.85864762,112.567775,26.85860196,112.5677826,26.85855723,112.5677901,26.85851344,112.5677978,26.85846829,112.5678058,26.85842178,112.5678136,26.85837618,112.5678205,26.8583361,112.5678275,26.85829587,112.5678355,26.85825086,112.5678437,26.85820449,112.5678512,26.85816261,112.5678596,26.85811587,112.567868,26.85807012,112.5678758,26.85802773,112.5678835,26.85798637,112.5678914,26.8579449,112.5678993,26.8579033,112.5679074,26.85786158,112.5679155,26.85781974,112.5679237,26.85777775,112.5679318,26.85773564,112.56794,26.85769342,112.5679492,26.85764624,112.5679588,26.8575977,112.5679674,26.85755387,112.5679756,26.85751238,112.5679844,26.85746833,112.5679928,26.85742662,112.5680018,26.85738235,112.5680105,26.85734049,112.5680197,26.85729609,112.5680285,26.8572541,112.5680377,26.85721086,112.5680468,26.85716763,112.5680559,26.85712438,112.5680653,26.85707988,112.5680744,26.85703659,112.5680834,26.85699454,112.5680927,26.85695129,112.5681021,26.85690798,112.5681117,26.85686472,112.5681214,26.85682142,112.5681316,26.85677687,112.5681412,26.85673477,112.5681512,26.85669142,112.5681612,26.85664807,112.5681713,26.85660471,112.5681815,26.8565613,112.5681918,26.85651784,112.5682022,26.85647436,112.5682125,26.85643085,112.568223,26.85638731,112.5682334,26.85634374,112.5682438,26.85630014,112.5682542,26.85625653,112.5682646,26.85621292,112.568275,26.85616934,112.5682856,26.85612576,112.5682961,26.85608222,112.5683068,26.85603871,112.5683175,26.85599523,112.5683283,26.85595174,112.5683391,26.85590827,112.56835,26.85586481,112.5683608,26.85582135,112.5683716,26.8557779,112.5683824,26.85573445,112.5683932,26.85569109,112.5684039,26.85564784,112.5684146,26.85560469,112.5684253,26.85556164,112.5684359,26.85551869,112.5684465,26.85547585,112.5684571,26.8554331,112.5684692,26.85538435,112.5684798,26.85534179,112.5684907,26.855298,112.568501,26.85525659,112.5685119,26.85521269,112.5685225,26.85516999,112.5685328,26.85512851,112.5685435,26.85508584,112.5685545,26.85504202,112.5685652,26.85499958,112.568576,26.85495741,112.5685865,26.85491681,112.5685972,26.85487547,112.5686081,26.85483341,112.56862,26.85478737,112.5686301,26.85474766,112.5686411,26.85470406,112.5686521,26.85466006,112.568663,26.85461675,112.5686741,26.85457261,112.5686845,26.85453065,112.5686953,26.85448763,112.5687062,26.85444347,112.5687171,26.85440031,112.5687278,26.85435814,112.568739,26.85431482,112.5687505,26.85427036,112.5687615,26.854228,112.5687728,26.85418444,112.5687842,26.85414074,112.568796,26.85409578,112.5688072,26.85405281,112.5688186,26.85400854,112.5688303,26.85396292,112.5688403,26.8539238,112.5688516,26.85387999,112.5688634,26.85383485,112.5688757,26.85378837,112.5688879,26.85374282,112.5688998,26.85369813,112.5689122,26.85365202,112.5689231,26.85361148,112.568934,26.85357073,112.568945,26.85352976,112.5689563,26.85348742,112.5689669,26.85344729,112.5689777,26.85340595,112.5689884,26.85336456,112.568999,26.85332314,112.5690095,26.85328177,112.5690201,26.85323937,112.5690301,26.85319962,112.5690419,26.85315203,112.5690519,26.85311185,112.5690618,26.85307214,112.5690725,26.85302843,112.5690834,26.85298416,112.5690945,26.85293939,112.5691052,26.85289631,112.5691153,26.85285525,112.5691254,26.85281427,112.5691363,26.85276925,112.5691467,26.85272479,112.5691558,26.85268448,112.5691642,26.85264604,112.5691739,26.85260068,112.5691823,26.85256148,112.5691914,26.85251902,112.5692006,26.85247698,112.5692099,26.85243617,112.5692195,26.85239528,112.5692291,26.85235591,112.5692383,26.85231832,112.5692483,26.85227828,112.5692577,26.85224057,112.5692673,26.85220256,112.5692765,26.85216641,112.5692852,26.85213217,112.5692934,26.85209921,112.5693012,26.85206782,112.5693088,26.8520366,112.5693165,26.85200596,112.5693244,26.85197473,112.5693329,26.85194174,112.5693415,26.85190886,112.5693505,26.85187391,112.5693596,26.85183913,112.5693689,26.8518038,112.5693786,26.85176767,112.5693886,26.85173053,112.5693987,26.85169321,112.5694093,26.8516548,112.5694193,26.85161924,112.5694299,26.85158166,112.5694409,26.85154281,112.5694525,26.85150268,112.5694646,26.85146038,112.5694754,26.85142303,112.5694865,26.85138403,112.5694981,26.85134331,112.5695094,26.8513035,112.5695209,26.85126192,112.5695315,26.85122334,112.5695429,26.85118118,112.5695535,26.85114123,112.5695636,26.8511028,112.5695755,26.85105703,112.569586,26.85101676,112.5695962,26.85097701,112.5696067,26.85093573,112.5696177,26.85089286,112.5696282,26.85085165,112.5696391,26.85080916,112.5696501,26.85076663,112.5696614,26.8507231,112.5696721,26.85068191,112.5696831,26.85064005,112.5696943,26.85059766,112.5697049,26.8505579,112.5697157,26.8505174,112.5697268,26.8504759,112.5697376,26.85043546,112.5697479,26.85039631,112.5697583,26.85035632,112.569769,26.85031532,112.5697793,26.85027546,112.5697893,26.85023657,112.5697997,26.85019564,112.5698107,26.85015163,112.5698219,26.85010653,112.5698321,26.8500653,112.5698417,26.85002598,112.5698515,26.84998557,112.5698615,26.84994409,112.5698711,26.84990454,112.5698812,26.84986385,112.5698918,26.84982193,112.5699024,26.84978088,112.5699128,26.84974064,112.5699238,26.84969806,112.5699346,26.84965622,112.569945,26.84961514,112.5699557,26.84957283,112.5699663,26.84953049,112.5699772,26.84948722,112.5699876,26.84944638,112.5699983,26.84940488,112.570009,26.84936345,112.57002,26.84932117,112.5700303,26.84928134,112.5700409,26.84924079,112.5700518,26.8491992,112.5700621,26.84915954,112.5700727,26.8491187,112.5700833,26.8490776,112.5700944,26.84903516,112.5701051,26.8489945,112.5701161,26.84895247,112.5701271,26.84891002,112.5701384,26.84886612,112.5701492,26.84882402,112.5701606,26.84877956,112.5701718,26.84873609,112.5701827,26.84869375,112.5701938,26.84865055,112.5702048,26.84860776,112.5702158,26.84856529,112.5702268,26.8485228,112.5702382,26.84847919,112.5702493,26.84843653,112.5702603,26.84839485,112.5702715,26.848352,112.5702828,26.84830902,112.5702945,26.84826488,112.5703052,26.8482239,112.5703166,26.84817971,112.5703278,26.84813556,112.5703382,26.84809355,112.5703487,26.84805035,112.5703592,26.84800699,112.57037,26.8479623,112.5703803,26.8479196,112.5703909,26.84787565,112.5704018,26.84783026,112.570412,26.84778789,112.5704233,26.84774191,112.5704349,26.84769563,112.570446,26.84765133,112.5704563,26.84761025,112.5704663,26.8475702,112.5704764,26.84753009,112.5704865,26.84748987,112.5704967,26.8474496,112.5705069,26.84740932,112.5705171,26.84736909,112.5705271,26.84732902,112.5705369,26.84728922,112.5705466,26.84724972,112.5705562,26.84721025,112.5705668,26.84716626,112.5705776,26.84712107,112.5705886,26.84707583,112.5705999,26.84702942,112.5706107,26.84698518,112.5706216,26.84693969,112.5706323,26.84689405,112.5706416,26.84685284,112.5706517,26.84680806,112.5706608,26.84676669,112.5706698,26.84672647,112.5706787,26.84668626,112.5706888,26.84664152,112.5706994,26.84659467,112.5707094,26.84655054,112.5707195,26.84650579,112.5707294,26.84646167,112.5707392,26.8464178,112.5707492,26.84637281,112.5707587,26.84633008,112.5707686,26.84628626,112.5707786,26.8462413,112.5707883,26.84619855,112.5707984,26.84615469,112.5708087,26.84610965,112.5708187,26.84606559,112.5708286,26.84602245,112.5708386,26.84597801,112.5708489,26.84593231,112.5708586,26.84588861,112.5708685,26.84584351,112.5708785,26.84579714,112.5708871,26.84575753,112.5708955,26.84571792,112.5709038,26.84567829,112.5709132,26.84563323,112.5709222,26.84558947,112.5709313,26.84554459,112.5709406,26.84549855,112.5709496,26.84545356,112.5709584,26.84540959,112.5709675,26.84536402,112.5709769,26.84531752,112.5709851,26.84527773,112.5709933,26.84523775,112.5710016,26.84519755,112.5710098,26.84515713,112.5710181,26.84511659,112.5710263,26.84507603,112.5710345,26.84503528,112.5710427,26.84499453,112.5710509,26.84495367,112.5710591,26.84491286,112.5710672,26.84487214,112.5710754,26.84483149,112.5710846,26.84478523,112.5710925,26.84474496,112.5711013,26.8447002,112.5711105,26.84465306,112.5711191,26.84460815,112.571127,26.84456655,112.5711347,26.84452593,112.5711424,26.84448508,112.57115,26.84444403,112.5711577,26.8444028,112.571165,26.8443626,112.5711726,26.84432108,112.5711805,26.84427818,112.571188,26.8442375,112.5711962,26.84419424,112.5712043,26.84415208,112.5712123,26.8441098,112.5712203,26.84406849,112.5712286,26.84402576,112.5712372,26.84398154,112.5712456,26.84393827,112.571254,26.84389472,112.5712622,26.84385088,112.5712704,26.84380676,112.5712782,26.84376361,112.5712865,26.84371764,112.5712944,26.84367271,112.5713022,26.84362883,112.5713104,26.84358216,112.5713184,26.84353655,112.5713263,26.84349208,112.5713344,26.84344615,112.5713428,26.8433988,112.571351,26.84335266,112.5713591,26.84330645,112.5713672,26.84326013,112.5713751,26.84321383,112.5713831,26.84316752,112.571391,26.84312124,112.571399,26.84307506,112.5714069,26.84302917,112.5714143,26.8429849,112.5714221,26.84293842,112.5714296,26.84289371,112.5714368,26.84285079,112.5714443,26.84280575,112.5714514,26.84276205,112.5714584,26.8427197,112.5714654,26.8426762,112.5714726,26.84263154,112.5714795,26.84258815,112.5714863,26.84254605,112.5714934,26.84250158,112.5715002,26.84245846,112.5715068,26.84241668,112.5715137,26.8423725,112.5715205,26.84232956,112.5715271,26.8422866,112.5715338,26.84224355,112.5715404,26.84220166,112.5715471,26.84215849,112.5715539,26.84211527,112.5715609,26.84207078,112.5715677,26.84202744,112.5715745,26.84198409,112.5715811,26.84194197,112.5715878,26.84189863,112.5715945,26.84185531,112.5716012,26.84181201,112.5716083,26.84176755,112.5716152,26.84172559,112.5716224,26.84168113,112.5716292,26.84163906,112.5716361,26.84159567,112.5716428,26.84155208,112.5716495,26.84150697,112.5716558,26.8414629,112.5716621,26.84141857,112.5716681,26.84137527,112.5716743,26.84133048,112.5716804,26.84128548,112.5716863,26.84124022,112.5716922,26.8411947,112.5716982,26.84114767,112.5717038,26.84110308,112.5717098,26.84105704,112.5717158,26.84101086,112.5717222,26.84096328,112.5717283,26.84091824,112.5717347,26.84087052,112.5717408,26.84082539,112.5717472,26.84077764,112.5717533,26.84073261,112.5717595,26.84068633,112.5717657,26.84064021,112.5717717,26.8405942,112.5717776,26.84054829,112.5717835,26.84050127,112.571789,26.84045706,112.5717946,26.84041174,112.5718002,26.84036654,112.5718058,26.84032018,112.5718112,26.84027644,112.5718166,26.84023153,112.5718221,26.84018682,112.5718275,26.84014242,112.5718329,26.84009818,112.5718382,26.84005414,112.5718435,26.84001029,112.5718487,26.8399667,112.5718545,26.83991705,112.5718596,26.8398725,112.5718645,26.83982929,112.5718693,26.83978622,112.571874,26.83974449,112.5718789,26.83970042,112.5718836,26.83965766,112.5718883,26.83961497,112.5718927,26.83957366,112.5718974,26.83953004,112.5719019,26.8394877,112.5719061,26.83944662,112.5719104,26.83940439,112.5719148,26.83936105,112.5719191,26.83931893,112.5719233,26.83927806,112.5719275,26.83923605,112.5719317,26.83919408,112.5719358,26.83915211,112.57194,26.83910895,112.571944,26.83906821,112.5719481,26.83902626,112.5719523,26.8389844,112.5719566,26.83894137,112.571961,26.83890078,112.5719663,26.83885186,112.5719707,26.83881012,112.571975,26.83876837,112.5719791,26.83872667,112.5719834,26.83868499,112.571988,26.83863857,112.5719926,26.83859103,112.5719972,26.83854363,112.5720014,26.83850125,112.5720058,26.83845578,112.5720098,26.83841426,112.5720141,26.8383695,112.5720184,26.83832369,112.5720227,26.83827689,112.572027,26.83823128,112.5720312,26.83818691,112.5720357,26.83814037,112.57204,26.83809507,112.5720443,26.83805101,112.5720486,26.8380059,112.5720531,26.83795988,112.5720575,26.83791423,112.5720617,26.83787247,112.5720662,26.83782923,112.572071,26.8377853,112.5720758,26.83774361,112.5720807,26.83770091,112.5720857,26.83765715,112.5720904,26.83761439,112.5720949,26.83757271,112.5720996,26.83753004,112.5721046,26.83748653,112.5721096,26.83744437,112.5721145,26.83740363,112.5721197,26.83736224,112.572125,26.83732131,112.5721303,26.83728088,112.5721354,26.83724088,112.5721413,26.83719506,112.5721463,26.83715633,112.5721522,26.83711078,112.572158,26.83706731,112.5721641,26.837023,112.5721705,26.83697868,112.5721765,26.83693825,112.5721825,26.83689968,112.5721886,26.83685976,112.5721949,26.83681839,112.5722009,26.83677757,112.5722068,26.83673729,112.5722129,26.83669555,112.5722192,26.83665242,112.5722255,26.83660994,112.5722316,26.83656812,112.572238,26.83652481,112.5722444,26.83648114,112.5722509,26.83643723,112.5722575,26.83639331,112.5722642,26.83634823,112.5722708,26.83630512,112.5722776,26.83626056,112.5722846,26.83621557,112.5722919,26.83616898,112.5722982,26.83612874,112.5723046,26.83608814,112.5723111,26.83604724,112.5723177,26.83600605,112.5723245,26.83596463,112.5723311,26.83592419,112.5723382,26.83588113,112.5723453,26.83583914,112.5723523,26.83579702,112.5723594,26.83575467,112.5723666,26.83571207,112.572374,26.83566922,112.5723817,26.83562614,112.5723895,26.83558271,112.5723976,26.83553901,112.5724059,26.83549503,112.5724143,26.83545079,112.5724229,26.83540627,112.5724315,26.83536147,112.5724401,26.83531642,112.5724488,26.83527114,112.5724575,26.83522564,112.5724664,26.83517992,112.5724752,26.83513403,112.5724842,26.83508794,112.5724933,26.83504165,112.5725024,26.83499516,112.5725118,26.83494849,112.5725209,26.834903,112.5725308,26.83485461,112.5725403,26.8348087,112.5725506,26.8347599,112.5725606,26.83471224,112.5725708,26.8346645,112.5725806,26.83461812,112.5725911,26.83456913,112.5726011,26.83452165,112.5726109,26.83447571,112.572621,26.83442874,112.572631,26.8343821,112.5726414,26.83433449,112.5726516,26.83428852,112.5726613,26.83424417,112.5726714,26.83419885,112.5726813,26.83415383,112.5726916,26.83410786,112.5727013,26.83406474,112.5727114,26.83402068,112.5727214,26.83397694,112.5727315,26.83393352,112.5727418,26.83388918,112.5727515,26.83384759,112.5727615,26.83380507,112.5727715,26.83376283,112.5727815,26.83371968,112.5727909,26.8336792,112.5728009,26.83363665,112.5728104,26.83359677,112.5728217,26.83354905,112.5728314,26.83350861,112.572841,26.83346845,112.5728507,26.83342848,112.5728616,26.8333838,112.572873,26.83333783,112.5728849,26.83329071,112.5728965,26.83324462,112.5729067,26.83320424,112.572917,26.83316383,112.5729284,26.83311875,112.5729402,26.83307238,112.5729525,26.83302465,112.5729631,26.83298372,112.5729738,26.8329426,112.5729844,26.8329025,112.5729958,26.83285996,112.5730072,26.83281861,112.5730184,26.83277862,112.5730303,26.83273646,112.5730417,26.83269686,112.5730539,26.83265527,112.5730674,26.83260946,112.5730807,26.83256518,112.5730945,26.83251871,112.5731065,26.83247888,112.57312,26.83243315,112.5731319,26.83239295,112.5731433,26.83235378,112.5731555,26.83231219,112.5731674,26.83227166,112.5731794,26.83223112,112.5731914,26.83219068,112.5732032,26.83215049,112.5732161,26.83210599,112.5732293,26.83206025,112.5732425,26.83201454,112.573256,26.83196793,112.5732675,26.83192843,112.5732791,26.83188899,112.5732908,26.83184951,112.5733039,26.83180549,112.5733175,26.8317603,112.5733316,26.8317139,112.5733436,26.83167425,112.5733558,26.83163458,112.5733698,26.8315893,112.5733821,26.83154987,112.5733944,26.83151079,112.5734066,26.83147204,112.5734202,26.83142885,112.5734342,26.83138452,112.5734487,26.83133903,112.5734624,26.83129566,112.5734767,26.83125107,112.5734911,26.83120637,112.5735061,26.83116058,112.573519,26.83112147,112.573532,26.83108228,112.5735451,26.83104302,112.5735599,26.83099919,112.5735752,26.8309542,112.5735908,26.83090917,112.573607,26.83086304,112.573621,26.83082368,112.5736349,26.83078442,112.5736503,26.83074088,112.5736657,26.83069655,112.5736812,26.83065148,112.5736957,26.83060895,112.5737105,26.83056584,112.5737252,26.83052315,112.5737404,26.83047951,112.573755,26.83043811,112.5737699,26.83039589,112.5737851,26.83035311,112.5737998,26.83031175,112.5738143,26.83027152,112.5738295,26.83022924,112.5738443,26.83018799,112.5738588,26.83014777,112.5738736,26.83010652,112.5738883,26.83006519,112.5739035,26.8300227,112.573918,26.82998218,112.5739327,26.82994066,112.5739474,26.82989933,112.573962,26.82985842,112.5739762,26.82981797,112.5739904,26.82977773,112.5740048,26.82973659,112.5740185,26.82969752,112.5740324,26.82965751,112.5740466,26.82961668,112.57406,26.82957815,112.5740736,26.82953912,112.5740889,26.82949478,112.5741018,26.82945758,112.574115,26.82941969,112.5741286,26.82938128,112.5741418,26.82934446,112.5741565,26.82930484,112.5741718,26.82926535,112.5741873,26.82922699,112.5742027,26.82918967,112.5742192,26.82914978,112.5742349,26.82911184,112.5742491,26.82907713,112.5742631,26.82904236,112.5742775,26.82900665,112.5742914,26.82897283,112.5743051,26.82893948,112.5743175,26.82890905,112.5743294,26.82887934,112.5743412,26.82884938,112.5743534,26.82881806,112.5743662,26.82878494,112.5743792,26.82875159,112.5743932,26.82871695,112.5744066,26.82868419,112.574421,26.82864938,112.5744352,26.82861544,112.5744495,26.82858142,112.5744645,26.82854579,112.5744802,26.82850912,112.5744965,26.82847139,112.5745119,26.82843644,112.5745277,26.82840103,112.5745437,26.82836521,112.5745602,26.82832832,112.5745767,26.82829174,112.5745933,26.82825533,112.5746107,26.82821768,112.5746284,26.82817956,112.5746464,26.82814074,112.5746648,26.82810122,112.5746816,26.82806509,112.5746987,26.82802857,112.5747161,26.82799153,112.5747337,26.82795388,112.5747518,26.82791476,112.5747694,26.82787675,112.574788,26.82783641,112.574806,26.82779729,112.5748231,26.8277604,112.5748395,26.82772485,112.5748564,26.82768796,112.5748761,26.82764503,112.5748931,26.82760822,112.5749106,26.82757017,112.5749288,26.82753095,112.5749462,26.82749347,112.5749641,26.82745489,112.5749821,26.82741615,112.5750005,26.82737629,112.5750181,26.82733827,112.5750362,26.82729917,112.5750545,26.82725996,112.5750729,26.82722067,112.5750915,26.82718128,112.5751103,26.82714182,112.5751297,26.82710132,112.5751483,26.82706278,112.5751674,26.82702322,112.5751871,26.82698264,112.5752058,26.826944,112.5752251,26.82690436,112.5752444,26.82686463,112.5752644,26.8268238,112.5752836,26.82678487,112.5753034,26.82674487,112.5753233,26.82670481,112.5753432,26.82666475,112.5753631,26.82662487,112.5753828,26.82658516,112.5754031,26.82654453,112.5754223,26.82650587,112.5754421,26.82646619,112.5754619,26.82642647,112.5754823,26.82638576,112.5755017,26.826347,112.5755218,26.8263072,112.5755424,26.82626639,112.5755621,26.82622756,112.5755823,26.82618778,112.5756025,26.82614805,112.5756233,26.82610736,112.575643,26.82606871,112.5756633,26.82602905,112.5756843,26.82598828,112.5757044,26.8259494,112.5757253,26.8259094,112.5757462,26.82586928,112.5757678,26.82582818,112.5757884,26.82578909,112.5758095,26.82574899,112.5758308,26.82570888,112.5758521,26.8256687,112.5758736,26.82562842,112.5758957,26.82558697,112.5759169,26.82554742,112.5759365,26.82551078,112.5759557,26.82547503,112.575975,26.82543918,112.5759945,26.82540325,112.5760165,26.82536312,112.576037,26.82532598,112.5760593,26.82528568,112.5760823,26.82524415,112.5761058,26.82520135,112.5761282,26.82516047,112.5761512,26.8251184,112.5761715,26.82508155,112.5761918,26.8250446,112.5762122,26.8250075,112.5762328,26.82497025,112.5762536,26.8249329,112.5762747,26.82489549,112.576296,26.82485808,112.5763176,26.82482065,112.5763394,26.82478315,112.5763614,26.82474563,112.5763836,26.82470807,112.5764059,26.82467045,112.5764282,26.82463279,112.5764507,26.82459504,112.5764732,26.82455714,112.5764959,26.82451906,112.5765187,26.8244808,112.5765414,26.82444236,112.5765643,26.82440377,112.5765873,26.82436503,112.5766103,26.8243262,112.5766333,26.8242873,112.5766563,26.82424836,112.5766793,26.82420936,112.5767024,26.82417035,112.5767255,26.82413139,112.5767486,26.82409266,112.5767718,26.82405426,112.5767952,26.82401617,112.5768184,26.82397842,112.5768415,26.82394106,112.5768675,26.82389881,112.57689,26.8238624,112.5769121,26.82382648,112.5769377,26.82378503,112.5769617,26.82374607,112.5769862,26.82370623,112.5770106,26.82366648,112.5770325,26.8236307,112.577056,26.82359184,112.5770776,26.82355585,112.5770985,26.82352077,112.5771191,26.82348565,112.5771395,26.82345051,112.5771598,26.82341535,112.5771798,26.82338019,112.5772019,26.82334115,112.5772242,26.82330145,112.5772462,26.82326217,112.5772682,26.82322307,112.5772905,26.82318416,112.577313,26.82314536,112.5773362,26.82310578,112.5773584,26.8230684,112.5773813,26.82303052,112.5774047,26.82299227,112.5774275,26.82295555,112.5774498,26.82292036,112.5774726,26.82288478,112.577496,26.82284873,112.577518,26.82281481,112.5775436,26.82277584,112.5775668,26.8227404,112.5775889,26.82270667,112.5776116,26.82267202,112.577635,26.82263636,112.5776572,26.82260227,112.5776799,26.82256708,112.5777022,26.82253158,112.5777246,26.82249483,112.5777455,26.82245955,112.5777668,26.8224232,112.5777883,26.82238602,112.5778084,26.82235089,112.5778313,26.82231089,112.5778521,26.82227511,112.5778746,26.82223755,112.5778983,26.82219925,112.5779212,26.82216358,112.5779447,26.82212803,112.5779687,26.82209266,112.5779915,26.82205946,112.5780155,26.82202476,112.5780386,26.82199153,112.578063,26.82195673,112.5780866,26.82192336,112.5781108,26.82188914,112.5781349,26.82185496,112.5781588,26.82182106,112.578183,26.82178691,112.5782056,26.82175498,112.5782284,26.82172268,112.578252,26.82168907,112.5782738,26.82165769,112.578297,26.82162352,112.578319,26.82159035,112.57834,26.82155755,112.5783603,26.82152419,112.578379,26.82149185,112.5783968,26.82146083,112.5784156,26.8214279,112.5784338,26.82139713,112.5784526,26.82136704,112.5784737,26.82133537,112.5784954,26.82130434,112.5785179,26.82127371,112.5785392,26.82124509,112.5785613,26.82121474,112.5785826,26.82118459,112.578603,26.82115312,112.5786192,26.82112113,112.5786297,26.82108804,112.5786344,26.82105208,112.5786328,26.82101569,112.5786258,26.82097918,112.5786153,26.82094473,112.5786011,26.8209112,112.5785817,26.82087705,112.5785582,26.82084558,112.5785324,26.82081834,112.5785038,26.82079259,112.5784737,26.8207676,112.5784418,26.82074259,112.5784091,26.82071846,112.578379,26.82069718,112.5783473,26.82067552,112.5783147,26.82065364,112.5782815,26.82063157,112.5782474,26.82060937,112.5782152,26.82058867,112.5781801,26.8205663,112.5781471,26.8205455,112.5781091,26.82052165,112.5780759,26.82050087,112.578042,26.82047964,112.5780081,26.8204585,112.5779742,26.82043738,112.5779398,26.82041587,112.577907,26.82039532,112.5778726,26.82037382,112.57784,26.82035339,112.5778063,26.82033228,112.5777708,26.82030994,112.5777338,26.82028685";
 
-
     @Override
     public boolean onTouch(@Nullable MotionEvent motionEvent) {
         MogoMapListenerHandler.Companion.getMogoMapListenerHandler().onTouch(motionEvent);
@@ -781,14 +772,17 @@ public class AMapViewWrapper implements IMogoMapView,
 
     @Override
     public void onRoadLoaded(@Nullable String s) {
-        CallerLogger.INSTANCE.i(M_MAP + TAG, "autoop--onMapLoaded: ");
-
     }
 
     @Override
     public void onMapStatusChanged(int type, int value) {
     }
 
+    @Override
+    public void onRoamStatus(int status, @NonNull String msg) {
+        CallerMapRomaListener.INSTANCE.invokeMapRomaStatus(status, msg);
+    }
+
     @Override
     public void onMapViewVisualAngleChange(int i) {
         CallerLogger.INSTANCE.d(M_MAP + TAG, " 地图自动更改视距 currentThread : " + Thread.currentThread().getName());
@@ -830,20 +824,16 @@ public class AMapViewWrapper implements IMogoMapView,
     @Override
     public void onCameraChangeFinish(@Nullable CameraPosition cameraPosition) {
         if (cameraPosition != null) {
-            Trace.beginSection("timer.onCameraChangeFinish");
             MogoMapListenerHandler.Companion.getMogoMapListenerHandler().onMapChanged(ObjectUtils.fromAMap(cameraPosition.getTarget()),
                     cameraPosition.getZoom(),
                     cameraPosition.getTilt(),
                     cameraPosition.getBearing());
-            Trace.endSection();
         }
     }
 
     @Override
     public void onChangeMapStyle(int styleId) {
         CallerLogger.INSTANCE.d(M_MAP + TAG, "currentMapStyle = " + styleId);
-        CallerLogger.INSTANCE.d(M_MAP + TAG, Log.getStackTraceString(new Throwable()));
-
         // 映射地图样式ID到鹰眼样式ID
         if (styleId == MapAutoApi.MAP_STYLE_DAY
                 || styleId == MapAutoApi.MAP_STYLE_DAY_NAV) {
@@ -1054,8 +1044,6 @@ public class AMapViewWrapper implements IMogoMapView,
         PointCloudHelper.INSTANCE.setPointCloudColor(color);
     }
 
-
-
     @Override
     public void cacheHDDataByCity(IHdCacheListener listener) {
         if (mMapView.getMapAutoViewHelper() != null) {
@@ -1169,4 +1157,5 @@ public class AMapViewWrapper implements IMogoMapView,
     public String getCityCode() {
         return GDLocationClient.getInstance(getContext()).getLastCityCode();
     }
+
 }
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt b/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt
index aedfd8a5b6..534a351eac 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt
@@ -10,14 +10,13 @@ import com.amap.api.location.AMapLocationListener
 import com.mogo.commons.AbsMogoApplication
 import com.mogo.commons.constants.SharedPrefsConstants
 import com.mogo.eagle.core.data.deva.chain.ChainConstant
-import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_HTTP_DNS_CITY_CODE
+import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_HTTP_DNS_CITY_CODE
 import com.mogo.eagle.core.data.map.MogoLocation
 import com.mogo.eagle.core.function.call.map.CallerGaoDeMapLocationListenerManager
 import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
 import com.mogo.eagle.core.utilcode.util.CoordinateTransform
 import com.mogo.eagle.core.utilcode.util.TimeUtils
 import com.zhjt.service.chain.ChainLog
-import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD
 
 /**
  * 封装高德地图通过设备GPS获取到的位置信息,频率1s一次,坐标系为CJC20
@@ -148,12 +147,10 @@ class GDLocationClient private constructor(context: Context) : AMapLocationListe
     }
 
     @ChainLog(
-        linkChainLog = ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS,
-        linkCode = ChainConstant.CHAIN_LINK_CLOUD,
-        endpoint = PAD,
-        nodeAliasCode = CHAIN_ALIAS_CODE_HTTP_DNS_CITY_CODE,
+        linkChainLog = ChainConstant.CHAIN_TYPE_INIT_STATUS,
+        linkCode = ChainConstant.CHAIN_SOURCE_CLOUD,
+        nodeAliasCode = CHAIN_CODE_HTTP_DNS_CITY_CODE,
         paramIndexes = [0],
-        clientPkFileName = "sn"
     )
     private fun setCityCode(code: String) {
         mCityCode = code