Merge branch 'dev_robotaxi-d_230612_3.3.0' of gitlab.zhidaoauto.com:SCA/L4HA/AndroidApp/MoGoEagleEye into dev_robotaxi-d_230612_3.3.0

This commit is contained in:
wangmingjun
2023-06-16 15:49:07 +08:00
172 changed files with 2211 additions and 3053 deletions

View File

@@ -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<MogoLocation> mRoutePoints = new ArrayList<>();
private final List<MogoLocation> 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<String, IBusPassengerControllerStatusCallback> mControllerStatusCallbackMap = new ConcurrentHashMap<>();
private final Map<String, IBusPassengerControllerStatusCallback> 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<BusPassengerRoutesResponse>() {
@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<BusPassengerStation> 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<BusPassengerStation> 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<MessagePad.Location> 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<MessagePad.Location> routePoints = routeList.getWayPointsList();
if (null != routePoints && routePoints.size() > 0) {
updateRoutePoints(routePoints);
startToRouteAndWipe();
}
};
public void updateRoutePoints(List<MessagePad.Location> routePoints){
public void updateRoutePoints(List<MessagePad.Location> routePoints) {
mRoutePoints.clear();
List<MogoLocation> 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<Integer,List<MogoLocation>> lastPointsMap = CoordinateCalculateRouteUtil
.getRemainPointListByCompareNew(mPreRouteIndex,mTwoStationsRouts,mLocation);
for (int index: lastPointsMap.keySet()) {
mPreRouteIndex = index;
if (mTwoStationsRouts.size() > 0 && mLocation != null) {
Map<Integer, List<MogoLocation>> lastPointsMap = CoordinateCalculateRouteUtil
.getRemainPointListByCompareNew(mPreRouteIndex, mTwoStationsRouts, mLocation);
for (int index : lastPointsMap.keySet()) {
mPreRouteIndex = index;
break;
}
for (List<MogoLocation> lastPoints: lastPointsMap.values()){
for (List<MogoLocation> 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<LatLng> routePoints = CoordinateCalculateRouteUtil
.coordinateConverterLocationToLatLng(mContext,mRoutePoints);
mAutopilotPlanningCallback.routeResult(routePoints,haveArrivedIndex);
.coordinateConverterLocationToLatLng(mContext, mRoutePoints);
mAutopilotPlanningCallback.routeResult(routePoints, haveArrivedIndex);
}
}
}
/**
* 开始轮询计算剩余里程和时间
*
* @param isStart
*/
public void startOrStopCalculateRouteInfo(boolean isStart) {

View File

@@ -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

View File

@@ -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<BusStationBean> 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<BaseData>() {
@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);
}

View File

@@ -158,7 +158,7 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
});
initListener();
setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
ctvAutopilotStatus.setOnClickListener(new OnPreventFastClickListener() {
@Override
@@ -301,9 +301,6 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
@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<V extends IView, P extends Presenter<V>
public void stopAnimAndUpdateBtnStatus() {
stopAutopilotAnimation();
updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
}
/**
@@ -522,7 +519,7 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
public void run() { //未启动成功做处理
if (isAnimateRunning) {// 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态
stopAutopilotAnimation();
updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
}
}
}, TIMER_START_AUTOPILOT_INTERVAL);

View File

@@ -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<BusFragment, BusPresenter>
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<BusFragment, BusPresenter>
}
//清除鹰眼右下角小地图轨迹
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<BusFragment, BusPresenter>
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;

View File

@@ -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<BusFragment>
implements IRefreshBusStationsCallback, ISlidePannelHideCallback
@@ -55,7 +51,7 @@ public class BusPresenter extends Presenter<BusFragment>
private static final String TAG = "BusPresenter";
private int currentAutopilotStatus = -1;
private List<BusStationBean> mStationList = new ArrayList<>();
private final List<BusStationBean> mStationList = new ArrayList<>();
private int mCurrentStation = 0;
public BusPresenter(BusFragment view) {
@@ -168,9 +164,7 @@ public class BusPresenter extends Presenter<BusFragment>
}
@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<BusFragment>
&& (
(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<BusFragment>
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<BusFragment>
/**
* 测试使用
*
* @param status
*/
public void debugAutoPilotStatus(int status) {
AutopilotStatusInfo info = new AutopilotStatusInfo();
@@ -340,4 +325,13 @@ public class BusPresenter extends Presenter<BusFragment>
public void onStartAdasFailure() {
runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus());
}
@Override
public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) {
}
@Override
public void onAutopilotDockerInfo(@NonNull String dockerVersion) {
}
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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<String, ICharterPassengerAutoStatusChangeCallback>()
var mAutoStatusChnageListener =
ConcurrentHashMap<String, ICharterPassengerAutoStatusChangeCallback>()
// 定位监听
private val mControllerStatusCallbackMap =
@@ -110,17 +110,18 @@ object CharterPassengerModel {
* 到站是否播报 key 线路id+业务 value 是否播报
*
*/
private var broadcastList : MutableMap<String,Boolean> = HashMap()
private var broadcastList: MutableMap<String, Boolean> = 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<OrderInfoResponse> {
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<LineInfoResponse.LineInfo, SiteInfoResponse.SiteInfo>? {
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<CharterPassengerConst.MIN_DISTANCE_STATION){
if (calculateLineDistanceNext < CharterPassengerConst.MIN_DISTANCE_STATION) {
if (index + 2 <= data.size - 1) {
return Pair(index + 2, true)// 下下个站点
}else{
} else {
return Pair(-1, true)// 距离最后一个站点小于30m
}
}else {
} else {
return Pair(index + 1, true)// 下个站点
}
} else {
@@ -807,7 +825,7 @@ object CharterPassengerModel {
}
}
for (mutableEntry in distanceMap) {
CallerLogger.d(M_BUS_P+ TAG,"距离:${mutableEntry.key}-----第几个站点${mutableEntry.value}")
CallerLogger.d(M_BUS_P + TAG, "距离:${mutableEntry.key}-----第几个站点${mutableEntry.value}")
}
var middle = -1
if (distanceMap.size >= 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<data.size) {
if (middle + 1 < data.size) {
val degree = CoordinateCalculateRouteUtil.getDegree(
it.longitude, it.latitude,
data.get(middle + 1).GcjLon!!, data.get(middle + 1).GcjLat!!,
data.get(middle).GcjLon!!, data.get(middle).GcjLat!!,
)
if (degree > 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<data.size) {
if (middle + 2 < data.size) {
val degree = CoordinateCalculateRouteUtil.getDegree(
it.longitude, it.latitude,
data.get(middle + 2).GcjLon!!, data.get(middle + 2).GcjLat!!,
data.get(middle+1).GcjLon!!, data.get(middle+1).GcjLat!!,
data.get(middle + 1).GcjLon!!, data.get(middle + 1).GcjLat!!,
)
if (degree > 90) {
return Pair(middle + 2, false)
@@ -876,21 +894,29 @@ object CharterPassengerModel {
BusPassengerServiceManager.endOrder(mContext, it, callback)
}
}
fun getLineTrajectory(lineId: Long,callback: OchCommonServiceCallback<TrajectoriesResponse>?) {
fun getLineTrajectory(lineId: Long, callback: OchCommonServiceCallback<TrajectoriesResponse>?) {
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<BaseData> {
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<OrderInfoResponse.OrderInfo?,Long?,Long?>{
this.orderInfo?.let { order->
private fun getOrderInfo(): Triple<OrderInfoResponse.OrderInfo?, Long?, Long?> {
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)

View File

@@ -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
}
}
}

View File

@@ -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("设备未就绪请稍等,请安全员主动停止车辆")
}

View File

@@ -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 -> {

View File

@@ -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)
}

View File

@@ -29,7 +29,7 @@ class StopSiteView @JvmOverloads constructor(
}
private fun stopSite(){
when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) {
when (CallerAutoPilotStatusListenerManager.getState()) {
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶
ToastCharterUtils.showShort("设备未就绪请稍等,请稍后再试")
}

View File

@@ -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)
}
}

View File

@@ -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);

View File

@@ -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)

View File

@@ -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()
}

View File

@@ -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<V : IView?, P : Presenter<V>?>() :
}
})
initListener()
setAutopilotBtnStatus(getAutoPilotStatusInfo().state)
setAutopilotBtnStatus(getState())
ctvAutopilotStatus!!.setOnClickListener(object : OnPreventFastClickListener() {
override fun onClickImpl(v: View) {
restartAutopilot()
@@ -394,7 +394,7 @@ abstract class CharterBaseFragment<V : IView?, P : Presenter<V>?>() :
open fun stopAnimAndUpdateBtnStatus() {
stopAutopilotAnimation()
updateAutopilotStatus(getAutoPilotStatusInfo().state)
updateAutopilotStatus(getState())
}
@@ -453,7 +453,7 @@ abstract class CharterBaseFragment<V : IView?, P : Presenter<V>?>() :
//未启动成功做处理
if (isAnimateRunning) { // 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态
stopAutopilotAnimation()
updateAutopilotStatus(getAutoPilotStatusInfo().state)
updateAutopilotStatus(getState())
}
}, CharterConst.TIMER_START_AUTOPILOT_INTERVAL)
}

View File

@@ -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<DistanceDegree>{
override fun compareTo(other: DistanceDegree): Int {
// 对比面积
// 对比距离
if(distance == other.distance){
return 0;
} else if(distance < other.distance){

View File

@@ -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<String, IDistanceListener> = ConcurrentHashMap()
private val trajectoryListeners: ConcurrentHashMap<String, ITrajectoryListener> = 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<MogoLocation>()
val routeArrivied = mutableListOf<MogoLocation>()
val routeArriving = mutableListOf<MogoLocation>()
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!!)

View File

@@ -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);

View File

@@ -103,7 +103,7 @@ public class BusPassengerMapDirectionView
initAMapView();
// 注册定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, this);
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 10,this);
}
@Override

View File

@@ -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
}
}

View File

@@ -161,7 +161,7 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
});
initListener();
setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
ctvAutopilotStatus.setOnClickListener(new OnPreventFastClickListener() {
@Override
@@ -308,9 +308,6 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
@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<V extends IView, P extends Presenter<V>
public void stopAnimAndUpdateBtnStatus() {
stopAutopilotAnimation();
updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
}
/**
@@ -529,7 +526,7 @@ public abstract class BaseBusTabFragment<V extends IView, P extends Presenter<V>
public void run() { //未启动成功做处理
if (isAnimateRunning) {// 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态
stopAutopilotAnimation();
updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
}
}
}, TIMER_START_AUTOPILOT_INTERVAL);

View File

@@ -113,7 +113,7 @@ public class BusFragment extends BaseBusTabFragment<BusFragment, BusPresenter>
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<BusFragment, BusPresenter>
}
//清除鹰眼右下角小地图轨迹
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<BusFragment, BusPresenter>
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;

View File

@@ -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 {

View File

@@ -167,14 +167,14 @@ public class BusPresenter extends Presenter<BusFragment>
@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<BusFragment>
&& (
(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<BusFragment>
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<BusFragment>
/**
* 测试使用
*
* @param status
*/
public void debugAutoPilotStatus(int status) {
AutopilotStatusInfo info = new AutopilotStatusInfo();
@@ -345,4 +336,9 @@ public class BusPresenter extends Presenter<BusFragment>
public void onStartAdasFailure() {
runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus());
}
@Override
public void onAutopilotDockerInfo(@NonNull String dockerVersion) {
}
}

View File

@@ -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);

View File

@@ -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<TaxiPassengerOrderQueryRespBean.Result> mInServiceList = Collections.emptyList(); //进行中订单
private volatile List<TaxiPassengerOrderQueryRespBean.Result> 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) {
}
};

View File

@@ -97,7 +97,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
updateSwitchMapIcon();
initListener();
onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
switchVRFlatMode(MogoStatusManager.getInstance().isVrMode());
//预加载视频进程
@@ -236,12 +236,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
}
private void startAutopilotDone(boolean success) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
}
}, 1000L);
mHandler.postDelayed(() -> onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState()), 1000L);
}
@NonNull

View File

@@ -104,7 +104,7 @@ public class TaxiPassengerMapDirectionView
initAMapView();
// 注册定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, this);
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 10,this);
}
@Override

View File

@@ -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);

View File

@@ -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
* <p>
@@ -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<BaseData>() {
@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<TaxiDataBaseRespBean>(){
new OchCommonServiceCallback<TaxiDataBaseRespBean>() {
@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<TaxiDataBaseRespBean>() {
@@ -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, "setIPCDemoModefalse");
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<LatLng> latLngModels) {
// List<LatLng> 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<Integer,List<MogoLocation>> lastPointsMap = CoordinateCalculateRouteUtil
.getRemainPointListByCompareNew(mPreRouteIndex,mRoutePoints, mLocation);
if (mRoutePoints.size() > 0 && mLocation != null) {
Map<Integer, List<MogoLocation>> lastPointsMap = CoordinateCalculateRouteUtil
.getRemainPointListByCompareNew(mPreRouteIndex, mRoutePoints, mLocation);
for (int index: lastPointsMap.keySet()) {
for (int index : lastPointsMap.keySet()) {
mPreRouteIndex = index;
break;
}
for (List<MogoLocation> lastPoints: lastPointsMap.values()){
for (List<MogoLocation> 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<LatLng> 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);
}
}

View File

@@ -329,7 +329,6 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
if (null != location){
runOnUIThread(() -> {
mView.updateSpeedView((float) location.getGnssSpeed());
mView.updateLocation(location.getLatitude(),location.getLongitude());
});
}
}

View File

@@ -228,7 +228,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
@Override
public void onClickImpl(View v) {
// 如果能自动驾驶,就自动驾驶,不能就提示
if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() ==
if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() ==
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) {
return; //远程代驾状态下不可开启自动驾驶,只能等远程代驾主动退出
} else if (!(boolean) ctvAutopilotStatusRL.getTag()) {
@@ -251,7 +251,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
});
// }
onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
// 模拟 不可自动驾驶目前场景是刚开机adas还未和工控机连接
findViewById(R.id.btnAutopilotDisable).setOnClickListener(view ->
@@ -363,9 +363,6 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
@Override
public void onAutopilotRecordResult(@Nullable RecordPanelOuterClass.RecordPanel recordPanel) {
// if (!HmiBuildConfig.isShowBadCaseView && recordPanel != null && recordPanel.getType() == 1 && recordPanel.getStat() == 100) {
// CallerDevaToolsManager.INSTANCE.onReceiveBadCaseRecord(recordPanel);
// }
}
@Override
@@ -496,7 +493,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
@Override
public void run() {
startOrStopLoadingAnim(false);
onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState());
onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
}
}, 1000L);
}
@@ -538,7 +535,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
public void run() { //未启动成功10s后做处理
if (isStarting) { //判断动画是否在进行
//并且根据状态来设置自动驾驶启动成功还是失败
if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()
if (CallerAutoPilotStatusListenerManager.INSTANCE.getState()
== IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {
startAutopilotDone(true);
} else {

View File

@@ -20,6 +20,7 @@ import com.amap.api.navi.model.NaviLatLng;
import com.mogo.eagle.core.data.map.CenterLine;
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.autopilot.CallerChassisLocationGCJ02ListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
@@ -344,8 +345,12 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment
private void startNaviToStation(boolean isVoicePlay, double stationLat, double stationLng) {
AmapNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi();
CallerLogger.INSTANCE.d(M_TAXI + TAG, "currentLatLng=" + mTaxiFragment.mCurLatitude + " " + mTaxiFragment.mCurLongitude);
NaviLatLng startNaviLatLng = new NaviLatLng(mTaxiFragment.mCurLatitude, mTaxiFragment.mCurLongitude);
double mCurLatitude = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLatitude();
double mCurLongitude =CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLongitude();
CallerLogger.INSTANCE.d(M_TAXI + TAG, "currentLatLng=" + mCurLatitude + " " +mCurLongitude);
NaviLatLng startNaviLatLng = new NaviLatLng(mCurLatitude, mCurLongitude); //todo mingjun 优化
NaviLatLng endNaviLatLng = new NaviLatLng(stationLat, stationLng);
AmapNaviToDestinationModel.getInstance(getContext()).initAMapNavi(startNaviLatLng, endNaviLatLng);
AmapNaviToDestinationModel.getInstance(getContext()).setVoiceIsMute(isVoicePlay);
@@ -454,7 +459,7 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment
//VoiceNotice.showNotice(getResources().getString(R.string.module_och_taxi_order_server_completed_tip));
}else if (TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == mCurrentOrder.orderStatus){//前往目的地过程中可提前结束行程
//自驾中提示,接管后才能结束
if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()
if (CallerAutoPilotStatusListenerManager.INSTANCE.getState()
== IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){
ToastUtils.showLong(R.string.taxi_switch_line_btn_warning1);
}else {

View File

@@ -58,11 +58,9 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
return fragment;
}
private TaxiGrabOrderFragment grabOrderFragment;
private TaxiServerOrdersFragment serverOrdersFragment;
private WeakReference<TaxiGrabOrderFragment> grabOrderFragmentWR;
private WeakReference<TaxiServerOrdersFragment> serverOrdersFragmentWR;
private WeakReference<TaxiPersonalDialogFragment> 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<TaxiFragment, TaxiPresente
}
private void initFragment() {
serverOrdersFragment = TaxiServerOrdersFragment.newInstance();
grabOrderFragment = TaxiGrabOrderFragment.newInstance();
serverOrdersFragmentWR = new WeakReference<>(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<TaxiFragment, TaxiPresente
@RequiresApi(api = Build.VERSION_CODES.P)
public void updateCurrentOrderStatusChanged(OrderQueryRespBean.Result order) {
if (serverOrdersFragment != null) {
serverOrdersFragment.updateCurrentOrderStatusChanged(order);
if (serverOrdersFragmentWR != null && serverOrdersFragmentWR.get() != null) {
serverOrdersFragmentWR.get().updateCurrentOrderStatusChanged(order);
}
updateTaxiTestBarInfo(); //更新调试bar中信息
}
@@ -242,25 +242,25 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
public void onCurrentOrderCancelDone(){
startOrStopLoadingAnim(false);
if (null == serverOrdersFragment) return;
serverOrdersFragment.onCurrentOrderCancelDone();
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onCurrentOrderCancelDone();
}
public void onOrderCancelDone(String orderNo) {
if (null == serverOrdersFragment) return;
serverOrdersFragment.onOrderCancelDone(orderNo);
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onOrderCancelDone(orderNo);
}
@Override
protected void updateOrderBottomBtnUI() {
if (null == serverOrdersFragment) return;
serverOrdersFragment.updateOrderBottomBtnUI();
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().updateOrderBottomBtnUI();
}
public void onNewBookingOrderGot(OrderQueryRespBean.Result order) {
if (null == order) return;
showGrabFragmentAndUpdate();
grabOrderFragment.updateGrabOrder(order);
grabOrderFragmentWR.get().updateGrabOrder(order);
}
public void grabOrder() {
@@ -273,18 +273,18 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
}
public void onGrabOrderExecuteDone() {
if (null == grabOrderFragment) return;
grabOrderFragment.onGrabOrderExecuteDone();
if (null == grabOrderFragmentWR || grabOrderFragmentWR.get() == null) return;
grabOrderFragmentWR.get().onGrabOrderExecuteDone();
}
public void onGrabOrderSuccess(OrderQueryRespBean.Result order) {
if (null == grabOrderFragment) return;
if (null == grabOrderFragmentWR || grabOrderFragmentWR.get() == null) return;
if (null == order) {
showServerFragmentAndUpdate();
return;
}
showGrabFragmentAndUpdate();
grabOrderFragment.onGrabOrderSuccess();
grabOrderFragmentWR.get().onGrabOrderSuccess();
}
public void onGrabOrderFailed(OrderQueryRespBean.Result order) {
@@ -292,15 +292,15 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
showServerFragmentAndUpdate();
return;
}
if (null == grabOrderFragment) return;
if (null == grabOrderFragmentWR || grabOrderFragmentWR.get() == null) return;
showGrabFragmentAndUpdate();
grabOrderFragment.onGrabOrderFailed();
grabOrderFragmentWR.get().onGrabOrderFailed();
}
public void onNaviToEnd(boolean isAmap , boolean isShow){
if (isAmap){
if (null == serverOrdersFragment) return;
serverOrdersFragment.onNaviToEndAmap(isShow);
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onNaviToEndAmap(isShow);
}else if (isShow){ //使用rotting数据
showRottingToStationFragment(true);
}else {
@@ -324,8 +324,8 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
public void onOrdersWaitServiceChanged(List<OrderQueryRespBean.Result> 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<TaxiFragment, TaxiPresente
}
public void onCurrentOrderRouteInfoGot(OrderQueryRouteInfoRespBean.Result routeInfo) {
if (null == serverOrdersFragment) return;
serverOrdersFragment.onCurrentOrderRouteInfoGot(routeInfo);
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onCurrentOrderRouteInfoGot(routeInfo);
}
public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) {
if (null == serverOrdersFragment) return;
serverOrdersFragment.onCurrentOrderDistToEndChanged(meters, timeInSecond);
}
public void updateLocation(double latitude, double longitude) {
this.mCurLatitude = latitude;
this.mCurLongitude = longitude;
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onCurrentOrderDistToEndChanged(meters, timeInSecond);
}
/**

View File

@@ -98,7 +98,7 @@ public class TaxiMapDirectionView
initAMapView();
// 注册定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, this);
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 10,this);
}
@Override

View File

@@ -56,14 +56,14 @@ public class TaxiAnalyticsManager {
if (mStartAutopilotParams.isEmpty()) return;
CallerLogger.INSTANCE.e(M_TAXI + "triggerStartAutopilotFailureEvent", failMsg);
if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() !=
if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() !=
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_CODE, failCode);
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_MSG,
failMsg);
}
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_RESULT,
CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() ==
CallerAutoPilotStatusListenerManager.INSTANCE.getState() ==
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING);
MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams);

View File

@@ -117,16 +117,17 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
@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<SweeperFragment>
}
/**
* 测试使用
*
* @param status
*/
public void debugAutoPilotStatus(int status) {
AutopilotStatusInfo info = new AutopilotStatusInfo();
@@ -237,12 +236,10 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
@Override
public void onAutopilotSNRequest() {
}
@Override
public void onStartAdasFailure() {
}
public void onArriveTaskEnd(@Nullable MessagePad.ArrivalNotification arrivalNotification) {
@@ -251,9 +248,6 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
@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<SweeperFragment>
// 纯扫 模式判断不是另外其他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<SweeperFragment>
@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<SweeperFragment>
public void setRouteList(@NonNull ArrayList<SweeperRoutePlanningUpdateReqBean.Result> routeList) {
mView.setTaskRouteList(routeList);
}
@Override
public void onAutopilotDockerInfo(@NonNull String dockerVersion) {
}
}

View File

@@ -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);

View File

@@ -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": {

View File

@@ -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();
}

View File

@@ -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)

View File

@@ -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}"

View File

@@ -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}",

View File

@@ -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<DispatchAdasAutoPilotLocReceiverBean>,
@@ -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 轨迹管理_轨迹下载超时")
}
}

View File

@@ -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)

View File

@@ -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))
}

View File

@@ -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()) {

View File

@@ -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
}
}

View File

@@ -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<PlanningObject>?) {
super.onAutopilotIdentifyPlanningObj(planningObjects)

View File

@@ -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

View File

@@ -200,13 +200,6 @@ internal object V2NIdentifyDrawer {
override fun onAutopilotIdentifyDataUpdate(trafficData: List<TrackedObject>?) {
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)

View File

@@ -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 {

View File

@@ -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
)
}
/**

View File

@@ -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()
}
}

View File

@@ -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)

View File

@@ -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)
}
/**

View File

@@ -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) {

View File

@@ -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

View File

@@ -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)

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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)
}
}
}

View File

@@ -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)

View File

@@ -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<FuncConfig>, 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)

View File

@@ -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) {

View File

@@ -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)
}
}

View File

@@ -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<TracingStatus>(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<TracingStatus>(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) {

View File

@@ -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, {

View File

@@ -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<Int, ChainLogParam>) {
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}")

View File

@@ -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<IPCUpgradeStateInfo> ,
//更新下载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=""

View File

@@ -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()
}
}

View File

@@ -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()
}
}

View File

@@ -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()

View File

@@ -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<String, String>) {}
}

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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) {
}
/**
* 吐司提示
*/

View File

@@ -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("变道绕障的目标障碍物速度阈值设置","失败")
}
}

View File

@@ -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()

View File

@@ -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;
}
}

View File

@@ -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) {
}
}
}

View File

@@ -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
}
}

View File

@@ -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) {

View File

@@ -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
}
}

View File

@@ -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() {

View File

@@ -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
}
}
}

View File

@@ -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)
}
}

View File

@@ -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) {

View File

@@ -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<String>?=null
private var dockerList: List<String>? = 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<String>) {
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

Some files were not shown because too many files have changed in this diff Show More